summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
Diffstat (limited to 'qa')
-rwxr-xr-xqa/00059
-rw-r--r--qa/000.out3
-rwxr-xr-xqa/00117
-rw-r--r--qa/001.out16
-rwxr-xr-xqa/00217
-rw-r--r--qa/002.out6
-rwxr-xr-xqa/003249
-rw-r--r--qa/003.out2
-rwxr-xr-xqa/00418
-rw-r--r--qa/004.out7
-rwxr-xr-xqa/00521
-rw-r--r--qa/005.out13
-rwxr-xr-xqa/00642
-rw-r--r--qa/006.out.1101
-rw-r--r--qa/006.out.2101
-rwxr-xr-xqa/00726
-rw-r--r--qa/007.out16
-rwxr-xr-xqa/00856
-rw-r--r--qa/008.out.Colleens-iMac47
-rw-r--r--qa/008.out.bozo54
-rw-r--r--qa/008.out.bozo+sdc59
-rw-r--r--qa/008.out.bozo-laptop47
-rw-r--r--qa/008.out.canary59
-rw-r--r--qa/008.out.comma47
-rw-r--r--qa/008.out.edge64
-rw-r--r--qa/008.out.groan54
-rw-r--r--qa/008.out.grunt69
-rw-r--r--qa/008.out.hades184
-rw-r--r--qa/008.out.kenj-pc54
-rw-r--r--qa/008.out.kmcdonell-laptop47
-rw-r--r--qa/008.out.liz249
-rw-r--r--qa/008.out.moomba79
-rw-r--r--qa/008.out.ppp-kenmcd54
-rw-r--r--qa/008.out.slick47
-rw-r--r--qa/008.out.smash54
-rw-r--r--qa/008.out.sweet0
-rw-r--r--qa/008.out.verge47
-rw-r--r--qa/008.out.whirr54
-rwxr-xr-xqa/00938
-rw-r--r--qa/009.out319
-rwxr-xr-xqa/01020
-rw-r--r--qa/010.out103
-rwxr-xr-xqa/01126
-rw-r--r--qa/011.out2
-rwxr-xr-xqa/01279
-rw-r--r--qa/012.darwin90
-rw-r--r--qa/012.irix90
-rw-r--r--qa/012.linux88
-rw-r--r--qa/012.linux.290
-rw-r--r--qa/012.solaris90
-rwxr-xr-xqa/01361
-rw-r--r--qa/013.out27
-rwxr-xr-xqa/01419
-rw-r--r--qa/014.out53
-rwxr-xr-xqa/01553
-rw-r--r--qa/015.out187
-rwxr-xr-xqa/01639
-rw-r--r--qa/016.out9
-rwxr-xr-xqa/01719
-rw-r--r--qa/017.out1
-rwxr-xr-xqa/01822
-rw-r--r--qa/018.out4
-rwxr-xr-xqa/019164
-rw-r--r--qa/019.darwin689
-rw-r--r--qa/019.irix379
-rw-r--r--qa/019.linux.1701
-rw-r--r--qa/019.linux.2693
-rw-r--r--qa/019.linux.3689
-rw-r--r--qa/019.linux.4689
-rw-r--r--qa/019.solaris689
-rwxr-xr-xqa/02031
-rw-r--r--qa/020.out15
-rwxr-xr-xqa/02156
-rw-r--r--qa/021.out56
-rwxr-xr-xqa/022145
-rw-r--r--qa/022.out.linux198
-rwxr-xr-xqa/023280
-rw-r--r--qa/023.out.1148
-rw-r--r--qa/023.out.2153
-rwxr-xr-xqa/024137
-rw-r--r--qa/024.out.1107
-rw-r--r--qa/024.out.2107
-rw-r--r--qa/024.out.3112
-rw-r--r--qa/024.out.4127
-rwxr-xr-xqa/02526
-rw-r--r--qa/025.out166
-rwxr-xr-xqa/02618
-rw-r--r--qa/026.out73
-rwxr-xr-xqa/02720
-rw-r--r--qa/027.out41
-rwxr-xr-xqa/02865
-rw-r--r--qa/028.out.121
-rw-r--r--qa/028.out.27
-rwxr-xr-xqa/02949
-rw-r--r--qa/029.out289
-rwxr-xr-xqa/03023
-rw-r--r--qa/030.out4
-rwxr-xr-xqa/03133
-rw-r--r--qa/031.out.darwin105
-rw-r--r--qa/031.out.freebsd101
-rw-r--r--qa/031.out.irix114
-rw-r--r--qa/031.out.linux109
-rw-r--r--qa/031.out.solaris102
-rwxr-xr-xqa/03282
-rw-r--r--qa/032.out76
-rwxr-xr-xqa/033101
-rw-r--r--qa/033.out.017
-rw-r--r--qa/033.out.121
-rw-r--r--qa/033.out.219
-rw-r--r--qa/033.out.323
-rw-r--r--qa/033.out.423
-rwxr-xr-xqa/03472
-rw-r--r--qa/034.out16
-rwxr-xr-xqa/03747
-rw-r--r--qa/037.out409
-rwxr-xr-xqa/038190
-rw-r--r--qa/038.out7
-rwxr-xr-xqa/03961
-rw-r--r--qa/039.out94
-rwxr-xr-xqa/04094
-rw-r--r--qa/040.out12
-rwxr-xr-xqa/041158
-rw-r--r--qa/041.out36
-rwxr-xr-xqa/04344
-rw-r--r--qa/043.out77
-rwxr-xr-xqa/044105
-rw-r--r--qa/044.darwin22
-rw-r--r--qa/044.irix87
-rw-r--r--qa/044.linux26
-rw-r--r--qa/044.linux.122
-rwxr-xr-xqa/04529
-rw-r--r--qa/045.out5
-rwxr-xr-xqa/04661
-rw-r--r--qa/046.out116
-rwxr-xr-xqa/04844
-rw-r--r--qa/048.out394
-rwxr-xr-xqa/04976
-rw-r--r--qa/049.out.12216
-rw-r--r--qa/049.out.22220
-rwxr-xr-xqa/05032
-rw-r--r--qa/050.out.1127
-rw-r--r--qa/050.out.2127
-rwxr-xr-xqa/051196
-rw-r--r--qa/051.hosts14
-rw-r--r--qa/051.out.ipv61006
-rw-r--r--qa/051.out.nonipv61005
-rwxr-xr-xqa/05247
-rw-r--r--qa/052.out.122
-rw-r--r--qa/052.out.26
-rwxr-xr-xqa/05376
-rw-r--r--qa/053.out22
-rwxr-xr-xqa/05442
-rw-r--r--qa/054.out14
-rwxr-xr-xqa/055129
-rw-r--r--qa/055.out675
-rwxr-xr-xqa/05772
-rw-r--r--qa/057.out.140
-rw-r--r--qa/057.out.215
-rwxr-xr-xqa/05828
-rw-r--r--qa/058.out53
-rwxr-xr-xqa/05949
-rw-r--r--qa/059.out5
-rwxr-xr-xqa/06058
-rw-r--r--qa/060.out71
-rwxr-xr-xqa/061122
-rw-r--r--qa/061.out1153
-rwxr-xr-xqa/06242
-rw-r--r--qa/062.out.ipv61197
-rw-r--r--qa/062.out.nonipv61197
-rwxr-xr-xqa/06336
-rw-r--r--qa/063.out2
-rwxr-xr-xqa/06527
-rw-r--r--qa/065.out10
-rwxr-xr-xqa/066223
-rw-r--r--qa/066.out.ipv688
-rw-r--r--qa/066.out.nonipv685
-rwxr-xr-xqa/067194
-rw-r--r--qa/067.out.ipv637
-rw-r--r--qa/067.out.nonipv636
-rwxr-xr-xqa/06860
-rw-r--r--qa/068.out5
-rwxr-xr-xqa/069355
-rw-r--r--qa/069.out.ipv675
-rw-r--r--qa/069.out.nonipv673
-rwxr-xr-xqa/07078
-rw-r--r--qa/070.out.1351
-rw-r--r--qa/070.out.2334
-rwxr-xr-xqa/07142
-rw-r--r--qa/071.out10
-rwxr-xr-xqa/07285
-rw-r--r--qa/072.out31
-rwxr-xr-xqa/07428
-rw-r--r--qa/074.out.noproc12
-rw-r--r--qa/074.out.other13
-rwxr-xr-xqa/075104
-rw-r--r--qa/075.out219
-rwxr-xr-xqa/07618
-rw-r--r--qa/076.out2
-rwxr-xr-xqa/07752
-rw-r--r--qa/077.out70
-rwxr-xr-xqa/07852
-rw-r--r--qa/078.out.139
-rw-r--r--qa/078.out.239
-rwxr-xr-xqa/07959
-rw-r--r--qa/079.out85
-rwxr-xr-xqa/080112
-rw-r--r--qa/080.out289
-rwxr-xr-xqa/08150
-rw-r--r--qa/081.out53
-rwxr-xr-xqa/08292
-rw-r--r--qa/082.out.143
-rw-r--r--qa/082.out.243
-rw-r--r--qa/082.out.325
-rwxr-xr-xqa/083442
-rw-r--r--qa/083.out253
-rwxr-xr-xqa/08419
-rw-r--r--qa/084.out17
-rwxr-xr-xqa/08544
-rw-r--r--qa/085.out13
-rwxr-xr-xqa/08634
-rw-r--r--qa/086.out1
-rwxr-xr-xqa/08772
-rw-r--r--qa/087.out1474
-rwxr-xr-xqa/08854
-rw-r--r--qa/088.out78
-rwxr-xr-xqa/08932
-rw-r--r--qa/089.out486
-rwxr-xr-xqa/09058
-rw-r--r--qa/090.out413
-rwxr-xr-xqa/09187
-rw-r--r--qa/091.out532
-rwxr-xr-xqa/09265
-rw-r--r--qa/092.out.199
-rw-r--r--qa/092.out.299
-rwxr-xr-xqa/09353
-rw-r--r--qa/093.out96
-rwxr-xr-xqa/09443
-rw-r--r--qa/094.out2
-rwxr-xr-xqa/095174
-rw-r--r--qa/095.out475
-rwxr-xr-xqa/096130
-rw-r--r--qa/096.out7
-rwxr-xr-xqa/09761
-rw-r--r--qa/097.out76
-rwxr-xr-xqa/098144
-rw-r--r--qa/098.out864
-rwxr-xr-xqa/09935
-rw-r--r--qa/099.out32
-rwxr-xr-xqa/100144
-rw-r--r--qa/100.out953
-rwxr-xr-xqa/100071
-rw-r--r--qa/1000.out25
-rwxr-xr-xqa/100127
-rw-r--r--qa/1001.out12
-rwxr-xr-xqa/100266
-rw-r--r--qa/1002.out31
-rwxr-xr-xqa/100348
-rw-r--r--qa/1003.out20
-rwxr-xr-xqa/100497
-rw-r--r--qa/1004.out55
-rwxr-xr-xqa/100525
-rw-r--r--qa/1005.out2
-rwxr-xr-xqa/100636
-rw-r--r--qa/1006.out186
-rwxr-xr-xqa/100755
-rw-r--r--qa/1007.out10
-rwxr-xr-xqa/100863
-rw-r--r--qa/1008.out35
-rwxr-xr-xqa/100948
-rw-r--r--qa/1009.out4
-rwxr-xr-xqa/101145
-rw-r--r--qa/101.out1307
-rwxr-xr-xqa/101061
-rw-r--r--qa/1010.out160
-rwxr-xr-xqa/101194
-rw-r--r--qa/1011.out9
-rwxr-xr-xqa/101228
-rw-r--r--qa/1012.out6
-rwxr-xr-xqa/101331
-rw-r--r--qa/1013.out67
-rwxr-xr-xqa/101412
-rw-r--r--qa/1014.out12
-rwxr-xr-xqa/101512
-rw-r--r--qa/1015.out38
-rwxr-xr-xqa/101629
-rw-r--r--qa/1016.out39
-rwxr-xr-xqa/101793
-rw-r--r--qa/1017.out329
-rwxr-xr-xqa/101845
-rw-r--r--qa/1018.out76
-rwxr-xr-xqa/101989
-rw-r--r--qa/1019.out489
-rwxr-xr-xqa/102138
-rw-r--r--qa/102.out369
-rwxr-xr-xqa/102073
-rw-r--r--qa/1020.out310
-rwxr-xr-xqa/102115
-rw-r--r--qa/1021.out27
-rwxr-xr-xqa/102231
-rw-r--r--qa/1022.out2
-rwxr-xr-xqa/102348
-rw-r--r--qa/1023.out4
-rwxr-xr-xqa/102542
-rw-r--r--qa/1025.out3
-rwxr-xr-xqa/102640
-rw-r--r--qa/1026.out9
-rwxr-xr-xqa/102728
-rw-r--r--qa/1027.out9
-rwxr-xr-xqa/102821
-rw-r--r--qa/1028.out2
-rwxr-xr-xqa/102947
-rw-r--r--qa/1029.out155
-rwxr-xr-xqa/103146
-rw-r--r--qa/103.out1323
-rwxr-xr-xqa/104145
-rw-r--r--qa/104.out1628
-rwxr-xr-xqa/1044141
-rw-r--r--qa/1044.out52
-rwxr-xr-xqa/1045131
-rw-r--r--qa/1045.out182
-rwxr-xr-xqa/104673
-rw-r--r--qa/1046.out55
-rwxr-xr-xqa/104794
-rw-r--r--qa/1047.out38
-rwxr-xr-xqa/104969
-rw-r--r--qa/1049.out12
-rwxr-xr-xqa/105143
-rw-r--r--qa/105.out1784
-rwxr-xr-xqa/105049
-rw-r--r--qa/1050.out5
-rwxr-xr-xqa/105191
-rw-r--r--qa/1051.out.darwin17
-rw-r--r--qa/1051.out.irix55
-rw-r--r--qa/1051.out.linux29
-rw-r--r--qa/1051.out.solaris21
-rwxr-xr-xqa/106143
-rw-r--r--qa/106.out1652
-rwxr-xr-xqa/10768
-rw-r--r--qa/107.out4
-rwxr-xr-xqa/108109
-rw-r--r--qa/108.out60
-rwxr-xr-xqa/10961
-rw-r--r--qa/109.out14
-rwxr-xr-xqa/110227
-rw-r--r--qa/110.out159
-rwxr-xr-xqa/1108100
-rw-r--r--qa/1108.out12
-rwxr-xr-xqa/11141
-rw-r--r--qa/111.out11
-rwxr-xr-xqa/11278
-rw-r--r--qa/112.out.115
-rw-r--r--qa/112.out.25
-rwxr-xr-xqa/113318
-rw-r--r--qa/113.out1
-rwxr-xr-xqa/11451
-rw-r--r--qa/114.out2
-rwxr-xr-xqa/115152
-rw-r--r--qa/115.out37
-rwxr-xr-xqa/11689
-rw-r--r--qa/116.out25
-rwxr-xr-xqa/117187
-rw-r--r--qa/117.out1
-rwxr-xr-xqa/11871
-rw-r--r--qa/118.out3
-rwxr-xr-xqa/119180
-rw-r--r--qa/119.new.out29
-rw-r--r--qa/119.old.out19
-rwxr-xr-xqa/120179
-rw-r--r--qa/120.out1
-rwxr-xr-xqa/12172
-rw-r--r--qa/121.out2
-rwxr-xr-xqa/12267
-rw-r--r--qa/122.out7
-rwxr-xr-xqa/12324
-rw-r--r--qa/123.out13
-rwxr-xr-xqa/12441
-rw-r--r--qa/124.out9
-rwxr-xr-xqa/12525
-rw-r--r--qa/125.out15
-rwxr-xr-xqa/12645
-rw-r--r--qa/126.out.16
-rw-r--r--qa/126.out.25
-rwxr-xr-xqa/12733
-rw-r--r--qa/127.out66
-rwxr-xr-xqa/128110
-rw-r--r--qa/128.out8
-rwxr-xr-xqa/129124
-rw-r--r--qa/129.out5
-rwxr-xr-xqa/130136
-rw-r--r--qa/130.out.09
-rw-r--r--qa/130.out.117
-rwxr-xr-xqa/13136
-rw-r--r--qa/131.out3
-rwxr-xr-xqa/13237
-rw-r--r--qa/132.out22
-rwxr-xr-xqa/13378
-rw-r--r--qa/133.out33
-rwxr-xr-xqa/134197
-rw-r--r--qa/134.out122
-rwxr-xr-xqa/135109
-rw-r--r--qa/135.out29
-rwxr-xr-xqa/13678
-rw-r--r--qa/136.out19
-rwxr-xr-xqa/13742
-rw-r--r--qa/137.out29
-rwxr-xr-xqa/13852
-rw-r--r--qa/138.out11
-rw-r--r--qa/138.out.126
-rw-r--r--qa/138.out.211
-rwxr-xr-xqa/13942
-rw-r--r--qa/139.out164
-rwxr-xr-xqa/14054
-rw-r--r--qa/140.out3
-rwxr-xr-xqa/14136
-rw-r--r--qa/141.out10
-rwxr-xr-xqa/14246
-rw-r--r--qa/142.out5
-rwxr-xr-xqa/14367
-rw-r--r--qa/143.out111
-rw-r--r--qa/143.out.1126
-rw-r--r--qa/143.out.2111
-rwxr-xr-xqa/14471
-rw-r--r--qa/144.out32
-rwxr-xr-xqa/14578
-rw-r--r--qa/145.out.nonsec78
-rw-r--r--qa/145.out.sec78
-rwxr-xr-xqa/14644
-rw-r--r--qa/146.out14
-rw-r--r--qa/146.out.119
-rw-r--r--qa/146.out.214
-rwxr-xr-xqa/14763
-rw-r--r--qa/147.out86
-rwxr-xr-xqa/14893
-rw-r--r--qa/148.out2
-rwxr-xr-xqa/14963
-rw-r--r--qa/149.out.irix2
-rw-r--r--qa/149.out.linux3
-rwxr-xr-xqa/15040
-rw-r--r--qa/150.out27
-rwxr-xr-xqa/151175
-rw-r--r--qa/151.out195
-rwxr-xr-xqa/15243
-rw-r--r--qa/152.out7
-rwxr-xr-xqa/15388
-rw-r--r--qa/153.out78
-rwxr-xr-xqa/154139
-rw-r--r--qa/154.out.1406
-rw-r--r--qa/154.out.2436
-rwxr-xr-xqa/15554
-rw-r--r--qa/155.out46
-rwxr-xr-xqa/156148
-rw-r--r--qa/156.out335
-rwxr-xr-xqa/15747
-rw-r--r--qa/157.out7
-rwxr-xr-xqa/15862
-rw-r--r--qa/158.out.130
-rw-r--r--qa/158.out.225
-rwxr-xr-xqa/159174
-rw-r--r--qa/159.out.1167
-rw-r--r--qa/159.out.2167
-rw-r--r--qa/159.out.3175
-rwxr-xr-xqa/16057
-rw-r--r--qa/160.out14
-rwxr-xr-xqa/16172
-rw-r--r--qa/161.out20
-rwxr-xr-xqa/162120
-rw-r--r--qa/162.out387
-rwxr-xr-xqa/16387
-rw-r--r--qa/163.out.14
-rw-r--r--qa/163.out.24
-rwxr-xr-xqa/16459
-rw-r--r--qa/164.out190
-rwxr-xr-xqa/16540
-rw-r--r--qa/165.out202
-rwxr-xr-xqa/16670
-rw-r--r--qa/166.out497
-rwxr-xr-xqa/16741
-rw-r--r--qa/167.out329
-rwxr-xr-xqa/16888
-rw-r--r--qa/168.out33
-rwxr-xr-xqa/169294
-rw-r--r--qa/169.out40
-rwxr-xr-xqa/17078
-rw-r--r--qa/170.out11
-rwxr-xr-xqa/17150
-rw-r--r--qa/171.out25
-rwxr-xr-xqa/172115
-rw-r--r--qa/172.out.ipv622
-rw-r--r--qa/172.out.nonipv620
-rwxr-xr-xqa/17351
-rw-r--r--qa/173.out95
-rwxr-xr-xqa/174100
-rw-r--r--qa/174.out263
-rwxr-xr-xqa/17542
-rw-r--r--qa/175.out61
-rwxr-xr-xqa/17654
-rw-r--r--qa/176.out.126
-rw-r--r--qa/176.out.226
-rwxr-xr-xqa/177134
-rw-r--r--qa/177.out47
-rwxr-xr-xqa/178199
-rw-r--r--qa/178.out64
-rwxr-xr-xqa/17978
-rw-r--r--qa/179.out221
-rwxr-xr-xqa/18088
-rw-r--r--qa/180.out.1140
-rwxr-xr-xqa/180.out.2140
-rw-r--r--qa/180.out.3140
-rwxr-xr-xqa/18142
-rw-r--r--qa/181.out.115
-rw-r--r--qa/181.out.215
-rwxr-xr-xqa/18288
-rw-r--r--qa/182.out14
-rwxr-xr-xqa/183235
-rw-r--r--qa/183.out97
-rwxr-xr-xqa/184108
-rw-r--r--qa/184.out126
-rwxr-xr-xqa/185141
-rw-r--r--qa/185.out43
-rwxr-xr-xqa/18638
-rw-r--r--qa/186.out6
-rwxr-xr-xqa/187135
-rw-r--r--qa/187.out10
-rwxr-xr-xqa/188117
-rw-r--r--qa/188.darwin69
-rw-r--r--qa/188.irix69
-rw-r--r--qa/188.linux69
-rw-r--r--qa/188.linux.fc669
-rw-r--r--qa/188.solaris69
-rwxr-xr-xqa/18999
-rw-r--r--qa/189.out2
-rwxr-xr-xqa/19063
-rw-r--r--qa/190.out96
-rwxr-xr-xqa/19159
-rw-r--r--qa/191.out43
-rwxr-xr-xqa/19260
-rw-r--r--qa/192.out9
-rwxr-xr-xqa/19338
-rw-r--r--qa/193.out328
-rwxr-xr-xqa/19434
-rw-r--r--qa/194.out1
-rwxr-xr-xqa/19523
-rw-r--r--qa/195.out147
-rwxr-xr-xqa/196100
-rw-r--r--qa/196.out14
-rwxr-xr-xqa/19733
-rw-r--r--qa/197.out5
-rwxr-xr-xqa/19860
-rw-r--r--qa/198.out11
-rwxr-xr-xqa/199215
-rw-r--r--qa/199.out132
-rwxr-xr-xqa/200131
-rw-r--r--qa/200.out.138
-rw-r--r--qa/200.out.238
-rw-r--r--qa/20071023-08-06-36.folio8
-rw-r--r--qa/20071023-08-06-36.view19
-rwxr-xr-xqa/201179
-rw-r--r--qa/201.out1591
-rwxr-xr-xqa/20280
-rw-r--r--qa/202.out16
-rwxr-xr-xqa/203105
-rw-r--r--qa/203.out28
-rwxr-xr-xqa/20436
-rw-r--r--qa/204.out7
-rwxr-xr-xqa/20518
-rw-r--r--qa/205.out17
-rwxr-xr-xqa/20659
-rw-r--r--qa/206.out405
-rwxr-xr-xqa/207142
-rw-r--r--qa/207.out84
-rwxr-xr-xqa/20882
-rw-r--r--qa/208.out253
-rwxr-xr-xqa/20936
-rw-r--r--qa/209.out.116
-rw-r--r--qa/209.out.216
-rwxr-xr-xqa/21094
-rw-r--r--qa/210.out103
-rwxr-xr-xqa/21193
-rw-r--r--qa/211.out103
-rwxr-xr-xqa/212177
-rw-r--r--qa/212.out55
-rwxr-xr-xqa/213128
-rw-r--r--qa/213.out167
-rwxr-xr-xqa/21475
-rw-r--r--qa/214.out207
-rwxr-xr-xqa/215159
-rw-r--r--qa/215.out.irix94
-rw-r--r--qa/215.out.linux70
-rwxr-xr-xqa/216243
-rw-r--r--qa/216.out1
-rwxr-xr-xqa/217104
-rw-r--r--qa/217.out.1141
-rw-r--r--qa/217.out.2141
-rwxr-xr-xqa/21845
-rw-r--r--qa/218.out25
-rwxr-xr-xqa/21953
-rw-r--r--qa/219.out4
-rwxr-xr-xqa/22059
-rw-r--r--qa/220.out8
-rwxr-xr-xqa/22143
-rw-r--r--qa/221.out4
-rwxr-xr-xqa/22255
-rw-r--r--qa/222.out2
-rwxr-xr-xqa/223337
-rw-r--r--qa/223.out312
-rwxr-xr-xqa/22461
-rw-r--r--qa/224.out13
-rwxr-xr-xqa/225113
-rw-r--r--qa/225.out534
-rwxr-xr-xqa/22646
-rw-r--r--qa/226.out.1190
-rw-r--r--qa/226.out.2200
-rw-r--r--qa/226.out.3207
-rwxr-xr-xqa/22735
-rw-r--r--qa/227.out31
-rwxr-xr-xqa/22871
-rw-r--r--qa/228.out19
-rwxr-xr-xqa/22929
-rw-r--r--qa/229.out4
-rwxr-xr-xqa/230278
-rw-r--r--qa/230.out112
-rwxr-xr-xqa/23133
-rw-r--r--qa/231.out2
-rwxr-xr-xqa/232103
-rw-r--r--qa/232.out1
-rwxr-xr-xqa/23364
-rw-r--r--qa/233.out6
-rwxr-xr-xqa/234328
-rw-r--r--qa/234.out43
-rwxr-xr-xqa/235127
-rw-r--r--qa/235.out85
-rwxr-xr-xqa/236127
-rw-r--r--qa/236.out88
-rwxr-xr-xqa/237134
-rw-r--r--qa/237.out.1107
-rw-r--r--qa/237.out.297
-rwxr-xr-xqa/23861
-rw-r--r--qa/238.out.122
-rw-r--r--qa/238.out.217
-rwxr-xr-xqa/23988
-rw-r--r--qa/239.out.150
-rw-r--r--qa/239.out.245
-rwxr-xr-xqa/240134
-rw-r--r--qa/240.out.1161
-rw-r--r--qa/240.out.2141
-rwxr-xr-xqa/241147
-rw-r--r--qa/241.out.140
-rw-r--r--qa/241.out.235
-rwxr-xr-xqa/24259
-rw-r--r--qa/242.out42
-rwxr-xr-xqa/243136
-rw-r--r--qa/243.out.ipv620
-rw-r--r--qa/243.out.nonipv618
-rwxr-xr-xqa/244273
-rw-r--r--qa/244.out.ipv6112
-rw-r--r--qa/244.out.nonipv6109
-rwxr-xr-xqa/245153
-rw-r--r--qa/245.out127
-rwxr-xr-xqa/24689
-rw-r--r--qa/246.out2105
-rwxr-xr-xqa/24795
-rw-r--r--qa/247.out156
-rwxr-xr-xqa/24884
-rw-r--r--qa/248.out.151
-rw-r--r--qa/248.out.293
-rwxr-xr-xqa/249169
-rw-r--r--qa/249.out2618
-rwxr-xr-xqa/250163
-rw-r--r--qa/250.out.312
-rw-r--r--qa/250.out.irix24
-rw-r--r--qa/250.out.linux23
-rwxr-xr-xqa/251109
-rw-r--r--qa/251.out227
-rwxr-xr-xqa/252219
-rw-r--r--qa/252.out10
-rwxr-xr-xqa/25369
-rw-r--r--qa/253.out223
-rwxr-xr-xqa/25493
-rw-r--r--qa/254.out.122
-rw-r--r--qa/254.out.217
-rwxr-xr-xqa/255383
-rw-r--r--qa/255.out.ipv6268
-rw-r--r--qa/255.out.nonipv6267
-rwxr-xr-xqa/256197
-rw-r--r--qa/256.out771
-rwxr-xr-xqa/257118
-rw-r--r--qa/257.out31
-rwxr-xr-xqa/258122
-rw-r--r--qa/258.out20
-rwxr-xr-xqa/25977
-rw-r--r--qa/259.out210
-rwxr-xr-xqa/26096
-rw-r--r--qa/260.out384
-rwxr-xr-xqa/26191
-rw-r--r--qa/261.out.1285
-rw-r--r--qa/261.out.2284
-rw-r--r--qa/261.out.3274
-rwxr-xr-xqa/262103
-rw-r--r--qa/262.irix45
-rw-r--r--qa/262.linux45
-rwxr-xr-xqa/263153
-rw-r--r--qa/263.out1245
-rwxr-xr-xqa/26431
-rw-r--r--qa/264.out51
-rwxr-xr-xqa/26540
-rw-r--r--qa/265.out16
-rwxr-xr-xqa/266136
-rw-r--r--qa/266.out.1105
-rw-r--r--qa/266.out.2105
-rwxr-xr-xqa/26744
-rw-r--r--qa/267.out3
-rwxr-xr-xqa/26825
-rw-r--r--qa/268.out7
-rwxr-xr-xqa/269208
-rw-r--r--qa/269.out6
-rwxr-xr-xqa/270217
-rw-r--r--qa/270.out397
-rwxr-xr-xqa/27179
-rw-r--r--qa/271.out53
-rwxr-xr-xqa/272324
-rw-r--r--qa/272.out62
-rwxr-xr-xqa/273250
-rw-r--r--qa/273.out1750
-rwxr-xr-xqa/274209
-rw-r--r--qa/274.out.1309
-rw-r--r--qa/274.out.2307
-rwxr-xr-xqa/275142
-rw-r--r--qa/275.out801
-rwxr-xr-xqa/27637
-rw-r--r--qa/276.out.nongui8
-rw-r--r--qa/276.out.pcpgui9
-rwxr-xr-xqa/27736
-rw-r--r--qa/277.out1
-rwxr-xr-xqa/278151
-rw-r--r--qa/278.irix141
-rw-r--r--qa/278.linux71
-rwxr-xr-xqa/279176
-rw-r--r--qa/279.out37
-rwxr-xr-xqa/280149
-rw-r--r--qa/280.out28
-rwxr-xr-xqa/28145
-rw-r--r--qa/281.out21
-rwxr-xr-xqa/282258
-rw-r--r--qa/282.out74
-rwxr-xr-xqa/283136
-rw-r--r--qa/283.out.127
-rw-r--r--qa/283.out.227
-rwxr-xr-xqa/28428
-rw-r--r--qa/284.out34
-rwxr-xr-xqa/28588
-rw-r--r--qa/285.out41
-rwxr-xr-xqa/28643
-rw-r--r--qa/286.out1
-rwxr-xr-xqa/28770
-rw-r--r--qa/287.out.32557
-rw-r--r--qa/287.out.64557
-rwxr-xr-xqa/28841
-rw-r--r--qa/288.out163
-rwxr-xr-xqa/28933
-rw-r--r--qa/289.out139
-rwxr-xr-xqa/29027
-rw-r--r--qa/290.out40
-rwxr-xr-xqa/29165
-rw-r--r--qa/291.out95
-rwxr-xr-xqa/29295
-rw-r--r--qa/292.out32
-rwxr-xr-xqa/29330
-rw-r--r--qa/293.out11
-rwxr-xr-xqa/294160
-rw-r--r--qa/294.out1111
-rwxr-xr-xqa/29597
-rw-r--r--qa/295.out.117
-rw-r--r--qa/295.out.217
-rwxr-xr-xqa/296141
-rw-r--r--qa/296.out14
-rwxr-xr-xqa/297145
-rw-r--r--qa/297.out23
-rwxr-xr-xqa/29895
-rw-r--r--qa/298.out.123
-rw-r--r--qa/298.out.229
-rwxr-xr-xqa/299119
-rw-r--r--qa/299.out.1242
-rw-r--r--qa/299.out.2242
-rw-r--r--qa/299.out.3279
-rwxr-xr-xqa/30075
-rw-r--r--qa/300.out.117
-rw-r--r--qa/300.out.219
-rwxr-xr-xqa/301119
-rw-r--r--qa/301.out1
-rwxr-xr-xqa/30241
-rw-r--r--qa/302.out66
-rwxr-xr-xqa/30351
-rw-r--r--qa/303.out161
-rwxr-xr-xqa/304121
-rw-r--r--qa/304.out146
-rwxr-xr-xqa/30561
-rw-r--r--qa/305.out30
-rwxr-xr-xqa/30632
-rw-r--r--qa/306.out2
-rwxr-xr-xqa/30773
-rw-r--r--qa/307.out4
-rwxr-xr-xqa/308288
-rw-r--r--qa/308.out13
-rwxr-xr-xqa/30936
-rw-r--r--qa/309.out6
-rwxr-xr-xqa/31036
-rw-r--r--qa/310.out37
-rwxr-xr-xqa/31178
-rw-r--r--qa/311.out47
-rwxr-xr-xqa/31239
-rw-r--r--qa/312.out5
-rwxr-xr-xqa/313105
-rw-r--r--qa/313.62_6512plus871
-rw-r--r--qa/313.6511minus871
-rwxr-xr-xqa/31489
-rw-r--r--qa/314.out6
-rwxr-xr-xqa/31573
-rw-r--r--qa/315.out23
-rwxr-xr-xqa/316128
-rw-r--r--qa/316.out205
-rwxr-xr-xqa/31732
-rw-r--r--qa/317.out13
-rwxr-xr-xqa/31828
-rw-r--r--qa/318.out290
-rwxr-xr-xqa/319206
-rw-r--r--qa/319.out100
-rwxr-xr-xqa/32077
-rw-r--r--qa/320.out.18
-rw-r--r--qa/320.out.28
-rwxr-xr-xqa/32170
-rw-r--r--qa/321.out1179
-rwxr-xr-xqa/322220
-rw-r--r--qa/322.out.194
-rw-r--r--qa/322.out.297
-rwxr-xr-xqa/32399
-rw-r--r--qa/323.out.188
-rw-r--r--qa/323.out.283
-rwxr-xr-xqa/324136
-rw-r--r--qa/324.out.176
-rw-r--r--qa/324.out.271
-rwxr-xr-xqa/32596
-rw-r--r--qa/325.out5
-rwxr-xr-xqa/326184
-rw-r--r--qa/326.out39
-rwxr-xr-xqa/32784
-rw-r--r--qa/327.out401
-rwxr-xr-xqa/32863
-rw-r--r--qa/328.out35
-rwxr-xr-xqa/32946
-rw-r--r--qa/329.out76
-rwxr-xr-xqa/33062
-rw-r--r--qa/330.out232
-rwxr-xr-xqa/33143
-rw-r--r--qa/331.out46
-rwxr-xr-xqa/33263
-rw-r--r--qa/332.out116
-rwxr-xr-xqa/33344
-rw-r--r--qa/333.out46
-rwxr-xr-xqa/33468
-rw-r--r--qa/334.out295
-rwxr-xr-xqa/33593
-rw-r--r--qa/335.out173
-rwxr-xr-xqa/33693
-rw-r--r--qa/336.out6
-rwxr-xr-xqa/33752
-rw-r--r--qa/337.out1968
-rwxr-xr-xqa/338157
-rw-r--r--qa/338.out178
-rwxr-xr-xqa/33949
-rw-r--r--qa/339.out9
-rwxr-xr-xqa/340270
-rw-r--r--qa/340-v1v2.out10
-rw-r--r--qa/340-v2.out36
-rwxr-xr-xqa/34159
-rw-r--r--qa/341.out173
-rwxr-xr-xqa/34259
-rw-r--r--qa/342.out23
-rwxr-xr-xqa/34372
-rw-r--r--qa/343.out131
-rwxr-xr-xqa/344151
-rw-r--r--qa/344.out884
-rwxr-xr-xqa/34584
-rw-r--r--qa/345.out63
-rwxr-xr-xqa/346113
-rw-r--r--qa/346.out.151
-rw-r--r--qa/346.out.246
-rwxr-xr-xqa/347143
-rw-r--r--qa/347.out.167
-rw-r--r--qa/347.out.262
-rwxr-xr-xqa/348137
-rw-r--r--qa/348.out.166
-rw-r--r--qa/348.out.264
-rwxr-xr-xqa/34990
-rw-r--r--qa/349.out.130
-rw-r--r--qa/349.out.225
-rwxr-xr-xqa/35034
-rw-r--r--qa/350.out95
-rwxr-xr-xqa/35139
-rw-r--r--qa/351.out84
-rwxr-xr-xqa/35269
-rw-r--r--qa/352.out91
-rwxr-xr-xqa/35349
-rw-r--r--qa/353.out2
-rwxr-xr-xqa/354272
-rw-r--r--qa/354.out360
-rwxr-xr-xqa/35576
-rw-r--r--qa/355.out22
-rwxr-xr-xqa/35658
-rw-r--r--qa/356.out22
-rwxr-xr-xqa/35757
-rw-r--r--qa/357.out.1111
-rw-r--r--qa/357.out.2111
-rwxr-xr-xqa/35850
-rw-r--r--qa/358.out13
-rwxr-xr-xqa/35956
-rw-r--r--qa/359.out3
-rwxr-xr-xqa/36063
-rw-r--r--qa/360.out98
-rwxr-xr-xqa/36195
-rw-r--r--qa/361.out.1108
-rw-r--r--qa/361.out.2108
-rwxr-xr-xqa/362236
-rw-r--r--qa/362.out221
-rwxr-xr-xqa/36361
-rw-r--r--qa/363.out134
-rwxr-xr-xqa/364122
-rw-r--r--qa/364.out2
-rwxr-xr-xqa/365170
-rw-r--r--qa/365.out.ipv641
-rw-r--r--qa/365.out.nonipv640
-rwxr-xr-xqa/366332
-rw-r--r--qa/366.out470
-rwxr-xr-xqa/367241
-rw-r--r--qa/367.out.1507
-rw-r--r--qa/367.out.be.2514
-rw-r--r--qa/367.out.le.2514
-rwxr-xr-xqa/368184
-rw-r--r--qa/368.darwin.1210
-rw-r--r--qa/368.darwin.2216
-rw-r--r--qa/368.darwin.3218
-rw-r--r--qa/368.other.1207
-rw-r--r--qa/368.other.2213
-rw-r--r--qa/368.other.3215
-rwxr-xr-xqa/36988
-rw-r--r--qa/369.out.1500
-rw-r--r--qa/369.out.2530
-rw-r--r--qa/369.out.3532
-rw-r--r--qa/369.out.4548
-rwxr-xr-xqa/370215
-rw-r--r--qa/370.out.13727
-rw-r--r--qa/370.out.25444
-rw-r--r--qa/370.out.34534
-rw-r--r--qa/370.out.49784
-rw-r--r--qa/370.out.55374
-rw-r--r--qa/370.out.65619
-rw-r--r--qa/370.out.713424
-rwxr-xr-xqa/371190
-rw-r--r--qa/371.out81
-rwxr-xr-xqa/37289
-rw-r--r--qa/372.out369
-rwxr-xr-xqa/37348
-rw-r--r--qa/373.out1197
-rwxr-xr-xqa/374212
-rw-r--r--qa/374.out.197
-rw-r--r--qa/374.out.297
-rwxr-xr-xqa/375150
-rw-r--r--qa/375.darwin193
-rw-r--r--qa/375.darwin.2187
-rw-r--r--qa/375.darwin.3193
-rw-r--r--qa/375.linux193
-rw-r--r--qa/375.linux.2187
-rw-r--r--qa/375.linux.3193
-rw-r--r--qa/375.solaris.2187
-rw-r--r--qa/375.solaris.3193
-rwxr-xr-xqa/37688
-rw-r--r--qa/376.out43
-rwxr-xr-xqa/37748
-rw-r--r--qa/377.out8
-rwxr-xr-xqa/37894
-rw-r--r--qa/378.out86
-rwxr-xr-xqa/37974
-rw-r--r--qa/379.out390
-rwxr-xr-xqa/38099
-rw-r--r--qa/380.out6
-rwxr-xr-xqa/381150
-rw-r--r--qa/381.out196
-rwxr-xr-xqa/38274
-rw-r--r--qa/382.out.1144
-rw-r--r--qa/382.out.2150
-rwxr-xr-xqa/38371
-rw-r--r--qa/383.out204
-rwxr-xr-xqa/38450
-rw-r--r--qa/384.out5
-rwxr-xr-xqa/38553
-rw-r--r--qa/385.out45
-rwxr-xr-xqa/38627
-rw-r--r--qa/386.out25
-rwxr-xr-xqa/38726
-rw-r--r--qa/387.out31
-rwxr-xr-xqa/38845
-rw-r--r--qa/388.out51
-rwxr-xr-xqa/38962
-rw-r--r--qa/389.out38
-rwxr-xr-xqa/39084
-rw-r--r--qa/390.out23
-rwxr-xr-xqa/39161
-rw-r--r--qa/391.out157
-rwxr-xr-xqa/392147
-rw-r--r--qa/392.out.138
-rw-r--r--qa/392.out.236
-rwxr-xr-xqa/39342
-rw-r--r--qa/393.out31
-rwxr-xr-xqa/39455
-rw-r--r--qa/394.out51
-rwxr-xr-xqa/39542
-rw-r--r--qa/395.out31
-rwxr-xr-xqa/39657
-rw-r--r--qa/396.out66
-rwxr-xr-xqa/39756
-rw-r--r--qa/397.out41
-rwxr-xr-xqa/39885
-rw-r--r--qa/398.out11
-rwxr-xr-xqa/399118
-rw-r--r--qa/399.out9
-rwxr-xr-xqa/40060
-rw-r--r--qa/400.out292
-rwxr-xr-xqa/40140
-rw-r--r--qa/401.out80
-rwxr-xr-xqa/40227
-rw-r--r--qa/402.out9
-rwxr-xr-xqa/40356
-rw-r--r--qa/403.out2
-rwxr-xr-xqa/40439
-rw-r--r--qa/404.out210
-rwxr-xr-xqa/40536
-rw-r--r--qa/405.out8
-rwxr-xr-xqa/40635
-rw-r--r--qa/406.out.130
-rw-r--r--qa/406.out.247
-rwxr-xr-xqa/40746
-rw-r--r--qa/407.out32
-rwxr-xr-xqa/40841
-rw-r--r--qa/408.out1
-rwxr-xr-xqa/40938
-rw-r--r--qa/409.out58
-rwxr-xr-xqa/41032
-rw-r--r--qa/410.out64
-rwxr-xr-xqa/411128
-rw-r--r--qa/411.out.043
-rw-r--r--qa/411.out.145
-rw-r--r--qa/411.out.240
-rwxr-xr-xqa/412242
-rw-r--r--qa/412.out11
-rwxr-xr-xqa/41331
-rw-r--r--qa/413.out9
-rwxr-xr-xqa/41442
-rw-r--r--qa/414.out30
-rwxr-xr-xqa/41534
-rw-r--r--qa/415.out15
-rwxr-xr-xqa/416131
-rw-r--r--qa/416.out66
-rwxr-xr-xqa/417100
-rw-r--r--qa/417.out405
-rwxr-xr-xqa/41869
-rw-r--r--qa/418.out12
-rwxr-xr-xqa/419166
-rw-r--r--qa/419.darwin55
-rw-r--r--qa/419.irix99
-rw-r--r--qa/419.linux67
-rwxr-xr-xqa/42039
-rw-r--r--qa/420.out48
-rwxr-xr-xqa/42156
-rw-r--r--qa/421.out17
-rwxr-xr-xqa/42247
-rw-r--r--qa/422.out.be29
-rw-r--r--qa/422.out.le29
-rwxr-xr-xqa/42324
-rw-r--r--qa/423.out33
-rwxr-xr-xqa/42453
-rw-r--r--qa/424.out23
-rwxr-xr-xqa/425137
-rw-r--r--qa/425.out11
-rwxr-xr-xqa/426121
-rw-r--r--qa/426.out136
-rwxr-xr-xqa/427110
-rw-r--r--qa/427.out20
-rwxr-xr-xqa/428112
-rw-r--r--qa/428.out78
-rwxr-xr-xqa/42971
-rw-r--r--qa/429.out.16
-rw-r--r--qa/429.out.26
-rwxr-xr-xqa/430313
-rw-r--r--qa/430.out.1247
-rw-r--r--qa/430.out.2252
-rwxr-xr-xqa/43145
-rw-r--r--qa/431.out30
-rwxr-xr-xqa/43239
-rw-r--r--qa/432.out46
-rwxr-xr-xqa/43357
-rw-r--r--qa/433.out22
-rwxr-xr-xqa/43466
-rw-r--r--qa/434.out125
-rwxr-xr-xqa/43524
-rw-r--r--qa/435.out93
-rwxr-xr-xqa/43624
-rw-r--r--qa/436.out100
-rwxr-xr-xqa/43742
-rw-r--r--qa/437.out29
-rwxr-xr-xqa/43851
-rw-r--r--qa/438.out129
-rwxr-xr-xqa/43989
-rw-r--r--qa/439.out27
-rwxr-xr-xqa/440256
-rw-r--r--qa/440.out23
-rwxr-xr-xqa/44153
-rw-r--r--qa/441.out1
-rwxr-xr-xqa/44295
-rw-r--r--qa/442.out11
-rwxr-xr-xqa/443136
-rw-r--r--qa/443.out369
-rwxr-xr-xqa/44458
-rw-r--r--qa/444.out.1419
-rw-r--r--qa/444.out.2425
-rw-r--r--qa/444.out.3425
-rwxr-xr-xqa/445118
-rw-r--r--qa/445.out12
-rwxr-xr-xqa/44682
-rw-r--r--qa/446.out3
-rwxr-xr-xqa/44746
-rw-r--r--qa/447.out178
-rwxr-xr-xqa/44865
-rw-r--r--qa/448.out17
-rwxr-xr-xqa/44994
-rw-r--r--qa/449.out93
-rwxr-xr-xqa/45043
-rw-r--r--qa/450.out18
-rwxr-xr-xqa/45132
-rw-r--r--qa/451.out39
-rwxr-xr-xqa/45236
-rw-r--r--qa/452.out3
-rwxr-xr-xqa/45342
-rw-r--r--qa/453.out91
-rwxr-xr-xqa/454188
-rw-r--r--qa/454.out103
-rwxr-xr-xqa/455127
-rw-r--r--qa/455.out63
-rwxr-xr-xqa/456101
-rw-r--r--qa/456.out45
-rwxr-xr-xqa/457176
-rw-r--r--qa/457.out339
-rwxr-xr-xqa/458102
-rw-r--r--qa/458.out50
-rwxr-xr-xqa/45940
-rw-r--r--qa/459.out12
-rwxr-xr-xqa/46056
-rw-r--r--qa/460.out79
-rwxr-xr-xqa/461100
-rw-r--r--qa/461.out44
-rwxr-xr-xqa/462169
-rw-r--r--qa/462.out29
-rwxr-xr-xqa/463410
-rw-r--r--qa/463.out244
-rwxr-xr-xqa/464242
-rw-r--r--qa/464.out67
-rwxr-xr-xqa/46591
-rw-r--r--qa/465.out.150
-rw-r--r--qa/465.out.250
-rw-r--r--qa/465.out.332
-rw-r--r--qa/465.out.420
-rwxr-xr-xqa/46690
-rw-r--r--qa/466.out.147
-rw-r--r--qa/466.out.241
-rw-r--r--qa/466.out.329
-rwxr-xr-xqa/46759
-rw-r--r--qa/467.out35
-rwxr-xr-xqa/46859
-rw-r--r--qa/468.out35
-rwxr-xr-xqa/46953
-rw-r--r--qa/469.out1
-rwxr-xr-xqa/47049
-rw-r--r--qa/470.out85
-rwxr-xr-xqa/47148
-rw-r--r--qa/471.out6
-rwxr-xr-xqa/47249
-rw-r--r--qa/472.out85
-rwxr-xr-xqa/47349
-rw-r--r--qa/473.out85
-rwxr-xr-xqa/47449
-rw-r--r--qa/474.out70
-rwxr-xr-xqa/47549
-rw-r--r--qa/475.out155
-rwxr-xr-xqa/47691
-rw-r--r--qa/476.out163
-rwxr-xr-xqa/47774
-rw-r--r--qa/477.out167
-rwxr-xr-xqa/47837
-rw-r--r--qa/478.out11
-rwxr-xr-xqa/47993
-rw-r--r--qa/479.out.1769
-rw-r--r--qa/479.out.2571
-rwxr-xr-xqa/48088
-rw-r--r--qa/480.out.150
-rw-r--r--qa/480.out.2158
-rwxr-xr-xqa/481280
-rw-r--r--qa/481.out469
-rwxr-xr-xqa/482136
-rw-r--r--qa/482.out27
-rwxr-xr-xqa/483227
-rw-r--r--qa/483.out695
-rwxr-xr-xqa/48463
-rw-r--r--qa/484.out31
-rwxr-xr-xqa/48563
-rw-r--r--qa/485.out203
-rwxr-xr-xqa/486155
-rw-r--r--qa/486.out3729
-rwxr-xr-xqa/48794
-rw-r--r--qa/487.out226
-rwxr-xr-xqa/48865
-rw-r--r--qa/488.out1081
-rwxr-xr-xqa/489105
-rw-r--r--qa/489.out1255
-rwxr-xr-xqa/490175
-rw-r--r--qa/490.out1065
-rwxr-xr-xqa/49138
-rw-r--r--qa/491.out.be171
-rw-r--r--qa/491.out.le171
-rwxr-xr-xqa/492121
-rw-r--r--qa/492.out134
-rwxr-xr-xqa/49390
-rw-r--r--qa/493.out120
-rwxr-xr-xqa/494152
-rw-r--r--qa/494.out2415
-rwxr-xr-xqa/495171
-rw-r--r--qa/495.out2356
-rwxr-xr-xqa/496134
-rw-r--r--qa/496.out26
-rwxr-xr-xqa/497145
-rw-r--r--qa/497.out.1136
-rw-r--r--qa/497.out.2138
-rwxr-xr-xqa/498151
-rw-r--r--qa/498.out.1381
-rw-r--r--qa/498.out.2386
-rw-r--r--qa/498.out.3386
-rwxr-xr-xqa/499182
-rw-r--r--qa/499.out220
-rwxr-xr-xqa/50081
-rw-r--r--qa/500.out44
-rwxr-xr-xqa/501105
-rw-r--r--qa/501-irix.out351
-rw-r--r--qa/501-linux.out351
-rwxr-xr-xqa/502154
-rw-r--r--qa/502.out37
-rwxr-xr-xqa/503192
-rw-r--r--qa/503.out362
-rwxr-xr-xqa/504173
-rw-r--r--qa/504.out.132
-rw-r--r--qa/504.out.232
-rwxr-xr-xqa/50570
-rw-r--r--qa/505.out47
-rwxr-xr-xqa/506101
-rw-r--r--qa/506.out6
-rwxr-xr-xqa/507139
-rw-r--r--qa/507.out38
-rwxr-xr-xqa/508175
-rw-r--r--qa/508.out313
-rwxr-xr-xqa/50966
-rw-r--r--qa/509.out234
-rwxr-xr-xqa/51065
-rw-r--r--qa/510.out121
-rwxr-xr-xqa/51188
-rw-r--r--qa/511.out33
-rwxr-xr-xqa/512166
-rw-r--r--qa/512.out.128
-rw-r--r--qa/512.out.230
-rwxr-xr-xqa/51325
-rw-r--r--qa/513.out.1196
-rw-r--r--qa/513.out.2204
-rwxr-xr-xqa/514190
-rw-r--r--qa/514.out.12430
-rw-r--r--qa/514.out.22430
-rw-r--r--qa/514.out.32438
-rwxr-xr-xqa/51581
-rw-r--r--qa/515.out26
-rwxr-xr-xqa/51638
-rw-r--r--qa/516.out8
-rwxr-xr-xqa/517156
-rw-r--r--qa/517.out38
-rwxr-xr-xqa/51871
-rw-r--r--qa/518.out4
-rwxr-xr-xqa/519128
-rw-r--r--qa/519.irix17
-rw-r--r--qa/519.linux17
-rwxr-xr-xqa/520101
-rw-r--r--qa/520.out.1594
-rw-r--r--qa/520.out.2594
-rw-r--r--qa/520.out.3597
-rwxr-xr-xqa/52176
-rw-r--r--qa/521.out44
-rwxr-xr-xqa/52250
-rw-r--r--qa/522.out6
-rwxr-xr-xqa/52397
-rw-r--r--qa/523.out.1497
-rw-r--r--qa/523.out.2499
-rwxr-xr-xqa/52499
-rw-r--r--qa/524.out64
-rwxr-xr-xqa/52599
-rw-r--r--qa/525.out46
-rwxr-xr-xqa/52631
-rw-r--r--qa/526.out121
-rwxr-xr-xqa/527136
-rw-r--r--qa/527.out3
-rwxr-xr-xqa/52868
-rw-r--r--qa/528.out88
-rwxr-xr-xqa/529161
-rw-r--r--qa/529.out26
-rwxr-xr-xqa/530150
-rw-r--r--qa/530.out177
-rwxr-xr-xqa/53159
-rw-r--r--qa/531.out19
-rwxr-xr-xqa/532152
-rw-r--r--qa/532.out150
-rwxr-xr-xqa/53364
-rw-r--r--qa/533.out19
-rwxr-xr-xqa/53471
-rw-r--r--qa/534.out13
-rwxr-xr-xqa/535158
-rw-r--r--qa/535.out50
-rwxr-xr-xqa/53677
-rw-r--r--qa/536.out64
-rwxr-xr-xqa/53739
-rw-r--r--qa/537.out23
-rwxr-xr-xqa/53881
-rw-r--r--qa/538.out22
-rwxr-xr-xqa/53952
-rw-r--r--qa/539.out24
-rwxr-xr-xqa/54055
-rw-r--r--qa/540.out2
-rwxr-xr-xqa/54186
-rw-r--r--qa/541.out16
-rwxr-xr-xqa/54287
-rw-r--r--qa/542.out16
-rwxr-xr-xqa/54390
-rw-r--r--qa/543.out6
-rwxr-xr-xqa/544164
-rw-r--r--qa/544.out13
-rwxr-xr-xqa/54532
-rw-r--r--qa/545.out3
-rwxr-xr-xqa/546102
-rw-r--r--qa/546.out45
-rwxr-xr-xqa/54736
-rw-r--r--qa/547.out17
-rwxr-xr-xqa/54846
-rw-r--r--qa/548.out5
-rwxr-xr-xqa/54942
-rw-r--r--qa/549.out16
-rwxr-xr-xqa/55052
-rw-r--r--qa/550.out7
-rwxr-xr-xqa/55172
-rw-r--r--qa/551.out8
-rwxr-xr-xqa/55229
-rw-r--r--qa/552.out5
-rwxr-xr-xqa/553116
-rw-r--r--qa/553.out139
-rwxr-xr-xqa/55442
-rw-r--r--qa/554.out4
-rwxr-xr-xqa/555253
-rw-r--r--qa/555.irix43
-rw-r--r--qa/555.linux43
-rwxr-xr-xqa/55662
-rw-r--r--qa/556.out11
-rwxr-xr-xqa/55750
-rw-r--r--qa/557.out7
-rwxr-xr-xqa/55884
-rw-r--r--qa/558.out.irix20
-rw-r--r--qa/558.out.linux20
-rwxr-xr-xqa/55949
-rw-r--r--qa/559.out16
-rwxr-xr-xqa/56075
-rw-r--r--qa/560.out40
-rwxr-xr-xqa/56483
-rw-r--r--qa/564.out29
-rwxr-xr-xqa/565137
-rw-r--r--qa/565.irix45
-rw-r--r--qa/565.linux43
-rw-r--r--qa/565.out.238
-rwxr-xr-xqa/566115
-rw-r--r--qa/566.out172
-rwxr-xr-xqa/569122
-rw-r--r--qa/569.out879
-rwxr-xr-xqa/570161
-rw-r--r--qa/570.out.186
-rw-r--r--qa/570.out.286
-rwxr-xr-xqa/571148
-rw-r--r--qa/571.out65
-rwxr-xr-xqa/572145
-rw-r--r--qa/572.out54
-rwxr-xr-xqa/57461
-rw-r--r--qa/574.out.darwin104
-rw-r--r--qa/574.out.freebsd106
-rw-r--r--qa/574.out.irix95
-rw-r--r--qa/574.out.linux108
-rw-r--r--qa/574.out.solaris108
-rwxr-xr-xqa/57544
-rw-r--r--qa/575.out.13
-rw-r--r--qa/575.out.23
-rwxr-xr-xqa/578362
-rw-r--r--qa/578.out.161
-rw-r--r--qa/578.out.256
-rwxr-xr-xqa/58075
-rw-r--r--qa/580.out.darwin17
-rw-r--r--qa/580.out.irix21
-rw-r--r--qa/580.out.linux21
-rw-r--r--qa/580.out.linux.noproc19
-rwxr-xr-xqa/581258
-rw-r--r--qa/581.out78
-rwxr-xr-xqa/583149
-rw-r--r--qa/583.out16
-rwxr-xr-xqa/58470
-rw-r--r--qa/584.out25
-rwxr-xr-xqa/587151
-rw-r--r--qa/587.darwin122
-rw-r--r--qa/587.irix134
-rw-r--r--qa/587.linux122
-rw-r--r--qa/587.solaris122
-rwxr-xr-xqa/58987
-rw-r--r--qa/589.out24
-rwxr-xr-xqa/59241
-rw-r--r--qa/592.out33
-rwxr-xr-xqa/59348
-rw-r--r--qa/593.out11
-rwxr-xr-xqa/59448
-rw-r--r--qa/594.out7
-rwxr-xr-xqa/59767
-rw-r--r--qa/597.out.146
-rw-r--r--qa/597.out.241
-rwxr-xr-xqa/59944
-rw-r--r--qa/599.out87
-rwxr-xr-xqa/600179
-rw-r--r--qa/600.out.darwin30
-rw-r--r--qa/600.out.irix30
-rw-r--r--qa/600.out.linux.030
-rw-r--r--qa/600.out.linux.130
-rw-r--r--qa/600.out.linux.230
-rw-r--r--qa/600.out.linux.330
-rw-r--r--qa/600.out.linux.430
-rw-r--r--qa/600.out.solaris30
-rwxr-xr-xqa/601206
-rw-r--r--qa/601.out75
-rwxr-xr-xqa/602131
-rw-r--r--qa/602.out235
-rwxr-xr-xqa/603206
-rw-r--r--qa/603.out92
-rwxr-xr-xqa/60579
-rw-r--r--qa/605.in10
-rwxr-xr-xqa/61445
-rw-r--r--qa/614.out6
-rwxr-xr-xqa/617170
-rw-r--r--qa/617.out.1538
-rw-r--r--qa/617.out.2540
-rw-r--r--qa/617.out.3542
-rwxr-xr-xqa/62251
-rw-r--r--qa/622.out14
-rwxr-xr-xqa/628127
-rw-r--r--qa/628.out19
-rwxr-xr-xqa/6331058
-rw-r--r--qa/633.out.115
-rw-r--r--qa/633.out.215
-rwxr-xr-xqa/63444
-rw-r--r--qa/634.out50
-rwxr-xr-xqa/635283
-rw-r--r--qa/635.out1
-rwxr-xr-xqa/63636
-rw-r--r--qa/636.out2
-rwxr-xr-xqa/638220
-rw-r--r--qa/638.out.147
-rw-r--r--qa/638.out.229
-rwxr-xr-xqa/639236
-rw-r--r--qa/639.out.156
-rw-r--r--qa/639.out.238
-rwxr-xr-xqa/64029
-rw-r--r--qa/640.out2
-rwxr-xr-xqa/642126
-rw-r--r--qa/642.out.1121
-rw-r--r--qa/642.out.291
-rw-r--r--qa/642.out.391
-rw-r--r--qa/642.out.495
-rwxr-xr-xqa/64379
-rw-r--r--qa/643.out42
-rwxr-xr-xqa/64445
-rw-r--r--qa/644.out11
-rwxr-xr-xqa/64544
-rw-r--r--qa/645.out13
-rwxr-xr-xqa/64665
-rw-r--r--qa/646.out97
-rwxr-xr-xqa/647144
-rw-r--r--qa/647.out.1136
-rw-r--r--qa/647.out.2126
-rwxr-xr-xqa/648118
-rw-r--r--qa/648.out.157
-rw-r--r--qa/648.out.252
-rwxr-xr-xqa/649129
-rw-r--r--qa/649.out.169
-rw-r--r--qa/649.out.259
-rwxr-xr-xqa/650107
-rw-r--r--qa/650.out198
-rwxr-xr-xqa/65198
-rw-r--r--qa/651.out21
-rwxr-xr-xqa/65298
-rw-r--r--qa/652.out35
-rwxr-xr-xqa/653103
-rw-r--r--qa/653.out5
-rwxr-xr-xqa/65453
-rw-r--r--qa/654.out58
-rwxr-xr-xqa/65580
-rw-r--r--qa/655.out1710
-rwxr-xr-xqa/660148
-rw-r--r--qa/660.out.438
-rw-r--r--qa/660.out.4660
-rwxr-xr-xqa/70126
-rw-r--r--qa/701.out2
-rwxr-xr-xqa/70220
-rw-r--r--qa/702.out2
-rwxr-xr-xqa/703119
-rw-r--r--qa/703.out.127
-rw-r--r--qa/703.out.224
-rwxr-xr-xqa/70452
-rw-r--r--qa/704.out66
-rwxr-xr-xqa/70532
-rw-r--r--qa/705.out35
-rwxr-xr-xqa/70654
-rw-r--r--qa/706.out9
-rwxr-xr-xqa/70720
-rw-r--r--qa/707.out2
-rwxr-xr-xqa/70826
-rw-r--r--qa/708.out2
-rwxr-xr-xqa/709116
-rw-r--r--qa/709.out113
-rwxr-xr-xqa/71038
-rw-r--r--qa/710.out33
-rwxr-xr-xqa/71172
-rw-r--r--qa/711.out12
-rwxr-xr-xqa/71265
-rw-r--r--qa/712.out25
-rwxr-xr-xqa/71371
-rw-r--r--qa/713.out20
-rwxr-xr-xqa/71449
-rw-r--r--qa/714.out19
-rwxr-xr-xqa/71591
-rw-r--r--qa/715.out.153
-rw-r--r--qa/715.out.253
-rwxr-xr-xqa/71662
-rw-r--r--qa/716.out.186
-rw-r--r--qa/716.out.288
-rwxr-xr-xqa/717105
-rw-r--r--qa/717.out54
-rwxr-xr-xqa/71852
-rw-r--r--qa/718.out88
-rwxr-xr-xqa/71924
-rw-r--r--qa/719.out65
-rwxr-xr-xqa/72026
-rw-r--r--qa/720.out98
-rwxr-xr-xqa/72158
-rw-r--r--qa/721.out49
-rw-r--r--qa/72286
-rw-r--r--qa/722.out450
-rwxr-xr-xqa/72355
-rw-r--r--qa/723.out2
-rwxr-xr-xqa/72441
-rw-r--r--qa/724.out9
-rwxr-xr-xqa/725179
-rw-r--r--qa/725.out571
-rwxr-xr-xqa/72672
-rw-r--r--qa/726.out14
-rwxr-xr-xqa/72723
-rw-r--r--qa/727.out3
-rw-r--r--qa/72890
-rw-r--r--qa/728.out787
-rwxr-xr-xqa/72948
-rw-r--r--qa/729.out5
-rwxr-xr-xqa/73047
-rw-r--r--qa/730.out822
-rwxr-xr-xqa/73151
-rw-r--r--qa/731.out706
-rwxr-xr-xqa/73357
-rw-r--r--qa/733.out.1239
-rw-r--r--qa/733.out.2240
-rwxr-xr-xqa/73442
-rw-r--r--qa/734.out3
-rwxr-xr-xqa/73553
-rw-r--r--qa/735.out2
-rwxr-xr-xqa/73636
-rw-r--r--qa/736.out4036
-rwxr-xr-xqa/73734
-rw-r--r--qa/737.out6
-rwxr-xr-xqa/738215
-rw-r--r--qa/738.out264
-rwxr-xr-xqa/73957
-rw-r--r--qa/739.out119
-rwxr-xr-xqa/74057
-rw-r--r--qa/740.out7
-rwxr-xr-xqa/74142
-rw-r--r--qa/741.out23
-rwxr-xr-xqa/74228
-rw-r--r--qa/742.out7
-rwxr-xr-xqa/74335
-rw-r--r--qa/743.out54
-rwxr-xr-xqa/74447
-rw-r--r--qa/744.out200
-rwxr-xr-xqa/74552
-rw-r--r--qa/745.out218
-rwxr-xr-xqa/74850
-rw-r--r--qa/748.out31
-rw-r--r--qa/74977
-rw-r--r--qa/749.out2
-rwxr-xr-xqa/750103
-rw-r--r--qa/750.out201
-rwxr-xr-xqa/75149
-rw-r--r--qa/751.out13
-rwxr-xr-xqa/75226
-rw-r--r--qa/752.out162
-rwxr-xr-xqa/75364
-rw-r--r--qa/753.out105
-rwxr-xr-xqa/75575
-rw-r--r--qa/755.out23
-rwxr-xr-xqa/76364
-rw-r--r--qa/763.out49
-rwxr-xr-xqa/76446
-rw-r--r--qa/764.out16
-rwxr-xr-xqa/766109
-rw-r--r--qa/766.out15
-rwxr-xr-xqa/76831
-rw-r--r--qa/768.out47
-rwxr-xr-xqa/77569
-rw-r--r--qa/775.out25
-rwxr-xr-xqa/776121
-rw-r--r--qa/776.out15
-rwxr-xr-xqa/77963
-rw-r--r--qa/779.out26
-rwxr-xr-xqa/78072
-rw-r--r--qa/780.out8
-rwxr-xr-xqa/78165
-rw-r--r--qa/781.out21
-rwxr-xr-xqa/78330
-rw-r--r--qa/783.out10
-rwxr-xr-xqa/78640
-rw-r--r--qa/786.out84
-rwxr-xr-xqa/78782
-rw-r--r--qa/787.out1283
-rwxr-xr-xqa/79862
-rw-r--r--qa/798.out99
-rwxr-xr-xqa/81532
-rw-r--r--qa/815.out12
-rwxr-xr-xqa/82390
-rw-r--r--qa/823.out18
-rwxr-xr-xqa/82443
-rw-r--r--qa/824.out57
-rwxr-xr-xqa/82744
-rw-r--r--qa/827.out324
-rwxr-xr-xqa/828214
-rw-r--r--qa/828.out146
-rwxr-xr-xqa/82940
-rw-r--r--qa/829.out853
-rwxr-xr-xqa/83030
-rw-r--r--qa/830.out5
-rwxr-xr-xqa/83145
-rw-r--r--qa/831.out16
-rwxr-xr-xqa/83291
-rw-r--r--qa/832.out21
-rwxr-xr-xqa/83346
-rw-r--r--qa/833.out522
-rwxr-xr-xqa/834507
-rw-r--r--qa/834.out170
-rwxr-xr-xqa/835137
-rw-r--r--qa/835.out49
-rwxr-xr-xqa/83647
-rw-r--r--qa/836.out84
-rwxr-xr-xqa/84022
-rw-r--r--qa/840.out3
-rwxr-xr-xqa/84164
-rw-r--r--qa/841.out49
-rwxr-xr-xqa/84252
-rw-r--r--qa/842.out227
-rwxr-xr-xqa/84441
-rwxr-xr-xqa/844.out3
-rwxr-xr-xqa/86154
-rw-r--r--qa/861.out8
-rwxr-xr-xqa/87533
-rw-r--r--qa/875.out66
-rwxr-xr-xqa/87689
-rw-r--r--qa/876.out18
-rwxr-xr-xqa/89780
-rw-r--r--qa/897.out280
-rwxr-xr-xqa/89865
-rw-r--r--qa/898.out55
-rwxr-xr-xqa/89997
-rw-r--r--qa/899.out279
-rwxr-xr-xqa/900103
-rw-r--r--qa/900.out63
-rwxr-xr-xqa/90141
-rw-r--r--qa/901.out210
-rwxr-xr-xqa/90237
-rw-r--r--qa/902.out8
-rwxr-xr-xqa/90376
-rw-r--r--qa/903.out28
-rwxr-xr-xqa/91482
-rw-r--r--qa/914.out65
-rwxr-xr-xqa/922153
-rw-r--r--qa/922.out442
-rwxr-xr-xqa/92845
-rw-r--r--qa/928.out201
-rwxr-xr-xqa/92984
-rw-r--r--qa/929.out37
-rwxr-xr-xqa/94351
-rw-r--r--qa/943.out175
-rwxr-xr-xqa/944148
-rw-r--r--qa/944.out119
-rwxr-xr-xqa/94592
-rw-r--r--qa/945.out16
-rwxr-xr-xqa/94671
-rw-r--r--qa/946.out27
-rwxr-xr-xqa/95023
-rw-r--r--qa/950.out3
-rwxr-xr-xqa/95748
-rw-r--r--qa/957.out207
-rwxr-xr-xqa/95826
-rw-r--r--qa/958.out93
-rwxr-xr-xqa/95927
-rw-r--r--qa/959.out2
-rwxr-xr-xqa/96230
-rw-r--r--qa/962.out2837
-rwxr-xr-xqa/96679
-rw-r--r--qa/966.out32
-rwxr-xr-xqa/97286
-rw-r--r--qa/972.out87
-rwxr-xr-xqa/97399
-rw-r--r--qa/973.out28
-rwxr-xr-xqa/978107
-rw-r--r--qa/978.out71
-rwxr-xr-xqa/97921
-rw-r--r--qa/979.out2
-rwxr-xr-xqa/98021
-rw-r--r--qa/980.out2
-rwxr-xr-xqa/98592
-rw-r--r--qa/985.out167
-rwxr-xr-xqa/98673
-rw-r--r--qa/986.out28
-rwxr-xr-xqa/98745
-rw-r--r--qa/987.out1164
-rwxr-xr-xqa/98845
-rw-r--r--qa/988.out1173
-rwxr-xr-xqa/99147
-rw-r--r--qa/991.out57
-rwxr-xr-xqa/99495
-rw-r--r--qa/994.out1
-rw-r--r--qa/GNUmakefile89
-rw-r--r--qa/GNUmakefile.install58
-rw-r--r--qa/README227
-rw-r--r--qa/admin/README6
-rwxr-xr-xqa/admin/check-vm361
-rwxr-xr-xqa/admin/myconfigure27
-rwxr-xr-xqa/admin/pcp-daily838
-rwxr-xr-xqa/admin/pcp-qa-summary320
-rwxr-xr-xqa/admin/show-me-all59
-rw-r--r--qa/archives/20071023-08-06-36.0bin0 -> 29189 bytes
-rw-r--r--qa/archives/20071023-08-06-36.indexbin0 -> 212 bytes
-rw-r--r--qa/archives/20071023-08-06-36.metabin0 -> 944 bytes
-rw-r--r--qa/archives/GNUmakefile20
-rw-r--r--qa/archives/GNUmakefile.install11
-rw-r--r--qa/archives/chartqa1.0bin0 -> 1903984 bytes
-rw-r--r--qa/archives/chartqa1.indexbin0 -> 3812 bytes
-rw-r--r--qa/archives/chartqa1.metabin0 -> 56564 bytes
-rw-r--r--qa/archives/dm-io.0bin0 -> 2795172 bytes
-rw-r--r--qa/archives/dm-io.indexbin0 -> 672 bytes
-rw-r--r--qa/archives/dm-io.metabin0 -> 25704 bytes
-rw-r--r--qa/archives/gap.0bin0 -> 9144 bytes
-rw-r--r--qa/archives/gap.indexbin0 -> 232 bytes
-rw-r--r--qa/archives/gap.metabin0 -> 1901 bytes
-rw-r--r--qa/archives/gap2.0bin0 -> 13580 bytes
-rw-r--r--qa/archives/gap2.indexbin0 -> 272 bytes
-rw-r--r--qa/archives/gap2.metabin0 -> 2114 bytes
-rw-r--r--qa/archives/mk.gap.sh36
-rwxr-xr-xqa/archives/mk.mysql.sh63
-rw-r--r--qa/archives/moomba.pmkstat.0bin0 -> 6520 bytes
-rw-r--r--qa/archives/moomba.pmkstat.indexbin0 -> 192 bytes
-rw-r--r--qa/archives/moomba.pmkstat.metabin0 -> 1563 bytes
-rw-r--r--qa/archives/mysql-1.0bin0 -> 55480 bytes
-rw-r--r--qa/archives/mysql-1.indexbin0 -> 192 bytes
-rw-r--r--qa/archives/mysql-1.metabin0 -> 37928 bytes
-rw-r--r--qa/archives/oview-short.0bin0 -> 4708 bytes
-rw-r--r--qa/archives/oview-short.indexbin0 -> 172 bytes
-rw-r--r--qa/archives/oview-short.metabin0 -> 3683 bytes
-rw-r--r--qa/archives/rattle.0bin0 -> 1824 bytes
-rw-r--r--qa/archives/rattle.indexbin0 -> 192 bytes
-rw-r--r--qa/archives/rattle.metabin0 -> 590 bytes
-rw-r--r--qa/archives/snort-disks.0bin0 -> 8416 bytes
-rw-r--r--qa/archives/snort-disks.indexbin0 -> 192 bytes
-rw-r--r--qa/archives/snort-disks.metabin0 -> 938 bytes
-rw-r--r--qa/archives/spotinstance.0bin0 -> 203072 bytes
-rw-r--r--qa/archives/spotinstance.indexbin0 -> 192 bytes
-rw-r--r--qa/archives/spotinstance.metabin0 -> 5123 bytes
-rw-r--r--qa/archives/viewqa1.0bin0 -> 22444 bytes
-rw-r--r--qa/archives/viewqa1.indexbin0 -> 172 bytes
-rw-r--r--qa/archives/viewqa1.metabin0 -> 817 bytes
-rw-r--r--qa/archives/viewqa2.0bin0 -> 19188 bytes
-rw-r--r--qa/archives/viewqa2.indexbin0 -> 172 bytes
-rw-r--r--qa/archives/viewqa2.metabin0 -> 817 bytes
-rw-r--r--qa/archives/viewqa3.0bin0 -> 102956 bytes
-rw-r--r--qa/archives/viewqa3.indexbin0 -> 192 bytes
-rw-r--r--qa/archives/viewqa3.metabin0 -> 817 bytes
-rw-r--r--qa/archives/vldb-disks.0bin0 -> 13764 bytes
-rw-r--r--qa/archives/vldb-disks.indexbin0 -> 192 bytes
-rw-r--r--qa/archives/vldb-disks.metabin0 -> 7142 bytes
-rwxr-xr-xqa/changeversion41
-rwxr-xr-xqa/check550
-rwxr-xr-xqa/check-gitignore43
-rwxr-xr-xqa/check-group49
-rwxr-xr-xqa/chk.setup388
-rw-r--r--qa/cisco/ATM-12-021
-rw-r--r--qa/cisco/Ethernet-021
-rw-r--r--qa/cisco/Ethernet-1-027
-rw-r--r--qa/cisco/Ethernet-3-520
-rw-r--r--qa/cisco/FastEthernet-0-536
-rw-r--r--qa/cisco/FastEthernet-0-636
-rw-r--r--qa/cisco/FastEthernet-1-024
-rw-r--r--qa/cisco/Fddi-2-026
-rw-r--r--qa/cisco/GNUmakefile23
-rw-r--r--qa/cisco/GigabitEthernet-0-135
-rw-r--r--qa/cisco/Hssi-3-022
-rw-r--r--qa/cisco/Serial-022
-rw-r--r--qa/cisco/Serial-124
-rw-r--r--qa/cisco/Serial-1-0-min26
-rw-r--r--qa/cisco/Serial-1-0-sec26
-rw-r--r--qa/cisco/Vlan-128
-rw-r--r--qa/cisco/Vlan-16029
-rw-r--r--qa/cisco/Vlan-25623
-rw-r--r--qa/cisco/hugh-80059
-rw-r--r--qa/collectl/GNUmakefile17
-rw-r--r--qa/collectl/debian_sid_defaults.raw.gzbin0 -> 2356 bytes
-rw-r--r--qa/collectl/debian_sid_detailed.raw.gzbin0 -> 38262 bytes
-rw-r--r--qa/collectl/dynamic_instances.raw40
-rw-r--r--qa/collectl/missing_instances.raw38
-rw-r--r--qa/collectl/rhel6.raw.gzbin0 -> 430556 bytes
-rw-r--r--qa/collectl/some_host.raw43
-rw-r--r--qa/collectl/some_host_later.raw40
-rw-r--r--qa/collectl/truncated.raw38
-rw-r--r--qa/collectl/wrong_host.raw40
-rwxr-xr-xqa/common761
-rw-r--r--qa/common.avahi43
-rw-r--r--qa/common.check1620
-rw-r--r--qa/common.compress120
-rw-r--r--qa/common.config103
-rw-r--r--qa/common.discovery64
-rw-r--r--qa/common.filter734
-rw-r--r--qa/common.gfs2154
-rwxr-xr-xqa/common.install.cisco102
-rw-r--r--qa/common.pcpweb107
-rw-r--r--qa/common.product11
-rwxr-xr-xqa/common.python31
-rw-r--r--qa/common.qt17
-rw-r--r--qa/common.rc86
-rw-r--r--qa/common.rpm212
-rw-r--r--qa/common.secure196
-rw-r--r--qa/common.setup27
-rw-r--r--qa/common.sh41
-rwxr-xr-xqa/disk-work28
-rwxr-xr-xqa/findmetric110
-rwxr-xr-xqa/getpmcdhosts627
-rw-r--r--qa/gluster/GNUmakefile22
-rw-r--r--qa/gluster/info-multi3
-rw-r--r--qa/gluster/info-raid181
-rw-r--r--qa/gluster/info-single3
-rw-r--r--qa/gluster/profile-gv0-info3
-rw-r--r--qa/gluster/profile-raid1-info5666
-rwxr-xr-xqa/gluster/test.sh21
-rw-r--r--qa/group1031
-rwxr-xr-xqa/group-stats40
-rw-r--r--qa/interact/GNUmakefile15
-rw-r--r--qa/interact/GNUmakefile.install1
-rw-r--r--qa/interact/chart-control-testcases101
-rw-r--r--qa/interact/chart-create-edit-testcases227
-rw-r--r--qa/interact/chart-scaling-testcases53
-rw-r--r--qa/interact/export-print-testcases57
-rw-r--r--qa/interact/help-system-testcases19
-rw-r--r--qa/interact/query-testcases80
-rw-r--r--qa/interact/record-testcases56
-rw-r--r--qa/interact/search-testcases75
-rw-r--r--qa/interact/settings-testcases103
-rw-r--r--qa/interact/tab-create-edit-testcases70
-rw-r--r--qa/interact/view-create-save-testcases124
-rw-r--r--qa/linux/GNUmakefile16
-rw-r--r--qa/linux/GNUmakefile.install1
-rw-r--r--qa/linux/cgroups-root-001.tgzbin0 -> 15048 bytes
-rw-r--r--qa/linux/xfs-root-001.tgzbin0 -> 199 bytes
-rw-r--r--qa/localconfig4
-rwxr-xr-xqa/mk.localconfig55
-rwxr-xr-xqa/mk.pcpversion15
-rwxr-xr-xqa/mk.qa_hosts83
-rwxr-xr-xqa/mk.variant117
-rwxr-xr-xqa/new236
-rw-r--r--qa/nfsclient/GNUmakefile16
-rw-r--r--qa/nfsclient/mountstats.qa203
-rw-r--r--qa/nfsclient/nonfsmounts.qa36
-rw-r--r--qa/pconf/GNUmakefile18
-rw-r--r--qa/pconf/cpu/GNUmakefile17
-rw-r--r--qa/pconf/cpu/aggregate_util34
-rw-r--r--qa/pconf/cpu/excess_fpe43
-rw-r--r--qa/pconf/cpu/load_average29
-rw-r--r--qa/pconf/cpu/single_util36
-rw-r--r--qa/pconf/cpu/system_calls29
-rw-r--r--qa/pconf/cpu/system_mode45
-rw-r--r--qa/pconf/disk/GNUmakefile16
-rw-r--r--qa/pconf/disk/average_iops31
-rw-r--r--qa/pconf/disk/single_iops37
-rw-r--r--qa/pconf/filesys/GNUmakefile16
-rw-r--r--qa/pconf/filesys/buffer_cache37
-rw-r--r--qa/pconf/filesys/capacity34
-rw-r--r--qa/pconf/global/GNUmakefile16
-rw-r--r--qa/pconf/global/pcp_eoe93
-rw-r--r--qa/pconf/global/sss10
-rw-r--r--qa/pconf/memory/GNUmakefile16
-rw-r--r--qa/pconf/memory/exhausted26
-rw-r--r--qa/pconf/network/GNUmakefile16
-rw-r--r--qa/pconf/network/interface_bytes52
-rw-r--r--qa/pconf/network/interface_packets53
-rw-r--r--qa/pconf/network/tcp_dropped_conns42
-rw-r--r--qa/pconf/network/tcp_retransmit39
-rw-r--r--qa/pmdas/GNUmakefile25
-rw-r--r--qa/pmdas/GNUmakefile.install40
-rw-r--r--qa/pmdas/bigun/GNUmakefile32
-rw-r--r--qa/pmdas/bigun/GNUmakefile.install43
-rwxr-xr-xqa/pmdas/bigun/Install24
-rwxr-xr-xqa/pmdas/bigun/Remove11
-rw-r--r--qa/pmdas/bigun/bigun.c71
-rw-r--r--qa/pmdas/bigun/domain.h2
-rw-r--r--qa/pmdas/bigun/help1
-rw-r--r--qa/pmdas/bigun/pmns4
-rw-r--r--qa/pmdas/bigun/root5
-rw-r--r--qa/pmdas/broken/GNUmakefile83
-rw-r--r--qa/pmdas/broken/GNUmakefile.install97
-rwxr-xr-xqa/pmdas/broken/broken_Install30
-rwxr-xr-xqa/pmdas/broken/broken_Remove24
-rw-r--r--qa/pmdas/broken/broken_help39
-rw-r--r--qa/pmdas/broken/broken_pmda.c387
-rw-r--r--qa/pmdas/broken/broken_pmda.v1.c386
-rw-r--r--qa/pmdas/broken/broken_pmns36
-rw-r--r--qa/pmdas/broken/domain.h1
-rw-r--r--qa/pmdas/dynamic/GNUmakefile29
-rw-r--r--qa/pmdas/dynamic/GNUmakefile.install39
-rwxr-xr-xqa/pmdas/dynamic/Install16
-rwxr-xr-xqa/pmdas/dynamic/Remove14
-rw-r--r--qa/pmdas/dynamic/domain.h1
-rw-r--r--qa/pmdas/dynamic/dynamic.c420
-rw-r--r--qa/pmdas/dynamic/help25
-rw-r--r--qa/pmdas/dynamic/pmns18
-rw-r--r--qa/pmdas/dynamic/root5
-rw-r--r--qa/pmdas/slow/GNUmakefile37
-rw-r--r--qa/pmdas/slow/GNUmakefile.install5
-rwxr-xr-xqa/pmdas/slow/Install38
-rwxr-xr-xqa/pmdas/slow/Remove25
-rw-r--r--qa/pmdas/slow/pmdaslow.pl74
-rw-r--r--qa/pmdas/slow_python/GNUmakefile40
-rw-r--r--qa/pmdas/slow_python/GNUmakefile.install5
-rwxr-xr-xqa/pmdas/slow_python/Install38
-rwxr-xr-xqa/pmdas/slow_python/Remove25
-rw-r--r--qa/pmdas/slow_python/pmdaslow_python.python84
-rwxr-xr-xqa/pmlogconv/GNUmakefile44
-rw-r--r--qa/pmlogconv/libpcp.c489
-rw-r--r--qa/pmlogconv/logio.c261
-rw-r--r--qa/pmlogconv/pmlogconv.c354
-rw-r--r--qa/qa_hosts.master92
-rw-r--r--qa/qt/GNUmakefile22
-rw-r--r--qa/qt/GNUmakefile.install41
-rw-r--r--qa/qt/qmc_context/GNUmakefile27
-rw-r--r--qa/qt/qmc_context/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_context/qmc_context.cpp241
-rw-r--r--qa/qt/qmc_context/qmc_context.pro13
-rw-r--r--qa/qt/qmc_desc/GNUmakefile27
-rw-r--r--qa/qt/qmc_desc/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_desc/qmc_desc.cpp102
-rw-r--r--qa/qt/qmc_desc/qmc_desc.pro13
-rw-r--r--qa/qt/qmc_dynamic/GNUmakefile27
-rw-r--r--qa/qt/qmc_dynamic/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_dynamic/qmc_dynamic.cpp351
-rw-r--r--qa/qt/qmc_dynamic/qmc_dynamic.pro13
-rw-r--r--qa/qt/qmc_event/GNUmakefile27
-rw-r--r--qa/qt/qmc_event/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_event/qmc_event.cpp85
-rw-r--r--qa/qt/qmc_event/qmc_event.pro13
-rw-r--r--qa/qt/qmc_format/GNUmakefile27
-rw-r--r--qa/qt/qmc_format/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_format/qmc_format.cpp37
-rw-r--r--qa/qt/qmc_format/qmc_format.pro13
-rw-r--r--qa/qt/qmc_group/GNUmakefile27
-rw-r--r--qa/qt/qmc_group/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_group/qmc_group.cpp835
-rw-r--r--qa/qt/qmc_group/qmc_group.pro13
-rw-r--r--qa/qt/qmc_hosts/GNUmakefile27
-rw-r--r--qa/qt/qmc_hosts/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_hosts/qmc_hosts.cpp115
-rw-r--r--qa/qt/qmc_hosts/qmc_hosts.pro13
-rw-r--r--qa/qt/qmc_indom/GNUmakefile27
-rw-r--r--qa/qt/qmc_indom/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_indom/qmc_indom.cpp133
-rw-r--r--qa/qt/qmc_indom/qmc_indom.pro13
-rw-r--r--qa/qt/qmc_metric/GNUmakefile27
-rw-r--r--qa/qt/qmc_metric/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_metric/qmc_metric.cpp280
-rw-r--r--qa/qt/qmc_metric/qmc_metric.pro13
-rw-r--r--qa/qt/qmc_source/GNUmakefile27
-rw-r--r--qa/qt/qmc_source/GNUmakefile.install18
-rw-r--r--qa/qt/qmc_source/qmc_source.cpp126
-rw-r--r--qa/qt/qmc_source/qmc_source.pro13
-rwxr-xr-xqa/qt/setup-executables39
-rwxr-xr-xqa/recheck15
-rwxr-xr-xqa/remake88
-rw-r--r--qa/sadist/859117-rhel5.binbin0 -> 73984 bytes
-rw-r--r--qa/sadist/859117-rhel5.xml2282
-rw-r--r--qa/sadist/891688-dash-time.xml20
-rw-r--r--qa/sadist/GNUmakefile21
-rw-r--r--qa/sadist/f16-sa20.binbin0 -> 120788 bytes
-rw-r--r--qa/sadist/fche-csb6-rhel6.binbin0 -> 335700 bytes
-rw-r--r--qa/sadist/fche-csb6-rhel6.xml8599
-rw-r--r--qa/sadist/rhel5-sa20.binbin0 -> 73984 bytes
-rw-r--r--qa/sadist/smash-rhel5.xml1594
-rw-r--r--qa/sadist/smash-rhel6.xml734
-rw-r--r--qa/sanity.coverage44
-rw-r--r--qa/secure/GNUmakefile26
-rw-r--r--qa/secure/GNUmakefile.install20
-rwxr-xr-xqa/secure/crash-cred15
-rwxr-xr-xqa/secure/crash-fetch16
-rwxr-xr-xqa/secure/crash-instancereq18
-rwxr-xr-xqa/secure/crash-namereq-child19
-rwxr-xr-xqa/secure/crash-namereq-traverse19
-rwxr-xr-xqa/secure/crash-pmns-names16
-rwxr-xr-xqa/secure/crash-profile22
-rwxr-xr-xqa/secure/crash-profile-instances22
-rwxr-xr-xqa/secure/hang-pmcd26
-rwxr-xr-xqa/secure/leak-fetch19
-rwxr-xr-xqa/secure/leak-getpdu18
-rw-r--r--qa/secure/pcppdu.python650
-rwxr-xr-xqa/secure/query-proc27
-rwxr-xr-xqa/setup.051633
-rwxr-xr-xqa/show-me196
-rw-r--r--qa/src/19970807.09.54.0bin0 -> 1768 bytes
-rw-r--r--qa/src/19970807.09.54.indexbin0 -> 152 bytes
-rw-r--r--qa/src/19970807.09.54.metabin0 -> 464 bytes
-rw-r--r--qa/src/19970807.09.59.0bin0 -> 2176 bytes
-rw-r--r--qa/src/19970807.09.59.indexbin0 -> 152 bytes
-rw-r--r--qa/src/19970807.09.59.metabin0 -> 464 bytes
-rw-r--r--qa/src/20041125.0bin0 -> 346004 bytes
-rw-r--r--qa/src/20041125.indexbin0 -> 272 bytes
-rw-r--r--qa/src/20041125.metabin0 -> 13681 bytes
-rw-r--r--qa/src/20101004-trunc.0bin0 -> 190512 bytes
-rw-r--r--qa/src/20101004-trunc.indexbin0 -> 352 bytes
-rw-r--r--qa/src/20101004-trunc.metabin0 -> 46494 bytes
-rw-r--r--qa/src/20130706.0.bz2bin0 -> 478716 bytes
-rw-r--r--qa/src/20130706.indexbin0 -> 1912 bytes
-rw-r--r--qa/src/20130706.metabin0 -> 23669 bytes
-rw-r--r--qa/src/540117-short.0bin0 -> 4000 bytes
-rw-r--r--qa/src/540117-short.indexbin0 -> 232 bytes
-rw-r--r--qa/src/540117-short.metabin0 -> 5241 bytes
-rw-r--r--qa/src/541380.0bin0 -> 268 bytes
-rw-r--r--qa/src/541380.indexbin0 -> 152 bytes
-rw-r--r--qa/src/541380.metabin0 -> 270 bytes
-rw-r--r--qa/src/541380_v2.0bin0 -> 268 bytes
-rw-r--r--qa/src/541380_v2.indexbin0 -> 152 bytes
-rw-r--r--qa/src/541380_v2.metabin0 -> 351 bytes
-rw-r--r--qa/src/573184.0bin0 -> 1840 bytes
-rw-r--r--qa/src/573184.indexbin0 -> 172 bytes
-rw-r--r--qa/src/573184.metabin0 -> 408 bytes
-rw-r--r--qa/src/779246.c131
-rw-r--r--qa/src/951127.23.01.0bin0 -> 3580 bytes
-rw-r--r--qa/src/951127.23.01.indexbin0 -> 192 bytes
-rw-r--r--qa/src/951127.23.01.metabin0 -> 531 bytes
-rw-r--r--qa/src/951127.23.01_v2.0bin0 -> 3580 bytes
-rw-r--r--qa/src/951127.23.01_v2.indexbin0 -> 172 bytes
-rw-r--r--qa/src/951127.23.01_v2.metabin0 -> 629 bytes
-rw-r--r--qa/src/960624.08.17.0bin0 -> 15580 bytes
-rw-r--r--qa/src/960624.08.17.indexbin0 -> 172 bytes
-rw-r--r--qa/src/960624.08.17.metabin0 -> 8989 bytes
-rw-r--r--qa/src/960624.08.17_v2.0bin0 -> 15580 bytes
-rw-r--r--qa/src/960624.08.17_v2.indexbin0 -> 172 bytes
-rw-r--r--qa/src/960624.08.17_v2.metabin0 -> 15195 bytes
-rw-r--r--qa/src/GNUlocaldefs787
-rw-r--r--qa/src/GNUmakefile35
-rw-r--r--qa/src/GNUmakefile.install43
-rw-r--r--qa/src/ac15.0bin0 -> 2084 bytes
-rw-r--r--qa/src/ac15.indexbin0 -> 192 bytes
-rw-r--r--qa/src/ac15.metabin0 -> 1253 bytes
-rw-r--r--qa/src/ace.0bin0 -> 6592 bytes
-rw-r--r--qa/src/ace.indexbin0 -> 252 bytes
-rw-r--r--qa/src/ace.metabin0 -> 1335 bytes
-rw-r--r--qa/src/ace_v2.0bin0 -> 5776 bytes
-rw-r--r--qa/src/ace_v2.indexbin0 -> 152 bytes
-rw-r--r--qa/src/ace_v2.metabin0 -> 1978 bytes
-rw-r--r--qa/src/agenttimeout.c177
-rw-r--r--qa/src/aggrstore.c129
-rw-r--r--qa/src/all-irix-6.5.25.0bin0 -> 122892 bytes
-rw-r--r--qa/src/all-irix-6.5.25.indexbin0 -> 372 bytes
-rw-r--r--qa/src/all-irix-6.5.25.metabin0 -> 93346 bytes
-rw-r--r--qa/src/all-sles9-sp1.0bin0 -> 97892 bytes
-rw-r--r--qa/src/all-sles9-sp1.indexbin0 -> 392 bytes
-rw-r--r--qa/src/all-sles9-sp1.metabin0 -> 38879 bytes
-rw-r--r--qa/src/anon-sa.c111
-rw-r--r--qa/src/arch_a.0bin0 -> 488 bytes
-rw-r--r--qa/src/arch_a.indexbin0 -> 192 bytes
-rw-r--r--qa/src/arch_a.metabin0 -> 414 bytes
-rw-r--r--qa/src/arch_b.0bin0 -> 488 bytes
-rw-r--r--qa/src/arch_b.indexbin0 -> 192 bytes
-rw-r--r--qa/src/arch_b.metabin0 -> 414 bytes
-rw-r--r--qa/src/arch_maxfd.c145
-rw-r--r--qa/src/archinst.c292
-rw-r--r--qa/src/atomstr.c135
-rw-r--r--qa/src/babylon.percpu.0bin0 -> 93732 bytes
-rw-r--r--qa/src/babylon.percpu.indexbin0 -> 172 bytes
-rw-r--r--qa/src/babylon.percpu.metabin0 -> 710 bytes
-rw-r--r--qa/src/babylon.percpu_v2.0bin0 -> 93732 bytes
-rw-r--r--qa/src/babylon.percpu_v2.indexbin0 -> 152 bytes
-rw-r--r--qa/src/babylon.percpu_v2.metabin0 -> 941 bytes
-rw-r--r--qa/src/babylon.pmview.0bin0 -> 368772 bytes
-rw-r--r--qa/src/babylon.pmview.indexbin0 -> 232 bytes
-rw-r--r--qa/src/babylon.pmview.metabin0 -> 2507 bytes
-rw-r--r--qa/src/babylon.pmview_v2.0bin0 -> 368772 bytes
-rw-r--r--qa/src/babylon.pmview_v2.indexbin0 -> 152 bytes
-rw-r--r--qa/src/babylon.pmview_v2.metabin0 -> 3271 bytes
-rw-r--r--qa/src/badlen-0.0bin0 -> 1928 bytes
-rw-r--r--qa/src/badlen-0.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-0.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-1.0bin0 -> 1928 bytes
-rw-r--r--qa/src/badlen-1.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-1.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-10.0bin0 -> 131 bytes
-rw-r--r--qa/src/badlen-10.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-10.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-11.0bin0 -> 133 bytes
-rw-r--r--qa/src/badlen-11.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-11.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-2.0bin0 -> 260 bytes
-rw-r--r--qa/src/badlen-2.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-2.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-3.0bin0 -> 252 bytes
-rw-r--r--qa/src/badlen-3.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-3.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-4.01
-rw-r--r--qa/src/badlen-4.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-4.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-5.0bin0 -> 42 bytes
-rw-r--r--qa/src/badlen-5.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-5.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-6.0bin0 -> 1928 bytes
-rw-r--r--qa/src/badlen-6.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-6.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-7.0bin0 -> 1928 bytes
-rw-r--r--qa/src/badlen-7.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-7.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-8.0bin0 -> 1928 bytes
-rw-r--r--qa/src/badlen-8.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-8.metabin0 -> 851 bytes
-rw-r--r--qa/src/badlen-9.0bin0 -> 1932 bytes
-rw-r--r--qa/src/badlen-9.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badlen-9.metabin0 -> 840 bytes
-rw-r--r--qa/src/badloglabel.c70
-rw-r--r--qa/src/badpmcdpmid.c45
-rw-r--r--qa/src/badpmda.c126
-rw-r--r--qa/src/badti-1.0bin0 -> 1976 bytes
-rw-r--r--qa/src/badti-1.indexbin0 -> 162 bytes
-rw-r--r--qa/src/badti-1.metabin0 -> 851 bytes
-rw-r--r--qa/src/badti-2.0bin0 -> 1976 bytes
-rw-r--r--qa/src/badti-2.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badti-2.metabin0 -> 851 bytes
-rw-r--r--qa/src/badti-3.0bin0 -> 1976 bytes
-rw-r--r--qa/src/badti-3.indexbin0 -> 192 bytes
-rw-r--r--qa/src/badti-3.metabin0 -> 851 bytes
-rwxr-xr-xqa/src/batch_import.perl78
l---------qa/src/batch_import.pl1
-rw-r--r--qa/src/bigace.0bin0 -> 1197788 bytes
-rw-r--r--qa/src/bigace.indexbin0 -> 792 bytes
-rw-r--r--qa/src/bigace.metabin0 -> 74306 bytes
-rw-r--r--qa/src/bigace.pmns103
-rw-r--r--qa/src/bigace_v2.0bin0 -> 1197788 bytes
-rw-r--r--qa/src/bigace_v2.indexbin0 -> 612 bytes
-rw-r--r--qa/src/bigace_v2.metabin0 -> 75462 bytes
-rw-r--r--qa/src/binning.0bin0 -> 3580 bytes
-rw-r--r--qa/src/binning.indexbin0 -> 192 bytes
-rw-r--r--qa/src/binning.metabin0 -> 524 bytes
-rw-r--r--qa/src/bozo.client.0bin0 -> 1432 bytes
-rw-r--r--qa/src/bozo.client.indexbin0 -> 192 bytes
-rw-r--r--qa/src/bozo.client.metabin0 -> 445 bytes
-rw-r--r--qa/src/bozo.client_v2.0bin0 -> 1432 bytes
-rw-r--r--qa/src/bozo.client_v2.indexbin0 -> 172 bytes
-rw-r--r--qa/src/bozo.client_v2.metabin0 -> 585 bytes
-rw-r--r--qa/src/bozo.client_v2.meta.bad.1bin0 -> 585 bytes
-rw-r--r--qa/src/bozo.client_v2.meta.bad.2bin0 -> 585 bytes
-rw-r--r--qa/src/bug.0bin0 -> 2328 bytes
-rw-r--r--qa/src/bug.indexbin0 -> 192 bytes
-rw-r--r--qa/src/bug.metabin0 -> 496 bytes
-rw-r--r--qa/src/bug1057.0bin0 -> 167960 bytes
-rw-r--r--qa/src/bug1057.indexbin0 -> 232 bytes
-rw-r--r--qa/src/bug1057.metabin0 -> 22122 bytes
-rw-r--r--qa/src/bug_v2.0bin0 -> 2328 bytes
-rw-r--r--qa/src/bug_v2.indexbin0 -> 172 bytes
-rw-r--r--qa/src/bug_v2.metabin0 -> 634 bytes
-rw-r--r--qa/src/changeinst.0bin0 -> 2200 bytes
-rw-r--r--qa/src/changeinst.indexbin0 -> 312 bytes
-rw-r--r--qa/src/changeinst.metabin0 -> 1416 bytes
-rw-r--r--qa/src/check_fault_injection.c56
-rw-r--r--qa/src/check_import.c175
-rwxr-xr-xqa/src/check_import.perl139
l---------qa/src/check_import.pl1
l---------qa/src/check_import.py1
-rwxr-xr-xqa/src/check_import.python69
-rw-r--r--qa/src/check_import_name.c47
-rw-r--r--qa/src/chk_memleak.c141
-rw-r--r--qa/src/chk_metric_types.c313
-rw-r--r--qa/src/chkacc1.c165
-rw-r--r--qa/src/chkacc2.c175
-rw-r--r--qa/src/chkacc3.c240
-rw-r--r--qa/src/chkacc4.c198
-rw-r--r--qa/src/chkconnect.c180
-rw-r--r--qa/src/chkctx2.c205
-rw-r--r--qa/src/chkhelp.c107
-rw-r--r--qa/src/chknumval.c289
-rw-r--r--qa/src/chkopenlog.c54
-rw-r--r--qa/src/chkoptfetch.c285
-rw-r--r--qa/src/chkputlogresult.c183
-rw-r--r--qa/src/chktrim.c107
-rw-r--r--qa/src/churnctx.c429
-rw-r--r--qa/src/clientid.c91
-rw-r--r--qa/src/compare.c114
-rw-r--r--qa/src/config.bar18
-rw-r--r--qa/src/config.bigbin14
-rw-r--r--qa/src/config.dodgey-all9
-rw-r--r--qa/src/config.dodgey-mixed13
-rw-r--r--qa/src/config.dodgey-some9
-rw-r--r--qa/src/config.foo11
-rw-r--r--qa/src/config1.interp7
-rw-r--r--qa/src/config2.interp7
-rw-r--r--qa/src/conn20070309.0bin0 -> 299620 bytes
-rw-r--r--qa/src/conn20070309.indexbin0 -> 212 bytes
-rw-r--r--qa/src/conn20070309.metabin0 -> 236 bytes
-rw-r--r--qa/src/context_fd_leak.c111
-rw-r--r--qa/src/context_test.c281
-rw-r--r--qa/src/count-mark.0bin0 -> 548648 bytes
-rw-r--r--qa/src/count-mark.indexbin0 -> 272 bytes
-rw-r--r--qa/src/count-mark.metabin0 -> 322 bytes
-rw-r--r--qa/src/crashpmcd.c85
-rw-r--r--qa/src/defctx.c232
-rw-r--r--qa/src/descreqX2.c100
-rw-r--r--qa/src/disk_test.c144
-rw-r--r--qa/src/drain-server.c127
-rw-r--r--qa/src/dumb_pmda.c81
-rw-r--r--qa/src/endian.c130
-rw-r--r--qa/src/eofarch.c208
-rw-r--r--qa/src/eol.c198
-rw-r--r--qa/src/err.c57
-rw-r--r--qa/src/err_v1.0bin0 -> 516 bytes
-rw-r--r--qa/src/err_v1.dump68
-rw-r--r--qa/src/err_v1.indexbin0 -> 192 bytes
-rw-r--r--qa/src/err_v1.metabin0 -> 398 bytes
-rw-r--r--qa/src/eventrec-old.0bin0 -> 1184 bytes
-rw-r--r--qa/src/eventrec-old.indexbin0 -> 172 bytes
-rw-r--r--qa/src/eventrec-old.metabin0 -> 975 bytes
-rw-r--r--qa/src/eventrec.0bin0 -> 4176 bytes
-rw-r--r--qa/src/eventrec.indexbin0 -> 192 bytes
-rw-r--r--qa/src/eventrec.metabin0 -> 2074 bytes
-rw-r--r--qa/src/exercise.c197
-rw-r--r--qa/src/exercise_fault.c79
-rw-r--r--qa/src/exerlock.c58
-rw-r--r--qa/src/exertz.c249
-rw-r--r--qa/src/fcsw_indom.0bin0 -> 7140 bytes
-rw-r--r--qa/src/fcsw_indom.indexbin0 -> 192 bytes
-rw-r--r--qa/src/fcsw_indom.metabin0 -> 2343 bytes
-rw-r--r--qa/src/fetchpdu.c112
-rw-r--r--qa/src/fetchrate.c121
-rwxr-xr-xqa/src/fixhosts47
-rw-r--r--qa/src/getconfig.c55
-rw-r--r--qa/src/getcontexthost.c121
-rw-r--r--qa/src/getoptions.c257
-rw-r--r--qa/src/gmt-boring.0bin0 -> 416 bytes
-rw-r--r--qa/src/gmt-boring.indexbin0 -> 172 bytes
-rw-r--r--qa/src/gmt-boring.metabin0 -> 402 bytes
-rwxr-xr-xqa/src/grind-tools387
-rw-r--r--qa/src/grind_conv.c192
-rw-r--r--qa/src/grind_ctx.c161
-rw-r--r--qa/src/hashwalk.c69
-rw-r--r--qa/src/hex2nbo.c113
-rw-r--r--qa/src/hp-mib.c202
-rw-r--r--qa/src/hrunpack.c479
-rw-r--r--qa/src/import_limit_test.perl72
l---------qa/src/import_limit_test.pl1
-rw-r--r--qa/src/indom.c310
-rw-r--r--qa/src/interp0.c277
-rw-r--r--qa/src/interp1.c248
-rw-r--r--qa/src/interp2.c198
-rw-r--r--qa/src/interp3.c425
-rw-r--r--qa/src/interp4.c302
-rw-r--r--qa/src/interp_bug.c349
-rw-r--r--qa/src/interp_bug2.c417
-rw-r--r--qa/src/interpmark.0bin0 -> 140712 bytes
-rw-r--r--qa/src/interpmark.indexbin0 -> 492 bytes
-rw-r--r--qa/src/interpmark.metabin0 -> 4798 bytes
-rw-r--r--qa/src/iostat26
-rw-r--r--qa/src/iostat-c11
-rw-r--r--qa/src/iostat-d17
-rw-r--r--qa/src/iostat-d-k17
-rw-r--r--qa/src/iostat-d-m17
-rw-r--r--qa/src/iostat-p-ALL137
-rw-r--r--qa/src/iostat-t29
-rw-r--r--qa/src/iostat-t.ISO29
-rw-r--r--qa/src/iostat-x26
-rw-r--r--qa/src/iostat-z23
-rw-r--r--qa/src/iostat-z-p-ALL36
-rw-r--r--qa/src/ipc.c303
-rwxr-xr-xqa/src/ipcs_clear39
-rw-r--r--qa/src/kenj-pc-1.0bin0 -> 310264 bytes
-rw-r--r--qa/src/kenj-pc-1.indexbin0 -> 252 bytes
-rw-r--r--qa/src/kenj-pc-1.metabin0 -> 1567 bytes
-rw-r--r--qa/src/kenj-pc-2.0bin0 -> 58168 bytes
-rw-r--r--qa/src/kenj-pc-2.config10
-rw-r--r--qa/src/kenj-pc-2.indexbin0 -> 852 bytes
-rw-r--r--qa/src/kenj-pc-2.metabin0 -> 5599 bytes
-rw-r--r--qa/src/kenj-pc-diskstat.0bin0 -> 4408 bytes
-rw-r--r--qa/src/kenj-pc-diskstat.indexbin0 -> 192 bytes
-rw-r--r--qa/src/kenj-pc-diskstat.metabin0 -> 1022 bytes
-rw-r--r--qa/src/keycache.c278
-rw-r--r--qa/src/keycache2.c412
-rw-r--r--qa/src/killparent.c13
-rw-r--r--qa/src/late.0bin0 -> 5332 bytes
-rw-r--r--qa/src/late.indexbin0 -> 192 bytes
-rw-r--r--qa/src/late.metabin0 -> 638 bytes
-rw-r--r--qa/src/logcontrol.c260
-rw-r--r--qa/src/logsummary-bug.0bin0 -> 236 bytes
-rw-r--r--qa/src/logsummary-bug.indexbin0 -> 172 bytes
-rw-r--r--qa/src/logsummary-bug.metabin0 -> 197 bytes
-rwxr-xr-xqa/src/make.dodgey35
-rw-r--r--qa/src/mark-bug.0bin0 -> 26296 bytes
-rw-r--r--qa/src/mark-bug.c386
-rw-r--r--qa/src/mark-bug.indexbin0 -> 272 bytes
-rw-r--r--qa/src/mark-bug.metabin0 -> 1347 bytes
-rw-r--r--qa/src/markmerge.0bin0 -> 6648 bytes
-rw-r--r--qa/src/markmerge.indexbin0 -> 232 bytes
-rw-r--r--qa/src/markmerge.metabin0 -> 747 bytes
-rw-r--r--qa/src/matchInstanceName.c36
-rwxr-xr-xqa/src/memcachestats.pl66
-rw-r--r--qa/src/mirage-1.0bin0 -> 3969 bytes
-rw-r--r--qa/src/mirage-1.indexbin0 -> 272 bytes
-rw-r--r--qa/src/mirage-1.metabin0 -> 1333 bytes
-rw-r--r--qa/src/mirage-2.0bin0 -> 2673 bytes
-rw-r--r--qa/src/mirage-2.indexbin0 -> 332 bytes
-rw-r--r--qa/src/mirage-2.metabin0 -> 1736 bytes
-rw-r--r--qa/src/mirage.0bin0 -> 3992 bytes
-rw-r--r--qa/src/mirage.indexbin0 -> 532 bytes
-rw-r--r--qa/src/mirage.metabin0 -> 2731 bytes
-rwxr-xr-xqa/src/mkarch-all48
-rwxr-xr-xqa/src/mkbadlen110
-rwxr-xr-xqa/src/mkbadti107
-rwxr-xr-xqa/src/mkbig178
-rwxr-xr-xqa/src/mkeventrec22
-rw-r--r--qa/src/mkfiles.c63
-rwxr-xr-xqa/src/mkinterpmark148
-rwxr-xr-xqa/src/mkmirage35
-rwxr-xr-xqa/src/mkmultihost65
-rwxr-xr-xqa/src/mknuma37
-rwxr-xr-xqa/src/mkpermslist209
-rwxr-xr-xqa/src/mkproc31
-rwxr-xr-xqa/src/mkrewrite33
-rwxr-xr-xqa/src/mksa-sysstat44
-rwxr-xr-xqa/src/mksample_expr32
-rwxr-xr-xqa/src/mktzchange35
-rw-r--r--qa/src/mmv_genstats.c131
-rw-r--r--qa/src/mmv_instances.c92
-rw-r--r--qa/src/mmv_noinit.c128
-rw-r--r--qa/src/mmv_nostats.c23
-rw-r--r--qa/src/mmv_poke.c94
-rw-r--r--qa/src/moomba.client.0bin0 -> 2144 bytes
-rw-r--r--qa/src/moomba.client.indexbin0 -> 192 bytes
-rw-r--r--qa/src/moomba.client.metabin0 -> 843 bytes
-rw-r--r--qa/src/moomba.pmkstat.0bin0 -> 6520 bytes
-rw-r--r--qa/src/moomba.pmkstat.indexbin0 -> 192 bytes
-rw-r--r--qa/src/moomba.pmkstat.metabin0 -> 1563 bytes
-rw-r--r--qa/src/multi-vm00.0bin0 -> 12684 bytes
-rw-r--r--qa/src/multi-vm00.indexbin0 -> 192 bytes
-rw-r--r--qa/src/multi-vm00.metabin0 -> 4162 bytes
-rw-r--r--qa/src/multi-vm01.0bin0 -> 12584 bytes
-rw-r--r--qa/src/multi-vm01.indexbin0 -> 192 bytes
-rw-r--r--qa/src/multi-vm01.metabin0 -> 4135 bytes
-rw-r--r--qa/src/multi-vm02.0bin0 -> 12684 bytes
-rw-r--r--qa/src/multi-vm02.indexbin0 -> 192 bytes
-rw-r--r--qa/src/multi-vm02.metabin0 -> 4162 bytes
-rw-r--r--qa/src/multi-vm03.0bin0 -> 12604 bytes
-rw-r--r--qa/src/multi-vm03.indexbin0 -> 192 bytes
-rw-r--r--qa/src/multi-vm03.metabin0 -> 4128 bytes
-rw-r--r--qa/src/multifetch.c202
-rw-r--r--qa/src/multithread0.c68
-rw-r--r--qa/src/multithread1.c228
-rw-r--r--qa/src/multithread2.c209
-rw-r--r--qa/src/multithread3.c222
-rw-r--r--qa/src/multithread4.c137
-rw-r--r--qa/src/multithread5.c270
-rw-r--r--qa/src/multithread6.c299
-rw-r--r--qa/src/multithread7.c342
-rw-r--r--qa/src/multithread8.c285
-rw-r--r--qa/src/multithread9.c387
-rw-r--r--qa/src/nameall.c179
-rw-r--r--qa/src/naslog.0bin0 -> 848264 bytes
-rw-r--r--qa/src/naslog.indexbin0 -> 372 bytes
-rw-r--r--qa/src/naslog.metabin0 -> 5812 bytes
-rw-r--r--qa/src/new_mysql.0bin0 -> 856 bytes
-rw-r--r--qa/src/new_mysql.indexbin0 -> 172 bytes
-rw-r--r--qa/src/new_mysql.metabin0 -> 627 bytes
-rw-r--r--qa/src/new_snmp.0bin0 -> 4764 bytes
-rw-r--r--qa/src/new_snmp.indexbin0 -> 172 bytes
-rw-r--r--qa/src/new_snmp.metabin0 -> 4762 bytes
-rw-r--r--qa/src/node_archive.0bin0 -> 704 bytes
-rw-r--r--qa/src/node_archive.indexbin0 -> 252 bytes
-rw-r--r--qa/src/node_archive.metabin0 -> 996 bytes
-rw-r--r--qa/src/nullinst.c115
-rw-r--r--qa/src/numa.0bin0 -> 14404 bytes
-rw-r--r--qa/src/numa.indexbin0 -> 212 bytes
-rw-r--r--qa/src/numa.metabin0 -> 3238 bytes
-rw-r--r--qa/src/numberstr.c29
-rw-r--r--qa/src/nvidia-ml.c216
-rw-r--r--qa/src/obs.c33
-rw-r--r--qa/src/ok-bigbin.0bin0 -> 492288 bytes
-rw-r--r--qa/src/ok-bigbin.indexbin0 -> 272 bytes
-rw-r--r--qa/src/ok-bigbin.metabin0 -> 1271 bytes
-rw-r--r--qa/src/ok-foo.0bin0 -> 1976 bytes
-rw-r--r--qa/src/ok-foo.indexbin0 -> 192 bytes
-rw-r--r--qa/src/ok-foo.metabin0 -> 851 bytes
-rw-r--r--qa/src/ok-mv-bigbin.0bin0 -> 49984 bytes
-rw-r--r--qa/src/ok-mv-bigbin.1bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.2bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.3bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.4bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.5bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.6bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.7bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.8bin0 -> 49824 bytes
-rw-r--r--qa/src/ok-mv-bigbin.9bin0 -> 44904 bytes
-rw-r--r--qa/src/ok-mv-bigbin.indexbin0 -> 372 bytes
-rw-r--r--qa/src/ok-mv-bigbin.metabin0 -> 1271 bytes
-rw-r--r--qa/src/ok-mv-foo.0bin0 -> 916 bytes
-rw-r--r--qa/src/ok-mv-foo.1bin0 -> 760 bytes
-rw-r--r--qa/src/ok-mv-foo.2bin0 -> 548 bytes
-rw-r--r--qa/src/ok-mv-foo.indexbin0 -> 232 bytes
-rw-r--r--qa/src/ok-mv-foo.metabin0 -> 851 bytes
-rw-r--r--qa/src/ok-noti-bigbin.0bin0 -> 492288 bytes
-rw-r--r--qa/src/ok-noti-bigbin.metabin0 -> 1271 bytes
-rw-r--r--qa/src/ok-truncbin.0bin0 -> 204800 bytes
-rw-r--r--qa/src/ok-truncbin.indexbin0 -> 272 bytes
-rw-r--r--qa/src/ok-truncbin.metabin0 -> 1271 bytes
-rw-r--r--qa/src/old_xfs.0bin0 -> 76060 bytes
-rw-r--r--qa/src/old_xfs.indexbin0 -> 192 bytes
-rw-r--r--qa/src/old_xfs.metabin0 -> 11011 bytes
-rw-r--r--qa/src/omen.client.0bin0 -> 1876 bytes
-rw-r--r--qa/src/omen.client.indexbin0 -> 192 bytes
-rw-r--r--qa/src/omen.client.metabin0 -> 805 bytes
-rw-r--r--qa/src/papi.c97
-rw-r--r--qa/src/parsehostattrs.c65
-rw-r--r--qa/src/parsehostspec.c46
-rw-r--r--qa/src/parseinterval.c29
-rw-r--r--qa/src/parsemetricspec.c43
-rw-r--r--qa/src/pcp-free.0bin0 -> 14784 bytes
-rw-r--r--qa/src/pcp-free.indexbin0 -> 172 bytes
-rw-r--r--qa/src/pcp-free.metabin0 -> 3174 bytes
-rw-r--r--qa/src/pcp-numastat-1-node.0bin0 -> 1192 bytes
-rw-r--r--qa/src/pcp-numastat-1-node.indexbin0 -> 172 bytes
-rw-r--r--qa/src/pcp-numastat-1-node.metabin0 -> 552 bytes
-rw-r--r--qa/src/pcp-uptime.0bin0 -> 732 bytes
-rw-r--r--qa/src/pcp-uptime.indexbin0 -> 172 bytes
-rw-r--r--qa/src/pcp-uptime.metabin0 -> 381 bytes
-rw-r--r--qa/src/pcp_lite_crash.c132
-rw-r--r--qa/src/pcpcmd.0bin0 -> 1412 bytes
-rw-r--r--qa/src/pcpcmd.indexbin0 -> 192 bytes
-rw-r--r--qa/src/pcpcmd.metabin0 -> 2035 bytes
-rw-r--r--qa/src/pdu-server.c768
-rw-r--r--qa/src/pducheck.c1512
-rw-r--r--qa/src/pducrash.c1278
-rw-r--r--qa/src/permfetch.c224
-rw-r--r--qa/src/permslist16
-rw-r--r--qa/src/pmatop-log.0bin0 -> 176352 bytes
-rw-r--r--qa/src/pmatop-log.folio9
-rw-r--r--qa/src/pmatop-log.indexbin0 -> 212 bytes
-rw-r--r--qa/src/pmatop-log.metabin0 -> 17317 bytes
-rw-r--r--qa/src/pmcdgone.c414
-rw-r--r--qa/src/pmconvscale.c146
-rw-r--r--qa/src/pmdacache.c102
-rw-r--r--qa/src/pmdaqueue.c309
-rw-r--r--qa/src/pmdashutdown.c60
-rw-r--r--qa/src/pmlcmacro.c59
-rw-r--r--qa/src/pmnsinarchives.c179
-rw-r--r--qa/src/pmnsunload.c144
-rw-r--r--qa/src/pmprintf.c51
-rw-r--r--qa/src/pmsocks_objstyle.c184
-rw-r--r--qa/src/proc.0bin0 -> 56329 bytes
-rw-r--r--qa/src/proc.indexbin0 -> 192 bytes
-rw-r--r--qa/src/proc.metabin0 -> 28161 bytes
-rw-r--r--qa/src/proc_test.c624
-rw-r--r--qa/src/pthread_barrier.h86
-rw-r--r--qa/src/pv.c77
-rw-r--r--qa/src/pyapi.0bin0 -> 155208 bytes
-rw-r--r--qa/src/pyapi.indexbin0 -> 232 bytes
-rw-r--r--qa/src/pyapi.metabin0 -> 41830 bytes
-rw-r--r--qa/src/qa_test.c7
-rw-r--r--qa/src/qa_timezone.c37
-rw-r--r--qa/src/rattle.0bin0 -> 1824 bytes
-rw-r--r--qa/src/rattle.indexbin0 -> 212 bytes
-rw-r--r--qa/src/rattle.metabin0 -> 590 bytes
-rw-r--r--qa/src/read-bf.c106
-rw-r--r--qa/src/recon.c123
-rw-r--r--qa/src/record-setarg.c69
-rw-r--r--qa/src/record.c120
-rw-r--r--qa/src/reduce-1.0bin0 -> 50932 bytes
-rw-r--r--qa/src/reduce-1.indexbin0 -> 192 bytes
-rw-r--r--qa/src/reduce-1.metabin0 -> 2074 bytes
-rw-r--r--qa/src/reduce-2.0bin0 -> 50932 bytes
-rw-r--r--qa/src/reduce-2.indexbin0 -> 192 bytes
-rw-r--r--qa/src/reduce-2.metabin0 -> 2074 bytes
-rw-r--r--qa/src/reduce.config21
-rw-r--r--qa/src/rewrite.0bin0 -> 3437 bytes
-rw-r--r--qa/src/rewrite.indexbin0 -> 212 bytes
-rw-r--r--qa/src/rewrite.metabin0 -> 1727 bytes
-rw-r--r--qa/src/root_irix2114
-rw-r--r--qa/src/root_pmns2146
-rw-r--r--qa/src/rtimetest.c159
-rw-r--r--qa/src/sa-sysstat-10.0.1bin0 -> 267596 bytes
-rw-r--r--qa/src/sa-sysstat-10.0.5bin0 -> 383412 bytes
-rw-r--r--qa/src/sa-sysstat-10.2.0bin0 -> 815288 bytes
-rw-r--r--qa/src/sa-sysstat-9.0.4bin0 -> 392172 bytes
-rw-r--r--qa/src/sa-sysstat-9.0.6bin0 -> 263780 bytes
-rw-r--r--qa/src/sa-sysstat-9.0.6.1bin0 -> 282588 bytes
-rw-r--r--qa/src/sa-sysstat-9.1.7bin0 -> 284012 bytes
-rw-r--r--qa/src/sample-secs.0bin0 -> 2532 bytes
-rw-r--r--qa/src/sample-secs.indexbin0 -> 172 bytes
-rw-r--r--qa/src/sample-secs.metabin0 -> 465 bytes
-rw-r--r--qa/src/sample_expr.0bin0 -> 6005 bytes
-rw-r--r--qa/src/sample_expr.indexbin0 -> 192 bytes
-rw-r--r--qa/src/sample_expr.metabin0 -> 1305 bytes
-rw-r--r--qa/src/scale.c209
-rw-r--r--qa/src/section-a.0bin0 -> 46764 bytes
-rw-r--r--qa/src/section-a.indexbin0 -> 252 bytes
-rw-r--r--qa/src/section-a.metabin0 -> 2906 bytes
-rw-r--r--qa/src/section-b.0bin0 -> 46764 bytes
-rw-r--r--qa/src/section-b.indexbin0 -> 252 bytes
-rw-r--r--qa/src/section-b.metabin0 -> 2906 bytes
-rw-r--r--qa/src/section-c.0bin0 -> 756 bytes
-rw-r--r--qa/src/section-c.indexbin0 -> 192 bytes
-rw-r--r--qa/src/section-c.metabin0 -> 1039 bytes
-rw-r--r--qa/src/section-d.0bin0 -> 46764 bytes
-rw-r--r--qa/src/section-d.indexbin0 -> 252 bytes
-rw-r--r--qa/src/section-d.metabin0 -> 2906 bytes
-rw-r--r--qa/src/sgi.bfbin0 -> 8 bytes
-rwxr-xr-xqa/src/show-args11
-rw-r--r--qa/src/simple-resave.csv5
-rw-r--r--qa/src/simple-resave.xlsxbin0 -> 7962 bytes
-rw-r--r--qa/src/simple.csv5
-rw-r--r--qa/src/simple.odsbin0 -> 9018 bytes
-rw-r--r--qa/src/simple.sxcbin0 -> 8881 bytes
-rw-r--r--qa/src/simple.xlsbin0 -> 6144 bytes
-rw-r--r--qa/src/simple.xlsxbin0 -> 4793 bytes
-rw-r--r--qa/src/slow.0bin0 -> 453852 bytes
-rw-r--r--qa/src/slow.indexbin0 -> 252 bytes
-rw-r--r--qa/src/slow.metabin0 -> 352 bytes
-rw-r--r--qa/src/slow_af.c152
-rw-r--r--qa/src/snort-disks.0bin0 -> 8416 bytes
-rw-r--r--qa/src/snort-disks.indexbin0 -> 192 bytes
-rw-r--r--qa/src/snort-disks.metabin0 -> 938 bytes
-rw-r--r--qa/src/store.c232
-rw-r--r--qa/src/storepast.c134
-rw-r--r--qa/src/storepdu.c104
-rw-r--r--qa/src/stripmark.c78
-rw-r--r--qa/src/t_fetch.c71
-rw-r--r--qa/src/tabort.c31
-rw-r--r--qa/src/template.c316
l---------qa/src/test_mmv.py1
-rwxr-xr-xqa/src/test_mmv.python109
l---------qa/src/test_pcp.py1
-rwxr-xr-xqa/src/test_pcp.python481
l---------qa/src/test_pcp_getopts.py1
-rwxr-xr-xqa/src/test_pcp_getopts.python113
l---------qa/src/test_pcp_options.py1
-rwxr-xr-xqa/src/test_pcp_options.python96
l---------qa/src/test_pcp_time.py1
-rwxr-xr-xqa/src/test_pcp_time.python33
l---------qa/src/test_pmcc.py1
-rw-r--r--qa/src/test_pmcc.python140
l---------qa/src/test_pmi.py1
-rwxr-xr-xqa/src/test_pmi.python108
l---------qa/src/test_webapi.py1
-rw-r--r--qa/src/test_webapi.python131
-rw-r--r--qa/src/tiny.pmns15
-rw-r--r--qa/src/torture-eol.c249
-rw-r--r--qa/src/torture_api.c516
-rw-r--r--qa/src/torture_cache.c599
-rw-r--r--qa/src/torture_indom.c374
-rw-r--r--qa/src/torture_logmeta.c350
-rw-r--r--qa/src/torture_pmns.c495
-rw-r--r--qa/src/torture_trace.c156
-rw-r--r--qa/src/tstate.c78
-rw-r--r--qa/src/tzchange-10-a.0bin0 -> 436 bytes
-rw-r--r--qa/src/tzchange-10-a.indexbin0 -> 172 bytes
-rw-r--r--qa/src/tzchange-10-a.metabin0 -> 403 bytes
-rw-r--r--qa/src/tzchange-10-b.0bin0 -> 436 bytes
-rw-r--r--qa/src/tzchange-10-b.indexbin0 -> 172 bytes
-rw-r--r--qa/src/tzchange-10-b.metabin0 -> 403 bytes
-rw-r--r--qa/src/tzchange-11-a.0bin0 -> 436 bytes
-rw-r--r--qa/src/tzchange-11-a.indexbin0 -> 172 bytes
-rw-r--r--qa/src/tzchange-11-a.metabin0 -> 403 bytes
-rw-r--r--qa/src/tzchange-11-b.0bin0 -> 436 bytes
-rw-r--r--qa/src/tzchange-11-b.indexbin0 -> 172 bytes
-rw-r--r--qa/src/tzchange-11-b.metabin0 -> 403 bytes
-rw-r--r--qa/src/tzchange-12-a.0bin0 -> 436 bytes
-rw-r--r--qa/src/tzchange-12-a.indexbin0 -> 172 bytes
-rw-r--r--qa/src/tzchange-12-a.metabin0 -> 403 bytes
-rw-r--r--qa/src/tzchange-12-b.0bin0 -> 436 bytes
-rw-r--r--qa/src/tzchange-12-b.indexbin0 -> 172 bytes
-rw-r--r--qa/src/tzchange-12-b.metabin0 -> 403 bytes
-rw-r--r--qa/src/tztest.c81
-rw-r--r--qa/src/unpack.c479
-rw-r--r--qa/src/username.c33
-rw-r--r--qa/src/uwrap.0bin0 -> 5088 bytes
-rw-r--r--qa/src/uwrap.config8
-rw-r--r--qa/src/uwrap.indexbin0 -> 172 bytes
-rw-r--r--qa/src/uwrap.metabin0 -> 408 bytes
-rw-r--r--qa/src/versiondefs18
-rw-r--r--qa/src/vldb-disks.0bin0 -> 13764 bytes
-rw-r--r--qa/src/vldb-disks.indexbin0 -> 192 bytes
-rw-r--r--qa/src/vldb-disks.metabin0 -> 7141 bytes
-rw-r--r--qa/src/whichtimezone.c43
-rw-r--r--qa/src/wrap.0bin0 -> 688 bytes
-rw-r--r--qa/src/wrap.config8
-rw-r--r--qa/src/wrap.indexbin0 -> 172 bytes
-rw-r--r--qa/src/wrap.metabin0 -> 407 bytes
-rw-r--r--qa/src/wrap_int.c120
-rw-r--r--qa/src/write-bf.c106
-rw-r--r--qa/src/xarch.c425
-rw-r--r--qa/src/xbug1.0bin0 -> 512 bytes
-rw-r--r--qa/src/xbug1.indexbin0 -> 192 bytes
-rw-r--r--qa/src/xbug1.metabin0 -> 799 bytes
-rw-r--r--qa/src/xlog.c230
-rw-r--r--qa/src/xmktime.c68
-rw-r--r--qa/src/xval.c525
-rw-r--r--qa/src/xxx.c63
-rw-r--r--qa/valgrind-suppress104
-rw-r--r--qa/valgrind-suppress-3.6.0.SVN-Debian75
-rw-r--r--qa/valgrind-suppress-3.6.123
-rw-r--r--qa/views/006-015
-rw-r--r--qa/views/006-025
-rw-r--r--qa/views/006-035
-rw-r--r--qa/views/006-0416
-rw-r--r--qa/views/006-056
-rw-r--r--qa/views/AntiAliasing23
-rw-r--r--qa/views/GNUmakefile17
-rw-r--r--qa/views/GNUmakefile.install1
-rw-r--r--qa/views/NoSuchHost6
-rw-r--r--qa/views/RotateColors54
-rw-r--r--qa/views/ScaleManual8
-rw-r--r--qa/views/SpotInstances5
-rwxr-xr-xqa/xlate_2_new_pmns36
2659 files changed, 364531 insertions, 0 deletions
diff --git a/qa/000 b/qa/000
new file mode 100755
index 0000000..fa0e1b8
--- /dev/null
+++ b/qa/000
@@ -0,0 +1,59 @@
+#! /bin/sh
+# PCP QA Test No. 000
+# check how many processes we have running and their arguments
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# check PMCS processes
+rm -f $tmp.err
+# pmdaoracle is optional, so skip it and other optional ones
+ps $PCP_PS_ALL_FLAGS \
+| _filter_optional_pmdas \
+| sed \
+ -e '/dbpmda/d' \
+ -e '/<defunct>/d' \
+| $PCP_AWK_PROG '
+$7 == "TIME" || $10 == "TIME" { next }
+ { want = 0
+ psargs = 0
+ for (i = 12; i >= 7; i--) {
+ # most ps variants have TIME as N:NN
+ if ($i ~ /[0-9]:[0-9][0-9]$/) {
+ psargs=i+1
+ break
+ }
+ # darwin ps has TIME as N:NN.NN
+ if ($i ~ /[0-9]:[0-9][0-9]\.[0-9][0-9]$/) {
+ psargs=i+1
+ break
+ }
+ }
+ if (psargs == 0) {
+ print "Error: cannot find psargs in this ps line" >"'$tmp.err'"
+ print $0 >"'$tmp.err'"
+ next
+ }
+ }
+$psargs ~ /pmcd/ { want = 1 }
+$psargs ~ /pmda/ { want = 1 }
+want == 1 { print $psargs }' \
+| sed \
+ -e 's;.*/\([^/]*\);\1;' \
+| LC_COLLATE=POSIX sort
+
+if [ -s $tmp.err ]
+then
+ echo
+ echo "Warnings ..."
+ cat $tmp.err
+fi
diff --git a/qa/000.out b/qa/000.out
new file mode 100644
index 0000000..1c73c56
--- /dev/null
+++ b/qa/000.out
@@ -0,0 +1,3 @@
+QA output created by 000
+pmcd
+pmdasample
diff --git a/qa/001 b/qa/001
new file mode 100755
index 0000000..6f7711b
--- /dev/null
+++ b/qa/001
@@ -0,0 +1,17 @@
+#!/bin/sh
+# PCP QA Test No. 001
+# exercise the PDU encode/decode ... no PMCD involvement
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+src/pducheck
diff --git a/qa/001.out b/qa/001.out
new file mode 100644
index 0000000..d9db284
--- /dev/null
+++ b/qa/001.out
@@ -0,0 +1,16 @@
+QA output created by 001
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 0 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 1 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 2 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 3 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 4 +
++++++++++++++++++++++++++++
diff --git a/qa/002 b/qa/002
new file mode 100755
index 0000000..23012f3
--- /dev/null
+++ b/qa/002
@@ -0,0 +1,17 @@
+#! /bin/sh
+# PCP QA Test No. 002
+# simplest possible verification of a pmcd and agent
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+pminfo -v sample 2>&1 | egrep -v 'sample\.dynamic|sample\.sysinfo|sample\.darkness|sample\.secret|sample\.event\.'
diff --git a/qa/002.out b/qa/002.out
new file mode 100644
index 0000000..210fe8e
--- /dev/null
+++ b/qa/002.out
@@ -0,0 +1,6 @@
+QA output created by 002
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
diff --git a/qa/003 b/qa/003
new file mode 100755
index 0000000..1f311d9
--- /dev/null
+++ b/qa/003
@@ -0,0 +1,249 @@
+#! /bin/sh
+# PCP QA Test No. 003
+# Check that we get the expected metrics failing for each OS
+# Will need to be updated with every kernel pmda change
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+case "$PCP_PLATFORM"
+in
+ linux|darwin|solaris)
+ ;;
+ *)
+ echo "Need to hand-craft the exceptions list in ./003 for this platform"
+ exit 1
+ ;;
+esac
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# Expected error messages
+#
+nosupport="pmFetch: Metric not supported"
+unknown="pmLookupDesc: Unknown or illegal metric identifier"
+unavailable="pmFetch: no value available"
+explicit="pmFetch: Explicit instance identifier(s) required"
+missing="pmFetch: Missing metric value(s)"
+nyi="pmFetch: Functionality not yet implemented"
+
+pmie_filter()
+{
+ sed -e "/pmcd\.pmie\.actions: $unavailable/d" \
+ -e "/pmcd\.pmie\.configfile: $unavailable/d" \
+ -e "/pmcd\.pmie\.eval\.actual: $unavailable/d" \
+ -e "/pmcd\.pmie\.eval\.expected: $unavailable/d" \
+ -e "/pmcd\.pmie\.eval\.false: $unavailable/d" \
+ -e "/pmcd\.pmie\.eval\.true: $unavailable/d" \
+ -e "/pmcd\.pmie\.eval\.unknown: $unavailable/d" \
+ -e "/pmcd\.pmie\.logfile: $unavailable/d" \
+ -e "/pmcd\.pmie\.numrules: $unavailable/d" \
+ -e "/pmcd\.pmie\.pmcd_host: $unavailable/d" \
+ -e "/pmcd\.pmie\.host: $unavailable/d"
+}
+
+linux_filter()
+{
+ sed \
+ -e "/disk\.dm\..*: $unavailable/d" \
+ -e "/filesys\.readonly: $unknown/d" \
+ -e "/hinv\.cpu\..*: $unavailable/d" \
+ -e "/hinv\.map\.dmname: $unavailable/d" \
+ -e "/hinv\.nlv: $unavailable/d" \
+ -e "/kernel\.pernode..*: $unavailable/d" \
+ -e "/mem\.util\.active_anon: $unavailable/d" \
+ -e "/mem\.util\.active_file: $unavailable/d" \
+ -e "/mem\.util\.anonhugepages: $unavailable/d" \
+ -e "/mem\.util\.available: $unavailable/d" \
+ -e "/mem\.util\.corrupthardware: $unavailable/d" \
+ -e "/mem\.util\.directMap1G: $unavailable/d" \
+ -e "/mem\.util\.directMap2M: $unavailable/d" \
+ -e "/mem\.util\.directMap4k: $unavailable/d" \
+ -e "/mem\.util\.highFree: $unavailable/d" \
+ -e "/mem\.util\.highTotal: $unavailable/d" \
+ -e "/mem\.util\.hugepagesFree: $unavailable/d" \
+ -e "/mem\.util\.hugepagesRsvd: $unavailable/d" \
+ -e "/mem\.util\.hugepagesSurp: $unavailable/d" \
+ -e "/mem\.util\.hugepagesTotal: $unavailable/d" \
+ -e "/mem\.util\.inactive_anon: $unavailable/d" \
+ -e "/mem\.util\.inactive_file: $unavailable/d" \
+ -e "/mem\.util\.kernelStack: $unavailable/d" \
+ -e "/mem\.util\.lowFree: $unavailable/d" \
+ -e "/mem\.util\.lowTotal: $unavailable/d" \
+ -e "/mem\.util\.mlocked: $unavailable/d" \
+ -e "/mem\.util\.mmap_copy: $unavailable/d" \
+ -e "/mem\.util\.quicklists: $unavailable/d" \
+ -e "/mem\.util\.shmem: $unavailable/d" \
+ -e "/mem\.util\.slabReclaimable: $unavailable/d" \
+ -e "/mem\.util\.slabUnreclaimable: $unavailable/d" \
+ -e "/mem\.util\.unevictable: $unavailable/d" \
+ -e "/mem\.vmstat\..*: $unavailable/d" \
+ -e "/network\.icmpmsg\..*: $unavailable/d" \
+ -e "/network\.interface\.hw_addr: $unavailable/d" \
+ -e "/network\.interface\.ipv6_addr: $unavailable/d" \
+ -e "/network\.interface\.ipv6_scope: $unavailable/d" \
+ -e "/network\.ip\.ce.*: $unavailable/d" \
+ -e "/network\.ip\.csum.*: $unavailable/d" \
+ -e "/network\.ip\.ect.*: $unavailable/d" \
+ -e "/network\.ip\.inbcastoctets: $unavailable/d" \
+ -e "/network\.ip\.inoctets: $unavailable/d" \
+ -e "/network\.ip\..*mcast.*: $unavailable/d" \
+ -e "/network\.ip\.noect.*: $unavailable/d" \
+ -e "/network\.ip\.outbcastoctets: $unavailable/d" \
+ -e "/network\.ip\.outoctets: $unavailable/d" \
+ -e "/network\.tcp\.autocork.*: $unavailable/d" \
+ -e "/network\.tcp\.backlogdrop: $unavailable/d" \
+ -e "/network\.tcp\.busypoll.*: $unavailable/d" \
+ -e "/network\.tcp\.challenge.*: $unavailable/d" \
+ -e "/network\.tcp\.defer.*: $unavailable/d" \
+ -e "/network\.tcp\.dsackignorednoundo: $unavailable/d" \
+ -e "/network\.tcp\.dsackignoredold: $unavailable/d" \
+ -e "/network\.tcp\.fast.*: $unavailable/d" \
+ -e "/network\.tcp\.from.*: $unavailable/d" \
+ -e "/network\.tcp\.iprpfilter.*: $unavailable/d" \
+ -e "/network\.tcp\.loss.*: $unavailable/d" \
+ -e "/network\.tcp\.md5notfound: $unavailable/d" \
+ -e "/network\.tcp\.md5unexpected: $unavailable/d" \
+ -e "/network\.tcp\.minttldrop: $unavailable/d" \
+ -e "/network\.tcp\.ofo.*: $unavailable/d" \
+ -e "/network\.tcp\.orig.*: $unavailable/d" \
+ -e "/network\.tcp\.rcv.*: $unavailable/d" \
+ -e "/network\.tcp\.reqq.*: $unavailable/d" \
+ -e "/network\.tcp\.retrans.*: $unavailable/d" \
+ -e "/network\.tcp\.sackdiscard: $unavailable/d" \
+ -e "/network\.tcp\.sackmerged: $unavailable/d" \
+ -e "/network\.tcp\.sackshifted: $unavailable/d" \
+ -e "/network\.tcp\.sackshiftfallback: $unavailable/d" \
+ -e "/network\.tcp\.spurious.*: $unavailable/d" \
+ -e "/network\.tcp\.syn.*: $unavailable/d" \
+ -e "/network\.tcp\.timewait.*: $unavailable/d" \
+ -e "/network\.tcp\..*window.*: $unavailable/d" \
+ -e "/network\.udplite\..*: $unavailable/d" \
+ -e "/network\.udp\.recvbuferrors: $unavailable/d" \
+ -e "/network\.udp\.sndbuferrors: $unavailable/d" \
+ -e "/swapdev\.free: $unavailable/d" \
+ -e "/swapdev\.length: $unavailable/d" \
+ -e "/swapdev\.maxswap: $unavailable/d" \
+ -e "/swapdev\.priority: $unavailable/d" \
+ -e "/swapdev\.vlength: $unavailable/d" \
+ -e "/swap\.in: $nosupport/d" \
+ -e "/swap\.out: $nosupport/d"
+
+}
+
+sample_filter()
+{
+ sed -e "/sample\.bad\.nosupport: $nosupport/d" \
+ -e "/sample\.bad\.unknown: $unknown/d" \
+ -e "/sample\.bad\.novalues: $unavailable/d" \
+ -e "/sample\.needprofile: $explicit/d" \
+ -e "/sample\.noinst: $unavailable/d" \
+ -e "/sample\.dynamic\.counter: $unavailable/d" \
+ -e "/sample\.dynamic\.discrete: $unavailable/d" \
+ -e "/sample\.dynamic\.instant: $unavailable/d" \
+ -e "/sample\.darkness: $unavailable/d" \
+ -e "/sample\.secret: $unknown/d" \
+ -e "/sample\.event\.type: $unavailable/d" \
+ -e "/sample\.event\.param_.*: $unavailable/d" \
+ -e "/sampledso\.bad\.nosupport: $nosupport/d" \
+ -e "/sampledso\.bad\.unknown: $unknown/d" \
+ -e "/sampledso\.bad\.novalues: $unavailable/d" \
+ -e "/sampledso\.needprofile: $explicit/d" \
+ -e "/sampledso\.noinst: $unavailable/d" \
+ -e "/sampledso\.dynamic\.counter: $unavailable/d" \
+ -e "/sampledso\.dynamic\.discrete: $unavailable/d" \
+ -e "/sampledso\.dynamic\.instant: $unavailable/d" \
+ -e "/sampledso\.darkness: $unavailable/d" \
+ -e "/sampledso\.secret: $unknown/d" \
+ -e "/sampledso\.event\.type: $unavailable/d" \
+ -e "/sampledso\.event\.param_.*: $unavailable/d" \
+
+}
+
+count_filter()
+{
+ sed -e '/[0-9][0-9]* metrics, [0-9][0-9]* getindom, [0-9][0-9]* insitu, [0-9][0-9]* ptr/d'
+}
+
+echo "=== no output is good news ==="
+
+for root in \
+ sample sampledso \
+ buffer_cache disk filesys hinv hw ipc kernel mem name_cache network \
+ nfs nfs3 resource rpc stream swap swapdev vnodes xfs \
+ pmcd
+do
+ src/exercise -i 5 $root \
+ | LC_COLLATE=POSIX sort \
+ | sample_filter \
+ | linux_filter \
+ | pmie_filter \
+ | count_filter >$tmp.tmp
+
+ if [ "$PCP_PLATFORM" = linux ]
+ then
+ sed <$tmp.tmp \
+ -e "/disk\.all\.avactive: $unavailable/d" \
+ -e "/disk\.all\.aveq: $unavailable/d" \
+ -e "/disk\.all\..*_bytes: $unavailable/d" \
+ -e "/disk\.dev\.avactive: $unavailable/d" \
+ -e "/disk\.dev\.aveq: $unavailable/d" \
+ -e "/disk\.dev\..*_bytes: $unavailable/d" \
+ -e "/disk\.partitions\./d" \
+ -e "/disk\.xvm\..*: $unavailable/d" \
+ -e "/hinv\.interconnect: $unavailable/d" \
+ -e "/hinv\.map\.cpu: $unavailable/d" \
+ -e "/hinv\.map\.disk: $unavailable/d" \
+ -e "/hinv\.map\.lvname: $unavailable/d" \
+ -e "/hinv\.map\.node: $unavailable/d" \
+ -e "/hinv\.map\.routerport: $unavailable/d" \
+ -e "/hinv\.map\.router: $unavailable/d" \
+ -e "/hinv\.map\.scsi: $unavailable/d" \
+ -e "/hinv\.map\.xbow: $unavailable/d" \
+ -e "/hinv\.nxbow: $nyi/d" \
+ -e "/hw\.hub\..*: $missing/d" \
+ -e "/hw\.hub\..*: $unavailable/d" \
+ -e "/hw\.router\..*: $unavailable/d" \
+ -e "/kernel\..*\.syscall: $unavailable/d" \
+ -e "/mem\.slabinfo\.objects\.active: $unavailable/d" \
+ -e "/mem\.slabinfo\.objects\.size: $unavailable/d" \
+ -e "/mem\.slabinfo\.objects\.total: $unavailable/d" \
+ -e "/mem\.slabinfo\.slabs\.active: $unavailable/d" \
+ -e "/mem\.slabinfo\.slabs\.objects_per_slab: $unavailable/d" \
+ -e "/mem\.slabinfo\.slabs\.pages_per_slab: $unavailable/d" \
+ -e "/mem\.slabinfo\.slabs\.total: $unavailable/d" \
+ -e "/mem\.slabinfo\.slabs\.total_size: $unavailable/d" \
+ -e "/mem\.vmstat\.nr_slab: $unavailable/d" \
+ -e "/mem\.numa\..*: $unavailable/d" \
+ -e "/mem\.util\.other: $unavailable/d" \
+ -e "/mem\.util\.reverseMaps: $unavailable/d" \
+ -e "/mem\.util\.shared: $unavailable/d" \
+ -e "/network\.ib\..*/d" \
+ -e "/network\.interface\.baudrate: $unavailable/d" \
+ -e "/network\.interface\.duplex: $unavailable/d" \
+ -e "/network\.interface\.inet_addr: $unavailable/d" \
+ -e "/network\.interface\.speed: $unavailable/d" \
+ -e "/network\..*\.incsumerrors: $unavailable/d" \
+ -e "/nfs3\.server\..*: $unavailable/d" \
+ -e "/nfs.*\.client\.calls: $unavailable/d" \
+ -e "/nfs.*\.client\.reqs: $unavailable/d" \
+ -e "/nfs\.server\..*: $unavailable/d" \
+ -e '/pmcd\.simabi/d' \
+ -e "/rpc\.client\..*: $unavailable/d" \
+ -e "/rpc\.server\..*: $unavailable/d" \
+ -e "/sampledso\.sysinfo: $nosupport/d" \
+ -e "/sample\.sysinfo: $nosupport/d" \
+ -e "/xfs\..*: $unavailable/d"
+ elif [ "$PCP_PLATFORM" = darwin ]
+ then
+ sed <$tmp.tmp \
+ -e 's/a/a/'
+ fi
+done
diff --git a/qa/003.out b/qa/003.out
new file mode 100644
index 0000000..1296fe3
--- /dev/null
+++ b/qa/003.out
@@ -0,0 +1,2 @@
+QA output created by 003
+=== no output is good news ===
diff --git a/qa/004 b/qa/004
new file mode 100755
index 0000000..dd63557
--- /dev/null
+++ b/qa/004
@@ -0,0 +1,18 @@
+#! /bin/sh
+# PCP QA Test No. 004
+# exercise contexts for the live data from the pmcd
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+src/context_test -i6
+src/context_test -i5
diff --git a/qa/004.out b/qa/004.out
new file mode 100644
index 0000000..549ce4a
--- /dev/null
+++ b/qa/004.out
@@ -0,0 +1,7 @@
+QA output created by 004
+......
+Passed 6 of 6 iterations
+Check error handling at PMAPI ...
+.....
+Passed 5 of 5 iterations
+Check error handling at PMAPI ...
diff --git a/qa/005 b/qa/005
new file mode 100755
index 0000000..ffc7abc
--- /dev/null
+++ b/qa/005
@@ -0,0 +1,21 @@
+#! /bin/sh
+# PCP QA Test No. 005
+# exercise contexts for an archive
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+src/context_test -i6 -a src/foo
+src/context_test -i5 -a src/foo
+src/context_test -i5 -a src/mv-foo
+src/context_test -i5 -a src/noti-foo
+
diff --git a/qa/005.out b/qa/005.out
new file mode 100644
index 0000000..a1f757c
--- /dev/null
+++ b/qa/005.out
@@ -0,0 +1,13 @@
+QA output created by 005
+......
+Passed 6 of 6 iterations
+Check error handling at PMAPI ...
+.....
+Passed 5 of 5 iterations
+Check error handling at PMAPI ...
+.....
+Passed 5 of 5 iterations
+Check error handling at PMAPI ...
+.....
+Passed 5 of 5 iterations
+Check error handling at PMAPI ...
diff --git a/qa/006 b/qa/006
new file mode 100755
index 0000000..a167937
--- /dev/null
+++ b/qa/006
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 006
+# Check error codes ...
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+rm -f $seq.out
+if pmerr -l | grep 'asynchronous operation' >/dev/null
+then
+ # before PCP 3.6, still have async api and other error codes
+ ln $seq.out.1 $seq.out
+else
+ ln $seq.out.2 $seq.out
+fi
+
+PM_ERR_BASE=12345
+PM_ERR_COUNT=100
+
+sts=$PM_ERR_BASE
+top=`expr $PM_ERR_BASE + $PM_ERR_COUNT`
+while [ $sts -lt $top ]
+do
+ pmerr -$sts
+ sts=`expr $sts + 1`
+done \
+| sed -e 's/0x........ //' \
+ -e 's/Code: //' \
+ -e 's/Text: //' \
+ -e '/-12349/s/One-line/Oneline/'
+
+# last sed substitution thanks to pv:937345 which changed the wording
+# ... preserving the old form so QA passes
diff --git a/qa/006.out.1 b/qa/006.out.1
new file mode 100644
index 0000000..a464f4e
--- /dev/null
+++ b/qa/006.out.1
@@ -0,0 +1,101 @@
+QA output created by 006
+-12345 Generic error, already reported above
+-12346 Problems parsing PMNS definitions
+-12347 PMNS not accessible
+-12348 Attempt to reload the PMNS
+-12349 Oneline or help text is not available
+-12350 Metric not supported by this version of monitored application
+-12351 Missing metric value(s)
+-12352 Current PCP license does not permit this operation
+-12353 Timeout waiting for a response from PMCD
+-12354 Empty archive log file
+-12355 PMCD reset or configuration change
+-12356 Cannot locate a file
+-12357 Unknown metric name
+-12358 Unknown or illegal metric identifier
+-12359 Unknown or illegal instance domain identifier
+-12360 Unknown or illegal instance identifier
+-12361 Illegal pmUnits specification
+-12362 Impossible value or scale conversion
+-12363 Truncation in value conversion
+-12364 Negative value in conversion to unsigned
+-12365 Explicit instance identifier(s) required
+-12366 IPC protocol failure
+-12367 ASCII format not supported for this PDU (no longer used)
+-12368 IPC channel closed
+-12369 Operation requires context with host source of metrics
+-12370 End of PCP archive log
+-12371 Illegal mode specification
+-12372 Illegal label record at start of a PCP archive log file
+-12373 Corrupted record in a PCP archive log
+-12374 Operation requires context with archive source of metrics
+-12375 Missing PCP archive log file
+-12376 Attempt to use an illegal context
+-12377 NULL pmInDom with non-NULL instlist
+-12378 Metric not defined in the PCP archive log
+-12379 Instance domain identifier not defined in the PCP archive log
+-12380 Instance identifier not defined in the PCP archive log
+-12381 Missing profile - protocol botch
+-12382 No such PMAPI error code (-12382)
+-12383 No such PMAPI error code (-12383)
+-12384 No such PMAPI error code (-12384)
+-12385 No such PMAPI error code (-12385)
+-12386 No PMCD agent for domain of request
+-12387 No permission to perform requested operation
+-12388 PMCD connection limit for this host exceeded
+-12389 Try again. Information not currently available
+-12390 Already Connected
+-12391 Not Connected
+-12392 A non-null port name is required
+-12393 Cannot send due to pending acknowledgements
+-12394 Metric name is not a leaf in PMNS
+-12395 Caller does not match object style of running kernel
+-12396 PMCD is not licensed to accept client connections
+-12397 Unknown or illegal metric type
+-12398 No such PMAPI error code (-12398)
+-12399 No such PMAPI error code (-12399)
+-12400 No such PMAPI error code (-12400)
+-12401 No such PMAPI error code (-12401)
+-12402 No such PMAPI error code (-12402)
+-12403 No such PMAPI error code (-12403)
+-12404 No such PMAPI error code (-12404)
+-12405 No such PMAPI error code (-12405)
+-12406 No such PMAPI error code (-12406)
+-12407 No such PMAPI error code (-12407)
+-12408 No such PMAPI error code (-12408)
+-12409 No such PMAPI error code (-12409)
+-12410 No such PMAPI error code (-12410)
+-12411 No such PMAPI error code (-12411)
+-12412 No such PMAPI error code (-12412)
+-12413 No such PMAPI error code (-12413)
+-12414 No such PMAPI error code (-12414)
+-12415 No such PMAPI error code (-12415)
+-12416 No such PMAPI error code (-12416)
+-12417 No such PMAPI error code (-12417)
+-12418 No such PMAPI error code (-12418)
+-12419 No such PMAPI error code (-12419)
+-12420 No such PMAPI error code (-12420)
+-12421 No such PMAPI error code (-12421)
+-12422 No such PMAPI error code (-12422)
+-12423 No such PMAPI error code (-12423)
+-12424 No such PMAPI error code (-12424)
+-12425 No such PMAPI error code (-12425)
+-12426 No such PMAPI error code (-12426)
+-12427 No such PMAPI error code (-12427)
+-12428 No such PMAPI error code (-12428)
+-12429 No such PMAPI error code (-12429)
+-12430 No such PMAPI error code (-12430)
+-12431 No such PMAPI error code (-12431)
+-12432 No such PMAPI error code (-12432)
+-12433 No such PMAPI error code (-12433)
+-12434 No such PMAPI error code (-12434)
+-12435 No such PMAPI error code (-12435)
+-12436 No such PMAPI error code (-12436)
+-12437 No such PMAPI error code (-12437)
+-12438 No such PMAPI error code (-12438)
+-12439 No such PMAPI error code (-12439)
+-12440 No such PMAPI error code (-12440)
+-12441 No such PMAPI error code (-12441)
+-12442 Current context is used by asynchronous operation
+-12443 Insufficient elements in list
+-12444 Result size exceeded
diff --git a/qa/006.out.2 b/qa/006.out.2
new file mode 100644
index 0000000..bb2a9c4
--- /dev/null
+++ b/qa/006.out.2
@@ -0,0 +1,101 @@
+QA output created by 006
+-12345 Generic error, already reported above
+-12346 Problems parsing PMNS definitions
+-12347 PMNS not accessible
+-12348 Attempt to reload the PMNS
+-12349 Oneline or help text is not available
+-12350 Metric not supported by this version of monitored application
+-12351 Missing metric value(s)
+-12352 No such PMAPI error code (-12352)
+-12353 Timeout waiting for a response from PMCD
+-12354 Empty archive log file
+-12355 PMCD reset or configuration change
+-12356 No such PMAPI error code (-12356)
+-12357 Unknown metric name
+-12358 Unknown or illegal metric identifier
+-12359 Unknown or illegal instance domain identifier
+-12360 Unknown or illegal instance identifier
+-12361 Illegal pmUnits specification
+-12362 Impossible value or scale conversion
+-12363 Truncation in value conversion
+-12364 Negative value in conversion to unsigned
+-12365 Explicit instance identifier(s) required
+-12366 IPC protocol failure
+-12367 No such PMAPI error code (-12367)
+-12368 IPC channel closed
+-12369 Operation requires context with host source of metrics
+-12370 End of PCP archive log
+-12371 Illegal mode specification
+-12372 Illegal label record at start of a PCP archive log file
+-12373 Corrupted record in a PCP archive log
+-12374 Operation requires context with archive source of metrics
+-12375 Missing PCP archive log file
+-12376 Attempt to use an illegal context
+-12377 NULL pmInDom with non-NULL instlist
+-12378 Metric not defined in the PCP archive log
+-12379 Instance domain identifier not defined in the PCP archive log
+-12380 Instance identifier not defined in the PCP archive log
+-12381 Missing profile - protocol botch
+-12382 No such PMAPI error code (-12382)
+-12383 No such PMAPI error code (-12383)
+-12384 No such PMAPI error code (-12384)
+-12385 No such PMAPI error code (-12385)
+-12386 No PMCD agent for domain of request
+-12387 No permission to perform requested operation
+-12388 PMCD connection limit for this host exceeded
+-12389 Try again. Information not currently available
+-12390 Already Connected
+-12391 Not Connected
+-12392 A non-null port name is required
+-12393 No such PMAPI error code (-12393)
+-12394 Metric name is not a leaf in PMNS
+-12395 No such PMAPI error code (-12395)
+-12396 No such PMAPI error code (-12396)
+-12397 Unknown or illegal metric type
+-12398 Operation not supported for multi-threaded applications
+-12399 No such PMAPI error code (-12399)
+-12400 No such PMAPI error code (-12400)
+-12401 No such PMAPI error code (-12401)
+-12402 No such PMAPI error code (-12402)
+-12403 No such PMAPI error code (-12403)
+-12404 No such PMAPI error code (-12404)
+-12405 No such PMAPI error code (-12405)
+-12406 No such PMAPI error code (-12406)
+-12407 No such PMAPI error code (-12407)
+-12408 No such PMAPI error code (-12408)
+-12409 No such PMAPI error code (-12409)
+-12410 No such PMAPI error code (-12410)
+-12411 No such PMAPI error code (-12411)
+-12412 No such PMAPI error code (-12412)
+-12413 No such PMAPI error code (-12413)
+-12414 No such PMAPI error code (-12414)
+-12415 No such PMAPI error code (-12415)
+-12416 No such PMAPI error code (-12416)
+-12417 No such PMAPI error code (-12417)
+-12418 No such PMAPI error code (-12418)
+-12419 No such PMAPI error code (-12419)
+-12420 No such PMAPI error code (-12420)
+-12421 No such PMAPI error code (-12421)
+-12422 No such PMAPI error code (-12422)
+-12423 No such PMAPI error code (-12423)
+-12424 No such PMAPI error code (-12424)
+-12425 No such PMAPI error code (-12425)
+-12426 No such PMAPI error code (-12426)
+-12427 No such PMAPI error code (-12427)
+-12428 No such PMAPI error code (-12428)
+-12429 No such PMAPI error code (-12429)
+-12430 No such PMAPI error code (-12430)
+-12431 No such PMAPI error code (-12431)
+-12432 No such PMAPI error code (-12432)
+-12433 No such PMAPI error code (-12433)
+-12434 No such PMAPI error code (-12434)
+-12435 No such PMAPI error code (-12435)
+-12436 No such PMAPI error code (-12436)
+-12437 No such PMAPI error code (-12437)
+-12438 No such PMAPI error code (-12438)
+-12439 No such PMAPI error code (-12439)
+-12440 No such PMAPI error code (-12440)
+-12441 No such PMAPI error code (-12441)
+-12442 No such PMAPI error code (-12442)
+-12443 Insufficient elements in list
+-12444 Result size exceeded
diff --git a/qa/007 b/qa/007
new file mode 100755
index 0000000..c60855b
--- /dev/null
+++ b/qa/007
@@ -0,0 +1,26 @@
+#! /bin/sh
+# PCP QA Test No. 007
+# exercise optFetch routines
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# optfetch routines use hashing on PMID and so the exact configuration
+# of the pmFetch groups is sensitive to endian-ness ... hence the
+# filter for a range of computed costs.
+src/chkoptfetch \
+| tee $seq.full \
+| $PCP_AWK_PROG '
+/re-arrangement/ { if ($5 == "1," || $5 == "2,") $5="1 or 2,"
+ if ($NF >= 62 && $NF <= 84) $NF = "[in range]"
+ }
+ { print }'
diff --git a/qa/007.out b/qa/007.out
new file mode 100644
index 0000000..a07a8b4
--- /dev/null
+++ b/qa/007.out
@@ -0,0 +1,16 @@
+QA output created by 007
+optFetch Cost Parameters:
+ pmid=4 indom=1 fetch=15 indomsize=10, xtrainst=2 scope=0
+Passed 11 of 11 addition tests
+Passed 11 of 11 deletion tests
+Before re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
+After re-arrangement no. fetches 1 or 2, total cost [in range]
diff --git a/qa/008 b/qa/008
new file mode 100755
index 0000000..51d221c
--- /dev/null
+++ b/qa/008
@@ -0,0 +1,56 @@
+#! /bin/sh
+# PCP QA Test No. 008
+# exercise disk statistics on localhost
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# NOTE
+# This test depends on the the local hostname and the disk configuration.
+# To generate a new validated output file ...
+# $ touch 008.out.`hostname | sed -e 's/\..*//'`
+# $ ./remake 008
+# $ mv 008.out 008.out.`hostname | sed -e 's/\..*//'`
+# and check that the comments and the output match up.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# need per-host checked in results
+#
+host=`hostname | sed -e 's/\..*//'`
+rm -f $seq.out
+case $host
+in
+ bozo)
+ # sdc comes and goes
+ if pmprobe -I disk.dev.total | grep sdc >/dev/null
+ then
+ ln $seq.out.bozo+sdc $seq.out
+ else
+ ln $seq.out.bozo $seq.out
+ fi
+ ;;
+ *)
+ [ -f $seq.out.$host ] || \
+ _notrun "No qualified results file ($seq.out.$host) for the localhost"
+ ln $seq.out.$host $seq.out
+ ;;
+esac
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+PMCD_CONNECT_TIMEOUT=60
+PMCD_REQUEST_TIMEOUT=60
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+src/disk_test \
+| sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/ value /s/ value .*/ value .../'
+
diff --git a/qa/008.out.Colleens-iMac b/qa/008.out.Colleens-iMac
new file mode 100644
index 0000000..0bdbf23
--- /dev/null
+++ b/qa/008.out.Colleens-iMac
@@ -0,0 +1,47 @@
+QA output created by 008
+Disks:
+ [0]: 0 disk0
+all drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
diff --git a/qa/008.out.bozo b/qa/008.out.bozo
new file mode 100644
index 0000000..0d2b194
--- /dev/null
+++ b/qa/008.out.bozo
@@ -0,0 +1,54 @@
+QA output created by 008
+Disks:
+ [0]: 0 sda
+ [1]: 1 sdb
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [1 or "sdb"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [1 or "sdb"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
diff --git a/qa/008.out.bozo+sdc b/qa/008.out.bozo+sdc
new file mode 100644
index 0000000..cdc28f0
--- /dev/null
+++ b/qa/008.out.bozo+sdc
@@ -0,0 +1,59 @@
+QA output created by 008
+Disks:
+ [0]: 0 sda
+ [1]: 1 sdb
+ [2]: 2 sdc
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 3 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [2 or "sdc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 3 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [2 or "sdc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
diff --git a/qa/008.out.bozo-laptop b/qa/008.out.bozo-laptop
new file mode 100644
index 0000000..11beb60
--- /dev/null
+++ b/qa/008.out.bozo-laptop
@@ -0,0 +1,47 @@
+QA output created by 008
+Disks:
+ [0]: 0 sda
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sda"] value ...
diff --git a/qa/008.out.canary b/qa/008.out.canary
new file mode 100644
index 0000000..10383ff
--- /dev/null
+++ b/qa/008.out.canary
@@ -0,0 +1,59 @@
+QA output created by 008
+Disks:
+ [0]: 2 hda
+ [1]: 3 xscsi/pci0001:00:03.0-1/target1/lun0/disc
+ [2]: 4 xscsi/pci0001:00:03.0-1/target2/lun0/disc
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or "hda"] value ...
+ inst [3 or "xscsi/pci0001:00:03.0-1/target1/lun0/disc"] value ...
+ inst [4 or "xscsi/pci0001:00:03.0-1/target2/lun0/disc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [2 or "hda"] value ...
+ inst [4 or "xscsi/pci0001:00:03.0-1/target2/lun0/disc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [3 or "xscsi/pci0001:00:03.0-1/target1/lun0/disc"] value ...
+ inst [4 or "xscsi/pci0001:00:03.0-1/target2/lun0/disc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [2 or "hda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or "hda"] value ...
+ inst [3 or "xscsi/pci0001:00:03.0-1/target1/lun0/disc"] value ...
+ inst [4 or "xscsi/pci0001:00:03.0-1/target2/lun0/disc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [2 or "hda"] value ...
+ inst [4 or "xscsi/pci0001:00:03.0-1/target2/lun0/disc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [3 or "xscsi/pci0001:00:03.0-1/target1/lun0/disc"] value ...
+ inst [4 or "xscsi/pci0001:00:03.0-1/target2/lun0/disc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [2 or "hda"] value ...
diff --git a/qa/008.out.comma b/qa/008.out.comma
new file mode 100644
index 0000000..0bdbf23
--- /dev/null
+++ b/qa/008.out.comma
@@ -0,0 +1,47 @@
+QA output created by 008
+Disks:
+ [0]: 0 disk0
+all drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 78.7.47 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "disk0"] value ...
diff --git a/qa/008.out.edge b/qa/008.out.edge
new file mode 100644
index 0000000..8f9b584
--- /dev/null
+++ b/qa/008.out.edge
@@ -0,0 +1,64 @@
+QA output created by 008
+Disks:
+ [0]: 0 sda
+ [1]: 1 sdb
+ [2]: 2 sdc
+ [3]: 3 sdd
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 4 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+ inst [3 or "sdd"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [3 or "sdd"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 3 valfmt: 1 vlist[]:
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+ inst [3 or "sdd"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 4 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+ inst [3 or "sdd"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+ inst [3 or "sdd"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 3 valfmt: 1 vlist[]:
+ inst [1 or "sdb"] value ...
+ inst [2 or "sdc"] value ...
+ inst [3 or "sdd"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
diff --git a/qa/008.out.groan b/qa/008.out.groan
new file mode 100644
index 0000000..ae98408
--- /dev/null
+++ b/qa/008.out.groan
@@ -0,0 +1,54 @@
+QA output created by 008
+Disks:
+ [0]: 50 dks0d1
+ [1]: 61 dks0d4
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d1"] value ...
+ inst [61 or "dks0d4"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d1"] value ...
+ inst [61 or "dks0d4"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [61 or "dks0d4"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [50 or "dks0d1"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d1"] value ...
+ inst [61 or "dks0d4"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d1"] value ...
+ inst [61 or "dks0d4"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [61 or "dks0d4"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [50 or "dks0d1"] value ...
diff --git a/qa/008.out.grunt b/qa/008.out.grunt
new file mode 100644
index 0000000..8c86ae8
--- /dev/null
+++ b/qa/008.out.grunt
@@ -0,0 +1,69 @@
+QA output created by 008
+Disks:
+ [0]: 373 dks0d1
+ [1]: 384 dks0d2
+ [2]: 395 dks0d3
+ [3]: 406 dks0d4
+ [4]: 417 dks0d5
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 5 valfmt: 0 vlist[]:
+ inst [373 or "dks0d1"] value ...
+ inst [384 or "dks0d2"] value ...
+ inst [395 or "dks0d3"] value ...
+ inst [406 or "dks0d4"] value ...
+ inst [417 or "dks0d5"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [373 or "dks0d1"] value ...
+ inst [417 or "dks0d5"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 4 valfmt: 0 vlist[]:
+ inst [384 or "dks0d2"] value ...
+ inst [395 or "dks0d3"] value ...
+ inst [406 or "dks0d4"] value ...
+ inst [417 or "dks0d5"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [373 or "dks0d1"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 5 valfmt: 0 vlist[]:
+ inst [373 or "dks0d1"] value ...
+ inst [384 or "dks0d2"] value ...
+ inst [395 or "dks0d3"] value ...
+ inst [406 or "dks0d4"] value ...
+ inst [417 or "dks0d5"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [373 or "dks0d1"] value ...
+ inst [417 or "dks0d5"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 4 valfmt: 0 vlist[]:
+ inst [384 or "dks0d2"] value ...
+ inst [395 or "dks0d3"] value ...
+ inst [406 or "dks0d4"] value ...
+ inst [417 or "dks0d5"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [373 or "dks0d1"] value ...
diff --git a/qa/008.out.hades b/qa/008.out.hades
new file mode 100644
index 0000000..a679e28
--- /dev/null
+++ b/qa/008.out.hades
@@ -0,0 +1,184 @@
+QA output created by 008
+Disks:
+ [0]: 25 sda
+ [1]: 29 sdb
+ [2]: 38 sdc
+ [3]: 39 sdd
+ [4]: 42 sde
+ [5]: 45 sdf
+ [6]: 48 sdg
+ [7]: 51 sdh
+ [8]: 54 sdi
+ [9]: 57 sdj
+ [10]: 60 sdk
+ [11]: 63 sdl
+ [12]: 66 sdm
+ [13]: 69 sdn
+ [14]: 72 sdo
+ [15]: 75 sdp
+ [16]: 79 sdq
+ [17]: 82 sdr
+ [18]: 85 sds
+ [19]: 86 sdt
+ [20]: 89 sdu
+ [21]: 92 sdv
+ [22]: 93 sdw
+ [23]: 96 sdx
+ [24]: 99 sdy
+ [25]: 100 sdz
+ [26]: 104 sdaa
+ [27]: 107 sdab
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 28 valfmt: 0 vlist[]:
+ inst [25 or "sda"] value ...
+ inst [29 or "sdb"] value ...
+ inst [38 or "sdc"] value ...
+ inst [39 or "sdd"] value ...
+ inst [42 or "sde"] value ...
+ inst [45 or "sdf"] value ...
+ inst [48 or "sdg"] value ...
+ inst [51 or "sdh"] value ...
+ inst [54 or "sdi"] value ...
+ inst [57 or "sdj"] value ...
+ inst [60 or "sdk"] value ...
+ inst [63 or "sdl"] value ...
+ inst [66 or "sdm"] value ...
+ inst [69 or "sdn"] value ...
+ inst [72 or "sdo"] value ...
+ inst [75 or "sdp"] value ...
+ inst [79 or "sdq"] value ...
+ inst [82 or "sdr"] value ...
+ inst [85 or "sds"] value ...
+ inst [86 or "sdt"] value ...
+ inst [89 or "sdu"] value ...
+ inst [92 or "sdv"] value ...
+ inst [93 or "sdw"] value ...
+ inst [96 or "sdx"] value ...
+ inst [99 or "sdy"] value ...
+ inst [100 or "sdz"] value ...
+ inst [104 or "sdaa"] value ...
+ inst [107 or "sdab"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [25 or "sda"] value ...
+ inst [107 or "sdab"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 27 valfmt: 0 vlist[]:
+ inst [29 or "sdb"] value ...
+ inst [38 or "sdc"] value ...
+ inst [39 or "sdd"] value ...
+ inst [42 or "sde"] value ...
+ inst [45 or "sdf"] value ...
+ inst [48 or "sdg"] value ...
+ inst [51 or "sdh"] value ...
+ inst [54 or "sdi"] value ...
+ inst [57 or "sdj"] value ...
+ inst [60 or "sdk"] value ...
+ inst [63 or "sdl"] value ...
+ inst [66 or "sdm"] value ...
+ inst [69 or "sdn"] value ...
+ inst [72 or "sdo"] value ...
+ inst [75 or "sdp"] value ...
+ inst [79 or "sdq"] value ...
+ inst [82 or "sdr"] value ...
+ inst [85 or "sds"] value ...
+ inst [86 or "sdt"] value ...
+ inst [89 or "sdu"] value ...
+ inst [92 or "sdv"] value ...
+ inst [93 or "sdw"] value ...
+ inst [96 or "sdx"] value ...
+ inst [99 or "sdy"] value ...
+ inst [100 or "sdz"] value ...
+ inst [104 or "sdaa"] value ...
+ inst [107 or "sdab"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [25 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 28 valfmt: 0 vlist[]:
+ inst [25 or "sda"] value ...
+ inst [29 or "sdb"] value ...
+ inst [38 or "sdc"] value ...
+ inst [39 or "sdd"] value ...
+ inst [42 or "sde"] value ...
+ inst [45 or "sdf"] value ...
+ inst [48 or "sdg"] value ...
+ inst [51 or "sdh"] value ...
+ inst [54 or "sdi"] value ...
+ inst [57 or "sdj"] value ...
+ inst [60 or "sdk"] value ...
+ inst [63 or "sdl"] value ...
+ inst [66 or "sdm"] value ...
+ inst [69 or "sdn"] value ...
+ inst [72 or "sdo"] value ...
+ inst [75 or "sdp"] value ...
+ inst [79 or "sdq"] value ...
+ inst [82 or "sdr"] value ...
+ inst [85 or "sds"] value ...
+ inst [86 or "sdt"] value ...
+ inst [89 or "sdu"] value ...
+ inst [92 or "sdv"] value ...
+ inst [93 or "sdw"] value ...
+ inst [96 or "sdx"] value ...
+ inst [99 or "sdy"] value ...
+ inst [100 or "sdz"] value ...
+ inst [104 or "sdaa"] value ...
+ inst [107 or "sdab"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [25 or "sda"] value ...
+ inst [107 or "sdab"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 27 valfmt: 0 vlist[]:
+ inst [29 or "sdb"] value ...
+ inst [38 or "sdc"] value ...
+ inst [39 or "sdd"] value ...
+ inst [42 or "sde"] value ...
+ inst [45 or "sdf"] value ...
+ inst [48 or "sdg"] value ...
+ inst [51 or "sdh"] value ...
+ inst [54 or "sdi"] value ...
+ inst [57 or "sdj"] value ...
+ inst [60 or "sdk"] value ...
+ inst [63 or "sdl"] value ...
+ inst [66 or "sdm"] value ...
+ inst [69 or "sdn"] value ...
+ inst [72 or "sdo"] value ...
+ inst [75 or "sdp"] value ...
+ inst [79 or "sdq"] value ...
+ inst [82 or "sdr"] value ...
+ inst [85 or "sds"] value ...
+ inst [86 or "sdt"] value ...
+ inst [89 or "sdu"] value ...
+ inst [92 or "sdv"] value ...
+ inst [93 or "sdw"] value ...
+ inst [96 or "sdx"] value ...
+ inst [99 or "sdy"] value ...
+ inst [100 or "sdz"] value ...
+ inst [104 or "sdaa"] value ...
+ inst [107 or "sdab"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [25 or "sda"] value ...
diff --git a/qa/008.out.kenj-pc b/qa/008.out.kenj-pc
new file mode 100644
index 0000000..23f43dc
--- /dev/null
+++ b/qa/008.out.kenj-pc
@@ -0,0 +1,54 @@
+QA output created by 008
+Disks:
+ [0]: 0 hda
+ [1]: 7 hdc
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [7 or "hdc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [7 or "hdc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
diff --git a/qa/008.out.kmcdonell-laptop b/qa/008.out.kmcdonell-laptop
new file mode 100644
index 0000000..7d996d6
--- /dev/null
+++ b/qa/008.out.kmcdonell-laptop
@@ -0,0 +1,47 @@
+QA output created by 008
+Disks:
+ [0]: 1 sda
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
diff --git a/qa/008.out.liz b/qa/008.out.liz
new file mode 100644
index 0000000..bb1de8d
--- /dev/null
+++ b/qa/008.out.liz
@@ -0,0 +1,249 @@
+QA output created by 008
+Disks:
+ [0]: 0 xvm/cluster/vol/dxm/data/block
+ [1]: 1 xvm/cluster/vol/bubba/data/block
+ [2]: 2 xvm/cluster/vol/tp9400/data/block
+ [3]: 3 xvm/cluster/vol/r0lun0s0/data/block
+ [4]: 4 xvm/cluster/vol/dxm3s0/data/block
+ [5]: 5 xvm/cluster/vol/dxm5s0/data/block
+ [6]: 6 xvm/cluster/vol/dxm4s0/data/block
+ [7]: 8 xscsi/pci01.00.0/node20000004cf6460a2/port1/lun0/disc
+ [8]: 12 xscsi/pci01.00.0/node20000004cf646397/port1/lun0/disc
+ [9]: 16 xscsi/pci01.00.0/node200300a0b80f144f/port1/lun7/disc
+ [10]: 19 xscsi/pci01.00.0/node200300a0b80f144f/port1/lun13/disc
+ [11]: 22 xscsi/pci01.00.0/node200300a0b80f144f/port1/lun31/disc
+ [12]: 26 xscsi/pci01.00.0/node2000002037c287af/port1/lun0/disc
+ [13]: 31 xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun1/disc
+ [14]: 35 xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun3/disc
+ [15]: 39 xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun31/disc
+ [16]: 43 xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun0/disc
+ [17]: 46 xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun2/disc
+ [18]: 50 xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun4/disc
+ [19]: 53 xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun31/disc
+ [20]: 57 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun7/disc
+ [21]: 60 xscsi/pci01.00.0/node20000004cf55bc68/port1/lun0/disc
+ [22]: 64 xscsi/pci01.00.0/node20000004cf55bc70/port1/lun0/disc
+ [23]: 68 xscsi/pci01.00.0/node20000004cf559b14/port1/lun0/disc
+ [24]: 72 xscsi/pci01.00.0/node20000004cf646eef/port1/lun0/disc
+ [25]: 76 xscsi/pci00.01.0-1/target0/lun0/disc
+ [26]: 81 xscsi/pci00.01.0-1/target1/lun0/disc
+ [27]: 83 xscsi/pci00.01.0-1/target2/lun0/disc
+ [28]: 85 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun0/disc
+ [29]: 88 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun1/disc
+ [30]: 89 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun2/disc
+ [31]: 92 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun3/disc
+ [32]: 95 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun8/disc
+ [33]: 98 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun9/disc
+ [34]: 99 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun10/disc
+ [35]: 102 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun11/disc
+ [36]: 105 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun12/disc
+ [37]: 108 xscsi/pci01.00.0/node200200a0b80f144f/port1/lun31/disc
+ [38]: 112 xscsi/pci01.00.0/node200300a0b80f144f/port1/lun4/disc
+ [39]: 115 xscsi/pci01.00.0/node200300a0b80f144f/port1/lun5/disc
+ [40]: 116 xscsi/pci01.00.0/node200300a0b80f144f/port1/lun6/disc
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 41 valfmt: 0 vlist[]:
+ inst [0 or "xvm/cluster/vol/dxm/data/block"] value ...
+ inst [1 or "xvm/cluster/vol/bubba/data/block"] value ...
+ inst [2 or "xvm/cluster/vol/tp9400/data/block"] value ...
+ inst [3 or "xvm/cluster/vol/r0lun0s0/data/block"] value ...
+ inst [4 or "xvm/cluster/vol/dxm3s0/data/block"] value ...
+ inst [5 or "xvm/cluster/vol/dxm5s0/data/block"] value ...
+ inst [6 or "xvm/cluster/vol/dxm4s0/data/block"] value ...
+ inst [8 or "xscsi/pci01.00.0/node20000004cf6460a2/port1/lun0/disc"] value ...
+ inst [12 or "xscsi/pci01.00.0/node20000004cf646397/port1/lun0/disc"] value ...
+ inst [16 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun7/disc"] value ...
+ inst [19 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun13/disc"] value ...
+ inst [22 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun31/disc"] value ...
+ inst [26 or "xscsi/pci01.00.0/node2000002037c287af/port1/lun0/disc"] value ...
+ inst [31 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun1/disc"] value ...
+ inst [35 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun3/disc"] value ...
+ inst [39 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun31/disc"] value ...
+ inst [43 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun0/disc"] value ...
+ inst [46 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun2/disc"] value ...
+ inst [50 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun4/disc"] value ...
+ inst [53 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun31/disc"] value ...
+ inst [57 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun7/disc"] value ...
+ inst [60 or "xscsi/pci01.00.0/node20000004cf55bc68/port1/lun0/disc"] value ...
+ inst [64 or "xscsi/pci01.00.0/node20000004cf55bc70/port1/lun0/disc"] value ...
+ inst [68 or "xscsi/pci01.00.0/node20000004cf559b14/port1/lun0/disc"] value ...
+ inst [72 or "xscsi/pci01.00.0/node20000004cf646eef/port1/lun0/disc"] value ...
+ inst [76 or "xscsi/pci00.01.0-1/target0/lun0/disc"] value ...
+ inst [81 or "xscsi/pci00.01.0-1/target1/lun0/disc"] value ...
+ inst [83 or "xscsi/pci00.01.0-1/target2/lun0/disc"] value ...
+ inst [85 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun0/disc"] value ...
+ inst [88 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun1/disc"] value ...
+ inst [89 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun2/disc"] value ...
+ inst [92 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun3/disc"] value ...
+ inst [95 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun8/disc"] value ...
+ inst [98 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun9/disc"] value ...
+ inst [99 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun10/disc"] value ...
+ inst [102 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun11/disc"] value ...
+ inst [105 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun12/disc"] value ...
+ inst [108 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun31/disc"] value ...
+ inst [112 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun4/disc"] value ...
+ inst [115 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun5/disc"] value ...
+ inst [116 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun6/disc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "xvm/cluster/vol/dxm/data/block"] value ...
+ inst [116 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun6/disc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 40 valfmt: 0 vlist[]:
+ inst [1 or "xvm/cluster/vol/bubba/data/block"] value ...
+ inst [2 or "xvm/cluster/vol/tp9400/data/block"] value ...
+ inst [3 or "xvm/cluster/vol/r0lun0s0/data/block"] value ...
+ inst [4 or "xvm/cluster/vol/dxm3s0/data/block"] value ...
+ inst [5 or "xvm/cluster/vol/dxm5s0/data/block"] value ...
+ inst [6 or "xvm/cluster/vol/dxm4s0/data/block"] value ...
+ inst [8 or "xscsi/pci01.00.0/node20000004cf6460a2/port1/lun0/disc"] value ...
+ inst [12 or "xscsi/pci01.00.0/node20000004cf646397/port1/lun0/disc"] value ...
+ inst [16 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun7/disc"] value ...
+ inst [19 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun13/disc"] value ...
+ inst [22 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun31/disc"] value ...
+ inst [26 or "xscsi/pci01.00.0/node2000002037c287af/port1/lun0/disc"] value ...
+ inst [31 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun1/disc"] value ...
+ inst [35 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun3/disc"] value ...
+ inst [39 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun31/disc"] value ...
+ inst [43 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun0/disc"] value ...
+ inst [46 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun2/disc"] value ...
+ inst [50 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun4/disc"] value ...
+ inst [53 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun31/disc"] value ...
+ inst [57 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun7/disc"] value ...
+ inst [60 or "xscsi/pci01.00.0/node20000004cf55bc68/port1/lun0/disc"] value ...
+ inst [64 or "xscsi/pci01.00.0/node20000004cf55bc70/port1/lun0/disc"] value ...
+ inst [68 or "xscsi/pci01.00.0/node20000004cf559b14/port1/lun0/disc"] value ...
+ inst [72 or "xscsi/pci01.00.0/node20000004cf646eef/port1/lun0/disc"] value ...
+ inst [76 or "xscsi/pci00.01.0-1/target0/lun0/disc"] value ...
+ inst [81 or "xscsi/pci00.01.0-1/target1/lun0/disc"] value ...
+ inst [83 or "xscsi/pci00.01.0-1/target2/lun0/disc"] value ...
+ inst [85 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun0/disc"] value ...
+ inst [88 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun1/disc"] value ...
+ inst [89 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun2/disc"] value ...
+ inst [92 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun3/disc"] value ...
+ inst [95 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun8/disc"] value ...
+ inst [98 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun9/disc"] value ...
+ inst [99 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun10/disc"] value ...
+ inst [102 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun11/disc"] value ...
+ inst [105 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun12/disc"] value ...
+ inst [108 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun31/disc"] value ...
+ inst [112 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun4/disc"] value ...
+ inst [115 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun5/disc"] value ...
+ inst [116 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun6/disc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "xvm/cluster/vol/dxm/data/block"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 41 valfmt: 0 vlist[]:
+ inst [0 or "xvm/cluster/vol/dxm/data/block"] value ...
+ inst [1 or "xvm/cluster/vol/bubba/data/block"] value ...
+ inst [2 or "xvm/cluster/vol/tp9400/data/block"] value ...
+ inst [3 or "xvm/cluster/vol/r0lun0s0/data/block"] value ...
+ inst [4 or "xvm/cluster/vol/dxm3s0/data/block"] value ...
+ inst [5 or "xvm/cluster/vol/dxm5s0/data/block"] value ...
+ inst [6 or "xvm/cluster/vol/dxm4s0/data/block"] value ...
+ inst [8 or "xscsi/pci01.00.0/node20000004cf6460a2/port1/lun0/disc"] value ...
+ inst [12 or "xscsi/pci01.00.0/node20000004cf646397/port1/lun0/disc"] value ...
+ inst [16 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun7/disc"] value ...
+ inst [19 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun13/disc"] value ...
+ inst [22 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun31/disc"] value ...
+ inst [26 or "xscsi/pci01.00.0/node2000002037c287af/port1/lun0/disc"] value ...
+ inst [31 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun1/disc"] value ...
+ inst [35 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun3/disc"] value ...
+ inst [39 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun31/disc"] value ...
+ inst [43 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun0/disc"] value ...
+ inst [46 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun2/disc"] value ...
+ inst [50 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun4/disc"] value ...
+ inst [53 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun31/disc"] value ...
+ inst [57 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun7/disc"] value ...
+ inst [60 or "xscsi/pci01.00.0/node20000004cf55bc68/port1/lun0/disc"] value ...
+ inst [64 or "xscsi/pci01.00.0/node20000004cf55bc70/port1/lun0/disc"] value ...
+ inst [68 or "xscsi/pci01.00.0/node20000004cf559b14/port1/lun0/disc"] value ...
+ inst [72 or "xscsi/pci01.00.0/node20000004cf646eef/port1/lun0/disc"] value ...
+ inst [76 or "xscsi/pci00.01.0-1/target0/lun0/disc"] value ...
+ inst [81 or "xscsi/pci00.01.0-1/target1/lun0/disc"] value ...
+ inst [83 or "xscsi/pci00.01.0-1/target2/lun0/disc"] value ...
+ inst [85 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun0/disc"] value ...
+ inst [88 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun1/disc"] value ...
+ inst [89 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun2/disc"] value ...
+ inst [92 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun3/disc"] value ...
+ inst [95 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun8/disc"] value ...
+ inst [98 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun9/disc"] value ...
+ inst [99 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun10/disc"] value ...
+ inst [102 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun11/disc"] value ...
+ inst [105 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun12/disc"] value ...
+ inst [108 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun31/disc"] value ...
+ inst [112 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun4/disc"] value ...
+ inst [115 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun5/disc"] value ...
+ inst [116 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun6/disc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "xvm/cluster/vol/dxm/data/block"] value ...
+ inst [116 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun6/disc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 40 valfmt: 0 vlist[]:
+ inst [1 or "xvm/cluster/vol/bubba/data/block"] value ...
+ inst [2 or "xvm/cluster/vol/tp9400/data/block"] value ...
+ inst [3 or "xvm/cluster/vol/r0lun0s0/data/block"] value ...
+ inst [4 or "xvm/cluster/vol/dxm3s0/data/block"] value ...
+ inst [5 or "xvm/cluster/vol/dxm5s0/data/block"] value ...
+ inst [6 or "xvm/cluster/vol/dxm4s0/data/block"] value ...
+ inst [8 or "xscsi/pci01.00.0/node20000004cf6460a2/port1/lun0/disc"] value ...
+ inst [12 or "xscsi/pci01.00.0/node20000004cf646397/port1/lun0/disc"] value ...
+ inst [16 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun7/disc"] value ...
+ inst [19 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun13/disc"] value ...
+ inst [22 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun31/disc"] value ...
+ inst [26 or "xscsi/pci01.00.0/node2000002037c287af/port1/lun0/disc"] value ...
+ inst [31 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun1/disc"] value ...
+ inst [35 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun3/disc"] value ...
+ inst [39 or "xscsi/pci01.00.0/node200500a0b80cec7e/port1/lun31/disc"] value ...
+ inst [43 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun0/disc"] value ...
+ inst [46 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun2/disc"] value ...
+ inst [50 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun4/disc"] value ...
+ inst [53 or "xscsi/pci01.00.0/node200400a0b80cec7e/port1/lun31/disc"] value ...
+ inst [57 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun7/disc"] value ...
+ inst [60 or "xscsi/pci01.00.0/node20000004cf55bc68/port1/lun0/disc"] value ...
+ inst [64 or "xscsi/pci01.00.0/node20000004cf55bc70/port1/lun0/disc"] value ...
+ inst [68 or "xscsi/pci01.00.0/node20000004cf559b14/port1/lun0/disc"] value ...
+ inst [72 or "xscsi/pci01.00.0/node20000004cf646eef/port1/lun0/disc"] value ...
+ inst [76 or "xscsi/pci00.01.0-1/target0/lun0/disc"] value ...
+ inst [81 or "xscsi/pci00.01.0-1/target1/lun0/disc"] value ...
+ inst [83 or "xscsi/pci00.01.0-1/target2/lun0/disc"] value ...
+ inst [85 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun0/disc"] value ...
+ inst [88 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun1/disc"] value ...
+ inst [89 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun2/disc"] value ...
+ inst [92 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun3/disc"] value ...
+ inst [95 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun8/disc"] value ...
+ inst [98 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun9/disc"] value ...
+ inst [99 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun10/disc"] value ...
+ inst [102 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun11/disc"] value ...
+ inst [105 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun12/disc"] value ...
+ inst [108 or "xscsi/pci01.00.0/node200200a0b80f144f/port1/lun31/disc"] value ...
+ inst [112 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun4/disc"] value ...
+ inst [115 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun5/disc"] value ...
+ inst [116 or "xscsi/pci01.00.0/node200300a0b80f144f/port1/lun6/disc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "xvm/cluster/vol/dxm/data/block"] value ...
diff --git a/qa/008.out.moomba b/qa/008.out.moomba
new file mode 100644
index 0000000..1b859ab
--- /dev/null
+++ b/qa/008.out.moomba
@@ -0,0 +1,79 @@
+QA output created by 008
+Disks:
+ [0]: 131329 dks1d1
+ [1]: 131330 dks1d2
+ [2]: 131331 dks1d3
+ [3]: 131332 dks1d4
+ [4]: 131333 dks1d5
+ [5]: 131334 dks1d6
+ [6]: 131335 dks1d7
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 7 valfmt: 0 vlist[]:
+ inst [131329 or "dks1d1"] value ...
+ inst [131330 or "dks1d2"] value ...
+ inst [131331 or "dks1d3"] value ...
+ inst [131332 or "dks1d4"] value ...
+ inst [131333 or "dks1d5"] value ...
+ inst [131334 or "dks1d6"] value ...
+ inst [131335 or "dks1d7"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [131329 or "dks1d1"] value ...
+ inst [131335 or "dks1d7"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 6 valfmt: 0 vlist[]:
+ inst [131330 or "dks1d2"] value ...
+ inst [131331 or "dks1d3"] value ...
+ inst [131332 or "dks1d4"] value ...
+ inst [131333 or "dks1d5"] value ...
+ inst [131334 or "dks1d6"] value ...
+ inst [131335 or "dks1d7"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [131329 or "dks1d1"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 7 valfmt: 0 vlist[]:
+ inst [131329 or "dks1d1"] value ...
+ inst [131330 or "dks1d2"] value ...
+ inst [131331 or "dks1d3"] value ...
+ inst [131332 or "dks1d4"] value ...
+ inst [131333 or "dks1d5"] value ...
+ inst [131334 or "dks1d6"] value ...
+ inst [131335 or "dks1d7"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [131329 or "dks1d1"] value ...
+ inst [131335 or "dks1d7"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 6 valfmt: 0 vlist[]:
+ inst [131330 or "dks1d2"] value ...
+ inst [131331 or "dks1d3"] value ...
+ inst [131332 or "dks1d4"] value ...
+ inst [131333 or "dks1d5"] value ...
+ inst [131334 or "dks1d6"] value ...
+ inst [131335 or "dks1d7"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [131329 or "dks1d1"] value ...
diff --git a/qa/008.out.ppp-kenmcd b/qa/008.out.ppp-kenmcd
new file mode 100644
index 0000000..23f43dc
--- /dev/null
+++ b/qa/008.out.ppp-kenmcd
@@ -0,0 +1,54 @@
+QA output created by 008
+Disks:
+ [0]: 0 hda
+ [1]: 7 hdc
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [7 or "hdc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
+ inst [7 or "hdc"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [7 or "hdc"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "hda"] value ...
diff --git a/qa/008.out.slick b/qa/008.out.slick
new file mode 100644
index 0000000..7d0aad6
--- /dev/null
+++ b/qa/008.out.slick
@@ -0,0 +1,47 @@
+QA output created by 008
+Disks:
+ [0]: 0 sda
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sda"] value ...
diff --git a/qa/008.out.smash b/qa/008.out.smash
new file mode 100644
index 0000000..8739967
--- /dev/null
+++ b/qa/008.out.smash
@@ -0,0 +1,54 @@
+QA output created by 008
+Disks:
+ [0]: 0 sdb
+ [1]: 1 sda
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sdb"] value ...
+ inst [1 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sdb"] value ...
+ inst [1 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [1 or "sda"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sdb"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sdb"] value ...
+ inst [1 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or "sdb"] value ...
+ inst [1 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [1 or "sda"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or "sdb"] value ...
diff --git a/qa/008.out.sweet b/qa/008.out.sweet
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/qa/008.out.sweet
diff --git a/qa/008.out.verge b/qa/008.out.verge
new file mode 100644
index 0000000..7d996d6
--- /dev/null
+++ b/qa/008.out.verge
@@ -0,0 +1,47 @@
+QA output created by 008
+Disks:
+ [0]: 1 sda
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): No values returned!
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 60.0.4 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [1 or "sda"] value ...
diff --git a/qa/008.out.whirr b/qa/008.out.whirr
new file mode 100644
index 0000000..118a960
--- /dev/null
+++ b/qa/008.out.whirr
@@ -0,0 +1,54 @@
+QA output created by 008
+Disks:
+ [0]: 50 dks0d2
+ [1]: 61 dks0d4
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d2"] value ...
+ inst [61 or "dks0d4"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d2"] value ...
+ inst [61 or "dks0d4"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [61 or "dks0d4"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [50 or "dks0d2"] value ...
+all drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d2"] value ...
+ inst [61 or "dks0d4"] value ...
+
+no drives should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): No values returned!
+
+only the first and last drive should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or "dks0d2"] value ...
+ inst [61 or "dks0d4"] value ...
+
+all except drive zero should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [61 or "dks0d4"] value ...
+
+drive zero ONLY should be included here
+pmResult ... numpmid: 1
+ 1.80.1 (disk.dev.read): numval: 1 valfmt: 0 vlist[]:
+ inst [50 or "dks0d2"] value ...
diff --git a/qa/009 b/qa/009
new file mode 100755
index 0000000..baf2ec9
--- /dev/null
+++ b/qa/009
@@ -0,0 +1,38 @@
+#! /bin/sh
+# PCP QA Test No. 009
+# exercise ipc/shm/msg statistics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ $PCP_PLATFORM != irix ]
+then
+ echo "No ipc/shm/sem metrics in $PCP_PLATFORM" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# blow away any residual junk
+$sudo src/ipcs_clear
+
+src/ipc 2>&1 \
+| sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e 's/SHMID_[0-9]*/SHMID_INTEGER/g' \
+ -e 's/SEMSET_[0-9]*/SEMSET_INTEGER/g' \
+ -e 's/SEMID_[0-9]*\.[0-9]*/SEMID_INTEGER/g' \
+ -e 's/inst \[[0-9]*/inst [ID/' \
+ -e '/ value /s/ value .*/ value .../' \
+ -e 's/valfmt: [01]/valfmt: ?/' \
+ -e '/^shmindom=/d'
+
+exit $?
diff --git a/qa/009.out b/qa/009.out
new file mode 100644
index 0000000..ea3c85c
--- /dev/null
+++ b/qa/009.out
@@ -0,0 +1,319 @@
+QA output created by 009
+pmid=1.29.2 <ipc.shm.nattch>
+pmid=1.29.1 <ipc.shm.segsz>
+pmid=1.31.1 <ipc.sem.nsems>
+pmid=1.31.2 <ipc.sem.ncnt>
+pmid=1.31.3 <ipc.sem.zcnt>
+SHMID_INTEGER
+SEMSET_INTEGER
+SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER
+SHMID_INTEGER
+SEMSET_INTEGER
+SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER
+SHMID_INTEGER
+SEMSET_INTEGER
+SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER
+SHMID_INTEGER
+SEMSET_INTEGER
+SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER SEMID_INTEGER
+Single Metrics ...
+pmResult ... numpmid: 1
+ 1.29.2 (ipc.shm.nattch): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+pmResult ... numpmid: 1
+ 1.29.1 (ipc.shm.segsz): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+pmResult ... numpmid: 1
+ 1.31.1 (ipc.sem.nsems): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001"] value ...
+ inst [ID or "KEY_0xabcd0003"] value ...
+ inst [ID or "KEY_0xabcd0005"] value ...
+ inst [ID or "KEY_0xabcd0007"] value ...
+pmResult ... numpmid: 1
+ 1.31.2 (ipc.sem.ncnt): numval: 32 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001.0"] value ...
+ inst [ID or "KEY_0xabcd0001.1"] value ...
+ inst [ID or "KEY_0xabcd0001.2"] value ...
+ inst [ID or "KEY_0xabcd0001.3"] value ...
+ inst [ID or "KEY_0xabcd0001.4"] value ...
+ inst [ID or "KEY_0xabcd0001.5"] value ...
+ inst [ID or "KEY_0xabcd0001.6"] value ...
+ inst [ID or "KEY_0xabcd0001.7"] value ...
+ inst [ID or "KEY_0xabcd0003.0"] value ...
+ inst [ID or "KEY_0xabcd0003.1"] value ...
+ inst [ID or "KEY_0xabcd0003.2"] value ...
+ inst [ID or "KEY_0xabcd0003.3"] value ...
+ inst [ID or "KEY_0xabcd0003.4"] value ...
+ inst [ID or "KEY_0xabcd0003.5"] value ...
+ inst [ID or "KEY_0xabcd0003.6"] value ...
+ inst [ID or "KEY_0xabcd0003.7"] value ...
+ inst [ID or "KEY_0xabcd0005.0"] value ...
+ inst [ID or "KEY_0xabcd0005.1"] value ...
+ inst [ID or "KEY_0xabcd0005.2"] value ...
+ inst [ID or "KEY_0xabcd0005.3"] value ...
+ inst [ID or "KEY_0xabcd0005.4"] value ...
+ inst [ID or "KEY_0xabcd0005.5"] value ...
+ inst [ID or "KEY_0xabcd0005.6"] value ...
+ inst [ID or "KEY_0xabcd0005.7"] value ...
+ inst [ID or "KEY_0xabcd0007.0"] value ...
+ inst [ID or "KEY_0xabcd0007.1"] value ...
+ inst [ID or "KEY_0xabcd0007.2"] value ...
+ inst [ID or "KEY_0xabcd0007.3"] value ...
+ inst [ID or "KEY_0xabcd0007.4"] value ...
+ inst [ID or "KEY_0xabcd0007.5"] value ...
+ inst [ID or "KEY_0xabcd0007.6"] value ...
+ inst [ID or "KEY_0xabcd0007.7"] value ...
+pmResult ... numpmid: 1
+ 1.31.3 (ipc.sem.zcnt): numval: 32 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001.0"] value ...
+ inst [ID or "KEY_0xabcd0001.1"] value ...
+ inst [ID or "KEY_0xabcd0001.2"] value ...
+ inst [ID or "KEY_0xabcd0001.3"] value ...
+ inst [ID or "KEY_0xabcd0001.4"] value ...
+ inst [ID or "KEY_0xabcd0001.5"] value ...
+ inst [ID or "KEY_0xabcd0001.6"] value ...
+ inst [ID or "KEY_0xabcd0001.7"] value ...
+ inst [ID or "KEY_0xabcd0003.0"] value ...
+ inst [ID or "KEY_0xabcd0003.1"] value ...
+ inst [ID or "KEY_0xabcd0003.2"] value ...
+ inst [ID or "KEY_0xabcd0003.3"] value ...
+ inst [ID or "KEY_0xabcd0003.4"] value ...
+ inst [ID or "KEY_0xabcd0003.5"] value ...
+ inst [ID or "KEY_0xabcd0003.6"] value ...
+ inst [ID or "KEY_0xabcd0003.7"] value ...
+ inst [ID or "KEY_0xabcd0005.0"] value ...
+ inst [ID or "KEY_0xabcd0005.1"] value ...
+ inst [ID or "KEY_0xabcd0005.2"] value ...
+ inst [ID or "KEY_0xabcd0005.3"] value ...
+ inst [ID or "KEY_0xabcd0005.4"] value ...
+ inst [ID or "KEY_0xabcd0005.5"] value ...
+ inst [ID or "KEY_0xabcd0005.6"] value ...
+ inst [ID or "KEY_0xabcd0005.7"] value ...
+ inst [ID or "KEY_0xabcd0007.0"] value ...
+ inst [ID or "KEY_0xabcd0007.1"] value ...
+ inst [ID or "KEY_0xabcd0007.2"] value ...
+ inst [ID or "KEY_0xabcd0007.3"] value ...
+ inst [ID or "KEY_0xabcd0007.4"] value ...
+ inst [ID or "KEY_0xabcd0007.5"] value ...
+ inst [ID or "KEY_0xabcd0007.6"] value ...
+ inst [ID or "KEY_0xabcd0007.7"] value ...
+Cascading Sets of Metrics ...
+Iteration: 0
+pmResult ... numpmid: 1
+ 1.29.2 (ipc.shm.nattch): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+pmResult ... numpmid: 2
+ 1.29.2 (ipc.shm.nattch): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+ 1.29.1 (ipc.shm.segsz): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+pmResult ... numpmid: 3
+ 1.29.2 (ipc.shm.nattch): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+ 1.29.1 (ipc.shm.segsz): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+ 1.31.1 (ipc.sem.nsems): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001"] value ...
+ inst [ID or "KEY_0xabcd0003"] value ...
+ inst [ID or "KEY_0xabcd0005"] value ...
+ inst [ID or "KEY_0xabcd0007"] value ...
+pmResult ... numpmid: 4
+ 1.29.2 (ipc.shm.nattch): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+ 1.29.1 (ipc.shm.segsz): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+ 1.31.1 (ipc.sem.nsems): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001"] value ...
+ inst [ID or "KEY_0xabcd0003"] value ...
+ inst [ID or "KEY_0xabcd0005"] value ...
+ inst [ID or "KEY_0xabcd0007"] value ...
+ 1.31.2 (ipc.sem.ncnt): numval: 32 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001.0"] value ...
+ inst [ID or "KEY_0xabcd0001.1"] value ...
+ inst [ID or "KEY_0xabcd0001.2"] value ...
+ inst [ID or "KEY_0xabcd0001.3"] value ...
+ inst [ID or "KEY_0xabcd0001.4"] value ...
+ inst [ID or "KEY_0xabcd0001.5"] value ...
+ inst [ID or "KEY_0xabcd0001.6"] value ...
+ inst [ID or "KEY_0xabcd0001.7"] value ...
+ inst [ID or "KEY_0xabcd0003.0"] value ...
+ inst [ID or "KEY_0xabcd0003.1"] value ...
+ inst [ID or "KEY_0xabcd0003.2"] value ...
+ inst [ID or "KEY_0xabcd0003.3"] value ...
+ inst [ID or "KEY_0xabcd0003.4"] value ...
+ inst [ID or "KEY_0xabcd0003.5"] value ...
+ inst [ID or "KEY_0xabcd0003.6"] value ...
+ inst [ID or "KEY_0xabcd0003.7"] value ...
+ inst [ID or "KEY_0xabcd0005.0"] value ...
+ inst [ID or "KEY_0xabcd0005.1"] value ...
+ inst [ID or "KEY_0xabcd0005.2"] value ...
+ inst [ID or "KEY_0xabcd0005.3"] value ...
+ inst [ID or "KEY_0xabcd0005.4"] value ...
+ inst [ID or "KEY_0xabcd0005.5"] value ...
+ inst [ID or "KEY_0xabcd0005.6"] value ...
+ inst [ID or "KEY_0xabcd0005.7"] value ...
+ inst [ID or "KEY_0xabcd0007.0"] value ...
+ inst [ID or "KEY_0xabcd0007.1"] value ...
+ inst [ID or "KEY_0xabcd0007.2"] value ...
+ inst [ID or "KEY_0xabcd0007.3"] value ...
+ inst [ID or "KEY_0xabcd0007.4"] value ...
+ inst [ID or "KEY_0xabcd0007.5"] value ...
+ inst [ID or "KEY_0xabcd0007.6"] value ...
+ inst [ID or "KEY_0xabcd0007.7"] value ...
+pmResult ... numpmid: 5
+ 1.29.2 (ipc.shm.nattch): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+ 1.29.1 (ipc.shm.segsz): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+ inst [ID or "KEY_0xabcd0002"] value ...
+ inst [ID or "KEY_0xabcd0004"] value ...
+ inst [ID or "KEY_0xabcd0006"] value ...
+ 1.31.1 (ipc.sem.nsems): numval: 4 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001"] value ...
+ inst [ID or "KEY_0xabcd0003"] value ...
+ inst [ID or "KEY_0xabcd0005"] value ...
+ inst [ID or "KEY_0xabcd0007"] value ...
+ 1.31.2 (ipc.sem.ncnt): numval: 32 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001.0"] value ...
+ inst [ID or "KEY_0xabcd0001.1"] value ...
+ inst [ID or "KEY_0xabcd0001.2"] value ...
+ inst [ID or "KEY_0xabcd0001.3"] value ...
+ inst [ID or "KEY_0xabcd0001.4"] value ...
+ inst [ID or "KEY_0xabcd0001.5"] value ...
+ inst [ID or "KEY_0xabcd0001.6"] value ...
+ inst [ID or "KEY_0xabcd0001.7"] value ...
+ inst [ID or "KEY_0xabcd0003.0"] value ...
+ inst [ID or "KEY_0xabcd0003.1"] value ...
+ inst [ID or "KEY_0xabcd0003.2"] value ...
+ inst [ID or "KEY_0xabcd0003.3"] value ...
+ inst [ID or "KEY_0xabcd0003.4"] value ...
+ inst [ID or "KEY_0xabcd0003.5"] value ...
+ inst [ID or "KEY_0xabcd0003.6"] value ...
+ inst [ID or "KEY_0xabcd0003.7"] value ...
+ inst [ID or "KEY_0xabcd0005.0"] value ...
+ inst [ID or "KEY_0xabcd0005.1"] value ...
+ inst [ID or "KEY_0xabcd0005.2"] value ...
+ inst [ID or "KEY_0xabcd0005.3"] value ...
+ inst [ID or "KEY_0xabcd0005.4"] value ...
+ inst [ID or "KEY_0xabcd0005.5"] value ...
+ inst [ID or "KEY_0xabcd0005.6"] value ...
+ inst [ID or "KEY_0xabcd0005.7"] value ...
+ inst [ID or "KEY_0xabcd0007.0"] value ...
+ inst [ID or "KEY_0xabcd0007.1"] value ...
+ inst [ID or "KEY_0xabcd0007.2"] value ...
+ inst [ID or "KEY_0xabcd0007.3"] value ...
+ inst [ID or "KEY_0xabcd0007.4"] value ...
+ inst [ID or "KEY_0xabcd0007.5"] value ...
+ inst [ID or "KEY_0xabcd0007.6"] value ...
+ inst [ID or "KEY_0xabcd0007.7"] value ...
+ 1.31.3 (ipc.sem.zcnt): numval: 32 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001.0"] value ...
+ inst [ID or "KEY_0xabcd0001.1"] value ...
+ inst [ID or "KEY_0xabcd0001.2"] value ...
+ inst [ID or "KEY_0xabcd0001.3"] value ...
+ inst [ID or "KEY_0xabcd0001.4"] value ...
+ inst [ID or "KEY_0xabcd0001.5"] value ...
+ inst [ID or "KEY_0xabcd0001.6"] value ...
+ inst [ID or "KEY_0xabcd0001.7"] value ...
+ inst [ID or "KEY_0xabcd0003.0"] value ...
+ inst [ID or "KEY_0xabcd0003.1"] value ...
+ inst [ID or "KEY_0xabcd0003.2"] value ...
+ inst [ID or "KEY_0xabcd0003.3"] value ...
+ inst [ID or "KEY_0xabcd0003.4"] value ...
+ inst [ID or "KEY_0xabcd0003.5"] value ...
+ inst [ID or "KEY_0xabcd0003.6"] value ...
+ inst [ID or "KEY_0xabcd0003.7"] value ...
+ inst [ID or "KEY_0xabcd0005.0"] value ...
+ inst [ID or "KEY_0xabcd0005.1"] value ...
+ inst [ID or "KEY_0xabcd0005.2"] value ...
+ inst [ID or "KEY_0xabcd0005.3"] value ...
+ inst [ID or "KEY_0xabcd0005.4"] value ...
+ inst [ID or "KEY_0xabcd0005.5"] value ...
+ inst [ID or "KEY_0xabcd0005.6"] value ...
+ inst [ID or "KEY_0xabcd0005.7"] value ...
+ inst [ID or "KEY_0xabcd0007.0"] value ...
+ inst [ID or "KEY_0xabcd0007.1"] value ...
+ inst [ID or "KEY_0xabcd0007.2"] value ...
+ inst [ID or "KEY_0xabcd0007.3"] value ...
+ inst [ID or "KEY_0xabcd0007.4"] value ...
+ inst [ID or "KEY_0xabcd0007.5"] value ...
+ inst [ID or "KEY_0xabcd0007.6"] value ...
+ inst [ID or "KEY_0xabcd0007.7"] value ...
+
+
+deliberate error check (no explicit profile) : No error
+pmResult ... numpmid: 1
+ 1.29.2 (ipc.shm.nattch): Explicit instance identifier(s) required
+
+
+deliberate error check (1 unknown instance) : No error
+pmResult ... numpmid: 1
+ 1.29.2 (ipc.shm.nattch): Unknown or illegal instance identifier
+
+
+deliberate error check (1 unknown instance + 1 known) : No error
+pmResult ... numpmid: 1
+ 1.29.2 (ipc.shm.nattch): numval: 1 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0000"] value ...
+
+
+deliberate error check (no explicit profile) : No error
+pmResult ... numpmid: 1
+ 1.31.1 (ipc.sem.nsems): Explicit instance identifier(s) required
+
+
+deliberate error check (1 unknown instance) : No error
+pmResult ... numpmid: 1
+ 1.31.1 (ipc.sem.nsems): No values returned!
+
+
+deliberate error check (1 unknown instance + 1 known) : No error
+pmResult ... numpmid: 1
+ 1.31.1 (ipc.sem.nsems): numval: 1 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001"] value ...
+
+
+deliberate error check (no explicit profile) : No error
+pmResult ... numpmid: 1
+ 1.31.2 (ipc.sem.ncnt): Explicit instance identifier(s) required
+
+
+deliberate error check (1 unknown instance) : No error
+pmResult ... numpmid: 1
+ 1.31.2 (ipc.sem.ncnt): No values returned!
+
+
+deliberate error check (1 unknown instance + 1 known) : No error
+pmResult ... numpmid: 1
+ 1.31.2 (ipc.sem.ncnt): numval: 1 valfmt: ? vlist[]:
+ inst [ID or "KEY_0xabcd0001.0"] value ...
diff --git a/qa/010 b/qa/010
new file mode 100755
index 0000000..432a176
--- /dev/null
+++ b/qa/010
@@ -0,0 +1,20 @@
+#! /bin/sh
+# PCP QA Test No. 010
+# exercise pmExtractValue
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# value is in hex (!) 0x7b == 123
+#
+src/xval -v 7b
diff --git a/qa/010.out b/qa/010.out
new file mode 100644
index 0000000..ad08fcf
--- /dev/null
+++ b/qa/010.out
@@ -0,0 +1,103 @@
+QA output created by 010
+
+Value: 123 0x000000000000007b
+(long) 123 => (long) 123
+(long) 123 => (ulong) 123
+(long) 123 => (longlong) 123
+(long) 123 => (ulonglong) 123
+(long) 123 => (float) 1.230000e+02
+(long) 123 => (double) 1.230000e+02
+(long) 123 => (char *) : Impossible value or scale conversion
+(long) 123 => (pmValueBlock *) : Impossible value or scale conversion
+(long) 123 => (pmEventArray) : Impossible value or scale conversion
+(long) 123 => (pmHighResEventArray) : Impossible value or scale conversion
+(ulong) 123 => (long) 123
+(ulong) 123 => (ulong) 123
+(ulong) 123 => (longlong) 123
+(ulong) 123 => (ulonglong) 123
+(ulong) 123 => (float) 1.230000e+02
+(ulong) 123 => (double) 1.230000e+02
+(ulong) 123 => (char *) : Impossible value or scale conversion
+(ulong) 123 => (pmValueBlock *) : Impossible value or scale conversion
+(ulong) 123 => (pmEventArray) : Impossible value or scale conversion
+(ulong) 123 => (pmHighResEventArray) : Impossible value or scale conversion
+(longlong) 123 => (long) 123
+(longlong) 123 => (ulong) 123
+(longlong) 123 => (longlong) 123
+(longlong) 123 => (ulonglong) 123
+(longlong) 123 => (float) 1.230000e+02
+(longlong) 123 => (double) 1.230000e+02
+(longlong) 123 => (char *) : Impossible value or scale conversion
+(longlong) 123 => (pmValueBlock *) : Impossible value or scale conversion
+(longlong) 123 => (pmEventArray) : Impossible value or scale conversion
+(longlong) 123 => (pmHighResEventArray) : Impossible value or scale conversion
+(ulonglong) 123 => (long) 123
+(ulonglong) 123 => (ulong) 123
+(ulonglong) 123 => (longlong) 123
+(ulonglong) 123 => (ulonglong) 123
+(ulonglong) 123 => (float) 1.230000e+02
+(ulonglong) 123 => (double) 1.230000e+02
+(ulonglong) 123 => (char *) : Impossible value or scale conversion
+(ulonglong) 123 => (pmValueBlock *) : Impossible value or scale conversion
+(ulonglong) 123 => (pmEventArray) : Impossible value or scale conversion
+(ulonglong) 123 => (pmHighResEventArray) : Impossible value or scale conversion
+(float) 1.230000e+02 => (long) 123
+(float) 1.230000e+02 => (ulong) 123
+(float) 1.230000e+02 => (longlong) 123
+(float) 1.230000e+02 => (ulonglong) 123
+(float) 1.230000e+02 => (float) 1.230000e+02
+(float) 1.230000e+02 => (double) 1.230000e+02
+(float) 1.230000e+02 => (char *) : Impossible value or scale conversion
+(float) 1.230000e+02 => (pmValueBlock *) : Impossible value or scale conversion
+(float) 1.230000e+02 => (pmEventArray) : Impossible value or scale conversion
+(float) 1.230000e+02 => (pmHighResEventArray) : Impossible value or scale conversion
+(double) 1.230000e+02 => (long) 123
+(double) 1.230000e+02 => (ulong) 123
+(double) 1.230000e+02 => (longlong) 123
+(double) 1.230000e+02 => (ulonglong) 123
+(double) 1.230000e+02 => (float) 1.230000e+02
+(double) 1.230000e+02 => (double) 1.230000e+02
+(double) 1.230000e+02 => (char *) : Impossible value or scale conversion
+(double) 1.230000e+02 => (pmValueBlock *) : Impossible value or scale conversion
+(double) 1.230000e+02 => (pmEventArray) : Impossible value or scale conversion
+(double) 1.230000e+02 => (pmHighResEventArray) : Impossible value or scale conversion
+(char *) "123" => (long) : Impossible value or scale conversion
+(char *) "123" => (ulong) : Impossible value or scale conversion
+(char *) "123" => (longlong) : Impossible value or scale conversion
+(char *) "123" => (ulonglong) : Impossible value or scale conversion
+(char *) "123" => (float) : Impossible value or scale conversion
+(char *) "123" => (double) : Impossible value or scale conversion
+(char *) "123" => (char *) "123"
+(char *) "123" => (pmValueBlock *) : Impossible value or scale conversion
+(char *) "123" => (pmEventArray) : Impossible value or scale conversion
+(char *) "123" => (pmHighResEventArray) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (long) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (ulong) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (longlong) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (ulonglong) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (float) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (double) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (char *) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (pmEventArray) : Impossible value or scale conversion
+(pmValueBlock *) [vlen=12] 0000007a 0000007b 0000007c => (pmHighResEventArray) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (long) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (ulong) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (longlong) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (ulonglong) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (float) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (double) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (char *) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (pmValueBlock *) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (pmEventArray) : Impossible value or scale conversion
+(pmEventArray) [1 event records] => (pmHighResEventArray) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (long) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (ulong) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (longlong) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (ulonglong) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (float) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (double) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (char *) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (pmValueBlock *) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (pmEventArray) : Impossible value or scale conversion
+(pmHighResEventArray) [1 event records] => (pmHighResEventArray) : Impossible value or scale conversion
diff --git a/qa/011 b/qa/011
new file mode 100755
index 0000000..af5a33c
--- /dev/null
+++ b/qa/011
@@ -0,0 +1,26 @@
+#! /bin/sh
+# PCP QA Test No. 011
+# do various fetches, and check for mem leaks
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+src/xxx \
+| $PCP_AWK_PROG '
+ { if ($3 > 32) {
+ print "Arrgh ... mem leak?"
+ print
+ }
+ else
+ print "OK"
+ }'
+
diff --git a/qa/011.out b/qa/011.out
new file mode 100644
index 0000000..45c4957
--- /dev/null
+++ b/qa/011.out
@@ -0,0 +1,2 @@
+QA output created by 011
+OK
diff --git a/qa/012 b/qa/012
new file mode 100755
index 0000000..7150f24
--- /dev/null
+++ b/qa/012
@@ -0,0 +1,79 @@
+#! /bin/sh
+# PCP QA Test No. 012
+# exercise __pmOpenLog
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = irix ]
+then
+ ln $seq.irix $seq.out || exit 1
+elif [ $PCP_PLATFORM = linux ]
+then
+ if [ $PCP_VER -lt 3702 ]
+ then
+ ln $seq.linux $seq.out || exit 1
+ else
+ ln $seq.linux.2 $seq.out || exit 1
+ fi
+elif [ $PCP_PLATFORM = darwin ]
+then
+ ln $seq.darwin $seq.out || exit 1
+elif [ $PCP_PLATFORM = solaris ]
+then
+ ln $seq.solaris $seq.out || exit 1
+else
+ _notrun "Need qualified output for $PCP_PLATFORM"
+fi
+
+trap "cd $here; rm -rf $tmp $tmp.* /tmp/chk.fout; exit" 0 1 2 3 15
+$sudo rm -rf $tmp $tmp.*
+mkdir $tmp
+cd $tmp
+
+_doit()
+{
+ echo
+ echo "--- fd=$fd ---"
+ $sudo rm -f /tmp/chk.fout
+ $here/src/chkopenlog $fd tmp.log >$tmp.1 2>$tmp.2
+ echo "stdout:" ; sed -f $tmp.sed $tmp.1
+ echo "stderr:" ; sed -f $tmp.sed $tmp.2
+ echo "log file:" ; sed -f $tmp.sed tmp.log
+ [ -f /tmp/chk.fout ] && ( echo "chk.fout:" ; sed -f $tmp.sed /tmp/chk.fout )
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.sed
+s/`hostname`/MYHOST/g
+s/$$/MYPID/g
+s/ started .*/ started .../
+s/ finished .*/ finished .../
+End-of-File
+
+echo "Case 1: should be error-free ..."
+for fd in 1 2 3
+do
+ _doit
+done
+
+echo
+echo "Case 2: __pmOpenLog expected to have problems ..."
+for fd in 1 2 3
+do
+ echo "THIS SHOULD NOT BE OVERWRITTEN" >tmp.log
+ chmod ugo-w tmp.log
+ chmod ugo-w .
+ _doit
+ chmod ugo+w .
+ rm -rf tmp.log
+done
diff --git a/qa/012.darwin b/qa/012.darwin
new file mode 100644
index 0000000..84ae240
--- /dev/null
+++ b/qa/012.darwin
@@ -0,0 +1,90 @@
+QA output created by 012
+Case 1: should be error-free ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+__pmOpenLog -> sts=1, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=1, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+__pmOpenLog -> sts=1, log tmp.log newstream fd=3, nextfd=4
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+
+Case 2: __pmOpenLog expected to have problems ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=0, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream fd=3, nextfd=4
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
diff --git a/qa/012.irix b/qa/012.irix
new file mode 100644
index 0000000..84ae240
--- /dev/null
+++ b/qa/012.irix
@@ -0,0 +1,90 @@
+QA output created by 012
+Case 1: should be error-free ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+__pmOpenLog -> sts=1, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=1, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+__pmOpenLog -> sts=1, log tmp.log newstream fd=3, nextfd=4
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+
+Case 2: __pmOpenLog expected to have problems ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=0, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream fd=3, nextfd=4
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
diff --git a/qa/012.linux b/qa/012.linux
new file mode 100644
index 0000000..7a57875
--- /dev/null
+++ b/qa/012.linux
@@ -0,0 +1,88 @@
+QA output created by 012
+Case 1: should be error-free ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+__pmOpenLog -> sts=1, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=1, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+__pmOpenLog -> sts=1, log tmp.log newstream fd=3, nextfd=4
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+
+Case 2: __pmOpenLog expected to have problems ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream fd=1, nextfd=3
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream fd=3, nextfd=4
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
diff --git a/qa/012.linux.2 b/qa/012.linux.2
new file mode 100644
index 0000000..84ae240
--- /dev/null
+++ b/qa/012.linux.2
@@ -0,0 +1,90 @@
+QA output created by 012
+Case 1: should be error-free ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+__pmOpenLog -> sts=1, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=1, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+__pmOpenLog -> sts=1, log tmp.log newstream fd=3, nextfd=4
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+
+Case 2: __pmOpenLog expected to have problems ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=0, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream fd=3, nextfd=4
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
diff --git a/qa/012.solaris b/qa/012.solaris
new file mode 100644
index 0000000..84ae240
--- /dev/null
+++ b/qa/012.solaris
@@ -0,0 +1,90 @@
+QA output created by 012
+Case 1: should be error-free ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+__pmOpenLog -> sts=1, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+log file:
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=1, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+__pmOpenLog -> sts=1, log tmp.log newstream fd=3, nextfd=4
+log file:
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+
+Case 2: __pmOpenLog expected to have problems ...
+
+--- fd=1 ---
+stdout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
+stderr:
+Starting with oldstream (stdout) fd=1, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream (stdout) fd=1, nextfd=3
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=2 ---
+stdout:
+stderr:
+This message on oldstream before __pmOpenLog() called
+Starting with oldstream (stderr) fd=2, nextfd=3
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+Log for chkopenlog on MYHOST started ...
+
+__pmOpenLog -> sts=0, log tmp.log newstream (stderr) fd=2, nextfd=3
+[a helpful little message]
+
+Log finished ...
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+
+--- fd=3 ---
+stdout:
+stderr:
+Starting with oldstream fd=3, nextfd=4
+chkopenlog: cannot open log "tmp.log" for writing : Permission denied
+__pmOpenLog -> sts=0, log tmp.log newstream fd=3, nextfd=4
+log file:
+THIS SHOULD NOT BE OVERWRITTEN
+chk.fout:
+This message on oldstream before __pmOpenLog() called
+Log for chkopenlog on MYHOST started ...
+
+[a helpful little message]
+
+Log finished ...
diff --git a/qa/013 b/qa/013
new file mode 100755
index 0000000..d21df5b
--- /dev/null
+++ b/qa/013
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 013
+# pmdumplog dumps core when fed a metadata file instead of a basename?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter_trace()
+{
+ sed \
+ -e '/chkLabel:/d' \
+ -e '/__pmLogChkLabel:/d' \
+ -e '/__pmLogLoadMeta:/d' \
+ -e '/__pmLogSetTime/d' \
+ -e '/__pmLogRead/d'
+}
+
+trap "rm -f $tmp.* /tmp/bogus.* /tmp/fungus.* /tmp/fungus /tmp/bogus; exit 0" 0 1 2 3 15
+
+# real QA test starts here
+echo "For PCP 1.1 Expect cannot open archive error message, and no core file ..."
+echo "For PCP 2.0 -l src/foo.meta is a synonym for -l src/foo, so this works ..."
+
+$sudo rm -f /tmp/bogus.* /tmp/fungus.* /tmp/fungus
+touch /tmp/bogus.verylongsuffix /tmp/fungus
+for dir in /etc /sbin /bin /usr/sbin /usr/bin
+do
+ [ ! -f $dir/init ] && continue
+ cp $dir/init /tmp/fungus
+ break
+done
+
+for bad in src/foo.meta /tmp/fungus /tmp/bogus
+do
+ echo
+ if [ -f $bad ]
+ then
+ echo "=== $bad: exists ==="
+ else
+ echo "=== $bad: does not exist ==="
+ fi
+ $sudo rm -f core*
+ pmdumplog -D 128 -l $bad 2>$tmp.err >$tmp.out
+
+ _filter_pmdumplog <$tmp.out
+ if [ -s $tmp.err ]
+ then
+ # need sort 'cause "inspect file" diag order is not determinisitic
+ echo "[filtered and sorted stderr]"
+ _filter_trace <$tmp.err | LC_COLLATE=POSIX sort
+ fi
+ _check_core
+done
diff --git a/qa/013.out b/qa/013.out
new file mode 100644
index 0000000..016ef0e
--- /dev/null
+++ b/qa/013.out
@@ -0,0 +1,27 @@
+QA output created by 013
+For PCP 1.1 Expect cannot open archive error message, and no core file ...
+For PCP 2.0 -l src/foo.meta is a synonym for -l src/foo, so this works ...
+
+=== src/foo.meta: exists ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+[filtered and sorted stderr]
+__pmLogChangeVol: change to volume 0
+__pmLogOpen: inspect file "src/foo.0"
+__pmLogOpen: inspect file "src/foo.index"
+__pmLogOpen: inspect file "src/foo.meta"
+
+=== /tmp/fungus: exists ===
+[filtered and sorted stderr]
+__pmLogOpen: Not found: data file "fungus.0" (or similar)
+__pmLogOpen: Not found: metadata file "fungus.meta"
+pmdumplog: Cannot open archive "/tmp/fungus": No such file or directory
+
+=== /tmp/bogus: does not exist ===
+[filtered and sorted stderr]
+__pmLogOpen: Not found: data file "bogus.0" (or similar)
+__pmLogOpen: Not found: metadata file "bogus.meta"
+__pmLogOpen: inspect file "/tmp/bogus.verylongsuffix"
+pmdumplog: Cannot open archive "/tmp/bogus": No such file or directory
diff --git a/qa/014 b/qa/014
new file mode 100755
index 0000000..462a961
--- /dev/null
+++ b/qa/014
@@ -0,0 +1,19 @@
+#! /bin/sh
+# PCP QA Test No. 014
+# check for multiple pmDesc entries in a log metadata file
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+pmdumplog -d src/foo | _sort_pmdumplog_d
+pmdumplog -d src/noti-foo | _sort_pmdumplog_d
diff --git a/qa/014.out b/qa/014.out
new file mode 100644
index 0000000..4ae9ea7
--- /dev/null
+++ b/qa/014.out
@@ -0,0 +1,53 @@
+QA output created by 014
+
+Descriptions for Metrics in the Log ...
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.5 (sample.colour)
+ Data Type: 32-bit int InDom: 29.1 0x7400001
+ Semantics: instant Units: none
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.46 (sample.lights)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 29.0.2 (sample.seconds)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+
+Descriptions for Metrics in the Log ...
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.5 (sample.colour)
+ Data Type: 32-bit int InDom: 29.1 0x7400001
+ Semantics: instant Units: none
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.46 (sample.lights)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 29.0.2 (sample.seconds)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
diff --git a/qa/015 b/qa/015
new file mode 100755
index 0000000..de81c49
--- /dev/null
+++ b/qa/015
@@ -0,0 +1,53 @@
+#! /bin/sh
+# PCP QA Test No. 015
+# exercise pmstore
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+for type in long longlong float double string aggregate
+do
+ for val in 123 123.456 1e10 9.87654321e40 0xdeadbeef 0x100000000 0xdeadbeefcafefeed zoo
+ do
+ echo ""
+ echo "stuff \"$val\" into sampledso.$type.write_me"
+ # Note: for long data, using strtol() and strtoll() need to
+ # worry about the sign bit ...
+ # -0x21524111 is 0xdeadbeef
+ # -0x2152411035010113 is 0xdeadbeefcafefeed
+ if [ $type = long -a "$val" = 0xdeadbeef ]
+ then
+ val=-0x21524111
+ elif [ $type = longlong -a "$val" = 0xdeadbeefcafefeed ]
+ then
+ val=-0x2152411035010113
+ elif [ $type = aggregate -a "$val" = 0xdeadbeefcafefeed ]
+ then
+ val=-0x2152411035010113
+ fi
+
+ if pmstore sampledso.$type.write_me $val
+ then
+ pminfo -f sampledso.$type.write_me \
+ | sed -e '/^$/d'
+ fi
+ done
+done 2>&1 \
+| sed \
+ -e 's/old value=.* new value=/old value=? new value=/' \
+ -e '/sampledso.aggregate/s/new value=.*\[/new value=XXX [/' \
+| $PCP_AWK_PROG '
+ /sampledso.aggregate/ { gotagg=1; print; next }
+ gotagg && /value/ { gotagg=0; sub(/value.*\[/, "value XXX["); print; next }
+ {print}'
diff --git a/qa/015.out b/qa/015.out
new file mode 100644
index 0000000..762c382
--- /dev/null
+++ b/qa/015.out
@@ -0,0 +1,187 @@
+QA output created by 015
+
+stuff "123" into sampledso.long.write_me
+sampledso.long.write_me old value=? new value=123
+sampledso.long.write_me
+ value 123
+
+stuff "123.456" into sampledso.long.write_me
+The value "123.456" is incompatible with the data type (PM_TYPE_32)
+
+stuff "1e10" into sampledso.long.write_me
+The value "1e10" is incompatible with the data type (PM_TYPE_32)
+
+stuff "9.87654321e40" into sampledso.long.write_me
+The value "9.87654321e40" is incompatible with the data type (PM_TYPE_32)
+
+stuff "0xdeadbeef" into sampledso.long.write_me
+sampledso.long.write_me old value=? new value=-559038737
+sampledso.long.write_me
+ value -559038737
+
+stuff "0x100000000" into sampledso.long.write_me
+The value "0x100000000" is out of range for the data type (PM_TYPE_32)
+
+stuff "0xdeadbeefcafefeed" into sampledso.long.write_me
+The value "0xdeadbeefcafefeed" is out of range for the data type (PM_TYPE_32)
+
+stuff "zoo" into sampledso.long.write_me
+The value "zoo" is incompatible with the data type (PM_TYPE_32)
+
+stuff "123" into sampledso.longlong.write_me
+sampledso.longlong.write_me old value=? new value=123
+sampledso.longlong.write_me
+ value 123
+
+stuff "123.456" into sampledso.longlong.write_me
+The value "123.456" is incompatible with the data type (PM_TYPE_64)
+
+stuff "1e10" into sampledso.longlong.write_me
+The value "1e10" is incompatible with the data type (PM_TYPE_64)
+
+stuff "9.87654321e40" into sampledso.longlong.write_me
+The value "9.87654321e40" is incompatible with the data type (PM_TYPE_64)
+
+stuff "0xdeadbeef" into sampledso.longlong.write_me
+sampledso.longlong.write_me old value=? new value=3735928559
+sampledso.longlong.write_me
+ value 3735928559
+
+stuff "0x100000000" into sampledso.longlong.write_me
+sampledso.longlong.write_me old value=? new value=4294967296
+sampledso.longlong.write_me
+ value 4294967296
+
+stuff "0xdeadbeefcafefeed" into sampledso.longlong.write_me
+sampledso.longlong.write_me old value=? new value=-2401053089206436115
+sampledso.longlong.write_me
+ value -2401053089206436115
+
+stuff "zoo" into sampledso.longlong.write_me
+The value "zoo" is incompatible with the data type (PM_TYPE_64)
+
+stuff "123" into sampledso.float.write_me
+sampledso.float.write_me old value=? new value=123
+sampledso.float.write_me
+ value 123
+
+stuff "123.456" into sampledso.float.write_me
+sampledso.float.write_me old value=? new value=123.456
+sampledso.float.write_me
+ value 123.456
+
+stuff "1e10" into sampledso.float.write_me
+sampledso.float.write_me old value=? new value=1e+10
+sampledso.float.write_me
+ value 1e+10
+
+stuff "9.87654321e40" into sampledso.float.write_me
+The value "9.87654321e40" is out of range for the data type (PM_TYPE_FLOAT)
+
+stuff "0xdeadbeef" into sampledso.float.write_me
+The value "0xdeadbeef" is incompatible with the data type (PM_TYPE_FLOAT)
+
+stuff "0x100000000" into sampledso.float.write_me
+The value "0x100000000" is incompatible with the data type (PM_TYPE_FLOAT)
+
+stuff "0xdeadbeefcafefeed" into sampledso.float.write_me
+The value "0xdeadbeefcafefeed" is incompatible with the data type (PM_TYPE_FLOAT)
+
+stuff "zoo" into sampledso.float.write_me
+The value "zoo" is incompatible with the data type (PM_TYPE_FLOAT)
+
+stuff "123" into sampledso.double.write_me
+sampledso.double.write_me old value=? new value=123
+sampledso.double.write_me
+ value 123
+
+stuff "123.456" into sampledso.double.write_me
+sampledso.double.write_me old value=? new value=123.456
+sampledso.double.write_me
+ value 123.456
+
+stuff "1e10" into sampledso.double.write_me
+sampledso.double.write_me old value=? new value=10000000000
+sampledso.double.write_me
+ value 10000000000
+
+stuff "9.87654321e40" into sampledso.double.write_me
+sampledso.double.write_me old value=? new value=9.87654321e+40
+sampledso.double.write_me
+ value 9.87654321e+40
+
+stuff "0xdeadbeef" into sampledso.double.write_me
+The value "0xdeadbeef" is incompatible with the data type (PM_TYPE_DOUBLE)
+
+stuff "0x100000000" into sampledso.double.write_me
+The value "0x100000000" is incompatible with the data type (PM_TYPE_DOUBLE)
+
+stuff "0xdeadbeefcafefeed" into sampledso.double.write_me
+The value "0xdeadbeefcafefeed" is incompatible with the data type (PM_TYPE_DOUBLE)
+
+stuff "zoo" into sampledso.double.write_me
+The value "zoo" is incompatible with the data type (PM_TYPE_DOUBLE)
+
+stuff "123" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="123"
+sampledso.string.write_me
+ value "123"
+
+stuff "123.456" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="123.456"
+sampledso.string.write_me
+ value "123.456"
+
+stuff "1e10" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="1e10"
+sampledso.string.write_me
+ value "1e10"
+
+stuff "9.87654321e40" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="9.87654321e40"
+sampledso.string.write_me
+ value "9.87654321e40"
+
+stuff "0xdeadbeef" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="0xdeadbeef"
+sampledso.string.write_me
+ value "0xdeadbeef"
+
+stuff "0x100000000" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="0x100000000"
+sampledso.string.write_me
+ value "0x100000000"
+
+stuff "0xdeadbeefcafefeed" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="0xdeadbeefcafefeed"
+sampledso.string.write_me
+ value "0xdeadbeefcafefeed"
+
+stuff "zoo" into sampledso.string.write_me
+sampledso.string.write_me old value=? new value="zoo"
+sampledso.string.write_me
+ value "zoo"
+
+stuff "123" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+
+stuff "123.456" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+
+stuff "1e10" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+
+stuff "9.87654321e40" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+
+stuff "0xdeadbeef" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+
+stuff "0x100000000" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+
+stuff "0xdeadbeefcafefeed" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+
+stuff "zoo" into sampledso.aggregate.write_me
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
diff --git a/qa/016 b/qa/016
new file mode 100755
index 0000000..36b5777
--- /dev/null
+++ b/qa/016
@@ -0,0 +1,39 @@
+#! /bin/sh
+# PCP QA Test No. 016
+# an instance domain that changes in an archive
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmdumplog -i src/mirage >$tmp 2>&1
+
+echo "For InDom 2.1 (pmcd.pmlogger.*) do not expect membership to change ..."
+echo "For InDom 29.2 (sample.bin) do not expect membership to change ..."
+echo "For InDom 29.3 (sample.drift) expect membership changes ..."
+( cat $tmp; echo "" ) \
+| $PCP_AWK_PROG '
+$1 == "InDom:" || NF == 0 { if (indom) {
+ if (num > 1) status = "membership changed"
+ else status = "membership DID NOT change"
+ print "InDom: " indom " " status
+ }
+ num = 0
+ indom = $2
+ }
+/instances/ { num++ }' \
+| LC_COLLATE=POSIX sort
+
+echo
+echo "Check for undefined instance indentifiers (expect none) ..."
+grep '?' $tmp
diff --git a/qa/016.out b/qa/016.out
new file mode 100644
index 0000000..a6286c4
--- /dev/null
+++ b/qa/016.out
@@ -0,0 +1,9 @@
+QA output created by 016
+For InDom 2.1 (pmcd.pmlogger.*) do not expect membership to change ...
+For InDom 29.2 (sample.bin) do not expect membership to change ...
+For InDom 29.3 (sample.drift) expect membership changes ...
+InDom: 2.1 membership DID NOT change
+InDom: 29.2 membership DID NOT change
+InDom: 29.3 membership changed
+
+Check for undefined instance indentifiers (expect none) ...
diff --git a/qa/017 b/qa/017
new file mode 100755
index 0000000..6b7e40f
--- /dev/null
+++ b/qa/017
@@ -0,0 +1,19 @@
+#! /bin/sh
+# PCP QA Test No. 017
+# check pmReconnect() in the absence of pmcd failure
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/chkconnect
diff --git a/qa/017.out b/qa/017.out
new file mode 100644
index 0000000..90c4b69
--- /dev/null
+++ b/qa/017.out
@@ -0,0 +1 @@
+QA output created by 017
diff --git a/qa/018 b/qa/018
new file mode 100755
index 0000000..671ef60
--- /dev/null
+++ b/qa/018
@@ -0,0 +1,22 @@
+#! /bin/sh
+# PCP QA Test No. 018
+# Check pmcd value malloc result
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/t_fetch 127
+
+# NOTE!!!!
+#
+# 127 is MAGIC and should not be a domain assigned to a PMDA in pmcd.options
diff --git a/qa/018.out b/qa/018.out
new file mode 100644
index 0000000..936c78a
--- /dev/null
+++ b/qa/018.out
@@ -0,0 +1,4 @@
+QA output created by 018
+pmid[0]: No PMCD agent for domain of request
+pmid[1]: No PMCD agent for domain of request
+pmid[2]: No PMCD agent for domain of request
diff --git a/qa/019 b/qa/019
new file mode 100755
index 0000000..e2f4b06
--- /dev/null
+++ b/qa/019
@@ -0,0 +1,164 @@
+#! /bin/sh
+# PCP QA Test No. 019
+# Exercse optional PMDA availability for PM_CONTEXT_LOCAL
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+
+rm -f $seq.out
+. ./localconfig
+rm -f $seq.out
+if [ $PCP_PLATFORM = linux ]
+then
+ if [ $PCP_VER -lt 3103 ]
+ then
+ ln $seq.linux.1 $seq.out || exit 1
+ else
+ # proc metrics may not be available
+ #
+ if pminfo proc.nprocs >/dev/null 2>&1
+ then
+ # available, but if not a DSO agent, then pminfo -L will
+ # know about the metric, but not find the PMDA
+ #
+ type=`pminfo -f pmcd.agent.type | sed -n -e '/"proc"/{
+s/.*value //
+p
+}'`
+ case "$type"
+ in
+ 0) # DSO
+ ln $seq.linux.2 $seq.out || exit 1
+ ;;
+ 2|4)# daemon
+ ln $seq.linux.4 $seq.out || exit 1
+ ;;
+ *)
+ echo "Botch ... don't understand proc PMDA type ($type)"
+ pminfo -f pmcd.agent.type
+ exit 1
+ ;;
+ esac
+ else
+ ln $seq.linux.3 $seq.out || exit 1
+ fi
+ fi
+elif [ $PCP_PLATFORM = darwin ]
+then
+ ln $seq.darwin $seq.out || exit 1
+elif [ $PCP_PLATFORM = solaris ]
+then
+ ln $seq.solaris $seq.out || exit 1
+else
+ echo "Error: no validated output for $PCP_PLATFORM"
+ exit 1
+fi
+
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/using .* kmem interface/d' \
+ | _filter_pmcd_log
+}
+
+# real QA test starts here
+
+# neither
+unset PCP_LITE_SAMPLE
+unset PMDA_LOCAL_SAMPLE
+unset PMDA_LOCAL_PROC
+echo "*** This should fail"
+echo "PCP_LITE_SAMPLE=$PCP_LITE_SAMPLE PMDA_LOCAL_SAMPLE=$PMDA_LOCAL_SAMPLE"
+pminfo -K clear -L -f 2>&1 \
+ sampledso.bin sampledso.long sampledso.longlong \
+ sampledso.float sampledso.double sampledso.string sampledso.aggregate \
+| _filter
+
+# PCP_LITE_SAMPLE set
+echo
+echo "*** This should work"
+PCP_LITE_SAMPLE=yes
+export PCP_LITE_SAMPLE
+echo "PCP_LITE_SAMPLE=$PCP_LITE_SAMPLE PMDA_LOCAL_SAMPLE=$PMDA_LOCAL_SAMPLE"
+$sudo pminfo -L -f 2>&1 \
+ sampledso.bin sampledso.long sampledso.longlong \
+ sampledso.float sampledso.double sampledso.string sampledso.aggregate \
+| _filter
+unset PCP_LITE_SAMPLE
+
+# PMDA_LOCAL_SAMPLE set
+echo
+echo "*** This should work"
+PMDA_LOCAL_SAMPLE=yes
+export PMDA_LOCAL_SAMPLE
+echo "PCP_LITE_SAMPLE=$PCP_LITE_SAMPLE PMDA_LOCAL_SAMPLE=$PMDA_LOCAL_SAMPLE"
+$sudo pminfo -L -f 2>&1 \
+ sampledso.bin sampledso.long sampledso.longlong \
+ sampledso.float sampledso.double sampledso.string sampledso.aggregate \
+| _filter
+unset PMDA_LOCAL_SAMPLE
+
+# both set
+echo
+echo "*** This should work"
+PMDA_LOCAL_SAMPLE=yes
+PCP_LITE_SAMPLE=yes
+export PMDA_LOCAL_SAMPLE PCP_LITE_SAMPLE
+echo "PCP_LITE_SAMPLE=$PCP_LITE_SAMPLE PMDA_LOCAL_SAMPLE=$PMDA_LOCAL_SAMPLE"
+$sudo pminfo -L -f 2>&1 \
+ sampledso.bin sampledso.long sampledso.longlong \
+ sampledso.float sampledso.double sampledso.string sampledso.aggregate \
+| _filter
+unset PMDA_LOCAL_SAMPLE PCP_LITE_SAMPLE
+
+# neither set
+echo
+echo "*** This should 1/3 work, proc[no] irix[yes] sampledso[n]"
+echo "PCP_LITE_SAMPLE=$PCP_LITE_SAMPLE PMDA_LOCAL_SAMPLE=$PMDA_LOCAL_SAMPLE"
+$sudo pminfo -K clear -L -f 2>&1 \
+ proc.nprocs kernel.all.cpu.idle kernel.all.load sampledso.float \
+| _filter \
+| sed -e '/value /{
+s/value -*[0-9][0-9]*\.[0-9][0-9]*/value NUMBER/g
+s/value -*[0-9][0-9]*/value NUMBER/g
+}'
+
+# PMDA_LOCAL_SAMPLE set
+echo
+echo "*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]"
+PMDA_LOCAL_SAMPLE=yes
+echo "PMDA_LOCAL_SAMPLE=$PMDA_LOCAL_SAMPLE"
+export PMDA_LOCAL_SAMPLE
+$sudo pminfo -L -f 2>&1 \
+ proc.nprocs kernel.all.cpu.idle kernel.all.load sampledso.float \
+| _filter \
+| sed -e '/value /{
+s/value -*[0-9][0-9]*\.[0-9][0-9]*/value NUMBER/g
+s/value -*[0-9][0-9]*/value NUMBER/g
+}'
+unset PMDA_LOCAL_SAMPLE
+
+# PMDA_LOCAL_SAMPLE and PMDA_LOCAL_PROC set
+echo
+echo "*** This should work, proc[yes] irix[yes] sampledso[yes]"
+PMDA_LOCAL_SAMPLE=yes
+PMDA_LOCAL_PROC=yes
+echo "PMDA_LOCAL_SAMPLE=$PMDA_LOCAL_SAMPLE PMDA_LOCAL_PROC=$PMDA_LOCAL_PROC"
+export PMDA_LOCAL_SAMPLE PMDA_LOCAL_PROC
+$sudo pminfo -L -f 2>&1 \
+ proc.nprocs kernel.all.cpu.idle kernel.all.load sampledso.float \
+| _filter \
+| sed -e '/value /{
+s/value -*[0-9][0-9]*\.[0-9][0-9]*/value NUMBER/g
+s/value -*[0-9][0-9]*/value NUMBER/g
+}'
+unset PMDA_LOCAL_SAMPLE PMDA_LOCAL_PROC
diff --git a/qa/019.darwin b/qa/019.darwin
new file mode 100644
index 0000000..62399bf
--- /dev/null
+++ b/qa/019.darwin
@@ -0,0 +1,689 @@
+QA output created by 019
+*** This should fail
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+sampledso.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should 1/3 work, proc[no] irix[yes] sampledso[n]
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+Error: proc.nprocs: Unknown metric name
+kernel.all.cpu.idle: pmLookupDesc: No PMCD agent for domain of request
+kernel.all.load: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes
+Error: proc.nprocs: Unknown metric name
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+*** This should work, proc[yes] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes PMDA_LOCAL_PROC=yes
+Error: proc.nprocs: Unknown metric name
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
diff --git a/qa/019.irix b/qa/019.irix
new file mode 100644
index 0000000..64ecaba
--- /dev/null
+++ b/qa/019.irix
@@ -0,0 +1,379 @@
+QA output created by 019
+*** This should fail
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+sampledso.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should 1/3 work, proc[no] irix[yes] sampledso[n]
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+proc.nprocs: pmLookupDesc: No PMCD agent for domain of request
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes
+proc.nprocs: pmLookupDesc: No PMCD agent for domain of request
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+*** This should work, proc[yes] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes PMDA_LOCAL_PROC=yes
+
+proc.nprocs
+ value NUMBER
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
diff --git a/qa/019.linux.1 b/qa/019.linux.1
new file mode 100644
index 0000000..7755506
--- /dev/null
+++ b/qa/019.linux.1
@@ -0,0 +1,701 @@
+QA output created by 019
+*** This should fail
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+sampledso.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should 1/3 work, proc[no] irix[yes] sampledso[n]
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+
+proc.nprocs
+ value NUMBER
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes
+
+proc.nprocs
+ value NUMBER
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+*** This should work, proc[yes] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes PMDA_LOCAL_PROC=yes
+
+proc.nprocs
+ value NUMBER
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
diff --git a/qa/019.linux.2 b/qa/019.linux.2
new file mode 100644
index 0000000..b9fdfa1
--- /dev/null
+++ b/qa/019.linux.2
@@ -0,0 +1,693 @@
+QA output created by 019
+*** This should fail
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+sampledso.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should 1/3 work, proc[no] irix[yes] sampledso[n]
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+proc.nprocs: pmLookupDesc: No PMCD agent for domain of request
+kernel.all.cpu.idle: pmLookupDesc: No PMCD agent for domain of request
+kernel.all.load: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes
+
+proc.nprocs
+ value NUMBER
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+*** This should work, proc[yes] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes PMDA_LOCAL_PROC=yes
+
+proc.nprocs
+ value NUMBER
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
diff --git a/qa/019.linux.3 b/qa/019.linux.3
new file mode 100644
index 0000000..62399bf
--- /dev/null
+++ b/qa/019.linux.3
@@ -0,0 +1,689 @@
+QA output created by 019
+*** This should fail
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+sampledso.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should 1/3 work, proc[no] irix[yes] sampledso[n]
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+Error: proc.nprocs: Unknown metric name
+kernel.all.cpu.idle: pmLookupDesc: No PMCD agent for domain of request
+kernel.all.load: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes
+Error: proc.nprocs: Unknown metric name
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+*** This should work, proc[yes] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes PMDA_LOCAL_PROC=yes
+Error: proc.nprocs: Unknown metric name
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
diff --git a/qa/019.linux.4 b/qa/019.linux.4
new file mode 100644
index 0000000..8b41dba
--- /dev/null
+++ b/qa/019.linux.4
@@ -0,0 +1,689 @@
+QA output created by 019
+*** This should fail
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+sampledso.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should 1/3 work, proc[no] irix[yes] sampledso[n]
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+proc.nprocs: pmLookupDesc: No PMCD agent for domain of request
+kernel.all.cpu.idle: pmLookupDesc: No PMCD agent for domain of request
+kernel.all.load: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes
+proc.nprocs: pmLookupDesc: No PMCD agent for domain of request
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+*** This should work, proc[yes] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes PMDA_LOCAL_PROC=yes
+proc.nprocs: pmLookupDesc: No PMCD agent for domain of request
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minute"] value NUMBER
+ inst [15 or "15 minute"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
diff --git a/qa/019.solaris b/qa/019.solaris
new file mode 100644
index 0000000..ae5cedb
--- /dev/null
+++ b/qa/019.solaris
@@ -0,0 +1,689 @@
+QA output created by 019
+*** This should fail
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+sampledso.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.long.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.longlong.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.double.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.null: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.hullo: pmLookupDesc: No PMCD agent for domain of request
+sampledso.aggregate.write_me: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should work
+PCP_LITE_SAMPLE=yes PMDA_LOCAL_SAMPLE=yes
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.one
+ value 1
+
+sampledso.long.ten
+ value 10
+
+sampledso.long.hundred
+ value 100
+
+sampledso.long.million
+ value 1000000
+
+sampledso.long.write_me
+ value 13
+
+sampledso.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.one
+ value 1
+
+sampledso.longlong.ten
+ value 10
+
+sampledso.longlong.hundred
+ value 100
+
+sampledso.longlong.million
+ value 1000000
+
+sampledso.longlong.write_me
+ value 13
+
+sampledso.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.one
+ value 1
+
+sampledso.float.ten
+ value 10
+
+sampledso.float.hundred
+ value 100
+
+sampledso.float.million
+ value 1000000
+
+sampledso.float.write_me
+ value 13
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.one
+ value 1
+
+sampledso.double.ten
+ value 10
+
+sampledso.double.hundred
+ value 100
+
+sampledso.double.million
+ value 1000000
+
+sampledso.double.write_me
+ value 13
+
+sampledso.double.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.double.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sampledso.string.null
+ value ""
+
+sampledso.string.hullo
+ value "hullo world!"
+
+sampledso.string.write_me
+ value "13"
+
+sampledso.aggregate.null
+ value "" []
+
+sampledso.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sampledso.aggregate.write_me
+ value "13" [3133]
+
+*** This should 1/3 work, proc[no] irix[yes] sampledso[n]
+PCP_LITE_SAMPLE= PMDA_LOCAL_SAMPLE=
+Error: proc.nprocs: Unknown metric name
+kernel.all.cpu.idle: pmLookupDesc: No PMCD agent for domain of request
+kernel.all.load: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.one: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.ten: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.hundred: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.million: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.write_me: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin: pmLookupDesc: No PMCD agent for domain of request
+sampledso.float.bin_ctr: pmLookupDesc: No PMCD agent for domain of request
+
+*** This should 2/3 work, proc[no] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes
+Error: proc.nprocs: Unknown metric name
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minutes"] value NUMBER
+ inst [15 or "15 minutes"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+*** This should work, proc[yes] irix[yes] sampledso[yes]
+PMDA_LOCAL_SAMPLE=yes PMDA_LOCAL_PROC=yes
+Error: proc.nprocs: Unknown metric name
+
+kernel.all.cpu.idle
+ value NUMBER
+
+kernel.all.load
+ inst [1 or "1 minute"] value NUMBER
+ inst [5 or "5 minutes"] value NUMBER
+ inst [15 or "15 minutes"] value NUMBER
+
+sampledso.float.one
+ value NUMBER
+
+sampledso.float.ten
+ value NUMBER
+
+sampledso.float.hundred
+ value NUMBER
+
+sampledso.float.million
+ value NUMBER
+
+sampledso.float.write_me
+ value NUMBER
+
+sampledso.float.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.float.bin_ctr
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
diff --git a/qa/020 b/qa/020
new file mode 100755
index 0000000..78cf2bb
--- /dev/null
+++ b/qa/020
@@ -0,0 +1,31 @@
+#! /bin/sh
+# PCP QA Test No. 020
+# sample and hinv together?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.product
+. ./common.filter
+. ./common.setup
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/using .* kmem interface/d' \
+ | _filter_pmcd_log
+}
+
+# real QA test starts here
+PCP_LITE_SAMPLE=yes
+export PCP_LITE_SAMPLE
+$sudo pminfo -L -f sampledso.bin hinv.ncpu 2>&1 \
+| _filter \
+| sed \
+ -e '/pcp\[/s/\[[0-9][0-9]*]/[PID]/' \
+ -e '/^ *value/s/[1-9][0-9]*/INTEGER/'
+
diff --git a/qa/020.out b/qa/020.out
new file mode 100644
index 0000000..695ab0e
--- /dev/null
+++ b/qa/020.out
@@ -0,0 +1,15 @@
+QA output created by 020
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+hinv.ncpu
+ value INTEGER
diff --git a/qa/021 b/qa/021
new file mode 100755
index 0000000..44e8a5e
--- /dev/null
+++ b/qa/021
@@ -0,0 +1,56 @@
+#! /bin/sh
+# PCP QA Test No. 021
+# test pmgenmap handling of comments
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+_strip()
+{
+ $PCP_AWK_PROG '
+/Built/ { print; name = 1; next }
+name == 1 { print "<filename goes in here>"; name = 0; date = 1; next }
+date == 1 { print "<date goes in here>"; date = 0; next }
+ { print }'
+}
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File >$tmp.spec
+# leading single line comment
+foo {
+ a.b.c ONE
+ d.e.f.g TWO
+ # embedded single line comment
+ xx.yy.zz THREE
+}
+# trailing block of
+# multi-lines
+# comments
+End-of-File
+
+pmgenmap $tmp.spec | _strip
+
+cat <<End-of-File >$tmp.spec
+# leading block of
+# multi-lines
+# comments
+foo {
+ a.b.c ONE
+ d.e.f.g TWO
+ # embedded block of multi-lines
+ # comments and boring pad text
+ xx.yy.zz THREE
+}
+# trailing single line comment
+End-of-File
+
+pmgenmap $tmp.spec | _strip
diff --git a/qa/021.out b/qa/021.out
new file mode 100644
index 0000000..587da94
--- /dev/null
+++ b/qa/021.out
@@ -0,0 +1,56 @@
+QA output created by 021
+/*
+ * Performance Metrics Name Space Map
+ * Built by pmgenmap from the file
+<filename goes in here>
+<date goes in here>
+ *
+ * Do not edit this file!
+ */
+
+/* leading single line comment */
+char *foo[] = {
+#define ONE 0
+ "a.b.c",
+#define TWO 1
+ "d.e.f.g",
+/* embedded single line comment */
+#define THREE 2
+ "xx.yy.zz",
+
+};
+
+/*
+ * trailing block of
+ * multi-lines
+ * comments
+ */
+/*
+ * Performance Metrics Name Space Map
+ * Built by pmgenmap from the file
+<filename goes in here>
+<date goes in here>
+ *
+ * Do not edit this file!
+ */
+
+/*
+ * leading block of
+ * multi-lines
+ * comments
+ */
+char *foo[] = {
+#define ONE 0
+ "a.b.c",
+#define TWO 1
+ "d.e.f.g",
+/*
+ * embedded block of multi-lines
+ * comments and boring pad text
+ */
+#define THREE 2
+ "xx.yy.zz",
+
+};
+
+/* trailing single line comment */
diff --git a/qa/022 b/qa/022
new file mode 100755
index 0000000..1755c81
--- /dev/null
+++ b/qa/022
@@ -0,0 +1,145 @@
+#! /bin/sh
+# PCP QA Test No. 022
+# proc PMDA exerciser
+#
+# Copyright (c) 2013-2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
+
+# see if unix domain sockets are available (permissions)
+_get_libpcp_config
+target="-h localhost"
+$unix_domain_sockets && target="-h unix:"
+
+rm -f $seq.out $seq.full
+test -f $seq.out.$PCP_PLATFORM || _notrun "No validated output for $PCP_PLATFORM"
+ln $seq.out.$PCP_PLATFORM $seq.out
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmids()
+{
+ sed \
+ -e 's/indom=[0-9][0-9]* \[/indom=INDOM [/g' \
+ -e 's/3\.[0-9][0-9]*\.[0-9][0-9]*/PMID/g' \
+ -e 's/\[3\.9]/[INDOM]/g' \
+ -e 's/60\.[0-9][0-9]*\.[0-9][0-9]*/PMID/g' \
+ -e 's/\[60\.9]/[INDOM]/g'
+}
+
+_proc_filter()
+{
+ input=$1
+
+ # Set variables pid, ppid, cpid for process ids
+ eval `grep '^pid=' $input`
+ eval `grep '^cpid=' $input`
+
+ sed < $input \
+ -e '/proc.memory.*.txt/s/valfmt: [01]/valfmt: 0-or-1/' \
+ -e '/proc\.psinfo\.[us]time/s/valfmt: [01]/valfmt: 0-or-1/' \
+ -e '/unknown pid/d' \
+ -e 's/^/ /' \
+ -e 's/$/ /' \
+ -e "s/\([^0-9]\)0*$pid\([^0-9]\)/\1PID\2/g" \
+ -e "s/\([^0-9]\)0*$ppid\([^0-9]\)/\1PPID\2/g" \
+ -e "s/\([^0-9]\)0*$cpid\([^0-9]\)/\1CPID\2/g" \
+ -e "s,$PCP_RUN_DIR/pmcd.socket,localhost," \
+ -e 's/^ //' \
+ -e 's/ $//' \
+ -e 's/fd=[0-9][0-9]*/fd=N/g' \
+ -e 's/refcnt=[0-9]/refcnt=N/g' \
+ -e 's/inst \[.*\] value/inst [NNN] value/' \
+ -e '/value /{
+ s/value [0-9][0-9]*/value INTEGER/
+ s/value ".*"/value STRING/
+ s/value \[.*\]/value BINARYDATA/
+ }' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ \
+ | $PCP_AWK_PROG '
+ /End Fetch Over Entire Instance Domain/ { all = 0; print; next; }
+ /Fetch Over Entire Instance Domain/ { all = 1 }
+ all == 1 && / inst \[/ { next }
+ all == 1 && /] value / { next }
+ all == 1 && $3 == "numval:" { $4 = "LOTS" }
+ { print }' \
+ | _filter_pmids
+
+}
+
+# real QA test starts here
+
+echo "=== pminfo -F output ===" >$seq.full
+
+# try fetching all proc metrics
+# cull out the not supported msg component
+pminfo $target -F proc \
+| tee -a $seq.full \
+| _inst_value_filter \
+| sed -e '/value/d' \
+ -e '/not supported/d' \
+ -e '/instance identifier/d' \
+ -e '/^[ \t]*$/d' \
+ -e '/DISAPPEARED/d' \
+ -e '/^proc\.fd\.count$/d'
+
+src/proc_test $target \
+ proc.psinfo.utime \
+ proc.psinfo.stime \
+ proc.memory.rss \
+ proc.memory.size \
+ > $tmp.out 2>&1
+code=$?
+
+echo >>$seq.full
+echo "=== src/proc_test output ===" >>$seq.full
+cat $tmp.out >>$seq.full
+
+_proc_filter $tmp.out
+
+if [ $code != 0 ]
+then
+ echo $0: FAILED proc_test exit status = $code
+ echo $0: see $seq.full
+ exit 1
+fi
+
+#
+# fetch all instances for one metric in each cluster
+# if new clusters are added, add more here
+#
+echo ""
+echo "All instances for selected metrics ..."
+pminfo $target -F 2>$tmp.err \
+ proc.nprocs \
+ proc.psinfo.sname \
+ proc.memory.textrss \
+ proc.runq.sleeping \
+| sed \
+ -e '/Error: proc_instance: unknown pid:/d' \
+ -e '/^ *value /d' \
+ -e '/^ *inst /d' \
+ -e '/^"] value/d'
+
+sed -e '/unknown pid/d' $tmp.err > $tmp.err1
+
+if [ -s $tmp.err1 ]
+then
+ echo Following is unexpected stderr output from pminfo \| sed
+ echo "--------"
+ cat $tmp.err1
+ echo "--------"
+fi
+
+exit 0
diff --git a/qa/022.out.linux b/qa/022.out.linux
new file mode 100644
index 0000000..42d53a8
--- /dev/null
+++ b/qa/022.out.linux
@@ -0,0 +1,198 @@
+QA output created by 022
+proc.nprocs
+proc.psinfo.pid
+proc.psinfo.cmd
+proc.psinfo.sname
+proc.psinfo.ppid
+proc.psinfo.pgrp
+proc.psinfo.session
+proc.psinfo.tty
+proc.psinfo.tty_pgrp
+proc.psinfo.flags
+proc.psinfo.minflt
+proc.psinfo.cmin_flt
+proc.psinfo.maj_flt
+proc.psinfo.cmaj_flt
+proc.psinfo.utime
+proc.psinfo.stime
+proc.psinfo.cutime
+proc.psinfo.cstime
+proc.psinfo.priority
+proc.psinfo.nice
+proc.psinfo.start_time
+proc.psinfo.vsize
+proc.psinfo.rss
+proc.psinfo.rss_rlim
+proc.psinfo.start_code
+proc.psinfo.end_code
+proc.psinfo.start_stack
+proc.psinfo.esp
+proc.psinfo.eip
+proc.psinfo.signal
+proc.psinfo.blocked
+proc.psinfo.sigignore
+proc.psinfo.sigcatch
+proc.psinfo.wchan
+proc.psinfo.nswap
+proc.psinfo.cnswap
+proc.psinfo.exit_signal
+proc.psinfo.processor
+proc.psinfo.ttyname
+proc.psinfo.wchan_s
+proc.psinfo.psargs
+proc.psinfo.signal_s
+proc.psinfo.blocked_s
+proc.psinfo.sigignore_s
+proc.psinfo.sigcatch_s
+proc.psinfo.threads
+proc.psinfo.cgroups
+proc.psinfo.labels
+proc.memory.size
+proc.memory.rss
+proc.memory.share
+proc.memory.textrss
+proc.memory.librss
+proc.memory.datrss
+proc.memory.dirty
+proc.memory.maps
+proc.memory.vmsize
+proc.memory.vmlock
+proc.memory.vmrss
+proc.memory.vmdata
+proc.memory.vmstack
+proc.memory.vmexe
+proc.memory.vmlib
+proc.memory.vmswap
+proc.runq.runnable
+proc.runq.blocked
+proc.runq.sleeping
+proc.runq.stopped
+proc.runq.swapped
+proc.runq.defunct
+proc.runq.unknown
+proc.runq.kernel
+proc.id.uid
+proc.id.euid
+proc.id.suid
+proc.id.fsuid
+proc.id.gid
+proc.id.egid
+proc.id.sgid
+proc.id.fsgid
+proc.id.uid_nm
+proc.id.euid_nm
+proc.id.suid_nm
+proc.id.fsuid_nm
+proc.id.gid_nm
+proc.id.egid_nm
+proc.id.sgid_nm
+proc.id.fsgid_nm
+proc.io.rchar
+proc.io.wchar
+proc.io.syscr
+proc.io.syscw
+proc.io.read_bytes
+proc.io.write_bytes
+proc.io.cancelled_write_bytes
+proc.schedstat.cpu_time
+proc.schedstat.run_delay
+proc.schedstat.pcount
+proc.control.all.threads
+proc.control.perclient.threads
+proc.control.perclient.cgroups
+pid=PID ppid=PPID
+metrics[0] = <proc.psinfo.utime>
+metrics[1] = <proc.psinfo.stime>
+metrics[2] = <proc.memory.rss>
+metrics[3] = <proc.memory.size>
+
+==================
+=== Test: PMNS ===
+==================
+
+=========================
+=== End Of Test: PMNS ===
+=========================
+
+==================
+=== Test: desc ===
+==================
+
+=========================
+=== End Of Test: desc ===
+=========================
+
+======================
+=== Test: instance ===
+======================
+cpid=CPID
+
+--- GetInDom ---
+
+--- LookupInDom ---
+ Death of child detected, pid=CPID
+
+--- NameInDom ---
+ Death of child detected
+
+=============================
+=== End Of Test: instance ===
+=============================
+
+===========================
+=== Test: profile/fetch ===
+===========================
+
+--- Check profile in context dump... ---
+Dump Contexts: current context = 0
+Context[0] host localhost: pmcd=CONNECTED profile=NOT_SENT fd=N refcnt=N origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=INDOM [INDOM] state=EXCLUDE 2 instances
+ Instances: [PID] [PPID]
+--- End Check profile in context dump... ---
+
+--- Fetch Over Restricted Instance Domain ... ---
+pmResult ... numpmid: 4
+ PMID (proc.psinfo.utime): numval: 2 valfmt: 0-or-1 vlist[]:
+ inst [NNN] value INTEGER
+ inst [NNN] value INTEGER
+ PMID (proc.psinfo.stime): numval: 2 valfmt: 0-or-1 vlist[]:
+ inst [NNN] value INTEGER
+ inst [NNN] value INTEGER
+ PMID (proc.memory.rss): numval: 2 valfmt: 0 vlist[]:
+ inst [NNN] value INTEGER
+ inst [NNN] value INTEGER
+ PMID (proc.memory.size): numval: 2 valfmt: 0 vlist[]:
+ inst [NNN] value INTEGER
+ inst [NNN] value INTEGER
+--- End Fetch Over Restricted Instance Domain ... ---
+
+--- Fetch Over Entire Instance Domain ... ---
+pmResult ... numpmid: 4
+PMID (proc.psinfo.utime): numval: LOTS valfmt: 0-or-1 vlist[]:
+PMID (proc.psinfo.stime): numval: LOTS valfmt: 0-or-1 vlist[]:
+PMID (proc.memory.rss): numval: LOTS valfmt: 0 vlist[]:
+PMID (proc.memory.size): numval: LOTS valfmt: 0 vlist[]:
+--- End Fetch Over Entire Instance Domain ... ---
+
+==================================
+=== End Of Test: profile/fetch ===
+==================================
+
+===================
+=== Test: store ===
+===================
+
+==========================
+=== End Of Test: store ===
+==========================
+
+All instances for selected metrics ...
+
+proc.nprocs
+
+proc.psinfo.sname
+
+proc.memory.textrss
+
+proc.runq.sleeping
diff --git a/qa/023 b/qa/023
new file mode 100755
index 0000000..ad56f5f
--- /dev/null
+++ b/qa/023
@@ -0,0 +1,280 @@
+#! /bin/sh
+# PCP QA Test No. 023
+# Test PMCD's PMDA timeout behaviour
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+rm -f $seq.out
+if [ "$ipv6" = "true" ]; then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+
+BINFMT=unknown-obj
+which pmobjstyle >/dev/null 2>&1 && BINFMT=`pmobjstyle`
+
+_filter_log()
+{
+ sleep 3
+ _filter_pmcd_log <./pmcd.log \
+ | sed \
+ -e '/^DATA: from client/d' \
+ -e 's/Cannot open 000000660066: No such file or directory//' \
+ -e 's/^$//' \
+ -e '/^00[08]:/d' \
+ -e '/started PMDA ora_/d' \
+ -e '/cmd=\/usr\/pcp\/lib\/pmdaoracle7/d' \
+ -e '/started PMDA watch/d' \
+ -e '/cmd=\/usr\/pcp\/lib\/pmdawatch/d' \
+ -e '/pmGetPDU/{
+s/\[[0-9][0-9]*]/[PID]/
+s/from=.*/from=PID/
+}' \
+ -e '/_pmHaveMoreInput/{
+s/\[[0-9][0-9]*]/[PID]/
+s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
+}' \
+ -e '/Piggy-back/{
+s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
+s/from=.*/from=PID/
+}' \
+ -e '/pmXmitPDU/s/\[[0-9][0-9]*]/[PID]/' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/value /{
+s/value [0-9][0-9]*/value INTEGER/
+}' \
+ -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;g" \
+ -e 's#/usr/pcp/lib/mips#mips#' \
+ -e 's#/usr/lib/pcp/mips#mips#' \
+ -e "s/$BINFMT/ISA/g" \
+ -e '/access violation from host/d' \
+ -e '/endclient client.* No permission/d' \
+ -e 's/ while attempting to read 12 bytes out of 12 in .*on fd/ on fd/' \
+ -e 's/fd=[0-9][0-9]*/fd=FD/g' \
+ -e "s;$here/src/;;" \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ -e '/unix:/d' \
+ | $PCP_AWK_PROG '
+$3 ~ /^[0-9][0-9]*$/ { $3 = "A_PID"; }
+/Host access list:/ { localHostPrinted = 0 }
+$1 == "y" && $2 = "y" && $8 == "localhost" {
+ if (! localHostPrinted) {
+ localHostPrinted = 1
+ $5 = "IP-addr-in-hex"; $6 = "Host-mask"
+ }
+ else next
+ }
+/pipe cmd=/ { $4 = "FD"; $5 = "FD" }
+ { print }' \
+ | sed -e '/^pmcd 2 A_PID /s/ A_PID .*/ A_PID .../'
+}
+
+CONFIG=$PCP_PMCDCONF_PATH
+TMP_CONFIG=$tmp/conf.tmp
+SAVE_CONFIG=$tmp/pmcd.conf.save
+[ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+LOGCONTROL="$PCP_PMLOGGERCONTROL_PATH"
+SAVE_LOGCONTROL=$tmp/control.save
+signal=$PCP_BINADM_DIR/pmsignal
+_needclean=true
+
+rm -rf $tmp $tmp.*
+mkdir $tmp
+chmod ugo+rwx $tmp
+cd $tmp
+
+SAVE_LOGGER=`_get_config pmlogger`
+[ -f $LOGCONTROL ] && $sudo mv $LOGCONTROL $SAVE_LOGCONTROL
+
+cleanup()
+{
+ echo >>$here/$seq.full
+ echo "pmcd.log at cleanup" >>$here/$seq.full
+ cat pmcd.log >>$here/$seq.full
+ cd $here
+ if $_needclean
+ then
+ _needclean=false
+ $sudo $signal -a -s TERM pmcd
+
+ [ -f $SAVE_CONFIG ] && $sudo mv $SAVE_CONFIG $CONFIG
+ echo "=== restored $CONFIG ===" >>$here/$seq.full
+ cat $CONFIG >>$here/$seq.full
+ [ -f $SAVE_LOGCONTROL ] && $sudo mv $SAVE_LOGCONTROL $LOGCONTROL
+ echo "=== restored $LOGCONTROL ===" >>$here/$seq.full
+ cat $LOGCONTROL >>$here/$seq.full
+ [ ! -z "$SAVE_LOGGER" ] && _change_config pmlogger $SAVE_LOGGER
+ echo "Restart and ping pmcd ..."
+ unset PMCD_PORT # don't worry about preserving just get rid of it
+ unset PMCD_SOCKET
+ $sudo $PCP_RC_DIR/pcp restart \
+ | tee -a $here/$seq.full \
+ | _filterall_pcp_start \
+ | sed -e '/Waiting for pmcd to terminate/d'
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ pmprobe pmcd.control.debug
+ sleepers=`ps $PCP_PS_ALL_FLAGS | grep '[d]umb_pmda' | $PCP_AWK_PROG '$3 == 1 { print $2 }'`
+ [ ! -z "$sleepers" ] && $sudo $signal -s TERM $sleepers
+ fi
+ rm -rf $tmp $tmp.*
+}
+
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+rm -f $here/$seq.full
+
+# real QA test starts here
+
+# Get a domain number for the 'fake_kernel' pmda
+FAKE_DOM=`pminfo -m hinv.ncpu | $PCP_AWK_PROG '{split ($3,d,"."); print d[1];}'`
+
+# pick a tcp port that is not in use
+#
+port=`_get_port tcp 4340 4350`
+if [ -z "$port" ]
+then
+ echo "Arrgh ... no free TCP port in the range 4340 ... 4350"
+ exit 1
+fi
+
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+_change_config pmlogger off
+$sudo $signal -a -s TERM pmie 2>/dev/null
+$sudo $signal -a -s TERM pmlogger 2>/dev/null
+
+# Create a fake namespace to force pminfo to query the fake agent
+FAKE_NS=$tmp/$seq.fake_ns
+
+echo 'root { hinv } ' > $FAKE_NS
+echo 'hinv { ncpu 1:0:1 }' >> $FAKE_NS
+
+# Make our own version of pmcd.conf with dummy agents that will time out.
+# Copy the pmcd PMDA from the original pmcd.conf so that we can check pmcd's
+# timeouts by storing into pmcd.control.timeout
+# NOTE: none of the domains should clash with the pmcd PMDA (domain 2) or the
+# sample agent (domain 254). These agents will be appended to the file.
+#
+cat <<EOF >$TMP_CONFIG
+# Created by QA $seq
+fake_irix 1 pipe binary $here/src/dumb_pmda -d 1 fake_irix
+fake_proc 3 pipe binary $here/src/dumb_pmda -d 3 fake_proc
+fake_cisco 5 pipe binary $here/src/dumb_pmda -d 5 fake_cisco
+fake_six 6 pipe binary $here/src/dumb_pmda -d 6 fake_six
+EOF
+sed -n <$CONFIG >>$TMP_CONFIG \
+ -e '/^#/d' \
+ -e '/pmda_pmcd/s/[ ][ ]*/ /gp' \
+ -e '/pmdapmcd/s/[ ][ ]*/ /gp'
+cat <<EOF >>$TMP_CONFIG
+[access]
+allow localhost : all;
+disallow * : all;
+EOF
+
+$sudo mv $CONFIG $SAVE_CONFIG
+$sudo mv $TMP_CONFIG $CONFIG
+
+# very odd inode update problem on kenj-pc with one variant of the Linux
+# 2.6.11 kernel ... this should be 100% benign for everyone else
+#
+sync
+
+echo '$PCP_PMCDCONF_PATH contains:' | sed -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;"
+echo '<BEGIN>'
+sed <$CONFIG \
+ -e '/^pmcd 2 /s/2 .*/2 .../' \
+ -e "s;$here/src/;;"
+echo '<END>'
+
+# Note: start pmcd with -f so that its PID stays the same (no daemon)
+#
+PMCD_PORT=$port
+PATH=$PATH:$here/src
+PMCD_SOCKET=$tmp/pmcd.socket
+export PMCD_PORT PATH PMCD_SOCKET
+$PCP_PMCD_PROG -f -t 2 &
+pmcd=$!
+if [ -d $PCP_RUN_DIR ]
+then
+ echo "$pmcd" >$tmp.tmp
+ $sudo cp $tmp.tmp $PCP_RUN_DIR/pmcd.pid
+fi
+
+# Sleep 3 sec for each fake pmda
+sleep 15
+_wait_for_pmcd
+_filter_log
+echo "pmcd.log after pmcd first started" >>$here/$seq.full
+cat pmcd.log >>$here/$seq.full
+
+# Get pmcd to stop the fake_kernel PMDA by asking for a metric from it.
+# Sleep won't do anything, so it'll be timed out returning an IPC protocol
+# failure. The next fetch for the domain will return a "No agent for
+# domain..." error.
+#
+echo
+echo "Restart dead agent test"
+echo "Expect \"IPC protocol failure\" then \"No agent for domain...\":"
+pminfo -n $FAKE_NS -d hinv.ncpu
+pminfo -n $FAKE_NS -d hinv.ncpu
+
+pminfo -f pmcd.agent.status
+echo
+
+# Check the functionality of pmcd.control.timeout. agenttimeout sets the pmcd
+# agenttimeout for a specified domain to a given timeout, then fetches from
+# the domain, expecting the agent to timeout and finally checks the timeout
+# against the elapsed time for the fetch.
+# Usage: agenttimeout domain timeout
+#
+echo
+echo "pmcd.control.timeout tests"
+$here/src/agenttimeout 5 3
+$here/src/agenttimeout 6 8
+#
+# Be nice and set it back to 2 so that subsequent timeouts happen more quickly
+#
+pmstore pmcd.control.timeout 2
+
+pminfo -f pmcd.agent.status
+echo
+
+# Get PMCD to restart any deceased agents. (The config file hasn't changed)
+#
+sleep 1
+$signal -s HUP $pmcd
+
+# Sleep 3 sec for each fake pmda in the config
+sleep 15
+_wait_for_pmcd
+_filter_log
+echo >>$here/$seq.full
+echo "pmcd.log after pmcd SIGHUP" >>$here/$seq.full
+cat pmcd.log >>$here/$seq.full
+
+pminfo -f pmcd.agent.status
+echo
+
+# If agent not restarted then both messages will be "no agent for domain..."
+#
+echo "Expect \"IPC protocol failure\" then \"No PMCD agent...\":"
+pminfo -n $FAKE_NS -d hinv.ncpu
+pminfo -n $FAKE_NS -d hinv.ncpu
+
+pminfo -f pmcd.agent.status
+echo
+
+status=0
diff --git a/qa/023.out.1 b/qa/023.out.1
new file mode 100644
index 0000000..6d1da79
--- /dev/null
+++ b/qa/023.out.1
@@ -0,0 +1,148 @@
+QA output created by 023
+Waiting for pmcd to terminate ...
+$PCP_PMCDCONF_PATH contains:
+<BEGIN>
+# Created by QA 023
+fake_irix 1 pipe binary dumb_pmda -d 1 fake_irix
+fake_proc 3 pipe binary dumb_pmda -d 3 fake_proc
+fake_cisco 5 pipe binary dumb_pmda -d 5 fake_cisco
+fake_six 6 pipe binary dumb_pmda -d 6 fake_six
+pmcd 2 ...
+[access]
+allow localhost : all;
+disallow * : all;
+<END>
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID ...
+fake_proc 3 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 3 fake_proc
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_six 6 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 6 fake_six
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y 1 A_PID 0 IP-addr-in-hex Host-mask 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD A_PID inet INADDR_ANY
+
+Restart dead agent test
+Expect "IPC protocol failure" then "No agent for domain...":
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+hinv.ncpu: pmLookupDesc: No PMCD agent for domain of request
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 8
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 0
+ inst [6 or "fake_six"] value 0
+
+
+pmcd.control.timeout tests
+Agent timeout test, domain = 5, timeout = 3
+ timeout is now 3 seconds
+Agent timeout test, domain = 6, timeout = 8
+ timeout is now 8 seconds
+pmcd.control.timeout old value=8 new value=2
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 8
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 8
+ inst [6 or "fake_six"] value 8
+
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID ...
+fake_proc 3 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 3 fake_proc
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_six 6 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 6 fake_six
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y 1 A_PID 0 IP-addr-in-hex Host-mask 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD A_PID inet INADDR_ANY
+[DATE] pmcd(PID) Warning: pduread: timeout (after 2.000 sec) on fd=FD
+Cleanup "fake_irix" agent (dom 1): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Warning: pduread: timeout (after 3.000 sec) on fd=FD
+Cleanup "fake_cisco" agent (dom 5): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Warning: pduread: timeout (after 8.000 sec) on fd=FD
+Cleanup "fake_six" agent (dom 6): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+ == ======================================== ======= =================
+
+Configuration file '$PCP_PMCDCONF_PATH' unchanged
+Restarting any deceased agents:
+ "fake_irix" agent
+ "fake_cisco" agent
+ "fake_six" agent
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID ...
+fake_proc 3 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 3 fake_proc
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_six 6 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 6 fake_six
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y 1 A_PID 0 IP-addr-in-hex Host-mask 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 0
+ inst [6 or "fake_six"] value 0
+
+Expect "IPC protocol failure" then "No PMCD agent...":
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+hinv.ncpu: pmLookupDesc: No PMCD agent for domain of request
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 8
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 0
+ inst [6 or "fake_six"] value 0
+
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
+pmcd.control.debug 1
diff --git a/qa/023.out.2 b/qa/023.out.2
new file mode 100644
index 0000000..e158f8b
--- /dev/null
+++ b/qa/023.out.2
@@ -0,0 +1,153 @@
+QA output created by 023
+Waiting for pmcd to terminate ...
+$PCP_PMCDCONF_PATH contains:
+<BEGIN>
+# Created by QA 023
+fake_irix 1 pipe binary dumb_pmda -d 1 fake_irix
+fake_proc 3 pipe binary dumb_pmda -d 3 fake_proc
+fake_cisco 5 pipe binary dumb_pmda -d 5 fake_cisco
+fake_six 6 pipe binary dumb_pmda -d 6 fake_six
+pmcd 2 ...
+[access]
+allow localhost : all;
+disallow * : all;
+<END>
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID ...
+fake_proc 3 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 3 fake_proc
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_six 6 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 6 fake_six
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y 1 A_PID 0 IP-addr-in-hex Host-mask 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+n n A_PID 0 :: :: 8 :*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD A_PID inet INADDR_ANY
+ok FD A_PID ipv6 INADDR_ANY
+
+Restart dead agent test
+Expect "IPC protocol failure" then "No agent for domain...":
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+hinv.ncpu: pmLookupDesc: No PMCD agent for domain of request
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 8
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 0
+ inst [6 or "fake_six"] value 0
+
+
+pmcd.control.timeout tests
+Agent timeout test, domain = 5, timeout = 3
+ timeout is now 3 seconds
+Agent timeout test, domain = 6, timeout = 8
+ timeout is now 8 seconds
+pmcd.control.timeout old value=8 new value=2
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 8
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 8
+ inst [6 or "fake_six"] value 8
+
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID ...
+fake_proc 3 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 3 fake_proc
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_six 6 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 6 fake_six
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y 1 A_PID 0 IP-addr-in-hex Host-mask 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+n n A_PID 0 :: :: 8 :*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD A_PID inet INADDR_ANY
+ok FD A_PID ipv6 INADDR_ANY
+[DATE] pmcd(PID) Warning: pduread: timeout (after 2.000 sec) on fd=FD
+Cleanup "fake_irix" agent (dom 1): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Warning: pduread: timeout (after 3.000 sec) on fd=FD
+Cleanup "fake_cisco" agent (dom 5): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Warning: pduread: timeout (after 8.000 sec) on fd=FD
+Cleanup "fake_six" agent (dom 6): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+ == ======================================== ======= =================
+
+Configuration file '$PCP_PMCDCONF_PATH' unchanged
+Restarting any deceased agents:
+ "fake_irix" agent
+ "fake_cisco" agent
+ "fake_six" agent
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID ...
+fake_proc 3 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 3 fake_proc
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_six 6 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 6 fake_six
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y 1 A_PID 0 IP-addr-in-hex Host-mask 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+n n A_PID 0 :: :: 8 :*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 0
+ inst [6 or "fake_six"] value 0
+
+Expect "IPC protocol failure" then "No PMCD agent...":
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+hinv.ncpu: pmLookupDesc: No PMCD agent for domain of request
+
+pmcd.agent.status
+ inst [1 or "fake_irix"] value 8
+ inst [2 or "pmcd"] value 0
+ inst [3 or "fake_proc"] value 0
+ inst [5 or "fake_cisco"] value 0
+ inst [6 or "fake_six"] value 0
+
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
+pmcd.control.debug 1
diff --git a/qa/024 b/qa/024
new file mode 100755
index 0000000..7247484
--- /dev/null
+++ b/qa/024
@@ -0,0 +1,137 @@
+#! /bin/sh
+# PCP QA Test No. 024
+# juggling with contexts, including the default one
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+PMCD_CONNECT_TIMEOUT=120
+PMCD_REQUEST_TIMEOUT=120
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+_filter()
+{
+ # unfortunatley, -D16 maps to an internal libirixpmda debug flag
+ # for nodes et al
+ # filter for __pmDecodeXtendError diag, added in rev 2.23 of
+ # libpcp/src/p_error.c ... not always present
+ #
+ sed \
+ -e '/using .* kmem interface/d' \
+ -e 's/localhost/<&>/' \
+ -e "s/`hostname`\([):]\)/<localhost>\1/" \
+ -e "s/$remote\([):]\)/<remotehost>\1/" \
+ -e 's/fd=[0-9][0-9]*/fd=<n>/g' \
+ -e 's/port=[0-9][0-9]*/port=<n>/g' \
+ -e 's/handle=0x0/handle=(nil)/' \
+ -e '/ Debug: reload_nodes: /d'\
+ -e '/ Debug: reload_nodeinfo: /d'\
+ -e '/ Debug: node_init: /d' \
+ -e '/ Debug: reload_hubs: /d' \
+ -e '/ Debug: handle_entry: /d' \
+ -e '/^__pmDecodeXtendError: got error PDU/d' \
+ -e '/^pmWhichContext() -> /d' \
+ -e '/__pmSendCreds: #0/s/= 201/= 1020000/' \
+ -e '/^__pmDataIPC: /d' \
+ -e '/^__pmSetDataIPC/{
+N
+d
+}' \
+ -e 's/ [0-9][0-9]*(?)//g' \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e "s/$DSO_SUFFIX\([ ,]\)/\$DSO_SUFFIX\1/" \
+ -e '/IPC table/{
+s/ [0-9][0-9]*(?)//g
+s/ [0-9][0-9]*(2)/ <n>(2)/g
+s/ [0-9][0-9]*(2,1)/ <n>(2,1)/g
+}' \
+ -e 's/^\[[0-9][0-9]*]/[N]/' \
+ -e "s;/irix/;/OS/;" \
+ -e "s;/linux/;/OS/;" \
+ -e "s;/darwin/;/OS/;" \
+ -e "s;/solaris/;/OS/;" \
+ -e "s;/windows/;/OS/;" \
+ -e "/jbd2/d" \
+ -e '/^0*x*[0-9a-f][0-9a-f]* /{
+s//ADDR /
+s/\[[0-9][0-9]*]/[N]/
+s;=[0-9].*/OS/.*;=N name=OS_PMDA, ...;
+}' \
+ -e '/^\[N] .*\/OS\//s/.*/[N] domain=N, name=OS_PMDA, .../' \
+ -e '/^__pmLocalPMDA(.*\/OS\//{
+s/name=.*/name=OS_PMDA, ...)/
+s/domain=[0-9][0-9]*/domain=N/
+}' \
+ -e '/__pmConnect(fd=<n>(nsprFd=/d'
+
+}
+
+_filter2()
+{
+ $PCP_AWK_PROG '
+/build_dsotab:/ { strip=1; print; print "<stripped lines>"; next }
+strip == 1 && /pmNewContext/ { strip=0 }
+strip == 1 { print >"'$tmp.tmp'"; next }
+ { print }'
+}
+
+rm -f $seq.out
+if pmcd -x /dev/null -p x 2>&1 | grep '.-p requires a posi*tive numeric argument' >/dev/null
+then
+ if test $PCP_EOE_VER -ge 3013
+ then
+ ln $seq.out.4 $seq.out
+ elif test $PCP_EOE_VER -ge 2704
+ then
+ ln $seq.out.3 $seq.out
+ else
+ ln $seq.out.2 $seq.out
+ fi
+else
+ ln $seq.out.1 $seq.out
+fi
+
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+$sudo rm -rf $tmp.* $seq.full
+
+remote=`./getpmcdhosts -L -n 1 -a sample 2>$tmp.out`
+if [ -z "$remote" ]
+then
+ cat $tmp.out >$seq.notrun
+ exit
+fi
+
+# real QA test starts here
+echo "=== expected to pass ==="
+src/chkctx2 -D16 2>&1 | _filter
+echo ""
+src/chkctx2 -D16 -h localhost 2>&1 | _filter
+echo ""
+src/chkctx2 -D16 -h `hostname` 2>&1 | _filter
+echo ""
+src/chkctx2 -D16 -h $remote 2>&1 | _filter
+echo ""
+
+PCP_LITE_SAMPLE=yes
+export PCP_LITE_SAMPLE
+
+echo | tee -a $seq.full
+echo "=== try CONTEXT_LOCAL ===" | tee -a $seq.full
+$sudo src/chkctx2_lite -D16 -L 2>&1 \
+| tee -a $seq.full \
+| _filter \
+| _filter2 \
+| _filter_pmcd_log
+
+echo
+echo "sorted stripped lines ..."
+LC_COLLATE=POSIX sort $tmp.tmp | uniq
+
diff --git a/qa/024.out.1 b/qa/024.out.1
new file mode 100644
index 0000000..d8627cd
--- /dev/null
+++ b/qa/024.out.1
@@ -0,0 +1,107 @@
+QA output created by 024
+=== expected to pass ===
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd PDU version=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<remotehost>): pmcd PDU version=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+pmNewContext(1, <remotehost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <remotehost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+=== try CONTEXT_LOCAL ===
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(3, (null)) -> 1
+Dump Contexts: current context = 1
+Context[1] standalone: profile=NOT_SENT
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
diff --git a/qa/024.out.2 b/qa/024.out.2
new file mode 100644
index 0000000..8b75ef5
--- /dev/null
+++ b/qa/024.out.2
@@ -0,0 +1,107 @@
+QA output created by 024
+=== expected to pass ===
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<remotehost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2) <n>(2)
+pmNewContext(1, <remotehost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <remotehost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
+=== try CONTEXT_LOCAL ===
+__pmAddIPC: fd=<n> verion=2
+IPC table fd(PDU version): <n>(2)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(3, (null)) -> 1
+Dump Contexts: current context = 1
+Context[1] standalone: profile=NOT_SENT
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+__pmFdLookupIPC: fd=<n> PDU version: 2
+
diff --git a/qa/024.out.3 b/qa/024.out.3
new file mode 100644
index 0000000..472dd3b
--- /dev/null
+++ b/qa/024.out.3
@@ -0,0 +1,112 @@
+QA output created by 024
+=== expected to pass ===
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version): <n>(2,1)
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version): <n>(2,1)
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<remotehost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+pmNewContext(1, <remotehost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <remotehost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+=== try CONTEXT_LOCAL ===
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(3, (null)) -> 1
+Dump Contexts: current context = 1
+Context[1] standalone: profile=NOT_SENT
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
diff --git a/qa/024.out.4 b/qa/024.out.4
new file mode 100644
index 0000000..d8e920d
--- /dev/null
+++ b/qa/024.out.4
@@ -0,0 +1,127 @@
+QA output created by 024
+=== expected to pass ===
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=2 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version): <n>(2,1)
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+pmNewContext(1, <localhost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version): <n>(2,1)
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<remotehost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1) <n>(2,1)
+pmNewContext(1, <remotehost>) -> 1
+Dump Contexts: current context = 1
+Context[1] host <remotehost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+
+
+=== try CONTEXT_LOCAL ===
+__pmSetSocketIPC: fd=<n>
+IPC table fd(PDU version):
+__pmSetVersionIPC: fd=<n> version=2
+IPC table fd(PDU version): <n>(2,1)
+__pmSendCreds: #0 = 1020000
+__pmConnectPMCD(<localhost>): pmcd connection port=<n> fd=<n> PDU version=2
+IPC table fd(PDU version): <n>(2,1)
+pmNewContext(1, <localhost>) -> 0
+Dump Contexts: current context = 0
+Context[0] host <localhost>: pmcd=CONNECTED profile=NOT_SENT fd=<n> refcnt=1 origin=0.000000 delta=0
+Dump Instance Profile state=INCLUDE, 0 profiles
+build_dsotab: parsing $PCP_PMCDCONF_PATH
+<stripped lines>
+pmNewContext(3, (null)) -> 1
+Dump Contexts: current context = 1
+Context[1] standalone: profile=NOT_SENT
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmUseContext(1) -> 0
+pmDestroyContext(1) -> 0, curcontext=-1
+pmUseContext(0) -> 0
+NotifyEndLocalContext: DSO PMDA $PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX (30) notified of context 0 close
+
+sorted stripped lines ...
+ADDR [N] domain=30 name=$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX init=sample_init handle=(nil)
+ADDR [N] domain=70 name=$PCP_PMDAS_DIR/mmv/pmda_mmv.$DSO_SUFFIX init=mmv_init handle=(nil)
+ADDR [N] domain=N name=OS_PMDA, ...
+Local Context PMDA Table
+[N] domain=30, name=$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX, init=sample_init
+[N] domain=70, name=$PCP_PMDAS_DIR/mmv/pmda_mmv.$DSO_SUFFIX, init=mmv_init
+[N] domain=N, name=OS_PMDA, ...
+__pmLocalPMDA(op=ADD, domain=30, name=$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX, init=sample_init)
+__pmLocalPMDA(op=ADD, domain=70, name=$PCP_PMDAS_DIR/mmv/pmda_mmv.$DSO_SUFFIX, init=mmv_init)
+__pmLocalPMDA(op=ADD, domain=N, name=OS_PMDA, ...)
diff --git a/qa/025 b/qa/025
new file mode 100755
index 0000000..2434caa
--- /dev/null
+++ b/qa/025
@@ -0,0 +1,26 @@
+#! /bin/sh
+# PCP QA Test No. 025
+# pmcd reconnect and error propagation
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+$sudo src/pmcdgone 2>&1 \
+| tee $seq.full \
+| sed \
+ -e '/__pmGetPDU: fd=3 BINARY hdr: Broken pipe/d' \
+ -e '/pmLookupDesc:/s/Connection reset by peer/IPC protocol failure/' \
+ -e '/pmReconnectContext:/s/Operation/Connection/' \
+| _filter_pcp_start \
+| sed -e '/^Stopping pmlogger/d'
diff --git a/qa/025.out b/qa/025.out
new file mode 100644
index 0000000..d12b82f
--- /dev/null
+++ b/qa/025.out
@@ -0,0 +1,166 @@
+QA output created by 025
+.Text: This metric has 3 instances, designated "red", "green" and "blue".
+The value of the metric is monotonic increasing in the range N to
+N+100, then back to N. The different instances have different N values,
+namely 100 (red), 200 (green) and 300 (blue).
+InDomText: Universally 3 instances, "red" (0), "green" (1) and "blue" (3).
+...
+Kill off pmcd ...
+Waiting for pmcd to terminate ...
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+Reconnect to pmcd context 1 ...
+pmReconnectContext: Connection timed out -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+Reconnect to pmcd context 0 ...
+pmReconnectContext: Connection timed out -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+__pmControlLog: IPC protocol failure -- error expected
+Restart pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+pmLookupDesc: IPC protocol failure -- error expected
+pmGetInDom: IPC protocol failure -- error expected
+pmNameInDom: IPC protocol failure -- error expected
+pmLookupInDom: IPC protocol failure -- error expected
+pmLookupText: IPC protocol failure -- error expected
+pmLookupInDomText: IPC protocol failure -- error expected
+pmFetch: IPC protocol failure -- error expected
+pmStore: IPC protocol failure -- error expected
+Reconnect to pmcd context 1 ...
+.Text: This metric has 3 instances, designated "red", "green" and "blue".
+The value of the metric is monotonic increasing in the range N to
+N+100, then back to N. The different instances have different N values,
+namely 100 (red), 200 (green) and 300 (blue).
+InDomText: Universally 3 instances, "red" (0), "green" (1) and "blue" (3).
+...
+Reconnect to pmcd context 0 ...
+....
+0 unexpected errors.
diff --git a/qa/026 b/qa/026
new file mode 100755
index 0000000..110f0e2
--- /dev/null
+++ b/qa/026
@@ -0,0 +1,18 @@
+#! /bin/sh
+# PCP QA Test No. 026
+# Text Services (Help and Oneline) for PMIDs and pmInDoms
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/chkhelp
diff --git a/qa/026.out b/qa/026.out
new file mode 100644
index 0000000..25cff04
--- /dev/null
+++ b/qa/026.out
@@ -0,0 +1,73 @@
+QA output created by 026
+
+Default Context
+metric: sample.colour
+
+Oneline Text: Metrics with a "saw-tooth" trend over time
+
+Oneline InDomText: Instance domain "colour" for sample PMDA
+
+Help Text: This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range N to
+N+100, then back to N. The different instances have different N values,
+namely 100 (red), 200 (green) and 300 (blue).
+
+Help InDomText: Universally 3 instances, "red" (0), "green" (1) and "blue" (3).
+
+Default Context
+metric: sample.byte_ctr
+
+Oneline Text: counter byte counter
+pmLookupInDomText: Unknown or illegal metric identifier
+
+Help Text: value increments randomly in the range (0,1023) bytes per fetch
+pmLookupInDomText: Unknown or illegal metric identifier
+
+New Context
+metric: sample.colour
+
+Oneline Text: Metrics with a "saw-tooth" trend over time
+
+Oneline InDomText: Instance domain "colour" for sample PMDA
+
+Help Text: This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range N to
+N+100, then back to N. The different instances have different N values,
+namely 100 (red), 200 (green) and 300 (blue).
+
+Help InDomText: Universally 3 instances, "red" (0), "green" (1) and "blue" (3).
+
+New Context
+metric: sample.byte_ctr
+
+Oneline Text: counter byte counter
+pmLookupInDomText: Unknown or illegal metric identifier
+
+Help Text: value increments randomly in the range (0,1023) bytes per fetch
+pmLookupInDomText: Unknown or illegal metric identifier
+
+Dup Context
+metric: sample.colour
+
+Oneline Text: Metrics with a "saw-tooth" trend over time
+
+Oneline InDomText: Instance domain "colour" for sample PMDA
+
+Help Text: This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range N to
+N+100, then back to N. The different instances have different N values,
+namely 100 (red), 200 (green) and 300 (blue).
+
+Help InDomText: Universally 3 instances, "red" (0), "green" (1) and "blue" (3).
+
+Dup Context
+metric: sample.byte_ctr
+
+Oneline Text: counter byte counter
+pmLookupInDomText: Unknown or illegal metric identifier
+
+Help Text: value increments randomly in the range (0,1023) bytes per fetch
+pmLookupInDomText: Unknown or illegal metric identifier
diff --git a/qa/027 b/qa/027
new file mode 100755
index 0000000..85b4971
--- /dev/null
+++ b/qa/027
@@ -0,0 +1,20 @@
+#! /bin/sh
+# PCP QA Test No. 027
+# exercise pmConvScale and pmUnitsStr
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "Expect some "error?" lines due to precision underflow in conversion"
+echo ""
+src/scale
diff --git a/qa/027.out b/qa/027.out
new file mode 100644
index 0000000..981734c
--- /dev/null
+++ b/qa/027.out
@@ -0,0 +1,41 @@
+QA output created by 027
+Expect some error? lines due to precision underflow in conversion
+
+error? 7200 nanosec / count -> 7 microsec / count -> 7000 nanosec / count
+error? 7200 microsec / count -> 7 millisec / count -> 7000 microsec / count
+error? 7200 millisec / count -> 7 sec / count -> 7000 millisec / count
+error? 7200 count / microsec -> 7 count / nanosec -> 7000 count / microsec
+error? 7200 count / millisec -> 7 count / microsec -> 7000 count / millisec
+error? 7200 count / sec -> 7 count / millisec -> 7000 count / sec
+
+Pass 1: plus 48 underflows to zero
+
+error? 1048576 byte / sec^2 -> 1 byte / millisec^2 -> 1000000 byte / sec^2
+error? 1048576 byte / sec^2 -> 4 Gbyte / min^2 -> 1193046 byte / sec^2
+error? 1048576 Kbyte / sec^2 -> 1074 byte / millisec^2 -> 1048828 Kbyte / sec^2
+error? 1048576 Kbyte / sec^2 -> 1 Kbyte / millisec^2 -> 1000000 Kbyte / sec^2
+error? 1048576 Kbyte / sec^2 -> 4 Tbyte / min^2 -> 1193046 Kbyte / sec^2
+error? 1048576 Mbyte / sec^2 -> 1074 Kbyte / millisec^2 -> 1048828 Mbyte / sec^2
+error? 1048576 Mbyte / sec^2 -> 1 Mbyte / millisec^2 -> 1000000 Mbyte / sec^2
+error? 1048576 Gbyte / sec^2 -> 1074 Mbyte / millisec^2 -> 1048828 Gbyte / sec^2
+error? 1048576 Gbyte / sec^2 -> 1 Gbyte / millisec^2 -> 1000000 Gbyte / sec^2
+error? 1048576 Tbyte / sec^2 -> 1074 Gbyte / millisec^2 -> 1048828 Tbyte / sec^2
+error? 1048576 Tbyte / sec^2 -> 1 Tbyte / millisec^2 -> 1000000 Tbyte / sec^2
+
+Pass 2: plus 50 underflows to zero
+{ 0, 1, -1, 0, 2, 3 } millisec / count x 10^3
+{ 0, 1, -1, 0, 2, 2 } millisec / count x 10^2
+{ 0, 1, -1, 0, 2, 1 } millisec / count x 10
+{ 0, 1, -1, 0, 2, 0 } millisec / count
+{ 0, 1, -1, 0, 2, -1 } millisec / count x 10^-1
+{ 0, 1, -1, 0, 2, -2 } millisec / count x 10^-2
+{ 0, 1, -1, 0, 2, -3 } millisec / count x 10^-3
+{ 0, -1, 1, 0, 2, 3 } count x 10^3 / millisec
+{ 0, -1, 1, 0, 2, 2 } count x 10^2 / millisec
+{ 0, -1, 1, 0, 2, 1 } count x 10 / millisec
+{ 0, -1, 1, 0, 2, 0 } count / millisec
+{ 0, -1, 1, 0, 2, -1 } count x 10^-1 / millisec
+{ 0, -1, 1, 0, 2, -2 } count x 10^-2 / millisec
+{ 0, -1, 1, 0, 2, -3 } count x 10^-3 / millisec
+
+Pass 3:
diff --git a/qa/028 b/qa/028
new file mode 100755
index 0000000..0412b4e
--- /dev/null
+++ b/qa/028
@@ -0,0 +1,65 @@
+#! /bin/sh
+# PCP QA Test No. 028
+# pmnscomp and pmLoadNameSpace for various peculiar name spaces
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+cat >$tmp.src <<End-of-File
+root {
+ empty
+ me 1:2:0
+ you 1:2:1
+ level_one
+}
+
+level_one {
+ us 1:3:0
+ them 1:3:1
+ aliens 1:3:2
+ level_two
+}
+
+level_one.level_two {
+ empty
+}
+
+empty {
+}
+
+level_one.level_two.empty {
+}
+End-of-File
+
+echo "Load ascii ..."
+pminfo -n $tmp.src
+
+if [ $PCP_VER -lt 3600 ]
+then
+ echo ""
+ echo "Compile ..."
+ pmnscomp -n $tmp.src $tmp.bin
+
+ echo ""
+ echo "Load binary ..."
+ pminfo -n $tmp
+fi
diff --git a/qa/028.out.1 b/qa/028.out.1
new file mode 100644
index 0000000..0cb05ff
--- /dev/null
+++ b/qa/028.out.1
@@ -0,0 +1,21 @@
+QA output created by 028
+Load ascii ...
+me
+you
+level_one.us
+level_one.them
+level_one.aliens
+
+Compile ...
+Compiled PMNS contains
+ 7 hash table entries
+ 5 leaf nodes
+ 5 non-leaf nodes
+ 59 bytes of symbol table
+
+Load binary ...
+me
+you
+level_one.us
+level_one.them
+level_one.aliens
diff --git a/qa/028.out.2 b/qa/028.out.2
new file mode 100644
index 0000000..7ce9335
--- /dev/null
+++ b/qa/028.out.2
@@ -0,0 +1,7 @@
+QA output created by 028
+Load ascii ...
+me
+you
+level_one.us
+level_one.them
+level_one.aliens
diff --git a/qa/029 b/qa/029
new file mode 100755
index 0000000..b2e59a2
--- /dev/null
+++ b/qa/029
@@ -0,0 +1,49 @@
+#! /bin/sh
+# PCP QA Test No. 029
+# pmTrimNameSpace() exerciser
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Note that pmTrimNameSpace would not be used much any
+# more since pcp2.0 with pmns in archives.
+# However, still provided in API.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+#
+# Get rid of some new sample metrics which
+# would make the test vary.
+# Can do this since the point of the test is
+# testing out pmTrimNameSpace
+# --tes
+#
+_filter()
+{
+ sed \
+ -e '/sample\.dynamic/d' \
+ -e '/sample\.many/d' \
+ -e '/sample\.bigid/d' \
+ -e '/sample\.byte_/d' \
+ -e '/sample\.kbyte_/d' \
+ -e '/sample\.datasize/d' \
+ -e '/sample\.darkness/d' \
+ -e '/sample\.secret/d' \
+
+}
+
+
+# real QA test starts here
+pmdumplog -d src/foo | _sort_pmdumplog_d
+
+echo ""
+src/chktrim src/foo | _filter \
+| LC_COLLATE=POSIX sort
diff --git a/qa/029.out b/qa/029.out
new file mode 100644
index 0000000..f1a120e
--- /dev/null
+++ b/qa/029.out
@@ -0,0 +1,289 @@
+QA output created by 029
+
+Descriptions for Metrics in the Log ...
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.5 (sample.colour)
+ Data Type: 32-bit int InDom: 29.1 0x7400001
+ Semantics: instant Units: none
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.46 (sample.lights)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 29.0.2 (sample.seconds)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+
+0 NameSpace for host context ...
+0 sample.aggregate.hullo
+0 sample.aggregate.null
+0 sample.aggregate.write_me
+0 sample.bad.nosupport
+0 sample.bad.novalues
+0 sample.bad.unknown
+0 sample.bin
+0 sample.bogus_bin
+0 sample.bucket
+0 sample.colour
+0 sample.const_rate.gradient
+0 sample.const_rate.value
+0 sample.control
+0 sample.daemon_pid
+0 sample.dodgey.control
+0 sample.dodgey.value
+0 sample.double.bin
+0 sample.double.bin_ctr
+0 sample.double.hundred
+0 sample.double.million
+0 sample.double.one
+0 sample.double.ten
+0 sample.double.write_me
+0 sample.drift
+0 sample.error_check
+0 sample.error_code
+0 sample.event.highres_records
+0 sample.event.no_indom_records
+0 sample.event.param_32
+0 sample.event.param_64
+0 sample.event.param_aggregate
+0 sample.event.param_double
+0 sample.event.param_float
+0 sample.event.param_string
+0 sample.event.param_u32
+0 sample.event.param_u64
+0 sample.event.records
+0 sample.event.reset
+0 sample.event.reset_highres
+0 sample.event.type
+0 sample.float.bin
+0 sample.float.bin_ctr
+0 sample.float.hundred
+0 sample.float.million
+0 sample.float.one
+0 sample.float.ten
+0 sample.float.write_me
+0 sample.hordes.one
+0 sample.hordes.two
+0 sample.lights
+0 sample.load
+0 sample.long.bin
+0 sample.long.bin_ctr
+0 sample.long.hundred
+0 sample.long.million
+0 sample.long.one
+0 sample.long.ten
+0 sample.long.write_me
+0 sample.longlong.bin
+0 sample.longlong.bin_ctr
+0 sample.longlong.hundred
+0 sample.longlong.million
+0 sample.longlong.one
+0 sample.longlong.ten
+0 sample.longlong.write_me
+0 sample.magnitude
+0 sample.milliseconds
+0 sample.mirage
+0 sample.mirage_longlong
+0 sample.needprofile
+0 sample.noinst
+0 sample.not_ready
+0 sample.part_bin
+0 sample.pdu
+0 sample.percontext.control.active
+0 sample.percontext.control.ctx
+0 sample.percontext.control.end
+0 sample.percontext.control.start
+0 sample.percontext.pdu
+0 sample.percontext.recv_pdu
+0 sample.percontext.xmit_pdu
+0 sample.rapid
+0 sample.recv_pdu
+0 sample.scale_step.bytes_down
+0 sample.scale_step.bytes_up
+0 sample.scale_step.count_down
+0 sample.scale_step.count_up
+0 sample.scale_step.none_up
+0 sample.scale_step.time_up_nanosecs
+0 sample.scale_step.time_up_secs
+0 sample.scramble.bin
+0 sample.scramble.version
+0 sample.seconds
+0 sample.step
+0 sample.step_counter
+0 sample.string.hullo
+0 sample.string.null
+0 sample.string.write_me
+0 sample.sysinfo
+0 sample.ulong.bin
+0 sample.ulong.bin_ctr
+0 sample.ulong.count.base
+0 sample.ulong.count.deca
+0 sample.ulong.count.hecto
+0 sample.ulong.count.kilo
+0 sample.ulong.count.mega
+0 sample.ulong.hundred
+0 sample.ulong.million
+0 sample.ulong.one
+0 sample.ulong.ten
+0 sample.ulong.write_me
+0 sample.ulonglong.bin
+0 sample.ulonglong.bin_ctr
+0 sample.ulonglong.hundred
+0 sample.ulonglong.million
+0 sample.ulonglong.one
+0 sample.ulonglong.ten
+0 sample.ulonglong.write_me
+0 sample.wrap.long
+0 sample.wrap.longlong
+0 sample.wrap.ulong
+0 sample.wrap.ulonglong
+0 sample.write_me
+0 sample.xmit_pdu
+1
+1 Trimmed NameSpace for archive context ...
+1 pmcd.pmlogger.archive
+1 pmcd.pmlogger.host
+1 pmcd.pmlogger.port
+1 sample.bin
+1 sample.colour
+1 sample.drift
+1 sample.lights
+1 sample.seconds
+2
+2 Trimmed NameSpace for host context ...
+2 sample.aggregate.hullo
+2 sample.aggregate.null
+2 sample.aggregate.write_me
+2 sample.bad.nosupport
+2 sample.bad.novalues
+2 sample.bad.unknown
+2 sample.bin
+2 sample.bogus_bin
+2 sample.bucket
+2 sample.colour
+2 sample.const_rate.gradient
+2 sample.const_rate.value
+2 sample.control
+2 sample.daemon_pid
+2 sample.dodgey.control
+2 sample.dodgey.value
+2 sample.double.bin
+2 sample.double.bin_ctr
+2 sample.double.hundred
+2 sample.double.million
+2 sample.double.one
+2 sample.double.ten
+2 sample.double.write_me
+2 sample.drift
+2 sample.error_check
+2 sample.error_code
+2 sample.event.highres_records
+2 sample.event.no_indom_records
+2 sample.event.param_32
+2 sample.event.param_64
+2 sample.event.param_aggregate
+2 sample.event.param_double
+2 sample.event.param_float
+2 sample.event.param_string
+2 sample.event.param_u32
+2 sample.event.param_u64
+2 sample.event.records
+2 sample.event.reset
+2 sample.event.reset_highres
+2 sample.event.type
+2 sample.float.bin
+2 sample.float.bin_ctr
+2 sample.float.hundred
+2 sample.float.million
+2 sample.float.one
+2 sample.float.ten
+2 sample.float.write_me
+2 sample.hordes.one
+2 sample.hordes.two
+2 sample.lights
+2 sample.load
+2 sample.long.bin
+2 sample.long.bin_ctr
+2 sample.long.hundred
+2 sample.long.million
+2 sample.long.one
+2 sample.long.ten
+2 sample.long.write_me
+2 sample.longlong.bin
+2 sample.longlong.bin_ctr
+2 sample.longlong.hundred
+2 sample.longlong.million
+2 sample.longlong.one
+2 sample.longlong.ten
+2 sample.longlong.write_me
+2 sample.magnitude
+2 sample.milliseconds
+2 sample.mirage
+2 sample.mirage_longlong
+2 sample.needprofile
+2 sample.noinst
+2 sample.not_ready
+2 sample.part_bin
+2 sample.pdu
+2 sample.percontext.control.active
+2 sample.percontext.control.ctx
+2 sample.percontext.control.end
+2 sample.percontext.control.start
+2 sample.percontext.pdu
+2 sample.percontext.recv_pdu
+2 sample.percontext.xmit_pdu
+2 sample.rapid
+2 sample.recv_pdu
+2 sample.scale_step.bytes_down
+2 sample.scale_step.bytes_up
+2 sample.scale_step.count_down
+2 sample.scale_step.count_up
+2 sample.scale_step.none_up
+2 sample.scale_step.time_up_nanosecs
+2 sample.scale_step.time_up_secs
+2 sample.scramble.bin
+2 sample.scramble.version
+2 sample.seconds
+2 sample.step
+2 sample.step_counter
+2 sample.string.hullo
+2 sample.string.null
+2 sample.string.write_me
+2 sample.sysinfo
+2 sample.ulong.bin
+2 sample.ulong.bin_ctr
+2 sample.ulong.count.base
+2 sample.ulong.count.deca
+2 sample.ulong.count.hecto
+2 sample.ulong.count.kilo
+2 sample.ulong.count.mega
+2 sample.ulong.hundred
+2 sample.ulong.million
+2 sample.ulong.one
+2 sample.ulong.ten
+2 sample.ulong.write_me
+2 sample.ulonglong.bin
+2 sample.ulonglong.bin_ctr
+2 sample.ulonglong.hundred
+2 sample.ulonglong.million
+2 sample.ulonglong.one
+2 sample.ulonglong.ten
+2 sample.ulonglong.write_me
+2 sample.wrap.long
+2 sample.wrap.longlong
+2 sample.wrap.ulong
+2 sample.wrap.ulonglong
+2 sample.write_me
+2 sample.xmit_pdu
diff --git a/qa/030 b/qa/030
new file mode 100755
index 0000000..bc3beac
--- /dev/null
+++ b/qa/030
@@ -0,0 +1,23 @@
+#! /bin/sh
+# PCP QA Test No. 030
+# simple exercise of pmStore
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "Really expect no output ..."
+src/store
+
+echo
+echo "Same again for PM_CONTEXT_LOCAL ..."
+$sudo src/store -L 2>&1 | _filter_pmcd_log
diff --git a/qa/030.out b/qa/030.out
new file mode 100644
index 0000000..27bc164
--- /dev/null
+++ b/qa/030.out
@@ -0,0 +1,4 @@
+QA output created by 030
+Really expect no output ...
+
+Same again for PM_CONTEXT_LOCAL ...
diff --git a/qa/031 b/qa/031
new file mode 100755
index 0000000..268e6fa
--- /dev/null
+++ b/qa/031
@@ -0,0 +1,33 @@
+#! /bin/sh
+# PCP QA Test No. 031
+# general exerciser for local PCP
+#
+# NOTE: Output from 031 is also used by:
+# qa/112
+# qa/257
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out $seq.full
+. ./localconfig
+if [ ! -f $seq.out.$PCP_PLATFORM ]
+then
+ echo "Error: no validated output for this platform ($seq.out.$PCP_PLATFORM)"
+ exit 1
+fi
+ln $seq.out.$PCP_PLATFORM $seq.out
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# real QA test starts here
+
+#debug# src/torture_api -Dappl0 -v 2>&1 | tee $seq.full | _filter_torture_api
+src/torture_api -v 2>&1 | tee $seq.full | _filter_torture_api
diff --git a/qa/031.out.darwin b/qa/031.out.darwin
new file mode 100644
index 0000000..cdb1970
--- /dev/null
+++ b/qa/031.out.darwin
@@ -0,0 +1,105 @@
+QA output created by 031
+
+pmid: 78.7.61 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: PM_ID_NULL name: kernel.all.pswitch
+pmGetChildren: Unknown metric name
+pmGetChildrenStatus: Unknown metric name
+
+pmid: 78.6.42 name: kernel.all.cpu.user
+
+pmid: PM_ID_NULL name: kernel.all.cpu.wait.total
+pmGetChildren: Unknown metric name
+pmGetChildrenStatus: Unknown metric name
+
+pmid: 78.8.71 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ filesys <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ mem <s = 1>
+ network <s = 1>
+ nfs3 <s = 1>
+ pmcd <s = 1>
+ pmda <s = 1>
+ rpc <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 12
+ 78.7.61 (disk.all.total): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 78.6.42 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 78.8.71 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+
+Unexpected failure for 4 of N PMAPI operations
diff --git a/qa/031.out.freebsd b/qa/031.out.freebsd
new file mode 100644
index 0000000..c33f473
--- /dev/null
+++ b/qa/031.out.freebsd
@@ -0,0 +1,101 @@
+QA output created by 031
+
+pmid: 85.2.8 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: 85.0.22 name: kernel.all.pswitch
+
+pmid: 85.0.3 name: kernel.all.cpu.user
+
+pmid: PM_ID_NULL name: kernel.all.cpu.wait.total
+pmGetChildren: Unknown metric name
+pmGetChildrenStatus: Unknown metric name
+
+pmid: 85.0.0 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ mem <s = 1>
+ network <s = 1>
+ pmcd <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+ swap <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 12
+ 85.2.8 (disk.all.total): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 85.0.22 (kernel.all.pswitch): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ 85.0.3 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 85.0.0 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+
+Unexpected failure for 2 of N PMAPI operations
diff --git a/qa/031.out.irix b/qa/031.out.irix
new file mode 100644
index 0000000..8e68416
--- /dev/null
+++ b/qa/031.out.irix
@@ -0,0 +1,114 @@
+QA output created by 031
+
+pmid: 0x414809 name: irix.disk.all.total
+
+pmid: 0xffffffff name: irix.kernel.percpu
+children of "irix.kernel.percpu" ...
+ cpu <s = 1>
+ flock <s = 1>
+ intr <s = 1>
+ io <s = 1>
+ pswitch <s = 0>
+ pty <s = 1>
+ readch <s = 0>
+ runocc <s = 0>
+ runque <s = 0>
+ swap <s = 1>
+ syscall <s = 0>
+ sysexec <s = 0>
+ sysfork <s = 0>
+ sysread <s = 0>
+ syswrite <s = 0>
+ tty <s = 1>
+ writech <s = 0>
+
+pmid: 0x402813 name: irix.kernel.all.syscall
+
+pmid: 0x40280b name: irix.kernel.all.cpu.user
+
+pmid: 0x40281a name: irix.kernel.all.cpu.wait.io
+
+pmid: 0x404802 name: hinv.ncpu
+
+pmid: 0xffffffff name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 0x7800022 name: sampledso.aggregate.hullo
+
+pmid: 0x7400002 name: sample.seconds
+
+pmid: 0x7400005 name: sample.colour
+
+pmid: 0xffffffff name: sample.longlong
+children of "sample.longlong" ...
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: 0xffffffff name: bozo.the.clown
+
+children of "" ...
+ buffer_cache <s = 1>
+ disk <s = 1>
+ efs <s = 1>
+ filesys <s = 1>
+ gfx <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ mem <s = 1>
+ name_cache <s = 1>
+ network <s = 1>
+ nfs <s = 1>
+ nfs3 <s = 1>
+ pmcd <s = 1>
+ pmda <s = 1>
+ resource <s = 1>
+ rpc <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+ swap <s = 1>
+ swapdev <s = 1>
+ vnodes <s = 1>
+ xbow <s = 1>
+ xfs <s = 1>
+ xlv <s = 1>
+ xpc <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 12
+ 1.82.9 (disk.all.total): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 1.10.19 (kernel.all.syscall): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 1.10.11 (kernel.all.cpu.user): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 1.10.26 (kernel.all.cpu.wait.io): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 1.18.2 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+
+Unexpected failure for 0 of N PMAPI operations
diff --git a/qa/031.out.linux b/qa/031.out.linux
new file mode 100644
index 0000000..b165f69
--- /dev/null
+++ b/qa/031.out.linux
@@ -0,0 +1,109 @@
+QA output created by 031
+
+pmid: 60.0.29 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: 60.0.13 name: kernel.all.pswitch
+
+pmid: 60.0.20 name: kernel.all.cpu.user
+
+pmid: 60.0.35 name: kernel.all.cpu.wait.total
+
+pmid: 60.0.32 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ filesys <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ mem <s = 1>
+ network <s = 1>
+ nfs <s = 1>
+ nfs3 <s = 1>
+ nfs4 <s = 1>
+ pmcd <s = 1>
+ pmda <s = 1>
+ quota <s = 1>
+ rpc <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+ swap <s = 1>
+ swapdev <s = 1>
+ xfs <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 12
+ 60.0.29 (disk.all.total): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 60.0.13 (kernel.all.pswitch): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ 60.0.20 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ 60.0.35 (kernel.all.cpu.wait.total): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ 60.0.32 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+
+Unexpected failure for 0 of N PMAPI operations
diff --git a/qa/031.out.solaris b/qa/031.out.solaris
new file mode 100644
index 0000000..3cd70b3
--- /dev/null
+++ b/qa/031.out.solaris
@@ -0,0 +1,102 @@
+QA output created by 031
+
+pmid: 75.1.2 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: 75.0.23 name: kernel.all.pswitch
+
+pmid: 75.0.1 name: kernel.all.cpu.user
+
+pmid: 75.0.3 name: kernel.all.cpu.wait.total
+
+pmid: 75.0.56 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ mem <s = 1>
+ network <s = 1>
+ pmcd <s = 1>
+ pmda <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+ zfs <s = 1>
+ zpool <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 12
+ 75.1.2 (disk.all.total): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 75.0.23 (kernel.all.pswitch): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ 75.0.1 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ 75.0.3 (kernel.all.cpu.wait.total): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+ 75.0.56 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+ PM_ID_NULL (<noname>): No PMDA, no values [filtered]
+
+Unexpected failure for 0 of N PMAPI operations
diff --git a/qa/032 b/qa/032
new file mode 100755
index 0000000..50b33cb
--- /dev/null
+++ b/qa/032
@@ -0,0 +1,82 @@
+#! /bin/sh
+# PCP QA Test No. 032
+# exercise pmControlLog over the primary logger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.check
+. ./common.filter
+. ./common.product
+
+_echo()
+{
+ echo ""
+ echo "+++" $* "+++"
+}
+
+_cleanup()
+{
+ _restore_primary_logger
+ rm -f $tmp.*
+ exit $status
+}
+
+status=1
+rm -f $seq.full
+trap "_cleanup" 0 1 2 3 15
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+# sensitive to the state of the primary logger and the sample PMDA,
+# so re-start them to make sure. Up-to-6O second delay is to avoid
+# clash in basename of archive between consecutive instances of the
+# primary logger.
+#
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+timeleft=`date +%S`
+timesleep=`expr 60 - $timeleft`
+sleep $timesleep
+_writable_primary_logger
+
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger -P $LOGGING_DIR/$LOCALHOST/pmlogger.log
+
+# real QA test starts here
+_echo "expect this to be off"
+src/logcontrol enquire sample.control
+
+_echo "force these off"
+src/logcontrol mandatory off sample.bin sampledso.colour
+_echo "should fail to turn on"
+src/logcontrol advisory on sampledso.colour
+src/logcontrol -i bin-300 advisory on sample.bin
+
+_echo "force these on"
+src/logcontrol mandatory on sample.colour sampledso.bin
+_echo "should fail to turn off"
+src/logcontrol advisory off sampledso.bin
+src/logcontrol -i red advisory off sample.colour
+
+_echo "allow advisory control over this one"
+src/logcontrol mandatory maybe sample.lights
+_echo "turn it on"
+src/logcontrol advisory on sample.lights
+_echo "turn it on again (NOP)"
+src/logcontrol advisory on sample.lights
+_echo "turn it off"
+src/logcontrol advisory off sample.lights
+_echo "turn it on"
+src/logcontrol advisory on sample.lights
+
+status=0
+exit
diff --git a/qa/032.out b/qa/032.out
new file mode 100644
index 0000000..c88b165
--- /dev/null
+++ b/qa/032.out
@@ -0,0 +1,76 @@
+QA output created by 032
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
++++ expect this to be off +++
+sample.control 0 (adv off)
+
++++ force these off +++
+sample.bin
+ inst [100 or "bin-100"] 2 (mand off)
+ inst [200 or "bin-200"] 2 (mand off)
+ inst [300 or "bin-300"] 2 (mand off)
+ inst [400 or "bin-400"] 2 (mand off)
+ inst [500 or "bin-500"] 2 (mand off)
+ inst [600 or "bin-600"] 2 (mand off)
+ inst [700 or "bin-700"] 2 (mand off)
+ inst [800 or "bin-800"] 2 (mand off)
+ inst [900 or "bin-900"] 2 (mand off)
+sampledso.colour
+ inst [0 or "red"] 2 (mand off)
+ inst [1 or "green"] 2 (mand off)
+ inst [2 or "blue"] 2 (mand off)
+
++++ should fail to turn on +++
+sampledso.colour
+ inst [0 or "red"] 2 (mand off)
+ inst [1 or "green"] 2 (mand off)
+ inst [2 or "blue"] 2 (mand off)
+sample.bin
+ inst [300 or "bin-300"] 2 (mand off)
+
++++ force these on +++
+sample.colour
+ inst [0 or "red"] 3 (mand on, delta=5000 msec)
+ inst [1 or "green"] 3 (mand on, delta=5000 msec)
+ inst [2 or "blue"] 3 (mand on, delta=5000 msec)
+sampledso.bin
+ inst [100 or "bin-100"] 3 (mand on, delta=5000 msec)
+ inst [200 or "bin-200"] 3 (mand on, delta=5000 msec)
+ inst [300 or "bin-300"] 3 (mand on, delta=5000 msec)
+ inst [400 or "bin-400"] 3 (mand on, delta=5000 msec)
+ inst [500 or "bin-500"] 3 (mand on, delta=5000 msec)
+ inst [600 or "bin-600"] 3 (mand on, delta=5000 msec)
+ inst [700 or "bin-700"] 3 (mand on, delta=5000 msec)
+ inst [800 or "bin-800"] 3 (mand on, delta=5000 msec)
+ inst [900 or "bin-900"] 3 (mand on, delta=5000 msec)
+
++++ should fail to turn off +++
+sampledso.bin
+ inst [100 or "bin-100"] 3 (mand on, delta=5000 msec)
+ inst [200 or "bin-200"] 3 (mand on, delta=5000 msec)
+ inst [300 or "bin-300"] 3 (mand on, delta=5000 msec)
+ inst [400 or "bin-400"] 3 (mand on, delta=5000 msec)
+ inst [500 or "bin-500"] 3 (mand on, delta=5000 msec)
+ inst [600 or "bin-600"] 3 (mand on, delta=5000 msec)
+ inst [700 or "bin-700"] 3 (mand on, delta=5000 msec)
+ inst [800 or "bin-800"] 3 (mand on, delta=5000 msec)
+ inst [900 or "bin-900"] 3 (mand on, delta=5000 msec)
+sample.colour
+ inst [0 or "red"] 3 (mand on, delta=5000 msec)
+
++++ allow advisory control over this one +++
+sample.lights 0 (adv off)
+
++++ turn it on +++
+sample.lights 1 (adv on, delta=5000 msec)
+
++++ turn it on again (NOP) +++
+sample.lights 1 (adv on, delta=5000 msec)
+
++++ turn it off +++
+sample.lights 0 (adv off)
+
++++ turn it on +++
+sample.lights 1 (adv on, delta=5000 msec)
diff --git a/qa/033 b/qa/033
new file mode 100755
index 0000000..a462e03
--- /dev/null
+++ b/qa/033
@@ -0,0 +1,101 @@
+#! /bin/sh
+# PCP QA Test No. 033
+# check filesys metrics for root fs
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = solaris ] && _notrun "No filesys metrics for Solaris"
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = irix ]
+then
+ ln $seq.out.2 $seq.out
+elif [ $PCP_PLATFORM = darwin ]
+then
+ ln $seq.out.4 $seq.out
+else
+ # assume linux-like
+ #
+ if [ $PCP_EOE_VER -ge 2300 ]
+ then
+ if pmprobe filesys.readonly >/dev/null
+ then
+ ln $seq.out.3 $seq.out
+ else
+ ln $seq.out.1 $seq.out
+ fi
+ else
+ ln $seq.out.0 $seq.out
+ fi
+fi
+
+status=1 # failure is the default
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+# real QA test starts here
+root=`df / | $PCP_AWK_PROG 'NR == 2 { print $1 }'`
+echo "root=$root" >>$seq.full
+if [ -z "$root" ]
+then
+ echo "Arrgh, cannot get device for root fs from df(1) ..."
+ df /
+ exit
+fi
+if [ -L "$root" ]
+then
+ if which realpath >/dev/null 2>&1
+ then
+ symroot=`realpath $root`
+ else
+ symroot=`ls -l $root | sed -e 's/.*-> //'`
+ if [ -z "$symroot" ]
+ then
+ echo "Arrgh, cannot get symlink for device for root fs ..."
+ ls -l $root
+ exit
+ fi
+ case "$symroot"
+ in
+ ../*)
+ # handle case like ...
+ # /dev/disk/by-uuid/467793a8-5191-4940-90fb-38a6f28b035d -> ../../sda1
+ dir=`dirname $root`
+ while true
+ do
+ case "$symroot"
+ in
+ ../*)
+ dir=`echo $dir | sed -e 's@/[^/]*$@@'`
+ symroot=`echo $symroot | sed -e 's@\.\./\([^.]\)@\1@'`
+ ;;
+ *)
+ symroot=${dir}/${symroot}
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+ fi
+else
+ symroot="$root"
+fi
+echo "symroot=$symroot" >>$seq.full
+pminfo -f filesys \
+| egrep "(^filesys)|\"$root\"|/dev/root|$symroot\"" \
+| _filter_dumpresult 2>&1 > $tmp.out
+
+cat $tmp.out
+
+status=0
+exit
diff --git a/qa/033.out.0 b/qa/033.out.0
new file mode 100644
index 0000000..82f91fd
--- /dev/null
+++ b/qa/033.out.0
@@ -0,0 +1,17 @@
+QA output created by 033
+filesys.capacity
+ inst [DISK] value NUMBER
+filesys.used
+ inst [DISK] value NUMBER
+filesys.free
+ inst [DISK] value NUMBER
+filesys.maxfiles
+ inst [DISK] value NUMBER
+filesys.usedfiles
+ inst [DISK] value NUMBER
+filesys.freefiles
+ inst [DISK] value NUMBER
+filesys.mountdir
+ inst [DISK] value STRING
+filesys.full
+ inst [DISK] value NUMBER
diff --git a/qa/033.out.1 b/qa/033.out.1
new file mode 100644
index 0000000..514c655
--- /dev/null
+++ b/qa/033.out.1
@@ -0,0 +1,21 @@
+QA output created by 033
+filesys.capacity
+ inst [DISK] value NUMBER
+filesys.used
+ inst [DISK] value NUMBER
+filesys.free
+ inst [DISK] value NUMBER
+filesys.maxfiles
+ inst [DISK] value NUMBER
+filesys.usedfiles
+ inst [DISK] value NUMBER
+filesys.freefiles
+ inst [DISK] value NUMBER
+filesys.mountdir
+ inst [DISK] value STRING
+filesys.full
+ inst [DISK] value NUMBER
+filesys.blocksize
+ inst [DISK] value NUMBER
+filesys.avail
+ inst [DISK] value NUMBER
diff --git a/qa/033.out.2 b/qa/033.out.2
new file mode 100644
index 0000000..cbad069
--- /dev/null
+++ b/qa/033.out.2
@@ -0,0 +1,19 @@
+QA output created by 033
+filesys.capacity
+ inst [DISK] value NUMBER
+filesys.used
+ inst [DISK] value NUMBER
+filesys.free
+ inst [DISK] value NUMBER
+filesys.maxfiles
+ inst [DISK] value NUMBER
+filesys.usedfiles
+ inst [DISK] value NUMBER
+filesys.freefiles
+ inst [DISK] value NUMBER
+filesys.mountdir
+ inst [DISK] value STRING
+filesys.full
+ inst [DISK] value NUMBER
+filesys.blocksize
+ inst [DISK] value NUMBER
diff --git a/qa/033.out.3 b/qa/033.out.3
new file mode 100644
index 0000000..8f03e6a
--- /dev/null
+++ b/qa/033.out.3
@@ -0,0 +1,23 @@
+QA output created by 033
+filesys.capacity
+ inst [DISK] value NUMBER
+filesys.used
+ inst [DISK] value NUMBER
+filesys.free
+ inst [DISK] value NUMBER
+filesys.maxfiles
+ inst [DISK] value NUMBER
+filesys.usedfiles
+ inst [DISK] value NUMBER
+filesys.freefiles
+ inst [DISK] value NUMBER
+filesys.mountdir
+ inst [DISK] value STRING
+filesys.full
+ inst [DISK] value NUMBER
+filesys.blocksize
+ inst [DISK] value NUMBER
+filesys.avail
+ inst [DISK] value NUMBER
+filesys.readonly
+ inst [DISK] value NUMBER
diff --git a/qa/033.out.4 b/qa/033.out.4
new file mode 100644
index 0000000..d42b745
--- /dev/null
+++ b/qa/033.out.4
@@ -0,0 +1,23 @@
+QA output created by 033
+filesys.capacity
+ inst [DISK] value NUMBER
+filesys.used
+ inst [DISK] value NUMBER
+filesys.free
+ inst [DISK] value NUMBER
+filesys.maxfiles
+ inst [DISK] value NUMBER
+filesys.usedfiles
+ inst [DISK] value NUMBER
+filesys.freefiles
+ inst [DISK] value NUMBER
+filesys.mountdir
+ inst [DISK] value STRING
+filesys.full
+ inst [DISK] value NUMBER
+filesys.blocksize
+ inst [DISK] value NUMBER
+filesys.avail
+ inst [DISK] value NUMBER
+filesys.type
+ inst [DISK] value STRING
diff --git a/qa/034 b/qa/034
new file mode 100755
index 0000000..b63dbe4
--- /dev/null
+++ b/qa/034
@@ -0,0 +1,72 @@
+#! /bin/sh
+# PCP QA Test No. 034
+# pmlogger with different logging rates
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+#
+
+# Logs are built for 70 samples (-s70) (see Makefile)
+# The sample metric rates are 100msec, 500msec, 900msec
+# Theoretically,....
+# This means that (x + x/5 + x/9 = 70) for integral x.
+# => 59x = 70 * 45
+# => x ~= 53.39
+# But x is integral
+# So, x = 54, x/5 = 10, x/9 = 6 (54 + 10 + 6 = 70)
+#
+# Note below that n[i] is not incremented on its 1st occurrence
+# => expect values of 53, 9, 5
+
+for arch in src/bar src/mv-bar src/noti-bar
+do
+ echo
+ echo "=== $arch ==="
+ pmdumplog $arch \
+ | sed -e 's/:/ /g' \
+ | $PCP_AWK_PROG '
+ /^[0-9]/ { print $3,$NF }' \
+ | $PCP_AWK_PROG '
+ { if (l[$2] != "") {
+ delta = $1 - l[$2];
+ if (delta < 0)
+ delta += 60;
+ # print $2,delta
+ t[$2] += delta
+ n[$2]++
+ }
+ l[$2] = $1
+ }
+ END { for (i in n) {
+ printf "%d msec requested: ",i
+ if (n[i] != 0)
+ ave = 1000*t[i]/n[i]
+ else
+ ave = 0
+ if (i == 100 && 51 <= n[i] && n[i] <= 54)
+ printf "no. of samples within range, "
+ else if (i == 500 && 9 <= n[i] && n[i] <= 11)
+ printf "no. of samples within range, "
+ else if (i == 900 && 4 <= n[i] && n[i] <= 6)
+ printf "no. of samples within range, "
+ else
+ printf "no. of samples (%d) unexpected, ",n[i]
+ if (0.9 * i <= ave && ave <= 1.1 * i)
+ printf "avg within 10%% of requested delay\n"
+ else
+ printf "avg (%.2f msec) outside 10%% of requested delay\n",1000*t[i]/n[i]
+ }
+ }' \
+ | LC_COLLATE=POSIX sort
+done
diff --git a/qa/034.out b/qa/034.out
new file mode 100644
index 0000000..63abbac
--- /dev/null
+++ b/qa/034.out
@@ -0,0 +1,16 @@
+QA output created by 034
+
+=== src/bar ===
+100 msec requested: no. of samples within range, avg within 10% of requested delay
+500 msec requested: no. of samples within range, avg within 10% of requested delay
+900 msec requested: no. of samples within range, avg within 10% of requested delay
+
+=== src/mv-bar ===
+100 msec requested: no. of samples within range, avg within 10% of requested delay
+500 msec requested: no. of samples within range, avg within 10% of requested delay
+900 msec requested: no. of samples within range, avg within 10% of requested delay
+
+=== src/noti-bar ===
+100 msec requested: no. of samples within range, avg within 10% of requested delay
+500 msec requested: no. of samples within range, avg within 10% of requested delay
+900 msec requested: no. of samples within range, avg within 10% of requested delay
diff --git a/qa/037 b/qa/037
new file mode 100755
index 0000000..7a04da8
--- /dev/null
+++ b/qa/037
@@ -0,0 +1,47 @@
+#! /bin/sh
+# PCP QA Test No. 037
+# exercise meta-data services from an archive
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+# format of the line to match ...
+# refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin 804982618.523843 delta 5
+#
+_filter()
+{
+ sed -e '/^refcnt/s/=/ /g' \
+ -e 's/tifd=[0-9]*/tifd=N/g' \
+ -e 's/mdfd=[0-9]*/mdfd=N/g' \
+ -e 's/mfd=[0-9]*/mfd=N/g' \
+ | $PCP_AWK_PROG '
+$1 == "refcnt" && $11 == "origin" { if (t == 0) {
+ t = $12
+ $12 = "TIME"
+ }
+ else {
+ if (t == $12)
+ $12 = "SAME TIME"
+ else
+ $12 = "botch! " t "!=" $12
+ }
+ }
+ { print }'
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/foo src/bar src/mv-foo src/mv-bar src/noti-foo src/noti-bar
+do
+ echo
+ echo "Archive $arch"
+ src/xlog -v -a $arch | _filter | src/hex2nbo
+done
diff --git a/qa/037.out b/qa/037.out
new file mode 100644
index 0000000..49afe09
--- /dev/null
+++ b/qa/037.out
@@ -0,0 +1,409 @@
+QA output created by 037
+
+Archive src/foo
+
+=== Context 0 ===
+Dump Contexts: current context = 0
+Context[0] log src/foo: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sampledso.milliseconds - not known
+ sampledso.bin - not known
+
+pmid: 0x7400002 name: sample.seconds indom: 0xffffffff
+desc: type=1 indom=0xffffffff sem=1 units=sec
+
+pmid: 0x7400006 name: sample.bin indom: 0x7400002
+desc: type=0 indom=0x7400002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+pmid: 0x7400005 name: sample.colour indom: 0x7400001
+desc: type=0 indom=0x7400001 sem=3 units=none
+ numinst: 3
+ instance id: 0x0 red (== red?)
+ instance id: 0x1 green (== green?)
+ instance id: 0x2 blue (== blue?)
+
+pmid: 0x7400007 name: sample.drift indom: 0xffffffff
+desc: type=0 indom=0xffffffff sem=3 units=none
+
+pmid: 0x740002e name: sample.lights indom: 0xffffffff
+desc: type=6 indom=0xffffffff sem=4 units=none
+
+=== Context 1 ===
+Dump Contexts: current context = 1
+Context[1] log src/foo: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin SAME TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sampledso.milliseconds - not known
+ sampledso.bin - not known
+
+pmid: 0x7400002 name: sample.seconds indom: 0xffffffff
+desc: type=1 indom=0xffffffff sem=1 units=sec
+
+pmid: 0x7400006 name: sample.bin indom: 0x7400002
+desc: type=0 indom=0x7400002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+pmid: 0x7400005 name: sample.colour indom: 0x7400001
+desc: type=0 indom=0x7400001 sem=3 units=none
+ numinst: 3
+ instance id: 0x0 red (== red?)
+ instance id: 0x1 green (== green?)
+ instance id: 0x2 blue (== blue?)
+
+pmid: 0x7400007 name: sample.drift indom: 0xffffffff
+desc: type=0 indom=0xffffffff sem=3 units=none
+
+pmid: 0x740002e name: sample.lights indom: 0xffffffff
+desc: type=6 indom=0xffffffff sem=4 units=none
+
+Archive src/bar
+
+=== Context 0 ===
+Dump Contexts: current context = 0
+Context[0] log src/bar: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sample.seconds - not known
+ sample.bin - not known
+ sample.colour - not known
+ sample.drift - not known
+ sample.lights - not known
+
+pmid: 0x7800003 name: sampledso.milliseconds indom: 0xffffffff
+desc: type=5 indom=0xffffffff sem=1 units=millisec
+
+pmid: 0x7800006 name: sampledso.bin indom: 0x7800002
+desc: type=0 indom=0x7800002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+=== Context 1 ===
+Dump Contexts: current context = 1
+Context[1] log src/bar: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin SAME TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sample.seconds - not known
+ sample.bin - not known
+ sample.colour - not known
+ sample.drift - not known
+ sample.lights - not known
+
+pmid: 0x7800003 name: sampledso.milliseconds indom: 0xffffffff
+desc: type=5 indom=0xffffffff sem=1 units=millisec
+
+pmid: 0x7800006 name: sampledso.bin indom: 0x7800002
+desc: type=0 indom=0x7800002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+Archive src/mv-foo
+
+=== Context 0 ===
+Dump Contexts: current context = 0
+Context[0] log src/mv-foo: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sampledso.milliseconds - not known
+ sampledso.bin - not known
+
+pmid: 0x7400002 name: sample.seconds indom: 0xffffffff
+desc: type=1 indom=0xffffffff sem=1 units=sec
+
+pmid: 0x7400006 name: sample.bin indom: 0x7400002
+desc: type=0 indom=0x7400002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+pmid: 0x7400005 name: sample.colour indom: 0x7400001
+desc: type=0 indom=0x7400001 sem=3 units=none
+ numinst: 3
+ instance id: 0x0 red (== red?)
+ instance id: 0x1 green (== green?)
+ instance id: 0x2 blue (== blue?)
+
+pmid: 0x7400007 name: sample.drift indom: 0xffffffff
+desc: type=0 indom=0xffffffff sem=3 units=none
+
+pmid: 0x740002e name: sample.lights indom: 0xffffffff
+desc: type=6 indom=0xffffffff sem=4 units=none
+
+=== Context 1 ===
+Dump Contexts: current context = 1
+Context[1] log src/mv-foo: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin SAME TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sampledso.milliseconds - not known
+ sampledso.bin - not known
+
+pmid: 0x7400002 name: sample.seconds indom: 0xffffffff
+desc: type=1 indom=0xffffffff sem=1 units=sec
+
+pmid: 0x7400006 name: sample.bin indom: 0x7400002
+desc: type=0 indom=0x7400002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+pmid: 0x7400005 name: sample.colour indom: 0x7400001
+desc: type=0 indom=0x7400001 sem=3 units=none
+ numinst: 3
+ instance id: 0x0 red (== red?)
+ instance id: 0x1 green (== green?)
+ instance id: 0x2 blue (== blue?)
+
+pmid: 0x7400007 name: sample.drift indom: 0xffffffff
+desc: type=0 indom=0xffffffff sem=3 units=none
+
+pmid: 0x740002e name: sample.lights indom: 0xffffffff
+desc: type=6 indom=0xffffffff sem=4 units=none
+
+Archive src/mv-bar
+
+=== Context 0 ===
+Dump Contexts: current context = 0
+Context[0] log src/mv-bar: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sample.seconds - not known
+ sample.bin - not known
+ sample.colour - not known
+ sample.drift - not known
+ sample.lights - not known
+
+pmid: 0x7800003 name: sampledso.milliseconds indom: 0xffffffff
+desc: type=5 indom=0xffffffff sem=1 units=millisec
+
+pmid: 0x7800006 name: sampledso.bin indom: 0x7800002
+desc: type=0 indom=0x7800002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+=== Context 1 ===
+Dump Contexts: current context = 1
+Context[1] log src/mv-bar: mode=INTERP profile=NOT_SENT tifd=N mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 1 origin SAME TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sample.seconds - not known
+ sample.bin - not known
+ sample.colour - not known
+ sample.drift - not known
+ sample.lights - not known
+
+pmid: 0x7800003 name: sampledso.milliseconds indom: 0xffffffff
+desc: type=5 indom=0xffffffff sem=1 units=millisec
+
+pmid: 0x7800006 name: sampledso.bin indom: 0x7800002
+desc: type=0 indom=0x7800002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+Archive src/noti-foo
+
+=== Context 0 ===
+Dump Contexts: current context = 0
+Context[0] log src/noti-foo: mode=INTERP profile=NOT_SENT tifd=N-1 mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 0 origin TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sampledso.milliseconds - not known
+ sampledso.bin - not known
+
+pmid: 0x7400002 name: sample.seconds indom: 0xffffffff
+desc: type=1 indom=0xffffffff sem=1 units=sec
+
+pmid: 0x7400006 name: sample.bin indom: 0x7400002
+desc: type=0 indom=0x7400002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+pmid: 0x7400005 name: sample.colour indom: 0x7400001
+desc: type=0 indom=0x7400001 sem=3 units=none
+ numinst: 3
+ instance id: 0x0 red (== red?)
+ instance id: 0x1 green (== green?)
+ instance id: 0x2 blue (== blue?)
+
+pmid: 0x7400007 name: sample.drift indom: 0xffffffff
+desc: type=0 indom=0xffffffff sem=3 units=none
+
+pmid: 0x740002e name: sample.lights indom: 0xffffffff
+desc: type=6 indom=0xffffffff sem=4 units=none
+
+=== Context 1 ===
+Dump Contexts: current context = 1
+Context[1] log src/noti-foo: mode=INTERP profile=NOT_SENT tifd=N-1 mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 0 origin SAME TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sampledso.milliseconds - not known
+ sampledso.bin - not known
+
+pmid: 0x7400002 name: sample.seconds indom: 0xffffffff
+desc: type=1 indom=0xffffffff sem=1 units=sec
+
+pmid: 0x7400006 name: sample.bin indom: 0x7400002
+desc: type=0 indom=0x7400002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+pmid: 0x7400005 name: sample.colour indom: 0x7400001
+desc: type=0 indom=0x7400001 sem=3 units=none
+ numinst: 3
+ instance id: 0x0 red (== red?)
+ instance id: 0x1 green (== green?)
+ instance id: 0x2 blue (== blue?)
+
+pmid: 0x7400007 name: sample.drift indom: 0xffffffff
+desc: type=0 indom=0xffffffff sem=3 units=none
+
+pmid: 0x740002e name: sample.lights indom: 0xffffffff
+desc: type=6 indom=0xffffffff sem=4 units=none
+
+Archive src/noti-bar
+
+=== Context 0 ===
+Dump Contexts: current context = 0
+Context[0] log src/noti-bar: mode=INTERP profile=NOT_SENT tifd=N-1 mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 0 origin TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sample.seconds - not known
+ sample.bin - not known
+ sample.colour - not known
+ sample.drift - not known
+ sample.lights - not known
+
+pmid: 0x7800003 name: sampledso.milliseconds indom: 0xffffffff
+desc: type=5 indom=0xffffffff sem=1 units=millisec
+
+pmid: 0x7800006 name: sampledso.bin indom: 0x7800002
+desc: type=0 indom=0x7800002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
+
+=== Context 1 ===
+Dump Contexts: current context = 1
+Context[1] log src/noti-bar: mode=INTERP profile=NOT_SENT tifd=N-1 mdfd=N mfd=N
+refcnt 2 vol 0 offset 132 (vol 0) serial 0 origin SAME TIME delta 5
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmLookupName: Warning: some metrics unknown
+ sample.seconds - not known
+ sample.bin - not known
+ sample.colour - not known
+ sample.drift - not known
+ sample.lights - not known
+
+pmid: 0x7800003 name: sampledso.milliseconds indom: 0xffffffff
+desc: type=5 indom=0xffffffff sem=1 units=millisec
+
+pmid: 0x7800006 name: sampledso.bin indom: 0x7800002
+desc: type=0 indom=0x7800002 sem=3 units=none
+ numinst: 9
+ instance id: 0x64 bin-100 (== bin-100?)
+ instance id: 0xc8 bin-200 (== bin-200?)
+ instance id: 0x12c bin-300 (== bin-300?)
+ instance id: 0x190 bin-400 (== bin-400?)
+ instance id: 0x1f4 bin-500 (== bin-500?)
+ instance id: 0x258 bin-600 (== bin-600?)
+ instance id: 0x2bc bin-700 (== bin-700?)
+ instance id: 0x320 bin-800 (== bin-800?)
+ instance id: 0x384 bin-900 (== bin-900?)
diff --git a/qa/038 b/qa/038
new file mode 100755
index 0000000..fb0ec62
--- /dev/null
+++ b/qa/038
@@ -0,0 +1,190 @@
+#! /bin/sh
+# PCP QA Test No. 038
+# pmlogger would die with horrible errors when diagnostics enabled, due
+# to early timer events
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter_dumplog()
+{
+ _filter_dumpresult | sed \
+ -e '/inst /{
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}'
+
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+rm -f $tmp.*
+cat <<End-of-File >$tmp.config
+log mandatory on 1 sec {
+ sample.control
+ sample.milliseconds
+ sample.load
+ sample.colour
+ sample.bin
+ sample.bucket
+ sample.drift
+ sample.step
+ sample.write_me
+ sample.lights
+ sample.magnitude
+ sample.sysinfo
+ sample.pdu
+ sample.recv_pdu
+ sample.xmit_pdu
+ sample.noinst
+ disk.all.read
+ disk.all.write
+ disk.all.total
+ disk.all.blkread
+ disk.all.blkwrite
+ disk.all.blktotal
+ disk.all.active
+ disk.all.response
+ disk.all.bytes
+ disk.all.read_bytes
+ disk.all.write_bytes
+ disk.all.avg_disk.active
+ disk.all.avg_disk.response
+ kernel.all.cpu.idle
+ kernel.all.cpu.intr
+ kernel.all.cpu.sys
+ kernel.all.cpu.sxbrk
+ kernel.all.cpu.user
+ kernel.all.cpu.wait.total
+ kernel.all.cpu.wait.gfxc
+ kernel.all.cpu.wait.gfxf
+ kernel.all.cpu.wait.io
+ kernel.all.cpu.wait.pio
+ kernel.all.cpu.wait.swap
+ kernel.all.io.iget
+ kernel.all.io.bread
+ kernel.all.io.bwrite
+ kernel.all.io.lread
+ kernel.all.io.lwrite
+ kernel.all.io.phread
+ kernel.all.io.phwrite
+ kernel.all.io.wcancel
+ kernel.all.io.namei
+ kernel.all.io.dirblk
+ kernel.all.swap.swpocc
+ kernel.all.swap.swpque
+ kernel.all.load
+ kernel.all.users
+ kernel.all.pswitch
+ kernel.all.readch
+ kernel.all.runocc
+ kernel.all.runque
+ kernel.all.syscall
+ kernel.all.sysexec
+ kernel.all.sysfork
+ kernel.all.sysread
+ kernel.all.syswrite
+ kernel.all.writech
+ kernel.all.tty.recvintr
+ kernel.all.tty.xmitintr
+ kernel.all.tty.mdmintr
+ kernel.all.tty.out
+ kernel.all.tty.raw
+ kernel.all.tty.canon
+ kernel.all.intr.vme
+ kernel.all.intr.non_vme
+ kernel.all.ipc.msg
+ kernel.all.ipc.sema
+ kernel.all.pty.masterch
+ kernel.all.pty.slavech
+ kernel.all.flock.alloc
+ kernel.all.flock.inuse
+ hinv.ncpu
+ hinv.dcache
+ hinv.icache
+ hinv.physmem
+ hinv.pmeminterleave
+ hinv.ndisk
+}
+End-of-File
+
+$sudo rm -f core*
+# -D 511 is all of the PMAPI debug flags, excluding PM_TRACE_AF (the
+# latter is non-deterministic, unfortunately)
+pmlogger -D 511 -c $tmp.config -s 2 -l $tmp.log $tmp >$tmp.out 2>&1 &
+logger_pid=$!
+
+wait
+
+if [ "`echo core*`" != "core*" ]
+then
+ echo "Arrgh ... pmlogger dumped core?"
+ ls -l core*
+ file core*
+else
+ echo "OK, pmlogger survived"
+fi
+
+# The traces and the list of metrics depend on which operating
+# system you're running on. There is no real point in generating all
+# this output (filtered diagnostics and verbose pmdumplog) because
+# I expect to be different.
+# -Ken 1 June 2001
+#
+# Simple sanity check on the number of pmResults in the archive ...
+
+echo
+echo "count records in archive (expect 1 for preamble + 2) ..."
+pmdumplog $tmp 2>&1 \
+| tee -a $seq.full \
+| _filter_dumplog \
+| sed -n -e '/TIMESTAMP/s/STAMP.*/STAMP/p'
+
+# and truncate the test here!
+#
+exit
+
+# enable this to see what is really happening!
+echo "=== out ===" >038.full
+cat $tmp.out >>038.full
+echo >>038.full
+echo "=== log ===" >>038.full
+cat $tmp.log >>038.full
+
+# may need this yet...
+#
+# filter output and sum by diagnostic type
+cat $tmp.out $tmp.log \
+| sed \
+ -e '/success*/d' \
+ -e 's/Log f.*/Log/g' \
+ -e 's/searchindom/__localLogGetInDom/g' \
+| _filter_dumpresult \
+| sed \
+ -e 's/^\[[0-9][0-9]*]//' \
+ -e '/^[0-9][0-9][0-9]:/d' \
+ -e 's/^ *//' \
+ -e 's/After loading config/After_loading_config/' \
+ -e 's/Dump Contexts/Dump_Contexts/' \
+ -e 's/Dump Instance Profile/Dump_Instance_Profile/' \
+ -e 's/Dump optfetch/Dump_optfetch/' \
+ -e 's/free pdubuf/free_pdubuf/' \
+ -e '/__pmDecodeXtendError/d' \
+ -e '/__pmFdLookupIPC/d' \
+ -e 's/[(: =].*//'
+
+# now, what is in the log? ...
+pmdumplog $tmp 2>&1 \
+| _filter_dumplog \
+| sed \
+ -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
+ -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
+| ./xlate_2_new_pmns
diff --git a/qa/038.out b/qa/038.out
new file mode 100644
index 0000000..1f8ebdb
--- /dev/null
+++ b/qa/038.out
@@ -0,0 +1,7 @@
+QA output created by 038
+OK, pmlogger survived
+
+count records in archive (expect 1 for preamble + 2) ...
+TIMESTAMP
+TIMESTAMP
+TIMESTAMP
diff --git a/qa/039 b/qa/039
new file mode 100755
index 0000000..376b9cd
--- /dev/null
+++ b/qa/039
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 039
+# Can we access archives as they are being created?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter()
+{
+ sed \
+ -e '/Performance metrics from host /s/ host .*/ host .../' \
+ -e '/commencing/d' \
+ -e '/ending/d' \
+ -e '/^\[[0-9]* bytes]/d' \
+ -e '/value /{
+s/value [0-9][0-9]*/value INTEGER/
+}' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+ -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
+ -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd.pmlogger.archive/s/value ".*/value "PATH"/' \
+ | $PCP_AWK_PROG '
+$1 == "TIMESTAMP" && NF == 4 { print "TIMESTAMP 0 OFFSET OFFSET"; next }
+ { print }' \
+ | src/hex2nbo
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+rm -f $tmp.*
+cat <<End-of-File >$tmp.config
+log mandatory on 1500 msec {
+ sample.colour
+}
+End-of-File
+
+sleep 1 # get into sync
+pmlogger -c $tmp.config -l $tmp.log -s 4 $tmp &
+logger_pid=$!
+sleep 2
+
+echo "Partial, expect meta data"
+pmdumplog -id $tmp | _filter
+
+wait
+echo ""
+echo "Complete, expect meta data and 4 sets of results"
+pmdumplog -a $tmp | _filter
+
+echo ""
+echo "pmlogger log"
+_filter_pmlogger_log <$tmp.log
diff --git a/qa/039.out b/qa/039.out
new file mode 100644
index 0000000..70993df
--- /dev/null
+++ b/qa/039.out
@@ -0,0 +1,94 @@
+QA output created by 039
+Partial, expect meta data
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.5 (sample.colour)
+ Data Type: 32-bit int InDom: 29.1 0x7400001
+ Semantics: instant Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 29.1
+TIMESTAMP 3 instances
+ 0 or "red"
+ 1 or "green"
+ 2 or "blue"
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Complete, expect meta data and 4 sets of results
+Log Label (Log Format Version 2)
+Performance metrics from host ...
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.5 (sample.colour)
+ Data Type: 32-bit int InDom: 29.1 0x7400001
+ Semantics: instant Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 29.1
+TIMESTAMP 3 instances
+ 0 or "red"
+ 1 or "green"
+ 2 or "blue"
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 29.0.5 (sample.colour):
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+
+TIMESTAMP 29.0.5 (sample.colour):
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+
+TIMESTAMP 29.0.5 (sample.colour):
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+
+TIMESTAMP 29.0.5 (sample.colour):
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+
+pmlogger log
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
diff --git a/qa/040 b/qa/040
new file mode 100755
index 0000000..5182c01
--- /dev/null
+++ b/qa/040
@@ -0,0 +1,94 @@
+#! /bin/sh
+# PCP QA Test No. 040
+# mem leak in pmlogger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+
+if ps l -p 1 2>/dev/null | sed -e 1q | grep RSS >/dev/null
+then
+ ps_arg=l
+elif ps -l -p 1 2>/dev/null | sed -e 1q | grep RSS >/dev/null
+then
+ ps_arg=-l
+elif ps -o uid,pid,rss,fname -p 1 2>/dev/null | sed -e 1q | grep RSS >/dev/null
+then
+ ps_arg="-o uid,pid,rss,fname"
+else
+ echo "$seq: how do I coerce RSS from your ps?"
+fi
+
+rss_field=`ps $ps_arg -p 1 2>/dev/null | $PCP_AWK_PROG '
+NR == 1 { for (i = 1; i <= NF; i++) {
+ if ($i ~ /RSS/) {
+ print i
+ break
+ }
+ }
+ exit
+ }'`
+
+# real QA test starts here
+
+rm -f $tmp.*
+cat <<End-of-File >$tmp.config
+log mandatory on 5 msec {
+ pmcd.control
+}
+End-of-File
+
+_start_up_pmlogger -c $tmp.config -l $tmp.log -s 3000 $tmp
+mylogger=$pid
+_wait_for_pmlogger $mylogger $tmp.log
+
+seen=0
+for i in 1 2 3 4 5 6 7 8
+do
+sleep 1
+ps $ps_arg -p $mylogger \
+ | $PCP_AWK_PROG '
+NR == 1 { print; next }
+$3 == '$mylogger' { print }'
+done \
+| tee $tmp.out \
+| sed -e '/RSS/d' \
+| $PCP_AWK_PROG '{ print $'$rss_field' }' \
+| LC_COLLATE=POSIX sort \
+| uniq -c \
+| while read cnt sz
+do
+ seen=`expr $seen + 1`
+ # expect one line, with a count of 8 sizes, all the same!
+ if [ $seen -gt 1 -o $cnt -ne 8 ]
+ then
+ echo "Error: pmlogger virtual or resident size grew ... memory leak?"
+ echo " or maybe pmlogger died, or failed to start"
+ echo " pmlogger pid=$mylogger seen=$seen cnt=$cnt"
+ echo
+ echo "ps output ..."
+ cat $tmp.out
+ echo
+ echo "pmlogger log ..."
+ cat $tmp.log
+ exit 1
+ fi
+done
+
+echo "OK"
+
+_wait_pmlogger_end $mylogger
+echo
+echo "pmlogger log"
+_filter_pmlogger_log <$tmp.log
+
+exit 0
diff --git a/qa/040.out b/qa/040.out
new file mode 100644
index 0000000..499230a
--- /dev/null
+++ b/qa/040.out
@@ -0,0 +1,12 @@
+QA output created by 040
+OK
+
+pmlogger log
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
diff --git a/qa/041 b/qa/041
new file mode 100755
index 0000000..c0b2fb9
--- /dev/null
+++ b/qa/041
@@ -0,0 +1,158 @@
+#! /bin/sh
+# PCP QA Test No. 041
+# Test $PCP_RC_DIR/pcp start
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = mingw ] && _notrun "Process stop signal not available on Win32"
+
+_filter()
+{
+ tee -a $seq.full \
+ | _filter_pmcd_log \
+ | sed \
+ -e '/^ *$/d' \
+ -e 's/ -t [0-9][0-9]* / /' \
+ -e '/UID/d' \
+ -e '/UNAME/d' \
+ -e '/USER/d' \
+ -e '/host/s/host "[^"]*"/host SOMEHOST/' \
+ -e 's/^ *root[^/]*\// USERNAME ... \//' \
+ -e 's/^ *pcp[^/]*\// USERNAME ... \//' \
+ -e 's/pmcd -.*/pmcd/' \
+ -e '/__pmGetPDU:.*illegal PDU len=0/d' \
+ | _filter_pcp_start
+}
+
+_expect()
+{
+ echo "" | tee -a $seq.full
+ echo "### Expect: $* ###" | tee -a $seq.full
+ echo "" | tee -a $seq.full
+}
+
+tmp=/var/tmp/qa041.$$
+_needclean=true
+TAG=000666000magic
+status=1
+[ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+
+trap "_cleanup" 0 1 2 3 15
+
+_cleanup()
+{
+ if $_needclean
+ then
+ [ -f $tmp.control ] && \
+ $sudo cp $tmp.control $PCP_PMLOGGERCONTROL_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+rm -f $seq.full
+
+# real QA test starts here
+
+# disable all pmloggers ...
+$sudo cp $PCP_PMLOGGERCONTROL_PATH $tmp.control
+cat <<End-of-File >$tmp.tmp
+# dummy file created by qa/$seq on `date`
+# the goal here is to have a controlled primary logger that does
+# not make requests to pmcd!
+\$version=1.1
+LOCALHOSTNAME y n $LOGGING_DIR/LOCALHOSTNAME -c /dev/null
+End-of-File
+$sudo cp $tmp.tmp $PCP_PMLOGGERCONTROL_PATH
+
+# I have no idea why this is required, but this test run
+# after 040 sometimes produces garbled messages unless
+# this is done!
+$sudo $PCP_RC_DIR/pcp stop >$tmp.out 2>$tmp.err
+cat $tmp.out >>$seq.full
+_filter_pcp_stop <$tmp.out
+cat $tmp.err
+
+# allow pmcd's socket teardown to complete
+#
+sleep 2
+
+rm -f $tmp.out $tmp.err
+_expect "connection refused"
+pminfo -f sample.long.million 2>&1 | _filter
+
+$sudo $PCP_RC_DIR/pcp start >$tmp.one 2>&1
+
+_wait_for_pmcd
+_expect "one million retrieved OK from sample.long.million"
+pminfo -f sample.long.million
+
+sleep 3 # make sure pmlogger is not clobbered
+
+pid=`_get_pids_by_name pmcd`
+if [ -z "$pid" ]
+then
+ echo "Arrgh ... cannot find PID for pmcd!"
+ ps $PCP_PS_ALL_FLAGS
+ echo "=== pmcd.log ==="
+ cat $PCP_LOG_DIR/pmcd/pmcd.log
+ echo "=== pmcd.log.prev ==="
+ cat $PCP_LOG_DIR/pmcd/pmcd.log.prev
+ exit
+fi
+echo "pmcd pid=$pid" >>$seq.full
+ps $PCP_PS_ALL_FLAGS | egrep "PID|$pid" >>$seq.full
+
+$sudo kill -STOP $pid
+
+sleep 3 # make sure pmcd gets the SIGSTOP
+
+# this will hang, and then see a timeout failure when PMCD is
+# killed off
+$sudo rm -f $tmp.tmp
+PMCD_CONNECT_TIMEOUT=1000
+export PMCD_CONNECT_TIMEOUT
+pminfo -f sample.long.million >$tmp.tmp 2>&1 &
+
+_expect "Starting, Waiting, Forcing termination and Starting again"
+ps $PCP_PS_ALL_FLAGS | egrep "PID|$pid" >>$seq.full
+$sudo $PCP_RC_DIR/pcp start >$tmp.two 2>&1
+
+_wait_for_pmcd
+wait
+
+_filter_pcp_start <$tmp.one | _filter
+_filter <$tmp.two
+rm -f $tmp.out $tmp.err
+
+_expect "Timeout waiting for a response from PMCD"
+_filter <$tmp.tmp
+rm -f $tmp.tmp
+
+_expect "one million again"
+pminfo -f sample.long.million
+
+# all OK
+status=0
+exit
diff --git a/qa/041.out b/qa/041.out
new file mode 100644
index 0000000..3661b81
--- /dev/null
+++ b/qa/041.out
@@ -0,0 +1,36 @@
+QA output created by 041
+Waiting for pmcd to terminate ...
+
+### Expect: connection refused ###
+
+pminfo: Cannot connect to PMCD on host SOMEHOST: Connection refused
+
+### Expect: one million retrieved OK from sample.long.million ###
+
+
+sample.long.million
+ value 1000000
+
+### Expect: Starting, Waiting, Forcing termination and Starting again ###
+
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Process ...
+ USERNAME ... $PCP_BINADM_DIR/pmcd
+$PCP_RC_DIR/pmcd: Warning: Forcing pmcd to terminate!
+Starting pmcd ...
+Starting pmlogger ...
+
+### Expect: Timeout waiting for a response from PMCD ###
+
+pminfo: Cannot connect to PMCD on host SOMEHOST: Timeout waiting for a response from PMCD
+
+### Expect: one million again ###
+
+
+sample.long.million
+ value 1000000
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/043 b/qa/043
new file mode 100755
index 0000000..65d1c93
--- /dev/null
+++ b/qa/043
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 043
+# error encoding in numval within pmResult
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e 's/ value -*[0-9][0-9]*$/ value INTEGER/' \
+ -e 's/Permission denied/No permission to perform requested operation/'
+}
+
+_cleanup()
+{
+ _restore_primary_logger
+ rm -f $tmp.*
+ exit $status
+}
+
+status=1
+rm -f $seq.full
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+_change_config pmcd on
+_change_config pmlogger on
+_writable_primary_logger
+$sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+_wait_for_pmlogger
+
+src/chknumval | _filter
+status=0
+exit
diff --git a/qa/043.out b/qa/043.out
new file mode 100644
index 0000000..128be70
--- /dev/null
+++ b/qa/043.out
@@ -0,0 +1,77 @@
+QA output created by 043
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+
+base store test (failures not unexpected) ...
+pmStore: No permission to perform requested operation
+
+numpmid == 0 tests (failures expected) ...
+pmResult ... numpmid: 0
+pmStore: Insufficient elements in list
+__pmControlLog: Insufficient elements in list
+
+numval == 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 30.0.14 (sampledso.long.write_me): No values returned!
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+
+numval < 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 29.0.5 (sample.colour): No PMCD agent for domain of request
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INTEGER
+ inst [1 or "green"] value INTEGER
+ inst [2 or "blue"] value INTEGER
+pmResult ... numpmid: 4
+ 30.0.12 (sampledso.long.hundred): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 30.0.49 (sampledso.needprofile): Explicit instance identifier(s) required
+ 29.0.12 (sample.long.hundred): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 29.0.49 (sample.needprofile): Explicit instance identifier(s) required
+pmResult ... numpmid: 4
+ 30.0.12 (sampledso.long.hundred): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 30.0.49 (sampledso.needprofile): numval: 3 valfmt: 1 vlist[]:
+ inst [0 or "colleen"] value 3.05
+ inst [2 or "emma"] value 11.09
+ inst [4 or "fat"] value 5.2600002
+ 29.0.12 (sample.long.hundred): numval: 1 valfmt: 0 vlist[]:
+ value INTEGER
+ 29.0.49 (sample.needprofile): numval: 2 valfmt: 1 vlist[]:
+ inst [1 or "terry"] value 12.05
+ inst [3 or "cathy"] value 11.09
diff --git a/qa/044 b/qa/044
new file mode 100755
index 0000000..ba24fcc
--- /dev/null
+++ b/qa/044
@@ -0,0 +1,105 @@
+#! /bin/sh
+# PCP QA Test No. 044
+# check pmval and pminfo for numval == 0 and < 0
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/Warning.*license/d' \
+ -e "s/^host: .*/host: local:/g"
+}
+
+_doit()
+{
+ $sudo rm -f core*
+ pmval -s 1 $m 2>$tmp.err | _filter
+ _filter <$tmp.err
+ case $1
+ in
+ proc.*)
+ # impossible pid
+ pmval -s 1 -i 123456789 $m 2>$tmp.err | _filter
+ _filter <$tmp.err
+ ;;
+ esac
+ if [ "`echo core*`" != "core*" ]
+ then
+ echo "Arrgh, pmval dumped core"
+ ls -l core*
+ file core*
+ fi
+
+ $sudo rm -f core*
+ pminfo -f $m
+ if [ "`echo core*`" != "core*" ]
+ then
+ echo "Arrgh, pminfo dumped core"
+ ls -l core*
+ file core*
+ fi
+
+}
+
+rm -f $seq.out $seq.full
+if [ $PCP_PLATFORM = linux ]
+then
+ # proc metrics may not be available
+ #
+ if pminfo proc.nprocs >/dev/null 2>&1
+ then
+ have_proc=true
+ ln $seq.linux $seq.out
+ else
+ have_proc=false
+ ln $seq.linux.1 $seq.out
+ fi
+elif [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ ln $seq.darwin $seq.out
+elif [ $PCP_PLATFORM = irix ]
+then
+ ln $seq.irix $seq.out
+else
+ echo "Warning: no validated output for $PCP_PLATFORM"
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+for m in sample.noinst sampledso.needprofile \
+ proc.psinfo.pid proc.pstatus.syscall proc.pscred.ngroups \
+ proc.psusage.starttime proc.memory.physical.stack
+do
+ case $m
+ in
+ proc.*)
+ [ $PCP_PLATFORM = linux ] && continue
+ [ $PCP_PLATFORM = darwin ] && continue
+ [ $PCP_PLATFORM = solaris ] && continue
+ ;;
+ esac
+ _doit $m
+done
+
+if [ $PCP_PLATFORM = linux ] && $have_proc
+then
+ # impossible pid
+ echo
+ pmval -s 1 -i 123456789 proc.psinfo.utime 2>$tmp.err | _filter
+ _filter <$tmp.err
+ echo
+fi
+
+_wait_for_pmcd
diff --git a/qa/044.darwin b/qa/044.darwin
new file mode 100644
index 0000000..8b073b0
--- /dev/null
+++ b/qa/044.darwin
@@ -0,0 +1,22 @@
+QA output created by 044
+
+metric: sample.noinst
+host: local:
+semantics: instantaneous value
+units: none
+samples: 1
+No values available
+
+sample.noinst
+No value(s) available!
+
+metric: sampledso.needprofile
+host: local:
+semantics: discrete instantaneous value
+units: none
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+sampledso.needprofile
+Error: Explicit instance identifier(s) required
diff --git a/qa/044.irix b/qa/044.irix
new file mode 100644
index 0000000..cdf0f51
--- /dev/null
+++ b/qa/044.irix
@@ -0,0 +1,87 @@
+QA output created by 044
+
+metric: sample.noinst
+host: local:
+semantics: instantaneous value
+units: none
+samples: 1
+No values available
+
+sample.noinst
+No value(s) available!
+
+metric: sampledso.needprofile
+host: local:
+semantics: discrete instantaneous value
+units: none
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+sampledso.needprofile
+Error: Explicit instance identifier(s) required
+
+metric: proc.psinfo.pid
+host: local:
+semantics: discrete instantaneous value
+units: none
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+pmval: instance 123456789 not available
+
+proc.psinfo.pid
+Error: Explicit instance identifier(s) required
+
+metric: proc.pstatus.syscall
+host: local:
+semantics: instantaneous value
+units: none
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+pmval: instance 123456789 not available
+
+proc.pstatus.syscall
+Error: Explicit instance identifier(s) required
+
+metric: proc.pscred.ngroups
+host: local:
+semantics: instantaneous value
+units: none
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+pmval: instance 123456789 not available
+
+proc.pscred.ngroups
+Error: Explicit instance identifier(s) required
+
+metric: proc.psusage.starttime
+host: local:
+semantics: discrete instantaneous value
+units: sec
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+pmval: instance 123456789 not available
+
+proc.psusage.starttime
+Error: Explicit instance identifier(s) required
+
+metric: proc.memory.physical.stack
+host: local:
+semantics: instantaneous value
+units: Kbyte
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+pmval: instance 123456789 not available
+
+proc.memory.physical.stack
+Error: Explicit instance identifier(s) required
diff --git a/qa/044.linux b/qa/044.linux
new file mode 100644
index 0000000..3ab12a5
--- /dev/null
+++ b/qa/044.linux
@@ -0,0 +1,26 @@
+QA output created by 044
+
+metric: sample.noinst
+host: local:
+semantics: instantaneous value
+units: none
+samples: 1
+No values available
+
+sample.noinst
+No value(s) available!
+
+metric: sampledso.needprofile
+host: local:
+semantics: discrete instantaneous value
+units: none
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+sampledso.needprofile
+Error: Explicit instance identifier(s) required
+
+
+pmval: instance 123456789 not available
+
diff --git a/qa/044.linux.1 b/qa/044.linux.1
new file mode 100644
index 0000000..8b073b0
--- /dev/null
+++ b/qa/044.linux.1
@@ -0,0 +1,22 @@
+QA output created by 044
+
+metric: sample.noinst
+host: local:
+semantics: instantaneous value
+units: none
+samples: 1
+No values available
+
+sample.noinst
+No value(s) available!
+
+metric: sampledso.needprofile
+host: local:
+semantics: discrete instantaneous value
+units: none
+samples: 1
+
+pmval: pmFetch: Explicit instance identifier(s) required
+
+sampledso.needprofile
+Error: Explicit instance identifier(s) required
diff --git a/qa/045 b/qa/045
new file mode 100755
index 0000000..d1e7650
--- /dev/null
+++ b/qa/045
@@ -0,0 +1,29 @@
+#! /bin/sh
+# PCP QA Test No. 045
+# pmstore and numval == 0 or numval < 0
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/Permission denied/No permission to perform requested operation/'
+}
+
+# real QA test starts here
+pmstore sample.needprofile 1 | _filter
+
+pmstore -i terry sample.needprofile 1 | _filter
+
+pmstore sample.noinst 1 | _filter
+
diff --git a/qa/045.out b/qa/045.out
new file mode 100644
index 0000000..5e60af9
--- /dev/null
+++ b/qa/045.out
@@ -0,0 +1,5 @@
+QA output created by 045
+sample.needprofile: Error: Explicit instance identifier(s) required
+sample.needprofile inst [1 or "terry"] old value=12.05 new value=1
+sample.needprofile: pmStore: No permission to perform requested operation
+sample.noinst: No value(s) available!
diff --git a/qa/046 b/qa/046
new file mode 100755
index 0000000..b8850c1
--- /dev/null
+++ b/qa/046
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 046
+# archive logs for metrics with numval <= 0 ??
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter()
+{
+ sed \
+ -e '/^\[[0-9]* bytes]/d' \
+ -e "/pmcd\.pmlogger\./s/\[$logger_pid/\[LOGGER_PID/g" \
+ -e "/pmcd\.pmlogger\./s/\"$logger_pid\"/\"LOGGER_PID\"/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/' \
+ -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
+ | $PCP_AWK_PROG '
+$1 == "TIMESTAMP" && NF == 4 { print "TIMESTAMP 0 OFFSET OFFSET"; next }
+ { print }' \
+ | src/hex2nbo
+}
+
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+cat > $tmp.config << EOF
+mandatory on 100 msec {
+ sample.noinst
+ sampledso.needprofile
+}
+EOF
+
+pmlogger -c $tmp.config -l $tmp.log -s 3 $tmp &
+logger_pid=$!
+wait
+_filter_pmlogger_log <$tmp.log
+pmdumplog -a $tmp | _filter_pmdumplog | _filter
+
+rm $tmp.*
+cat > $tmp.config << EOF
+mandatory on 100 msec {
+ sampledso.needprofile [terry,cathy,emma]
+}
+EOF
+
+pmlogger -c $tmp.config -l $tmp.log -s 3 $tmp &
+logger_pid=$!
+wait
+_filter_pmlogger_log <$tmp.log
+pmdumplog -a $tmp | _filter_pmdumplog | _filter
+
+exit 0
diff --git a/qa/046.out b/qa/046.out
new file mode 100644
index 0000000..f6ff409
--- /dev/null
+++ b/qa/046.out
@@ -0,0 +1,116 @@
+QA output created by 046
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.9 (sample.noinst)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.49 (sampledso.needprofile)
+ Data Type: float InDom: 30.4 0x7800004
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 30.0.49 (sampledso.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+
+TIMESTAMP 30.0.49 (sampledso.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+
+TIMESTAMP 30.0.49 (sampledso.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 30.0.49 (sampledso.needprofile)
+ Data Type: float InDom: 30.4 0x7800004
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 30.4
+TIMESTAMP 5 instances
+ 0 or "colleen"
+ 1 or "terry"
+ 2 or "emma"
+ 3 or "cathy"
+ 4 or "fat bald bastard"
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 30.0.49 (sampledso.needprofile):
+ inst [1 or "terry"] value 12.05
+ inst [2 or "emma"] value 11.09
+ inst [3 or "cathy"] value 11.09
+
+TIMESTAMP 30.0.49 (sampledso.needprofile):
+ inst [1 or "terry"] value 12.05
+ inst [2 or "emma"] value 11.09
+ inst [3 or "cathy"] value 11.09
+
+TIMESTAMP 30.0.49 (sampledso.needprofile):
+ inst [1 or "terry"] value 12.05
+ inst [2 or "emma"] value 11.09
+ inst [3 or "cathy"] value 11.09
diff --git a/qa/048 b/qa/048
new file mode 100755
index 0000000..021ec06
--- /dev/null
+++ b/qa/048
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 048
+# exercise log/archive retrievals
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter_dumplog()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/'
+
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/foo src/mv-foo src/noti-foo
+do
+ echo
+ echo "=== archive $arch ==="
+ src/xarch -v -a $arch | _filter_dumplog
+done
diff --git a/qa/048.out b/qa/048.out
new file mode 100644
index 0000000..7d9bd9c
--- /dev/null
+++ b/qa/048.out
@@ -0,0 +1,394 @@
+QA output created by 048
+
+=== archive src/foo ===
+
+Pass 1: forward scan
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+Found 8 samples
+
+Pass 2: backwards scan
+Found 8 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found 16 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found 8 samples
+Found 6 samples
+Found 4 samples
+Found 2 samples
+Found 0 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found 8 samples
+Found 6 samples
+Found 4 samples
+Found 2 samples
+Found 0 samples
+
+Pass 6: EOL tests, forwards and backwards
+
+=== archive src/mv-foo ===
+
+Pass 1: forward scan
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+Found 8 samples
+
+Pass 2: backwards scan
+Found 8 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found 16 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found 8 samples
+Found 6 samples
+Found 4 samples
+Found 2 samples
+Found 0 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found 8 samples
+Found 6 samples
+Found 4 samples
+Found 2 samples
+Found 0 samples
+
+Pass 6: EOL tests, forwards and backwards
+
+=== archive src/noti-foo ===
+
+Pass 1: forward scan
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+pmResult ... numpmid: 6
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.46 (sample.lights): numval: 1 valfmt: 1 vlist[]:
+ value STRING
+ 30.0.3 (sampledso.milliseconds): No values returned!
+ 30.0.6 (sampledso.bin): No values returned!
+Found 8 samples
+
+Pass 2: backwards scan
+Found 8 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found 16 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found 8 samples
+Found 6 samples
+Found 4 samples
+Found 2 samples
+Found 0 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found 8 samples
+Found 6 samples
+Found 4 samples
+Found 2 samples
+Found 0 samples
+
+Pass 6: EOL tests, forwards and backwards
diff --git a/qa/049 b/qa/049
new file mode 100755
index 0000000..0b69c3e
--- /dev/null
+++ b/qa/049
@@ -0,0 +1,76 @@
+#! /bin/sh
+# PCP QA Test No. 049
+# Big archive exerciser and temporal index
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+if [ $PCP_VER -lt 3509 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/mv-bigbin
+do
+ echo | tee -a $seq.full
+ echo "=== $arch ===" | tee -a $seq.full
+ pmdumplog -t $arch >>$seq.full
+ src/xarch -a $arch -D128 2>&1 \
+ | tee -a $seq.full \
+ | sed \
+ -e 's/posn=[0-9]*/posn=OFFSET/' \
+ -e 's/__pmLogChkLabel/chkLabel/g' \
+ -e '/__pmLogRead/d' \
+ -e '/LogLoadMeta/d' \
+ -e '/__pmLogOpen: inspect file/d' \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIME/g' \
+ -e 's/TIME (t=[0-9][0-9.]*)/TIME/g' \
+ -e 's/pid=.*host=.*/pid=PID host=HOSTNAME/' \
+ | $PCP_AWK_PROG '
+$1 == "chkLabel:" && /vol=0/ { if (fd1 == "") fd1 = $2
+ if (fd1 == $2) $2 = "fd=<n1>"
+ }
+$1 == "chkLabel:" && /vol=-2/ { if (fd2 == "") fd2 = $2
+ if (fd2 == $2) $2 = "fd=<n2>"
+ }
+$1 == "chkLabel:" && /vol=-1/ { if (fd3 == "") fd3 = $2
+ if (fd3 == $2) $2 = "fd=<n3>"
+ }
+$1 == "__pmLogRead:" { if (fd4 == "") fd4 = $2
+ if (fd4 == $2) $2 = "fd=<n4>"
+ }
+$1 == "chkLabel:" && /vol=[1-9]/ { if (fd5 == "") fd5 = $2
+ if (fd5 == $2) $2 = "fd=<n5>"
+ }
+ { print }' \
+ | $PCP_AWK_PROG -v sortfile=$tmp.sort '
+/pmLogOpen/ { print > sortfile; open=1; next }
+open==1 && $1 !~ /pmLogOpen/ { system("sort " sortfile); open=0 }
+/^Pass / { pass = $2 }
+pass == "4:" && /^Found 1000 / { print; skip = 1 }
+pass == "4:" && /^Found 750 / { print; skip = 1 }
+pass == "5:" && /^Found 750 / { print; skip = 1 }
+pass == "5:" && /^Found 500 / { print; skip = 1 }
+skip == 1 && /__pmLogSetTime/ { print "__pmLogSetTime ..."; next }
+skip == 1 && /__pmLogFetch/ { skip = 2; next }
+skip == 2 && /__pmLogFetch/ { next }
+skip == 1 { next }
+skip == 2 { skip = 0 }
+ { print }'
+done
+
+exit 0
diff --git a/qa/049.out.1 b/qa/049.out.1
new file mode 100644
index 0000000..5328c63
--- /dev/null
+++ b/qa/049.out.1
@@ -0,0 +1,2216 @@
+QA output created by 049
+
+=== src/mv-bigbin ===
+chkLabel: fd=<n1> vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 0
+chkLabel: fd=<n2> vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOSTNAME
+chkLabel: fd=<n3> vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOSTNAME
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+__pmLogSetTime(1) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+chkLabel: fd=<n5> vol=1 [magic=50052602 version=2 vol=1 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 1
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=2 [magic=50052602 version=2 vol=2 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 2
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=3 [magic=50052602 version=2 vol=3 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=4 [magic=50052602 version=2 vol=4 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=5 [magic=50052602 version=2 vol=5 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=6 [magic=50052602 version=2 vol=6 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=7 [magic=50052602 version=2 vol=7 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=8 [magic=50052602 version=2 vol=8 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=9 [magic=50052602 version=2 vol=9 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+
+Pass 1: forward scan
+Found 1000 samples
+__pmLogSetTime(0) TIME delta=0 after end ti@TIME vol=9 posn=OFFSET serial=0
+__pmLogChangeVol: change to volume 8
+vol=8 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+vol=7 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+
+Pass 2: backwards scan
+Found 1000 samples
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+__pmLogSetTime(1) TIME delta=0__pmLogChangeVol: change to volume 9
+ after end ti@TIME vol=9 posn=OFFSET serial=0
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 8
+vol=8 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 7
+vol=7 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+
+Pass 3: concurrent forwards and backwards scans
+Found 2000 samples
+__pmLogSetTime(0) TIME delta=0 before ti[1]@TIME vol=0 posn=OFFSET serial=0
+__pmLogFetch: ctx=0 skip reverse 1 to unknown time, found=0
+__pmLogFetch: ctx=0 skip 1 to TIME
+__pmLogChangeVol: change to volume 1
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found 1000 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+Found 750 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+Found 500 samples
+__pmLogSetTime(0) TIME delta=0__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+... vol=6 posn=OFFSET serial=1
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogFetch: ctx=0 skip 44 to TIME
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+Found 250 samples
+__pmLogSetTime(0) TIME delta=0 after end ti@TIME vol=9 posn=OFFSET serial=1
+Found 0 samples
+__pmLogSetTime(0) TIME delta=0 after end ti@TIME vol=9 posn=OFFSET serial=0
+__pmLogChangeVol: change to volume 8
+vol=8 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+vol=7 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found 1000 samples
+__pmLogSetTime(0) TIME delta=0__pmLogChangeVol: change to volume 7
+ after ti[8]@TIME vol=7 posn=OFFSET serial=0
+__pmLogFetch: ctx=0 skip reverse 44 to unknown time, found=0
+__pmLogFetch: ctx=0 skip 1 to TIME
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+Found 750 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+Found 500 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+Found 250 samples
+__pmLogSetTime(0) TIME delta=0 before ti[1]@TIME vol=0 posn=OFFSET serial=1
+Found 0 samples
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+__pmLogSetTime(0) TIME delta=0__pmLogChangeVol: change to volume 9
+ after end ti@TIME vol=9 posn=OFFSET serial=1
+
+Pass 6: EOL tests, forwards and backwards
diff --git a/qa/049.out.2 b/qa/049.out.2
new file mode 100644
index 0000000..539be84
--- /dev/null
+++ b/qa/049.out.2
@@ -0,0 +1,2220 @@
+QA output created by 049
+
+=== src/mv-bigbin ===
+chkLabel: fd=<n1> vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 0
+chkLabel: fd=<n2> vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOSTNAME
+chkLabel: fd=<n3> vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOSTNAME
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+__pmLogSetTime(1) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+chkLabel: fd=<n5> vol=1 [magic=50052602 version=2 vol=1 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 1
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=2 [magic=50052602 version=2 vol=2 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 2
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=3 [magic=50052602 version=2 vol=3 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=4 [magic=50052602 version=2 vol=4 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=5 [magic=50052602 version=2 vol=5 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=6 [magic=50052602 version=2 vol=6 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=7 [magic=50052602 version=2 vol=7 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=8 [magic=50052602 version=2 vol=8 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+chkLabel: fd=<n5> vol=9 [magic=50052602 version=2 vol=9 pid=PID host=HOSTNAME
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+
+Pass 1: forward scan
+Found 1000 samples
+__pmLogSetTime(0) TIME delta=0 after end ti@TIME vol=9 posn=OFFSET serial=0
+__pmLogFetch: ctx=0 skip reverse 1 to unknown time, found=0
+__pmLogChangeVol: change to volume 8
+vol=8 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+vol=7 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+
+Pass 2: backwards scan
+Found 1000 samples
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+__pmLogSetTime(1) TIME delta=0__pmLogChangeVol: change to volume 9
+ after end ti@TIME vol=9 posn=OFFSET serial=0
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogFetch: ctx=1 skip reverse 1 to unknown time, found=0
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 8
+vol=8 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 7
+vol=7 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 4
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 5
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 3
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 6
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 7
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 8
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 9
+__pmLogChangeVol: change to volume 0
+
+Pass 3: concurrent forwards and backwards scans
+Found 2000 samples
+__pmLogSetTime(0) TIME delta=0 before ti[1]@TIME vol=0 posn=OFFSET serial=0
+__pmLogFetch: ctx=0 skip reverse 1 to unknown time, found=0
+__pmLogFetch: ctx=0 skip 1 to TIME
+__pmLogChangeVol: change to volume 1
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found 1000 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 3
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+Found 750 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 5
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+Found 500 samples
+__pmLogSetTime(0) TIME delta=0__pmLogChangeVol: change to volume 7
+ after ti[8]@TIME back up ...
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+... vol=6 posn=OFFSET serial=1
+__pmLogChangeVol: change to volume 7
+@TIME len=header+484+trailer
+__pmLogFetch: ctx=0 skip 44 to TIME
+__pmLogChangeVol: change to volume 8
+@TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 9
+@TIME len=header+484+trailer
+Found 250 samples
+__pmLogSetTime(0) TIME delta=0 after end ti@TIME vol=9 posn=OFFSET serial=1
+Found 0 samples
+__pmLogSetTime(0) TIME delta=0 after end ti@TIME vol=9 posn=OFFSET serial=0
+__pmLogFetch: ctx=0 skip reverse 1 to unknown time, found=0
+__pmLogChangeVol: change to volume 8
+vol=8 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 7
+vol=7 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found 1000 samples
+__pmLogSetTime(0) TIME delta=0__pmLogChangeVol: change to volume 7
+ after ti[8]@TIME vol=7 posn=OFFSET serial=0
+__pmLogFetch: ctx=0 skip reverse 44 to unknown time, found=0
+__pmLogFetch: ctx=0 skip 1 to TIME
+__pmLogChangeVol: change to volume 6
+vol=6 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 5
+vol=5 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 4
+vol=4 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+Found 750 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 3
+vol=3 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 2
+vol=2 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+Found 500 samples
+__pmLogSetTime ...
+__pmLogChangeVol: change to volume 1
+vol=1 posn=OFFSET @TIME len=header+484+trailer
+__pmLogChangeVol: change to volume 0
+vol=0 posn=OFFSET @TIME len=header+484+trailer
+Found 250 samples
+__pmLogSetTime(0) TIME delta=0 before ti[1]@TIME vol=0 posn=OFFSET serial=1
+Found 0 samples
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=OFFSET serial=1
+__pmLogSetTime(0) TIME delta=0__pmLogChangeVol: change to volume 9
+ after end ti@TIME vol=9 posn=OFFSET serial=1
+
+Pass 6: EOL tests, forwards and backwards
diff --git a/qa/050 b/qa/050
new file mode 100755
index 0000000..ae9d37b
--- /dev/null
+++ b/qa/050
@@ -0,0 +1,32 @@
+#! /bin/sh
+# PCP QA Test No. 050
+# log operations before the start and after the end
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3509 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/foo src/bigbin src/mv-foo src/mv-bigbin src/noti-foo src/noti-bigbin
+do
+ echo
+ echo "Archive $arch ..."
+ src/eofarch -a $arch
+done
diff --git a/qa/050.out.1 b/qa/050.out.1
new file mode 100644
index 0000000..2445bcb
--- /dev/null
+++ b/qa/050.out.1
@@ -0,0 +1,127 @@
+QA output created by 050
+
+Archive src/foo ...
+
+Pass 1: forward scan
+Found 9 samples, with 9 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/bigbin ...
+
+Pass 1: forward scan
+Found 1001 samples, with 1001 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/mv-foo ...
+
+Pass 1: forward scan
+Found 9 samples, with 9 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/mv-bigbin ...
+
+Pass 1: forward scan
+Found 1001 samples, with 1001 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/noti-foo ...
+
+Pass 1: forward scan
+Found 9 samples, with 9 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 9 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 9 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/noti-bigbin ...
+
+Pass 1: forward scan
+Found 1001 samples, with 1001 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 1001 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 1001 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
diff --git a/qa/050.out.2 b/qa/050.out.2
new file mode 100644
index 0000000..0215749
--- /dev/null
+++ b/qa/050.out.2
@@ -0,0 +1,127 @@
+QA output created by 050
+
+Archive src/foo ...
+
+Pass 1: forward scan
+Found 9 samples, with 9 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 1 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 2 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/bigbin ...
+
+Pass 1: forward scan
+Found 1001 samples, with 1001 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 1 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 2 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/mv-foo ...
+
+Pass 1: forward scan
+Found 9 samples, with 9 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 1 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 2 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/mv-bigbin ...
+
+Pass 1: forward scan
+Found 1001 samples, with 1001 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 0 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 1 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 2 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/noti-foo ...
+
+Pass 1: forward scan
+Found 9 samples, with 9 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 9 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 9 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
+
+Archive src/noti-bigbin ...
+
+Pass 1: forward scan
+Found 1001 samples, with 1001 log reads
+
+Pass 2: before start of log scan
+ 2.1: FORWARD, expect success
+ found 1 with 1 log reads
+ 2.2: BACKWARD, expect EOL
+ End of PCP archive log with 1001 log_reads
+ 2.3: INTERP, expect EOL
+ End of PCP archive log with 0 log_reads
+
+Pass 3: after end of log scan
+ 3.1: FORWARD, expect EOL
+ End of PCP archive log with 1001 log_reads
+ 3.2: BACKWARD, expect success
+ found 1 with 1 log reads
+ 3.3: INTERP, expect EOL
+ End of PCP archive log with 1 log_reads
diff --git a/qa/051 b/qa/051
new file mode 100755
index 0000000..6c1de2e
--- /dev/null
+++ b/qa/051
@@ -0,0 +1,196 @@
+#! /bin/sh
+# PCP QA Test No. 051
+# Check pmcd access control parsing
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+rm -f $seq.out
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+# get valid hostnames: $remote_1, $remote_2, etc.
+#
+. ./051.hosts
+
+# Remember that we cd into 051.work
+#
+signal=$PCP_BINADM_DIR/pmsignal
+config=$PCP_PMCDCONF_PATH
+oconfig=$config.O
+log=./pmcd.log
+me=`hostname`
+
+rm -f $here/$seq.full
+
+_filter_hostnames()
+{
+ sed \
+ -e "s/$remote_1/remote-host-1/" \
+ -e "s/$remote_2/remote-host-2/" \
+ -e "s/$remote_3/remote-host-3/" \
+ -e "s/$remote_4/remote-host-4/" \
+ -e "s/$remote_5/remote-host-5/"
+}
+
+_filter_die_log()
+{
+ _filter_pmcd_log <$log \
+ | _filter_hostnames \
+ | sed \
+ -e 's/^$//' \
+ -e 's/__pmGetAddrInfo/gethostbyname/g' \
+ -e 's/__pmGetHostByName/gethostbyname/g' \
+ -e '/Permission clash/s/for .*/for .../' \
+ -e '/gethostbyname(/s/name([0-9.]*)/name(IPADDR)/' \
+ -e '/gethostbyname(/s/).*/) ERROR.../' \
+ -e "/host '.*':/s/host '.*'/host 'HOST'/" \
+ -e '/UNIX_DOMAIN_SOCKET/d'
+}
+
+_filter_kill_log()
+{
+ sleep 3
+ _filter_pmcd_log <$log \
+ | _filter_hostnames \
+ | sed \
+ -e 's/Cannot open 000000660066: No such file or directory//' \
+ -e 's/^$//' \
+ -e '/^00[08]:/d' \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ | $PCP_AWK_PROG '
+$3 ~ /^[0-9][0-9]*$/ { $3 = "A_PID" }
+ { print }'
+
+}
+
+interrupt()
+{
+ echo "Interrupted"
+ rm -f $tmp.*
+ exit
+}
+
+cleanup()
+{
+ if [ -f $oconfig ]
+ then
+ $sudo mv $oconfig $config
+ fi
+ echo "Restarting pmcd"
+ unset PMCD_SOCKET
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ rm -f $tmp.*
+}
+
+trap interrupt 1 2 3 15
+trap cleanup 0
+
+# real QA test starts here
+
+echo "Make sure all the config files are there"
+/bin/sh setup.051 > $tmp.err 2>&1
+if [ $? -ne 0 ]
+then
+ echo "setup.051 failed:"
+ cat $tmp.err
+ exit 1
+fi
+
+ls 051.work/die.*
+ls 051.work/kill*
+cd 051.work
+
+echo "terminating pmcd..."
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+if [ -f $config ]
+then
+ $sudo mv $config $oconfig
+else
+ echo "Warning: $config not found"
+fi
+
+echo
+echo "Running the scanner/parser tests (die.\*)"
+
+export PMCD_SOCKET=$tmp.pmcd.socket
+for t in die.*
+do
+ rm -f pmcd.log
+ $sudo cp $t $config
+ rm -f pmcd.log
+ echo
+ $PCP_ECHO_PROG $PCP_ECHO_N "$t================""$PCP_ECHO_C"
+ $PCP_ECHO_PROG "$t================" >>$here/$seq.full
+ cat $t >>$here/$seq.full
+ case $t
+ in
+ die.029|die.035|die.036|die.043)
+ echo " may dump core for IRIX 6.1 ... bug in gethostbyname()"
+ ;;
+ *)
+ echo
+ esac
+ if [ "X$t" = "Xdie.029" -o "X$t" = "Xdie.043" ]
+ then
+ echo "(config for $t is host-specific)"
+ else
+ _filter_hostnames <$config \
+ | sed -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;g"
+ fi
+ $PCP_PMCD_PROG -f -x /no/such/file
+ echo "$t logfile----------------"
+ echo "$t logfile----------------" >>$here/$seq.full
+ cat $log >>$here/$seq.full
+ if [ -x filter.$t ]
+ then
+ ./filter.$t <$log
+ else
+ _filter_die_log
+ fi
+ echo "$t endlog ----------------"
+done
+
+echo
+echo
+echo "Running the scanner/parser tests (kill.\*)"
+echo
+
+for t in kill.*
+do
+ rm -f pmcd.log
+ $sudo cp $t $config
+ rm -f pmcd.log
+ echo "$t================"
+ echo "$t================" >>$here/$seq.full
+ cat $t >>$here/$seq.full
+ _filter_hostnames <$config \
+ | sed -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;g"
+ # Give pmcd 3 seconds to run
+ ((sleep 3; $signal -a -s TERM pmcd)&) >/dev/null 2>&1
+ $PCP_PMCD_PROG -f
+ echo "$t logfile----------------"
+ echo "$t logfile----------------" >>$here/$seq.full
+ cat $log >>$here/$seq.full
+ if [ -x filter.$t ]
+ then
+ ./filter.$t <$log
+ else
+ _filter_kill_log
+ fi
+ echo "$t endlog ----------------"
+done
diff --git a/qa/051.hosts b/qa/051.hosts
new file mode 100644
index 0000000..242aaa7
--- /dev/null
+++ b/qa/051.hosts
@@ -0,0 +1,14 @@
+# Need to customize this for the local environment
+#
+# Each $remote_x must be assigned to a valid hostname that can be
+# looked up using the local DNS ... they do _not_ have to have PCP
+# installed nor pmcd(1) running ... but they _do_ need to map to five
+# unique IP addresses
+#
+# Used in setup.051 and 051.
+#
+remote_1=www.sgi.com
+remote_2=www.aconex.com
+remote_3=support.sgi.com
+remote_4=oss.sgi.com
+remote_5=sourceforge.net
diff --git a/qa/051.out.ipv6 b/qa/051.out.ipv6
new file mode 100644
index 0000000..e990e5b
--- /dev/null
+++ b/qa/051.out.ipv6
@@ -0,0 +1,1006 @@
+QA output created by 051
+Make sure all the config files are there
+051.work/die.001
+051.work/die.002
+051.work/die.003
+051.work/die.004
+051.work/die.005
+051.work/die.006
+051.work/die.007
+051.work/die.008
+051.work/die.009
+051.work/die.010
+051.work/die.011
+051.work/die.012
+051.work/die.013
+051.work/die.014
+051.work/die.015
+051.work/die.016
+051.work/die.017
+051.work/die.018
+051.work/die.019
+051.work/die.020
+051.work/die.021
+051.work/die.022
+051.work/die.023
+051.work/die.024
+051.work/die.025
+051.work/die.026
+051.work/die.027
+051.work/die.028
+051.work/die.029
+051.work/die.030
+051.work/die.031
+051.work/die.032
+051.work/die.033
+051.work/die.034
+051.work/die.035
+051.work/die.036
+051.work/die.037
+051.work/die.038
+051.work/die.039
+051.work/die.040
+051.work/die.041
+051.work/die.042
+051.work/die.043
+051.work/die.044
+051.work/die.045
+051.work/kill.001
+terminating pmcd...
+Waiting for pmcd to terminate ...
+
+Running the scanner/parser tests (die.\*)
+
+die.001================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+
+die!
+die.001 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 7]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.001 endlog ----------------
+
+die.002================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[ access]
+
+die!
+die.002 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 7]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.002 endlog ----------------
+
+die.003================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[ access ]
+
+die!
+die.003 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 7]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.003 endlog ----------------
+
+die.004================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[
+# what the &^*%# is this doing here!?
+access
+ ]
+
+die!
+die.004 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 10]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.004 endlog ----------------
+
+die.005================
+# Test missing host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow : all;
+
+die!
+die.005 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: no hosts in allow/disallow statement
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.005 endlog ----------------
+
+die.006================
+# Test missing comma in host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 remote-host-2: all;
+
+die!
+die.006 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: ',' or ':' expected after "remote-host-1"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.006 endlog ----------------
+
+die.007================
+# Test extra comma in host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1,: all;
+
+die!
+die.007 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: host expected after ','
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.007 endlog ----------------
+
+die.008================
+# Test missing colon after host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 all;
+
+die!
+die.008 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: ',' or ':' expected after "remote-host-1"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.008 endlog ----------------
+
+die.009================
+# Test extra comma and missing colon after host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, all;
+
+die!
+die.009 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: ',' or ':' expected after "all"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.009 endlog ----------------
+
+die.010================
+# Test missing semicolon
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all
+
+die!
+die.010 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: ',' or ';' expected in permission list
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.010 endlog ----------------
+
+die.011================
+# Test statement with lotsa whitespace and comments interspersed.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+# I think
+ allow#that I
+#will never
+ remote-host-1
+
+
+
+#see
+ : #a thing as beautiful
+all
+# as
+# the bottom of my in-tray
+
+;
+
+ die here!
+die.011 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 21]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.011 endlog ----------------
+
+die.012================
+# Test all operation types.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+
+allow remote-host-1 : fetch;
+allow remote-host-1 : store;
+allow remote-host-1 : all;
+allow remote-host-1 : maximum 666 connections;
+
+die!
+die.012 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 12]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.012 endlog ----------------
+
+die.013================
+# Test all operations in a single permission list.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: fetch, store, maximum 666 connections;
+
+die!
+die.013 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.013 endlog ----------------
+
+die.014================
+# Test clash of "all" with a specific operation.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all, fetch;
+
+die!
+die.014 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: can't have "all" mixed with specific permissions
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.014 endlog ----------------
+
+die.015================
+# Test that "all" works with a connection limit.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all, maximum 666 connections;
+
+die!
+die.015 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.015 endlog ----------------
+
+die.016================
+# Test that specific operations work with a connection limit.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: fetch, store, maximum 666 connections;
+
+die!
+die.016 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.016 endlog ----------------
+
+die.017================
+# Test that a connection limit fails in a disallow.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow remote-host-1: store, maximum 666 connections;
+
+die!
+die.017 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: can't specify connection limit in a disallow statement
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.017 endlog ----------------
+
+die.018================
+# Test that a connection limit fails in a disallow with except.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow remote-host-1: all except fetch, maximum 666 connections;
+
+die!
+die.018 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: can't specify connection limit in a disallow statement
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.018 endlog ----------------
+
+die.019================
+# Test that a connection limit is OK in an allow with an except.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all except store, maximum 666 connections;
+
+die!
+die.019 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.019 endlog ----------------
+
+die.020================
+# Test that a bogus hostname is detected
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow error...mebourne : fetch;
+
+die!
+die.020 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) ERROR...
+Warning: the following access control specification will be ignored
+pmcd config[line 6]: Warning: access control error for host 'HOST': No route to host
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.020 endlog ----------------
+
+die.021================
+# Test a no such host condition
+#
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow nosuchhost.melbourne.sgi.com : fetch;
+
+die!
+die.021 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) ERROR...
+Warning: the following access control specification will be ignored
+pmcd config[line 6]: Warning: access control error for host 'HOST': No route to host
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.021 endlog ----------------
+
+die.022================
+# Test that a bogus IP address
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.2.3.999 : fetch;
+
+die!
+die.022 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) ERROR...
+Warning: the following access control specification will be ignored
+pmcd config[line 6]: Warning: access control error for host 'HOST': No route to host
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.022 endlog ----------------
+
+die.023================
+# Test bad wildcard detection in IP address
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.*.2 : fetch;
+
+die!
+die.023 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Wildcard in host pattern "192.*.2" is not at the end
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.023 endlog ----------------
+
+die.024================
+# Test embedded wildcard detection in host name
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow *.melbourne : fetch;
+
+die!
+die.024 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Wildcard in host pattern "*.melbourne" is not at the end
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.024 endlog ----------------
+
+die.025================
+# Test wildcard detection in textual host name
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow melbourne.* : fetch;
+
+die!
+die.025 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Bad IP address wildcard, melbourne.*
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.025 endlog ----------------
+
+die.026================
+# Test range check for IP address components
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.-1.* : fetch;
+allow 192.256.* : fetch;
+
+die!
+die.026 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Bad IP address wildcard, 192.-1.*
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+[DATE] pmcd(PID) Error: Bad IP address wildcard, 192.256.*
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.026 endlog ----------------
+
+die.027================
+# Test "reinforcing" of permissions
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : fetch;
+allow remote-host-1 : fetch;
+
+die!
+die.027 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.027 endlog ----------------
+
+die.028================
+# Test contradictory permissions
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : fetch;
+disallow remote-host-1 : fetch;
+
+die!
+die.028 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.028 endlog ----------------
+
+die.029================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+(config for die.029 is host-specific)
+die.029 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.029 endlog ----------------
+
+die.030================
+# Test contradictory permissions with host aliasing (different names)
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : all;
+disallow remote-host-1 : fetch;
+
+die!
+die.030 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.030 endlog ----------------
+
+die.031================
+# Test mutually exclusive host lists
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-2 : all;
+disallow remote-host-3, remote-host-4 : store;
+
+die!
+die.031 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.031 endlog ----------------
+
+die.032================
+# Test overlapping host lists
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-2 : all;
+allow remote-host-3, remote-host-2 : fetch, store;
+
+die!
+die.032 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.032 endlog ----------------
+
+die.033================
+# Test overlapping host lists with conflict
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-4, remote-host-2 : all;
+disallow remote-host-3, remote-host-2, remote-host-5 : store;
+
+die!
+die.033 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.033 endlog ----------------
+
+die.034================
+# Test overlapping host lists with conflicting connection counts
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-4, remote-host-2 : all, maximum 30 connections;
+allow remote-host-3, remote-host-2, remote-host-5 : fetch, store, maximum 10 connections;
+
+die!
+die.034 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.034 endlog ----------------
+
+die.035================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+# Test various levels of wildcarding
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.68.139.105: all;
+allow 192.68.139.*: all, maximum 666 connections;
+allow 192.68.*: all except store, maximum 555 connections;
+allow 192.*: fetch, store, maximum 444 connections;
+allow *: fetch, maximum 333 connections;
+
+die!
+die.035 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 12]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.035 endlog ----------------
+
+die.036================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+# Test various levels of wildcarding with several similar setups
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.68.139.105: all;
+allow 192.68.139.*: all, maximum 666 connections;
+allow 192.68.*: all except store, maximum 555 connections;
+allow 192.*: fetch, store, maximum 444 connections;
+allow *: fetch, maximum 333 connections;
+
+allow 193.68.139.105: all;
+allow 193.68.139.*: all, maximum 666 connections;
+allow 193.68.*: all except store, maximum 555 connections;
+allow 193.*: fetch, store, maximum 444 connections;
+
+allow 194.68.139.105: all;
+allow 194.68.139.*: all, maximum 666 connections;
+allow 194.68.*: all except store, maximum 555 connections;
+allow 194.*: fetch, store, maximum 444 connections;
+
+die!
+die.036 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 22]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.036 endlog ----------------
+
+die.037================
+# Test reinforcing of disallows
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow remote-host-1: fetch;
+disallow remote-host-1: store;
+disallow remote-host-1: all;
+
+die!
+die.037 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 10]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.037 endlog ----------------
+
+die.038================
+# Test detection of multiple conflicting explicit connections limits
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: maximum 5 connections, fetch, maximum 666 connections;
+
+die!
+die.038 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: connection limit already specified
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.038 endlog ----------------
+
+die.039================
+# Test detection of connections limits immediately after "all except"
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all except maximum 5 connections;
+
+die!
+die.039 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: connection limit may not immediately follow "all except"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.039 endlog ----------------
+
+die.040================
+# Test unlimited connections access spec.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: unlimited connections;
+
+die!
+die.040 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: "connections" expected
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.040 endlog ----------------
+
+die.041================
+# Test clash of unlimited connections with explicit maximum
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: unlimited connections;
+allow remote-host-1: fetch, maximum 666 connections;
+
+die!
+die.041 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: "connections" expected
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.041 endlog ----------------
+
+die.042================
+# Test reinforcing of unlimited connections
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: store, unlimited connections;
+allow remote-host-1: fetch, unlimited connections;
+
+die!
+die.042 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: "connections" expected
+pmcd config[line 7]: Error: "connections" expected
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.042 endlog ----------------
+
+die.043================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+(config for die.043 is host-specific)
+die.043 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 8]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 10]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.043 endlog ----------------
+
+die.044================
+# Check that log advisory and log mandatory no longer work
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : log advisory;
+allow remote-host-1 : log mandatory;
+
+die!
+die.044 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: bad access specifier
+pmcd config[line 7]: Error: bad access specifier
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.044 endlog ----------------
+
+die.045================
+# Test invalid and valid operations in a single permission list.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: fetch, store, log advisory, log mandatory, maximum 666 connections;
+
+die!
+die.045 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: bad access specifier
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.045 endlog ----------------
+
+
+Running the scanner/parser tests (kill.\*)
+
+kill.001================
+# Test various special case tokens and the parser
+
+tricky 128 pipe binary \
+ cat "whacko name" \
+ more params x-D x-R x-d 43\
+21 back\\slash "broken\
+string" \
+abc:def 1;2;3 zzz "#abc\"def" "x \"y\" z" \#abc #and a comment\
+to_end
+kill.001 logfile----------------
+This is filter.kill.001
+
+Log for pmcd on ...
+
+pmcd: unexpected end-of-file at initial exchange with tricky PMDA
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+
+Host access list empty: host-based access control turned off
+User access list empty: user-based access control turned off
+Group access list empty: group-based access control turned off
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+ok FD 44321 ipv6 INADDR_ANY
+[DATE] pmcd(PID) Info: pmcd caught SIGTERM from pid=N uid=N
+[DATE] pmcd(PID) Info: pmcd Shutdown
+
+Log finished ...
+
+dummy cat agent should have produced "Cannot open" messages:
+Cannot open whacko name: No such file or directory
+Cannot open more: No such file or directory
+Cannot open params: No such file or directory
+Cannot open x-D: No such file or directory
+Cannot open x-R: No such file or directory
+Cannot open x-d: No such file or directory
+Cannot open 43: No such file or directory
+Cannot open 21: No such file or directory
+Cannot open back\\slash: No such file or directory
+Cannot open broken string: No such file or directory
+Cannot open abc:def: No such file or directory
+Cannot open 1;2;3: No such file or directory
+Cannot open zzz: No such file or directory
+Cannot open #abc"def: No such file or directory
+Cannot open x "y" z: No such file or directory
+Cannot open #abc: No such file or directory
+kill.001 endlog ----------------
+Restarting pmcd
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/051.out.nonipv6 b/qa/051.out.nonipv6
new file mode 100644
index 0000000..bd70b60
--- /dev/null
+++ b/qa/051.out.nonipv6
@@ -0,0 +1,1005 @@
+QA output created by 051
+Make sure all the config files are there
+051.work/die.001
+051.work/die.002
+051.work/die.003
+051.work/die.004
+051.work/die.005
+051.work/die.006
+051.work/die.007
+051.work/die.008
+051.work/die.009
+051.work/die.010
+051.work/die.011
+051.work/die.012
+051.work/die.013
+051.work/die.014
+051.work/die.015
+051.work/die.016
+051.work/die.017
+051.work/die.018
+051.work/die.019
+051.work/die.020
+051.work/die.021
+051.work/die.022
+051.work/die.023
+051.work/die.024
+051.work/die.025
+051.work/die.026
+051.work/die.027
+051.work/die.028
+051.work/die.029
+051.work/die.030
+051.work/die.031
+051.work/die.032
+051.work/die.033
+051.work/die.034
+051.work/die.035
+051.work/die.036
+051.work/die.037
+051.work/die.038
+051.work/die.039
+051.work/die.040
+051.work/die.041
+051.work/die.042
+051.work/die.043
+051.work/die.044
+051.work/die.045
+051.work/kill.001
+terminating pmcd...
+Waiting for pmcd to terminate ...
+
+Running the scanner/parser tests (die.\*)
+
+die.001================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+
+die!
+die.001 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 7]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.001 endlog ----------------
+
+die.002================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[ access]
+
+die!
+die.002 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 7]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.002 endlog ----------------
+
+die.003================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[ access ]
+
+die!
+die.003 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 7]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.003 endlog ----------------
+
+die.004================
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[
+# what the &^*%# is this doing here!?
+access
+ ]
+
+die!
+die.004 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 10]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.004 endlog ----------------
+
+die.005================
+# Test missing host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow : all;
+
+die!
+die.005 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: no hosts in allow/disallow statement
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.005 endlog ----------------
+
+die.006================
+# Test missing comma in host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 remote-host-2: all;
+
+die!
+die.006 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: ',' or ':' expected after "remote-host-1"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.006 endlog ----------------
+
+die.007================
+# Test extra comma in host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1,: all;
+
+die!
+die.007 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: host expected after ','
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.007 endlog ----------------
+
+die.008================
+# Test missing colon after host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 all;
+
+die!
+die.008 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: ',' or ':' expected after "remote-host-1"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.008 endlog ----------------
+
+die.009================
+# Test extra comma and missing colon after host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, all;
+
+die!
+die.009 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: ',' or ':' expected after "all"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.009 endlog ----------------
+
+die.010================
+# Test missing semicolon
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all
+
+die!
+die.010 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: ',' or ';' expected in permission list
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.010 endlog ----------------
+
+die.011================
+# Test statement with lotsa whitespace and comments interspersed.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+# I think
+ allow#that I
+#will never
+ remote-host-1
+
+
+
+#see
+ : #a thing as beautiful
+all
+# as
+# the bottom of my in-tray
+
+;
+
+ die here!
+die.011 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 21]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.011 endlog ----------------
+
+die.012================
+# Test all operation types.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+
+allow remote-host-1 : fetch;
+allow remote-host-1 : store;
+allow remote-host-1 : all;
+allow remote-host-1 : maximum 666 connections;
+
+die!
+die.012 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 12]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.012 endlog ----------------
+
+die.013================
+# Test all operations in a single permission list.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: fetch, store, maximum 666 connections;
+
+die!
+die.013 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.013 endlog ----------------
+
+die.014================
+# Test clash of "all" with a specific operation.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all, fetch;
+
+die!
+die.014 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: can't have "all" mixed with specific permissions
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.014 endlog ----------------
+
+die.015================
+# Test that "all" works with a connection limit.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all, maximum 666 connections;
+
+die!
+die.015 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.015 endlog ----------------
+
+die.016================
+# Test that specific operations work with a connection limit.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: fetch, store, maximum 666 connections;
+
+die!
+die.016 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.016 endlog ----------------
+
+die.017================
+# Test that a connection limit fails in a disallow.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow remote-host-1: store, maximum 666 connections;
+
+die!
+die.017 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: can't specify connection limit in a disallow statement
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.017 endlog ----------------
+
+die.018================
+# Test that a connection limit fails in a disallow with except.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow remote-host-1: all except fetch, maximum 666 connections;
+
+die!
+die.018 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: can't specify connection limit in a disallow statement
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.018 endlog ----------------
+
+die.019================
+# Test that a connection limit is OK in an allow with an except.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all except store, maximum 666 connections;
+
+die!
+die.019 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.019 endlog ----------------
+
+die.020================
+# Test that a bogus hostname is detected
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow error...mebourne : fetch;
+
+die!
+die.020 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) ERROR...
+Warning: the following access control specification will be ignored
+pmcd config[line 6]: Warning: access control error for host 'HOST': No route to host
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.020 endlog ----------------
+
+die.021================
+# Test a no such host condition
+#
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow nosuchhost.melbourne.sgi.com : fetch;
+
+die!
+die.021 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) ERROR...
+Warning: the following access control specification will be ignored
+pmcd config[line 6]: Warning: access control error for host 'HOST': No route to host
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.021 endlog ----------------
+
+die.022================
+# Test that a bogus IP address
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.2.3.999 : fetch;
+
+die!
+die.022 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) ERROR...
+Warning: the following access control specification will be ignored
+pmcd config[line 6]: Warning: access control error for host 'HOST': No route to host
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.022 endlog ----------------
+
+die.023================
+# Test bad wildcard detection in IP address
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.*.2 : fetch;
+
+die!
+die.023 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Wildcard in host pattern "192.*.2" is not at the end
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.023 endlog ----------------
+
+die.024================
+# Test embedded wildcard detection in host name
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow *.melbourne : fetch;
+
+die!
+die.024 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Wildcard in host pattern "*.melbourne" is not at the end
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.024 endlog ----------------
+
+die.025================
+# Test wildcard detection in textual host name
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow melbourne.* : fetch;
+
+die!
+die.025 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Bad IP address wildcard, melbourne.*
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.025 endlog ----------------
+
+die.026================
+# Test range check for IP address components
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.-1.* : fetch;
+allow 192.256.* : fetch;
+
+die!
+die.026 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Bad IP address wildcard, 192.-1.*
+pmcd config[line 6]: Warning: access control error for host 'HOST': Invalid argument
+[DATE] pmcd(PID) Error: Bad IP address wildcard, 192.256.*
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.026 endlog ----------------
+
+die.027================
+# Test "reinforcing" of permissions
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : fetch;
+allow remote-host-1 : fetch;
+
+die!
+die.027 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.027 endlog ----------------
+
+die.028================
+# Test contradictory permissions
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : fetch;
+disallow remote-host-1 : fetch;
+
+die!
+die.028 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.028 endlog ----------------
+
+die.029================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+(config for die.029 is host-specific)
+die.029 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.029 endlog ----------------
+
+die.030================
+# Test contradictory permissions with host aliasing (different names)
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : all;
+disallow remote-host-1 : fetch;
+
+die!
+die.030 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.030 endlog ----------------
+
+die.031================
+# Test mutually exclusive host lists
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-2 : all;
+disallow remote-host-3, remote-host-4 : store;
+
+die!
+die.031 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.031 endlog ----------------
+
+die.032================
+# Test overlapping host lists
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-2 : all;
+allow remote-host-3, remote-host-2 : fetch, store;
+
+die!
+die.032 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.032 endlog ----------------
+
+die.033================
+# Test overlapping host lists with conflict
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-4, remote-host-2 : all;
+disallow remote-host-3, remote-host-2, remote-host-5 : store;
+
+die!
+die.033 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.033 endlog ----------------
+
+die.034================
+# Test overlapping host lists with conflicting connection counts
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1, remote-host-4, remote-host-2 : all, maximum 30 connections;
+allow remote-host-3, remote-host-2, remote-host-5 : fetch, store, maximum 10 connections;
+
+die!
+die.034 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.034 endlog ----------------
+
+die.035================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+# Test various levels of wildcarding
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.68.139.105: all;
+allow 192.68.139.*: all, maximum 666 connections;
+allow 192.68.*: all except store, maximum 555 connections;
+allow 192.*: fetch, store, maximum 444 connections;
+allow *: fetch, maximum 333 connections;
+
+die!
+die.035 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 12]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.035 endlog ----------------
+
+die.036================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+# Test various levels of wildcarding with several similar setups
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.68.139.105: all;
+allow 192.68.139.*: all, maximum 666 connections;
+allow 192.68.*: all except store, maximum 555 connections;
+allow 192.*: fetch, store, maximum 444 connections;
+allow *: fetch, maximum 333 connections;
+
+allow 193.68.139.105: all;
+allow 193.68.139.*: all, maximum 666 connections;
+allow 193.68.*: all except store, maximum 555 connections;
+allow 193.*: fetch, store, maximum 444 connections;
+
+allow 194.68.139.105: all;
+allow 194.68.139.*: all, maximum 666 connections;
+allow 194.68.*: all except store, maximum 555 connections;
+allow 194.*: fetch, store, maximum 444 connections;
+
+die!
+die.036 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 22]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.036 endlog ----------------
+
+die.037================
+# Test reinforcing of disallows
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow remote-host-1: fetch;
+disallow remote-host-1: store;
+disallow remote-host-1: all;
+
+die!
+die.037 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 10]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.037 endlog ----------------
+
+die.038================
+# Test detection of multiple conflicting explicit connections limits
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: maximum 5 connections, fetch, maximum 666 connections;
+
+die!
+die.038 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: connection limit already specified
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.038 endlog ----------------
+
+die.039================
+# Test detection of connections limits immediately after "all except"
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: all except maximum 5 connections;
+
+die!
+die.039 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: connection limit may not immediately follow "all except"
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.039 endlog ----------------
+
+die.040================
+# Test unlimited connections access spec.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: unlimited connections;
+
+die!
+die.040 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: "connections" expected
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.040 endlog ----------------
+
+die.041================
+# Test clash of unlimited connections with explicit maximum
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: unlimited connections;
+allow remote-host-1: fetch, maximum 666 connections;
+
+die!
+die.041 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: "connections" expected
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.041 endlog ----------------
+
+die.042================
+# Test reinforcing of unlimited connections
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: store, unlimited connections;
+allow remote-host-1: fetch, unlimited connections;
+
+die!
+die.042 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: "connections" expected
+pmcd config[line 7]: Error: "connections" expected
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.042 endlog ----------------
+
+die.043================ may dump core for IRIX 6.1 ... bug in gethostbyname()
+(config for die.043 is host-specific)
+die.043 logfile----------------
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 7]: Warning: access control error for host 'HOST': Invalid argument
+[DATE] pmcd(PID) Error: Permission clash for ...
+pmcd config[line 8]: Warning: access control error for host 'HOST': Invalid argument
+pmcd config[line 10]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.043 endlog ----------------
+
+die.044================
+# Check that log advisory and log mandatory no longer work
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1 : log advisory;
+allow remote-host-1 : log mandatory;
+
+die!
+die.044 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: bad access specifier
+pmcd config[line 7]: Error: bad access specifier
+pmcd config[line 9]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.044 endlog ----------------
+
+die.045================
+# Test invalid and valid operations in a single permission list.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow remote-host-1: fetch, store, log advisory, log mandatory, maximum 666 connections;
+
+die!
+die.045 logfile----------------
+Log for pmcd on HOST started DATE
+
+pmcd config[line 6]: Error: bad access specifier
+pmcd config[line 8]: Error: allow or disallow statement expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+die.045 endlog ----------------
+
+
+Running the scanner/parser tests (kill.\*)
+
+kill.001================
+# Test various special case tokens and the parser
+
+tricky 128 pipe binary \
+ cat "whacko name" \
+ more params x-D x-R x-d 43\
+21 back\\slash "broken\
+string" \
+abc:def 1;2;3 zzz "#abc\"def" "x \"y\" z" \#abc #and a comment\
+to_end
+kill.001 logfile----------------
+This is filter.kill.001
+
+Log for pmcd on ...
+
+pmcd: unexpected end-of-file at initial exchange with tricky PMDA
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+
+Host access list empty: host-based access control turned off
+User access list empty: user-based access control turned off
+Group access list empty: group-based access control turned off
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+[DATE] pmcd(PID) Info: pmcd caught SIGTERM from pid=N uid=N
+[DATE] pmcd(PID) Info: pmcd Shutdown
+
+Log finished ...
+
+dummy cat agent should have produced "Cannot open" messages:
+Cannot open whacko name: No such file or directory
+Cannot open more: No such file or directory
+Cannot open params: No such file or directory
+Cannot open x-D: No such file or directory
+Cannot open x-R: No such file or directory
+Cannot open x-d: No such file or directory
+Cannot open 43: No such file or directory
+Cannot open 21: No such file or directory
+Cannot open back\\slash: No such file or directory
+Cannot open broken string: No such file or directory
+Cannot open abc:def: No such file or directory
+Cannot open 1;2;3: No such file or directory
+Cannot open zzz: No such file or directory
+Cannot open #abc"def: No such file or directory
+Cannot open x "y" z: No such file or directory
+Cannot open #abc: No such file or directory
+kill.001 endlog ----------------
+Restarting pmcd
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/052 b/qa/052
new file mode 100755
index 0000000..4f4cc46
--- /dev/null
+++ b/qa/052
@@ -0,0 +1,47 @@
+#! /bin/sh
+# PCP QA Test No. 052
+# pmLoadNameSpace extensions
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+rm -f $tmp.*
+cp src/tiny.pmns $tmp.root
+
+echo "ASCII"
+pminfo -n $tmp.root
+echo ""
+
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -n $tmp.root $tmp.root.bin
+ echo ""
+
+ echo "Binary, default"
+ pminfo -n $tmp.root
+ echo ""
+
+ echo "Binary, explicit"
+ pminfo -n $tmp.root.bin
+ echo ""
+fi
+
diff --git a/qa/052.out.1 b/qa/052.out.1
new file mode 100644
index 0000000..fa7b8f8
--- /dev/null
+++ b/qa/052.out.1
@@ -0,0 +1,22 @@
+QA output created by 052
+ASCII
+one
+two
+buckle.my.shoe
+
+Compiled PMNS contains
+ 1 hash table entries
+ 3 leaf nodes
+ 3 non-leaf nodes
+ 28 bytes of symbol table
+
+Binary, default
+one
+two
+buckle.my.shoe
+
+Binary, explicit
+one
+two
+buckle.my.shoe
+
diff --git a/qa/052.out.2 b/qa/052.out.2
new file mode 100644
index 0000000..5deb480
--- /dev/null
+++ b/qa/052.out.2
@@ -0,0 +1,6 @@
+QA output created by 052
+ASCII
+one
+two
+buckle.my.shoe
+
diff --git a/qa/053 b/qa/053
new file mode 100755
index 0000000..3a272c0
--- /dev/null
+++ b/qa/053
@@ -0,0 +1,76 @@
+#! /bin/sh
+# PCP QA Test No. 053
+# Verify the good stuff happens with pmclient
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter()
+{
+
+ $PCP_AWK_PROG '
+/^Archive: / { print "... title ..."; next }
+/^[0-9. ]*$/ { print "... " NF " numbers ..."; next }
+ { print }'
+}
+
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+cat >$tmp.config <<End-of-File
+log mandatory on once {
+ hinv.ncpu
+}
+log mandatory on 5 secs {
+ kernel.all.load [ "1 minute", "15 minute" ]
+ kernel.percpu.cpu.user
+ kernel.percpu.cpu.sys
+ mem.freemem
+ disk.all.total
+}
+End-of-File
+pmlogger -c $tmp.config -l $tmp.log -s 4 $tmp
+_filter_pmlogger_log <$tmp.log
+
+ncpu=`pmprobe -v hinv.ncpu 2>&1 \
+| $PCP_AWK_PROG '
+NF == 3 && $2 == 1 { print $3; exit }
+ { print "0"; exit }'`
+
+#
+# output is sensitive to SP/MP ... so do the one that is real, and fake
+# the other
+
+if [ "$ncpu" -eq 1 ]
+then
+ pmclient -a $tmp | _filter
+ echo "..."
+ # fake MP output
+ cat <<End-of-File
+pmclient: pmFetch: End of PCP archive log
+... title ...
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS 1 Min 15 Min
+... 7 numbers ...
+... 7 numbers ...
+End-of-File
+else
+ # fake SP output
+ cat <<End-of-File
+pmclient: pmFetch: End of PCP archive log
+... title ...
+ CPU Free Mem Disk Load Average
+ Util (Mbytes) IOPS 1 Min 15 Min
+... 5 numbers ...
+... 5 numbers ...
+End-of-File
+ echo "..."
+ pmclient -a $tmp | _filter
+fi
diff --git a/qa/053.out b/qa/053.out
new file mode 100644
index 0000000..accf1f4
--- /dev/null
+++ b/qa/053.out
@@ -0,0 +1,22 @@
+QA output created by 053
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+pmclient: pmFetch: End of PCP archive log
+... title ...
+ CPU Free Mem Disk Load Average
+ Util (Mbytes) IOPS 1 Min 15 Min
+... 5 numbers ...
+... 5 numbers ...
+...
+pmclient: pmFetch: End of PCP archive log
+... title ...
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS 1 Min 15 Min
+... 7 numbers ...
+... 7 numbers ...
diff --git a/qa/054 b/qa/054
new file mode 100755
index 0000000..bf5eb68
--- /dev/null
+++ b/qa/054
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 054
+# Server, not client, hostname in archive label, ...
+# also exposed pmlogger "dump core when no more events" problem!
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+$sudo rm -f $seq.full
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+host=`./getpmcdhosts -L -n1 2>$tmp.out` # choose a non-local host (foreign server)
+[ -z "$host" ] && cat $tmp.out >$seq.notrun
+eval realhost=`pmprobe -v -h $host pmcd.hostname | $PCP_AWK_PROG '{ print $3 }'`
+[ $realhost = Unknown ] && realhost=`pmhostname $host`
+
+echo "Using host: $host" >> $seq.full
+echo "Using realhost: $realhost" >> $seq.full
+
+echo "log mandatory on once { hinv.ncpu }" >$tmp.config
+
+pmlogger -c $tmp.config -l $tmp.log -s 1 -h $host $tmp
+_filter_pmlogger_log <$tmp.log
+
+echo "host should be HOST ..."
+pmdumplog -l $tmp 2>&1 \
+| sed -e 's/host /Host /' \
+ -e "s/$realhost/HOST/" \
+ -e "s/$host/HOST/" \
+| _filter_pmdumplog \
+| sed -e 's/Host /host /'
+
+rm -f $tmp.*
+exit 0
diff --git a/qa/054.out b/qa/054.out
new file mode 100644
index 0000000..8aa44a5
--- /dev/null
+++ b/qa/054.out
@@ -0,0 +1,14 @@
+QA output created by 054
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+host should be HOST ...
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
diff --git a/qa/055 b/qa/055
new file mode 100755
index 0000000..548bb06
--- /dev/null
+++ b/qa/055
@@ -0,0 +1,129 @@
+#! /bin/sh
+# PCP QA Test No. 055
+# pmie basic expression evaluation and scheduling
+# for remote version using other hosts, see 360
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# get standard filters
+. ./common.filter
+
+rm -f $seq.full
+
+# here are the exercises
+cat >>$tmp.config << \EOF
+delta = 1 sec;
+
+// the meaning of life, the universe and everything
+sample.long.hundred - (16 * sample.float.ten + 11 * sample.double.one) / 3;
+
+// instance domain exercises
+inst_fetch1 = sample.bin;
+inst_fetch2 = sample.bin #'bin-200' #'bin-400' #'bin-600' #'bin-800';
+inst_neg = -sample.bin;
+inst_rate = rate sample.bin;
+inst_sum = sum_inst sample.bin;
+inst_avg = avg_inst sample.bin;
+inst_max = max_inst sample.bin;
+inst_min = min_inst sample.bin;
+inst_count = count_inst sample.bin > 400;
+inst_add1 = sample.bin + sample.bin;
+inst_add2 = sample.bin + sample.longlong.million;
+inst_add3 = sample.longlong.million + sample.bin;
+inst_sub = sample.bin - sample.bin;
+inst_mul = sample.bin * sample.bin;
+inst_div = sample.bin / sample.bin;
+inst_eq1 = sample.bin == sample.bin;
+inst_eq2 = sample.bin == sample.bin + 1;
+inst_eq3 = sample.bin == 500;
+inst_neq1 = sample.bin != sample.bin + 1;
+inst_neq2 = sample.bin != sample.bin;
+inst_neq3 = sample.bin != 500;
+inst_gt1 = sample.bin + 1 > sample.bin;
+inst_gt2 = sample.bin > sample.bin + 1;
+inst_gt3 = sample.bin > 500;
+inst_lt1 = sample.bin < sample.bin + 1;
+inst_lt2 = sample.bin + 1 < sample.bin;
+inst_lt3 = sample.bin < 500;
+inst_geq1 = sample.bin >= sample.bin;
+inst_geq2 = sample.bin >= sample.bin + 1;
+inst_leq1 = sample.bin <= sample.bin;
+inst_leq2 = sample.bin + 1 <= sample.bin;
+
+// sample time domain exercises
+time_fetch0 = sample.float.ten @0;
+time_fetch1 = sample.float.ten @1;
+time_fetch2 = sample.float.ten @2;
+time_fetch01 = sample.float.ten @0..1;
+time_fetch12 = sample.float.ten @1..2;
+time_fetch02 = sample.float.ten @0..2;
+time_sum = sum_sample sample.float.ten @0..2;
+time_avg = avg_sample sample.float.ten @0..2;
+time_max = max_sample sample.float.ten @0..2;
+time_min = min_sample sample.float.ten @0..2;
+time_count = count_sample sample.float.ten @0..2 >= 10;
+time_add1 = sample.float.ten @0 + sample.float.ten @1 + sample.float.ten @2;
+time_add2 = sample.float.ten @0..1 + sample.float.ten @1..2;
+time_add3 = sample.float.ten @0..2 + 1;
+time_add4 = 1 + sample.float.ten @0..2;
+time_gt1 = sample.float.ten @0..1 + 1 > sample.float.ten @0..1;
+time_gt2 = sample.float.ten @0..1 > sample.float.ten @0..1 + 1;
+time_gt3 = sample.float.ten @0..2 + 1 > sample.float.ten @0..2;
+time_gt4 = sample.float.ten @0..2 > sample.float.ten @0..2 + 1;
+
+delta = 2 sec;
+
+// multiple domains
+multi1 = sum_sample avg_inst sample.bin @0..2;
+multi2 = avg_inst sum_sample sample.bin @0..2;
+
+delta = 3 sec;
+
+// boolean operators
+arg1 = "sample.bin >= 500";
+arg2 = "sample.bin <= 500";
+arg3 = "sample.bin < 1000";
+arg4 = "sample.bin > 1000";
+bool1 = $arg1;
+bool2 = $arg2;
+bool_not = ! $arg1;
+bool_and = $arg1 && $arg2;
+bool_or = $arg1 || $arg2;
+bool_some1 = some_inst $arg1;
+bool_some2 = some_inst $arg4;
+bool_all1 = all_inst $arg3;
+bool_all2 = all_inst $arg1;
+bool_pcnt1 = 50 %_inst $arg1;
+bool_pcnt2 = 70 %_inst $arg1;
+bool_pcnt3 = 0 %_inst $arg4;
+bool_pcnt4 = 100 %_inst $arg3;
+
+delta = 4 sec;
+
+// actions
+act1 = true -> shell "echo >>/tmp/pmie.err act1 fired";
+act2 = false -> shell "echo >>/tmp/pmie.err act2 fired OHH NOOOOO";
+act3 = true -> shell "echo >>/tmp/pmie.err act3..." & shell "echo >>/tmp/pmie.err fired";
+act4 = true -> shell "echo >>/tmp/pmie.err act 4 fired" | shell "echo >>/tmp/pmie.err OHH NOOOO";
+EOF
+
+cat $tmp.config >>$seq.full
+
+$sudo rm -f /tmp/pmie.err
+pmie -T 10 -v $tmp.config >$tmp.out 2>$tmp.err
+( echo; echo "=== err ==="; cat $tmp.err ) >>$seq.full
+cat $tmp.err | _show_pmie_exit
+( echo; echo "=== out ==="; cat $tmp.out ) >>$seq.full
+cat $tmp.out | LC_COLLATE=POSIX sort
+( echo; echo "=== /tmp/pmie.err ==="; cat /tmp/pmie.err ) >>$seq.full
+cat /tmp/pmie.err | LC_COLLATE=POSIX sort
diff --git a/qa/055.out b/qa/055.out
new file mode 100644
index 0000000..b5395e3
--- /dev/null
+++ b/qa/055.out
@@ -0,0 +1,675 @@
+QA output created by 055
+pmie: note - evaluator exiting
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+act1: true
+act1: true
+act1: true
+act2: false
+act2: false
+act2: false
+act3: true
+act3: true
+act3: true
+act4: true
+act4: true
+act4: true
+bool1: false false false false true true true true true
+bool1: false false false false true true true true true
+bool1: false false false false true true true true true
+bool1: false false false false true true true true true
+bool2: true true true true true false false false false
+bool2: true true true true true false false false false
+bool2: true true true true true false false false false
+bool2: true true true true true false false false false
+bool_all1: true
+bool_all1: true
+bool_all1: true
+bool_all1: true
+bool_all2: false
+bool_all2: false
+bool_all2: false
+bool_all2: false
+bool_and: false false false false true false false false false
+bool_and: false false false false true false false false false
+bool_and: false false false false true false false false false
+bool_and: false false false false true false false false false
+bool_not: true true true true false false false false false
+bool_not: true true true true false false false false false
+bool_not: true true true true false false false false false
+bool_not: true true true true false false false false false
+bool_or: true true true true true true true true true
+bool_or: true true true true true true true true true
+bool_or: true true true true true true true true true
+bool_or: true true true true true true true true true
+bool_pcnt1: true
+bool_pcnt1: true
+bool_pcnt1: true
+bool_pcnt1: true
+bool_pcnt2: false
+bool_pcnt2: false
+bool_pcnt2: false
+bool_pcnt2: false
+bool_pcnt3: true
+bool_pcnt3: true
+bool_pcnt3: true
+bool_pcnt3: true
+bool_pcnt4: true
+bool_pcnt4: true
+bool_pcnt4: true
+bool_pcnt4: true
+bool_some1: true
+bool_some1: true
+bool_some1: true
+bool_some1: true
+bool_some2: false
+bool_some2: false
+bool_some2: false
+bool_some2: false
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+expr_1: 43
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add1: 200 400 600 800 1000 1200 1400 1600 1800
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add2: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_add3: 1000100 1000200 1000300 1000400 1000500 1000600 1000700 1000800 1000900
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_avg: 500
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_count: 5
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_div: 1 1 1 1 1 1 1 1 1
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq1: true true true true true true true true true
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq2: false false false false false false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_eq3: false false false false true false false false false
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch1: 100 200 300 400 500 600 700 800 900
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_fetch2: 200 400 600 800
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq1: true true true true true true true true true
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_geq2: false false false false false false false false false
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt1: true true true true true true true true true
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt2: false false false false false false false false false
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_gt3: false false false false false true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq1: true true true true true true true true true
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_leq2: false false false false false false false false false
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt1: true true true true true true true true true
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt2: false false false false false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_lt3: true true true true false false false false false
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_max: 900
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_min: 100
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_mul: 10000 40000 90000 160000 250000 360000 490000 640000 810000
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neg: -100 -200 -300 -400 -500 -600 -700 -800 -900
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq1: true true true true true true true true true
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq2: false false false false false false false false false
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_neq3: true true true true false true true true true
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: 0 0 0 0 0 0 0 0 0
+inst_rate: ? ? ? ? ? ? ? ? ?
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sub: 0 0 0 0 0 0 0 0 0
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+inst_sum: 4500
+multi1: 1500
+multi1: 1500
+multi1: 1500
+multi1: 1500
+multi1: ?
+multi1: ?
+multi2: 1500
+multi2: 1500
+multi2: 1500
+multi2: 1500
+multi2: ?
+multi2: ?
+time_add1: 30
+time_add1: 30
+time_add1: 30
+time_add1: 30
+time_add1: 30
+time_add1: 30
+time_add1: 30
+time_add1: 30
+time_add1: 30
+time_add1: ?
+time_add1: ?
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 20
+time_add2: 20 ?
+time_add2: ? ?
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 11
+time_add3: 11 11 ?
+time_add3: 11 ? ?
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 11
+time_add4: 11 11 ?
+time_add4: 11 ? ?
+time_avg: 10
+time_avg: 10
+time_avg: 10
+time_avg: 10
+time_avg: 10
+time_avg: 10
+time_avg: 10
+time_avg: 10
+time_avg: 10
+time_avg: ?
+time_avg: ?
+time_count: 3
+time_count: 3
+time_count: 3
+time_count: 3
+time_count: 3
+time_count: 3
+time_count: 3
+time_count: 3
+time_count: 3
+time_count: ?
+time_count: ?
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 10
+time_fetch01: 10 ?
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 10
+time_fetch02: 10 10 ?
+time_fetch02: 10 ? ?
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch0: 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 10
+time_fetch12: 10 ?
+time_fetch12: ? ?
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: 10
+time_fetch1: ?
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: 10
+time_fetch2: ?
+time_fetch2: ?
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true true
+time_gt1: true unknown
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false false
+time_gt2: false unknown
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true true
+time_gt3: true true unknown
+time_gt3: true unknown unknown
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false false
+time_gt4: false false unknown
+time_gt4: false unknown unknown
+time_max: 10
+time_max: 10
+time_max: 10
+time_max: 10
+time_max: 10
+time_max: 10
+time_max: 10
+time_max: 10
+time_max: 10
+time_max: ?
+time_max: ?
+time_min: 10
+time_min: 10
+time_min: 10
+time_min: 10
+time_min: 10
+time_min: 10
+time_min: 10
+time_min: 10
+time_min: 10
+time_min: ?
+time_min: ?
+time_sum: 30
+time_sum: 30
+time_sum: 30
+time_sum: 30
+time_sum: 30
+time_sum: 30
+time_sum: 30
+time_sum: 30
+time_sum: 30
+time_sum: ?
+time_sum: ?
+act 4 fired
+act 4 fired
+act 4 fired
+act1 fired
+act1 fired
+act1 fired
+act3...
+act3...
+act3...
+fired
+fired
+fired
diff --git a/qa/057 b/qa/057
new file mode 100755
index 0000000..e9fbe62
--- /dev/null
+++ b/qa/057
@@ -0,0 +1,72 @@
+#! /bin/sh
+# PCP QA Test No. 057
+# pmnsdel problem
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "cd $here; rm -rf $tmp; exit 0" 0 1 2 3 15
+
+# real QA test starts here
+rm -rf $tmp
+mkdir $tmp
+cd $tmp
+cat <<End-of-File >root
+root {
+ fred 0:0:0
+ bear 0:0:1
+}
+End-of-File
+
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -n root root.bin
+fi
+
+cat <<End-of-File >foo
+foo {
+ bar 1:0:0
+}
+End-of-File
+
+pmnsadd -n root foo
+
+echo "Expect fred, bear and foo.bar ..."
+pminfo -n root
+
+pmnsdel -n root foo
+
+echo "Expect fred and bear ..."
+pminfo -n root
+
+pmnsadd -n root foo
+
+echo "Expect fred, bear and foo.bar ..."
+pminfo -n root
+
+# this seems to confuse pmnsdel ... not any more 8^)>
+rm -f foo
+rm -f root.bin
+
+pmnsdel -n root foo
+
+echo "Expect fred and bear ..."
+pminfo -n root
+
+exit 0
diff --git a/qa/057.out.1 b/qa/057.out.1
new file mode 100644
index 0000000..47b35df
--- /dev/null
+++ b/qa/057.out.1
@@ -0,0 +1,40 @@
+QA output created by 057
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 1 non-leaf nodes
+ 15 bytes of symbol table
+Compiled PMNS contains
+ 1 hash table entries
+ 3 leaf nodes
+ 2 non-leaf nodes
+ 23 bytes of symbol table
+Expect fred, bear and foo.bar ...
+fred
+bear
+foo.bar
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 1 non-leaf nodes
+ 15 bytes of symbol table
+Expect fred and bear ...
+fred
+bear
+Compiled PMNS contains
+ 1 hash table entries
+ 3 leaf nodes
+ 2 non-leaf nodes
+ 23 bytes of symbol table
+Expect fred, bear and foo.bar ...
+fred
+bear
+foo.bar
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 1 non-leaf nodes
+ 15 bytes of symbol table
+Expect fred and bear ...
+fred
+bear
diff --git a/qa/057.out.2 b/qa/057.out.2
new file mode 100644
index 0000000..197e662
--- /dev/null
+++ b/qa/057.out.2
@@ -0,0 +1,15 @@
+QA output created by 057
+Expect fred, bear and foo.bar ...
+fred
+bear
+foo.bar
+Expect fred and bear ...
+fred
+bear
+Expect fred, bear and foo.bar ...
+fred
+bear
+foo.bar
+Expect fred and bear ...
+fred
+bear
diff --git a/qa/058 b/qa/058
new file mode 100755
index 0000000..9ef5af2
--- /dev/null
+++ b/qa/058
@@ -0,0 +1,28 @@
+#! /bin/sh
+# PCP QA Test No. 058
+# pmval busted for metrics with (a) incomplete instance domains, and
+# (b) an instance domain of PM_INDOM_NULL?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter()
+{
+ sed -e '/Warning.*license/d' \
+ -e '/^host:.*$/s/.*/HOST/'
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+pmval -s 2 sample.longlong.million 2>&1 | _filter
+pmval -s 2 sample.bin 2>&1 | _filter
+pmval -s 2 sample.part_bin 2>&1 | _filter
+pmval -s 2 sample.bogus_bin 2>&1 | _filter
diff --git a/qa/058.out b/qa/058.out
new file mode 100644
index 0000000..d4fcf00
--- /dev/null
+++ b/qa/058.out
@@ -0,0 +1,53 @@
+QA output created by 058
+
+metric: sample.longlong.million
+HOST
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+ 1000000
+ 1000000
+
+metric: sample.bin
+HOST
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ 100 200 300 400 500 600 700 800 900
+ 100 200 300 400 500 600 700 800 900
+
+metric: sample.part_bin
+HOST
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ 100 ? 300 ? 500 ? 700 ? 900
+ 100 ? 300 ? 500 ? 700 ? 900
+
+metric: sample.bogus_bin
+HOST
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ 100 ? 300 ? 500 ? 700 ? 900
+Warning: value=250, but instance=250 is unknown
+Warning: value=450, but instance=450 is unknown
+Warning: value=650, but instance=650 is unknown
+Warning: value=850, but instance=850 is unknown
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ 100 ? 300 ? 500 ? 700 ? 900
+Warning: value=250, but instance=250 is unknown
+Warning: value=450, but instance=450 is unknown
+Warning: value=650, but instance=650 is unknown
+Warning: value=850, but instance=850 is unknown
diff --git a/qa/059 b/qa/059
new file mode 100755
index 0000000..3b899fc
--- /dev/null
+++ b/qa/059
@@ -0,0 +1,49 @@
+#! /bin/sh
+# PCP QA Test No. 059
+# timestmaps in the archive logs
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# expected format
+#
+# Performance metrics from host babylon, commencing Tue Jan 10 22:50:50.990 1995
+#
+# Temporal Index
+# Log Seq end(meta) end(log)
+# 12:24:10.723 0 368 204
+# 12:24:15.837 0 368 5172
+#
+# 12:24:10.723 253.0.6 (<noname>): inst [100 or "bin-100"] value 100
+# 253.0.3 (<noname>): value 226608
+
+
+# real QA test starts here
+for arch in src/bar src/mv-bar
+do
+ echo
+ echo "=== $arch ==="
+ pmdumplog -ltm $arch \
+ | $PCP_AWK_PROG '
+/commencing/ { ts = $5; next }
+/Log Vol/ { state = 1; next }
+state == 1 { if ($1 != ts)
+ print "Error: Start TI @ " $1 ", start from label @ " ts
+ state = 2
+ next
+ }
+state == 2 && NF == 0 { state = 3; next }
+state == 3 { if ($1 != ts)
+ print "Error: Start Metrics @ " $1 ", start from label @ " ts
+ exit
+ }'
+done
diff --git a/qa/059.out b/qa/059.out
new file mode 100644
index 0000000..2a1a891
--- /dev/null
+++ b/qa/059.out
@@ -0,0 +1,5 @@
+QA output created by 059
+
+=== src/bar ===
+
+=== src/mv-bar ===
diff --git a/qa/060 b/qa/060
new file mode 100755
index 0000000..23e9247
--- /dev/null
+++ b/qa/060
@@ -0,0 +1,58 @@
+#! /bin/sh
+# PCP QA Test No. 060
+# changes in the semantics of the default context
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/dump from.*/dump from .../' \
+ | $PCP_AWK_PROG '
+/value/ { for (i = 1; i < NF; i++)
+ printf "%s ",$i
+ if (val == 0) {
+ print "VALUE"
+ val = $NF
+ }
+ else {
+ delta = $NF-val
+ if (delta == 1)
+ print "LAST VALUE + 1"
+ else
+ print "SOME OTHER VALUE"
+ }
+ next
+ }
+ { print }'
+}
+
+# real QA test starts here
+echo "default ..."
+src/defctx 2>&1 | _filter
+
+echo ""
+echo "explicit host context ..."
+src/defctx -h localhost 2>&1 | _filter
+
+echo ""
+echo "explicit archive context ..."
+src/defctx -a src/foo 2>&1 | _filter
+
+echo ""
+echo "explicit multi-volume archive context ..."
+src/defctx -a src/mv-foo 2>&1 | _filter
+
+echo ""
+echo "explicit no index archive context ..."
+src/defctx -a src/noti-foo 2>&1 | _filter
diff --git a/qa/060.out b/qa/060.out
new file mode 100644
index 0000000..8161743
--- /dev/null
+++ b/qa/060.out
@@ -0,0 +1,71 @@
+QA output created by 060
+default ...
+defctx: pmLookupDesc(29.0.5): Attempt to use an illegal context
+
+explicit host context ...
+first pmFetch is OK
+pmResult dump from ...
+ 29.0.5 (sample.colour): numval: 1 valfmt: 0 vlist[]:
+inst [1 or "green"] value VALUE
+defctx: pmDelProfile: Attempt to use an illegal context
+defctx: pmAddProfile: Attempt to use an illegal context
+defctx: pmFetch: Attempt to use an illegal context
+defctx: pmWhichContext: Attempt to use an illegal context
+NewContext: 0
+NewContext: 1
+Destroy(0)
+WhichContext: 1
+NewContext: 0
+Destroy(0)
+Destroy(1)
+
+explicit archive context ...
+first pmFetch is OK
+pmResult dump from ...
+ 29.0.5 (sample.colour): numval: 1 valfmt: 0 vlist[]:
+inst [1 or "green"] value VALUE
+defctx: pmDelProfile: Attempt to use an illegal context
+defctx: pmAddProfile: Attempt to use an illegal context
+defctx: pmFetch: Attempt to use an illegal context
+defctx: pmWhichContext: Attempt to use an illegal context
+NewContext: 0
+NewContext: 1
+Destroy(0)
+WhichContext: 1
+NewContext: 0
+Destroy(0)
+Destroy(1)
+
+explicit multi-volume archive context ...
+first pmFetch is OK
+pmResult dump from ...
+ 29.0.5 (sample.colour): numval: 1 valfmt: 0 vlist[]:
+inst [1 or "green"] value VALUE
+defctx: pmDelProfile: Attempt to use an illegal context
+defctx: pmAddProfile: Attempt to use an illegal context
+defctx: pmFetch: Attempt to use an illegal context
+defctx: pmWhichContext: Attempt to use an illegal context
+NewContext: 0
+NewContext: 1
+Destroy(0)
+WhichContext: 1
+NewContext: 0
+Destroy(0)
+Destroy(1)
+
+explicit no index archive context ...
+first pmFetch is OK
+pmResult dump from ...
+ 29.0.5 (sample.colour): numval: 1 valfmt: 0 vlist[]:
+inst [1 or "green"] value VALUE
+defctx: pmDelProfile: Attempt to use an illegal context
+defctx: pmAddProfile: Attempt to use an illegal context
+defctx: pmFetch: Attempt to use an illegal context
+defctx: pmWhichContext: Attempt to use an illegal context
+NewContext: 0
+NewContext: 1
+Destroy(0)
+WhichContext: 1
+NewContext: 0
+Destroy(0)
+Destroy(1)
diff --git a/qa/061 b/qa/061
new file mode 100755
index 0000000..205bafc
--- /dev/null
+++ b/qa/061
@@ -0,0 +1,122 @@
+#!/bin/sh
+# PCP QA Test No. 061
+# exercise the logging state compatibility matrix
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+# Note1 - this line changed from msec to usec in 3.5.9:
+# state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+#
+# Note2 - the first (posn=132) logputresult is the preamble
+# and size of this result is influenced by hostname length.
+#
+_filter_pmlogger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/[Ss]ignalled (signal=.*), exiting/d' \
+ -e '/Warning: AF event queue is empty, nothing /d' \
+ -e "/Warning /s/[0-9]*-[0-9]*\.config/SEQ-MYPID.config/" \
+ -e 's/0x00000000/NULL/g' \
+ -e 's/0x[0-9a-f]*/ADDR/g' \
+ -e 's/(nil)/ADDR/g' \
+ -e 's/value [0-9]*/value INT/g' \
+ -e 's/[0-2][0-9]:00:00.000/TIME/' \
+ -e '/logputresult/{
+s/output len=[0-9]* posn=132/output len=NNN posn=132/g
+s/len=[0-9]*/len=NNN/
+s/posn=[0-9]*/posn=NNN/
+}' \
+ -e '/__pmLogPutIndex/{
+s/stamp=[0-9][0-9]*\.[0-9][0-9]*/stamp=NNN.NNNNNN/
+s/posn=[0-9]*/posn=NNN/g
+}' \
+ -e 's/msec numpmid/usec numpmid/'
+}
+
+_filter_dumplog()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/' \
+ -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
+ | $PCP_AWK_PROG '
+$1 == "TIMESTAMP" && NF == 4 { print "TIMESTAMP 0 OFFSET OFFSET"; next }
+ { print }'
+}
+
+# real QA test starts here
+
+TZ=GMT
+export TZ
+
+for ctl in mandatory advisory
+do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ echo ""
+ echo "$ctl $state -> $req_ctl $req_state"
+ cat >$tmp.config <<End-of-File
+log $ctl $state {
+ sample.colour [ "blue" ]
+}
+
+log $req_ctl $req_state {
+ sample.colour [ "blue" ]
+}
+End-of-File
+ $sudo rm -f $tmp.0 $tmp.meta $tmp.index
+ _start_up_pmlogger -L -D 640 -c $tmp.config -l $tmp.out $tmp >$tmp.err 2>&1
+ logger_pid=$pid
+ _wait_for_pmlogger $logger_pid $tmp.out
+ src/logcontrol -p $logger_pid enquire sample.colour
+ $sudo $signal -s TERM $logger_pid
+ _wait_pmlogger_end $logger_pid
+ cat $tmp.err $tmp.out | _filter_pmlogger
+ if [ -s $tmp.0 ]
+ then
+ pmdumplog $tmp | _filter_dumplog
+ else
+ echo "Archive log is empty"
+ fi
+ done
+ done
+ done
+done
+
+exit
diff --git a/qa/061.out b/qa/061.out
new file mode 100644
index 0000000..b451d19
--- /dev/null
+++ b/qa/061.out
@@ -0,0 +1,1153 @@
+QA output created by 061
+
+mandatory on once -> mandatory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 15 (mand on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+mandatory on once -> mandatory maybe
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory on once -> mandatory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 2 (mand off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory on once -> advisory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 15 (mand on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Warning [/tmp/SEQ-MYPID.config, line 6]
+Incompatible request for metric "sample.colour" and instance "blue"
+Request for (advisory) ON conflicts with current (mandatory) ON state
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+mandatory on once -> advisory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 15 (mand on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Warning [/tmp/SEQ-MYPID.config, line 6]
+Incompatible request for metric "sample.colour" and instance "blue"
+Request for (advisory) OFF conflicts with current (mandatory) ON state
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+mandatory maybe -> mandatory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 15 (mand on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+mandatory maybe -> mandatory maybe
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory maybe -> mandatory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 2 (mand off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory maybe -> advisory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 13 (adv on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+mandatory maybe -> advisory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory off -> mandatory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 15 (mand on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+mandatory off -> mandatory maybe
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory off -> mandatory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 2 (mand off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory off -> advisory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 2 (mand off)
+Log for pmlogger on HOST started DATE
+
+Warning [/tmp/SEQ-MYPID.config, line 6]
+Incompatible request for metric "sample.colour" and instance "blue"
+Request for (advisory) ON conflicts with current (mandatory) OFF state
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+mandatory off -> advisory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 2 (mand off)
+Log for pmlogger on HOST started DATE
+
+Warning [/tmp/SEQ-MYPID.config, line 6]
+Incompatible request for metric "sample.colour" and instance "blue"
+Request for (advisory) OFF conflicts with current (mandatory) OFF state
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+advisory on once -> mandatory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 15 (mand on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+advisory on once -> mandatory maybe
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+advisory on once -> mandatory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 2 (mand off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+advisory on once -> advisory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 13 (adv on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+advisory on once -> advisory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+advisory off -> mandatory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 15 (mand on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+advisory off -> mandatory maybe
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+advisory off -> mandatory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 2 (mand off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, mand, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+advisory off -> advisory on once
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 13 (adv on, delta=0 msec, inlog, avail)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, on delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+logputresult: pdubuf=ADDR input len=NNN output len=40 posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+
+TIMESTAMP 29.0.5 (sample.colour): inst [2 or "blue"] value NUMBER
+
+advisory off -> advisory off
+sample.colour
+ inst [0 or "red"] 0 (adv off)
+ inst [1 or "green"] 0 (adv off)
+ inst [2 or "blue"] 0 (adv off)
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+optFetch Cost Parameters: pmid=4 indom=1 fetch=15 scope=1
+
+After loading config ...
+ state: not in log, unavail, adv, off delta: 0 usec numpmid: 1
+ 29.0.5 (sample.colour):
+Dump optfetch structures from ADDR next=ADDR
+Fetch Control @ ADDR: cost=20 state=NEW PMID PROFILE
+PMIDs: [1] 29.0.5
+ InDom 29.1 Control @ ADDR:
+ instances: [1] 2
+ PMID 29.0.5 Control @ ADDR:
+ instances: [1] 2
+ Request @ ADDR:
+ instances: [1] 2
+
+Archive basename: ARCHIVE
+logputresult: pdubuf=ADDR input len=NNN output len=NNN posn=NNN
+__pmLogPutIndex: timestamp=NNN.NNNNNN vol=0 meta posn=NNN log posn=NNN
+do_control: control=13 state=0 delta=5000 request ...
+LogControl dump from ADDR numpmid: 1
+ 29.0.5 : numval: 3 valfmt: 0 inst [0]
+ inst [1]
+ inst [2]
+pmResult dump from ADDR timestamp: 0.000000 TIME numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value INT
+ inst [1 or "green"] value INT
+ inst [2 or "blue"] value INT
+
+Log finished DATE
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
diff --git a/qa/062 b/qa/062
new file mode 100755
index 0000000..9852c8a
--- /dev/null
+++ b/qa/062
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 062
+# Test pmcd's ability to suppress multiple access control warnings
+# from the same host
+#
+# Copyright (c) 2012-2013 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+_get_libpcp_config
+if [ "$ipv6" = "true" ]; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+src/fixhosts
+
+# real QA test starts here
+
+echo "testing single op for all ops..."
+echo "may dump core for IRIX 6.1 ... bug in gethostbyname()"
+src/chkacc1
+echo
+
+echo "testing all except one op for all ops..."
+echo "may dump core for IRIX 6.1 ... bug in gethostbyname()"
+src/chkacc2
+echo
+
+echo "testing all combinations of ops in a range..."
+echo "may dump core for IRIX 6.1 ... bug in gethostbyname()"
+src/chkacc3
diff --git a/qa/062.out.ipv6 b/qa/062.out.ipv6
new file mode 100644
index 0000000..67cc00a
--- /dev/null
+++ b/qa/062.out.ipv6
@@ -0,0 +1,1197 @@
+QA output created by 062
+testing single op for all ops...
+may dump core for IRIX 6.1 ... bug in gethostbyname()
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n 0 0 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n 0 0 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n 0 0 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n 0 0 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n 0 0 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n 0 0 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n 0 0 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n 0 0 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n 0 0 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n 0 0 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n 0 0 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n 0 0 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n 0 0 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n 0 0 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n 0 0 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n 0 0 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n 0 0 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n 0 0 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n 0 0 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n 0 0 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n 0 0 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n 0 0 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n 0 0 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n 0 0 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n 0 0 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n 0 0 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n 0 0 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n 0 0 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n 0 0 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n 0 0 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n 0 0 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n 0 0 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n 0 0 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n 0 0 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n 0 0 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n 0 0 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n 0 0 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n 0 0 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n 0 0 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n 0 0 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n 0 0 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n 0 0 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n 0 0 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n 0 0 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n 0 0 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n 0 0 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n 0 0 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n 0 0 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n 0 0 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n 0 0 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n 0 0 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n 0 0 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n 0 0 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n 0 0 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n 0 0 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n 0 0 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n 0 0 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n 0 0 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n 0 0 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n 0 0 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n 0 0 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n 0 0 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+testing all except one op for all ops...
+may dump core for IRIX 6.1 ... bug in gethostbyname()
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 1 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 2 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 3 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 4 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 5 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 6 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 7 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 8 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 9 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 10 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 11 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 12 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 13 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 14 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 15 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 16 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 17 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 18 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 19 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 20 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 21 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 22 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 23 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 24 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 25 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 26 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 27 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 28 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 29 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 30 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 31 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 1 1 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 2 2 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 3 3 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 4 4 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 5 5 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 6 6 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 7 7 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 8 8 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 9 9 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 10 10 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 11 11 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 12 12 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 13 13 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 14 14 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 15 15 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 16 16 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 17 17 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 18 18 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 19 19 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 20 20 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 21 21 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 22 22 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 23 23 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 24 24 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 25 25 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 26 26 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 27 27 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 28 28 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 29 29 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 30 30 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 31 31 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+testing all combinations of ops in a range...
+may dump core for IRIX 6.1 ... bug in gethostbyname()
+set 001 for host 0.0.0.0
+set 002 for host 0.0.0.1
+set 003 for host 0.0.0.127
+set 004 for host 0.0.0.254
+set 005 for host 0.0.15.0
+set 006 for host 0.0.15.1
+set 007 for host 0.0.15.127
+set 008 for host 0.0.15.254
+set 009 for host 0.0.191.0
+set 00a for host 0.0.191.1
+set 00b for host 0.0.191.127
+set 00c for host 0.0.191.254
+set 00d for host 0.0.64.0
+set 00e for host 0.0.64.1
+set 00f for host 0.0.64.127
+set 010 for host 0.0.64.254
+set 111 for host 0.201.0.0
+set 112 for host 0.201.0.1
+set 113 for host 0.201.0.127
+set 114 for host 0.201.0.254
+set 115 for host 0.201.15.0
+set 116 for host 0.201.15.1
+set 117 for host 0.201.15.127
+set 118 for host 0.201.15.254
+set 119 for host 0.201.191.0
+set 11a for host 0.201.191.1
+set 11b for host 0.201.191.127
+set 11c for host 0.201.191.254
+set 11d for host 0.201.64.0
+set 11e for host 0.201.64.1
+set 11f for host 0.201.64.127
+set 120 for host 0.201.64.254
+set 221 for host 0.77.0.0
+set 222 for host 0.77.0.1
+set 223 for host 0.77.0.127
+set 224 for host 0.77.0.254
+set 225 for host 0.77.15.0
+set 226 for host 0.77.15.1
+set 227 for host 0.77.15.127
+set 228 for host 0.77.15.254
+set 229 for host 0.77.191.0
+set 22a for host 0.77.191.1
+set 22b for host 0.77.191.127
+set 22c for host 0.77.191.254
+set 22d for host 0.77.64.0
+set 22e for host 0.77.64.1
+set 22f for host 0.77.64.127
+set 230 for host 0.77.64.254
+set 331 for host 0.127.0.0
+set 332 for host 0.127.0.1
+set 333 for host 0.127.0.127
+set 334 for host 0.127.0.254
+set 335 for host 0.127.15.0
+set 336 for host 0.127.15.1
+set 337 for host 0.127.15.127
+set 338 for host 0.127.15.254
+set 339 for host 0.127.191.0
+set 33a for host 0.127.191.1
+set 33b for host 0.127.191.127
+set 33c for host 0.127.191.254
+set 33d for host 0.127.64.0
+set 33e for host 0.127.64.1
+set 33f for host 0.127.64.127
+set 340 for host 0.127.64.254
+set 041 for host 37.0.0.0
+set 042 for host 37.0.0.1
+set 043 for host 37.0.0.127
+set 044 for host 37.0.0.254
+set 045 for host 37.0.15.0
+set 046 for host 37.0.15.1
+set 047 for host 37.0.15.127
+set 048 for host 37.0.15.254
+set 049 for host 37.0.191.0
+set 04a for host 37.0.191.1
+set 04b for host 37.0.191.127
+set 04c for host 37.0.191.254
+set 04d for host 37.0.64.0
+set 04e for host 37.0.64.1
+set 04f for host 37.0.64.127
+set 050 for host 37.0.64.254
+set 051 for host 37.201.0.0
+set 052 for host 37.201.0.1
+set 053 for host 37.201.0.127
+set 054 for host 37.201.0.254
+set 055 for host 37.201.15.0
+set 056 for host 37.201.15.1
+set 057 for host 37.201.15.127
+set 058 for host 37.201.15.254
+set 059 for host 37.201.191.0
+set 05a for host 37.201.191.1
+set 05b for host 37.201.191.127
+set 05c for host 37.201.191.254
+set 05d for host 37.201.64.0
+set 05e for host 37.201.64.1
+set 05f for host 37.201.64.127
+set 060 for host 37.201.64.254
+set 061 for host 37.77.0.0
+set 062 for host 37.77.0.1
+set 063 for host 37.77.0.127
+set 064 for host 37.77.0.254
+set 065 for host 37.77.15.0
+set 066 for host 37.77.15.1
+set 067 for host 37.77.15.127
+set 068 for host 37.77.15.254
+set 069 for host 37.77.191.0
+set 06a for host 37.77.191.1
+set 06b for host 37.77.191.127
+set 06c for host 37.77.191.254
+set 06d for host 37.77.64.0
+set 06e for host 37.77.64.1
+set 06f for host 37.77.64.127
+set 070 for host 37.77.64.254
+set 071 for host 37.127.0.0
+set 072 for host 37.127.0.1
+set 073 for host 37.127.0.127
+set 074 for host 37.127.0.254
+set 075 for host 37.127.15.0
+set 076 for host 37.127.15.1
+set 077 for host 37.127.15.127
+set 078 for host 37.127.15.254
+set 079 for host 37.127.191.0
+set 07a for host 37.127.191.1
+set 07b for host 37.127.191.127
+set 07c for host 37.127.191.254
+set 07d for host 37.127.64.0
+set 07e for host 37.127.64.1
+set 07f for host 37.127.64.127
+set 080 for host 37.127.64.254
+set 081 for host 235.0.0.0
+set 082 for host 235.0.0.1
+set 083 for host 235.0.0.127
+set 084 for host 235.0.0.254
+set 085 for host 235.0.15.0
+set 086 for host 235.0.15.1
+set 087 for host 235.0.15.127
+set 088 for host 235.0.15.254
+set 089 for host 235.0.191.0
+set 08a for host 235.0.191.1
+set 08b for host 235.0.191.127
+set 08c for host 235.0.191.254
+set 08d for host 235.0.64.0
+set 08e for host 235.0.64.1
+set 08f for host 235.0.64.127
+set 090 for host 235.0.64.254
+set 091 for host 235.201.0.0
+set 092 for host 235.201.0.1
+set 093 for host 235.201.0.127
+set 094 for host 235.201.0.254
+set 095 for host 235.201.15.0
+set 096 for host 235.201.15.1
+set 097 for host 235.201.15.127
+set 098 for host 235.201.15.254
+set 099 for host 235.201.191.0
+set 09a for host 235.201.191.1
+set 09b for host 235.201.191.127
+set 09c for host 235.201.191.254
+set 09d for host 235.201.64.0
+set 09e for host 235.201.64.1
+set 09f for host 235.201.64.127
+set 0a0 for host 235.201.64.254
+set 0a1 for host 235.77.0.0
+set 0a2 for host 235.77.0.1
+set 0a3 for host 235.77.0.127
+set 0a4 for host 235.77.0.254
+set 0a5 for host 235.77.15.0
+set 0a6 for host 235.77.15.1
+set 0a7 for host 235.77.15.127
+set 0a8 for host 235.77.15.254
+set 0a9 for host 235.77.191.0
+set 0aa for host 235.77.191.1
+set 0ab for host 235.77.191.127
+set 0ac for host 235.77.191.254
+set 0ad for host 235.77.64.0
+set 0ae for host 235.77.64.1
+set 0af for host 235.77.64.127
+set 0b0 for host 235.77.64.254
+set 0b1 for host 235.127.0.0
+set 0b2 for host 235.127.0.1
+set 0b3 for host 235.127.0.127
+set 0b4 for host 235.127.0.254
+set 0b5 for host 235.127.15.0
+set 0b6 for host 235.127.15.1
+set 0b7 for host 235.127.15.127
+set 0b8 for host 235.127.15.254
+set 0b9 for host 235.127.191.0
+set 0ba for host 235.127.191.1
+set 0bb for host 235.127.191.127
+set 0bc for host 235.127.191.254
+set 0bd for host 235.127.64.0
+set 0be for host 235.127.64.1
+set 0bf for host 235.127.64.127
+set 0c0 for host 235.127.64.254
+set 0c1 for host 126.0.0.0
+set 0c2 for host 126.0.0.1
+set 0c3 for host 126.0.0.127
+set 0c4 for host 126.0.0.254
+set 0c5 for host 126.0.15.0
+set 0c6 for host 126.0.15.1
+set 0c7 for host 126.0.15.127
+set 0c8 for host 126.0.15.254
+set 0c9 for host 126.0.191.0
+set 0ca for host 126.0.191.1
+set 0cb for host 126.0.191.127
+set 0cc for host 126.0.191.254
+set 0cd for host 126.0.64.0
+set 0ce for host 126.0.64.1
+set 0cf for host 126.0.64.127
+set 0d0 for host 126.0.64.254
+set 0d1 for host 126.201.0.0
+set 0d2 for host 126.201.0.1
+set 0d3 for host 126.201.0.127
+set 0d4 for host 126.201.0.254
+set 0d5 for host 126.201.15.0
+set 0d6 for host 126.201.15.1
+set 0d7 for host 126.201.15.127
+set 0d8 for host 126.201.15.254
+set 0d9 for host 126.201.191.0
+set 0da for host 126.201.191.1
+set 0db for host 126.201.191.127
+set 0dc for host 126.201.191.254
+set 0dd for host 126.201.64.0
+set 0de for host 126.201.64.1
+set 0df for host 126.201.64.127
+set 0e0 for host 126.201.64.254
+set 0e1 for host 126.77.0.0
+set 0e2 for host 126.77.0.1
+set 0e3 for host 126.77.0.127
+set 0e4 for host 126.77.0.254
+set 0e5 for host 126.77.15.0
+set 0e6 for host 126.77.15.1
+set 0e7 for host 126.77.15.127
+set 0e8 for host 126.77.15.254
+set 0e9 for host 126.77.191.0
+set 0ea for host 126.77.191.1
+set 0eb for host 126.77.191.127
+set 0ec for host 126.77.191.254
+set 0ed for host 126.77.64.0
+set 0ee for host 126.77.64.1
+set 0ef for host 126.77.64.127
+set 0f0 for host 126.77.64.254
+set 0f1 for host 126.127.0.0
+set 0f2 for host 126.127.0.1
+set 0f3 for host 126.127.0.127
+set 0f4 for host 126.127.0.254
+set 0f5 for host 126.127.15.0
+set 0f6 for host 126.127.15.1
+set 0f7 for host 126.127.15.127
+set 0f8 for host 126.127.15.254
+set 0f9 for host 126.127.191.0
+set 0fa for host 126.127.191.1
+set 0fb for host 126.127.191.127
+set 0fc for host 126.127.191.254
+set 0fd for host 126.127.64.0
+set 0fe for host 126.127.64.1
+set 0ff for host 126.127.64.127
+expect error, perm=256 (>255):
+set 400 for host 126.127.64.254
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n y y y y y y y y y 0 0 0.0.0.0 255.255.255.255 0 0.0.0.0
+ y n y y y y y y y y 0 0 0.0.0.1 255.255.255.255 0 0.0.0.1
+ n n y y y y y y y y 0 0 0.0.0.127 255.255.255.255 0 0.0.0.127
+ y y n y y y y y y y 0 0 0.0.0.254 255.255.255.255 0 0.0.0.254
+ n y n y y y y y y y 0 0 0.0.15.0 255.255.255.255 0 0.0.15.0
+ y n n y y y y y y y 0 0 0.0.15.1 255.255.255.255 0 0.0.15.1
+ n n n y y y y y y y 0 0 0.0.15.127 255.255.255.255 0 0.0.15.127
+ y y y n y y y y y y 0 0 0.0.15.254 255.255.255.255 0 0.0.15.254
+ n y y n y y y y y y 0 0 0.0.191.0 255.255.255.255 0 0.0.191.0
+ y n y n y y y y y y 0 0 0.0.191.1 255.255.255.255 0 0.0.191.1
+ n n y n y y y y y y 0 0 0.0.191.127 255.255.255.255 0 0.0.191.127
+ y y n n y y y y y y 0 0 0.0.191.254 255.255.255.255 0 0.0.191.254
+ n y n n y y y y y y 0 0 0.0.64.0 255.255.255.255 0 0.0.64.0
+ y n n n y y y y y y 0 0 0.0.64.1 255.255.255.255 0 0.0.64.1
+ n n n n y y y y y y 0 0 0.0.64.127 255.255.255.255 0 0.0.64.127
+ y y y y n y y y y y 0 0 0.0.64.254 255.255.255.255 0 0.0.64.254
+ n y y y n y y y n y 0 0 0.201.0.0 255.255.255.255 0 0.201.0.0
+ y n y y n y y y n y 0 0 0.201.0.1 255.255.255.255 0 0.201.0.1
+ n n y y n y y y n y 0 0 0.201.0.127 255.255.255.255 0 0.201.0.127
+ y y n y n y y y n y 0 0 0.201.0.254 255.255.255.255 0 0.201.0.254
+ n y n y n y y y n y 0 0 0.201.15.0 255.255.255.255 0 0.201.15.0
+ y n n y n y y y n y 0 0 0.201.15.1 255.255.255.255 0 0.201.15.1
+ n n n y n y y y n y 0 0 0.201.15.127 255.255.255.255 0 0.201.15.127
+ y y y n n y y y n y 0 0 0.201.15.254 255.255.255.255 0 0.201.15.254
+ n y y n n y y y n y 0 0 0.201.191.0 255.255.255.255 0 0.201.191.0
+ y n y n n y y y n y 0 0 0.201.191.1 255.255.255.255 0 0.201.191.1
+ n n y n n y y y n y 0 0 0.201.191.127 255.255.255.255 0 0.201.191.127
+ y y n n n y y y n y 0 0 0.201.191.254 255.255.255.255 0 0.201.191.254
+ n y n n n y y y n y 0 0 0.201.64.0 255.255.255.255 0 0.201.64.0
+ y n n n n y y y n y 0 0 0.201.64.1 255.255.255.255 0 0.201.64.1
+ n n n n n y y y n y 0 0 0.201.64.127 255.255.255.255 0 0.201.64.127
+ y y y y y n y y n y 0 0 0.201.64.254 255.255.255.255 0 0.201.64.254
+ n y y y y n y y y n 0 0 0.77.0.0 255.255.255.255 0 0.77.0.0
+ y n y y y n y y y n 0 0 0.77.0.1 255.255.255.255 0 0.77.0.1
+ n n y y y n y y y n 0 0 0.77.0.127 255.255.255.255 0 0.77.0.127
+ y y n y y n y y y n 0 0 0.77.0.254 255.255.255.255 0 0.77.0.254
+ n y n y y n y y y n 0 0 0.77.15.0 255.255.255.255 0 0.77.15.0
+ y n n y y n y y y n 0 0 0.77.15.1 255.255.255.255 0 0.77.15.1
+ n n n y y n y y y n 0 0 0.77.15.127 255.255.255.255 0 0.77.15.127
+ y y y n y n y y y n 0 0 0.77.15.254 255.255.255.255 0 0.77.15.254
+ n y y n y n y y y n 0 0 0.77.191.0 255.255.255.255 0 0.77.191.0
+ y n y n y n y y y n 0 0 0.77.191.1 255.255.255.255 0 0.77.191.1
+ n n y n y n y y y n 0 0 0.77.191.127 255.255.255.255 0 0.77.191.127
+ y y n n y n y y y n 0 0 0.77.191.254 255.255.255.255 0 0.77.191.254
+ n y n n y n y y y n 0 0 0.77.64.0 255.255.255.255 0 0.77.64.0
+ y n n n y n y y y n 0 0 0.77.64.1 255.255.255.255 0 0.77.64.1
+ n n n n y n y y y n 0 0 0.77.64.127 255.255.255.255 0 0.77.64.127
+ y y y y n n y y y n 0 0 0.77.64.254 255.255.255.255 0 0.77.64.254
+ n y y y n n y y n n 0 0 0.127.0.0 255.255.255.255 0 0.127.0.0
+ y n y y n n y y n n 0 0 0.127.0.1 255.255.255.255 0 0.127.0.1
+ n n y y n n y y n n 0 0 0.127.0.127 255.255.255.255 0 0.127.0.127
+ y y n y n n y y n n 0 0 0.127.0.254 255.255.255.255 0 0.127.0.254
+ n y n y n n y y n n 0 0 0.127.15.0 255.255.255.255 0 0.127.15.0
+ y n n y n n y y n n 0 0 0.127.15.1 255.255.255.255 0 0.127.15.1
+ n n n y n n y y n n 0 0 0.127.15.127 255.255.255.255 0 0.127.15.127
+ y y y n n n y y n n 0 0 0.127.15.254 255.255.255.255 0 0.127.15.254
+ n y y n n n y y n n 0 0 0.127.191.0 255.255.255.255 0 0.127.191.0
+ y n y n n n y y n n 0 0 0.127.191.1 255.255.255.255 0 0.127.191.1
+ n n y n n n y y n n 0 0 0.127.191.127 255.255.255.255 0 0.127.191.127
+ y y n n n n y y n n 0 0 0.127.191.254 255.255.255.255 0 0.127.191.254
+ n y n n n n y y n n 0 0 0.127.64.0 255.255.255.255 0 0.127.64.0
+ y n n n n n y y n n 0 0 0.127.64.1 255.255.255.255 0 0.127.64.1
+ n n n n n n y y n n 0 0 0.127.64.127 255.255.255.255 0 0.127.64.127
+ y y y y y y n y n n 0 0 0.127.64.254 255.255.255.255 0 0.127.64.254
+ n y y y y y n y 0 0 37.0.0.0 255.255.255.255 0 37.0.0.0
+ y n y y y y n y 0 0 37.0.0.1 255.255.255.255 0 37.0.0.1
+ n n y y y y n y 0 0 37.0.0.127 255.255.255.255 0 37.0.0.127
+ y y n y y y n y 0 0 37.0.0.254 255.255.255.255 0 37.0.0.254
+ n y n y y y n y 0 0 37.0.15.0 255.255.255.255 0 37.0.15.0
+ y n n y y y n y 0 0 37.0.15.1 255.255.255.255 0 37.0.15.1
+ n n n y y y n y 0 0 37.0.15.127 255.255.255.255 0 37.0.15.127
+ y y y n y y n y 0 0 37.0.15.254 255.255.255.255 0 37.0.15.254
+ n y y n y y n y 0 0 37.0.191.0 255.255.255.255 0 37.0.191.0
+ y n y n y y n y 0 0 37.0.191.1 255.255.255.255 0 37.0.191.1
+ n n y n y y n y 0 0 37.0.191.127 255.255.255.255 0 37.0.191.127
+ y y n n y y n y 0 0 37.0.191.254 255.255.255.255 0 37.0.191.254
+ n y n n y y n y 0 0 37.0.64.0 255.255.255.255 0 37.0.64.0
+ y n n n y y n y 0 0 37.0.64.1 255.255.255.255 0 37.0.64.1
+ n n n n y y n y 0 0 37.0.64.127 255.255.255.255 0 37.0.64.127
+ y y y y n y n y 0 0 37.0.64.254 255.255.255.255 0 37.0.64.254
+ n y y y n y n y 0 0 37.201.0.0 255.255.255.255 0 37.201.0.0
+ y n y y n y n y 0 0 37.201.0.1 255.255.255.255 0 37.201.0.1
+ n n y y n y n y 0 0 37.201.0.127 255.255.255.255 0 37.201.0.127
+ y y n y n y n y 0 0 37.201.0.254 255.255.255.255 0 37.201.0.254
+ n y n y n y n y 0 0 37.201.15.0 255.255.255.255 0 37.201.15.0
+ y n n y n y n y 0 0 37.201.15.1 255.255.255.255 0 37.201.15.1
+ n n n y n y n y 0 0 37.201.15.127 255.255.255.255 0 37.201.15.127
+ y y y n n y n y 0 0 37.201.15.254 255.255.255.255 0 37.201.15.254
+ n y y n n y n y 0 0 37.201.191.0 255.255.255.255 0 37.201.191.0
+ y n y n n y n y 0 0 37.201.191.1 255.255.255.255 0 37.201.191.1
+ n n y n n y n y 0 0 37.201.191.127 255.255.255.255 0 37.201.191.127
+ y y n n n y n y 0 0 37.201.191.254 255.255.255.255 0 37.201.191.254
+ n y n n n y n y 0 0 37.201.64.0 255.255.255.255 0 37.201.64.0
+ y n n n n y n y 0 0 37.201.64.1 255.255.255.255 0 37.201.64.1
+ n n n n n y n y 0 0 37.201.64.127 255.255.255.255 0 37.201.64.127
+ y y y y y n n y 0 0 37.201.64.254 255.255.255.255 0 37.201.64.254
+ n y y y y n n y 0 0 37.77.0.0 255.255.255.255 0 37.77.0.0
+ y n y y y n n y 0 0 37.77.0.1 255.255.255.255 0 37.77.0.1
+ n n y y y n n y 0 0 37.77.0.127 255.255.255.255 0 37.77.0.127
+ y y n y y n n y 0 0 37.77.0.254 255.255.255.255 0 37.77.0.254
+ n y n y y n n y 0 0 37.77.15.0 255.255.255.255 0 37.77.15.0
+ y n n y y n n y 0 0 37.77.15.1 255.255.255.255 0 37.77.15.1
+ n n n y y n n y 0 0 37.77.15.127 255.255.255.255 0 37.77.15.127
+ y y y n y n n y 0 0 37.77.15.254 255.255.255.255 0 37.77.15.254
+ n y y n y n n y 0 0 37.77.191.0 255.255.255.255 0 37.77.191.0
+ y n y n y n n y 0 0 37.77.191.1 255.255.255.255 0 37.77.191.1
+ n n y n y n n y 0 0 37.77.191.127 255.255.255.255 0 37.77.191.127
+ y y n n y n n y 0 0 37.77.191.254 255.255.255.255 0 37.77.191.254
+ n y n n y n n y 0 0 37.77.64.0 255.255.255.255 0 37.77.64.0
+ y n n n y n n y 0 0 37.77.64.1 255.255.255.255 0 37.77.64.1
+ n n n n y n n y 0 0 37.77.64.127 255.255.255.255 0 37.77.64.127
+ y y y y n n n y 0 0 37.77.64.254 255.255.255.255 0 37.77.64.254
+ n y y y n n n y 0 0 37.127.0.0 255.255.255.255 0 37.127.0.0
+ y n y y n n n y 0 0 37.127.0.1 255.255.255.255 0 37.127.0.1
+ n n y y n n n y 0 0 37.127.0.127 255.255.255.255 0 37.127.0.127
+ y y n y n n n y 0 0 37.127.0.254 255.255.255.255 0 37.127.0.254
+ n y n y n n n y 0 0 37.127.15.0 255.255.255.255 0 37.127.15.0
+ y n n y n n n y 0 0 37.127.15.1 255.255.255.255 0 37.127.15.1
+ n n n y n n n y 0 0 37.127.15.127 255.255.255.255 0 37.127.15.127
+ y y y n n n n y 0 0 37.127.15.254 255.255.255.255 0 37.127.15.254
+ n y y n n n n y 0 0 37.127.191.0 255.255.255.255 0 37.127.191.0
+ y n y n n n n y 0 0 37.127.191.1 255.255.255.255 0 37.127.191.1
+ n n y n n n n y 0 0 37.127.191.127 255.255.255.255 0 37.127.191.127
+ y y n n n n n y 0 0 37.127.191.254 255.255.255.255 0 37.127.191.254
+ n y n n n n n y 0 0 37.127.64.0 255.255.255.255 0 37.127.64.0
+ y n n n n n n y 0 0 37.127.64.1 255.255.255.255 0 37.127.64.1
+ n n n n n n n y 0 0 37.127.64.127 255.255.255.255 0 37.127.64.127
+ y y y y y y y n 0 0 37.127.64.254 255.255.255.255 0 37.127.64.254
+ n y y y y y y n 0 0 235.0.0.0 255.255.255.255 0 235.0.0.0
+ y n y y y y y n 0 0 235.0.0.1 255.255.255.255 0 235.0.0.1
+ n n y y y y y n 0 0 235.0.0.127 255.255.255.255 0 235.0.0.127
+ y y n y y y y n 0 0 235.0.0.254 255.255.255.255 0 235.0.0.254
+ n y n y y y y n 0 0 235.0.15.0 255.255.255.255 0 235.0.15.0
+ y n n y y y y n 0 0 235.0.15.1 255.255.255.255 0 235.0.15.1
+ n n n y y y y n 0 0 235.0.15.127 255.255.255.255 0 235.0.15.127
+ y y y n y y y n 0 0 235.0.15.254 255.255.255.255 0 235.0.15.254
+ n y y n y y y n 0 0 235.0.191.0 255.255.255.255 0 235.0.191.0
+ y n y n y y y n 0 0 235.0.191.1 255.255.255.255 0 235.0.191.1
+ n n y n y y y n 0 0 235.0.191.127 255.255.255.255 0 235.0.191.127
+ y y n n y y y n 0 0 235.0.191.254 255.255.255.255 0 235.0.191.254
+ n y n n y y y n 0 0 235.0.64.0 255.255.255.255 0 235.0.64.0
+ y n n n y y y n 0 0 235.0.64.1 255.255.255.255 0 235.0.64.1
+ n n n n y y y n 0 0 235.0.64.127 255.255.255.255 0 235.0.64.127
+ y y y y n y y n 0 0 235.0.64.254 255.255.255.255 0 235.0.64.254
+ n y y y n y y n 0 0 235.201.0.0 255.255.255.255 0 235.201.0.0
+ y n y y n y y n 0 0 235.201.0.1 255.255.255.255 0 235.201.0.1
+ n n y y n y y n 0 0 235.201.0.127 255.255.255.255 0 235.201.0.127
+ y y n y n y y n 0 0 235.201.0.254 255.255.255.255 0 235.201.0.254
+ n y n y n y y n 0 0 235.201.15.0 255.255.255.255 0 235.201.15.0
+ y n n y n y y n 0 0 235.201.15.1 255.255.255.255 0 235.201.15.1
+ n n n y n y y n 0 0 235.201.15.127 255.255.255.255 0 235.201.15.127
+ y y y n n y y n 0 0 235.201.15.254 255.255.255.255 0 235.201.15.254
+ n y y n n y y n 0 0 235.201.191.0 255.255.255.255 0 235.201.191.0
+ y n y n n y y n 0 0 235.201.191.1 255.255.255.255 0 235.201.191.1
+ n n y n n y y n 0 0 235.201.191.127 255.255.255.255 0 235.201.191.127
+ y y n n n y y n 0 0 235.201.191.254 255.255.255.255 0 235.201.191.254
+ n y n n n y y n 0 0 235.201.64.0 255.255.255.255 0 235.201.64.0
+ y n n n n y y n 0 0 235.201.64.1 255.255.255.255 0 235.201.64.1
+ n n n n n y y n 0 0 235.201.64.127 255.255.255.255 0 235.201.64.127
+ y y y y y n y n 0 0 235.201.64.254 255.255.255.255 0 235.201.64.254
+ n y y y y n y n 0 0 235.77.0.0 255.255.255.255 0 235.77.0.0
+ y n y y y n y n 0 0 235.77.0.1 255.255.255.255 0 235.77.0.1
+ n n y y y n y n 0 0 235.77.0.127 255.255.255.255 0 235.77.0.127
+ y y n y y n y n 0 0 235.77.0.254 255.255.255.255 0 235.77.0.254
+ n y n y y n y n 0 0 235.77.15.0 255.255.255.255 0 235.77.15.0
+ y n n y y n y n 0 0 235.77.15.1 255.255.255.255 0 235.77.15.1
+ n n n y y n y n 0 0 235.77.15.127 255.255.255.255 0 235.77.15.127
+ y y y n y n y n 0 0 235.77.15.254 255.255.255.255 0 235.77.15.254
+ n y y n y n y n 0 0 235.77.191.0 255.255.255.255 0 235.77.191.0
+ y n y n y n y n 0 0 235.77.191.1 255.255.255.255 0 235.77.191.1
+ n n y n y n y n 0 0 235.77.191.127 255.255.255.255 0 235.77.191.127
+ y y n n y n y n 0 0 235.77.191.254 255.255.255.255 0 235.77.191.254
+ n y n n y n y n 0 0 235.77.64.0 255.255.255.255 0 235.77.64.0
+ y n n n y n y n 0 0 235.77.64.1 255.255.255.255 0 235.77.64.1
+ n n n n y n y n 0 0 235.77.64.127 255.255.255.255 0 235.77.64.127
+ y y y y n n y n 0 0 235.77.64.254 255.255.255.255 0 235.77.64.254
+ n y y y n n y n 0 0 235.127.0.0 255.255.255.255 0 235.127.0.0
+ y n y y n n y n 0 0 235.127.0.1 255.255.255.255 0 235.127.0.1
+ n n y y n n y n 0 0 235.127.0.127 255.255.255.255 0 235.127.0.127
+ y y n y n n y n 0 0 235.127.0.254 255.255.255.255 0 235.127.0.254
+ n y n y n n y n 0 0 235.127.15.0 255.255.255.255 0 235.127.15.0
+ y n n y n n y n 0 0 235.127.15.1 255.255.255.255 0 235.127.15.1
+ n n n y n n y n 0 0 235.127.15.127 255.255.255.255 0 235.127.15.127
+ y y y n n n y n 0 0 235.127.15.254 255.255.255.255 0 235.127.15.254
+ n y y n n n y n 0 0 235.127.191.0 255.255.255.255 0 235.127.191.0
+ y n y n n n y n 0 0 235.127.191.1 255.255.255.255 0 235.127.191.1
+ n n y n n n y n 0 0 235.127.191.127 255.255.255.255 0 235.127.191.127
+ y y n n n n y n 0 0 235.127.191.254 255.255.255.255 0 235.127.191.254
+ n y n n n n y n 0 0 235.127.64.0 255.255.255.255 0 235.127.64.0
+ y n n n n n y n 0 0 235.127.64.1 255.255.255.255 0 235.127.64.1
+ n n n n n n y n 0 0 235.127.64.127 255.255.255.255 0 235.127.64.127
+ y y y y y y n n 0 0 235.127.64.254 255.255.255.255 0 235.127.64.254
+ n y y y y y n n 0 0 126.0.0.0 255.255.255.255 0 126.0.0.0
+ y n y y y y n n 0 0 126.0.0.1 255.255.255.255 0 126.0.0.1
+ n n y y y y n n 0 0 126.0.0.127 255.255.255.255 0 126.0.0.127
+ y y n y y y n n 0 0 126.0.0.254 255.255.255.255 0 126.0.0.254
+ n y n y y y n n 0 0 126.0.15.0 255.255.255.255 0 126.0.15.0
+ y n n y y y n n 0 0 126.0.15.1 255.255.255.255 0 126.0.15.1
+ n n n y y y n n 0 0 126.0.15.127 255.255.255.255 0 126.0.15.127
+ y y y n y y n n 0 0 126.0.15.254 255.255.255.255 0 126.0.15.254
+ n y y n y y n n 0 0 126.0.191.0 255.255.255.255 0 126.0.191.0
+ y n y n y y n n 0 0 126.0.191.1 255.255.255.255 0 126.0.191.1
+ n n y n y y n n 0 0 126.0.191.127 255.255.255.255 0 126.0.191.127
+ y y n n y y n n 0 0 126.0.191.254 255.255.255.255 0 126.0.191.254
+ n y n n y y n n 0 0 126.0.64.0 255.255.255.255 0 126.0.64.0
+ y n n n y y n n 0 0 126.0.64.1 255.255.255.255 0 126.0.64.1
+ n n n n y y n n 0 0 126.0.64.127 255.255.255.255 0 126.0.64.127
+ y y y y n y n n 0 0 126.0.64.254 255.255.255.255 0 126.0.64.254
+ n y y y n y n n 0 0 126.201.0.0 255.255.255.255 0 126.201.0.0
+ y n y y n y n n 0 0 126.201.0.1 255.255.255.255 0 126.201.0.1
+ n n y y n y n n 0 0 126.201.0.127 255.255.255.255 0 126.201.0.127
+ y y n y n y n n 0 0 126.201.0.254 255.255.255.255 0 126.201.0.254
+ n y n y n y n n 0 0 126.201.15.0 255.255.255.255 0 126.201.15.0
+ y n n y n y n n 0 0 126.201.15.1 255.255.255.255 0 126.201.15.1
+ n n n y n y n n 0 0 126.201.15.127 255.255.255.255 0 126.201.15.127
+ y y y n n y n n 0 0 126.201.15.254 255.255.255.255 0 126.201.15.254
+ n y y n n y n n 0 0 126.201.191.0 255.255.255.255 0 126.201.191.0
+ y n y n n y n n 0 0 126.201.191.1 255.255.255.255 0 126.201.191.1
+ n n y n n y n n 0 0 126.201.191.127 255.255.255.255 0 126.201.191.127
+ y y n n n y n n 0 0 126.201.191.254 255.255.255.255 0 126.201.191.254
+ n y n n n y n n 0 0 126.201.64.0 255.255.255.255 0 126.201.64.0
+ y n n n n y n n 0 0 126.201.64.1 255.255.255.255 0 126.201.64.1
+ n n n n n y n n 0 0 126.201.64.127 255.255.255.255 0 126.201.64.127
+ y y y y y n n n 0 0 126.201.64.254 255.255.255.255 0 126.201.64.254
+ n y y y y n n n 0 0 126.77.0.0 255.255.255.255 0 126.77.0.0
+ y n y y y n n n 0 0 126.77.0.1 255.255.255.255 0 126.77.0.1
+ n n y y y n n n 0 0 126.77.0.127 255.255.255.255 0 126.77.0.127
+ y y n y y n n n 0 0 126.77.0.254 255.255.255.255 0 126.77.0.254
+ n y n y y n n n 0 0 126.77.15.0 255.255.255.255 0 126.77.15.0
+ y n n y y n n n 0 0 126.77.15.1 255.255.255.255 0 126.77.15.1
+ n n n y y n n n 0 0 126.77.15.127 255.255.255.255 0 126.77.15.127
+ y y y n y n n n 0 0 126.77.15.254 255.255.255.255 0 126.77.15.254
+ n y y n y n n n 0 0 126.77.191.0 255.255.255.255 0 126.77.191.0
+ y n y n y n n n 0 0 126.77.191.1 255.255.255.255 0 126.77.191.1
+ n n y n y n n n 0 0 126.77.191.127 255.255.255.255 0 126.77.191.127
+ y y n n y n n n 0 0 126.77.191.254 255.255.255.255 0 126.77.191.254
+ n y n n y n n n 0 0 126.77.64.0 255.255.255.255 0 126.77.64.0
+ y n n n y n n n 0 0 126.77.64.1 255.255.255.255 0 126.77.64.1
+ n n n n y n n n 0 0 126.77.64.127 255.255.255.255 0 126.77.64.127
+ y y y y n n n n 0 0 126.77.64.254 255.255.255.255 0 126.77.64.254
+ n y y y n n n n 0 0 126.127.0.0 255.255.255.255 0 126.127.0.0
+ y n y y n n n n 0 0 126.127.0.1 255.255.255.255 0 126.127.0.1
+ n n y y n n n n 0 0 126.127.0.127 255.255.255.255 0 126.127.0.127
+ y y n y n n n n 0 0 126.127.0.254 255.255.255.255 0 126.127.0.254
+ n y n y n n n n 0 0 126.127.15.0 255.255.255.255 0 126.127.15.0
+ y n n y n n n n 0 0 126.127.15.1 255.255.255.255 0 126.127.15.1
+ n n n y n n n n 0 0 126.127.15.127 255.255.255.255 0 126.127.15.127
+ y y y n n n n n 0 0 126.127.15.254 255.255.255.255 0 126.127.15.254
+ n y y n n n n n 0 0 126.127.191.0 255.255.255.255 0 126.127.191.0
+ y n y n n n n n 0 0 126.127.191.1 255.255.255.255 0 126.127.191.1
+ n n y n n n n n 0 0 126.127.191.127 255.255.255.255 0 126.127.191.127
+ y y n n n n n n 0 0 126.127.191.254 255.255.255.255 0 126.127.191.254
+ n y n n n n n n 0 0 126.127.64.0 255.255.255.255 0 126.127.64.0
+ y n n n n n n n 0 0 126.127.64.1 255.255.255.255 0 126.127.64.1
+ n n n n n n n n 0 0 126.127.64.127 255.255.255.255 0 126.127.64.127
+ y y y y y y y y 0 0 126.127.64.254 255.255.255.255 0 126.127.64.254
+ n n 0 0 38.202.16.0 255.255.255.0 1 38.202.16.*
+ y n 0 0 38.202.0.0 255.255.0.0 2 38.202.*
+ n y 0 0 38.0.0.0 255.0.0.0 3 38.*
+ y y 0 0 0.0.0.0 0.0.0.0 4 .*
+
+
+got 001 for host 0.0.0.0
+got 002 for host 0.0.0.1
+got 003 for host 0.0.0.127
+got 004 for host 0.0.0.254
+got 005 for host 0.0.15.0
+got 006 for host 0.0.15.1
+got 007 for host 0.0.15.127
+got 008 for host 0.0.15.254
+got 009 for host 0.0.191.0
+got 00a for host 0.0.191.1
+got 00b for host 0.0.191.127
+got 00c for host 0.0.191.254
+got 00d for host 0.0.64.0
+got 00e for host 0.0.64.1
+got 00f for host 0.0.64.127
+got 010 for host 0.0.64.254
+got 111 for host 0.201.0.0
+got 112 for host 0.201.0.1
+got 113 for host 0.201.0.127
+got 114 for host 0.201.0.254
+got 115 for host 0.201.15.0
+got 116 for host 0.201.15.1
+got 117 for host 0.201.15.127
+got 118 for host 0.201.15.254
+got 119 for host 0.201.191.0
+got 11a for host 0.201.191.1
+got 11b for host 0.201.191.127
+got 11c for host 0.201.191.254
+got 11d for host 0.201.64.0
+got 11e for host 0.201.64.1
+got 11f for host 0.201.64.127
+got 120 for host 0.201.64.254
+got 221 for host 0.77.0.0
+got 222 for host 0.77.0.1
+got 223 for host 0.77.0.127
+got 224 for host 0.77.0.254
+got 225 for host 0.77.15.0
+got 226 for host 0.77.15.1
+got 227 for host 0.77.15.127
+got 228 for host 0.77.15.254
+got 229 for host 0.77.191.0
+got 22a for host 0.77.191.1
+got 22b for host 0.77.191.127
+got 22c for host 0.77.191.254
+got 22d for host 0.77.64.0
+got 22e for host 0.77.64.1
+got 22f for host 0.77.64.127
+got 230 for host 0.77.64.254
+got 331 for host 0.127.0.0
+got 332 for host 0.127.0.1
+got 333 for host 0.127.0.127
+got 334 for host 0.127.0.254
+got 335 for host 0.127.15.0
+got 336 for host 0.127.15.1
+got 337 for host 0.127.15.127
+got 338 for host 0.127.15.254
+got 339 for host 0.127.191.0
+got 33a for host 0.127.191.1
+got 33b for host 0.127.191.127
+got 33c for host 0.127.191.254
+got 33d for host 0.127.64.0
+got 33e for host 0.127.64.1
+got 33f for host 0.127.64.127
+got 340 for host 0.127.64.254
+got 041 for host 37.0.0.0
+got 042 for host 37.0.0.1
+got 043 for host 37.0.0.127
+got 044 for host 37.0.0.254
+got 045 for host 37.0.15.0
+got 046 for host 37.0.15.1
+got 047 for host 37.0.15.127
+got 048 for host 37.0.15.254
+got 049 for host 37.0.191.0
+got 04a for host 37.0.191.1
+got 04b for host 37.0.191.127
+got 04c for host 37.0.191.254
+got 04d for host 37.0.64.0
+got 04e for host 37.0.64.1
+got 04f for host 37.0.64.127
+got 050 for host 37.0.64.254
+got 051 for host 37.201.0.0
+got 052 for host 37.201.0.1
+got 053 for host 37.201.0.127
+got 054 for host 37.201.0.254
+got 055 for host 37.201.15.0
+got 056 for host 37.201.15.1
+got 057 for host 37.201.15.127
+got 058 for host 37.201.15.254
+got 059 for host 37.201.191.0
+got 05a for host 37.201.191.1
+got 05b for host 37.201.191.127
+got 05c for host 37.201.191.254
+got 05d for host 37.201.64.0
+got 05e for host 37.201.64.1
+got 05f for host 37.201.64.127
+got 060 for host 37.201.64.254
+got 061 for host 37.77.0.0
+got 062 for host 37.77.0.1
+got 063 for host 37.77.0.127
+got 064 for host 37.77.0.254
+got 065 for host 37.77.15.0
+got 066 for host 37.77.15.1
+got 067 for host 37.77.15.127
+got 068 for host 37.77.15.254
+got 069 for host 37.77.191.0
+got 06a for host 37.77.191.1
+got 06b for host 37.77.191.127
+got 06c for host 37.77.191.254
+got 06d for host 37.77.64.0
+got 06e for host 37.77.64.1
+got 06f for host 37.77.64.127
+got 070 for host 37.77.64.254
+got 071 for host 37.127.0.0
+got 072 for host 37.127.0.1
+got 073 for host 37.127.0.127
+got 074 for host 37.127.0.254
+got 075 for host 37.127.15.0
+got 076 for host 37.127.15.1
+got 077 for host 37.127.15.127
+got 078 for host 37.127.15.254
+got 079 for host 37.127.191.0
+got 07a for host 37.127.191.1
+got 07b for host 37.127.191.127
+got 07c for host 37.127.191.254
+got 07d for host 37.127.64.0
+got 07e for host 37.127.64.1
+got 07f for host 37.127.64.127
+got 080 for host 37.127.64.254
+got 081 for host 235.0.0.0
+got 082 for host 235.0.0.1
+got 083 for host 235.0.0.127
+got 084 for host 235.0.0.254
+got 085 for host 235.0.15.0
+got 086 for host 235.0.15.1
+got 087 for host 235.0.15.127
+got 088 for host 235.0.15.254
+got 089 for host 235.0.191.0
+got 08a for host 235.0.191.1
+got 08b for host 235.0.191.127
+got 08c for host 235.0.191.254
+got 08d for host 235.0.64.0
+got 08e for host 235.0.64.1
+got 08f for host 235.0.64.127
+got 090 for host 235.0.64.254
+got 091 for host 235.201.0.0
+got 092 for host 235.201.0.1
+got 093 for host 235.201.0.127
+got 094 for host 235.201.0.254
+got 095 for host 235.201.15.0
+got 096 for host 235.201.15.1
+got 097 for host 235.201.15.127
+got 098 for host 235.201.15.254
+got 099 for host 235.201.191.0
+got 09a for host 235.201.191.1
+got 09b for host 235.201.191.127
+got 09c for host 235.201.191.254
+got 09d for host 235.201.64.0
+got 09e for host 235.201.64.1
+got 09f for host 235.201.64.127
+got 0a0 for host 235.201.64.254
+got 0a1 for host 235.77.0.0
+got 0a2 for host 235.77.0.1
+got 0a3 for host 235.77.0.127
+got 0a4 for host 235.77.0.254
+got 0a5 for host 235.77.15.0
+got 0a6 for host 235.77.15.1
+got 0a7 for host 235.77.15.127
+got 0a8 for host 235.77.15.254
+got 0a9 for host 235.77.191.0
+got 0aa for host 235.77.191.1
+got 0ab for host 235.77.191.127
+got 0ac for host 235.77.191.254
+got 0ad for host 235.77.64.0
+got 0ae for host 235.77.64.1
+got 0af for host 235.77.64.127
+got 0b0 for host 235.77.64.254
+got 0b1 for host 235.127.0.0
+got 0b2 for host 235.127.0.1
+got 0b3 for host 235.127.0.127
+got 0b4 for host 235.127.0.254
+got 0b5 for host 235.127.15.0
+got 0b6 for host 235.127.15.1
+got 0b7 for host 235.127.15.127
+got 0b8 for host 235.127.15.254
+got 0b9 for host 235.127.191.0
+got 0ba for host 235.127.191.1
+got 0bb for host 235.127.191.127
+got 0bc for host 235.127.191.254
+got 0bd for host 235.127.64.0
+got 0be for host 235.127.64.1
+got 0bf for host 235.127.64.127
+got 0c0 for host 235.127.64.254
+got 0c1 for host 126.0.0.0
+got 0c2 for host 126.0.0.1
+got 0c3 for host 126.0.0.127
+got 0c4 for host 126.0.0.254
+got 0c5 for host 126.0.15.0
+got 0c6 for host 126.0.15.1
+got 0c7 for host 126.0.15.127
+got 0c8 for host 126.0.15.254
+got 0c9 for host 126.0.191.0
+got 0ca for host 126.0.191.1
+got 0cb for host 126.0.191.127
+got 0cc for host 126.0.191.254
+got 0cd for host 126.0.64.0
+got 0ce for host 126.0.64.1
+got 0cf for host 126.0.64.127
+got 0d0 for host 126.0.64.254
+got 0d1 for host 126.201.0.0
+got 0d2 for host 126.201.0.1
+got 0d3 for host 126.201.0.127
+got 0d4 for host 126.201.0.254
+got 0d5 for host 126.201.15.0
+got 0d6 for host 126.201.15.1
+got 0d7 for host 126.201.15.127
+got 0d8 for host 126.201.15.254
+got 0d9 for host 126.201.191.0
+got 0da for host 126.201.191.1
+got 0db for host 126.201.191.127
+got 0dc for host 126.201.191.254
+got 0dd for host 126.201.64.0
+got 0de for host 126.201.64.1
+got 0df for host 126.201.64.127
+got 0e0 for host 126.201.64.254
+got 0e1 for host 126.77.0.0
+got 0e2 for host 126.77.0.1
+got 0e3 for host 126.77.0.127
+got 0e4 for host 126.77.0.254
+got 0e5 for host 126.77.15.0
+got 0e6 for host 126.77.15.1
+got 0e7 for host 126.77.15.127
+got 0e8 for host 126.77.15.254
+got 0e9 for host 126.77.191.0
+got 0ea for host 126.77.191.1
+got 0eb for host 126.77.191.127
+got 0ec for host 126.77.191.254
+got 0ed for host 126.77.64.0
+got 0ee for host 126.77.64.1
+got 0ef for host 126.77.64.127
+got 0f0 for host 126.77.64.254
+got 0f1 for host 126.127.0.0
+got 0f2 for host 126.127.0.1
+got 0f3 for host 126.127.0.127
+got 0f4 for host 126.127.0.254
+got 0f5 for host 126.127.15.0
+got 0f6 for host 126.127.15.1
+got 0f7 for host 126.127.15.127
+got 0f8 for host 126.127.15.254
+got 0f9 for host 126.127.191.0
+got 0fa for host 126.127.191.1
+got 0fb for host 126.127.191.127
+got 0fc for host 126.127.191.254
+got 0fd for host 126.127.64.0
+got 0fe for host 126.127.64.1
+got 0ff for host 126.127.64.127
+got 000 for host 126.127.64.254
+got 000 for host 1.1.1.1
+got 000 for host 1.1.1.2
+got 000 for host 1.1.1.128
+got 000 for host 1.1.1.255
+got 000 for host 1.1.16.1
+got 000 for host 1.1.16.2
+got 000 for host 1.1.16.128
+got 000 for host 1.1.16.255
+got 000 for host 1.1.192.1
+got 000 for host 1.1.192.2
+got 000 for host 1.1.192.128
+got 000 for host 1.1.192.255
+got 000 for host 1.1.65.1
+got 000 for host 1.1.65.2
+got 000 for host 1.1.65.128
+got 000 for host 1.1.65.255
+got 000 for host 1.202.1.1
+got 000 for host 1.202.1.2
+got 000 for host 1.202.1.128
+got 000 for host 1.202.1.255
+got 000 for host 1.202.16.1
+got 000 for host 1.202.16.2
+got 000 for host 1.202.16.128
+got 000 for host 1.202.16.255
+got 000 for host 1.202.192.1
+got 000 for host 1.202.192.2
+got 000 for host 1.202.192.128
+got 000 for host 1.202.192.255
+got 000 for host 1.202.65.1
+got 000 for host 1.202.65.2
+got 000 for host 1.202.65.128
+got 000 for host 1.202.65.255
+got 000 for host 1.78.1.1
+got 000 for host 1.78.1.2
+got 000 for host 1.78.1.128
+got 000 for host 1.78.1.255
+got 000 for host 1.78.16.1
+got 000 for host 1.78.16.2
+got 000 for host 1.78.16.128
+got 000 for host 1.78.16.255
+got 000 for host 1.78.192.1
+got 000 for host 1.78.192.2
+got 000 for host 1.78.192.128
+got 000 for host 1.78.192.255
+got 000 for host 1.78.65.1
+got 000 for host 1.78.65.2
+got 000 for host 1.78.65.128
+got 000 for host 1.78.65.255
+got 000 for host 1.128.1.1
+got 000 for host 1.128.1.2
+got 000 for host 1.128.1.128
+got 000 for host 1.128.1.255
+got 000 for host 1.128.16.1
+got 000 for host 1.128.16.2
+got 000 for host 1.128.16.128
+got 000 for host 1.128.16.255
+got 000 for host 1.128.192.1
+got 000 for host 1.128.192.2
+got 000 for host 1.128.192.128
+got 000 for host 1.128.192.255
+got 000 for host 1.128.65.1
+got 000 for host 1.128.65.2
+got 000 for host 1.128.65.128
+got 000 for host 1.128.65.255
+got 100 for host 38.1.1.1
+got 100 for host 38.1.1.2
+got 100 for host 38.1.1.128
+got 100 for host 38.1.1.255
+got 100 for host 38.1.16.1
+got 100 for host 38.1.16.2
+got 100 for host 38.1.16.128
+got 100 for host 38.1.16.255
+got 100 for host 38.1.192.1
+got 100 for host 38.1.192.2
+got 100 for host 38.1.192.128
+got 100 for host 38.1.192.255
+got 100 for host 38.1.65.1
+got 100 for host 38.1.65.2
+got 100 for host 38.1.65.128
+got 100 for host 38.1.65.255
+got 200 for host 38.202.1.1
+got 200 for host 38.202.1.2
+got 200 for host 38.202.1.128
+got 200 for host 38.202.1.255
+got 300 for host 38.202.16.1
+got 300 for host 38.202.16.2
+got 300 for host 38.202.16.128
+got 300 for host 38.202.16.255
+got 200 for host 38.202.192.1
+got 200 for host 38.202.192.2
+got 200 for host 38.202.192.128
+got 200 for host 38.202.192.255
+got 200 for host 38.202.65.1
+got 200 for host 38.202.65.2
+got 200 for host 38.202.65.128
+got 200 for host 38.202.65.255
+got 100 for host 38.78.1.1
+got 100 for host 38.78.1.2
+got 100 for host 38.78.1.128
+got 100 for host 38.78.1.255
+got 100 for host 38.78.16.1
+got 100 for host 38.78.16.2
+got 100 for host 38.78.16.128
+got 100 for host 38.78.16.255
+got 100 for host 38.78.192.1
+got 100 for host 38.78.192.2
+got 100 for host 38.78.192.128
+got 100 for host 38.78.192.255
+got 100 for host 38.78.65.1
+got 100 for host 38.78.65.2
+got 100 for host 38.78.65.128
+got 100 for host 38.78.65.255
+got 100 for host 38.128.1.1
+got 100 for host 38.128.1.2
+got 100 for host 38.128.1.128
+got 100 for host 38.128.1.255
+got 100 for host 38.128.16.1
+got 100 for host 38.128.16.2
+got 100 for host 38.128.16.128
+got 100 for host 38.128.16.255
+got 100 for host 38.128.192.1
+got 100 for host 38.128.192.2
+got 100 for host 38.128.192.128
+got 100 for host 38.128.192.255
+got 100 for host 38.128.65.1
+got 100 for host 38.128.65.2
+got 100 for host 38.128.65.128
+got 100 for host 38.128.65.255
+got 000 for host 236.1.1.1
+got 000 for host 236.1.1.2
+got 000 for host 236.1.1.128
+got 000 for host 236.1.1.255
+got 000 for host 236.1.16.1
+got 000 for host 236.1.16.2
+got 000 for host 236.1.16.128
+got 000 for host 236.1.16.255
+got 000 for host 236.1.192.1
+got 000 for host 236.1.192.2
+got 000 for host 236.1.192.128
+got 000 for host 236.1.192.255
+got 000 for host 236.1.65.1
+got 000 for host 236.1.65.2
+got 000 for host 236.1.65.128
+got 000 for host 236.1.65.255
+got 000 for host 236.202.1.1
+got 000 for host 236.202.1.2
+got 000 for host 236.202.1.128
+got 000 for host 236.202.1.255
+got 000 for host 236.202.16.1
+got 000 for host 236.202.16.2
+got 000 for host 236.202.16.128
+got 000 for host 236.202.16.255
+got 000 for host 236.202.192.1
+got 000 for host 236.202.192.2
+got 000 for host 236.202.192.128
+got 000 for host 236.202.192.255
+got 000 for host 236.202.65.1
+got 000 for host 236.202.65.2
+got 000 for host 236.202.65.128
+got 000 for host 236.202.65.255
+got 000 for host 236.78.1.1
+got 000 for host 236.78.1.2
+got 000 for host 236.78.1.128
+got 000 for host 236.78.1.255
+got 000 for host 236.78.16.1
+got 000 for host 236.78.16.2
+got 000 for host 236.78.16.128
+got 000 for host 236.78.16.255
+got 000 for host 236.78.192.1
+got 000 for host 236.78.192.2
+got 000 for host 236.78.192.128
+got 000 for host 236.78.192.255
+got 000 for host 236.78.65.1
+got 000 for host 236.78.65.2
+got 000 for host 236.78.65.128
+got 000 for host 236.78.65.255
+got 000 for host 236.128.1.1
+got 000 for host 236.128.1.2
+got 000 for host 236.128.1.128
+got 000 for host 236.128.1.255
+got 000 for host 236.128.16.1
+got 000 for host 236.128.16.2
+got 000 for host 236.128.16.128
+got 000 for host 236.128.16.255
+got 000 for host 236.128.192.1
+got 000 for host 236.128.192.2
+got 000 for host 236.128.192.128
+got 000 for host 236.128.192.255
+got 000 for host 236.128.65.1
+got 000 for host 236.128.65.2
+got 000 for host 236.128.65.128
+got 000 for host 236.128.65.255
+got 000 for host 127.1.1.1
+got 000 for host 127.1.1.2
+got 000 for host 127.1.1.128
+got 000 for host 127.1.1.255
+got 000 for host 127.1.16.1
+got 000 for host 127.1.16.2
+got 000 for host 127.1.16.128
+got 000 for host 127.1.16.255
+got 000 for host 127.1.192.1
+got 000 for host 127.1.192.2
+got 000 for host 127.1.192.128
+got 000 for host 127.1.192.255
+got 000 for host 127.1.65.1
+got 000 for host 127.1.65.2
+got 000 for host 127.1.65.128
+got 000 for host 127.1.65.255
+got 000 for host 127.202.1.1
+got 000 for host 127.202.1.2
+got 000 for host 127.202.1.128
+got 000 for host 127.202.1.255
+got 000 for host 127.202.16.1
+got 000 for host 127.202.16.2
+got 000 for host 127.202.16.128
+got 000 for host 127.202.16.255
+got 000 for host 127.202.192.1
+got 000 for host 127.202.192.2
+got 000 for host 127.202.192.128
+got 000 for host 127.202.192.255
+got 000 for host 127.202.65.1
+got 000 for host 127.202.65.2
+got 000 for host 127.202.65.128
+got 000 for host 127.202.65.255
+got 000 for host 127.78.1.1
+got 000 for host 127.78.1.2
+got 000 for host 127.78.1.128
+got 000 for host 127.78.1.255
+got 000 for host 127.78.16.1
+got 000 for host 127.78.16.2
+got 000 for host 127.78.16.128
+got 000 for host 127.78.16.255
+got 000 for host 127.78.192.1
+got 000 for host 127.78.192.2
+got 000 for host 127.78.192.128
+got 000 for host 127.78.192.255
+got 000 for host 127.78.65.1
+got 000 for host 127.78.65.2
+got 000 for host 127.78.65.128
+got 000 for host 127.78.65.255
+got 000 for host 127.128.1.1
+got 000 for host 127.128.1.2
+got 000 for host 127.128.1.128
+got 000 for host 127.128.1.255
+got 000 for host 127.128.16.1
+got 000 for host 127.128.16.2
+got 000 for host 127.128.16.128
+got 000 for host 127.128.16.255
+got 000 for host 127.128.192.1
+got 000 for host 127.128.192.2
+got 000 for host 127.128.192.128
+got 000 for host 127.128.192.255
+got 000 for host 127.128.65.1
+got 000 for host 127.128.65.2
+got 000 for host 127.128.65.128
+got 000 for host 127.128.65.255
diff --git a/qa/062.out.nonipv6 b/qa/062.out.nonipv6
new file mode 100644
index 0000000..67cc00a
--- /dev/null
+++ b/qa/062.out.nonipv6
@@ -0,0 +1,1197 @@
+QA output created by 062
+testing single op for all ops...
+may dump core for IRIX 6.1 ... bug in gethostbyname()
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n 0 0 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n 0 0 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n 0 0 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n 0 0 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n 0 0 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n 0 0 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n 0 0 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n 0 0 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n 0 0 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n 0 0 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n 0 0 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n 0 0 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n 0 0 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n 0 0 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n 0 0 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n 0 0 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n 0 0 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n 0 0 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n 0 0 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n 0 0 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n 0 0 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n 0 0 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n 0 0 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n 0 0 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n 0 0 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n 0 0 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n 0 0 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n 0 0 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n 0 0 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n 0 0 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n 0 0 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n 0 0 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n 0 0 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n 0 0 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n 0 0 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n 0 0 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n 0 0 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n 0 0 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n 0 0 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n 0 0 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n 0 0 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n 0 0 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n 0 0 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n 0 0 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n 0 0 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n 0 0 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n 0 0 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n 0 0 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n 0 0 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n 0 0 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n 0 0 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n 0 0 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n 0 0 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n 0 0 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n 0 0 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n 0 0 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n 0 0 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n 0 0 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n 0 0 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n 0 0 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n 0 0 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n 0 0 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+testing all except one op for all ops...
+may dump core for IRIX 6.1 ... bug in gethostbyname()
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 1 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 2 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 3 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 4 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 5 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 6 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 7 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 8 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 9 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 10 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 11 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 12 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 13 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 14 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 15 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 16 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 17 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 18 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 19 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 20 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 21 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 22 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 23 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 24 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 25 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 26 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 27 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 28 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 29 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 30 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 31 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 0 0 155.0.17.0 255.255.255.255 0 155.0.17.0
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 1 1 155.3.18.1 255.255.255.255 0 155.3.18.1
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 2 2 155.6.19.2 255.255.255.255 0 155.6.19.2
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 3 3 155.9.20.3 255.255.255.255 0 155.9.20.3
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 4 4 155.12.21.4 255.255.255.255 0 155.12.21.4
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 5 5 155.15.22.5 255.255.255.255 0 155.15.22.5
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 6 6 155.18.23.6 255.255.255.255 0 155.18.23.6
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 7 7 155.21.24.7 255.255.255.255 0 155.21.24.7
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 8 8 155.24.25.8 255.255.255.255 0 155.24.25.8
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 9 9 155.27.26.9 255.255.255.255 0 155.27.26.9
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 10 10 155.30.27.10 255.255.255.255 0 155.30.27.10
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 11 11 155.33.28.11 255.255.255.255 0 155.33.28.11
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 12 12 155.36.29.12 255.255.255.255 0 155.36.29.12
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 13 13 155.39.30.13 255.255.255.255 0 155.39.30.13
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 14 14 155.42.31.14 255.255.255.255 0 155.42.31.14
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 15 15 155.45.32.15 255.255.255.255 0 155.45.32.15
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 16 16 155.48.33.16 255.255.255.255 0 155.48.33.16
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 17 17 155.51.34.17 255.255.255.255 0 155.51.34.17
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 18 18 155.54.35.18 255.255.255.255 0 155.54.35.18
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 19 19 155.57.36.19 255.255.255.255 0 155.57.36.19
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 20 20 155.60.37.20 255.255.255.255 0 155.60.37.20
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 21 21 155.63.38.21 255.255.255.255 0 155.63.38.21
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 22 22 155.66.39.22 255.255.255.255 0 155.66.39.22
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 23 23 155.69.40.23 255.255.255.255 0 155.69.40.23
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 24 24 155.72.41.24 255.255.255.255 0 155.72.41.24
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 25 25 155.75.42.25 255.255.255.255 0 155.75.42.25
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 26 26 155.78.43.26 255.255.255.255 0 155.78.43.26
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 27 27 155.81.44.27 255.255.255.255 0 155.81.44.27
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 28 28 155.84.45.28 255.255.255.255 0 155.84.45.28
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 29 29 155.87.46.29 255.255.255.255 0 155.87.46.29
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 30 30 155.90.47.30 255.255.255.255 0 155.90.47.30
+ n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n 31 31 155.93.48.31 255.255.255.255 0 155.93.48.31
+
+
+testing all combinations of ops in a range...
+may dump core for IRIX 6.1 ... bug in gethostbyname()
+set 001 for host 0.0.0.0
+set 002 for host 0.0.0.1
+set 003 for host 0.0.0.127
+set 004 for host 0.0.0.254
+set 005 for host 0.0.15.0
+set 006 for host 0.0.15.1
+set 007 for host 0.0.15.127
+set 008 for host 0.0.15.254
+set 009 for host 0.0.191.0
+set 00a for host 0.0.191.1
+set 00b for host 0.0.191.127
+set 00c for host 0.0.191.254
+set 00d for host 0.0.64.0
+set 00e for host 0.0.64.1
+set 00f for host 0.0.64.127
+set 010 for host 0.0.64.254
+set 111 for host 0.201.0.0
+set 112 for host 0.201.0.1
+set 113 for host 0.201.0.127
+set 114 for host 0.201.0.254
+set 115 for host 0.201.15.0
+set 116 for host 0.201.15.1
+set 117 for host 0.201.15.127
+set 118 for host 0.201.15.254
+set 119 for host 0.201.191.0
+set 11a for host 0.201.191.1
+set 11b for host 0.201.191.127
+set 11c for host 0.201.191.254
+set 11d for host 0.201.64.0
+set 11e for host 0.201.64.1
+set 11f for host 0.201.64.127
+set 120 for host 0.201.64.254
+set 221 for host 0.77.0.0
+set 222 for host 0.77.0.1
+set 223 for host 0.77.0.127
+set 224 for host 0.77.0.254
+set 225 for host 0.77.15.0
+set 226 for host 0.77.15.1
+set 227 for host 0.77.15.127
+set 228 for host 0.77.15.254
+set 229 for host 0.77.191.0
+set 22a for host 0.77.191.1
+set 22b for host 0.77.191.127
+set 22c for host 0.77.191.254
+set 22d for host 0.77.64.0
+set 22e for host 0.77.64.1
+set 22f for host 0.77.64.127
+set 230 for host 0.77.64.254
+set 331 for host 0.127.0.0
+set 332 for host 0.127.0.1
+set 333 for host 0.127.0.127
+set 334 for host 0.127.0.254
+set 335 for host 0.127.15.0
+set 336 for host 0.127.15.1
+set 337 for host 0.127.15.127
+set 338 for host 0.127.15.254
+set 339 for host 0.127.191.0
+set 33a for host 0.127.191.1
+set 33b for host 0.127.191.127
+set 33c for host 0.127.191.254
+set 33d for host 0.127.64.0
+set 33e for host 0.127.64.1
+set 33f for host 0.127.64.127
+set 340 for host 0.127.64.254
+set 041 for host 37.0.0.0
+set 042 for host 37.0.0.1
+set 043 for host 37.0.0.127
+set 044 for host 37.0.0.254
+set 045 for host 37.0.15.0
+set 046 for host 37.0.15.1
+set 047 for host 37.0.15.127
+set 048 for host 37.0.15.254
+set 049 for host 37.0.191.0
+set 04a for host 37.0.191.1
+set 04b for host 37.0.191.127
+set 04c for host 37.0.191.254
+set 04d for host 37.0.64.0
+set 04e for host 37.0.64.1
+set 04f for host 37.0.64.127
+set 050 for host 37.0.64.254
+set 051 for host 37.201.0.0
+set 052 for host 37.201.0.1
+set 053 for host 37.201.0.127
+set 054 for host 37.201.0.254
+set 055 for host 37.201.15.0
+set 056 for host 37.201.15.1
+set 057 for host 37.201.15.127
+set 058 for host 37.201.15.254
+set 059 for host 37.201.191.0
+set 05a for host 37.201.191.1
+set 05b for host 37.201.191.127
+set 05c for host 37.201.191.254
+set 05d for host 37.201.64.0
+set 05e for host 37.201.64.1
+set 05f for host 37.201.64.127
+set 060 for host 37.201.64.254
+set 061 for host 37.77.0.0
+set 062 for host 37.77.0.1
+set 063 for host 37.77.0.127
+set 064 for host 37.77.0.254
+set 065 for host 37.77.15.0
+set 066 for host 37.77.15.1
+set 067 for host 37.77.15.127
+set 068 for host 37.77.15.254
+set 069 for host 37.77.191.0
+set 06a for host 37.77.191.1
+set 06b for host 37.77.191.127
+set 06c for host 37.77.191.254
+set 06d for host 37.77.64.0
+set 06e for host 37.77.64.1
+set 06f for host 37.77.64.127
+set 070 for host 37.77.64.254
+set 071 for host 37.127.0.0
+set 072 for host 37.127.0.1
+set 073 for host 37.127.0.127
+set 074 for host 37.127.0.254
+set 075 for host 37.127.15.0
+set 076 for host 37.127.15.1
+set 077 for host 37.127.15.127
+set 078 for host 37.127.15.254
+set 079 for host 37.127.191.0
+set 07a for host 37.127.191.1
+set 07b for host 37.127.191.127
+set 07c for host 37.127.191.254
+set 07d for host 37.127.64.0
+set 07e for host 37.127.64.1
+set 07f for host 37.127.64.127
+set 080 for host 37.127.64.254
+set 081 for host 235.0.0.0
+set 082 for host 235.0.0.1
+set 083 for host 235.0.0.127
+set 084 for host 235.0.0.254
+set 085 for host 235.0.15.0
+set 086 for host 235.0.15.1
+set 087 for host 235.0.15.127
+set 088 for host 235.0.15.254
+set 089 for host 235.0.191.0
+set 08a for host 235.0.191.1
+set 08b for host 235.0.191.127
+set 08c for host 235.0.191.254
+set 08d for host 235.0.64.0
+set 08e for host 235.0.64.1
+set 08f for host 235.0.64.127
+set 090 for host 235.0.64.254
+set 091 for host 235.201.0.0
+set 092 for host 235.201.0.1
+set 093 for host 235.201.0.127
+set 094 for host 235.201.0.254
+set 095 for host 235.201.15.0
+set 096 for host 235.201.15.1
+set 097 for host 235.201.15.127
+set 098 for host 235.201.15.254
+set 099 for host 235.201.191.0
+set 09a for host 235.201.191.1
+set 09b for host 235.201.191.127
+set 09c for host 235.201.191.254
+set 09d for host 235.201.64.0
+set 09e for host 235.201.64.1
+set 09f for host 235.201.64.127
+set 0a0 for host 235.201.64.254
+set 0a1 for host 235.77.0.0
+set 0a2 for host 235.77.0.1
+set 0a3 for host 235.77.0.127
+set 0a4 for host 235.77.0.254
+set 0a5 for host 235.77.15.0
+set 0a6 for host 235.77.15.1
+set 0a7 for host 235.77.15.127
+set 0a8 for host 235.77.15.254
+set 0a9 for host 235.77.191.0
+set 0aa for host 235.77.191.1
+set 0ab for host 235.77.191.127
+set 0ac for host 235.77.191.254
+set 0ad for host 235.77.64.0
+set 0ae for host 235.77.64.1
+set 0af for host 235.77.64.127
+set 0b0 for host 235.77.64.254
+set 0b1 for host 235.127.0.0
+set 0b2 for host 235.127.0.1
+set 0b3 for host 235.127.0.127
+set 0b4 for host 235.127.0.254
+set 0b5 for host 235.127.15.0
+set 0b6 for host 235.127.15.1
+set 0b7 for host 235.127.15.127
+set 0b8 for host 235.127.15.254
+set 0b9 for host 235.127.191.0
+set 0ba for host 235.127.191.1
+set 0bb for host 235.127.191.127
+set 0bc for host 235.127.191.254
+set 0bd for host 235.127.64.0
+set 0be for host 235.127.64.1
+set 0bf for host 235.127.64.127
+set 0c0 for host 235.127.64.254
+set 0c1 for host 126.0.0.0
+set 0c2 for host 126.0.0.1
+set 0c3 for host 126.0.0.127
+set 0c4 for host 126.0.0.254
+set 0c5 for host 126.0.15.0
+set 0c6 for host 126.0.15.1
+set 0c7 for host 126.0.15.127
+set 0c8 for host 126.0.15.254
+set 0c9 for host 126.0.191.0
+set 0ca for host 126.0.191.1
+set 0cb for host 126.0.191.127
+set 0cc for host 126.0.191.254
+set 0cd for host 126.0.64.0
+set 0ce for host 126.0.64.1
+set 0cf for host 126.0.64.127
+set 0d0 for host 126.0.64.254
+set 0d1 for host 126.201.0.0
+set 0d2 for host 126.201.0.1
+set 0d3 for host 126.201.0.127
+set 0d4 for host 126.201.0.254
+set 0d5 for host 126.201.15.0
+set 0d6 for host 126.201.15.1
+set 0d7 for host 126.201.15.127
+set 0d8 for host 126.201.15.254
+set 0d9 for host 126.201.191.0
+set 0da for host 126.201.191.1
+set 0db for host 126.201.191.127
+set 0dc for host 126.201.191.254
+set 0dd for host 126.201.64.0
+set 0de for host 126.201.64.1
+set 0df for host 126.201.64.127
+set 0e0 for host 126.201.64.254
+set 0e1 for host 126.77.0.0
+set 0e2 for host 126.77.0.1
+set 0e3 for host 126.77.0.127
+set 0e4 for host 126.77.0.254
+set 0e5 for host 126.77.15.0
+set 0e6 for host 126.77.15.1
+set 0e7 for host 126.77.15.127
+set 0e8 for host 126.77.15.254
+set 0e9 for host 126.77.191.0
+set 0ea for host 126.77.191.1
+set 0eb for host 126.77.191.127
+set 0ec for host 126.77.191.254
+set 0ed for host 126.77.64.0
+set 0ee for host 126.77.64.1
+set 0ef for host 126.77.64.127
+set 0f0 for host 126.77.64.254
+set 0f1 for host 126.127.0.0
+set 0f2 for host 126.127.0.1
+set 0f3 for host 126.127.0.127
+set 0f4 for host 126.127.0.254
+set 0f5 for host 126.127.15.0
+set 0f6 for host 126.127.15.1
+set 0f7 for host 126.127.15.127
+set 0f8 for host 126.127.15.254
+set 0f9 for host 126.127.191.0
+set 0fa for host 126.127.191.1
+set 0fb for host 126.127.191.127
+set 0fc for host 126.127.191.254
+set 0fd for host 126.127.64.0
+set 0fe for host 126.127.64.1
+set 0ff for host 126.127.64.127
+expect error, perm=256 (>255):
+set 400 for host 126.127.64.254
+
+
+Host access list:
+00 01 02 03 04 05 06 07 08 09 Cur/MaxCons host-spec host-mask lvl host-name
+== == == == == == == == == == =========== ======================================= ======================================= === ==============
+ n y y y y y y y y y 0 0 0.0.0.0 255.255.255.255 0 0.0.0.0
+ y n y y y y y y y y 0 0 0.0.0.1 255.255.255.255 0 0.0.0.1
+ n n y y y y y y y y 0 0 0.0.0.127 255.255.255.255 0 0.0.0.127
+ y y n y y y y y y y 0 0 0.0.0.254 255.255.255.255 0 0.0.0.254
+ n y n y y y y y y y 0 0 0.0.15.0 255.255.255.255 0 0.0.15.0
+ y n n y y y y y y y 0 0 0.0.15.1 255.255.255.255 0 0.0.15.1
+ n n n y y y y y y y 0 0 0.0.15.127 255.255.255.255 0 0.0.15.127
+ y y y n y y y y y y 0 0 0.0.15.254 255.255.255.255 0 0.0.15.254
+ n y y n y y y y y y 0 0 0.0.191.0 255.255.255.255 0 0.0.191.0
+ y n y n y y y y y y 0 0 0.0.191.1 255.255.255.255 0 0.0.191.1
+ n n y n y y y y y y 0 0 0.0.191.127 255.255.255.255 0 0.0.191.127
+ y y n n y y y y y y 0 0 0.0.191.254 255.255.255.255 0 0.0.191.254
+ n y n n y y y y y y 0 0 0.0.64.0 255.255.255.255 0 0.0.64.0
+ y n n n y y y y y y 0 0 0.0.64.1 255.255.255.255 0 0.0.64.1
+ n n n n y y y y y y 0 0 0.0.64.127 255.255.255.255 0 0.0.64.127
+ y y y y n y y y y y 0 0 0.0.64.254 255.255.255.255 0 0.0.64.254
+ n y y y n y y y n y 0 0 0.201.0.0 255.255.255.255 0 0.201.0.0
+ y n y y n y y y n y 0 0 0.201.0.1 255.255.255.255 0 0.201.0.1
+ n n y y n y y y n y 0 0 0.201.0.127 255.255.255.255 0 0.201.0.127
+ y y n y n y y y n y 0 0 0.201.0.254 255.255.255.255 0 0.201.0.254
+ n y n y n y y y n y 0 0 0.201.15.0 255.255.255.255 0 0.201.15.0
+ y n n y n y y y n y 0 0 0.201.15.1 255.255.255.255 0 0.201.15.1
+ n n n y n y y y n y 0 0 0.201.15.127 255.255.255.255 0 0.201.15.127
+ y y y n n y y y n y 0 0 0.201.15.254 255.255.255.255 0 0.201.15.254
+ n y y n n y y y n y 0 0 0.201.191.0 255.255.255.255 0 0.201.191.0
+ y n y n n y y y n y 0 0 0.201.191.1 255.255.255.255 0 0.201.191.1
+ n n y n n y y y n y 0 0 0.201.191.127 255.255.255.255 0 0.201.191.127
+ y y n n n y y y n y 0 0 0.201.191.254 255.255.255.255 0 0.201.191.254
+ n y n n n y y y n y 0 0 0.201.64.0 255.255.255.255 0 0.201.64.0
+ y n n n n y y y n y 0 0 0.201.64.1 255.255.255.255 0 0.201.64.1
+ n n n n n y y y n y 0 0 0.201.64.127 255.255.255.255 0 0.201.64.127
+ y y y y y n y y n y 0 0 0.201.64.254 255.255.255.255 0 0.201.64.254
+ n y y y y n y y y n 0 0 0.77.0.0 255.255.255.255 0 0.77.0.0
+ y n y y y n y y y n 0 0 0.77.0.1 255.255.255.255 0 0.77.0.1
+ n n y y y n y y y n 0 0 0.77.0.127 255.255.255.255 0 0.77.0.127
+ y y n y y n y y y n 0 0 0.77.0.254 255.255.255.255 0 0.77.0.254
+ n y n y y n y y y n 0 0 0.77.15.0 255.255.255.255 0 0.77.15.0
+ y n n y y n y y y n 0 0 0.77.15.1 255.255.255.255 0 0.77.15.1
+ n n n y y n y y y n 0 0 0.77.15.127 255.255.255.255 0 0.77.15.127
+ y y y n y n y y y n 0 0 0.77.15.254 255.255.255.255 0 0.77.15.254
+ n y y n y n y y y n 0 0 0.77.191.0 255.255.255.255 0 0.77.191.0
+ y n y n y n y y y n 0 0 0.77.191.1 255.255.255.255 0 0.77.191.1
+ n n y n y n y y y n 0 0 0.77.191.127 255.255.255.255 0 0.77.191.127
+ y y n n y n y y y n 0 0 0.77.191.254 255.255.255.255 0 0.77.191.254
+ n y n n y n y y y n 0 0 0.77.64.0 255.255.255.255 0 0.77.64.0
+ y n n n y n y y y n 0 0 0.77.64.1 255.255.255.255 0 0.77.64.1
+ n n n n y n y y y n 0 0 0.77.64.127 255.255.255.255 0 0.77.64.127
+ y y y y n n y y y n 0 0 0.77.64.254 255.255.255.255 0 0.77.64.254
+ n y y y n n y y n n 0 0 0.127.0.0 255.255.255.255 0 0.127.0.0
+ y n y y n n y y n n 0 0 0.127.0.1 255.255.255.255 0 0.127.0.1
+ n n y y n n y y n n 0 0 0.127.0.127 255.255.255.255 0 0.127.0.127
+ y y n y n n y y n n 0 0 0.127.0.254 255.255.255.255 0 0.127.0.254
+ n y n y n n y y n n 0 0 0.127.15.0 255.255.255.255 0 0.127.15.0
+ y n n y n n y y n n 0 0 0.127.15.1 255.255.255.255 0 0.127.15.1
+ n n n y n n y y n n 0 0 0.127.15.127 255.255.255.255 0 0.127.15.127
+ y y y n n n y y n n 0 0 0.127.15.254 255.255.255.255 0 0.127.15.254
+ n y y n n n y y n n 0 0 0.127.191.0 255.255.255.255 0 0.127.191.0
+ y n y n n n y y n n 0 0 0.127.191.1 255.255.255.255 0 0.127.191.1
+ n n y n n n y y n n 0 0 0.127.191.127 255.255.255.255 0 0.127.191.127
+ y y n n n n y y n n 0 0 0.127.191.254 255.255.255.255 0 0.127.191.254
+ n y n n n n y y n n 0 0 0.127.64.0 255.255.255.255 0 0.127.64.0
+ y n n n n n y y n n 0 0 0.127.64.1 255.255.255.255 0 0.127.64.1
+ n n n n n n y y n n 0 0 0.127.64.127 255.255.255.255 0 0.127.64.127
+ y y y y y y n y n n 0 0 0.127.64.254 255.255.255.255 0 0.127.64.254
+ n y y y y y n y 0 0 37.0.0.0 255.255.255.255 0 37.0.0.0
+ y n y y y y n y 0 0 37.0.0.1 255.255.255.255 0 37.0.0.1
+ n n y y y y n y 0 0 37.0.0.127 255.255.255.255 0 37.0.0.127
+ y y n y y y n y 0 0 37.0.0.254 255.255.255.255 0 37.0.0.254
+ n y n y y y n y 0 0 37.0.15.0 255.255.255.255 0 37.0.15.0
+ y n n y y y n y 0 0 37.0.15.1 255.255.255.255 0 37.0.15.1
+ n n n y y y n y 0 0 37.0.15.127 255.255.255.255 0 37.0.15.127
+ y y y n y y n y 0 0 37.0.15.254 255.255.255.255 0 37.0.15.254
+ n y y n y y n y 0 0 37.0.191.0 255.255.255.255 0 37.0.191.0
+ y n y n y y n y 0 0 37.0.191.1 255.255.255.255 0 37.0.191.1
+ n n y n y y n y 0 0 37.0.191.127 255.255.255.255 0 37.0.191.127
+ y y n n y y n y 0 0 37.0.191.254 255.255.255.255 0 37.0.191.254
+ n y n n y y n y 0 0 37.0.64.0 255.255.255.255 0 37.0.64.0
+ y n n n y y n y 0 0 37.0.64.1 255.255.255.255 0 37.0.64.1
+ n n n n y y n y 0 0 37.0.64.127 255.255.255.255 0 37.0.64.127
+ y y y y n y n y 0 0 37.0.64.254 255.255.255.255 0 37.0.64.254
+ n y y y n y n y 0 0 37.201.0.0 255.255.255.255 0 37.201.0.0
+ y n y y n y n y 0 0 37.201.0.1 255.255.255.255 0 37.201.0.1
+ n n y y n y n y 0 0 37.201.0.127 255.255.255.255 0 37.201.0.127
+ y y n y n y n y 0 0 37.201.0.254 255.255.255.255 0 37.201.0.254
+ n y n y n y n y 0 0 37.201.15.0 255.255.255.255 0 37.201.15.0
+ y n n y n y n y 0 0 37.201.15.1 255.255.255.255 0 37.201.15.1
+ n n n y n y n y 0 0 37.201.15.127 255.255.255.255 0 37.201.15.127
+ y y y n n y n y 0 0 37.201.15.254 255.255.255.255 0 37.201.15.254
+ n y y n n y n y 0 0 37.201.191.0 255.255.255.255 0 37.201.191.0
+ y n y n n y n y 0 0 37.201.191.1 255.255.255.255 0 37.201.191.1
+ n n y n n y n y 0 0 37.201.191.127 255.255.255.255 0 37.201.191.127
+ y y n n n y n y 0 0 37.201.191.254 255.255.255.255 0 37.201.191.254
+ n y n n n y n y 0 0 37.201.64.0 255.255.255.255 0 37.201.64.0
+ y n n n n y n y 0 0 37.201.64.1 255.255.255.255 0 37.201.64.1
+ n n n n n y n y 0 0 37.201.64.127 255.255.255.255 0 37.201.64.127
+ y y y y y n n y 0 0 37.201.64.254 255.255.255.255 0 37.201.64.254
+ n y y y y n n y 0 0 37.77.0.0 255.255.255.255 0 37.77.0.0
+ y n y y y n n y 0 0 37.77.0.1 255.255.255.255 0 37.77.0.1
+ n n y y y n n y 0 0 37.77.0.127 255.255.255.255 0 37.77.0.127
+ y y n y y n n y 0 0 37.77.0.254 255.255.255.255 0 37.77.0.254
+ n y n y y n n y 0 0 37.77.15.0 255.255.255.255 0 37.77.15.0
+ y n n y y n n y 0 0 37.77.15.1 255.255.255.255 0 37.77.15.1
+ n n n y y n n y 0 0 37.77.15.127 255.255.255.255 0 37.77.15.127
+ y y y n y n n y 0 0 37.77.15.254 255.255.255.255 0 37.77.15.254
+ n y y n y n n y 0 0 37.77.191.0 255.255.255.255 0 37.77.191.0
+ y n y n y n n y 0 0 37.77.191.1 255.255.255.255 0 37.77.191.1
+ n n y n y n n y 0 0 37.77.191.127 255.255.255.255 0 37.77.191.127
+ y y n n y n n y 0 0 37.77.191.254 255.255.255.255 0 37.77.191.254
+ n y n n y n n y 0 0 37.77.64.0 255.255.255.255 0 37.77.64.0
+ y n n n y n n y 0 0 37.77.64.1 255.255.255.255 0 37.77.64.1
+ n n n n y n n y 0 0 37.77.64.127 255.255.255.255 0 37.77.64.127
+ y y y y n n n y 0 0 37.77.64.254 255.255.255.255 0 37.77.64.254
+ n y y y n n n y 0 0 37.127.0.0 255.255.255.255 0 37.127.0.0
+ y n y y n n n y 0 0 37.127.0.1 255.255.255.255 0 37.127.0.1
+ n n y y n n n y 0 0 37.127.0.127 255.255.255.255 0 37.127.0.127
+ y y n y n n n y 0 0 37.127.0.254 255.255.255.255 0 37.127.0.254
+ n y n y n n n y 0 0 37.127.15.0 255.255.255.255 0 37.127.15.0
+ y n n y n n n y 0 0 37.127.15.1 255.255.255.255 0 37.127.15.1
+ n n n y n n n y 0 0 37.127.15.127 255.255.255.255 0 37.127.15.127
+ y y y n n n n y 0 0 37.127.15.254 255.255.255.255 0 37.127.15.254
+ n y y n n n n y 0 0 37.127.191.0 255.255.255.255 0 37.127.191.0
+ y n y n n n n y 0 0 37.127.191.1 255.255.255.255 0 37.127.191.1
+ n n y n n n n y 0 0 37.127.191.127 255.255.255.255 0 37.127.191.127
+ y y n n n n n y 0 0 37.127.191.254 255.255.255.255 0 37.127.191.254
+ n y n n n n n y 0 0 37.127.64.0 255.255.255.255 0 37.127.64.0
+ y n n n n n n y 0 0 37.127.64.1 255.255.255.255 0 37.127.64.1
+ n n n n n n n y 0 0 37.127.64.127 255.255.255.255 0 37.127.64.127
+ y y y y y y y n 0 0 37.127.64.254 255.255.255.255 0 37.127.64.254
+ n y y y y y y n 0 0 235.0.0.0 255.255.255.255 0 235.0.0.0
+ y n y y y y y n 0 0 235.0.0.1 255.255.255.255 0 235.0.0.1
+ n n y y y y y n 0 0 235.0.0.127 255.255.255.255 0 235.0.0.127
+ y y n y y y y n 0 0 235.0.0.254 255.255.255.255 0 235.0.0.254
+ n y n y y y y n 0 0 235.0.15.0 255.255.255.255 0 235.0.15.0
+ y n n y y y y n 0 0 235.0.15.1 255.255.255.255 0 235.0.15.1
+ n n n y y y y n 0 0 235.0.15.127 255.255.255.255 0 235.0.15.127
+ y y y n y y y n 0 0 235.0.15.254 255.255.255.255 0 235.0.15.254
+ n y y n y y y n 0 0 235.0.191.0 255.255.255.255 0 235.0.191.0
+ y n y n y y y n 0 0 235.0.191.1 255.255.255.255 0 235.0.191.1
+ n n y n y y y n 0 0 235.0.191.127 255.255.255.255 0 235.0.191.127
+ y y n n y y y n 0 0 235.0.191.254 255.255.255.255 0 235.0.191.254
+ n y n n y y y n 0 0 235.0.64.0 255.255.255.255 0 235.0.64.0
+ y n n n y y y n 0 0 235.0.64.1 255.255.255.255 0 235.0.64.1
+ n n n n y y y n 0 0 235.0.64.127 255.255.255.255 0 235.0.64.127
+ y y y y n y y n 0 0 235.0.64.254 255.255.255.255 0 235.0.64.254
+ n y y y n y y n 0 0 235.201.0.0 255.255.255.255 0 235.201.0.0
+ y n y y n y y n 0 0 235.201.0.1 255.255.255.255 0 235.201.0.1
+ n n y y n y y n 0 0 235.201.0.127 255.255.255.255 0 235.201.0.127
+ y y n y n y y n 0 0 235.201.0.254 255.255.255.255 0 235.201.0.254
+ n y n y n y y n 0 0 235.201.15.0 255.255.255.255 0 235.201.15.0
+ y n n y n y y n 0 0 235.201.15.1 255.255.255.255 0 235.201.15.1
+ n n n y n y y n 0 0 235.201.15.127 255.255.255.255 0 235.201.15.127
+ y y y n n y y n 0 0 235.201.15.254 255.255.255.255 0 235.201.15.254
+ n y y n n y y n 0 0 235.201.191.0 255.255.255.255 0 235.201.191.0
+ y n y n n y y n 0 0 235.201.191.1 255.255.255.255 0 235.201.191.1
+ n n y n n y y n 0 0 235.201.191.127 255.255.255.255 0 235.201.191.127
+ y y n n n y y n 0 0 235.201.191.254 255.255.255.255 0 235.201.191.254
+ n y n n n y y n 0 0 235.201.64.0 255.255.255.255 0 235.201.64.0
+ y n n n n y y n 0 0 235.201.64.1 255.255.255.255 0 235.201.64.1
+ n n n n n y y n 0 0 235.201.64.127 255.255.255.255 0 235.201.64.127
+ y y y y y n y n 0 0 235.201.64.254 255.255.255.255 0 235.201.64.254
+ n y y y y n y n 0 0 235.77.0.0 255.255.255.255 0 235.77.0.0
+ y n y y y n y n 0 0 235.77.0.1 255.255.255.255 0 235.77.0.1
+ n n y y y n y n 0 0 235.77.0.127 255.255.255.255 0 235.77.0.127
+ y y n y y n y n 0 0 235.77.0.254 255.255.255.255 0 235.77.0.254
+ n y n y y n y n 0 0 235.77.15.0 255.255.255.255 0 235.77.15.0
+ y n n y y n y n 0 0 235.77.15.1 255.255.255.255 0 235.77.15.1
+ n n n y y n y n 0 0 235.77.15.127 255.255.255.255 0 235.77.15.127
+ y y y n y n y n 0 0 235.77.15.254 255.255.255.255 0 235.77.15.254
+ n y y n y n y n 0 0 235.77.191.0 255.255.255.255 0 235.77.191.0
+ y n y n y n y n 0 0 235.77.191.1 255.255.255.255 0 235.77.191.1
+ n n y n y n y n 0 0 235.77.191.127 255.255.255.255 0 235.77.191.127
+ y y n n y n y n 0 0 235.77.191.254 255.255.255.255 0 235.77.191.254
+ n y n n y n y n 0 0 235.77.64.0 255.255.255.255 0 235.77.64.0
+ y n n n y n y n 0 0 235.77.64.1 255.255.255.255 0 235.77.64.1
+ n n n n y n y n 0 0 235.77.64.127 255.255.255.255 0 235.77.64.127
+ y y y y n n y n 0 0 235.77.64.254 255.255.255.255 0 235.77.64.254
+ n y y y n n y n 0 0 235.127.0.0 255.255.255.255 0 235.127.0.0
+ y n y y n n y n 0 0 235.127.0.1 255.255.255.255 0 235.127.0.1
+ n n y y n n y n 0 0 235.127.0.127 255.255.255.255 0 235.127.0.127
+ y y n y n n y n 0 0 235.127.0.254 255.255.255.255 0 235.127.0.254
+ n y n y n n y n 0 0 235.127.15.0 255.255.255.255 0 235.127.15.0
+ y n n y n n y n 0 0 235.127.15.1 255.255.255.255 0 235.127.15.1
+ n n n y n n y n 0 0 235.127.15.127 255.255.255.255 0 235.127.15.127
+ y y y n n n y n 0 0 235.127.15.254 255.255.255.255 0 235.127.15.254
+ n y y n n n y n 0 0 235.127.191.0 255.255.255.255 0 235.127.191.0
+ y n y n n n y n 0 0 235.127.191.1 255.255.255.255 0 235.127.191.1
+ n n y n n n y n 0 0 235.127.191.127 255.255.255.255 0 235.127.191.127
+ y y n n n n y n 0 0 235.127.191.254 255.255.255.255 0 235.127.191.254
+ n y n n n n y n 0 0 235.127.64.0 255.255.255.255 0 235.127.64.0
+ y n n n n n y n 0 0 235.127.64.1 255.255.255.255 0 235.127.64.1
+ n n n n n n y n 0 0 235.127.64.127 255.255.255.255 0 235.127.64.127
+ y y y y y y n n 0 0 235.127.64.254 255.255.255.255 0 235.127.64.254
+ n y y y y y n n 0 0 126.0.0.0 255.255.255.255 0 126.0.0.0
+ y n y y y y n n 0 0 126.0.0.1 255.255.255.255 0 126.0.0.1
+ n n y y y y n n 0 0 126.0.0.127 255.255.255.255 0 126.0.0.127
+ y y n y y y n n 0 0 126.0.0.254 255.255.255.255 0 126.0.0.254
+ n y n y y y n n 0 0 126.0.15.0 255.255.255.255 0 126.0.15.0
+ y n n y y y n n 0 0 126.0.15.1 255.255.255.255 0 126.0.15.1
+ n n n y y y n n 0 0 126.0.15.127 255.255.255.255 0 126.0.15.127
+ y y y n y y n n 0 0 126.0.15.254 255.255.255.255 0 126.0.15.254
+ n y y n y y n n 0 0 126.0.191.0 255.255.255.255 0 126.0.191.0
+ y n y n y y n n 0 0 126.0.191.1 255.255.255.255 0 126.0.191.1
+ n n y n y y n n 0 0 126.0.191.127 255.255.255.255 0 126.0.191.127
+ y y n n y y n n 0 0 126.0.191.254 255.255.255.255 0 126.0.191.254
+ n y n n y y n n 0 0 126.0.64.0 255.255.255.255 0 126.0.64.0
+ y n n n y y n n 0 0 126.0.64.1 255.255.255.255 0 126.0.64.1
+ n n n n y y n n 0 0 126.0.64.127 255.255.255.255 0 126.0.64.127
+ y y y y n y n n 0 0 126.0.64.254 255.255.255.255 0 126.0.64.254
+ n y y y n y n n 0 0 126.201.0.0 255.255.255.255 0 126.201.0.0
+ y n y y n y n n 0 0 126.201.0.1 255.255.255.255 0 126.201.0.1
+ n n y y n y n n 0 0 126.201.0.127 255.255.255.255 0 126.201.0.127
+ y y n y n y n n 0 0 126.201.0.254 255.255.255.255 0 126.201.0.254
+ n y n y n y n n 0 0 126.201.15.0 255.255.255.255 0 126.201.15.0
+ y n n y n y n n 0 0 126.201.15.1 255.255.255.255 0 126.201.15.1
+ n n n y n y n n 0 0 126.201.15.127 255.255.255.255 0 126.201.15.127
+ y y y n n y n n 0 0 126.201.15.254 255.255.255.255 0 126.201.15.254
+ n y y n n y n n 0 0 126.201.191.0 255.255.255.255 0 126.201.191.0
+ y n y n n y n n 0 0 126.201.191.1 255.255.255.255 0 126.201.191.1
+ n n y n n y n n 0 0 126.201.191.127 255.255.255.255 0 126.201.191.127
+ y y n n n y n n 0 0 126.201.191.254 255.255.255.255 0 126.201.191.254
+ n y n n n y n n 0 0 126.201.64.0 255.255.255.255 0 126.201.64.0
+ y n n n n y n n 0 0 126.201.64.1 255.255.255.255 0 126.201.64.1
+ n n n n n y n n 0 0 126.201.64.127 255.255.255.255 0 126.201.64.127
+ y y y y y n n n 0 0 126.201.64.254 255.255.255.255 0 126.201.64.254
+ n y y y y n n n 0 0 126.77.0.0 255.255.255.255 0 126.77.0.0
+ y n y y y n n n 0 0 126.77.0.1 255.255.255.255 0 126.77.0.1
+ n n y y y n n n 0 0 126.77.0.127 255.255.255.255 0 126.77.0.127
+ y y n y y n n n 0 0 126.77.0.254 255.255.255.255 0 126.77.0.254
+ n y n y y n n n 0 0 126.77.15.0 255.255.255.255 0 126.77.15.0
+ y n n y y n n n 0 0 126.77.15.1 255.255.255.255 0 126.77.15.1
+ n n n y y n n n 0 0 126.77.15.127 255.255.255.255 0 126.77.15.127
+ y y y n y n n n 0 0 126.77.15.254 255.255.255.255 0 126.77.15.254
+ n y y n y n n n 0 0 126.77.191.0 255.255.255.255 0 126.77.191.0
+ y n y n y n n n 0 0 126.77.191.1 255.255.255.255 0 126.77.191.1
+ n n y n y n n n 0 0 126.77.191.127 255.255.255.255 0 126.77.191.127
+ y y n n y n n n 0 0 126.77.191.254 255.255.255.255 0 126.77.191.254
+ n y n n y n n n 0 0 126.77.64.0 255.255.255.255 0 126.77.64.0
+ y n n n y n n n 0 0 126.77.64.1 255.255.255.255 0 126.77.64.1
+ n n n n y n n n 0 0 126.77.64.127 255.255.255.255 0 126.77.64.127
+ y y y y n n n n 0 0 126.77.64.254 255.255.255.255 0 126.77.64.254
+ n y y y n n n n 0 0 126.127.0.0 255.255.255.255 0 126.127.0.0
+ y n y y n n n n 0 0 126.127.0.1 255.255.255.255 0 126.127.0.1
+ n n y y n n n n 0 0 126.127.0.127 255.255.255.255 0 126.127.0.127
+ y y n y n n n n 0 0 126.127.0.254 255.255.255.255 0 126.127.0.254
+ n y n y n n n n 0 0 126.127.15.0 255.255.255.255 0 126.127.15.0
+ y n n y n n n n 0 0 126.127.15.1 255.255.255.255 0 126.127.15.1
+ n n n y n n n n 0 0 126.127.15.127 255.255.255.255 0 126.127.15.127
+ y y y n n n n n 0 0 126.127.15.254 255.255.255.255 0 126.127.15.254
+ n y y n n n n n 0 0 126.127.191.0 255.255.255.255 0 126.127.191.0
+ y n y n n n n n 0 0 126.127.191.1 255.255.255.255 0 126.127.191.1
+ n n y n n n n n 0 0 126.127.191.127 255.255.255.255 0 126.127.191.127
+ y y n n n n n n 0 0 126.127.191.254 255.255.255.255 0 126.127.191.254
+ n y n n n n n n 0 0 126.127.64.0 255.255.255.255 0 126.127.64.0
+ y n n n n n n n 0 0 126.127.64.1 255.255.255.255 0 126.127.64.1
+ n n n n n n n n 0 0 126.127.64.127 255.255.255.255 0 126.127.64.127
+ y y y y y y y y 0 0 126.127.64.254 255.255.255.255 0 126.127.64.254
+ n n 0 0 38.202.16.0 255.255.255.0 1 38.202.16.*
+ y n 0 0 38.202.0.0 255.255.0.0 2 38.202.*
+ n y 0 0 38.0.0.0 255.0.0.0 3 38.*
+ y y 0 0 0.0.0.0 0.0.0.0 4 .*
+
+
+got 001 for host 0.0.0.0
+got 002 for host 0.0.0.1
+got 003 for host 0.0.0.127
+got 004 for host 0.0.0.254
+got 005 for host 0.0.15.0
+got 006 for host 0.0.15.1
+got 007 for host 0.0.15.127
+got 008 for host 0.0.15.254
+got 009 for host 0.0.191.0
+got 00a for host 0.0.191.1
+got 00b for host 0.0.191.127
+got 00c for host 0.0.191.254
+got 00d for host 0.0.64.0
+got 00e for host 0.0.64.1
+got 00f for host 0.0.64.127
+got 010 for host 0.0.64.254
+got 111 for host 0.201.0.0
+got 112 for host 0.201.0.1
+got 113 for host 0.201.0.127
+got 114 for host 0.201.0.254
+got 115 for host 0.201.15.0
+got 116 for host 0.201.15.1
+got 117 for host 0.201.15.127
+got 118 for host 0.201.15.254
+got 119 for host 0.201.191.0
+got 11a for host 0.201.191.1
+got 11b for host 0.201.191.127
+got 11c for host 0.201.191.254
+got 11d for host 0.201.64.0
+got 11e for host 0.201.64.1
+got 11f for host 0.201.64.127
+got 120 for host 0.201.64.254
+got 221 for host 0.77.0.0
+got 222 for host 0.77.0.1
+got 223 for host 0.77.0.127
+got 224 for host 0.77.0.254
+got 225 for host 0.77.15.0
+got 226 for host 0.77.15.1
+got 227 for host 0.77.15.127
+got 228 for host 0.77.15.254
+got 229 for host 0.77.191.0
+got 22a for host 0.77.191.1
+got 22b for host 0.77.191.127
+got 22c for host 0.77.191.254
+got 22d for host 0.77.64.0
+got 22e for host 0.77.64.1
+got 22f for host 0.77.64.127
+got 230 for host 0.77.64.254
+got 331 for host 0.127.0.0
+got 332 for host 0.127.0.1
+got 333 for host 0.127.0.127
+got 334 for host 0.127.0.254
+got 335 for host 0.127.15.0
+got 336 for host 0.127.15.1
+got 337 for host 0.127.15.127
+got 338 for host 0.127.15.254
+got 339 for host 0.127.191.0
+got 33a for host 0.127.191.1
+got 33b for host 0.127.191.127
+got 33c for host 0.127.191.254
+got 33d for host 0.127.64.0
+got 33e for host 0.127.64.1
+got 33f for host 0.127.64.127
+got 340 for host 0.127.64.254
+got 041 for host 37.0.0.0
+got 042 for host 37.0.0.1
+got 043 for host 37.0.0.127
+got 044 for host 37.0.0.254
+got 045 for host 37.0.15.0
+got 046 for host 37.0.15.1
+got 047 for host 37.0.15.127
+got 048 for host 37.0.15.254
+got 049 for host 37.0.191.0
+got 04a for host 37.0.191.1
+got 04b for host 37.0.191.127
+got 04c for host 37.0.191.254
+got 04d for host 37.0.64.0
+got 04e for host 37.0.64.1
+got 04f for host 37.0.64.127
+got 050 for host 37.0.64.254
+got 051 for host 37.201.0.0
+got 052 for host 37.201.0.1
+got 053 for host 37.201.0.127
+got 054 for host 37.201.0.254
+got 055 for host 37.201.15.0
+got 056 for host 37.201.15.1
+got 057 for host 37.201.15.127
+got 058 for host 37.201.15.254
+got 059 for host 37.201.191.0
+got 05a for host 37.201.191.1
+got 05b for host 37.201.191.127
+got 05c for host 37.201.191.254
+got 05d for host 37.201.64.0
+got 05e for host 37.201.64.1
+got 05f for host 37.201.64.127
+got 060 for host 37.201.64.254
+got 061 for host 37.77.0.0
+got 062 for host 37.77.0.1
+got 063 for host 37.77.0.127
+got 064 for host 37.77.0.254
+got 065 for host 37.77.15.0
+got 066 for host 37.77.15.1
+got 067 for host 37.77.15.127
+got 068 for host 37.77.15.254
+got 069 for host 37.77.191.0
+got 06a for host 37.77.191.1
+got 06b for host 37.77.191.127
+got 06c for host 37.77.191.254
+got 06d for host 37.77.64.0
+got 06e for host 37.77.64.1
+got 06f for host 37.77.64.127
+got 070 for host 37.77.64.254
+got 071 for host 37.127.0.0
+got 072 for host 37.127.0.1
+got 073 for host 37.127.0.127
+got 074 for host 37.127.0.254
+got 075 for host 37.127.15.0
+got 076 for host 37.127.15.1
+got 077 for host 37.127.15.127
+got 078 for host 37.127.15.254
+got 079 for host 37.127.191.0
+got 07a for host 37.127.191.1
+got 07b for host 37.127.191.127
+got 07c for host 37.127.191.254
+got 07d for host 37.127.64.0
+got 07e for host 37.127.64.1
+got 07f for host 37.127.64.127
+got 080 for host 37.127.64.254
+got 081 for host 235.0.0.0
+got 082 for host 235.0.0.1
+got 083 for host 235.0.0.127
+got 084 for host 235.0.0.254
+got 085 for host 235.0.15.0
+got 086 for host 235.0.15.1
+got 087 for host 235.0.15.127
+got 088 for host 235.0.15.254
+got 089 for host 235.0.191.0
+got 08a for host 235.0.191.1
+got 08b for host 235.0.191.127
+got 08c for host 235.0.191.254
+got 08d for host 235.0.64.0
+got 08e for host 235.0.64.1
+got 08f for host 235.0.64.127
+got 090 for host 235.0.64.254
+got 091 for host 235.201.0.0
+got 092 for host 235.201.0.1
+got 093 for host 235.201.0.127
+got 094 for host 235.201.0.254
+got 095 for host 235.201.15.0
+got 096 for host 235.201.15.1
+got 097 for host 235.201.15.127
+got 098 for host 235.201.15.254
+got 099 for host 235.201.191.0
+got 09a for host 235.201.191.1
+got 09b for host 235.201.191.127
+got 09c for host 235.201.191.254
+got 09d for host 235.201.64.0
+got 09e for host 235.201.64.1
+got 09f for host 235.201.64.127
+got 0a0 for host 235.201.64.254
+got 0a1 for host 235.77.0.0
+got 0a2 for host 235.77.0.1
+got 0a3 for host 235.77.0.127
+got 0a4 for host 235.77.0.254
+got 0a5 for host 235.77.15.0
+got 0a6 for host 235.77.15.1
+got 0a7 for host 235.77.15.127
+got 0a8 for host 235.77.15.254
+got 0a9 for host 235.77.191.0
+got 0aa for host 235.77.191.1
+got 0ab for host 235.77.191.127
+got 0ac for host 235.77.191.254
+got 0ad for host 235.77.64.0
+got 0ae for host 235.77.64.1
+got 0af for host 235.77.64.127
+got 0b0 for host 235.77.64.254
+got 0b1 for host 235.127.0.0
+got 0b2 for host 235.127.0.1
+got 0b3 for host 235.127.0.127
+got 0b4 for host 235.127.0.254
+got 0b5 for host 235.127.15.0
+got 0b6 for host 235.127.15.1
+got 0b7 for host 235.127.15.127
+got 0b8 for host 235.127.15.254
+got 0b9 for host 235.127.191.0
+got 0ba for host 235.127.191.1
+got 0bb for host 235.127.191.127
+got 0bc for host 235.127.191.254
+got 0bd for host 235.127.64.0
+got 0be for host 235.127.64.1
+got 0bf for host 235.127.64.127
+got 0c0 for host 235.127.64.254
+got 0c1 for host 126.0.0.0
+got 0c2 for host 126.0.0.1
+got 0c3 for host 126.0.0.127
+got 0c4 for host 126.0.0.254
+got 0c5 for host 126.0.15.0
+got 0c6 for host 126.0.15.1
+got 0c7 for host 126.0.15.127
+got 0c8 for host 126.0.15.254
+got 0c9 for host 126.0.191.0
+got 0ca for host 126.0.191.1
+got 0cb for host 126.0.191.127
+got 0cc for host 126.0.191.254
+got 0cd for host 126.0.64.0
+got 0ce for host 126.0.64.1
+got 0cf for host 126.0.64.127
+got 0d0 for host 126.0.64.254
+got 0d1 for host 126.201.0.0
+got 0d2 for host 126.201.0.1
+got 0d3 for host 126.201.0.127
+got 0d4 for host 126.201.0.254
+got 0d5 for host 126.201.15.0
+got 0d6 for host 126.201.15.1
+got 0d7 for host 126.201.15.127
+got 0d8 for host 126.201.15.254
+got 0d9 for host 126.201.191.0
+got 0da for host 126.201.191.1
+got 0db for host 126.201.191.127
+got 0dc for host 126.201.191.254
+got 0dd for host 126.201.64.0
+got 0de for host 126.201.64.1
+got 0df for host 126.201.64.127
+got 0e0 for host 126.201.64.254
+got 0e1 for host 126.77.0.0
+got 0e2 for host 126.77.0.1
+got 0e3 for host 126.77.0.127
+got 0e4 for host 126.77.0.254
+got 0e5 for host 126.77.15.0
+got 0e6 for host 126.77.15.1
+got 0e7 for host 126.77.15.127
+got 0e8 for host 126.77.15.254
+got 0e9 for host 126.77.191.0
+got 0ea for host 126.77.191.1
+got 0eb for host 126.77.191.127
+got 0ec for host 126.77.191.254
+got 0ed for host 126.77.64.0
+got 0ee for host 126.77.64.1
+got 0ef for host 126.77.64.127
+got 0f0 for host 126.77.64.254
+got 0f1 for host 126.127.0.0
+got 0f2 for host 126.127.0.1
+got 0f3 for host 126.127.0.127
+got 0f4 for host 126.127.0.254
+got 0f5 for host 126.127.15.0
+got 0f6 for host 126.127.15.1
+got 0f7 for host 126.127.15.127
+got 0f8 for host 126.127.15.254
+got 0f9 for host 126.127.191.0
+got 0fa for host 126.127.191.1
+got 0fb for host 126.127.191.127
+got 0fc for host 126.127.191.254
+got 0fd for host 126.127.64.0
+got 0fe for host 126.127.64.1
+got 0ff for host 126.127.64.127
+got 000 for host 126.127.64.254
+got 000 for host 1.1.1.1
+got 000 for host 1.1.1.2
+got 000 for host 1.1.1.128
+got 000 for host 1.1.1.255
+got 000 for host 1.1.16.1
+got 000 for host 1.1.16.2
+got 000 for host 1.1.16.128
+got 000 for host 1.1.16.255
+got 000 for host 1.1.192.1
+got 000 for host 1.1.192.2
+got 000 for host 1.1.192.128
+got 000 for host 1.1.192.255
+got 000 for host 1.1.65.1
+got 000 for host 1.1.65.2
+got 000 for host 1.1.65.128
+got 000 for host 1.1.65.255
+got 000 for host 1.202.1.1
+got 000 for host 1.202.1.2
+got 000 for host 1.202.1.128
+got 000 for host 1.202.1.255
+got 000 for host 1.202.16.1
+got 000 for host 1.202.16.2
+got 000 for host 1.202.16.128
+got 000 for host 1.202.16.255
+got 000 for host 1.202.192.1
+got 000 for host 1.202.192.2
+got 000 for host 1.202.192.128
+got 000 for host 1.202.192.255
+got 000 for host 1.202.65.1
+got 000 for host 1.202.65.2
+got 000 for host 1.202.65.128
+got 000 for host 1.202.65.255
+got 000 for host 1.78.1.1
+got 000 for host 1.78.1.2
+got 000 for host 1.78.1.128
+got 000 for host 1.78.1.255
+got 000 for host 1.78.16.1
+got 000 for host 1.78.16.2
+got 000 for host 1.78.16.128
+got 000 for host 1.78.16.255
+got 000 for host 1.78.192.1
+got 000 for host 1.78.192.2
+got 000 for host 1.78.192.128
+got 000 for host 1.78.192.255
+got 000 for host 1.78.65.1
+got 000 for host 1.78.65.2
+got 000 for host 1.78.65.128
+got 000 for host 1.78.65.255
+got 000 for host 1.128.1.1
+got 000 for host 1.128.1.2
+got 000 for host 1.128.1.128
+got 000 for host 1.128.1.255
+got 000 for host 1.128.16.1
+got 000 for host 1.128.16.2
+got 000 for host 1.128.16.128
+got 000 for host 1.128.16.255
+got 000 for host 1.128.192.1
+got 000 for host 1.128.192.2
+got 000 for host 1.128.192.128
+got 000 for host 1.128.192.255
+got 000 for host 1.128.65.1
+got 000 for host 1.128.65.2
+got 000 for host 1.128.65.128
+got 000 for host 1.128.65.255
+got 100 for host 38.1.1.1
+got 100 for host 38.1.1.2
+got 100 for host 38.1.1.128
+got 100 for host 38.1.1.255
+got 100 for host 38.1.16.1
+got 100 for host 38.1.16.2
+got 100 for host 38.1.16.128
+got 100 for host 38.1.16.255
+got 100 for host 38.1.192.1
+got 100 for host 38.1.192.2
+got 100 for host 38.1.192.128
+got 100 for host 38.1.192.255
+got 100 for host 38.1.65.1
+got 100 for host 38.1.65.2
+got 100 for host 38.1.65.128
+got 100 for host 38.1.65.255
+got 200 for host 38.202.1.1
+got 200 for host 38.202.1.2
+got 200 for host 38.202.1.128
+got 200 for host 38.202.1.255
+got 300 for host 38.202.16.1
+got 300 for host 38.202.16.2
+got 300 for host 38.202.16.128
+got 300 for host 38.202.16.255
+got 200 for host 38.202.192.1
+got 200 for host 38.202.192.2
+got 200 for host 38.202.192.128
+got 200 for host 38.202.192.255
+got 200 for host 38.202.65.1
+got 200 for host 38.202.65.2
+got 200 for host 38.202.65.128
+got 200 for host 38.202.65.255
+got 100 for host 38.78.1.1
+got 100 for host 38.78.1.2
+got 100 for host 38.78.1.128
+got 100 for host 38.78.1.255
+got 100 for host 38.78.16.1
+got 100 for host 38.78.16.2
+got 100 for host 38.78.16.128
+got 100 for host 38.78.16.255
+got 100 for host 38.78.192.1
+got 100 for host 38.78.192.2
+got 100 for host 38.78.192.128
+got 100 for host 38.78.192.255
+got 100 for host 38.78.65.1
+got 100 for host 38.78.65.2
+got 100 for host 38.78.65.128
+got 100 for host 38.78.65.255
+got 100 for host 38.128.1.1
+got 100 for host 38.128.1.2
+got 100 for host 38.128.1.128
+got 100 for host 38.128.1.255
+got 100 for host 38.128.16.1
+got 100 for host 38.128.16.2
+got 100 for host 38.128.16.128
+got 100 for host 38.128.16.255
+got 100 for host 38.128.192.1
+got 100 for host 38.128.192.2
+got 100 for host 38.128.192.128
+got 100 for host 38.128.192.255
+got 100 for host 38.128.65.1
+got 100 for host 38.128.65.2
+got 100 for host 38.128.65.128
+got 100 for host 38.128.65.255
+got 000 for host 236.1.1.1
+got 000 for host 236.1.1.2
+got 000 for host 236.1.1.128
+got 000 for host 236.1.1.255
+got 000 for host 236.1.16.1
+got 000 for host 236.1.16.2
+got 000 for host 236.1.16.128
+got 000 for host 236.1.16.255
+got 000 for host 236.1.192.1
+got 000 for host 236.1.192.2
+got 000 for host 236.1.192.128
+got 000 for host 236.1.192.255
+got 000 for host 236.1.65.1
+got 000 for host 236.1.65.2
+got 000 for host 236.1.65.128
+got 000 for host 236.1.65.255
+got 000 for host 236.202.1.1
+got 000 for host 236.202.1.2
+got 000 for host 236.202.1.128
+got 000 for host 236.202.1.255
+got 000 for host 236.202.16.1
+got 000 for host 236.202.16.2
+got 000 for host 236.202.16.128
+got 000 for host 236.202.16.255
+got 000 for host 236.202.192.1
+got 000 for host 236.202.192.2
+got 000 for host 236.202.192.128
+got 000 for host 236.202.192.255
+got 000 for host 236.202.65.1
+got 000 for host 236.202.65.2
+got 000 for host 236.202.65.128
+got 000 for host 236.202.65.255
+got 000 for host 236.78.1.1
+got 000 for host 236.78.1.2
+got 000 for host 236.78.1.128
+got 000 for host 236.78.1.255
+got 000 for host 236.78.16.1
+got 000 for host 236.78.16.2
+got 000 for host 236.78.16.128
+got 000 for host 236.78.16.255
+got 000 for host 236.78.192.1
+got 000 for host 236.78.192.2
+got 000 for host 236.78.192.128
+got 000 for host 236.78.192.255
+got 000 for host 236.78.65.1
+got 000 for host 236.78.65.2
+got 000 for host 236.78.65.128
+got 000 for host 236.78.65.255
+got 000 for host 236.128.1.1
+got 000 for host 236.128.1.2
+got 000 for host 236.128.1.128
+got 000 for host 236.128.1.255
+got 000 for host 236.128.16.1
+got 000 for host 236.128.16.2
+got 000 for host 236.128.16.128
+got 000 for host 236.128.16.255
+got 000 for host 236.128.192.1
+got 000 for host 236.128.192.2
+got 000 for host 236.128.192.128
+got 000 for host 236.128.192.255
+got 000 for host 236.128.65.1
+got 000 for host 236.128.65.2
+got 000 for host 236.128.65.128
+got 000 for host 236.128.65.255
+got 000 for host 127.1.1.1
+got 000 for host 127.1.1.2
+got 000 for host 127.1.1.128
+got 000 for host 127.1.1.255
+got 000 for host 127.1.16.1
+got 000 for host 127.1.16.2
+got 000 for host 127.1.16.128
+got 000 for host 127.1.16.255
+got 000 for host 127.1.192.1
+got 000 for host 127.1.192.2
+got 000 for host 127.1.192.128
+got 000 for host 127.1.192.255
+got 000 for host 127.1.65.1
+got 000 for host 127.1.65.2
+got 000 for host 127.1.65.128
+got 000 for host 127.1.65.255
+got 000 for host 127.202.1.1
+got 000 for host 127.202.1.2
+got 000 for host 127.202.1.128
+got 000 for host 127.202.1.255
+got 000 for host 127.202.16.1
+got 000 for host 127.202.16.2
+got 000 for host 127.202.16.128
+got 000 for host 127.202.16.255
+got 000 for host 127.202.192.1
+got 000 for host 127.202.192.2
+got 000 for host 127.202.192.128
+got 000 for host 127.202.192.255
+got 000 for host 127.202.65.1
+got 000 for host 127.202.65.2
+got 000 for host 127.202.65.128
+got 000 for host 127.202.65.255
+got 000 for host 127.78.1.1
+got 000 for host 127.78.1.2
+got 000 for host 127.78.1.128
+got 000 for host 127.78.1.255
+got 000 for host 127.78.16.1
+got 000 for host 127.78.16.2
+got 000 for host 127.78.16.128
+got 000 for host 127.78.16.255
+got 000 for host 127.78.192.1
+got 000 for host 127.78.192.2
+got 000 for host 127.78.192.128
+got 000 for host 127.78.192.255
+got 000 for host 127.78.65.1
+got 000 for host 127.78.65.2
+got 000 for host 127.78.65.128
+got 000 for host 127.78.65.255
+got 000 for host 127.128.1.1
+got 000 for host 127.128.1.2
+got 000 for host 127.128.1.128
+got 000 for host 127.128.1.255
+got 000 for host 127.128.16.1
+got 000 for host 127.128.16.2
+got 000 for host 127.128.16.128
+got 000 for host 127.128.16.255
+got 000 for host 127.128.192.1
+got 000 for host 127.128.192.2
+got 000 for host 127.128.192.128
+got 000 for host 127.128.192.255
+got 000 for host 127.128.65.1
+got 000 for host 127.128.65.2
+got 000 for host 127.128.65.128
+got 000 for host 127.128.65.255
diff --git a/qa/063 b/qa/063
new file mode 100755
index 0000000..96641c7
--- /dev/null
+++ b/qa/063
@@ -0,0 +1,36 @@
+#! /bin/sh
+# PCP QA Test No. 063
+# __pmOptFetchRedo() used to cause a core dump
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.* $tmp; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+cat >$tmp.c <<End-of-File
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+main()
+{
+ fetchctl_t *root = (fetchctl_t *)0;
+
+ __pmOptFetchRedo(&root);
+
+ printf("__pmOptFetchRedo returns: %ld\n", (long)root);
+
+ exit(0);
+}
+End-of-File
+
+cc -o $tmp $tmp.c -I$PCP_INC_DIR -I$PCP_INC_DIR/.. -L$PCP_LIB_DIR -lpcp -lpthread -ldl -lm
+$tmp
diff --git a/qa/063.out b/qa/063.out
new file mode 100644
index 0000000..c2f276d
--- /dev/null
+++ b/qa/063.out
@@ -0,0 +1,2 @@
+QA output created by 063
+__pmOptFetchRedo returns: 0
diff --git a/qa/065 b/qa/065
new file mode 100755
index 0000000..3291c95
--- /dev/null
+++ b/qa/065
@@ -0,0 +1,27 @@
+#! /bin/sh
+# PCP QA Test No. 065
+# retrospective stores
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "archive past ..."
+src/storepast -a src/foo
+
+echo "multi-volume archive past ..."
+src/storepast -a src/mv-foo
+
+echo "no index archive past ..."
+src/storepast -a src/noti-foo
+
+
diff --git a/qa/065.out b/qa/065.out
new file mode 100644
index 0000000..424c5bb
--- /dev/null
+++ b/qa/065.out
@@ -0,0 +1,10 @@
+QA output created by 065
+archive past ...
+pmStore, should produce PM_ERR_NOHOST, ...
+Operation requires context with host source of metrics
+multi-volume archive past ...
+pmStore, should produce PM_ERR_NOHOST, ...
+Operation requires context with host source of metrics
+no index archive past ...
+pmStore, should produce PM_ERR_NOHOST, ...
+Operation requires context with host source of metrics
diff --git a/qa/066 b/qa/066
new file mode 100755
index 0000000..c5ba412
--- /dev/null
+++ b/qa/066
@@ -0,0 +1,223 @@
+#! /bin/sh
+# PCP QA Test No. 066
+# Test PMCD correctly restores original access control list after
+# reconfiguration with a bad config file.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+rm -f $seq.full
+
+# real QA test starts here
+
+signal=$PCP_BINADM_DIR/pmsignal
+config=$PCP_PMCDCONF_PATH
+oconfig=$tmp.pmcd.config
+log=$PCP_PMCDLOG_PATH
+_needclean=true
+LOCALHOST=`hostname`
+
+_filter_log()
+{
+ sleep 1
+ _filter_pmcd_log <$log \
+ | grep -v "^access violation from host" \
+ | grep -v "^endclient client" \
+ | sed \
+ -e 's/^$//' \
+ -e '/^00[08]:/d' \
+ -e '/^linux/s/\/var\//\/usr\//' \
+ -e '/^sample/s/.*/sample agent.../' \
+ -e 's;pcp/lib/mips_[^.]*\.;pcp/lib/ISA.;' \
+ -e '/client connection from/,/^$/d' \
+ -e 's/1 dso/X dso/' \
+ -e 's/2 dso/X dso/' \
+ -e 's/00001983 0000ffff/83190000 ffff0000/' \
+ -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;g" \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;g" \
+ -e 's;$PCP_PMDAS_DIR/pmcd/;;' \
+ -e "s;\.$DSO_SUFFIX;.\$DSO_SUFFIX;g" \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ -e '/unix:/d' \
+ | $PCP_AWK_PROG '
+/localhost/ { sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"MYIPADDR",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*%[0-9a-z]+$/,"MYIPADDR",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"MYIPADDR",$5)
+ sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"MYHOSTMASK",$6)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"MYHOSTMASK",$6) }
+ { print }'
+}
+
+interrupt()
+{
+ echo "Interrupted"
+ exit
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+cleanup()
+{
+ if [ $_needclean ]
+ then
+ $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+ if [ -f $oconfig ]
+ then
+ $sudo mv $oconfig $config
+ fi
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ echo "Restarting pmcd"
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ rm -f $tmp $tmp.*
+}
+
+_myfilter_config()
+{
+ sed \
+ -e "s/$other1/OTHER1/" \
+ -e "s/$other2/OTHER2/" \
+ -e "s;$PCP_RC_DIR;\$PCP_RC_DIR;g" \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;g" \
+ -e "/^irix/s/.*/[platform PMDA]/" \
+ -e "/^linux/s/.*/[platform PMDA]/" \
+ -e "/^darwin/s/.*/[platform PMDA]/" \
+ -e "/^solaris/s/.*/[platform PMDA]/" \
+ -e 's;$PCP_PMDAS_DIR/pmcd/;;' \
+ -e "s;\.$DSO_SUFFIX;.\$DSO_SUFFIX;g" \
+ | _filter_pmcd_log
+}
+
+pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+
+trap "interrupt; cleanup; exit" 1 2 3 15
+trap "cleanup; exit" 0
+
+cat >$tmp <<End-of-File
+# need the pmcd PMDA so that "init" restart can start pmlogger
+# the OS PMDA has to be there so that the default logging config works
+# created by QA 066
+#
+End-of-File
+
+if [ $PCP_PLATFORM = linux ]
+then
+ cat >>$tmp <<End-of-File
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+elif [ $PCP_PLATFORM = irix ]
+then
+ cat >>$tmp <<End-of-File
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+End-of-File
+elif [ $PCP_PLATFORM = darwin ]
+then
+ cat >>$tmp <<End-of-File
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+End-of-File
+elif [ $PCP_PLATFORM = solaris ]
+then
+ cat >>$tmp <<End-of-File
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+else
+ echo "Error - need pmcd.conf setup for $PCP_PLATFORM"
+ exit 1
+fi
+
+cat >>$tmp <<End-of-File
+
+[access]
+allow localhost: all;
+disallow 131.25.*: store;
+disallow *: all;
+
+End-of-File
+
+eval `./getpmcdhosts -L -n 2 \
+ | $PCP_AWK_PROG '{ if (NF == 2) printf("other1=%s other2=%s\n",$1,$2); }'`
+
+if [ -z "$other1" -o -z "$other2" ]
+then
+ echo "Cannot find two remote hosts running pmcd" >$seq.notrun
+ status=1
+ exit
+fi
+
+cp $config $oconfig
+echo "+++ stopping pmcd +++" >>$seq.full
+$sudo $PCP_RC_DIR/pcp stop | tee -a $seq.full | _filter_pcp_stop
+$sudo $signal -a pmgadgets pmchart pmview >/dev/null 2>&1
+$sudo cp $tmp $config
+# try to dodge bind: Address already in use
+[ $PCP_PLATFORM = solaris ] && sleep 10
+echo "+++ starting pmcd +++" >>$seq.full
+$sudo $PCP_RC_DIR/pcp start | tee -a $seq.full | _filter_pcp_start
+echo "first config:"
+_myfilter_config <$config
+echo
+
+cat >>$tmp <<End-of-File
+
+disallow $other1: store;
+allow $other2: all;
+
+ddiissallow misspelt: all;
+End-of-File
+
+$sudo cp $tmp $config
+echo "second config:"
+_myfilter_config <$config
+
+echo
+$sudo $signal -a -s HUP pmcd
+_wait_for_pmcd
+
+# wait for PMCD to finish writing log (or 5 seconds)
+for t in 1 2 3 4 5
+do
+ if [ ! -f $log ]
+ then
+ echo "$log missing!"
+ ls -l `dirname $log`
+ cat ${log}.prev >>$seq.full
+ exit
+ elif [ `egrep '^Host access' $log | wc -l` = 2 ]
+ then
+ break
+ fi
+ sleep 1
+done
+
+_filter_log
diff --git a/qa/066.out.ipv6 b/qa/066.out.ipv6
new file mode 100644
index 0000000..c36e19b
--- /dev/null
+++ b/qa/066.out.ipv6
@@ -0,0 +1,88 @@
+QA output created by 066
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+first config:
+# need the pmcd PMDA so that "init" restart can start pmlogger
+# the OS PMDA has to be there so that the default logging config works
+# created by QA 066
+#
+[platform PMDA]
+pmcd 2 dso pmcd_init pmda_pmcd.$DSO_SUFFIX
+
+[access]
+allow localhost: all;
+disallow 131.25.*: store;
+disallow *: all;
+
+
+second config:
+# need the pmcd PMDA so that "init" restart can start pmlogger
+# the OS PMDA has to be there so that the default logging config works
+# created by QA 066
+#
+[platform PMDA]
+pmcd 2 dso pmcd_init pmda_pmcd.$DSO_SUFFIX
+
+[access]
+allow localhost: all;
+disallow 131.25.*: store;
+disallow *: all;
+
+
+disallow OTHER1: store;
+allow OTHER2: all;
+
+ddiissallow misspelt: all;
+
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? X dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 X dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y 0 0 MYIPADDR MYHOSTMASK 0 localhost
+ n 0 0 131.25.0.0 255.255.0.0 2 131.25.*
+ n n 0 0 0.0.0.0 0.0.0.0 4 .*
+ n n 0 0 :: :: 8 :*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+ok FD 44321 ipv6 INADDR_ANY
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+pmcd config[line 17]: Error: allow or disallow statement expected
+Configuration file '$PCP_PMCDCONF_PATH' has errors
+Configuration left unchanged
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? X dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 X dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y 0 0 MYIPADDR MYHOSTMASK 0 localhost
+ n 0 0 131.25.0.0 255.255.0.0 2 131.25.*
+ n n 0 0 0.0.0.0 0.0.0.0 4 .*
+ n n 0 0 :: :: 8 :*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+Waiting for pmcd to terminate ...
+Restarting pmcd
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/066.out.nonipv6 b/qa/066.out.nonipv6
new file mode 100644
index 0000000..45c19ef
--- /dev/null
+++ b/qa/066.out.nonipv6
@@ -0,0 +1,85 @@
+QA output created by 066
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+first config:
+# need the pmcd PMDA so that "init" restart can start pmlogger
+# the OS PMDA has to be there so that the default logging config works
+# created by QA 066
+#
+[platform PMDA]
+pmcd 2 dso pmcd_init pmda_pmcd.$DSO_SUFFIX
+
+[access]
+allow localhost: all;
+disallow 131.25.*: store;
+disallow *: all;
+
+
+second config:
+# need the pmcd PMDA so that "init" restart can start pmlogger
+# the OS PMDA has to be there so that the default logging config works
+# created by QA 066
+#
+[platform PMDA]
+pmcd 2 dso pmcd_init pmda_pmcd.$DSO_SUFFIX
+
+[access]
+allow localhost: all;
+disallow 131.25.*: store;
+disallow *: all;
+
+
+disallow OTHER1: store;
+allow OTHER2: all;
+
+ddiissallow misspelt: all;
+
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? X dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 X dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y 0 0 MYIPADDR MYHOSTMASK 0 localhost
+ n 0 0 131.25.0.0 255.255.0.0 2 131.25.*
+ n n 0 0 0.0.0.0 0.0.0.0 4 .*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+pmcd config[line 17]: Error: allow or disallow statement expected
+Configuration file '$PCP_PMCDCONF_PATH' has errors
+Configuration left unchanged
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? X dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 X dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y 0 0 MYIPADDR MYHOSTMASK 0 localhost
+ n 0 0 131.25.0.0 255.255.0.0 2 131.25.*
+ n n 0 0 0.0.0.0 0.0.0.0 4 .*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+Waiting for pmcd to terminate ...
+Restarting pmcd
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/067 b/qa/067
new file mode 100755
index 0000000..0a02dec
--- /dev/null
+++ b/qa/067
@@ -0,0 +1,194 @@
+#! /bin/sh
+# PCP QA Test No. 067
+# Test PMCD's ability to detect and cleanup agents it didn't create when they
+# terminate
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+signal=$PCP_BINADM_DIR/pmsignal
+config=$PCP_PMCDCONF_PATH
+oconfig=$tmp.pmcd.config
+log=$PCP_PMCDLOG_PATH
+LOCALHOST=`hostname`
+
+_filter_log()
+{
+ sleep 1
+ _filter_pmcd_log <$log \
+ | sed \
+ -e '/^$/d' \
+ -e 's/ *$//' \
+ -e 's/^$//' \
+ -e '/^->/d' \
+ -e '/^00[08]:/d' \
+ -e '/^sample/s/.*/sample agent.../' \
+ -e 's/fd=[0-9][0-9]*/fd=<n>/g' \
+ -e 's/^ ok [0-9]*/ ok <n>/g' \
+ -e '/^test/s/ *[0-9][0-9]* *[0-9][0-9]* ... bin/ <n> <n> <n> bin/' \
+ -e '/Resource busy/d' \
+ -e 's/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/' \
+ -e '/client connection from/,/^$/d' \
+ -e '/Cleanup/d' \
+ -e '/Info: spindle_stats_init/d' \
+ -e '/UNIX_DOMAIN_SOCKET/d'
+}
+
+_filter_pmda_log()
+{
+ sed \
+ -e 's/^\(Log for pmda[^ ]* on\) .*/\1 HOST .../' \
+ -e 's/^\(Log finished\) .*/\1 .../'
+}
+
+interrupt()
+{
+ echo "Interrupted"
+ exit
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+cleanup()
+{
+ if [ -f $oconfig ]
+ then
+ $sudo mv $oconfig $config
+ fi
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ echo "Restarting pmcd"
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ rm -f $tmp.*
+}
+
+trap interrupt 1 2 3 15
+trap cleanup 0
+
+domain=246
+if [ $PCP_PLATFORM = linux ]
+then
+ cat >$tmp <<End-of-file
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+test $domain socket inet 2222
+End-of-file
+elif [ $PCP_PLATFORM = darwin ]
+then
+ cat >$tmp <<End-of-file
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+test $domain socket inet 2222
+End-of-file
+elif [ $PCP_PLATFORM = solaris ]
+then
+ cat >>$tmp <<End-of-File
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+test $domain socket inet 2222
+End-of-File
+else
+ echo "Error - need pmcd.conf setup for $PCP_PLATFORM"
+ exit 1
+fi
+
+# netstat -an formats
+#
+# Redhat 7.3 and 9
+# tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN
+#
+# Mac OS X 10.6
+# tcp4 0 0 *.2222 *.* LISTEN
+#
+# openindiana
+# *.2222 *.* 0 0 128000 0 LISTEN
+#
+
+$sudo $signal -a pmgadgets pmchart pmview pmie >/dev/null 2>&1
+src/pmdashutdown -i 2222 -d $domain -l $tmp.pmdalog &
+pid=$!
+echo "pmdashutdown pid: $pid" >$seq.full
+sleep 1
+echo
+echo "port 2222 should be listening"
+netstat -an \
+| tee -a $seq.full \
+| grep '[.:]2222 ' \
+| sed \
+ -e 's/127\.0\.0\.1/*/g' \
+ -e 's/0\.0\.0\.0/*/g' \
+ -e 's/:/./g' \
+ -e 's/.*\(\*.2222\).*\(LISTEN\).*/... \1 ... \2/'
+echo
+
+cp $config $oconfig
+$sudo mv $tmp $config
+pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+&& $sudo sh $tmp.cmd
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+# echo "config:"
+# cat $config | sed -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;"
+echo
+
+# wait for pmdashutdown to finish
+#
+for t in 1 2 3 4 5 6
+do
+ echo >>$seq.full
+ echo "wait for pmdashutdown to finish ... cycle $t" >>$seq.full
+ if ps $PCP_PS_ALL_FLAGS | tee -a $seq.full | cut -f1 | grep $pid >/dev/null 2>&1
+ then
+ sleep 2
+ else
+ break
+ fi
+done
+
+echo >>$seq.full
+cat $tmp.pmdalog >>$seq.full
+echo
+echo "pmda log (should have terminated):"
+_filter_pmda_log <$tmp.pmdalog
+echo
+
+$sudo $signal -a -s HUP pmcd
+
+# wait for PMCD to finish writing log (or 5 seconds)
+for t in 1 2 3 4 5
+do
+ if egrep '^Cleanup "test" agent' $log >/dev/null 2>&1
+ then
+ break
+ fi
+ sleep 1
+done
+
+_filter_log
diff --git a/qa/067.out.ipv6 b/qa/067.out.ipv6
new file mode 100644
index 0000000..256df2c
--- /dev/null
+++ b/qa/067.out.ipv6
@@ -0,0 +1,37 @@
+QA output created by 067
+
+port 2222 should be listening
+... *.2222 ... LISTEN
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+
+pmda log (should have terminated):
+Log for pmdashutdown on HOST ...
+
+pmdashutdown terminated
+
+Log finished ...
+
+Log for pmcd on HOST started DATE
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+test 246 -1 <n> <n> <n> bin sock dom=inet port=2222
+Host access list empty: access control turned off
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+ok FD 44321 ipv6 INADDR_ANY
+[DATE] pmcd(PID) Info:
+pmcd RESTARTED at DATE
+Current PMCD clients ...
+Restarting pmcd
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/067.out.nonipv6 b/qa/067.out.nonipv6
new file mode 100644
index 0000000..c90aa85
--- /dev/null
+++ b/qa/067.out.nonipv6
@@ -0,0 +1,36 @@
+QA output created by 067
+
+port 2222 should be listening
+... *.2222 ... LISTEN
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+
+pmda log (should have terminated):
+Log for pmdashutdown on HOST ...
+
+pmdashutdown terminated
+
+Log finished ...
+
+Log for pmcd on HOST started DATE
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+test 246 -1 <n> <n> <n> bin sock dom=inet port=2222
+Host access list empty: access control turned off
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+[DATE] pmcd(PID) Info:
+pmcd RESTARTED at DATE
+Current PMCD clients ...
+Restarting pmcd
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/068 b/qa/068
new file mode 100755
index 0000000..deb7dea
--- /dev/null
+++ b/qa/068
@@ -0,0 +1,60 @@
+#! /bin/sh
+# PCP QA Test No. 068
+# pmNewContext() bad error status if pmcd is not running
+#
+# Note: this is the simplest test to get the pmcd start/stop filtering
+# to be correct ... use this to tune _filter_pcp_start() and
+# _filter_pcp_stop() in common.filter
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.product
+. ./common.check
+. ./common.filter
+
+_needclean=true
+LOCALHOST=`hostname`
+
+trap "_cleanup" 0 1 2 3 15
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_cleanup()
+{
+ echo >>$seq.full
+ echo "--- cleanup ---" >>$seq.full
+ if [ $_needclean ]
+ then
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ echo >>$seq.full
+ echo "--- pcp start ---" >>$seq.full
+ $sudo $PCP_RC_DIR/pcp restart | tee -a $seq.full | _filter_pcp_start
+ echo >>$seq.full
+ echo "--- _wait_for_pmcd ---" >>$seq.full
+ _wait_for_pmcd | tee -a $seq.full
+ echo >>$seq.full
+ echo "--- _wait_for_pmlogger ---" >>$seq.full
+ _wait_for_pmlogger | tee -a $seq.full
+ fi
+ rm -f $tmp.*
+ exit 0
+}
+
+rm -f $seq.full
+
+# real QA test starts here
+echo "--- pcp stop ---" >>$seq.full
+$sudo $PCP_RC_DIR/pcp stop | tee -a $seq.full | _filter_pcp_stop
+echo >>$seq.full
+echo "--- run pmcdgone ---" >>$seq.full
+$sudo src/pmcdgone | tee -a $seq.full
diff --git a/qa/068.out b/qa/068.out
new file mode 100644
index 0000000..2b7bf4d
--- /dev/null
+++ b/qa/068.out
@@ -0,0 +1,5 @@
+QA output created by 068
+Waiting for pmcd to terminate ...
+pmNewContext: Connection refused
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/069 b/qa/069
new file mode 100755
index 0000000..dd0f2e1
--- /dev/null
+++ b/qa/069
@@ -0,0 +1,355 @@
+#! /bin/sh
+# PCP QA Test No. 069
+# Test pmcd's ability to supress multiple access control warnings from the same
+# host
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# ideally want a host with only 1 network interface ... getpmcdhosts
+# cannot express this, so we used to go for 1 CPU as a likely co-condition,
+# but even that has been dropped now that single CPU systems are so
+# rare
+#
+eval `./getpmcdhosts -L -n2 | sed -e 's/^/other1=/' -e 's/ / other2=/'`
+[ -z "$other1" ] && _notrun "Cannot find first remote host running pmcd"
+[ -z "$other2" ] && _notrun "Cannot find second remote host running pmcd"
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+# real QA test starts here
+
+status=0
+signal=$PCP_BINADM_DIR/pmsignal
+usersignal=pmsignal # not run as root, which may lose pcpqa PATH setting
+config=$PCP_PMCDCONF_PATH
+oconfig=${PCP_PMCDCONF_PATH}.save.$seq
+nconfig=$tmp.pmcd.conf.new
+log=$PCP_PMCDLOG_PATH
+LOCALHOST=`hostname`
+LOCALHOST_FULL=`pmhostname`
+_needclean=true
+
+rm -f $seq.full
+
+_filter_log()
+{
+ fixed_width_ip=" "
+ sed <$log \
+ -e 's/$/ /' \
+ -e '/^irix/s/\/var\//\/usr\//' \
+ -e '/^00[08]:/d' \
+ -e 's/ \[0x[0-9a-f]*]//' \
+ -e 's/ \[(nil)]//' \
+ -e "s,$PCP_RUN_DIR,PCP_RUN_DIR,g" \
+ -e "/$LOCALHOST\$/s/$LOCALHOST\$/ME/" \
+ -e "s/ 127\.0\.0\.1 / MY_IP /" \
+ -e "s/ ::1 / MY_IP /" \
+ -e "s/ $me_ip / MY_IP /" \
+ -e "s/ $other1_ip / OTHER1_IP /" \
+ -e "s/ $other2_ip / OTHER2_IP /" \
+ -e "s/ \(OTHER._IP\) *\( 255.255.255.255\) / \1 ${fixed_width_ip} \2 /" \
+ -e '/access violation .* [0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9]/{
+N
+d
+}' \
+ -e "s/ $me_xip / MY_HEXIP /" \
+ -e "s/ $other1 / OTHER_1 /" \
+ -e "s/ $other1_xip / OTHER1_HEXIP /" \
+ -e "s/ $other2 / OTHER_2 /" \
+ -e "s/ $other2_xip / OTHER2_HEXIP /" \
+ -e 's/fd [0-9-][0-9]*/fd <n>/g' \
+ -e '/client\[[0-9][0-9]*\]/s//client[N]/' \
+ -e '/lib=.*\.'"$DSO_SUFFIX"'/s/[0-9] dso/N dso/' \
+ -e 's/ $//' \
+ | $PCP_AWK_PROG '
+BEGIN { skip = 0 }
+/client connection from/ { print; print "..."; skip=1; next }
+skip == 1 && NF == 0 { skip = 0 }
+skip == 1 { next }
+ { print }' \
+ | _filter_pmcd_log | \
+ sed \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ -e '/unix:/d' \
+ | $PCP_AWK_PROG '
+BEGIN { seen_my_access = 0 }
+/access violation from host MY_IP/ { seen_my_access++
+ if (seen_my_access > 1) skip=2
+ }
+skip > 0 { skip--; next }
+ { print }'
+ # Note on last awk component ...
+ # depending on the IPv6 support status, can see multiple lines for
+ # 127.0.0.1 _and_ ::1 ... only need to report one occurrence of
+ # the filtered lines
+ #
+
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+cleanup()
+{
+ if $_needclean
+ then
+ _needclean=false
+ if [ -f $oconfig ]
+ then
+ $sudo cp $oconfig $config
+ $sudo rm -f $oconfig
+ fi
+ unset PMCD_PORT # don't worry about preserving just get rid of it
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ echo "Restarting pmcd"
+ $sudo $PCP_RC_DIR/pcp restart >/dev/null
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ fi
+ rm -f $tmp.*
+}
+
+interrupt()
+{
+ trap 1 2 3 15
+ echo "Interrupted"
+ cleanup
+ status=1
+}
+
+trap "interrupt; exit \$status" 1 2 3 15
+trap "cleanup; exit \$status" 0
+
+cat <<End-of-File >$tmp.c
+#include <pcp/pmapi.h>
+#ifdef HAVE_NETWORK_BYTEORDER
+yes
+#else
+no
+#endif
+End-of-File
+
+network_byteorder=`cc -E $tmp.c | sed -e '/^ *$/d' | tail -1`
+
+_get_hex_addr()
+{
+ if [ $network_byteorder = yes ]
+ then
+ echo $1 \
+ | $PCP_AWK_PROG -F '.' '{ printf "%02x%02x%02x%02x", $1, $2, $3, $4 }'
+ else
+ echo $1 \
+ | $PCP_AWK_PROG -F '.' '{ printf "%02x%02x%02x%02x", $4, $3, $2, $1 }'
+ fi
+}
+
+pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+&& $sudo sh $tmp.cmd
+
+echo "host1 = $other1" >>$seq.full
+echo "host2 = $other2" >>$seq.full
+
+# pick a tcp port that is not in use
+#
+port=`_get_port tcp 4340 4350`
+if [ -z "$port" ]
+then
+ echo "Arrgh ... no free TCP port in the range 4340 ... 4350"
+ exit 1
+fi
+echo "port=$port" >>$seq.full
+
+me_ip=`_host_to_ipaddr $LOCALHOST`
+me_xip=`_get_hex_addr $me_ip`
+other1_ip=`_host_to_ipaddr $other1`
+other1_xip=`_get_hex_addr $other1_ip`
+other2_ip=`_host_to_ipaddr $other2`
+other2_xip=`_get_hex_addr $other2_ip`
+
+echo "me: ip=$me_ip hex_ip=$me_xip" >>$seq.full
+echo "host1: ip=$other1_ip hex_ip=$other1_xip" >>$seq.full
+echo "host2: ip=$other2_ip hex_ip=$other2_xip" >>$seq.full
+
+echo "# from qa/$seq" >$nconfig
+egrep '^(linux|irix|darwin|solaris)' $config >>$nconfig
+grep '^pmcd' $config >>$nconfig
+
+$sudo cp $config $oconfig
+$sudo cp $nconfig $config
+echo "--- initial pmcd.conf ---" >>$seq.full
+cat $config >>$seq.full
+export PMCD_CONNECT_TIMEOUT=30
+export PMCD_PORT=$port
+echo "export PMCD_CONNECT_TIMEOUT=30" >$tmp.start
+echo "export PMCD_PORT=$port" >>$tmp.start
+echo "sh $PCP_RC_DIR/pcp restart" >>$tmp.start
+$sudo sh $tmp.start 2>&1 \
+| tee -a $seq.full \
+| sed '/Wait/d' \
+| _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+echo "should be OK"
+pminfo -f pmcd.numclients # should be controlled now - determinate
+
+cat <<End-of-File >>$nconfig
+
+[access]
+allow $other1: all except store, maximum 1 connections;
+allow $other2: all, maximum 1 connections;
+disallow *: all;
+End-of-File
+$sudo cp $nconfig $config
+
+echo "=== local pmcd.conf ===" >>$seq.full
+cat $config >>$seq.full
+
+$sudo $signal -a -s HUP pmcd
+sleep 5
+
+echo
+echo "expect two access control errors:"
+# for Linux sometimes see "Connection reset by peer" ... this is believed
+# to be a timing issue, and the results are semantically equivalent for
+# the purposes of this test, so ...
+pminfo -f pmcd.numclients 2>&1 \
+| sed \
+ -e "s/\"local:\"/\"LOCALHOST\"/" \
+ -e 's/"'$LOCALHOST'"/"LOCALHOST"/' \
+ -e 's/Connection reset by peer/No permission to perform requested operation/'
+pminfo -f pmcd.numclients 2>&1 \
+| sed \
+ -e "s/\"local:\"/\"LOCALHOST\"/" \
+ -e 's/"'$LOCALHOST'"/"LOCALHOST"/' \
+ -e 's/Connection reset by peer/No permission to perform requested operation/'
+echo
+
+echo "expect two connection limit errors:"
+cmd1='sh -c "PMCD_CONNECT_TIMEOUT=30 PMCD_PORT='$PMCD_PORT'; export PMCD_CONNECT_TIMEOUT PMCD_PORT; pmval -h '$LOCALHOST_FULL' pmcd.numclients"'
+echo "cmd1: $cmd1" >>$seq.full
+(ssh -q pcpqa@$other1 $cmd1 &) 1>$tmp.pmval 2>&1
+sleep 5
+
+# not sure how long it takes to get the remote pmval command started,
+# and connected to pmcd so be prepared to try a few times ...
+#
+cmd2='sh -c "PMCD_CONNECT_TIMEOUT=30 PMCD_PORT='$PMCD_PORT'; export PMCD_CONNECT_TIMEOUT PMCD_PORT; pminfo -h '$LOCALHOST_FULL' -f pmcd.numclients"'
+echo "cmd2: $cmd2" >>$seq.full
+cnt=0
+echo >$tmp.pminfo
+for i in 1 2 3 4 5 6 7 8 9 10
+do
+ ssh -q pcpqa@$other1 $cmd2 >$tmp.tmp 2>&1
+ echo "--- attempt $i ---" >>$tmp.pminfo
+ cat $tmp.tmp >>$tmp.pminfo
+ if grep 'connection limit' $tmp.tmp >/dev/null
+ then
+ # bingo!
+ sed -e 's/".*"/"OTHERHOST1"/' <$tmp.tmp
+ cnt=`expr $cnt + 1`
+ [ $cnt -eq 2 ] && break
+ fi
+ sleep 1
+done
+if [ $cnt -ne 2 ]
+then
+ cat $tmp.pminfo
+fi
+ssh -q pcpqa@$other1 $usersignal -a pmval > /dev/null 2>&1
+echo
+echo "=== pmval output ===" >>$seq.full
+cat $tmp.pmval >>$seq.full
+echo "=== pminfo output ===" >>$seq.full
+cat $tmp.pminfo >>$seq.full
+
+echo "expect two connection limit errors:"
+(ssh -q pcpqa@$other2 $cmd1 &) > $tmp.pmval 2>&1
+sleep 5
+
+# not sure how long it takes to get the remote pmval command started
+# and connected to pmcd so be prepared to try a few times ...
+#
+found=false
+echo >$tmp.pminfo
+for i in 1 2 3 4 5 6 7 8 9 10
+do
+ ssh -q pcpqa@$other2 $cmd2 >$tmp.tmp 2>&1
+ echo "--- attempt $i ---" >>$tmp.pminfo
+ cat $tmp.tmp >>$tmp.pminfo
+ if grep 'connection limit' $tmp.tmp >/dev/null
+ then
+ # bingo!
+ sed -e 's/".*"/"OTHERHOST2"/' <$tmp.tmp
+ found=true
+ break
+ fi
+ sleep 1
+done
+$found || cat $tmp.pminfo
+#
+# Make this one a store to see if connection and access errors are treated the
+# same way. Note that pmstore fails with connection limit exceeded before it
+# gets to attempt the store.
+#
+cmd3='sh -c "PMCD_CONNECT_TIMEOUT=30 PMCD_PORT='$PMCD_PORT'; export PMCD_CONNECT_TIMEOUT PMCD_PORT; pmstore -h '$LOCALHOST_FULL' pmcd.control.debug 1"'
+echo "cmd3: $cmd3" >>$seq.full
+# not sure how long it takes to get the remote pmval command started
+# and connected to pmcd so be prepared to try a few times ...
+#
+found=false
+echo >$tmp.pmstore
+for i in 1 2 3 4 5 6 7 8 9 10
+do
+ ssh -q pcpqa@$other2 $cmd3 >$tmp.tmp 2>&1
+ echo "--- attempt $i ---" >>$tmp.pminfo
+ cat $tmp.tmp >>$tmp.pmstore
+ if grep 'connection limit' $tmp.tmp >/dev/null
+ then
+ # bingo!
+ sed -e 's/".*"/"OTHERHOST2"/' <$tmp.tmp
+ found=true
+ break
+ fi
+ sleep 1
+done
+$found || cat $tmp.pmstore
+ssh -q pcpqa@$other2 $usersignal -a pmval > /dev/null 2>&1
+echo
+echo "=== pmval output ===" >>$seq.full
+cat $tmp.pmval >>$seq.full
+echo "=== pminfo output ===" >>$seq.full
+cat $tmp.pminfo >>$seq.full
+echo "=== pmstore output ===" >>$seq.full
+cat $tmp.pmstore >>$seq.full
+
+echo 'expect 3 access violation messages for localhost, OTHERHOST1 and OTHERHOST2
+and one endclient access violation for localhost and one endclient connection
+limit for each of OTHERHOST1 and OTHERHOST2'
+_filter_log
+
+echo "=== pmcd.log ===" >>$seq.full
+cat $log >>$seq.full
+
+echo
+echo "If failure, check $seq.full"
diff --git a/qa/069.out.ipv6 b/qa/069.out.ipv6
new file mode 100644
index 0000000..71f5444
--- /dev/null
+++ b/qa/069.out.ipv6
@@ -0,0 +1,75 @@
+QA output created by 069
+Starting pmcd ...
+Starting pmlogger ...
+should be OK
+
+pmcd.numclients
+ value 2
+
+expect two access control errors:
+pminfo: Cannot connect to PMCD on host "LOCALHOST": No permission to perform requested operation
+pminfo: Cannot connect to PMCD on host "LOCALHOST": No permission to perform requested operation
+
+expect two connection limit errors:
+pminfo: Cannot connect to PMCD on host "OTHERHOST1": PMCD connection limit for this host exceeded
+pminfo: Cannot connect to PMCD on host "OTHERHOST1": PMCD connection limit for this host exceeded
+
+expect two connection limit errors:
+pminfo: Cannot connect to PMCD on host "OTHERHOST2": PMCD connection limit for this host exceeded
+pmstore: Cannot connect to PMCD on host "OTHERHOST2": PMCD connection limit for this host exceeded
+
+expect 3 access violation messages for localhost, OTHERHOST1 and OTHERHOST2
+and one endclient access violation for localhost and one endclient connection
+limit for each of OTHERHOST1 and OTHERHOST2
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? N dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 N dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 4340 inet INADDR_ANY
+ok FD 4340 ipv6 INADDR_ANY
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+access violation from host PCP_RUN_DIR/pmcd.socket
+endclient client[N]: (fd <n>) No permission to perform requested operation (-12387)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? N dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 N dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+ y n 0 1 OTHER1_IP 255.255.255.255 0 OTHER_1
+ y y 0 1 OTHER2_IP 255.255.255.255 0 OTHER_2
+ n n 0 0 0.0.0.0 0.0.0.0 4 .*
+ n n 0 0 :: :: 8 :*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+access violation from host MY_IP
+endclient client[N]: (fd <n>) No permission to perform requested operation (-12387)
+access violation from host OTHER1_IP
+endclient client[N]: (fd <n>) PMCD connection limit for this host exceeded (-12388)
+access violation from host OTHER2_IP
+endclient client[N]: (fd <n>) PMCD connection limit for this host exceeded (-12388)
+
+If failure, check 069.full
+Restarting pmcd
diff --git a/qa/069.out.nonipv6 b/qa/069.out.nonipv6
new file mode 100644
index 0000000..dd211d2
--- /dev/null
+++ b/qa/069.out.nonipv6
@@ -0,0 +1,73 @@
+QA output created by 069
+Starting pmcd ...
+Starting pmlogger ...
+should be OK
+
+pmcd.numclients
+ value 2
+
+expect two access control errors:
+pminfo: Cannot connect to PMCD on host "LOCALHOST": No permission to perform requested operation
+pminfo: Cannot connect to PMCD on host "LOCALHOST": No permission to perform requested operation
+
+expect two connection limit errors:
+pminfo: Cannot connect to PMCD on host "OTHERHOST1": PMCD connection limit for this host exceeded
+pminfo: Cannot connect to PMCD on host "OTHERHOST1": PMCD connection limit for this host exceeded
+
+expect two connection limit errors:
+pminfo: Cannot connect to PMCD on host "OTHERHOST2": PMCD connection limit for this host exceeded
+pmstore: Cannot connect to PMCD on host "OTHERHOST2": PMCD connection limit for this host exceeded
+
+expect 3 access violation messages for localhost, OTHERHOST1 and OTHERHOST2
+and one endclient access violation for localhost and one endclient connection
+limit for each of OTHERHOST1 and OTHERHOST2
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? N dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 N dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 4340 inet INADDR_ANY
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+access violation from host PCP_RUN_DIR/pmcd.socket
+endclient client[N]: (fd <n>) No permission to perform requested operation (-12387)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? N dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 N dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+ y n 0 1 OTHER1_IP 255.255.255.255 0 OTHER_1
+ y y 0 1 OTHER2_IP 255.255.255.255 0 OTHER_2
+ n n 0 0 0.0.0.0 0.0.0.0 4 .*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+access violation from host MY_IP
+endclient client[N]: (fd <n>) No permission to perform requested operation (-12387)
+access violation from host OTHER1_IP
+endclient client[N]: (fd <n>) PMCD connection limit for this host exceeded (-12388)
+access violation from host OTHER2_IP
+endclient client[N]: (fd <n>) PMCD connection limit for this host exceeded (-12388)
+
+If failure, check 069.full
+Restarting pmcd
diff --git a/qa/070 b/qa/070
new file mode 100755
index 0000000..eb6710b
--- /dev/null
+++ b/qa/070
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 070
+# tests flags options in template.c
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3602 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+prog=src/template
+
+remote=`./getpmcdhosts -L -n 1 2>$tmp.out`
+if [ -z "$remote" ]
+then
+ cat $tmp.out >$seq.notrun
+ exit
+fi
+
+_cleanup()
+{
+ mv -- -V $$ >$tmp.err 2>&1 ; rm -f $$
+ mv -- -n $$ >$tmp.err 2>&1 ; rm -f $$
+}
+
+_myprog()
+{
+ echo ""
+ args=`echo "X$*" | sed -e "s/$remote/REMOTEHOST/" -e "s/^X//"`
+ echo "Trying ... $args"
+ $prog $* 2>&1 \
+ | sed \
+ -e "s/'//g" \
+ -e '/Broken pipe/d' \
+ -e 's;src/template: option;Option;' \
+ -e 's;src/template: invalid;Illegal;' \
+ -e 's;src/template: illegal;Illegal;' \
+ -e "s/$remote/REMOTEHOST/"
+}
+
+# real QA test starts here
+
+_myprog -a
+_myprog -A
+_myprog -c
+_myprog -D
+_myprog -h
+_myprog -l
+_myprog -n
+_myprog -s
+_myprog -S
+_myprog -t
+_myprog -T
+_myprog -U
+_myprog -Z
+_myprog -h $remote -D -n
+_myprog -b
+_myprog -a -h $remote -D 1
+_myprog -h $remote -D 1 -n davenamespace
+_myprog -a hoges.arh -f -l
+_myprog -h hoges -l
+_myprog -h hoges -l -n
+
+_cleanup
diff --git a/qa/070.out.1 b/qa/070.out.1
new file mode 100644
index 0000000..811c4d7
--- /dev/null
+++ b/qa/070.out.1
@@ -0,0 +1,351 @@
+QA output created by 070
+
+Trying ... -a
+Option requires an argument -- a
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -A
+Option requires an argument -- A
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -c
+Option requires an argument -- c
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -D
+Option requires an argument -- D
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h
+Option requires an argument -- h
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -l
+Option requires an argument -- l
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -n
+Option requires an argument -- n
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -s
+Option requires an argument -- s
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -S
+Option requires an argument -- S
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -t
+Option requires an argument -- t
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -T
+Option requires an argument -- T
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -U
+Option requires an argument -- U
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -Z
+Option requires an argument -- Z
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h REMOTEHOST -D -n
+template: unrecognized debug flag specification (-n)
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -b
+Illegal option -- b
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -a -h REMOTEHOST -D 1
+template: Cannot open archive "-h": No such file or directory
+
+Trying ... -h REMOTEHOST -D 1 -n davenamespace
+Error Parsing ASCII PMNS: Cannot open "davenamespace"
+template: Cannot load namespace from "davenamespace": No such file or directory
+
+Trying ... -a hoges.arh -f -l
+Illegal option -- f
+Option requires an argument -- l
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h hoges -l
+Option requires an argument -- l
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -p port port name for connection to existing time control
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h hoges -l -n
diff --git a/qa/070.out.2 b/qa/070.out.2
new file mode 100644
index 0000000..f128992
--- /dev/null
+++ b/qa/070.out.2
@@ -0,0 +1,334 @@
+QA output created by 070
+
+Trying ... -a
+Option requires an argument -- a
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -A
+Option requires an argument -- A
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -c
+Option requires an argument -- c
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -D
+Option requires an argument -- D
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h
+Option requires an argument -- h
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -l
+Option requires an argument -- l
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -n
+Option requires an argument -- n
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -s
+Option requires an argument -- s
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -S
+Option requires an argument -- S
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -t
+Option requires an argument -- t
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -T
+Option requires an argument -- T
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -U
+Option requires an argument -- U
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -Z
+Option requires an argument -- Z
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h REMOTEHOST -D -n
+template: unrecognized debug flag specification (-n)
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -b
+Illegal option -- b
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -a -h REMOTEHOST -D 1
+template: Cannot open archive "-h": No such file or directory
+
+Trying ... -h REMOTEHOST -D 1 -n davenamespace
+Error Parsing ASCII PMNS: Cannot open "davenamespace"
+template: Cannot load namespace from "davenamespace": No such file or directory
+
+Trying ... -a hoges.arh -f -l
+Illegal option -- f
+Option requires an argument -- l
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h hoges -l
+Option requires an argument -- l
+Usage: template [options] [metrics ...]
+
+Options:
+ -a archive metrics source is a PCP log archive
+ -A align align sample times on natural boundaries
+ -c configfile file to load configuration from
+ -h host metrics source is PMCD on host
+ -l logfile redirect diagnostics and trace output
+ -n pmnsfile use an alternative PMNS
+ -O offset initial offset into the time window
+ -s samples terminate after this many samples
+ -S starttime start of the time window
+ -t interval sample interval [default 1.0 seconds]
+ -T endtime end of the time window
+ -z set reporting timezone to local time of metrics source
+ -Z timezone set reporting timezone
+
+Trying ... -h hoges -l -n
diff --git a/qa/071 b/qa/071
new file mode 100755
index 0000000..248768c
--- /dev/null
+++ b/qa/071
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 071
+# used to cause core dump when using libpcp_lite ... problem moved
+# slightly when libpcp_lite replaced by PM_CONTEXT_LOCAL
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+cd src
+$sudo rm -f core*
+
+for args in "" "-L" "-h localhost" "-a foo"
+do
+ echo
+ echo "sudo ./pcp_lite_crash $args ..."
+ eval $sudo ./pcp_lite_crash $args >$tmp.out 2>&1
+ s=$?
+
+ sed -e '/using .* kmem interface/d' $tmp.out \
+ | _filter_pmcd_log
+
+ if [ "`echo core*`" != "core*" ]
+ then
+ echo "In qa/src, running pcp_lite_crash created a core dump"
+ echo until this is fixed, my pid = $$
+ echo exit status is $s
+ exit $s
+ fi
+done
+
+exit 0
+
diff --git a/qa/071.out b/qa/071.out
new file mode 100644
index 0000000..703bed5
--- /dev/null
+++ b/qa/071.out
@@ -0,0 +1,10 @@
+QA output created by 071
+
+sudo ./pcp_lite_crash ...
+
+sudo ./pcp_lite_crash -L ...
+
+sudo ./pcp_lite_crash -h localhost ...
+
+sudo ./pcp_lite_crash -a foo ...
+pmLookupDesc: Metric not defined in the PCP archive log
diff --git a/qa/072 b/qa/072
new file mode 100755
index 0000000..a33e743
--- /dev/null
+++ b/qa/072
@@ -0,0 +1,85 @@
+#! /bin/sh
+# PCP QA Test No. 072
+# pmlogger dumps core on this one?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e 's/:.*//' \
+ -e 's/[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* (/PMID (/' \
+ -e 's/TIMESTAMP/ /'
+}
+
+rm -f $seq.full
+echo >$seq.full
+
+# real QA test starts here
+cat >$tmp.config <<End-of-File
+# verbose
+log mandatory on every 24 hours {
+ hinv.physmem
+ hinv.ncpu
+ hinv.ndisk
+ hinv.nfilesys
+}
+
+mandatory on 50 msecs {
+ kernel.percpu.cpu.user
+ kernel.all.load
+ disk.dev.total
+ network.interface.in.bytes
+ pmcd.pdu_in.fetch
+ disk.dev.total # note repeated set of metrics
+ mem.freemem
+}
+End-of-File
+
+remote=`./getpmcdhosts -L -n 1 2>$tmp.out`
+if [ -z "$remote" ]
+then
+ cat $tmp.out >$seq.notrun
+ exit
+fi
+
+for host in `hostname` $remote
+do
+ echo
+ echo "=== $host ===" >>$seq.full
+ rm -f $tmp.0 $tmp.meta $tmp.index
+ pmlogger -h $host -s 2 -c $tmp.config -l $tmp.out $tmp >$tmp.err 2>&1
+ ( echo "pmlogger output:"; cat $tmp.err $tmp.out ) >>$seq.full
+ cat $tmp.err $tmp.out | _filter_pmlogger_log
+
+ pmdumplog -i $tmp 2>&1 >$tmp.out
+ ( echo "pmdumplog -i:"; cat $tmp.out ) >>$seq.full
+
+ numindom=`grep InDom: $tmp.out | wc -l | sed -e 's/ *//g'`
+ if [ "X$numindom" != X5 ]
+ then
+ echo "for host $host, expected 5 InDom entries in the meta data, got ..."
+ cat $tmp.out
+ else
+ echo "number of InDom entries is OK"
+ fi
+
+ echo "expect 2 sets of values for disks and 2 sets of values for networks ..."
+ echo "pmdumplog:" >>$seq.full
+ pmdumplog $tmp 2>&1 \
+ | tee -a $seq.full \
+ | egrep 'disk\.|network\.' \
+ | _filter \
+ | LC_COLLATE=POSIX sort
+done
diff --git a/qa/072.out b/qa/072.out
new file mode 100644
index 0000000..6a38fdd
--- /dev/null
+++ b/qa/072.out
@@ -0,0 +1,31 @@
+QA output created by 072
+
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+number of InDom entries is OK
+expect 2 sets of values for disks and 2 sets of values for networks ...
+ PMID (disk.dev.total)
+ PMID (disk.dev.total)
+ PMID (network.interface.in.bytes)
+ PMID (network.interface.in.bytes)
+
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+number of InDom entries is OK
+expect 2 sets of values for disks and 2 sets of values for networks ...
+ PMID (disk.dev.total)
+ PMID (disk.dev.total)
+ PMID (network.interface.in.bytes)
+ PMID (network.interface.in.bytes)
diff --git a/qa/074 b/qa/074
new file mode 100755
index 0000000..068eee7
--- /dev/null
+++ b/qa/074
@@ -0,0 +1,28 @@
+#! /bin/sh
+# PCP QA Test No. 074
+# permuted pmids for pmFetch, across multiple PMDAs
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+# proc metrics may not be available
+#
+if pminfo proc.nprocs >/dev/null 2>&1
+then
+ ln $seq.out.other $seq.out
+else
+ ln $seq.out.noproc $seq.out
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/permfetch sample kernel pmcd proc
diff --git a/qa/074.out.noproc b/qa/074.out.noproc
new file mode 100644
index 0000000..feaafbf
--- /dev/null
+++ b/qa/074.out.noproc
@@ -0,0 +1,12 @@
+QA output created by 074
+sample:
+kernel:
+pmcd:
+proc:
+... no metrics in PMNS ... skip tests
+pmcd: free names and result
+kernel: free names and result
+sample: free names and result
+sample (reverse):
+kernel (reverse):
+pmcd (reverse):
diff --git a/qa/074.out.other b/qa/074.out.other
new file mode 100644
index 0000000..01e4ee0
--- /dev/null
+++ b/qa/074.out.other
@@ -0,0 +1,13 @@
+QA output created by 074
+sample:
+kernel:
+pmcd:
+proc:
+proc: free names and result
+pmcd: free names and result
+kernel: free names and result
+sample: free names and result
+sample (reverse):
+kernel (reverse):
+pmcd (reverse):
+proc (reverse):
diff --git a/qa/075 b/qa/075
new file mode 100755
index 0000000..82f43ba
--- /dev/null
+++ b/qa/075
@@ -0,0 +1,104 @@
+#! /bin/sh
+# PCP QA Test No. 075
+# tests for proper handling of white spaces in pmval and pmstore
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+host=`hostname`
+
+_filter()
+{
+ sed \
+ -e "s/$host/localhost/g" \
+ -e 's/Permission denied/No permission to perform requested operation/'
+}
+
+_cmd()
+{
+ echo ""
+ echo "$ $*" | sed -e "s/$remote/REMOTEHOST/"
+ case $#
+ in
+ 1|2|3)
+ $1 $2 "$3"
+ ;;
+ 4)
+ $1 $2 "$3" "$4"
+ ;;
+ 5)
+ $1 $2 "$3" "$4" "$5"
+ ;;
+ 6)
+ $1 $2 "$3" "$4" "$5" "$6"
+ ;;
+ 7)
+ $1 $2 "$3" "$4" "$5" "$6" "$7"
+ ;;
+ 8)
+ $1 $2 "$3" "$4" "$5" "$6" "$7" "$8"
+ ;;
+ 9)
+ $1 $2 "$3" "$4" "$5" "$6" "$7" "$8" "$9"
+ ;;
+ 10)
+ $1 $2 "$3" "$4" "$5" "$6" "$7" "$8" "$9" "$10"
+ ;;
+ *)
+ echo "Snarf! $* ($# args)"
+ exit 1
+ ;;
+ esac \
+ | _filter
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+remote=`./getpmcdhosts -L -n 1 -a sample 2>$tmp.out`
+if [ -z "$remote" ]
+then
+ cat $tmp.out >$seq.notrun
+ exit
+fi
+
+# real QA test starts here
+_cmd pmstore -i bin-300,bin-400,bin-500 sample.bin 500
+_cmd pmstore -i bin-300,bin-400,bin-500 sample.bin 400
+_cmd pmstore -i "bin-300 bin-400 bin-500" sample.bin 500
+_cmd pmstore -i 'bin-300
+bin-400
+bin-500' sample.bin 455
+_cmd pmstore -i "bin-300,bin-400,bin-500" sample.bin 234
+_cmd pmstore -i 'bin-300,bin-400,bin-500' sample.bin 500
+_cmd pmstore -i bin-300 bin-400 bin-500 sample.bin 400
+_cmd pmstore -i bin-300.bin-400.bin-500 sample.bin 400
+_cmd pmstore -i 'bin-300,bin-400,bin-500' sample.bin
+_cmd pmstore -i 'bin-300,bin-400,bin-500' -h $remote sample.bin 500
+
+_cmd pmval -s 2 -i bin-300,bin-400,bin-500 sample.bin
+_cmd pmval -i bin-300,bin-400,bin-500 -s 2 sample.bin
+_cmd pmval -t 0.2 -s 2 -i "bin-300 bin-400 bin-500" sample.bin
+_cmd pmval -t 0.2 -s 2 -i 'bin-300
+bin-400
+bin-500' sample.bin
+_cmd pmval -i "bin-300,bin-400,bin-500" -s 2 sample.bin
+_cmd pmval -i 'bin-300,bin-400,bin-500' -s 2 sample.bin
+_cmd pmval -s 2 -t 0.3 -i bin-300 bin-400 bin-500 sample.bin
+_cmd pmval -s 2 -t 0.3 -i bin-300.bin-400.bin-500 sample.bin
+_cmd pmval -i bin-300,bin-400 -s 2 sample.bin
+
+
+# success, all done
+status=0
+exit
diff --git a/qa/075.out b/qa/075.out
new file mode 100644
index 0000000..347a0cb
--- /dev/null
+++ b/qa/075.out
@@ -0,0 +1,219 @@
+QA output created by 075
+
+$ pmstore -i bin-300,bin-400,bin-500 sample.bin 500
+sample.bin inst [300 or "bin-300"] old value=300 new value=500
+sample.bin inst [400 or "bin-400"] old value=400 new value=500
+sample.bin inst [500 or "bin-500"] old value=500 new value=500
+sample.bin: pmStore: No permission to perform requested operation
+
+$ pmstore -i bin-300,bin-400,bin-500 sample.bin 400
+sample.bin inst [300 or "bin-300"] old value=300 new value=400
+sample.bin inst [400 or "bin-400"] old value=400 new value=400
+sample.bin inst [500 or "bin-500"] old value=500 new value=400
+sample.bin: pmStore: No permission to perform requested operation
+
+$ pmstore -i bin-300 bin-400 bin-500 sample.bin 500
+sample.bin inst [300 or "bin-300"] old value=300 new value=500
+sample.bin inst [400 or "bin-400"] old value=400 new value=500
+sample.bin inst [500 or "bin-500"] old value=500 new value=500
+sample.bin: pmStore: No permission to perform requested operation
+
+$ pmstore -i bin-300
+bin-400
+bin-500 sample.bin 455
+sample.bin inst [300 or "bin-300"] old value=300 new value=455
+sample.bin inst [400 or "bin-400"] old value=400 new value=455
+sample.bin inst [500 or "bin-500"] old value=500 new value=455
+sample.bin: pmStore: No permission to perform requested operation
+
+$ pmstore -i bin-300,bin-400,bin-500 sample.bin 234
+sample.bin inst [300 or "bin-300"] old value=300 new value=234
+sample.bin inst [400 or "bin-400"] old value=400 new value=234
+sample.bin inst [500 or "bin-500"] old value=500 new value=234
+sample.bin: pmStore: No permission to perform requested operation
+
+$ pmstore -i bin-300,bin-400,bin-500 sample.bin 500
+sample.bin inst [300 or "bin-300"] old value=300 new value=500
+sample.bin inst [400 or "bin-400"] old value=400 new value=500
+sample.bin inst [500 or "bin-500"] old value=500 new value=500
+sample.bin: pmStore: No permission to perform requested operation
+
+$ pmstore -i bin-300 bin-400 bin-500 sample.bin 400
+Usage: pmstore [options] metricname value
+
+General options:
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -?, --help show this usage message and exit
+
+Value options:
+ -f, --force store the value even if there is no current value set
+ -i INSTS, --insts=INSTS
+ restrict store to comma-separated list of instances
+
+$ pmstore -i bin-300.bin-400.bin-500 sample.bin 400
+pmLookupInDom sample.bin[bin-300.bin-400.bin-500]: Unknown or illegal instance identifier
+
+$ pmstore -i bin-300,bin-400,bin-500 sample.bin
+Usage: pmstore [options] metricname value
+
+General options:
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -?, --help show this usage message and exit
+
+Value options:
+ -f, --force store the value even if there is no current value set
+ -i INSTS, --insts=INSTS
+ restrict store to comma-separated list of instances
+
+$ pmstore -i bin-300,bin-400,bin-500 -h REMOTEHOST sample.bin 500
+sample.bin inst [300 or "bin-300"] old value=300 new value=500
+sample.bin inst [400 or "bin-400"] old value=400 new value=500
+sample.bin inst [500 or "bin-500"] old value=500 new value=500
+sample.bin: pmStore: No permission to perform requested operation
+
+$ pmval -s 2 -i bin-300,bin-400,bin-500 sample.bin
+
+metric: sample.bin
+host: localhost
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-300 bin-400 bin-500
+ 300 400 500
+ 300 400 500
+
+$ pmval -i bin-300,bin-400,bin-500 -s 2 sample.bin
+
+metric: sample.bin
+host: localhost
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-300 bin-400 bin-500
+ 300 400 500
+ 300 400 500
+
+$ pmval -t 0.2 -s 2 -i bin-300 bin-400 bin-500 sample.bin
+
+metric: sample.bin
+host: localhost
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 0.20 sec
+
+ bin-300 bin-400 bin-500
+ 300 400 500
+ 300 400 500
+
+$ pmval -t 0.2 -s 2 -i bin-300
+bin-400
+bin-500 sample.bin
+
+metric: sample.bin
+host: localhost
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 0.20 sec
+
+ bin-300 bin-400 bin-500
+ 300 400 500
+ 300 400 500
+
+$ pmval -i bin-300,bin-400,bin-500 -s 2 sample.bin
+
+metric: sample.bin
+host: localhost
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-300 bin-400 bin-500
+ 300 400 500
+ 300 400 500
+
+$ pmval -i bin-300,bin-400,bin-500 -s 2 sample.bin
+
+metric: sample.bin
+host: localhost
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-300 bin-400 bin-500
+ 300 400 500
+ 300 400 500
+
+$ pmval -s 2 -t 0.3 -i bin-300 bin-400 bin-500 sample.bin
+Error: pmval can only process one metricname at a time
+
+Usage: pmval [options] metricname
+
+General options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -V, --version display version number and exit
+ -?, --help show this usage message and exit
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+
+Reporting options:
+ -d, --delay delay, pause between updates for archive replay
+ -f N, --precision=N fixed output format with N digits precision
+ -i INST, --instances=INST
+ comma-separated metrics instance list
+ -r, --raw output raw counter values (no rate conversion)
+ -U FILE, --nointerp=FILE
+ non-interpolated fetching; ignores interval
+ -w N, --width=N set the width of each column of output
+
+$ pmval -s 2 -t 0.3 -i bin-300.bin-400.bin-500 sample.bin
+
+pmval: instance bin-300.bin-400.bin-500 not available
+
+$ pmval -i bin-300,bin-400 -s 2 sample.bin
+
+metric: sample.bin
+host: localhost
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 1.00 sec
+
+ bin-300 bin-400
+ 300 400
+ 300 400
diff --git a/qa/076 b/qa/076
new file mode 100755
index 0000000..87962ce
--- /dev/null
+++ b/qa/076
@@ -0,0 +1,18 @@
+#! /bin/sh
+# PCP QA Test No. 076
+# the pmcd PMDA failed badly on an unknown PMID
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/badpmcdpmid
diff --git a/qa/076.out b/qa/076.out
new file mode 100644
index 0000000..73b3c40
--- /dev/null
+++ b/qa/076.out
@@ -0,0 +1,2 @@
+QA output created by 076
+no value in pmResult -- expected
diff --git a/qa/077 b/qa/077
new file mode 100755
index 0000000..8a2bd7a
--- /dev/null
+++ b/qa/077
@@ -0,0 +1,52 @@
+#! /bin/sh
+# PCP QA Test No. 077
+# exercise new _pm*Zone* functions
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/babylon.percpu
+else
+ # no support for V1 archives
+ arch=src/babylon.percpu_v2
+fi
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+remote=`./getpmcdhosts -n 1 -L 2>$tmp.out`
+if [ -z "$remote" ]
+then
+ cat $tmp.out >$seq.notrun
+ exit
+fi
+
+# real QA test starts here
+echo "source local, local time"
+src/exertz | sed -e '/PMAPI context/s/:.*/: LOCAL TIME at epoch/'
+
+echo ""
+echo "source local, Zulu time"
+src/exertz -Z "ZST-4"
+
+echo ""
+echo "source remotehost, local time"
+src/exertz -h $remote | sed -e '/PMAPI context/s/:.*/: LOCAL TIME at epoch/'
+
+echo ""
+echo "source remotehost, remotehost time"
+src/exertz -h $remote -z $remote | sed -e '/PMAPI context/s/:.*/: REMOTE TIME at epoch/'
+
+echo ""
+echo "source babylon archive, babylon time"
+src/exertz -a $arch -z babylon
diff --git a/qa/077.out b/qa/077.out
new file mode 100644
index 0000000..a9961c0
--- /dev/null
+++ b/qa/077.out
@@ -0,0 +1,70 @@
+QA output created by 077
+source local, local time
+UTC pmCtime(): Fri Jan 2 00:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+PMAPI context pmCtime(): LOCAL TIME at epoch
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in Melbourne: Fri Jan 2 11:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to the PMAPI context pmCtime(): LOCAL TIME at epoch
+UTC ctime(): Fri Jan 2 00:00:00 1970
+
+source local, Zulu time
+UTC pmCtime(): Fri Jan 2 00:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+PMAPI context pmCtime(): Fri Jan 2 04:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in Melbourne: Fri Jan 2 11:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to the PMAPI context pmCtime(): Fri Jan 2 04:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+
+source remotehost, local time
+UTC pmCtime(): Fri Jan 2 00:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+PMAPI context pmCtime(): LOCAL TIME at epoch
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in Melbourne: Fri Jan 2 11:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to the PMAPI context pmCtime(): LOCAL TIME at epoch
+UTC ctime(): Fri Jan 2 00:00:00 1970
+
+source remotehost, remotehost time
+UTC pmCtime(): Fri Jan 2 00:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+PMAPI context pmCtime(): REMOTE TIME at epoch
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in Melbourne: Fri Jan 2 11:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to the PMAPI context pmCtime(): REMOTE TIME at epoch
+UTC ctime(): Fri Jan 2 00:00:00 1970
+
+source babylon archive, babylon time
+UTC pmCtime(): Fri Jan 2 00:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+PMAPI context pmCtime(): Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+and in Melbourne: Fri Jan 2 11:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to California: Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
+back to the PMAPI context pmCtime(): Thu Jan 1 16:00:00 1970
+UTC ctime(): Fri Jan 2 00:00:00 1970
diff --git a/qa/078 b/qa/078
new file mode 100755
index 0000000..61e262a
--- /dev/null
+++ b/qa/078
@@ -0,0 +1,52 @@
+#!/bin/sh
+# PCP QA Test No. 078
+# -z and -Z for pmdumplog
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+# need a constant archive for this ...
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/babylon.percpu
+ ln $seq.out.1 $seq.out
+else
+ # no support for V1 archives
+ arch=src/babylon.percpu_v2
+ ln $seq.out.2 $seq.out
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "Dump first 128 bytes ..."
+dd bs=128 count=1 if=$arch.0 2>/dev/null | od -c -j 020 \
+| sed -e 's/^\([0-7][0-7]*\) */\1 /'
+
+echo ""
+TZ=EST-11
+export TZ
+echo "Local time, TZ=$TZ"
+pmdumplog -l $arch
+
+echo ""
+echo "-Z UTC"
+pmdumplog -l -Z UTC $arch
+
+echo ""
+echo "-Z PDT8"
+pmdumplog -l -Z PDT8 $arch
+
+echo ""
+echo "local time at collection host"
+pmdumplog -lz $arch
diff --git a/qa/078.out.1 b/qa/078.out.1
new file mode 100644
index 0000000..07c6af5
--- /dev/null
+++ b/qa/078.out.1
@@ -0,0 +1,39 @@
+QA output created by 078
+Dump first 128 bytes ...
+0000020 \0 017 034 O \0 \0 \0 \0 b a b y l o n \0
+0000040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
+*
+0000120 \0 \0 \0 \0 \0 \0 \0 \0 P S T 8 P D T \0
+0000140 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
+*
+0000200
+
+Local time, TZ=EST-11
+Log Label (Log Format Version 1)
+Performance metrics from host babylon
+ commencing Wed Jan 11 17:50:50.990 1995
+ ending Wed Jan 11 17:56:47.996 1995
+
+-Z UTC
+Note: timezone set to "TZ=UTC"
+
+Log Label (Log Format Version 1)
+Performance metrics from host babylon
+ commencing Wed Jan 11 06:50:50.990 1995
+ ending Wed Jan 11 06:56:47.996 1995
+
+-Z PDT8
+Note: timezone set to "TZ=PDT8"
+
+Log Label (Log Format Version 1)
+Performance metrics from host babylon
+ commencing Tue Jan 10 22:50:50.990 1995
+ ending Tue Jan 10 22:56:47.996 1995
+
+local time at collection host
+Note: timezone set to local timezone of host "babylon" from archive
+
+Log Label (Log Format Version 1)
+Performance metrics from host babylon
+ commencing Tue Jan 10 22:50:50.990 1995
+ ending Tue Jan 10 22:56:47.996 1995
diff --git a/qa/078.out.2 b/qa/078.out.2
new file mode 100644
index 0000000..a8826a8
--- /dev/null
+++ b/qa/078.out.2
@@ -0,0 +1,39 @@
+QA output created by 078
+Dump first 128 bytes ...
+0000020 \0 017 034 O \0 \0 \0 \0 b a b y l o n \0
+0000040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
+*
+0000120 \0 \0 \0 \0 \0 \0 \0 \0 P S T 8 P D T \0
+0000140 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
+*
+0000200
+
+Local time, TZ=EST-11
+Log Label (Log Format Version 2)
+Performance metrics from host babylon
+ commencing Wed Jan 11 17:50:50.990 1995
+ ending Wed Jan 11 17:56:47.996 1995
+
+-Z UTC
+Note: timezone set to "TZ=UTC"
+
+Log Label (Log Format Version 2)
+Performance metrics from host babylon
+ commencing Wed Jan 11 06:50:50.990 1995
+ ending Wed Jan 11 06:56:47.996 1995
+
+-Z PDT8
+Note: timezone set to "TZ=PDT8"
+
+Log Label (Log Format Version 2)
+Performance metrics from host babylon
+ commencing Tue Jan 10 22:50:50.990 1995
+ ending Tue Jan 10 22:56:47.996 1995
+
+local time at collection host
+Note: timezone set to local timezone of host "babylon" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host babylon
+ commencing Tue Jan 10 22:50:50.990 1995
+ ending Tue Jan 10 22:56:47.996 1995
diff --git a/qa/079 b/qa/079
new file mode 100755
index 0000000..20371ba
--- /dev/null
+++ b/qa/079
@@ -0,0 +1,59 @@
+#! /bin/sh
+# PCP QA Test No. 079
+# exercise -z, -Z and -S for pmclient
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# need a constant archive for this ...
+#
+ARCH=src/moomba.client
+
+_filter()
+{
+ sed -e "s;$PCP_DOC_DIR;\$PCP_DOC_DIR;"
+}
+
+# real QA test starts here
+
+# be careful of bytes with the high-order bit set, the behaviour of
+# od(1) differs ... we don't really care too much about the first few
+# bytes, so the tr(1) mapping is OK ...
+#
+echo "Dump first 128 bytes ..."
+dd bs=128 count=1 if=$ARCH.0 2>/dev/null \
+| tr '\204\375\272' '\004\175\072' \
+| od -c \
+| sed -e 's/^\([0-7][0-7]*\) */\1 /'
+
+echo ""
+TZ=EST-10
+export TZ
+echo "Local time, TZ=$TZ"
+pmclient -a $ARCH | _filter
+
+echo ""
+echo "-Z UTC"
+pmclient -a $ARCH -Z UTC | _filter
+
+echo ""
+echo "-Z PDT8"
+pmclient -a $ARCH -Z PDT8 | _filter
+
+echo ""
+echo "local time at collection host"
+pmclient -a $ARCH -z | _filter
+
+echo ""
+echo "and again, but skip 15 seconds"
+pmclient -a $ARCH -S 15 -z | _filter
diff --git a/qa/079.out b/qa/079.out
new file mode 100644
index 0000000..176febd
--- /dev/null
+++ b/qa/079.out
@@ -0,0 +1,85 @@
+QA output created by 079
+Dump first 128 bytes ...
+0000000 \0 \0 \0 004 P 005 & 002 \0 \0 ] | 7 } q #
+0000020 \0 \f 022 : \0 \0 \0 \0 m o o m b a \0 \0
+0000040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
+*
+0000120 \0 \0 \0 \0 \0 \0 \0 \0 E S T - 1 1 E S
+0000140 T - 1 0 , 8 7 / 2 : 0 0 , 3 0 4
+0000160 / 3 : 0 0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
+0000200
+
+Local time, TZ=EST-10
+pmclient: pmFetch: End of PCP archive log
+Archive: src/moomba.client, Host: moomba, 4 cpu(s), Fri Oct 8 14:20:56 1999
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS 1 Min 15 Min
+ 0.01 3 0.01 53.312 0 0.02 0.00
+ 0.01 3 0.02 53.609 5 0.02 0.00
+ 0.01 3 0.01 53.609 1 0.02 0.00
+ 0.00 1 0.01 53.609 1 0.01 0.00
+ 0.01 3 0.01 53.609 2 0.01 0.00
+ 0.00 1 0.00 53.594 0 0.01 0.00
+ 0.09 1 0.26 53.250 3 0.01 0.00
+ 0.00 3 0.01 53.250 2 0.01 0.00
+
+-Z UTC
+pmclient: pmFetch: End of PCP archive log
+Note: timezone set to "TZ=UTC"
+
+Archive: src/moomba.client, Host: moomba, 4 cpu(s), Fri Oct 8 04:20:56 1999
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS 1 Min 15 Min
+ 0.01 3 0.01 53.312 0 0.02 0.00
+ 0.01 3 0.02 53.609 5 0.02 0.00
+ 0.01 3 0.01 53.609 1 0.02 0.00
+ 0.00 1 0.01 53.609 1 0.01 0.00
+ 0.01 3 0.01 53.609 2 0.01 0.00
+ 0.00 1 0.00 53.594 0 0.01 0.00
+ 0.09 1 0.26 53.250 3 0.01 0.00
+ 0.00 3 0.01 53.250 2 0.01 0.00
+
+-Z PDT8
+pmclient: pmFetch: End of PCP archive log
+Note: timezone set to "TZ=PDT8"
+
+Archive: src/moomba.client, Host: moomba, 4 cpu(s), Thu Oct 7 20:20:56 1999
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS 1 Min 15 Min
+ 0.01 3 0.01 53.312 0 0.02 0.00
+ 0.01 3 0.02 53.609 5 0.02 0.00
+ 0.01 3 0.01 53.609 1 0.02 0.00
+ 0.00 1 0.01 53.609 1 0.01 0.00
+ 0.01 3 0.01 53.609 2 0.01 0.00
+ 0.00 1 0.00 53.594 0 0.01 0.00
+ 0.09 1 0.26 53.250 3 0.01 0.00
+ 0.00 3 0.01 53.250 2 0.01 0.00
+
+local time at collection host
+pmclient: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "moomba" from archive
+
+Archive: src/moomba.client, Host: moomba, 4 cpu(s), Fri Oct 8 14:20:56 1999
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS 1 Min 15 Min
+ 0.01 3 0.01 53.312 0 0.02 0.00
+ 0.01 3 0.02 53.609 5 0.02 0.00
+ 0.01 3 0.01 53.609 1 0.02 0.00
+ 0.00 1 0.01 53.609 1 0.01 0.00
+ 0.01 3 0.01 53.609 2 0.01 0.00
+ 0.00 1 0.00 53.594 0 0.01 0.00
+ 0.09 1 0.26 53.250 3 0.01 0.00
+ 0.00 3 0.01 53.250 2 0.01 0.00
+
+and again, but skip 15 seconds
+pmclient: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "moomba" from archive
+
+Archive: src/moomba.client, Host: moomba, 4 cpu(s), Fri Oct 8 14:21:11 1999
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS 1 Min 15 Min
+ 0.00 1 0.01 53.609 1 0.01 0.00
+ 0.01 3 0.01 53.609 2 0.01 0.00
+ 0.00 1 0.00 53.594 0 0.01 0.00
+ 0.09 1 0.26 53.250 3 0.01 0.00
+ 0.00 3 0.01 53.250 2 0.01 0.00
diff --git a/qa/080 b/qa/080
new file mode 100755
index 0000000..67896a1
--- /dev/null
+++ b/qa/080
@@ -0,0 +1,112 @@
+#! /bin/sh
+# PCP QA Test No. 080
+# exercise new options to pmval: -r -z -Z -S -p
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed -e '/Warning.*license/d' \
+ -e "s;$PCP_DOC_DIR;\$PCP_DOC_DIR;g"
+}
+
+_one()
+{
+ $PCP_AWK_PROG '
+NF == 1 && $1 >= 0.95 && $1 <= 1.07 { print "close to one"; next }
+ { print }' \
+ | sed -e '/^host:.*$/s/.*/HOST/'
+}
+
+_not_one()
+{
+ $PCP_AWK_PROG '
+NF == 1 && $1 ~ /^[0-9][0-9.eE+]*$/ && $1 != 1 { print "number, not one"; next }
+ { print }' \
+ | sed -e '/^host:.*$/s/.*/HOST/'
+}
+
+status=0 # success by default
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# need a constant archive for this ...
+ARCH=src/omen.client
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+echo "sum of $ARCH ..."
+# want historic BSD "sum" algorithm ...
+#
+if [ $PCP_PLATFORM = darwin ]
+then
+ SUM=sum
+elif [ $PCP_PLATFORM = freebsd ]
+then
+ # defaults to cksum -o1 - historic BSD algorithm
+ SUM=sum
+else
+ SUM="sum -r"
+fi
+$SUM $ARCH.* | sed -e 's/[ ][ ]*[0-9]*[ ]/ /' \
+| sed -e 's/^00*//' \
+| while read chksum path
+do
+ printf "%05d %s\n" $chksum $path
+done
+
+echo; echo "-- -t 0.2 -s 4 --"
+pmval -t 0.2 -s 4 sample.milliseconds 2>$tmp.err | _filter | _one
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -r -t 0.2 -s 4 --"
+pmval -r -t 0.2 -s 4 sample.milliseconds 2>$tmp.err | _filter | _not_one
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -z -U ... --"
+pmval -z -U $ARCH kernel.all.load 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -z -S @16:49:20 -T @16:49:40 -a ... --"
+pmval -z -S @16:49:20 -T @16:49:40 -a $ARCH kernel.all.load 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -z -S @16:49:20 -T 20sec -a ... --"
+pmval -z -S @16:49:20 -T 20sec -a $ARCH kernel.all.load 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -z -S +15s -T -10s -a ... --"
+pmval -z -S +15s -T -10s -a $ARCH kernel.all.load 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -Z UTC -S +15s -T -10s -a ... --"
+pmval -Z UTC -S +15s -T -10s -a $ARCH kernel.all.load 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -z -S @16:49:20 -T 10 arch/... --"
+pmval -z -S @16:49:20 -T 10 "$ARCH/ kernel.all.load" 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -z -S @16:49:20 -T 10 arch/...[...] --"
+pmval -z -S @16:49:20 -T 10 "$ARCH/ kernel.all.load [\"1 minute\" \"15 minute\"]" 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+echo; echo "-- -z -S 15 -A 1 -T10 -a ... --"
+pmval -z -S 15 -A 1 -T10 -a $ARCH kernel.all.load 2>$tmp.err | _filter
+[ -s $tmp.err ] && cat $tmp.err
+
+exit
diff --git a/qa/080.out b/qa/080.out
new file mode 100644
index 0000000..fa5fb79
--- /dev/null
+++ b/qa/080.out
@@ -0,0 +1,289 @@
+QA output created by 080
+sum of src/omen.client ...
+41308 src/omen.client.0
+24558 src/omen.client.index
+04838 src/omen.client.meta
+
+-- -t 0.2 -s 4 --
+
+metric: sample.milliseconds
+HOST
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 4
+interval: 0.20 sec
+close to one
+close to one
+close to one
+close to one
+
+-- -r -t 0.2 -s 4 --
+
+metric: sample.milliseconds
+HOST
+semantics: cumulative counter
+units: millisec
+samples: 4
+interval: 0.20 sec
+number, not one
+number, not one
+number, not one
+number, not one
+
+-- -z -U ... --
+Note: timezone set to local timezone of host "omen" from archive
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 16:49:14 2001
+end: Wed Feb 28 16:50:04 2001
+semantics: instantaneous value
+units: none
+samples: all
+
+ 1 minute 5 minute 15 minute
+16:49:19.031 0.0 ? 0.0
+16:49:24.030 5.957E-02 ? 3.906E-03
+16:49:29.040 5.566E-02 ? 2.930E-03
+16:49:34.039 5.176E-02 ? 1.953E-03
+16:49:39.039 4.785E-02 ? 9.766E-04
+16:49:44.039 4.102E-02 ? 0.0
+16:49:49.038 3.809E-02 ? 0.0
+16:49:54.037 3.516E-02 ? 0.0
+16:49:59.037 3.223E-02 ? 0.0
+16:50:04.037 2.734E-02 ? 0.0
+
+pmval: pmFetchArchive: End of PCP archive log
+
+-- -z -S @16:49:20 -T @16:49:40 -a ... --
+Note: timezone set to local timezone of host "omen" from archive
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 16:49:20 2001
+end: Wed Feb 28 16:49:40 2001
+semantics: instantaneous value
+units: none
+samples: 21
+interval: 1.00 sec
+
+ 1 minute 5 minute 15 minute
+16:49:20.000 0.0 ? 0.0
+16:49:21.000 0.0 ? 0.0
+16:49:22.000 0.0 ? 0.0
+16:49:23.000 0.0 ? 0.0
+16:49:24.000 0.0 ? 0.0
+16:49:25.000 5.957E-02 ? 3.906E-03
+16:49:26.000 5.957E-02 ? 3.906E-03
+16:49:27.000 5.957E-02 ? 3.906E-03
+16:49:28.000 5.957E-02 ? 3.906E-03
+16:49:29.000 5.957E-02 ? 3.906E-03
+16:49:30.000 5.566E-02 ? 2.930E-03
+16:49:31.000 5.566E-02 ? 2.930E-03
+16:49:32.000 5.566E-02 ? 2.930E-03
+16:49:33.000 5.566E-02 ? 2.930E-03
+16:49:34.000 5.566E-02 ? 2.930E-03
+16:49:35.000 5.176E-02 ? 1.953E-03
+16:49:36.000 5.176E-02 ? 1.953E-03
+16:49:37.000 5.176E-02 ? 1.953E-03
+16:49:38.000 5.176E-02 ? 1.953E-03
+16:49:39.000 5.176E-02 ? 1.953E-03
+16:49:40.000 4.785E-02 ? 9.766E-04
+
+-- -z -S @16:49:20 -T 20sec -a ... --
+Note: timezone set to local timezone of host "omen" from archive
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 16:49:20 2001
+end: Wed Feb 28 16:49:40 2001
+semantics: instantaneous value
+units: none
+samples: 21
+interval: 1.00 sec
+
+ 1 minute 5 minute 15 minute
+16:49:20.000 0.0 ? 0.0
+16:49:21.000 0.0 ? 0.0
+16:49:22.000 0.0 ? 0.0
+16:49:23.000 0.0 ? 0.0
+16:49:24.000 0.0 ? 0.0
+16:49:25.000 5.957E-02 ? 3.906E-03
+16:49:26.000 5.957E-02 ? 3.906E-03
+16:49:27.000 5.957E-02 ? 3.906E-03
+16:49:28.000 5.957E-02 ? 3.906E-03
+16:49:29.000 5.957E-02 ? 3.906E-03
+16:49:30.000 5.566E-02 ? 2.930E-03
+16:49:31.000 5.566E-02 ? 2.930E-03
+16:49:32.000 5.566E-02 ? 2.930E-03
+16:49:33.000 5.566E-02 ? 2.930E-03
+16:49:34.000 5.566E-02 ? 2.930E-03
+16:49:35.000 5.176E-02 ? 1.953E-03
+16:49:36.000 5.176E-02 ? 1.953E-03
+16:49:37.000 5.176E-02 ? 1.953E-03
+16:49:38.000 5.176E-02 ? 1.953E-03
+16:49:39.000 5.176E-02 ? 1.953E-03
+16:49:40.000 4.785E-02 ? 9.766E-04
+
+-- -z -S +15s -T -10s -a ... --
+Note: timezone set to local timezone of host "omen" from archive
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 16:49:29 2001
+end: Wed Feb 28 16:49:54 2001
+semantics: instantaneous value
+units: none
+samples: 26
+interval: 1.00 sec
+
+ 1 minute 5 minute 15 minute
+16:49:29.035 5.957E-02 ? 3.906E-03
+16:49:30.035 5.566E-02 ? 2.930E-03
+16:49:31.035 5.566E-02 ? 2.930E-03
+16:49:32.035 5.566E-02 ? 2.930E-03
+16:49:33.035 5.566E-02 ? 2.930E-03
+16:49:34.035 5.566E-02 ? 2.930E-03
+16:49:35.035 5.176E-02 ? 1.953E-03
+16:49:36.035 5.176E-02 ? 1.953E-03
+16:49:37.035 5.176E-02 ? 1.953E-03
+16:49:38.035 5.176E-02 ? 1.953E-03
+16:49:39.035 5.176E-02 ? 1.953E-03
+16:49:40.035 4.785E-02 ? 9.766E-04
+16:49:41.035 4.785E-02 ? 9.766E-04
+16:49:42.035 4.785E-02 ? 9.766E-04
+16:49:43.035 4.785E-02 ? 9.766E-04
+16:49:44.035 4.785E-02 ? 9.766E-04
+16:49:45.035 4.102E-02 ? 0.0
+16:49:46.035 4.102E-02 ? 0.0
+16:49:47.035 4.102E-02 ? 0.0
+16:49:48.035 4.102E-02 ? 0.0
+16:49:49.035 4.102E-02 ? 0.0
+16:49:50.035 3.809E-02 ? 0.0
+16:49:51.035 3.809E-02 ? 0.0
+16:49:52.035 3.809E-02 ? 0.0
+16:49:53.035 3.809E-02 ? 0.0
+16:49:54.035 3.809E-02 ? 0.0
+
+-- -Z UTC -S +15s -T -10s -a ... --
+Note: timezone set to "TZ=UTC"
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 05:49:29 2001
+end: Wed Feb 28 05:49:54 2001
+semantics: instantaneous value
+units: none
+samples: 26
+interval: 1.00 sec
+
+ 1 minute 5 minute 15 minute
+05:49:29.035 5.957E-02 ? 3.906E-03
+05:49:30.035 5.566E-02 ? 2.930E-03
+05:49:31.035 5.566E-02 ? 2.930E-03
+05:49:32.035 5.566E-02 ? 2.930E-03
+05:49:33.035 5.566E-02 ? 2.930E-03
+05:49:34.035 5.566E-02 ? 2.930E-03
+05:49:35.035 5.176E-02 ? 1.953E-03
+05:49:36.035 5.176E-02 ? 1.953E-03
+05:49:37.035 5.176E-02 ? 1.953E-03
+05:49:38.035 5.176E-02 ? 1.953E-03
+05:49:39.035 5.176E-02 ? 1.953E-03
+05:49:40.035 4.785E-02 ? 9.766E-04
+05:49:41.035 4.785E-02 ? 9.766E-04
+05:49:42.035 4.785E-02 ? 9.766E-04
+05:49:43.035 4.785E-02 ? 9.766E-04
+05:49:44.035 4.785E-02 ? 9.766E-04
+05:49:45.035 4.102E-02 ? 0.0
+05:49:46.035 4.102E-02 ? 0.0
+05:49:47.035 4.102E-02 ? 0.0
+05:49:48.035 4.102E-02 ? 0.0
+05:49:49.035 4.102E-02 ? 0.0
+05:49:50.035 3.809E-02 ? 0.0
+05:49:51.035 3.809E-02 ? 0.0
+05:49:52.035 3.809E-02 ? 0.0
+05:49:53.035 3.809E-02 ? 0.0
+05:49:54.035 3.809E-02 ? 0.0
+
+-- -z -S @16:49:20 -T 10 arch/... --
+Note: timezone set to local timezone of host "omen" from archive
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 16:49:20 2001
+end: Wed Feb 28 16:49:30 2001
+semantics: instantaneous value
+units: none
+samples: 11
+interval: 1.00 sec
+
+ 1 minute 5 minute 15 minute
+16:49:20.000 0.0 ? 0.0
+16:49:21.000 0.0 ? 0.0
+16:49:22.000 0.0 ? 0.0
+16:49:23.000 0.0 ? 0.0
+16:49:24.000 0.0 ? 0.0
+16:49:25.000 5.957E-02 ? 3.906E-03
+16:49:26.000 5.957E-02 ? 3.906E-03
+16:49:27.000 5.957E-02 ? 3.906E-03
+16:49:28.000 5.957E-02 ? 3.906E-03
+16:49:29.000 5.957E-02 ? 3.906E-03
+16:49:30.000 5.566E-02 ? 2.930E-03
+
+-- -z -S @16:49:20 -T 10 arch/...[...] --
+Note: timezone set to local timezone of host "omen" from archive
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 16:49:20 2001
+end: Wed Feb 28 16:49:30 2001
+semantics: instantaneous value
+units: none
+samples: 11
+interval: 1.00 sec
+
+ 1 minute 15 minute
+16:49:20.000 0.0 0.0
+16:49:21.000 0.0 0.0
+16:49:22.000 0.0 0.0
+16:49:23.000 0.0 0.0
+16:49:24.000 0.0 0.0
+16:49:25.000 5.957E-02 3.906E-03
+16:49:26.000 5.957E-02 3.906E-03
+16:49:27.000 5.957E-02 3.906E-03
+16:49:28.000 5.957E-02 3.906E-03
+16:49:29.000 5.957E-02 3.906E-03
+16:49:30.000 5.566E-02 2.930E-03
+
+-- -z -S 15 -A 1 -T10 -a ... --
+Note: timezone set to local timezone of host "omen" from archive
+
+metric: kernel.all.load
+archive: src/omen.client
+host: omen
+start: Wed Feb 28 16:49:30 2001
+end: Wed Feb 28 16:49:40 2001
+semantics: instantaneous value
+units: none
+samples: 11
+interval: 1.00 sec
+
+ 1 minute 5 minute 15 minute
+16:49:30.000 5.566E-02 ? 2.930E-03
+16:49:31.000 5.566E-02 ? 2.930E-03
+16:49:32.000 5.566E-02 ? 2.930E-03
+16:49:33.000 5.566E-02 ? 2.930E-03
+16:49:34.000 5.566E-02 ? 2.930E-03
+16:49:35.000 5.176E-02 ? 1.953E-03
+16:49:36.000 5.176E-02 ? 1.953E-03
+16:49:37.000 5.176E-02 ? 1.953E-03
+16:49:38.000 5.176E-02 ? 1.953E-03
+16:49:39.000 5.176E-02 ? 1.953E-03
+16:49:40.000 4.785E-02 ? 9.766E-04
diff --git a/qa/081 b/qa/081
new file mode 100755
index 0000000..702d050
--- /dev/null
+++ b/qa/081
@@ -0,0 +1,50 @@
+#! /bin/sh
+# PCP QA Test No. 081
+# exercise new instance domain functions for archives
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/bozo.client
+ pmns="-n src/root_irix"
+else
+ # no support for V1 archives
+ arch=src/bozo.client_v2
+ pmns=
+fi
+
+status=1
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/Note: timezone set to local timezone of host/d'
+}
+
+host=`./getpmcdhosts -p single -n 1 -v 'pcp>=2' 2>$tmp.out`
+if [ -z "$host" ]
+then
+ cat $tmp.out >$seq.notrun
+ exit
+fi
+
+# real QA test starts here
+echo "From pmcd ..."
+src/archinst -h $host kernel.all.load kernel.percpu.cpu.user
+
+echo ""
+echo "From archive on bozo ..."
+pmdumplog -z -i $arch | _filter
+src/archinst $pmns -a $arch kernel.all.load kernel.percpu.cpu.user
+
+status=0
diff --git a/qa/081.out b/qa/081.out
new file mode 100644
index 0000000..9bbfcfb
--- /dev/null
+++ b/qa/081.out
@@ -0,0 +1,53 @@
+QA output created by 081
+From pmcd ...
+kernel.all.load:
+pm*InDom: inst=0 Unknown or illegal instance identifier
+pm*InDomArchive: inst=0 Operation requires context with archive source of metrics
+pm*InDom: inst=1 iname=1 minute reverse lookup: inst=1
+pm*InDomArchive: inst=1 Operation requires context with archive source of metrics
+pmGetInDom:
+ [1] 1 minute
+ [5] 5 minute
+ [15] 15 minute
+pmGetInDomArchive: Operation requires context with archive source of metrics
+Error: Operation requires context with archive source of metrics
+kernel.percpu.cpu.user:
+pm*InDom: inst=0 iname=cpu0 reverse lookup: inst=0
+pm*InDomArchive: inst=0 Operation requires context with archive source of metrics
+pm*InDom: inst=1 Unknown or illegal instance identifier
+pm*InDomArchive: inst=1 Operation requires context with archive source of metrics
+pmGetInDom:
+ [0] cpu0
+pmGetInDomArchive: Operation requires context with archive source of metrics
+Error: Operation requires context with archive source of metrics
+
+From archive on bozo ...
+
+
+Instance Domains in the Log ...
+InDom: 1.5
+05:27:09.991 3 instances
+ 1 or "1 minute"
+ 5 or "5 minute"
+ 15 or "15 minute"
+InDom: 1.1
+05:27:09.991 1 instances
+ 0 or "cpu0"
+kernel.all.load:
+pm*InDom: inst=0 Instance domain identifier not defined in the PCP archive log
+pm*InDomArchive: inst=0 Instance identifier not defined in the PCP archive log
+pm*InDom: inst=1 Instance domain identifier not defined in the PCP archive log
+pm*InDomArchive: inst=1 iname=1 minute reverse lookup: inst=1
+pmGetInDom: Instance domain identifier not defined in the PCP archive log
+pmGetInDomArchive:
+ [1] 1 minute
+ [5] 5 minute
+ [15] 15 minute
+kernel.percpu.cpu.user:
+pm*InDom: inst=0 Instance domain identifier not defined in the PCP archive log
+pm*InDomArchive: inst=0 iname=cpu0 reverse lookup: inst=0
+pm*InDom: inst=1 Instance domain identifier not defined in the PCP archive log
+pm*InDomArchive: inst=1 Instance identifier not defined in the PCP archive log
+pmGetInDom: Instance domain identifier not defined in the PCP archive log
+pmGetInDomArchive:
+ [0] cpu0
diff --git a/qa/082 b/qa/082
new file mode 100755
index 0000000..10ca893
--- /dev/null
+++ b/qa/082
@@ -0,0 +1,92 @@
+#! /bin/sh
+# PCP QA Test No. 082
+# Test permissions left on namespace by pmnsadd, pmnsdel
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+if [ $PCP_EOE_VER -ge 6514 -o \( $PCP_EOE_VER -ge 2201 -a $PCP_EOE_VER -lt 6500 \) ]
+then
+ if [ $PCP_VER -lt 3600 ]
+ then
+ # IRIX 6.5.14 or later, else pcp 2.2.1 or later (Linux or IRIX 6.2)
+ #
+ ln $seq.out.2 $seq.out
+ else
+ ln $seq.out.3 $seq.out
+ fi
+else
+ ln $seq.out.1 $seq.out
+fi
+
+trap "cd $here; rm -rf $tmp; exit" 0 1 2 3 15
+
+_ls()
+{
+ ls -l \
+ | sed \
+ -e '/^total /d' \
+ -e 's/-rw-r--r--\./-rw-r--r--/' \
+ -e 's/----------\./----------/' \
+ | $PCP_AWK_PROG '
+ { print $1, $NF }'
+ echo
+}
+
+# real QA test starts here
+
+umask 022
+
+rm -rf $tmp
+mkdir $tmp
+cd $tmp
+cat <<End-of-File >root
+root {
+ fred 0:0:0
+ bear 0:0:1
+}
+End-of-File
+
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -n root root.bin
+fi
+
+cat <<End-of-File >foo
+foo {
+ bar 1:0:0
+}
+End-of-File
+
+umask 777
+touch new-default-mode
+echo "permissions before add:"
+_ls
+
+pmnsadd -n root foo
+
+echo
+echo "permissions after add:"
+_ls
+
+echo "Expect fred, bear and foo.bar ..."
+pminfo -n root
+
+pmnsdel -n root foo
+
+echo
+echo "permissions after delete:"
+_ls
+
+echo "Expect fred and bear ..."
+pminfo -n root
+
+exit 0
diff --git a/qa/082.out.1 b/qa/082.out.1
new file mode 100644
index 0000000..afba0cc
--- /dev/null
+++ b/qa/082.out.1
@@ -0,0 +1,43 @@
+QA output created by 082
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 1 non-leaf nodes
+ 15 bytes of symbol table
+permissions before add:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+-rw-r--r-- root.bin
+
+Compiled PMNS contains
+ 1 hash table entries
+ 3 leaf nodes
+ 2 non-leaf nodes
+ 23 bytes of symbol table
+
+permissions after add:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+-rw-r--r-- root.bin
+
+Expect fred, bear and foo.bar ...
+fred
+bear
+foo.bar
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 1 non-leaf nodes
+ 15 bytes of symbol table
+
+permissions after delete:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+---------- root.bin
+
+Expect fred and bear ...
+fred
+bear
diff --git a/qa/082.out.2 b/qa/082.out.2
new file mode 100644
index 0000000..f9a729a
--- /dev/null
+++ b/qa/082.out.2
@@ -0,0 +1,43 @@
+QA output created by 082
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 1 non-leaf nodes
+ 15 bytes of symbol table
+permissions before add:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+-rw-r--r-- root.bin
+
+Compiled PMNS contains
+ 1 hash table entries
+ 3 leaf nodes
+ 2 non-leaf nodes
+ 23 bytes of symbol table
+
+permissions after add:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+-rw-r--r-- root.bin
+
+Expect fred, bear and foo.bar ...
+fred
+bear
+foo.bar
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 1 non-leaf nodes
+ 15 bytes of symbol table
+
+permissions after delete:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+-rw-r--r-- root.bin
+
+Expect fred and bear ...
+fred
+bear
diff --git a/qa/082.out.3 b/qa/082.out.3
new file mode 100644
index 0000000..6de8877
--- /dev/null
+++ b/qa/082.out.3
@@ -0,0 +1,25 @@
+QA output created by 082
+permissions before add:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+
+
+permissions after add:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+
+Expect fred, bear and foo.bar ...
+fred
+bear
+foo.bar
+
+permissions after delete:
+-rw-r--r-- foo
+---------- new-default-mode
+-rw-r--r-- root
+
+Expect fred and bear ...
+fred
+bear
diff --git a/qa/083 b/qa/083
new file mode 100755
index 0000000..8d54895
--- /dev/null
+++ b/qa/083
@@ -0,0 +1,442 @@
+#! /bin/sh
+# PCP QA Test No. 083
+# Test pmlogger access control stuff and pmlc
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.product
+. ./common.check
+. ./common.filter
+. ./localconfig
+
+trap "rm -rf $tmp $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "this tests access control for pmlogger and exercises pmlc"
+
+# Remember that we cd into $tmp
+#
+here=`pwd`
+signal=$PCP_BINADM_DIR/pmsignal
+tmp=/var/tmp/qa083.$$
+config=$tmp/pmlogger.conf
+log=$tmp/pmlogger.log
+me=`_get_fqdn`
+shortme=`hostname`
+errors=$tmp/errors.pmlc
+
+echo "me=$me" >$here/$seq.full
+echo "shortme=$shortme" >>$here/$seq.full
+
+_filter()
+{
+ # for Linux sometimes see "Connection reset by peer" ... this is believed
+ # to be a timing issue, and the results are semantically equivalent for
+ # the purposes of this test, so ...
+ # and the "receiving response from pmlogger" part of the no permission
+ # error message may not be there for older pmlc versions, so ...
+ #
+ tee -a $here/$seq.full \
+ | sed -e "s/$me/ME/" \
+ -e "s/local:/ME/" \
+ -e "s/$shortme/ME/" \
+ -e "s/$other1/OTHER1/" \
+ -e "s/$other2/OTHER2/" \
+ -e 's/Connection reset by peer/Address already in use/' \
+ -e '/No permission to perform/s/ receiving response from pmlogger//'
+}
+
+# Wait for appearance ($1 is true) or disappearance ($1 is false) of primary
+# pmlogger
+#
+_await_logger()
+{
+ for i in 1 2 3 4 5
+ do
+ if $PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mlogger.*-P' | grep -v sudo >/dev/null
+ then
+ # if it's there and we're waiting for it, break
+ $1 && break
+ else
+ # if it's not there and we're waiting for it to disappear, break
+ $1 || break
+ fi
+ sleep 2
+ done
+ logger_pid=`$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mlogger.*-P' | grep -v sudo | $PCP_AWK_PROG '{ print $2 }'`
+ if [ ! -z "$logger_pid" ]
+ then
+ # it's alive...
+ if $1
+ then
+ echo "primary pmlogger alive"
+ else
+ # ...but meant to die
+ echo
+ echo "primary pmlogger won't die, can't do QA test, ...giving up!"
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '[p]m|[P]PID'
+ exit 1
+ fi
+ else
+ # it's not alive...
+ if $1
+ then
+ # ...but should be
+ echo
+ echo "primary pmlogger won't start, can't do QA test, ...giving up!"
+ echo "pmlogger log file:"
+ cat $log
+ echo "pmlogger sh log:"
+ cat $tmp/sh.log
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '[p]m|[P]PID'
+ exit 1
+ else
+ echo "primary pmlogger terminated"
+ fi
+ fi
+}
+
+interrupt()
+{
+ echo "Interrupted"
+ exit
+}
+
+cleanup()
+{
+ cd $here
+ rm -rf $tmp $tmp.*
+ echo "Restarting pmcd and friends..."
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+}
+
+trap interrupt 1 2 3 15
+trap cleanup 0
+
+# real QA test starts here
+
+echo
+echo "Running the access tests"
+
+# ideally want a host with only 1 network interface ... getpmcdhosts
+# cannot express this, so we used to go for 1 CPU as a likely co-condition,
+# but even that has been dropped now that single CPU systems are so
+# rare
+#
+eval `./getpmcdhosts -L -n2 -v 'pcp>=2' | sed -e 's/^/other1=/' -e 's/ / other2=/'`
+if [ -z "$other1" ]
+then
+ echo "Cannot find first remote host running pmcd v2.x" >$seq.notrun
+ status=1
+ exit
+fi
+if [ -z "$other2" ]
+then
+ echo "Cannot find second remote host running pmcd v2.x" >$seq.notrun
+ status=1
+ exit
+fi
+echo "other1=$other1" >>$here/$seq.full
+echo "other2=$other2" >>$here/$seq.full
+
+# kill off any existing primary pmlogger
+#
+$sudo $signal -a -s TERM pmlogger
+_await_logger false
+
+if mkdir $tmp
+then
+ cd $tmp
+ # since we now run pmlogger as user/group pcp/pcp when -P is
+ # specified, need to make this directory writeable
+ #
+ chmod 777 .
+else
+ echo "Unable to create working directory $tmp, ...giving up!"
+ exit 1
+fi
+
+cat >$config <<End-Of-File
+# test various "all" commands
+log mandatory on 1 hour {
+ kernel.all.load [ "1 minute" ]
+}
+
+log mandatory maybe sample.bin["bin-100","bin-200","bin-300","bin-400"]
+log mandatory off sample.bin["bin-600","bin-700","bin-800","bin-900"]
+
+[access]
+allow $other1 : all except mandatory;
+disallow $other2 : all;
+allow $me : all;
+allow localhost : all;
+End-Of-File
+
+echo >>$here/$seq.full
+cat $config >>$here/$seq.full
+
+echo "starting test pmlogger..."
+#
+# extra parentheses and I/O redirection so that shell doesn't print pid
+#
+( sh -c "$sudo $PCP_BINADM_DIR/pmlogger -P -c $config -l $log TEST" >$tmp/sh.log 2>&1 & ) >/dev/null 2>&1
+_await_logger true
+_wait_for_pmlogger $logger_pid $log
+
+# Check connect and enquire access
+
+echo | tee -a $here/$seq.full
+echo "================" | tee -a $here/$seq.full
+echo "checking enquire access for this host..." | tee -a $here/$seq.full
+pmlc -P <<End-Of-File 2>$errors \
+| _filter
+query kernel.all.load[1,5,15]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $here/$seq.full
+ _filter < $errors
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '[p]m|[P]PID'
+ exit 1
+fi
+
+
+echo | tee -a $here/$seq.full
+echo "================" | tee -a $here/$seq.full
+echo "checking enquire access for other1..." | tee -a $here/$seq.full
+ssh -q pcpqa@$other1 "sh -c 'PMCD_CONNECT_TIMEOUT=60 PMCD_REQUEST_TIMEOUT=60 pmlc -h $me -P'" <<End-Of-File 2>$errors \
+| _filter
+query kernel.all.load[1,5,15]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $here/$seq.full
+ _filter < $errors
+ echo FAILED ... sleeping
+ sleep 300
+ exit 1
+fi
+
+echo | tee -a $here/$seq.full
+echo "================" | tee -a $here/$seq.full
+echo "checking enquire access for other2 (should fail)..." | tee -a $here/$seq.full
+ssh -q pcpqa@$other2 "sh -c 'PMCD_CONNECT_TIMEOUT=60 PMCD_REQUEST_TIMEOUT=60 pmlc -h $me -P'" <<End-Of-File 2>$errors \
+| _filter
+query kernel.all.load[1,5,15]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $here/$seq.full
+ _filter < $errors
+fi
+
+echo | tee -a $here/$seq.full
+echo "================" | tee -a $here/$seq.full
+echo "re-checking enquire access for this host..." | tee -a $here/$seq.full
+pmlc -P <<End-Of-File 2>$errors \
+| _filter
+query kernel.all.load[1,5,15]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $here/$seq.full
+ _filter < $errors
+ exit 1
+fi
+
+# Now check advisory access using sample.bin
+
+cat >$config <<End-Of-File
+# test various explicit access commands
+
+log mandatory maybe sample.bin["bin-100","bin-200","bin-300"]
+log mandatory off sample.bin["bin-700","bin-800","bin-900"]
+
+[access]
+allow $me : enquire, advisory, mandatory;
+allow localhost : enquire, advisory, mandatory;
+allow $other1 : enquire, advisory;
+allow $other2 : enquire;
+disallow *: all;
+End-Of-File
+
+echo >>$here/$seq.full
+cat $config >>$here/$seq.full
+
+echo "killing pmlogger used for enquire tests..."
+$sudo $signal -a -s TERM pmlogger
+_await_logger false
+
+echo
+echo "starting new pmlogger for advisory & mandatory tests..."
+#
+# extra parentheses and I/O redirection so that shell doesn't print pid
+#
+( sh -c "$sudo $PCP_BINADM_DIR/pmlogger -P -c $config -l $log TEST2" >$tmp/sh.log 2>&1 & ) >/dev/null 2>&1
+_await_logger true
+_wait_for_pmlogger $logger_pid $log
+
+echo | tee -a $seq.full
+echo "================" | tee -a $seq.full
+echo "checking advisory access for this host..." | tee -a $seq.full
+echo "(100,400 will change, 700 will not)" | tee -a $seq.full
+pmlc -P <<End-Of-File 2>$errors \
+| _filter
+query sample.bin[100,200,300,400,500,600,700,800,900]
+advisory on 1 hour sample.bin[100]
+advisory on 2 hour sample.bin[400]
+advisory on 3 hour sample.bin[700]
+query sample.bin[100,200,300,400,500,600,700,800,900]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep pmlc
+ cat $log
+ echo Errors: | tee -a $seq.full
+ _filter < $errors
+ echo "pmlogger sh log:"
+ cat $tmp/sh.log
+ exit 1
+fi
+
+echo | tee -a $seq.full
+echo "================" | tee -a $seq.full
+echo "checking advisory access for other1..." | tee -a $seq.full
+echo "(200,500 will change, 800 will not)" | tee -a $seq.full
+ssh -q pcpqa@$other1 "sh -c 'PMCD_CONNECT_TIMEOUT=60 PMCD_REQUEST_TIMEOUT=60 pmlc -h $me -P'" <<End-Of-File 2>$errors \
+| _filter
+query sample.bin[100,200,300,400,500,600,700,800,900]
+advisory on 1 hour sample.bin[200]
+advisory on 2 hour sample.bin[500]
+advisory on 3 hour sample.bin[800]
+query sample.bin[100,200,300,400,500,600,700,800,900]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $seq.full
+ _filter < $errors
+fi
+
+echo | tee -a $seq.full
+echo "================" | tee -a $seq.full
+echo "checking advisory access for other2..." | tee -a $seq.full
+echo "(expect 3 permission errors)" | tee -a $seq.full
+ssh -q pcpqa@$other2 "sh -c 'PMCD_CONNECT_TIMEOUT=60 PMCD_REQUEST_TIMEOUT=60 pmlc -h $me -P'" <<End-Of-File 2>$errors \
+| _filter
+query sample.bin[100,200,300,400,500,600,700,800,900]
+advisory on 1 hour sample.bin[300]
+advisory on 2 hour sample.bin[600]
+advisory on 3 hour sample.bin[900]
+query sample.bin[100,200,300,400,500,600,700,800,900]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $seq.full
+ _filter < $errors
+fi
+
+# Now check mandatory access using sample.bin (same config file as for advisory
+# access)
+
+echo "killing pmlogger used for advisory tests..."
+$sudo $signal -a -s TERM pmlogger
+_await_logger false
+
+echo
+echo "starting new pmlogger for mandatory tests..."
+#
+# extra parentheses and I/O redirection so that shell doesn't print pid
+#
+( sh -c "$sudo $PCP_BINADM_DIR/pmlogger -P -c $config -l $log TEST3" >$tmp/sh.log 2>&1 & ) >/dev/null 2>&1
+_await_logger true
+_wait_for_pmlogger $logger_pid $log
+
+echo | tee -a $seq.full
+echo "================" | tee -a $seq.full
+echo "checking mandatory access for this host..." | tee -a $seq.full
+echo "(100,400,700 will change)" | tee -a $seq.full
+pmlc -P <<End-Of-File 2>$errors \
+| _filter
+query sample.bin[100,200,300,400,500,600,700,800,900]
+mandatory on 3 hour sample.bin[100]
+mandatory on 4 hour sample.bin[400]
+mandatory on 5 hour sample.bin[700]
+query sample.bin[100,200,300,400,500,600,700,800,900]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $seq.full
+ _filter < $errors
+fi
+
+echo | tee -a $seq.full
+echo "================" | tee -a $seq.full
+echo "checking mandatory access for other1..." | tee -a $seq.full
+echo "Expect 3 permission errors" | tee -a $seq.full
+ssh -q pcpqa@$other1 "sh -c 'PMCD_CONNECT_TIMEOUT=60 PMCD_REQUEST_TIMEOUT=60 pmlc -h $me -P'" <<End-Of-File 2>$errors \
+| _filter
+query sample.bin[100,200,300,400,500,600,700,800,900]
+mandatory on 3 hour sample.bin[200]
+mandatory on 4 hour sample.bin[500]
+mandatory on 5 hour sample.bin[800]
+query sample.bin[100,200,300,400,500,600,700,800,900]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $seq.full
+ _filter < $errors
+fi
+
+echo | tee -a $seq.full
+echo "================" | tee -a $seq.full
+echo "checking mandatory access for other2..." | tee -a $seq.full
+echo "Expect 3 permission errors" | tee -a $seq.full
+ssh -q pcpqa@$other2 "sh -c 'PMCD_CONNECT_TIMEOUT=60 PMCD_REQUEST_TIMEOUT=60 pmlc -h $me -P'" <<End-Of-File 2>$errors \
+| _filter
+query sample.bin[100,200,300,400,500,600,700,800,900]
+mandatory on 3 hour sample.bin[300]
+mandatory on 4 hour sample.bin[600]
+mandatory on 5 hour sample.bin[900]
+query sample.bin[100,200,300,400,500,600,700,800,900]
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $seq.full
+ _filter < $errors
+fi
+
+# Check that each pmlogger only accepts one pmlc connection at a time
+
+echo | tee -a $seq.full
+echo "================" | tee -a $seq.full
+echo "checking 2nd pmlc for pmlogger (should fail)..." | tee -a $seq.full
+( ( sleep 5 | pmlc -P ) & ) >/dev/null 2>&1
+sleep 3
+pmlc -P <<End-Of-File 2>$errors \
+| _filter
+quit
+End-Of-File
+if [ -s $errors ]
+then
+ echo Errors: | tee -a $seq.full
+ _filter < $errors
+fi
+
+wait
diff --git a/qa/083.out b/qa/083.out
new file mode 100644
index 0000000..ed47c5a
--- /dev/null
+++ b/qa/083.out
@@ -0,0 +1,253 @@
+QA output created by 083
+this tests access control for pmlogger and exercises pmlc
+
+Running the access tests
+primary pmlogger terminated
+starting test pmlogger...
+primary pmlogger alive
+
+================
+checking enquire access for this host...
+Connected to primary pmlogger at ME
+kernel.all.load
+ mand on nl 1 hour [1 or "1 minute"]
+ adv off nl [5 or "5 minute"]
+ adv off nl [15 or "15 minute"]
+
+Goodbye
+
+================
+checking enquire access for other1...
+Connected to primary pmlogger at ME
+kernel.all.load
+ mand on nl 1 hour [1 or "1 minute"]
+ adv off nl [5 or "5 minute"]
+ adv off nl [15 or "15 minute"]
+
+Goodbye
+
+================
+checking enquire access for other2 (should fail)...
+Goodbye
+Errors:
+Unable to connect to primary pmlogger at ME: No permission to perform requested operation
+Error [<stdin>, line 1]
+Not connected to any pmlogger instance
+
+================
+re-checking enquire access for this host...
+Connected to primary pmlogger at ME
+kernel.all.load
+ mand on nl 1 hour [1 or "1 minute"]
+ adv off nl [5 or "5 minute"]
+ adv off nl [15 or "15 minute"]
+
+Goodbye
+killing pmlogger used for enquire tests...
+primary pmlogger terminated
+
+starting new pmlogger for advisory & mandatory tests...
+primary pmlogger alive
+
+================
+checking advisory access for this host...
+(100,400 will change, 700 will not)
+Connected to primary pmlogger at ME
+sample.bin
+ adv off nl [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ adv off nl [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand off nl [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [700 or "bin-700"]
+
+sample.bin
+ adv on nl 1 hour [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ adv on nl 2 hour [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand off nl [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Goodbye
+
+================
+checking advisory access for other1...
+(200,500 will change, 800 will not)
+Connected to primary pmlogger at ME
+sample.bin
+ adv on nl 1 hour [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ adv on nl 2 hour [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand off nl [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [800 or "bin-800"]
+
+sample.bin
+ adv on nl 1 hour [100 or "bin-100"]
+ adv on nl 1 hour [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ adv on nl 2 hour [400 or "bin-400"]
+ adv on nl 2 hour [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand off nl [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Goodbye
+
+================
+checking advisory access for other2...
+(expect 3 permission errors)
+Connected to primary pmlogger at ME
+sample.bin
+ adv on nl 1 hour [100 or "bin-100"]
+ adv on nl 1 hour [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ adv on nl 2 hour [400 or "bin-400"]
+ adv on nl 2 hour [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand off nl [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+sample.bin
+ adv on nl 1 hour [100 or "bin-100"]
+ adv on nl 1 hour [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ adv on nl 2 hour [400 or "bin-400"]
+ adv on nl 2 hour [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand off nl [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Goodbye
+Errors:
+Error: No permission to perform requested operation
+Error: No permission to perform requested operation
+Error: No permission to perform requested operation
+killing pmlogger used for advisory tests...
+primary pmlogger terminated
+
+starting new pmlogger for mandatory tests...
+primary pmlogger alive
+
+================
+checking mandatory access for this host...
+(100,400,700 will change)
+Connected to primary pmlogger at ME
+sample.bin
+ adv off nl [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ adv off nl [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand off nl [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+sample.bin
+ mand on nl 3 hour [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ mand on nl 4 hour [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand on nl 5 hour [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Goodbye
+
+================
+checking mandatory access for other1...
+Expect 3 permission errors
+Connected to primary pmlogger at ME
+sample.bin
+ mand on nl 3 hour [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ mand on nl 4 hour [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand on nl 5 hour [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+sample.bin
+ mand on nl 3 hour [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ mand on nl 4 hour [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand on nl 5 hour [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Goodbye
+Errors:
+Error: No permission to perform requested operation
+Error: No permission to perform requested operation
+Error: No permission to perform requested operation
+
+================
+checking mandatory access for other2...
+Expect 3 permission errors
+Connected to primary pmlogger at ME
+sample.bin
+ mand on nl 3 hour [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ mand on nl 4 hour [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand on nl 5 hour [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+sample.bin
+ mand on nl 3 hour [100 or "bin-100"]
+ adv off nl [200 or "bin-200"]
+ adv off nl [300 or "bin-300"]
+ mand on nl 4 hour [400 or "bin-400"]
+ adv off nl [500 or "bin-500"]
+ adv off nl [600 or "bin-600"]
+ mand on nl 5 hour [700 or "bin-700"]
+ mand off nl [800 or "bin-800"]
+ mand off nl [900 or "bin-900"]
+
+Goodbye
+Errors:
+Error: No permission to perform requested operation
+Error: No permission to perform requested operation
+Error: No permission to perform requested operation
+
+================
+checking 2nd pmlc for pmlogger (should fail)...
+Goodbye
+Errors:
+Unable to connect to primary pmlogger at ME: Address already in use
+Restarting pmcd and friends...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/084 b/qa/084
new file mode 100755
index 0000000..2425d04
--- /dev/null
+++ b/qa/084
@@ -0,0 +1,19 @@
+#! /bin/sh
+# PCP QA Test No. 084
+# twiddle bits in the pmlogger/pmlc state word
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+$sudo rm -f $tmp.*
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/pmlcmacro
diff --git a/qa/084.out b/qa/084.out
new file mode 100644
index 0000000..0a6dd35
--- /dev/null
+++ b/qa/084.out
@@ -0,0 +1,17 @@
+QA output created by 084
+low-order bits: 0
+low-order bits: 1
+low-order bits: 2
+low-order bits: 3
+low-order bits: 4
+low-order bits: 5
+low-order bits: 6
+low-order bits: 7
+low-order bits: 8
+low-order bits: 9
+low-order bits: 10
+low-order bits: 11
+low-order bits: 12
+low-order bits: 13
+low-order bits: 14
+low-order bits: 15
diff --git a/qa/085 b/qa/085
new file mode 100755
index 0000000..8c2ba8a
--- /dev/null
+++ b/qa/085
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 085
+# pmlogger specs with internal instance identifiers
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+_filter()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/[Ss]ignalled (signal=.*), exiting/d' \
+ -e "s;$tmp;MYPID;g" \
+ -e 's/line [345]/line N/'
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.config
+log mandatory on 1 sec {
+ sample.bin [ "bin-100" ]
+ sample.bin [ 200 ]
+ sample.bin [ "bin-not-here" ]
+ sample.bin [ 100000 ]
+}
+End-of-File
+
+pmlogger -L -c $tmp.config -l $tmp.out -s 1 $tmp >$tmp.err 2>&1 &
+killer=$!
+((sleep 4; $signal -s TERM $killer)&) >/dev/null 2>&1
+wait
+
+cat $tmp.err $tmp.out | _filter
+
+exit 0
diff --git a/qa/085.out b/qa/085.out
new file mode 100644
index 0000000..8d01346
--- /dev/null
+++ b/qa/085.out
@@ -0,0 +1,13 @@
+QA output created by 085
+Log for pmlogger on HOST started DATE
+
+Warning [MYPID.config, line N]
+Instance "bin-not-here" is not defined for the metric "sample.bin"
+Warning [MYPID.config, line N]
+Instance "100000" is not defined for the metric "sample.bin"
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
diff --git a/qa/086 b/qa/086
new file mode 100755
index 0000000..f53aa74
--- /dev/null
+++ b/qa/086
@@ -0,0 +1,34 @@
+#! /bin/sh
+# PCP QA Test No. 086
+# timezone exercises
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+me=`hostname`
+
+other1=bogus
+other2=bogus
+
+eval `./getpmcdhosts -L -n 2 | \
+ $PCP_AWK_PROG '{ if (NF == 2) printf("other1=%s\nother2=%s\n",$1,$2); }'`
+[ "$other1" = Xbogus -o "X$other2" = Xbogus ] && \
+ _notrun "Unable to find two other hosts"
+
+#
+# only interested in failure or output on stderr
+src/whichtimezone $me $other1 $other2 \
+ | sed -e '/Trying/d' -e '/^zone/d' -e '/^$/d'
+exit $?
diff --git a/qa/086.out b/qa/086.out
new file mode 100644
index 0000000..7775dec
--- /dev/null
+++ b/qa/086.out
@@ -0,0 +1 @@
+QA output created by 086
diff --git a/qa/087 b/qa/087
new file mode 100755
index 0000000..5a8f4e3
--- /dev/null
+++ b/qa/087
@@ -0,0 +1,72 @@
+#! /bin/sh
+# PCP QA Test No. 087
+# interpolate mode
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ cat >$tmp.out
+ sed <$tmp.out \
+ -e '/sample.seconds:/{
+s/no current values no prior values /value OK/
+s/no prior values /value OK/
+s/delta: [0-9]$/value OK/
+s/delta: 1[0-1]$/value OK/
+}' \
+ -e '/sample.milliseconds:/{
+s;delta: 10[01][0-9]$;delta: 1000 +/- 20;
+s;delta: 9[89][0-9]$;delta: 1000 +/- 20;
+s;delta: 40[0123][0-9]$;delta: 4000 +/- 40;
+s;delta: 39[6789][0-9]$;delta: 4000 +/- 40;
+s;delta: 50[0123][0-9]$;delta: 5000 +/- 40;
+s;delta: 49[6789][0-9]$;delta: 5000 +/- 40;
+s;delta: 80[012345][0-9]$;delta: 8000 +/- 60;
+s;delta: 79[456789][0-9]$;delta: 8000 +/- 60;
+s;delta: 100[012345][0-9]$;delta: 10000 +/- 60;
+s;delta: 99[456789][0-9]$;delta: 10000 +/- 60;
+}' \
+ -e '/samples required/d'
+
+# warning: indexes below are "desired samples", output shows actual
+# samples ... filtering uses former and reports latter.
+#
+ $PCP_AWK_PROG <$tmp.out '
+BEGIN { s = '$1'
+ lo[50] = 33; hi[50] = 50
+ lo[20] = 35; hi[20] = 45
+ lo[16] = 35; hi[16] = 45
+ lo[10] = 34; hi[10] = 40
+ lo[8] = 34; hi[8] = 40
+ }
+/samples required/ { if (lo[s] <= $4 && $4 <= hi[s])
+ print $1 " samples required " lo[s] "-" hi[s] " log reads"
+ else
+ print $0 " ... no. log reads unexpected"
+ }'
+}
+
+# real QA test starts here
+for arch in src/interp src/mv-interp src/noti-interp
+do
+ echo
+ echo "=== $arch ==="
+ for delta in 1 4 5 8 10
+ do
+ samples=`expr 80 / $delta`
+ [ $samples -gt 50 ] && samples=50
+ echo ""
+ echo "interpolate $samples, $delta seconds appart"
+ src/interp0 -n src/root_irix -a $arch -t $delta -s $samples | _filter $samples
+ done
+done
diff --git a/qa/087.out b/qa/087.out
new file mode 100644
index 0000000..cf4cbd1
--- /dev/null
+++ b/qa/087.out
@@ -0,0 +1,1474 @@
+QA output created by 087
+
+=== src/interp ===
+
+interpolate 50, 1 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 2, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 3, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 4, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 5, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 6, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 7, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 8, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 9, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 10, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 11, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 12, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 13, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 14, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 15, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 16, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 17, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 18, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 19, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 20, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 21, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 22, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 23, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 24, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 25, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 26, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 27, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 28, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 29, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 30, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 31, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 32, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 33, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 34, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 35, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 36, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 37, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 38, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 39, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 40, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 41, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 42, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 43, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 44, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 45, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 46, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 47, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 48, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 49, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+50 samples required 33-50 log reads
+
+interpolate 20, 4 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 2, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 3, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 4, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 5, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 6, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 7, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 8, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 9, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 10, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 11, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 12, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 13, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 14, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 15, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 16, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+sample[17] pmFetch: End of PCP archive log
+
+17 samples required 35-45 log reads
+
+interpolate 16, 5 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 2, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 3, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 4, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 5, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 6, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 7, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 8, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 9, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 10, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 11, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 12, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 13, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+sample[14] pmFetch: End of PCP archive log
+
+14 samples required 35-45 log reads
+
+interpolate 10, 8 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 2, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 3, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 4, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 5, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 6, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 7, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 8, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+sample[9] pmFetch: End of PCP archive log
+
+9 samples required 34-40 log reads
+
+interpolate 8, 10 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 2, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 3, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 4, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 5, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 6, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+sample[7] pmFetch: End of PCP archive log
+
+7 samples required 34-40 log reads
+
+=== src/mv-interp ===
+
+interpolate 50, 1 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 2, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 3, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 4, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 5, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 6, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 7, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 8, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 9, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 10, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 11, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 12, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 13, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 14, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 15, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 16, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 17, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 18, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 19, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 20, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 21, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 22, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 23, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 24, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 25, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 26, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 27, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 28, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 29, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 30, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 31, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 32, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 33, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 34, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 35, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 36, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 37, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 38, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 39, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 40, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 41, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 42, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 43, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 44, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 45, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 46, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 47, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 48, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 49, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+50 samples required 33-50 log reads
+
+interpolate 20, 4 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 2, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 3, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 4, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 5, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 6, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 7, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 8, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 9, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 10, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 11, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 12, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 13, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 14, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 15, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 16, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+sample[17] pmFetch: End of PCP archive log
+
+17 samples required 35-45 log reads
+
+interpolate 16, 5 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 2, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 3, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 4, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 5, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 6, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 7, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 8, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 9, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 10, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 11, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 12, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 13, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+sample[14] pmFetch: End of PCP archive log
+
+14 samples required 35-45 log reads
+
+interpolate 10, 8 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 2, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 3, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 4, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 5, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 6, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 7, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 8, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+sample[9] pmFetch: End of PCP archive log
+
+9 samples required 34-40 log reads
+
+interpolate 8, 10 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 2, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 3, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 4, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 5, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 6, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+sample[7] pmFetch: End of PCP archive log
+
+7 samples required 34-40 log reads
+
+=== src/noti-interp ===
+
+interpolate 50, 1 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 2, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 3, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 4, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 5, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 6, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 7, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 8, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 9, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 10, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 11, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 12, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 13, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 14, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 15, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 16, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 17, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 18, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 19, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 20, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 21, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 22, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 23, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 24, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 25, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 26, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 27, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 28, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 29, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 30, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 31, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 32, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 33, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 34, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 35, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 36, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 37, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 38, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 39, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 40, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 41, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 42, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 43, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 44, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 45, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 46, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 47, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 48, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+sample 49, delta time=1.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 1000 +/- 20
+
+50 samples required 33-50 log reads
+
+interpolate 20, 4 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 2, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 3, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 4, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 5, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 6, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 7, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 8, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 9, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 10, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 11, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 12, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 13, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 14, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 15, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+
+sample 16, delta time=4.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 4000 +/- 40
+sample[17] pmFetch: End of PCP archive log
+
+17 samples required 35-45 log reads
+
+interpolate 16, 5 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 2, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 3, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 4, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 5, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 6, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 7, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 8, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 9, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 10, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 11, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 12, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+
+sample 13, delta time=5.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 5000 +/- 40
+sample[14] pmFetch: End of PCP archive log
+
+14 samples required 35-45 log reads
+
+interpolate 10, 8 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 2, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 3, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 4, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 5, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 6, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 7, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+
+sample 8, delta time=8.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 8000 +/- 60
+sample[9] pmFetch: End of PCP archive log
+
+9 samples required 34-40 log reads
+
+interpolate 8, 10 seconds appart
+Warning: pmLookupDesc(sample.drift): Metric not defined in the PCP archive log
+
+sample 1, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 2, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 3, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 4, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 5, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+
+sample 6, delta time=10.000 secs
+sample.seconds: value OK
+sample.drift: current error Metric not defined in the PCP archive log
+sample.milliseconds: delta: 10000 +/- 60
+sample[7] pmFetch: End of PCP archive log
+
+7 samples required 34-40 log reads
diff --git a/qa/088 b/qa/088
new file mode 100755
index 0000000..d0dd420
--- /dev/null
+++ b/qa/088
@@ -0,0 +1,54 @@
+#! /bin/sh
+# PCP QA Test No. 088
+# interpolate mode, constant values, different logging rates
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter()
+{
+ sed \
+ -e '/host:/d' \
+ -e '/start:/d' \
+ -e '/end:/d' \
+ -e 's/^..:..:..\..../TIMESTAMP /' \
+ | LC_COLLATE=POSIX sort \
+ | uniq
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/bar src/mv-bar src/noti-bar
+do
+ # get the time of the first sample
+ first_time=`pmval -U $arch -s1 sampledso.bin | tail -1 | cut -f1 -d ' '`
+
+ pmval -U $arch -S "@$first_time" \
+ -i bin-100,bin-500,bin-700,bin-900 sampledso.bin \
+ 2>/dev/null | _filter
+
+ pmval -a $arch -S "@$first_time" -t 0.5 \
+ -i bin-100,bin-500,bin-700,bin-900 sampledso.bin \
+ 2>/dev/null | _filter
+done
+
+# Test for bug #500237
+# (this should never print `end of log' - ie. there must be a timestamp,
+# even though the single sample s1 can't have been rate converted).
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+pmval -a src/late -s1 -z sampledso.bin
diff --git a/qa/088.out b/qa/088.out
new file mode 100644
index 0000000..0f5d0a9
--- /dev/null
+++ b/qa/088.out
@@ -0,0 +1,78 @@
+QA output created by 088
+
+ bin-100 bin-500 bin-700 bin-900
+TIMESTAMP ? ? ? 900
+TIMESTAMP ? 500 ? ?
+TIMESTAMP 100 ? ? ?
+archive: src/bar
+metric: sampledso.bin
+samples: all
+semantics: instantaneous value
+units: none
+
+ bin-100 bin-500 bin-700 bin-900
+TIMESTAMP 100 ? ? 900
+TIMESTAMP 100 500 ? ?
+TIMESTAMP 100 500 ? 900
+TIMESTAMP No values available
+archive: src/bar
+interval: 0.50 sec
+metric: sampledso.bin
+samples: 11
+semantics: instantaneous value
+units: none
+
+ bin-100 bin-500 bin-700 bin-900
+TIMESTAMP ? ? ? 900
+TIMESTAMP ? 500 ? ?
+TIMESTAMP 100 ? ? ?
+archive: src/mv-bar
+metric: sampledso.bin
+samples: all
+semantics: instantaneous value
+units: none
+
+ bin-100 bin-500 bin-700 bin-900
+TIMESTAMP 100 ? ? 900
+TIMESTAMP 100 500 ? ?
+TIMESTAMP 100 500 ? 900
+TIMESTAMP No values available
+archive: src/mv-bar
+interval: 0.50 sec
+metric: sampledso.bin
+samples: 11
+semantics: instantaneous value
+units: none
+
+ bin-100 bin-500 bin-700 bin-900
+TIMESTAMP ? ? ? 900
+TIMESTAMP ? 500 ? ?
+TIMESTAMP 100 ? ? ?
+archive: src/noti-bar
+metric: sampledso.bin
+samples: all
+semantics: instantaneous value
+units: none
+
+ bin-100 bin-500 bin-700 bin-900
+TIMESTAMP 100 ? ? 900
+TIMESTAMP 100 500 ? ?
+TIMESTAMP 100 500 ? 900
+TIMESTAMP No values available
+archive: src/noti-bar
+interval: 0.50 sec
+metric: sampledso.bin
+samples: 11
+semantics: instantaneous value
+units: none
+Note: timezone set to local timezone of host "rattle" from archive
+
+metric: sampledso.bin
+archive: src/late
+host: rattle
+start: Sat Jun 14 23:23:02 1997
+end: Sat Jun 14 23:23:08 1997
+semantics: instantaneous value
+units: none
+samples: 1
+23:23:02.851 No values available
diff --git a/qa/089 b/qa/089
new file mode 100755
index 0000000..cfe88bd
--- /dev/null
+++ b/qa/089
@@ -0,0 +1,32 @@
+#! /bin/sh
+# PCP QA Test No. 089
+# interpolate a monotonic increasing value
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/^$/d' \
+ -e '/^[^0-9]/d' \
+ | $PCP_AWK_PROG '
+$2 <= 0.95 || $2 >= 1.05 { print "oops: " $0; next }
+ { print "rate close to 1" }'
+}
+
+# real QA test starts here
+
+# get the time of the first sample
+first_time=`pmval -U src/bar -s2 sampledso.milliseconds | tail -1 | cut -f1 -d ' '`
+
+pmval -S "@$first_time" -t 0.01 -s 485 -a src/bar sampledso.milliseconds 2>/dev/null | _filter
diff --git a/qa/089.out b/qa/089.out
new file mode 100644
index 0000000..3cfc214
--- /dev/null
+++ b/qa/089.out
@@ -0,0 +1,486 @@
+QA output created by 089
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
+rate close to 1
diff --git a/qa/090 b/qa/090
new file mode 100755
index 0000000..b1019a5
--- /dev/null
+++ b/qa/090
@@ -0,0 +1,58 @@
+#! /bin/sh
+# PCP QA Test No. 090
+# more interpolate trickery
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ cat >$tmp.out
+
+ grep 'sample ' $tmp.out
+ grep 'log reads' $tmp.out \
+ | $PCP_AWK_PROG '
+ { if ('$4' <= $4 && $4 <= '$5')
+ print $1 " samples required " '$4' "-" '$5' " log reads"
+ else
+ print $0 " ... no. log reads unexpected"
+ }'
+
+ ok=`LC_COLLATE=POSIX sort <$tmp.out \
+ | uniq -c \
+ | tee $tmp.tee \
+ | grep "sampledso.milliseconds: delta: " \
+ | $PCP_AWK_PROG '
+'$1' <= $4 && $4 <= '$2' { total += $1 }
+END { print total }'`
+ if [ "$ok" -gt $3 ]
+ then
+ echo "more than $3 data values in the range $1 - $2"
+ else
+ echo "value failure ... got: $ok expected: >= $3 (data values in the range $1 - $2)"
+ cat $tmp.tee
+ fi
+}
+
+# real QA test starts here
+for arch in src/ok-bigbin src/ok-mv-bigbin
+do
+ echo
+ echo "=== $arch ==="
+ echo "100 samples, 80 msec apart"
+ src/interp0 -a $arch -s 100 -t 0.08 sampledso.milliseconds \
+ 2>/dev/null | _filter 75 85 85 400 450
+
+ echo "100 samples, 8 msec appart"
+ src/interp0 -a $arch -s 100 -t 0.008 sampledso.milliseconds \
+ 2>/dev/null | _filter 6 9 85 40 110
+done
diff --git a/qa/090.out b/qa/090.out
new file mode 100644
index 0000000..42806e3
--- /dev/null
+++ b/qa/090.out
@@ -0,0 +1,413 @@
+QA output created by 090
+
+=== src/ok-bigbin ===
+100 samples, 80 msec apart
+sample 1, delta time=0.080 secs
+sample 2, delta time=0.080 secs
+sample 3, delta time=0.080 secs
+sample 4, delta time=0.080 secs
+sample 5, delta time=0.080 secs
+sample 6, delta time=0.080 secs
+sample 7, delta time=0.080 secs
+sample 8, delta time=0.080 secs
+sample 9, delta time=0.080 secs
+sample 10, delta time=0.080 secs
+sample 11, delta time=0.080 secs
+sample 12, delta time=0.080 secs
+sample 13, delta time=0.080 secs
+sample 14, delta time=0.080 secs
+sample 15, delta time=0.080 secs
+sample 16, delta time=0.080 secs
+sample 17, delta time=0.080 secs
+sample 18, delta time=0.080 secs
+sample 19, delta time=0.080 secs
+sample 20, delta time=0.080 secs
+sample 21, delta time=0.080 secs
+sample 22, delta time=0.080 secs
+sample 23, delta time=0.080 secs
+sample 24, delta time=0.080 secs
+sample 25, delta time=0.080 secs
+sample 26, delta time=0.080 secs
+sample 27, delta time=0.080 secs
+sample 28, delta time=0.080 secs
+sample 29, delta time=0.080 secs
+sample 30, delta time=0.080 secs
+sample 31, delta time=0.080 secs
+sample 32, delta time=0.080 secs
+sample 33, delta time=0.080 secs
+sample 34, delta time=0.080 secs
+sample 35, delta time=0.080 secs
+sample 36, delta time=0.080 secs
+sample 37, delta time=0.080 secs
+sample 38, delta time=0.080 secs
+sample 39, delta time=0.080 secs
+sample 40, delta time=0.080 secs
+sample 41, delta time=0.080 secs
+sample 42, delta time=0.080 secs
+sample 43, delta time=0.080 secs
+sample 44, delta time=0.080 secs
+sample 45, delta time=0.080 secs
+sample 46, delta time=0.080 secs
+sample 47, delta time=0.080 secs
+sample 48, delta time=0.080 secs
+sample 49, delta time=0.080 secs
+sample 50, delta time=0.080 secs
+sample 51, delta time=0.080 secs
+sample 52, delta time=0.080 secs
+sample 53, delta time=0.080 secs
+sample 54, delta time=0.080 secs
+sample 55, delta time=0.080 secs
+sample 56, delta time=0.080 secs
+sample 57, delta time=0.080 secs
+sample 58, delta time=0.080 secs
+sample 59, delta time=0.080 secs
+sample 60, delta time=0.080 secs
+sample 61, delta time=0.080 secs
+sample 62, delta time=0.080 secs
+sample 63, delta time=0.080 secs
+sample 64, delta time=0.080 secs
+sample 65, delta time=0.080 secs
+sample 66, delta time=0.080 secs
+sample 67, delta time=0.080 secs
+sample 68, delta time=0.080 secs
+sample 69, delta time=0.080 secs
+sample 70, delta time=0.080 secs
+sample 71, delta time=0.080 secs
+sample 72, delta time=0.080 secs
+sample 73, delta time=0.080 secs
+sample 74, delta time=0.080 secs
+sample 75, delta time=0.080 secs
+sample 76, delta time=0.080 secs
+sample 77, delta time=0.080 secs
+sample 78, delta time=0.080 secs
+sample 79, delta time=0.080 secs
+sample 80, delta time=0.080 secs
+sample 81, delta time=0.080 secs
+sample 82, delta time=0.080 secs
+sample 83, delta time=0.080 secs
+sample 84, delta time=0.080 secs
+sample 85, delta time=0.080 secs
+sample 86, delta time=0.080 secs
+sample 87, delta time=0.080 secs
+sample 88, delta time=0.080 secs
+sample 89, delta time=0.080 secs
+sample 90, delta time=0.080 secs
+sample 91, delta time=0.080 secs
+sample 92, delta time=0.080 secs
+sample 93, delta time=0.080 secs
+sample 94, delta time=0.080 secs
+sample 95, delta time=0.080 secs
+sample 96, delta time=0.080 secs
+sample 97, delta time=0.080 secs
+sample 98, delta time=0.080 secs
+sample 99, delta time=0.080 secs
+100 samples required 400-450 log reads
+more than 85 data values in the range 75 - 85
+100 samples, 8 msec appart
+sample 1, delta time=0.008 secs
+sample 2, delta time=0.008 secs
+sample 3, delta time=0.008 secs
+sample 4, delta time=0.008 secs
+sample 5, delta time=0.008 secs
+sample 6, delta time=0.008 secs
+sample 7, delta time=0.008 secs
+sample 8, delta time=0.008 secs
+sample 9, delta time=0.008 secs
+sample 10, delta time=0.008 secs
+sample 11, delta time=0.008 secs
+sample 12, delta time=0.008 secs
+sample 13, delta time=0.008 secs
+sample 14, delta time=0.008 secs
+sample 15, delta time=0.008 secs
+sample 16, delta time=0.008 secs
+sample 17, delta time=0.008 secs
+sample 18, delta time=0.008 secs
+sample 19, delta time=0.008 secs
+sample 20, delta time=0.008 secs
+sample 21, delta time=0.008 secs
+sample 22, delta time=0.008 secs
+sample 23, delta time=0.008 secs
+sample 24, delta time=0.008 secs
+sample 25, delta time=0.008 secs
+sample 26, delta time=0.008 secs
+sample 27, delta time=0.008 secs
+sample 28, delta time=0.008 secs
+sample 29, delta time=0.008 secs
+sample 30, delta time=0.008 secs
+sample 31, delta time=0.008 secs
+sample 32, delta time=0.008 secs
+sample 33, delta time=0.008 secs
+sample 34, delta time=0.008 secs
+sample 35, delta time=0.008 secs
+sample 36, delta time=0.008 secs
+sample 37, delta time=0.008 secs
+sample 38, delta time=0.008 secs
+sample 39, delta time=0.008 secs
+sample 40, delta time=0.008 secs
+sample 41, delta time=0.008 secs
+sample 42, delta time=0.008 secs
+sample 43, delta time=0.008 secs
+sample 44, delta time=0.008 secs
+sample 45, delta time=0.008 secs
+sample 46, delta time=0.008 secs
+sample 47, delta time=0.008 secs
+sample 48, delta time=0.008 secs
+sample 49, delta time=0.008 secs
+sample 50, delta time=0.008 secs
+sample 51, delta time=0.008 secs
+sample 52, delta time=0.008 secs
+sample 53, delta time=0.008 secs
+sample 54, delta time=0.008 secs
+sample 55, delta time=0.008 secs
+sample 56, delta time=0.008 secs
+sample 57, delta time=0.008 secs
+sample 58, delta time=0.008 secs
+sample 59, delta time=0.008 secs
+sample 60, delta time=0.008 secs
+sample 61, delta time=0.008 secs
+sample 62, delta time=0.008 secs
+sample 63, delta time=0.008 secs
+sample 64, delta time=0.008 secs
+sample 65, delta time=0.008 secs
+sample 66, delta time=0.008 secs
+sample 67, delta time=0.008 secs
+sample 68, delta time=0.008 secs
+sample 69, delta time=0.008 secs
+sample 70, delta time=0.008 secs
+sample 71, delta time=0.008 secs
+sample 72, delta time=0.008 secs
+sample 73, delta time=0.008 secs
+sample 74, delta time=0.008 secs
+sample 75, delta time=0.008 secs
+sample 76, delta time=0.008 secs
+sample 77, delta time=0.008 secs
+sample 78, delta time=0.008 secs
+sample 79, delta time=0.008 secs
+sample 80, delta time=0.008 secs
+sample 81, delta time=0.008 secs
+sample 82, delta time=0.008 secs
+sample 83, delta time=0.008 secs
+sample 84, delta time=0.008 secs
+sample 85, delta time=0.008 secs
+sample 86, delta time=0.008 secs
+sample 87, delta time=0.008 secs
+sample 88, delta time=0.008 secs
+sample 89, delta time=0.008 secs
+sample 90, delta time=0.008 secs
+sample 91, delta time=0.008 secs
+sample 92, delta time=0.008 secs
+sample 93, delta time=0.008 secs
+sample 94, delta time=0.008 secs
+sample 95, delta time=0.008 secs
+sample 96, delta time=0.008 secs
+sample 97, delta time=0.008 secs
+sample 98, delta time=0.008 secs
+sample 99, delta time=0.008 secs
+100 samples required 40-110 log reads
+more than 85 data values in the range 6 - 9
+
+=== src/ok-mv-bigbin ===
+100 samples, 80 msec apart
+sample 1, delta time=0.080 secs
+sample 2, delta time=0.080 secs
+sample 3, delta time=0.080 secs
+sample 4, delta time=0.080 secs
+sample 5, delta time=0.080 secs
+sample 6, delta time=0.080 secs
+sample 7, delta time=0.080 secs
+sample 8, delta time=0.080 secs
+sample 9, delta time=0.080 secs
+sample 10, delta time=0.080 secs
+sample 11, delta time=0.080 secs
+sample 12, delta time=0.080 secs
+sample 13, delta time=0.080 secs
+sample 14, delta time=0.080 secs
+sample 15, delta time=0.080 secs
+sample 16, delta time=0.080 secs
+sample 17, delta time=0.080 secs
+sample 18, delta time=0.080 secs
+sample 19, delta time=0.080 secs
+sample 20, delta time=0.080 secs
+sample 21, delta time=0.080 secs
+sample 22, delta time=0.080 secs
+sample 23, delta time=0.080 secs
+sample 24, delta time=0.080 secs
+sample 25, delta time=0.080 secs
+sample 26, delta time=0.080 secs
+sample 27, delta time=0.080 secs
+sample 28, delta time=0.080 secs
+sample 29, delta time=0.080 secs
+sample 30, delta time=0.080 secs
+sample 31, delta time=0.080 secs
+sample 32, delta time=0.080 secs
+sample 33, delta time=0.080 secs
+sample 34, delta time=0.080 secs
+sample 35, delta time=0.080 secs
+sample 36, delta time=0.080 secs
+sample 37, delta time=0.080 secs
+sample 38, delta time=0.080 secs
+sample 39, delta time=0.080 secs
+sample 40, delta time=0.080 secs
+sample 41, delta time=0.080 secs
+sample 42, delta time=0.080 secs
+sample 43, delta time=0.080 secs
+sample 44, delta time=0.080 secs
+sample 45, delta time=0.080 secs
+sample 46, delta time=0.080 secs
+sample 47, delta time=0.080 secs
+sample 48, delta time=0.080 secs
+sample 49, delta time=0.080 secs
+sample 50, delta time=0.080 secs
+sample 51, delta time=0.080 secs
+sample 52, delta time=0.080 secs
+sample 53, delta time=0.080 secs
+sample 54, delta time=0.080 secs
+sample 55, delta time=0.080 secs
+sample 56, delta time=0.080 secs
+sample 57, delta time=0.080 secs
+sample 58, delta time=0.080 secs
+sample 59, delta time=0.080 secs
+sample 60, delta time=0.080 secs
+sample 61, delta time=0.080 secs
+sample 62, delta time=0.080 secs
+sample 63, delta time=0.080 secs
+sample 64, delta time=0.080 secs
+sample 65, delta time=0.080 secs
+sample 66, delta time=0.080 secs
+sample 67, delta time=0.080 secs
+sample 68, delta time=0.080 secs
+sample 69, delta time=0.080 secs
+sample 70, delta time=0.080 secs
+sample 71, delta time=0.080 secs
+sample 72, delta time=0.080 secs
+sample 73, delta time=0.080 secs
+sample 74, delta time=0.080 secs
+sample 75, delta time=0.080 secs
+sample 76, delta time=0.080 secs
+sample 77, delta time=0.080 secs
+sample 78, delta time=0.080 secs
+sample 79, delta time=0.080 secs
+sample 80, delta time=0.080 secs
+sample 81, delta time=0.080 secs
+sample 82, delta time=0.080 secs
+sample 83, delta time=0.080 secs
+sample 84, delta time=0.080 secs
+sample 85, delta time=0.080 secs
+sample 86, delta time=0.080 secs
+sample 87, delta time=0.080 secs
+sample 88, delta time=0.080 secs
+sample 89, delta time=0.080 secs
+sample 90, delta time=0.080 secs
+sample 91, delta time=0.080 secs
+sample 92, delta time=0.080 secs
+sample 93, delta time=0.080 secs
+sample 94, delta time=0.080 secs
+sample 95, delta time=0.080 secs
+sample 96, delta time=0.080 secs
+sample 97, delta time=0.080 secs
+sample 98, delta time=0.080 secs
+sample 99, delta time=0.080 secs
+100 samples required 400-450 log reads
+more than 85 data values in the range 75 - 85
+100 samples, 8 msec appart
+sample 1, delta time=0.008 secs
+sample 2, delta time=0.008 secs
+sample 3, delta time=0.008 secs
+sample 4, delta time=0.008 secs
+sample 5, delta time=0.008 secs
+sample 6, delta time=0.008 secs
+sample 7, delta time=0.008 secs
+sample 8, delta time=0.008 secs
+sample 9, delta time=0.008 secs
+sample 10, delta time=0.008 secs
+sample 11, delta time=0.008 secs
+sample 12, delta time=0.008 secs
+sample 13, delta time=0.008 secs
+sample 14, delta time=0.008 secs
+sample 15, delta time=0.008 secs
+sample 16, delta time=0.008 secs
+sample 17, delta time=0.008 secs
+sample 18, delta time=0.008 secs
+sample 19, delta time=0.008 secs
+sample 20, delta time=0.008 secs
+sample 21, delta time=0.008 secs
+sample 22, delta time=0.008 secs
+sample 23, delta time=0.008 secs
+sample 24, delta time=0.008 secs
+sample 25, delta time=0.008 secs
+sample 26, delta time=0.008 secs
+sample 27, delta time=0.008 secs
+sample 28, delta time=0.008 secs
+sample 29, delta time=0.008 secs
+sample 30, delta time=0.008 secs
+sample 31, delta time=0.008 secs
+sample 32, delta time=0.008 secs
+sample 33, delta time=0.008 secs
+sample 34, delta time=0.008 secs
+sample 35, delta time=0.008 secs
+sample 36, delta time=0.008 secs
+sample 37, delta time=0.008 secs
+sample 38, delta time=0.008 secs
+sample 39, delta time=0.008 secs
+sample 40, delta time=0.008 secs
+sample 41, delta time=0.008 secs
+sample 42, delta time=0.008 secs
+sample 43, delta time=0.008 secs
+sample 44, delta time=0.008 secs
+sample 45, delta time=0.008 secs
+sample 46, delta time=0.008 secs
+sample 47, delta time=0.008 secs
+sample 48, delta time=0.008 secs
+sample 49, delta time=0.008 secs
+sample 50, delta time=0.008 secs
+sample 51, delta time=0.008 secs
+sample 52, delta time=0.008 secs
+sample 53, delta time=0.008 secs
+sample 54, delta time=0.008 secs
+sample 55, delta time=0.008 secs
+sample 56, delta time=0.008 secs
+sample 57, delta time=0.008 secs
+sample 58, delta time=0.008 secs
+sample 59, delta time=0.008 secs
+sample 60, delta time=0.008 secs
+sample 61, delta time=0.008 secs
+sample 62, delta time=0.008 secs
+sample 63, delta time=0.008 secs
+sample 64, delta time=0.008 secs
+sample 65, delta time=0.008 secs
+sample 66, delta time=0.008 secs
+sample 67, delta time=0.008 secs
+sample 68, delta time=0.008 secs
+sample 69, delta time=0.008 secs
+sample 70, delta time=0.008 secs
+sample 71, delta time=0.008 secs
+sample 72, delta time=0.008 secs
+sample 73, delta time=0.008 secs
+sample 74, delta time=0.008 secs
+sample 75, delta time=0.008 secs
+sample 76, delta time=0.008 secs
+sample 77, delta time=0.008 secs
+sample 78, delta time=0.008 secs
+sample 79, delta time=0.008 secs
+sample 80, delta time=0.008 secs
+sample 81, delta time=0.008 secs
+sample 82, delta time=0.008 secs
+sample 83, delta time=0.008 secs
+sample 84, delta time=0.008 secs
+sample 85, delta time=0.008 secs
+sample 86, delta time=0.008 secs
+sample 87, delta time=0.008 secs
+sample 88, delta time=0.008 secs
+sample 89, delta time=0.008 secs
+sample 90, delta time=0.008 secs
+sample 91, delta time=0.008 secs
+sample 92, delta time=0.008 secs
+sample 93, delta time=0.008 secs
+sample 94, delta time=0.008 secs
+sample 95, delta time=0.008 secs
+sample 96, delta time=0.008 secs
+sample 97, delta time=0.008 secs
+sample 98, delta time=0.008 secs
+sample 99, delta time=0.008 secs
+100 samples required 40-110 log reads
+more than 85 data values in the range 6 - 9
diff --git a/qa/091 b/qa/091
new file mode 100755
index 0000000..4c28968
--- /dev/null
+++ b/qa/091
@@ -0,0 +1,87 @@
+#! /bin/sh
+# PCP QA Test No. 091
+# interpolate mode backwards
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter_logreads()
+{
+ $PCP_AWK_PROG '
+/log reads/ { if ('$1' <= $4 && $4 <= '$2')
+ print $1 " samples required '$1' - '$2' log reads"
+ else
+ print $0 " ... no. log reads unexpected"
+ next
+ }
+ { print }'
+}
+
+_filter_number()
+{
+ sed -e '/delta/s/: -*[0-9][0-9]*$/: NUMBER/'
+}
+
+_filter_colour()
+{
+ sed \
+ -e '/value\[0]:/{
+s/ red/ COLOUR/
+s/ yellow/ COLOUR/
+s/ green/ COLOUR/
+}'
+}
+
+_filter_seconds()
+{
+ $PCP_AWK_PROG '
+BEGIN { previous = -1; sum = 0 }
+/^delta/ { sum += -(int($2));
+ if ($2 < -2 || $2 > 0)
+ printf("%s: Error - out of range !(-2<=%d<=0)\n", $0, $2);
+ else if (previous == $2 && previous != -1)
+ printf("$s: Error - previous (%d) == current (%d)\n", $0, previous, $2);
+ else
+ print "delta[0]: INT"
+ next
+ }
+ { print }
+END { if (sum < 4 || sum > 7)
+ printf("sum of sample.seconds is out of range !(4<=%d<=7)\n", sum)
+ }'
+}
+
+# real QA test starts here
+for arch in src/foo src/mv-foo src/noti-foo
+do
+ echo
+ echo "=== archive $arch ==="
+ echo
+ echo "metric: sample.seconds"
+ src/interp1 -s 6 -a $arch sample.seconds | _filter_logreads 8 12 | _filter_seconds
+
+ echo ""
+ echo "metric: sample.bin"
+ src/interp1 -s 6 -a $arch sample.bin | _filter_logreads 8 12
+
+ echo ""
+ echo "metric: sample.colour"
+ src/interp1 -s 6 -a $arch sample.colour | _filter_number | _filter_logreads 8 12
+
+ echo ""
+ echo "metric: sample.drift"
+ src/interp1 -s 6 -a $arch sample.drift | _filter_number | _filter_logreads 8 12
+
+ echo ""
+ echo "metric: sample.lights"
+ src/interp1 -s 6 -a $arch sample.lights | _filter_colour | _filter_logreads 8 12
+done
diff --git a/qa/091.out b/qa/091.out
new file mode 100644
index 0000000..0d4fd5e
--- /dev/null
+++ b/qa/091.out
@@ -0,0 +1,532 @@
+QA output created by 091
+
+=== archive src/foo ===
+
+metric: sample.seconds
+metric[0]: sample.seconds
+
+sample 1, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 2, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 3, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 4, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 5, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+6 samples required 8 - 12 log reads
+
+metric: sample.bin
+metric[0]: sample.bin
+
+sample 1, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 2, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 3, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 4, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 5, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+6 samples required 8 - 12 log reads
+
+metric: sample.colour
+metric[0]: sample.colour
+
+sample 1, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 2, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 3, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 4, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 5, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+6 samples required 8 - 12 log reads
+
+metric: sample.drift
+metric[0]: sample.drift
+
+sample 1, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 2, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 3, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 4, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 5, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+6 samples required 8 - 12 log reads
+
+metric: sample.lights
+metric[0]: sample.lights
+
+sample 1, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 2, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 3, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 4, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 5, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+6 samples required 8 - 12 log reads
+
+=== archive src/mv-foo ===
+
+metric: sample.seconds
+metric[0]: sample.seconds
+
+sample 1, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 2, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 3, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 4, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 5, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+6 samples required 8 - 12 log reads
+
+metric: sample.bin
+metric[0]: sample.bin
+
+sample 1, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 2, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 3, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 4, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 5, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+6 samples required 8 - 12 log reads
+
+metric: sample.colour
+metric[0]: sample.colour
+
+sample 1, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 2, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 3, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 4, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 5, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+6 samples required 8 - 12 log reads
+
+metric: sample.drift
+metric[0]: sample.drift
+
+sample 1, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 2, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 3, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 4, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 5, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+6 samples required 8 - 12 log reads
+
+metric: sample.lights
+metric[0]: sample.lights
+
+sample 1, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 2, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 3, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 4, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 5, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+6 samples required 8 - 12 log reads
+
+=== archive src/noti-foo ===
+
+metric: sample.seconds
+metric[0]: sample.seconds
+
+sample 1, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 2, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 3, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 4, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+sample 5, delta time=-1.000 secs
+sample.seconds:
+delta[0]: INT
+
+6 samples required 8 - 12 log reads
+
+metric: sample.bin
+metric[0]: sample.bin
+
+sample 1, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 2, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 3, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 4, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+sample 5, delta time=-1.000 secs
+sample.bin:
+delta[0]: 0
+delta[1]: 0
+delta[2]: 0
+delta[3]: 0
+delta[4]: 0
+delta[5]: 0
+delta[6]: 0
+delta[7]: 0
+delta[8]: 0
+
+6 samples required 8 - 12 log reads
+
+metric: sample.colour
+metric[0]: sample.colour
+
+sample 1, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 2, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 3, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 4, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+sample 5, delta time=-1.000 secs
+sample.colour:
+delta[0]: NUMBER
+delta[1]: NUMBER
+delta[2]: NUMBER
+
+6 samples required 8 - 12 log reads
+
+metric: sample.drift
+metric[0]: sample.drift
+
+sample 1, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 2, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 3, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 4, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+sample 5, delta time=-1.000 secs
+sample.drift:
+delta[0]: NUMBER
+
+6 samples required 8 - 12 log reads
+
+metric: sample.lights
+metric[0]: sample.lights
+
+sample 1, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 2, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 3, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 4, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+sample 5, delta time=-1.000 secs
+sample.lights:
+value[0]: COLOUR
+
+6 samples required 8 - 12 log reads
diff --git a/qa/092 b/qa/092
new file mode 100755
index 0000000..1b559ea
--- /dev/null
+++ b/qa/092
@@ -0,0 +1,65 @@
+#! /bin/sh
+# PCP QA Test No. 092
+# end of log and truncated log test
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3509 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ cat >$tmp.out
+ STAMP=`sed <$tmp.out -n -e '/pmGetArchiveEnd time:/s/.* //p'`
+ if [ "X$STAMP" = X ]
+ then
+ echo "pmGetArchiveEnd failed!"
+ cat $tmp.out
+ else
+ sed -e "s/$STAMP/MY-EOL-TIMESTAMP/g" <$tmp.out
+ fi
+}
+
+# real QA test starts here
+echo "small archive"
+src/eol -a src/foo | _filter
+
+echo
+echo "large archive"
+src/eol -a src/bigbin | _filter
+
+echo
+echo "truncated archive"
+src/eol -a src/truncbin | _filter
+
+echo
+echo "empty archive"
+src/eol -a src/null | _filter
+
+echo
+echo "small multi-volume archive"
+src/eol -a src/mv-foo | _filter
+
+echo
+echo "large multi-volume archive"
+src/eol -a src/mv-bigbin | _filter
+
+echo
+echo "large no index archive"
+src/eol -a src/noti-bigbin | _filter
diff --git a/qa/092.out.1 b/qa/092.out.1
new file mode 100644
index 0000000..7a5912f
--- /dev/null
+++ b/qa/092.out.1
@@ -0,0 +1,99 @@
+QA output created by 092
+small archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 1 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 9 log reads
+
+large archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 1 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 1001 log reads
+
+truncated archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 9 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 7 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 8 log reads
+
+pmFetchArchive: Corrupted record in a PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 416 log reads
+
+empty archive
+pmGetArchiveEnd failed!
+pmGetArchiveEnd: Corrupted record in a PCP archive log
+required 0 log reads
+
+pmFetchArchive: End of PCP archive log
+required 0 log reads
+
+pmFetchArchive: End of PCP archive log
+required 0 log reads
+
+pmFetchArchive: End of PCP archive log
+no results!
+required 0 log reads
+
+small multi-volume archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 1 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 9 log reads
+
+large multi-volume archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 1 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 1001 log reads
+
+large no index archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 1 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 1001 log reads
diff --git a/qa/092.out.2 b/qa/092.out.2
new file mode 100644
index 0000000..898f426
--- /dev/null
+++ b/qa/092.out.2
@@ -0,0 +1,99 @@
+QA output created by 092
+small archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 2 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 9 log reads
+
+large archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 2 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 1001 log reads
+
+truncated archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 9 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 7 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 8 log reads
+
+pmFetchArchive: Corrupted record in a PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 416 log reads
+
+empty archive
+pmGetArchiveEnd failed!
+pmGetArchiveEnd: Corrupted record in a PCP archive log
+required 0 log reads
+
+pmFetchArchive: End of PCP archive log
+required 0 log reads
+
+pmFetchArchive: End of PCP archive log
+required 0 log reads
+
+pmFetchArchive: End of PCP archive log
+no results!
+required 0 log reads
+
+small multi-volume archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 2 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 9 log reads
+
+large multi-volume archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 2 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 1001 log reads
+
+large no index archive
+pmGetArchiveEnd time: MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (direct): MY-EOL-TIMESTAMP
+required 1 log reads
+
+last result time (indirect): MY-EOL-TIMESTAMP
+required 1 log reads
+
+pmFetchArchive: End of PCP archive log
+last result time (serial): MY-EOL-TIMESTAMP
+required 1001 log reads
diff --git a/qa/093 b/qa/093
new file mode 100755
index 0000000..5361798
--- /dev/null
+++ b/qa/093
@@ -0,0 +1,53 @@
+#! /bin/sh
+# PCP QA Test No. 093
+# interpolate at random offset, forwards and backwards
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/' \
+ -e 's/ *[0-9][0-9]* forw/ N forw/' \
+ -e 's/ *[0-9][0-9]* back/ M back/' \
+ -e 's/, / /g' \
+ | $PCP_AWK_PROG '
+/log reads/ { if ('$1' <= $9 && $9 <= '$2') $9 = "'$1'-'$2'"
+ if ('$3' <= $10 && $10 <= '$4') $10 = "'$3'-'$4'"
+ }
+ { print }'
+}
+
+# real QA test starts here
+echo "=== src/foo ==="
+src/interp2 -a src/foo | _filter 79 82 4 15
+
+echo
+echo "=== src/ok-bigbin ==="
+src/interp2 -a src/ok-bigbin | _filter 199 210 900 1210
+
+echo
+echo "=== src/mv-foo ==="
+src/interp2 -a src/mv-foo | _filter 79 82 10 20
+
+echo
+echo "=== src/ok-mv-bigbin ==="
+src/interp2 -a src/ok-mv-bigbin | _filter 199 210 980 1025
+
+echo
+echo "=== src/noti-foo ==="
+src/interp2 -a src/noti-foo | _filter 79 82 10 20
+
+echo
+echo "=== src/ok-noti-bigbin ==="
+src/interp2 -a src/ok-noti-bigbin | _filter 199 210 1980 2010
diff --git a/qa/093.out b/qa/093.out
new file mode 100644
index 0000000..83583da
--- /dev/null
+++ b/qa/093.out
@@ -0,0 +1,96 @@
+QA output created by 093
+=== src/foo ===
+start: TIMESTAMP
+end: TIMESTAMP
+step: 100 msec
+0% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+10% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+20% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+30% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+40% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+50% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+60% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+70% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+80% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+90% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+100% TIMESTAMP N forw + M back = 79-82 4-15 log reads
+
+=== src/ok-bigbin ===
+start: TIMESTAMP
+end: TIMESTAMP
+step: 100 msec
+0% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+10% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+20% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+30% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+40% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+50% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+60% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+70% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+80% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+90% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+100% TIMESTAMP N forw + M back = 199-210 900-1210 log reads
+
+=== src/mv-foo ===
+start: TIMESTAMP
+end: TIMESTAMP
+step: 100 msec
+0% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+10% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+20% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+30% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+40% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+50% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+60% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+70% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+80% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+90% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+100% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+
+=== src/ok-mv-bigbin ===
+start: TIMESTAMP
+end: TIMESTAMP
+step: 100 msec
+0% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+10% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+20% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+30% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+40% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+50% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+60% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+70% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+80% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+90% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+100% TIMESTAMP N forw + M back = 199-210 980-1025 log reads
+
+=== src/noti-foo ===
+start: TIMESTAMP
+end: TIMESTAMP
+step: 100 msec
+0% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+10% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+20% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+30% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+40% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+50% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+60% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+70% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+80% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+90% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+100% TIMESTAMP N forw + M back = 79-82 10-20 log reads
+
+=== src/ok-noti-bigbin ===
+start: TIMESTAMP
+end: TIMESTAMP
+step: 100 msec
+0% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+10% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+20% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+30% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+40% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+50% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+60% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+70% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+80% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+90% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
+100% TIMESTAMP N forw + M back = 199-210 1980-2010 log reads
diff --git a/qa/094 b/qa/094
new file mode 100755
index 0000000..ba09221
--- /dev/null
+++ b/qa/094
@@ -0,0 +1,43 @@
+#! /bin/sh
+# PCP QA Test No. 094
+# interpolate unsigned long for PM_TYPE_INSTANT was busted when the
+# value decreased
+#
+# Note: rewritten Nov 2008 to use pmval instead of the retired pmkstat
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/babylon.pmview
+ pmns="-n src/root_irix"
+else
+ # no support for V1 archives
+ arch=src/babylon.pmview_v2
+ pmns=
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+# note this is a V1 archive, hence the need for the -n src/root_irix
+# in the tests below.
+#
+echo "silence is golden ... "
+pmval $pmns -a $arch mem.freemem \
+| $PCP_AWK_PROG '
+state == 0 && $1 == "interval:" { state = 1; next }
+state == 0 { next }
+$2 > 0 { next }
+ { print "botched ... " $0 }'
+
diff --git a/qa/094.out b/qa/094.out
new file mode 100644
index 0000000..dafc330
--- /dev/null
+++ b/qa/094.out
@@ -0,0 +1,2 @@
+QA output created by 094
+silence is golden ...
diff --git a/qa/095 b/qa/095
new file mode 100755
index 0000000..285c17a
--- /dev/null
+++ b/qa/095
@@ -0,0 +1,174 @@
+#! /bin/sh
+# PCP QA Test No. 095
+# more interpolate exercising ... interp3 is like xarch
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter05foo()
+{
+ $PCP_AWK_PROG '
+BEGIN { lo[0] = 15; hi[0] = 17
+ lo[1] = 15; hi[1] = 17
+ lo[2] = 31; hi[2] = 34
+ lo[3] = 15; hi[3] = 17
+ lo[4] = 11; hi[4] = 14
+ lo[5] = 7; hi[5] = 9
+ lo[6] = 4; hi[6] = 5
+ lo[7] = 1; hi[7] = 1
+ f = 0
+ }
+/^Found/ { if (lo[f] <= $2 && $2 <= hi[f])
+ print "Found between " lo[f] " and " hi[f] " samples"
+ else
+ print $0 " .. no. of samples unexpected"
+ f++
+ if (f == 8)
+ f = 3
+ next
+ }
+ { print }'
+}
+
+_filter10foo()
+{
+ $PCP_AWK_PROG '
+BEGIN { lo[0] = 7; hi[0] = 9
+ lo[1] = 7; hi[1] = 9
+ lo[2] = 15; hi[2] = 18
+ lo[3] = 7; hi[3] = 9
+ lo[4] = 6; hi[4] = 7
+ lo[5] = 4; hi[5] = 5
+ lo[6] = 2; hi[6] = 3
+ lo[7] = 1; hi[7] = 1
+ f = 0
+ }
+/^Found/ { if (lo[f] <= $2 && $2 <= hi[f])
+ print "Found between " lo[f] " and " hi[f] " samples"
+ else
+ print $0 " .. no. of samples unexpected"
+ f++
+ if (f == 8)
+ f = 3
+ next
+ }
+ { print }'
+}
+
+_filter20foo()
+{
+ $PCP_AWK_PROG '
+BEGIN { lo[0] = 3; hi[0] = 5
+ lo[1] = 3; hi[1] = 5
+ lo[2] = 7; hi[2] = 10
+ lo[3] = 3; hi[3] = 5
+ lo[4] = 3; hi[4] = 4
+ lo[5] = 2; hi[5] = 3
+ lo[6] = 1; hi[6] = 2
+ lo[7] = 1; hi[7] = 1
+ f = 0
+ }
+/^Found/ { if (lo[f] <= $2 && $2 <= hi[f])
+ print "Found between " lo[f] " and " hi[f] " samples"
+ else
+ print $0 " .. no. of samples unexpected"
+ f++
+ if (f == 8)
+ f = 3
+ next
+ }
+ { print }'
+}
+
+_filter05bigbin()
+{
+ $PCP_AWK_PROG '
+BEGIN { lo[0] = 10; hi[0] = 11
+ lo[1] = 10; hi[1] = 11
+ lo[2] = 20; hi[2] = 22
+ lo[3] = 10; hi[3] = 11
+ lo[4] = 8; hi[4] = 9
+ lo[5] = 5; hi[5] = 6
+ lo[6] = 3; hi[6] = 3
+ lo[7] = 1; hi[7] = 1
+ f = 0
+ }
+/^Found/ { if (lo[f] <= $2 && $2 <= hi[f])
+ print "Found between " lo[f] " and " hi[f] " samples"
+ else
+ print $0 " .. no. of samples unexpected"
+ f++
+ if (f == 8)
+ f = 3
+ next
+ }
+ { print }'
+}
+
+_filter003bigbin()
+{
+ $PCP_AWK_PROG '
+BEGIN { lo[0] = 1625; hi[0] = 1680
+ lo[1] = 1625; hi[1] = 1680
+ lo[2] = 3265; hi[2] = 3360
+ lo[3] = 1625; hi[3] = 1680
+ lo[4] = 1220; hi[4] = 1260
+ lo[5] = 815; hi[5] = 840
+ lo[6] = 405; hi[6] = 420
+ lo[7] = 1; hi[7] = 1
+ f = 0
+ }
+/^Found/ { if (lo[f] <= $2 && $2 <= hi[f])
+ print "Found between " lo[f] " and " hi[f] " samples"
+ else
+ print $0 " .. no. of samples unexpected"
+ f++
+ if (f == 8)
+ f = 3
+ next
+ }
+ { print }'
+}
+
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== foo ==="
+src/interp3 -t 0.5 -a src/ok-foo | _filter05foo
+src/interp3 -t 1.0 -a src/ok-foo | _filter10foo
+src/interp3 -t 2.0 -a src/ok-foo | _filter20foo
+
+echo
+echo "=== bigbin ==="
+src/interp3 -t 2 -a src/ok-bigbin | _filter05bigbin
+src/interp3 -t 0.012 -a src/ok-bigbin | _filter003bigbin
+
+echo "=== multi-volume foo ==="
+src/interp3 -t 0.5 -a src/ok-mv-foo | _filter05foo
+src/interp3 -t 1.0 -a src/ok-mv-foo | _filter10foo
+src/interp3 -t 2.0 -a src/ok-mv-foo | _filter20foo
+
+echo
+echo "=== multi-volume bigbin ==="
+src/interp3 -t 2 -a src/ok-mv-bigbin | _filter05bigbin
+src/interp3 -t 0.012 -a src/ok-mv-bigbin | _filter003bigbin
+
+echo "=== no index foo ==="
+src/interp3 -t 0.5 -a src/noti-ok-foo | _filter05foo
+src/interp3 -t 1.0 -a src/noti-ok-foo | _filter10foo
+src/interp3 -t 2.0 -a src/noti-ok-foo | _filter20foo
+
+echo
+echo "=== no index bigbin ==="
+src/interp3 -t 2 -a src/ok-noti-bigbin | _filter05bigbin
+src/interp3 -t 0.012 -a src/ok-noti-bigbin | _filter003bigbin
+
+exit
diff --git a/qa/095.out b/qa/095.out
new file mode 100644
index 0000000..031ac6a
--- /dev/null
+++ b/qa/095.out
@@ -0,0 +1,475 @@
+QA output created by 095
+=== foo ===
+
+Pass 1: forward scan
+Found between 15 and 17 samples
+
+Pass 2: backwards scan
+Found between 15 and 17 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 31 and 34 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 7 and 9 samples
+
+Pass 2: backwards scan
+Found between 7 and 9 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 15 and 18 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 3 and 5 samples
+
+Pass 2: backwards scan
+Found between 3 and 5 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 7 and 10 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+=== bigbin ===
+
+Pass 1: forward scan
+Found between 10 and 11 samples
+
+Pass 2: backwards scan
+Found between 10 and 11 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 20 and 22 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 1625 and 1680 samples
+
+Pass 2: backwards scan
+Found between 1625 and 1680 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 3265 and 3360 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+Pass 6 done
+=== multi-volume foo ===
+
+Pass 1: forward scan
+Found between 15 and 17 samples
+
+Pass 2: backwards scan
+Found between 15 and 17 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 31 and 34 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 7 and 9 samples
+
+Pass 2: backwards scan
+Found between 7 and 9 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 15 and 18 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 3 and 5 samples
+
+Pass 2: backwards scan
+Found between 3 and 5 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 7 and 10 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+=== multi-volume bigbin ===
+
+Pass 1: forward scan
+Found between 10 and 11 samples
+
+Pass 2: backwards scan
+Found between 10 and 11 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 20 and 22 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 1625 and 1680 samples
+
+Pass 2: backwards scan
+Found between 1625 and 1680 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 3265 and 3360 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+Pass 6 done
+=== no index foo ===
+
+Pass 1: forward scan
+Found between 15 and 17 samples
+
+Pass 2: backwards scan
+Found between 15 and 17 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 31 and 34 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 15 and 17 samples
+Found between 11 and 14 samples
+Found between 7 and 9 samples
+Found between 4 and 5 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 7 and 9 samples
+
+Pass 2: backwards scan
+Found between 7 and 9 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 15 and 18 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 7 and 9 samples
+Found between 6 and 7 samples
+Found between 4 and 5 samples
+Found between 2 and 3 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 3 and 5 samples
+
+Pass 2: backwards scan
+Found between 3 and 5 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 7 and 10 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 3 and 5 samples
+Found between 3 and 4 samples
+Found between 2 and 3 samples
+Found between 1 and 2 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+=== no index bigbin ===
+
+Pass 1: forward scan
+Found between 10 and 11 samples
+
+Pass 2: backwards scan
+Found between 10 and 11 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 20 and 22 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 10 and 11 samples
+Found between 8 and 9 samples
+Found between 5 and 6 samples
+Found between 3 and 3 samples
+Found between 1 and 1 samples
+Pass 6 done
+
+Pass 1: forward scan
+Found between 1625 and 1680 samples
+
+Pass 2: backwards scan
+Found between 1625 and 1680 samples
+
+Pass 3: concurrent forwards and backwards scans
+Found between 3265 and 3360 samples
+
+Pass 4: cascading forward scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+
+Pass 5: cascading backward scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+
+Pass 6: cascading forward/reverse scan, 100%, 75%, 50%, 25%, 0%
+Found between 1625 and 1680 samples
+Found between 1220 and 1260 samples
+Found between 815 and 840 samples
+Found between 405 and 420 samples
+Found between 1 and 1 samples
+Pass 6 done
diff --git a/qa/096 b/qa/096
new file mode 100755
index 0000000..1ce7c9b
--- /dev/null
+++ b/qa/096
@@ -0,0 +1,130 @@
+#! /bin/sh
+# PCP QA Test No. 096
+# proc.psinfo.ttyname
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.product
+. ./common.check
+. ./common.filter
+
+if [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ _notrun "No proc metrics for $PCP_PLATFORM"
+else
+ # proc metrics may not be available
+ #
+ if pminfo proc.nprocs >/dev/null 2>&1
+ then
+ :
+ else
+ _notrun proc PMDA not installed
+ fi
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+if [ $# -eq 1 ]
+then
+ if [ $1 = "-v" ]
+ then
+ verbose=1
+ fi
+fi
+
+# make sure we have latest ttymap
+$sudo rm -f $seq.full
+$sudo rm -f /tmp/pcp.ttymap
+# make sure proc agent reloads it
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+#
+# tty filtering per host
+#
+if [ $PCP_PLATFORM = irix ]
+then
+ # handle stupid /dev/tablet as controlling tty!
+ ls -lr /dev | grep '^c.* 0, 1' \
+ | $PCP_AWK_PROG '
+ NR == 1 { good=$NF; next }
+ { print "s/" $NF "/" good "/" }' >$tmp.sed
+ ps -e | tee -a $seq.full |\
+ sed -e 's#pts/#ttyq#' |
+ sed -f $tmp.sed > $tmp.ps
+elif [ $PCP_PLATFORM = linux ]
+then
+ ps -e | tee -a $seq.full | sed \
+ -e 's#ttyS#tts/#' \
+ | $PCP_AWK_PROG '
+ /<defunct>/ { print $1, "?" }
+ {print}' >$tmp.ps
+else
+ echo "Arrgh ... Need to know how to do tty filtering for $PCP_PLATFORM"
+ exit 1
+fi
+
+echo "=====================" >>$seq.full
+
+pminfo -F proc.psinfo.ttyname |\
+ sed > $tmp.pminfo \
+ -e '/DISAPPEARED/d' \
+ -e 's#"ttyS#"tts/#' \
+ -e 's#vc/#tty#'
+echo "----" > $tmp.sep
+
+maxfailures=0
+
+cat $tmp.ps $tmp.sep $tmp.pminfo | tee -a $seq.full |\
+$PCP_AWK_PROG -v verbose=$verbose -v maxfailures=$maxfailures -v failfile=$tmp.fail '
+ $0 == "----" { pminfo = 1; next; }
+ pminfo == 0 {
+ # handle defunct processes which have "-" as tty
+ if ($2 == "-")
+ $2 = "?"
+ ps[$1] = $2
+ ps_cmd[$1] = $4
+ next
+ }
+/ inst \[/ {
+ sub(/.* inst \[/, "") # delete up to [
+ pid = $1
+ # fall-through, expect value on same line, but not
+ # not necessarily so
+ }
+/] value "/ {
+ sub(/.*] value "/, "") # delete up to value "
+ sub(/"/,"") # delete the final "
+ value = $1;
+
+ # do the comparison
+ if (pid in ps) {
+ if (ps[pid] != value && value != "?") {
+ printf("mismatch: pid = %s, ps = %s, proc = %s, cmd = %s\n", pid, ps[pid], value, ps_cmd[pid]) > failfile;
+ failures++;
+ }
+ else if (verbose == 1) {
+ printf("match for pid = %d, value = %s, ps[pid] = %s, cmd = %s\n", pid, value, ps[pid], ps_cmd[pid]);
+ }
+ }
+ }
+ END {
+ if (failures > maxfailures) {
+ printf("Number of failures = %d\n", failures)
+ system("cat " failfile)
+ }
+ else
+ printf("proc.psinfo.ttyname matches with ps\n")
+ }
+'
+echo
+echo "If failure, check $seq.full"
+
+exit 0
diff --git a/qa/096.out b/qa/096.out
new file mode 100644
index 0000000..6422c78
--- /dev/null
+++ b/qa/096.out
@@ -0,0 +1,7 @@
+QA output created by 096
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+proc.psinfo.ttyname matches with ps
+
+If failure, check 096.full
diff --git a/qa/097 b/qa/097
new file mode 100755
index 0000000..4a03922
--- /dev/null
+++ b/qa/097
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 097
+# check time updates after EOL/SOL in interpolate mode
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filterfoo()
+{
+ $PCP_AWK_PROG '
+BEGIN { lo[0] = 15; hi[0] = 17
+ f = 0
+ }
+/^Found/ { if (lo[f] <= $2 && $2 <= hi[f])
+ print "Found between " lo[f] " and " hi[f] " samples"
+ else
+ print $0 " .. no. of samples unexpected"
+ next
+ }
+ { print }'
+}
+
+_filterbigbin()
+{
+ $PCP_AWK_PROG '
+BEGIN { lo[0] = 40; hi[0] = 42
+ f = 0
+ }
+/^Found/ { if (lo[f] <= $2 && $2 <= hi[f])
+ print "Found between " lo[f] " and " hi[f] " samples"
+ else
+ print $0 " .. no. of samples unexpected"
+ next
+ }
+ { print }'
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "Archive foo ..."
+src/interp4 -a src/foo | _filterfoo
+
+echo
+echo "Archive ok-bigbin ..."
+src/interp4 -a src/ok-bigbin | _filterbigbin
+
+echo
+echo "Archive multi-volume foo ..."
+src/interp4 -a src/mv-foo | _filterfoo
+
+echo
+echo "Archive multi-volume ok-bigbin ..."
+src/interp4 -a src/ok-mv-bigbin | _filterbigbin
diff --git a/qa/097.out b/qa/097.out
new file mode 100644
index 0000000..a6827af
--- /dev/null
+++ b/qa/097.out
@@ -0,0 +1,76 @@
+QA output created by 097
+Archive foo ...
+
+Pass 1: forward scan
+Found between 15 and 17 samples
+
+Pass 1.1: forwards past EOL
+
+Pass 1.2: backwards past EOL
+
+Pass 2: backwards scan
+Found between 15 and 17 samples
+
+Pass 2.1: backwards prior to SOL
+
+Pass 2.2: forwards prior to SOL
+
+Pass 3: forwards scan
+Found between 15 and 17 samples
+
+Archive ok-bigbin ...
+
+Pass 1: forward scan
+Found between 40 and 42 samples
+
+Pass 1.1: forwards past EOL
+
+Pass 1.2: backwards past EOL
+
+Pass 2: backwards scan
+Found between 40 and 42 samples
+
+Pass 2.1: backwards prior to SOL
+
+Pass 2.2: forwards prior to SOL
+
+Pass 3: forwards scan
+Found between 40 and 42 samples
+
+Archive multi-volume foo ...
+
+Pass 1: forward scan
+Found between 15 and 17 samples
+
+Pass 1.1: forwards past EOL
+
+Pass 1.2: backwards past EOL
+
+Pass 2: backwards scan
+Found between 15 and 17 samples
+
+Pass 2.1: backwards prior to SOL
+
+Pass 2.2: forwards prior to SOL
+
+Pass 3: forwards scan
+Found between 15 and 17 samples
+
+Archive multi-volume ok-bigbin ...
+
+Pass 1: forward scan
+Found between 40 and 42 samples
+
+Pass 1.1: forwards past EOL
+
+Pass 1.2: backwards past EOL
+
+Pass 2: backwards scan
+Found between 40 and 42 samples
+
+Pass 2.1: backwards prior to SOL
+
+Pass 2.2: forwards prior to SOL
+
+Pass 3: forwards scan
+Found between 40 and 42 samples
diff --git a/qa/098 b/qa/098
new file mode 100755
index 0000000..6b36f20
--- /dev/null
+++ b/qa/098
@@ -0,0 +1,144 @@
+#! /bin/sh
+# PCP QA Test No. 098
+# exercise the logging state compatibility matrix for pmlc ...
+# initial: singular metric request: same singular metric
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e '/connect /{
+s/connect [0-9][0-9]*/connect PID/
+s/@.*/@HOSTNAME/
+}' \
+ -e '/Connected /{
+s/ on port [0-9][0-9]*//
+s/ pid [0-9][0-9]*//
+s/ at .*/ at HOSTNAME/
+}' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ | $PCP_AWK_PROG '
+/pmlc commands/ { skip = 1; print "[command summary deleted ...]" }
+/metric-name/ { skip = 0; next }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_logger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/AF event queue/d'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+_do_cmds()
+{
+ for ctl in mandatory advisory
+ do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ ( echo "# setup"; \
+ echo "log mandatory maybe sample.seconds"; \
+ echo "# $ctl $state -> $req_ctl $req_state"; \
+ echo "log $ctl $state sample.seconds"; \
+ ) | pmlc -ie $1
+ sleep 1
+ ( echo "log $req_ctl $req_state sample.seconds"; \
+ echo "query sample.seconds"; \
+ ) | pmlc -ie $1
+ sleep 1
+ # need sleeps to allow pmlogger to get a look in and
+ # to allow the pmlogger socket to be closed so the
+ # next pmlc invocation can get connected
+ done
+ done
+ done
+ done
+}
+
+x=3
+
+# real QA test starts here
+$sudo rm -f $tmp.0 $tmp.meta $tmp.index
+
+# start pmlogger with the expected number of samples plus a few more
+# to detect extra log output
+#
+_start_up_pmlogger -t 0.5sec -L -s 30 -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+sleep 2
+_do_cmds $logger_pid >$tmp.out 2>&1
+
+# this chews up any remaining samples quickly so pmlogger terminates
+#
+echo "log mandatory on 25 msec sample.long.one" \
+| pmlc -ie $logger_pid >>$tmp.out 2>&1
+
+_filter_pmlc <$tmp.out
+
+# wait for pmlogger to terminate
+#
+_wait_pmlogger_end $logger_pid
+cat $tmp.err $tmp.log | _filter_logger
+
+echo
+if [ -s $tmp.0 ]
+then
+ echo "Uniq filtered entries from pmdumplog ..."
+ pmdumplog $tmp \
+ | _filter_dump \
+ | sed -e 's/TIMESTAMP//' -e 's/^ *//' \
+ | LC_COLLATE=POSIX sort -u
+ pmdumplog $tmp >$seq.full 2>&1
+else
+ echo "Archive log is empty"
+fi
+
+exit
diff --git a/qa/098.out b/qa/098.out
new file mode 100644
index 0000000..554dd6e
--- /dev/null
+++ b/qa/098.out
@@ -0,0 +1,864 @@
+QA output created by 098
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory on once -> mandatory on once
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory on once -> mandatory maybe
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory on once -> mandatory off
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory on once -> advisory on once
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.seconds
+Warning: unable to change logging state for:
+sample.seconds
+
+pmlc> query sample.seconds
+sample.seconds
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory on once -> advisory off
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.seconds
+Warning: unable to change logging state for:
+sample.seconds
+
+pmlc> query sample.seconds
+sample.seconds
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory maybe -> mandatory on once
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory maybe -> mandatory maybe
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory maybe -> mandatory off
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory maybe -> advisory on once
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory maybe -> advisory off
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory off -> mandatory on once
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory off -> mandatory maybe
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory off -> mandatory off
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory off -> advisory on once
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.seconds
+Warning: unable to change logging state for:
+sample.seconds
+
+pmlc> query sample.seconds
+sample.seconds
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # mandatory off -> advisory off
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.seconds
+Warning: unable to change logging state for:
+sample.seconds
+
+pmlc> query sample.seconds
+sample.seconds
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory on once -> mandatory on once
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory on once -> mandatory maybe
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory on once -> mandatory off
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory on once -> advisory on once
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory on once -> advisory off
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory off -> mandatory on once
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory off -> mandatory maybe
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory off -> mandatory off
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory off -> advisory on once
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.seconds
+pmlc> # advisory off -> advisory off
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.seconds
+pmlc> query sample.seconds
+sample.seconds
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on 25 msec sample.long.one
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.long.one
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+Uniq filtered entries from pmdumplog ...
+2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+29.0.10 (sample.long.one): value NUMBER
+29.0.2 (sample.seconds): value NUMBER
diff --git a/qa/099 b/qa/099
new file mode 100755
index 0000000..62bc20b
--- /dev/null
+++ b/qa/099
@@ -0,0 +1,35 @@
+#! /bin/sh
+# PCP QA Test No. 099
+# pmlc basics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e 's/connect [0-9][0-9]*/connect PID/' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/'
+}
+
+# real QA test starts here
+pmlc -ie <<End-of-File | _filter_pmlc
+# no connection to a logger, this should produce an explicit error
+log mandatory maybe sample.seconds
+
+# can we grok EOF in standard input, or does this loop forever?
+End-of-File
+
+echo "expect nothing - start"
+pmlc </dev/null | _filter_pmlc
+echo "expect nothing - end"
diff --git a/qa/099.out b/qa/099.out
new file mode 100644
index 0000000..638822a
--- /dev/null
+++ b/qa/099.out
@@ -0,0 +1,32 @@
+QA output created by 099
+Error [<stdin>, line 2]
+Not connected to any pmlogger instance
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> # no connection to a logger, this should produce an explicit error
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+pmlc> # can we grok EOF in standard input, or does this loop forever?
+pmlc>
+expect nothing - start
+expect nothing - end
diff --git a/qa/100 b/qa/100
new file mode 100755
index 0000000..cb3ab1c
--- /dev/null
+++ b/qa/100
@@ -0,0 +1,144 @@
+#! /bin/sh
+# PCP QA Test No. 100
+# exercise the logging state compatibility matrix for pmlc ...
+# initial: singular metric request: different singular metric
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e '/connect /{
+s/connect [0-9][0-9]*/connect PID/
+s/@.*/@HOSTNAME/
+}' \
+ -e '/Connected /{
+s/ on port [0-9][0-9]*//
+s/ pid [0-9][0-9]*//
+s/ at .*/ at HOSTNAME/
+}' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ | $PCP_AWK_PROG '
+/pmlc commands/ { skip = 1; print "[command summary deleted ...]" }
+/metric-name/ { skip = 0; next }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_logger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/AF event queue/d'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+_do_cmds()
+{
+ for ctl in mandatory advisory
+ do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ ( echo "# setup"; \
+ echo "log mandatory maybe { sample.seconds sample.drift }"; \
+ echo "# $ctl $state -> $req_ctl $req_state"; \
+ echo "log $ctl $state sample.seconds"; \
+ ) | pmlc -ie $1
+ sleep 1
+ ( echo "log $req_ctl $req_state sample.drift"; \
+ echo "query { sample.seconds sample.drift }"; \
+ ) | pmlc -ie $1
+ sleep 1
+ # need sleeps to allow pmlogger to get a look in and
+ # to allow the pmlogger socket to be closed so the
+ # next pmlc invocation can get connected
+ done
+ done
+ done
+ done
+}
+
+x=3
+
+# real QA test starts here
+$sudo rm -f $tmp.0 $tmp.meta $tmp.index
+
+# start pmlogger with the expected number of samples plus a few more
+# to detect extra log output
+#
+_start_up_pmlogger -t 0.5sec -L -s 30 -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+sleep 2
+_do_cmds $logger_pid >$tmp.out 2>&1
+
+# this chews up any remaining samples quickly so pmlogger terminates
+#
+echo "log mandatory on 25 msec sample.long.one" \
+| pmlc -ie $logger_pid >>$tmp.out 2>&1
+
+_filter_pmlc <$tmp.out
+
+# wait for pmlogger to terminate
+#
+_wait_pmlogger_end $logger_pid
+cat $tmp.err $tmp.log | _filter_logger
+
+echo
+if [ -s $tmp.0 ]
+then
+ echo "Uniq filtered entries from pmdumplog ..."
+ pmdumplog $tmp \
+ | _filter_dump \
+ | sed -e 's/TIMESTAMP//' -e 's/^ *//' \
+ | LC_COLLATE=POSIX sort -u
+ pmdumplog $tmp >$seq.full 2>&1
+else
+ echo "Archive log is empty"
+fi
+
+exit
diff --git a/qa/100.out b/qa/100.out
new file mode 100644
index 0000000..e48099a
--- /dev/null
+++ b/qa/100.out
@@ -0,0 +1,953 @@
+QA output created by 100
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory on once -> mandatory on once
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand on once
+
+sample.drift
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory on once -> mandatory maybe
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand on once
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory on once -> mandatory off
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand on once
+
+sample.drift
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory on once -> advisory on once
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand on once
+
+sample.drift
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory on once -> advisory off
+pmlc> log mandatory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand on once
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory maybe -> mandatory on once
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory maybe -> mandatory maybe
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory maybe -> mandatory off
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory maybe -> advisory on once
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory maybe -> advisory off
+pmlc> log mandatory maybe sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory off -> mandatory on once
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand off
+
+sample.drift
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory off -> mandatory maybe
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand off
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory off -> mandatory off
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand off
+
+sample.drift
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory off -> advisory on once
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand off
+
+sample.drift
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # mandatory off -> advisory off
+pmlc> log mandatory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ mand off
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory on once -> mandatory on once
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv on once
+
+sample.drift
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory on once -> mandatory maybe
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv on once
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory on once -> mandatory off
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv on once
+
+sample.drift
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory on once -> advisory on once
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv on once
+
+sample.drift
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory on once -> advisory off
+pmlc> log advisory on once sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv on once
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory off -> mandatory on once
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ mand on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory off -> mandatory maybe
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory off -> mandatory off
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ mand off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory off -> advisory on once
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ adv on once
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe { sample.seconds sample.drift }
+pmlc> # advisory off -> advisory off
+pmlc> log advisory off sample.seconds
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.drift
+pmlc> query { sample.seconds sample.drift }
+sample.seconds
+ adv off
+
+sample.drift
+ adv off
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on 25 msec sample.long.one
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.seconds
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.seconds
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.drift
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.long.one
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+Uniq filtered entries from pmdumplog ...
+2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+29.0.10 (sample.long.one): value NUMBER
+29.0.2 (sample.seconds): value NUMBER
+29.0.7 (sample.drift): value NUMBER
diff --git a/qa/1000 b/qa/1000
new file mode 100755
index 0000000..71cf1aa
--- /dev/null
+++ b/qa/1000
@@ -0,0 +1,71 @@
+#!/bin/sh
+# PCP QA Test No. 1000
+# pmdumptext segv
+# https://bugzilla.redhat.com/show_bug.cgi?id=1131779
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# filter ...
+# Fri Aug 22 20:04:55 7950508.000
+#
+_filter1()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-2][0-9]:[0-5][0-9]:[0-5][0-9]/DATE/' \
+ -e 's/[ ][ ]*[0-9][0-9]*\.[0-9][0-9]*/ NUMBER/'
+}
+
+# hostname(1)
+#
+_filter2()
+{
+ sed -e "s/`hostname`/MYHOSTNAME/g"
+}
+
+# real QA test starts here
+echo "=== expect output ==="
+pmdumptext -s 1 'localhost:mem.util.used' | _filter1
+
+echo
+echo "=== expect No route to host, no valid metrics ==="
+pmdumptext -s 1 'nosuchhost:mem.util.used'
+
+echo
+echo "=== expect No route to host, no valid metrics [instance case] ==="
+pmdumptext -s 1 'nosuchhost:proc.psinfo.utime[12345]'
+
+echo
+echo "=== expect No route to host, no valid metrics -h [instance case] ==="
+pmdumptext -s 1 -h nosuchhost 'proc.psinfo.utime[12345]'
+
+$sudo $PCP_RC_DIR/pcp stop >/dev/null
+echo
+echo "=== pmcd not running, default case ==="
+pmdumptext -s 1 'sample.bin[bin-300]' 2>&1 | _filter2
+echo
+echo "=== pmcd not running, host in metricspec case ==="
+pmdumptext -s 1 'localhost:proc.psinfo.utime[12345]'
+echo
+echo "=== pmcd not running, -h localhost case ==="
+pmdumptext -s 1 -h localhost 'proc.psinfo.utime[12345]'
+$sudo $PCP_RC_DIR/pcp start >/dev/null
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/1000.out b/qa/1000.out
new file mode 100644
index 0000000..e6ff6fb
--- /dev/null
+++ b/qa/1000.out
@@ -0,0 +1,25 @@
+QA output created by 1000
+=== expect output ===
+DATE NUMBER
+
+=== expect No route to host, no valid metrics ===
+pmdumptext: Error: nosuchhost: No route to host
+pmdumptext: no valid metrics, exiting.
+
+=== expect No route to host, no valid metrics [instance case] ===
+pmdumptext: Error: nosuchhost: No route to host
+pmdumptext: no valid metrics, exiting.
+
+=== expect No route to host, no valid metrics -h [instance case] ===
+pmdumptext: Error: nosuchhost: No route to host
+
+=== pmcd not running, default case ===
+pmdumptext: Error: MYHOSTNAME: Connection refused
+pmdumptext: no valid metrics, exiting.
+
+=== pmcd not running, host in metricspec case ===
+pmdumptext: Error: localhost: Connection refused
+pmdumptext: no valid metrics, exiting.
+
+=== pmcd not running, -h localhost case ===
+pmdumptext: Error: localhost: Connection refused
diff --git a/qa/1001 b/qa/1001
new file mode 100755
index 0000000..e1ffcbd
--- /dev/null
+++ b/qa/1001
@@ -0,0 +1,27 @@
+#!/bin/sh
+# PCP QA Test No. 1001
+# Basic config file error checking
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+_check_display
+which pmchart >/dev/null 2>&1 || _notrun "pmchart not installed"
+
+rm -rf \$tmp.*
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== bad first line ==="
+echo "#bad extra" | pmchart -Dappl2 -C -c - 2>&1 | _filter_views
+
+echo
+echo "=== lexicon too long ==="
+cat <<End-of-File | pmchart -Dappl2 -C -c - 2>&1 | _filter_views
+#pmchart
+aaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccXXXXXXXXXXXXXXXXXXX
+End-of-File
+
+exit
diff --git a/qa/1001.out b/qa/1001.out
new file mode 100644
index 0000000..9497bca
--- /dev/null
+++ b/qa/1001.out
@@ -0,0 +1,12 @@
+QA output created by 1001
+=== bad first line ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[1] Syntax error: expecting "#pmchart" or "#kmchart", found "#bad"
+
+=== lexicon too long ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Word truncated after 255 characters!
+"aaaaaaaaaaaaaaaaaaaa ... cccccccccccccccccccc"
+Error: stdin[2] Syntax error: expecting "version", found "aaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc"
diff --git a/qa/1002 b/qa/1002
new file mode 100755
index 0000000..8fcafaa
--- /dev/null
+++ b/qa/1002
@@ -0,0 +1,66 @@
+#!/bin/sh
+# PCP QA Test No. 1002
+# Syntax errors in the Version line of the config file
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+_check_display
+which pmchart >/dev/null 2>&1 || _notrun "pmchart not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#pmchart
+Fluff
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#pmchart
+Version
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#pmchart
+Version xxx
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#pmchart
+Version 1.0
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#pmchart
+Version 2.0 foo
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#kmchart
+Version 1 foo
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#kmchart
+Version 1 HOST
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#kmchart
+Version 1 HOST fluff
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#kmchart
+VERSION 1 HOST DYNAMIC fluff
+End-of-File
+
+cat <<End-of-File | pmchart -Dappl2 -c - -C 2>&1 | _filter_views
+#kmchart
+version 1 host literal fluff
+End-of-File
+
+exit
diff --git a/qa/1002.out b/qa/1002.out
new file mode 100644
index 0000000..3ad7fdc
--- /dev/null
+++ b/qa/1002.out
@@ -0,0 +1,31 @@
+QA output created by 1002
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: expecting "version", found "Fluff"
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[3] Syntax error: expecting "<version number>", found End-of-Line
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: expecting "<version number>", found "xxx"
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: expecting "<version number>", found "1.0"
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: expecting "host", found "foo"
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: expecting "host", found "foo"
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[3] Syntax error: expecting "literal" or "dynamic", found End-of-Line
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: expecting "literal" or "dynamic", found "fluff"
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: unexpected word "fluff"
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+Error: stdin[2] Syntax error: unexpected word "fluff"
diff --git a/qa/1003 b/qa/1003
new file mode 100755
index 0000000..e1e7e66
--- /dev/null
+++ b/qa/1003
@@ -0,0 +1,48 @@
+#!/bin/sh
+# PCP QA Test No. 1003
+# Check that Global clause is detected
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+_check_display
+which pmchart >/dev/null 2>&1 || _notrun "pmchart not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+cat <<End-of-File | pmchart -Dappl2 -C -c - 2>&1 | _filter_views
+#pmchart
+Version 1.1 host dynamic
+
+Global width 800
+Global height 600
+Global points 30
+
+Chart Title "Memory Usage" Style stacking
+# IRIX
+ Optional-Plot Color #f8ff00 Host * Metric mem.util.kernel
+ Optional-Plot Color #00ffff Host * Metric mem.util.fs_ctl
+ Optional-Plot Color #ff0000 Host * Metric mem.util.fs_dirty
+ Optional-Plot Color #fe00ff Host * Metric mem.util.fs_clean
+ Optional-Plot Color #0000fd Host * Metric mem.util.user
+
+# IRIX and Linux
+ Plot Color #00ff00 Host * Metric mem.util.free
+
+# Linux
+ Optional-Plot Color #fefe32 Host * Metric mem.util.mapped
+ Optional-Plot Color #fe68ad Host * Metric mem.util.bufmem
+ Optional-Plot Color #00f1ea Host * Metric mem.util.pageTables
+ Optional-Plot Color #e873e4 Host * Metric mem.util.slab
+ Optional-Plot Color #327ffe Host * Metric mem.util.cached
+ Optional-Plot Color #007f00 Host * Metric mem.util.other
+
+Chart Title "Dirty Buffers" Style stacking
+ Optional-Plot Color #fe3732 Host * Metric mem.util.dirty
+ Optional-Plot Color #ff8900 Host * Metric mem.util.writeback
+ Optional-Plot Color #008900 Host * Metric mem.util.cache_clean
+End-of-File
diff --git a/qa/1003.out b/qa/1003.out
new file mode 100644
index 0000000..c4d16d7
--- /dev/null
+++ b/qa/1003.out
@@ -0,0 +1,20 @@
+QA output created by 1003
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+openView: new chart: style=Stack title="Memory Usage" autoscale=yes legend=yes
+openView: new optional-plot color=#f8ff00 metric=mem.util.kernel
+openView: new optional-plot color=#00ffff metric=mem.util.fs_ctl
+openView: new optional-plot color=#ff0000 metric=mem.util.fs_dirty
+openView: new optional-plot color=#fe00ff metric=mem.util.fs_clean
+openView: new optional-plot color=#0000fd metric=mem.util.user
+openView: new plot color=#00ff00 metric=mem.util.free
+openView: new optional-plot color=#fefe32 metric=mem.util.mapped
+openView: new optional-plot color=#fe68ad metric=mem.util.bufmem
+openView: new optional-plot color=#00f1ea metric=mem.util.pageTables
+openView: new optional-plot color=#e873e4 metric=mem.util.slab
+openView: new optional-plot color=#327ffe metric=mem.util.cached
+openView: new optional-plot color=#007f00 metric=mem.util.other
+openView: new chart: style=Stack title="Dirty Buffers" autoscale=yes legend=yes
+openView: new optional-plot color=#fe3732 metric=mem.util.dirty
+openView: new optional-plot color=#ff8900 metric=mem.util.writeback
+openView: new optional-plot color=#008900 metric=mem.util.cache_clean
diff --git a/qa/1004 b/qa/1004
new file mode 100755
index 0000000..71a4f57
--- /dev/null
+++ b/qa/1004
@@ -0,0 +1,97 @@
+#!/bin/sh
+# PCP QA Test No. 1004
+# Some simple views ...
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+_check_display
+which pmchart >/dev/null 2>&1 || _notrun "pmchart not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "=== Cisco ==="
+cat <<End-of-File | pmchart -C -c - -Dappl2 2>&1 | _filter_views
+#pmchart
+Version 1.2 host dynamic
+
+Chart Style plot
+ Plot Color #-cycle Host * Metric cisco.rate_in
+
+Chart Style plot
+ Plot Color #-cycle Host * Metric cisco.rate_out
+
+End-of-File
+
+echo
+echo "=== Disk ==="
+cat <<End-of-File | pmchart -C -c - -Dappl2 2>&1 | _filter_views
+#pmchart
+Version 1.1 host dynamic
+Chart Title "Disk Activity" Style stacking
+ Plot Color yellow Host * Metric disk.all.read
+ Plot Color violet Host * Metric disk.all.write
+End-of-File
+
+echo
+echo "=== CPU ==="
+cat <<End-of-File | pmchart -C -c - -Dappl2 2>&1 | _filter_views
+#pmchart
+Version 1.1 host dynamic
+Chart Title "CPU Utilization" Style utilization
+ Plot Color #2d2de2 Host * Metric kernel.all.cpu.user
+ Plot Color #e71717 Host * Metric kernel.all.cpu.sys
+ Optional-Plot Color rgbi:0.9/0.1/0.5 Host * Metric kernel.all.cpu.sxbrk
+ Optional-Plot Color rgbi:0.4/0.9/0.4 Host * Metric kernel.all.cpu.nice
+ Plot Color rgbi:0.8/0.8/0.0 Host * Metric kernel.all.cpu.intr
+ Optional-Plot Color rgbi:0.0/0.8/0.8 Host * Metric kernel.all.cpu.wait.total
+ Plot Color #16e116 Host * Metric kernel.all.cpu.idle
+End-of-File
+
+echo
+echo "=== Loadavg ==="
+cat <<End-of-File | pmchart -C -c - -Dappl2 2>&1 | _filter_views
+#kmchart
+version 1 host dynamic
+chart title "Average Load" style plot
+ plot legend "1 min" metric kernel.all.load instance "1 minute"
+ plot legend "5 min" metric kernel.all.load instance "5 minute"
+ plot legend "15 min" metric kernel.all.load instance "15 minute"
+End-of-File
+
+echo
+echo "=== Net.bytes ==="
+cat <<End-of-File | pmchart -C -c - -Dappl2 2>&1 | _filter_views
+#kmchart
+version 1
+chart title "Network Interface Activity" style stacking
+ plot metric network.interface.in.bytes not-matching "^lo|^sl|^ppp"
+ plot metric network.interface.out.bytes not-matching "^lo|^sl|^ppp"
+End-of-File
+
+echo
+echo "=== PMCD ==="
+cat <<End-of-File | pmchart -C -c - -Dappl2 2>&1 | _filter_views
+#kmchart
+version 1 host dynamic
+
+chart title "PDUs In and Out for PMCD" style stacking
+ plot color #-cycle host * metric pmcd.pdu_in.total
+ plot color #-cycle host * metric pmcd.pdu_out.total
+
+chart title "CPU Time for PMCD and DSO PMDAs" style stacking
+# for Linux
+ optional-plot color #2d2de2 host * metric proc.psinfo.utime matching "/usr/share/pcp/bin/pmcd"
+ optional-plot color #e71717 host * metric proc.psinfo.stime matching "/usr/share/pcp/bin/pmcd"
+
+chart title "CPU Time for Other PMDAs" style stacking legend off
+# for Linux
+ optional-plot color #2d2de2 host * metric proc.psinfo.utime matching "/pmda"
+ optional-plot color #e71717 host * metric proc.psinfo.stime matching "/pmda"
+End-of-File
+
+exit
diff --git a/qa/1004.out b/qa/1004.out
new file mode 100644
index 0000000..de9d4df
--- /dev/null
+++ b/qa/1004.out
@@ -0,0 +1,55 @@
+QA output created by 1004
+=== Cisco ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+openView: new chart: style=Line autoscale=yes legend=yes
+openView: new plot color=#-cycle metric=cisco.rate_in
+openView: new chart: style=Line autoscale=yes legend=yes
+openView: new plot color=#-cycle metric=cisco.rate_out
+
+=== Disk ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+openView: new chart: style=Stack title="Disk Activity" autoscale=yes legend=yes
+openView: new plot color=yellow metric=disk.all.read
+openView: new plot color=violet metric=disk.all.write
+
+=== CPU ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+openView: new chart: style=Util title="CPU Utilization" autoscale=yes legend=yes
+openView: new plot color=#2d2de2 metric=kernel.all.cpu.user
+openView: new plot color=#e71717 metric=kernel.all.cpu.sys
+openView: new optional-plot color=rgbi:0.9/0.1/0.5 metric=kernel.all.cpu.sxbrk
+openView: new optional-plot color=rgbi:0.4/0.9/0.4 metric=kernel.all.cpu.nice
+openView: new plot color=rgbi:0.8/0.8/0.0 metric=kernel.all.cpu.intr
+openView: new optional-plot color=rgbi:0.0/0.8/0.8 metric=kernel.all.cpu.wait.total
+openView: new plot color=#16e116 metric=kernel.all.cpu.idle
+
+=== Loadavg ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+openView: new chart: style=Line title="Average Load" autoscale=yes legend=yes
+openView: new plot legend="1 min" metric=kernel.all.load inst=1 minute match=instance
+openView: new plot legend="5 min" metric=kernel.all.load inst=5 minute match=instance
+openView: new plot legend="15 min" metric=kernel.all.load inst=15 minute match=instance
+
+=== Net.bytes ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+openView: new chart: style=Stack title="Network Interface Activity" autoscale=yes legend=yes
+openView: new plot metric=network.interface.in.bytes inst=^lo|^sl|^ppp match=not-matching
+openView: new plot metric=network.interface.out.bytes inst=^lo|^sl|^ppp match=not-matching
+
+=== PMCD ===
+Load View: PCP_VAR_DIR/config/pmchart/Schemes
+Load View: stdin
+openView: new chart: style=Stack title="PDUs In and Out for PMCD" autoscale=yes legend=yes
+openView: new plot color=#-cycle metric=pmcd.pdu_in.total
+openView: new plot color=#-cycle metric=pmcd.pdu_out.total
+openView: new chart: style=Stack title="CPU Time for PMCD and DSO PMDAs" autoscale=yes legend=yes
+openView: new optional-plot color=#2d2de2 metric=proc.psinfo.utime inst=/usr/share/pcp/bin/pmcd match=matching
+openView: new optional-plot color=#e71717 metric=proc.psinfo.stime inst=/usr/share/pcp/bin/pmcd match=matching
+openView: new chart: style=Stack title="CPU Time for Other PMDAs" autoscale=yes
+openView: new optional-plot color=#2d2de2 metric=proc.psinfo.utime inst=/pmda match=matching
+openView: new optional-plot color=#e71717 metric=proc.psinfo.stime inst=/pmda match=matching
diff --git a/qa/1005 b/qa/1005
new file mode 100755
index 0000000..6645cee
--- /dev/null
+++ b/qa/1005
@@ -0,0 +1,25 @@
+#!/bin/sh
+# PCP QA Test No. 1005
+# Check handling of missing plot title keyword - caused SEGV,
+# observed while hand-crafting config file for interactive QA
+# in the Settings dialog.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+_check_display
+which pmchart >/dev/null 2>&1 || _notrun "pmchart not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File | pmchart -c - -C 2>&1 | _filter_views
+#kmchart
+version 1
+chart title "Settings Color Test" style stacking
+ plot "01" metric sample.hordes.one instance "1"
+End-of-File
+
+exit
diff --git a/qa/1005.out b/qa/1005.out
new file mode 100644
index 0000000..9ce4c64
--- /dev/null
+++ b/qa/1005.out
@@ -0,0 +1,2 @@
+QA output created by 1005
+Error: stdin[4] Syntax error: expecting "metric", found "01"
diff --git a/qa/1006 b/qa/1006
new file mode 100755
index 0000000..93234fa
--- /dev/null
+++ b/qa/1006
@@ -0,0 +1,36 @@
+#!/bin/sh
+# PCP QA Test No. 1006
+# Check units compatibility in view loading
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+_check_display
+which pmchart >/dev/null 2>&1 || _notrun "pmchart not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+PCP_STDERR=$tmp.post
+for config in views/006-01 views/006-02 views/006-03 views/006-04 views/006-05
+do
+ echo "=== $config ==="
+ cat $config
+ rm -f $tmp.post
+ pmchart -CC -D appl0 -c $config >$tmp.out 2>$tmp.err
+ echo "exit=$?"
+ echo "--- out ---"
+ cat $tmp.out
+ echo "--- err ---"
+ _filter_console <$tmp.err | _filter_views
+ echo "--- post ---"
+ if [ -f $tmp.post ]
+ then
+ _filter_post <$tmp.post
+ fi
+done
+
+# success, all done
+exit
diff --git a/qa/1006.out b/qa/1006.out
new file mode 100644
index 0000000..d806b3b
--- /dev/null
+++ b/qa/1006.out
@@ -0,0 +1,186 @@
+QA output created by 1006
+=== views/006-01 ===
+#kmchart
+version 1
+chart title "QA Units compatible - time" style plot
+ plot metric sample.seconds
+ plot metric sample.milliseconds
+exit=0
+--- out ---
+--- err ---
+<timestamp>: Console available
+<timestamp>: Global settings setup complete
+<timestamp>: Metric group setup complete (0 hosts, 0 archives)
+<timestamp>: Timezones and time window setup complete
+<timestamp>: Time button resources loaded
+<timestamp>: Phase1 user interface constructors complete
+<timestamp>: PmChart::setActiveTab index=0 r=1
+<timestamp>: Phase2 user interface setup complete
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Chart::setCurrent(<addr>) true
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.seconds
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.milliseconds
+<timestamp>: SamplingEngine::isCompatible type=5, units=millisec
+<timestamp>: addItem <addr> nitems=2
+--- post ---
+=== views/006-02 ===
+#kmchart
+version 1
+chart title "QA Units odd but OK - time(util) and none" style plot
+ plot metric sample.seconds
+ plot metric sample.control
+exit=0
+--- out ---
+--- err ---
+<timestamp>: Console available
+<timestamp>: Global settings setup complete
+<timestamp>: Metric group setup complete (0 hosts, 0 archives)
+<timestamp>: Timezones and time window setup complete
+<timestamp>: Time button resources loaded
+<timestamp>: Phase1 user interface constructors complete
+<timestamp>: PmChart::setActiveTab index=0 r=1
+<timestamp>: Phase2 user interface setup complete
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Chart::setCurrent(<addr>) true
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.seconds
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.control
+<timestamp>: SamplingEngine::isCompatible type=0, units=
+<timestamp>: addItem <addr> nitems=2
+--- post ---
+=== views/006-03 ===
+#kmchart
+version 1
+chart title "QA Units BAD - time(->time util) and count(->count/sec)" style plot
+ plot metric sample.seconds
+ plot metric sample.step_counter
+exit=1
+--- out ---
+--- err ---
+<timestamp>: Console available
+<timestamp>: Global settings setup complete
+<timestamp>: Metric group setup complete (0 hosts, 0 archives)
+<timestamp>: Timezones and time window setup complete
+<timestamp>: Time button resources loaded
+<timestamp>: Phase1 user interface constructors complete
+<timestamp>: PmChart::setActiveTab index=0 r=1
+<timestamp>: Phase2 user interface setup complete
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Chart::setCurrent(<addr>) true
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.seconds
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.step_counter
+<timestamp>: SamplingEngine::isCompatible type=0, units=count
+--- post ---
+Error: views/006-03[6]
+Failed to plot metric "sample.step_counter" for
+host <host>:
+Units for this metric are not compatible with other plots in this chart
+=== views/006-04 ===
+#kmchart
+version 1
+chart title "QA Units OK - inst first" style plot
+ plot metric sample.byte_rate
+ plot metric sample.byte_ctr
+chart title "QA Units OK - ctr first" style plot
+ plot metric sample.byte_ctr
+ plot metric sample.byte_rate
+chart title "QA Units OK - Kbyte/sec and byte/msec" style plot
+ plot metric sample.mirage
+ plot metric sample.mirage_longlong
+chart title "QA Units OK - count/sec and count(->count/sec)" style plot
+ plot metric sample.write_me
+ plot metric sample.pdu
+
+
+exit=0
+--- out ---
+--- err ---
+<timestamp>: Console available
+<timestamp>: Global settings setup complete
+<timestamp>: Metric group setup complete (0 hosts, 0 archives)
+<timestamp>: Timezones and time window setup complete
+<timestamp>: Time button resources loaded
+<timestamp>: Phase1 user interface constructors complete
+<timestamp>: PmChart::setActiveTab index=0 r=1
+<timestamp>: Phase2 user interface setup complete
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Chart::setCurrent(<addr>) true
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.byte_rate
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.byte_ctr
+<timestamp>: SamplingEngine::isCompatible type=0, units=byte
+<timestamp>: addItem <addr> nitems=2
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.byte_ctr
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.byte_rate
+<timestamp>: SamplingEngine::isCompatible type=0, units=byte / sec
+<timestamp>: addItem <addr> nitems=2
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem instance sample.mirage[m-00]
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem instance sample.mirage_longlong[m-00]
+<timestamp>: SamplingEngine::isCompatible type=2, units=byte / millisec
+<timestamp>: addItem <addr> nitems=2
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.write_me
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.pdu
+<timestamp>: SamplingEngine::isCompatible type=3, units=count
+<timestamp>: addItem <addr> nitems=2
+--- post ---
+=== views/006-05 ===
+#kmchart
+version 1
+chart title "QA Units BAD - byte / msec and count/sec" style plot
+ plot metric sample.mirage_longlong
+ plot metric sample.write_me
+
+exit=1
+--- out ---
+--- err ---
+<timestamp>: Console available
+<timestamp>: Global settings setup complete
+<timestamp>: Metric group setup complete (0 hosts, 0 archives)
+<timestamp>: Timezones and time window setup complete
+<timestamp>: Time button resources loaded
+<timestamp>: Phase1 user interface constructors complete
+<timestamp>: PmChart::setActiveTab index=0 r=1
+<timestamp>: Phase2 user interface setup complete
+<timestamp>: Chart::ctor complete(<addr>)
+<timestamp>: Chart::setCurrent(<addr>) true
+<timestamp>: Tab::addChart: [0]->Chart <addr>
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem instance sample.mirage_longlong[m-00]
+<timestamp>: addItem <addr> nitems=1
+<timestamp>: Chart::addItem src=<host>
+<timestamp>: addItem metric=sample.write_me
+<timestamp>: SamplingEngine::isCompatible type=0, units=count / sec
+--- post ---
+Error: views/006-05[7]
+Failed to plot metric "sample.write_me" for
+host <host>:
+Units for this metric are not compatible with other plots in this chart
diff --git a/qa/1007 b/qa/1007
new file mode 100755
index 0000000..6879d6d
--- /dev/null
+++ b/qa/1007
@@ -0,0 +1,55 @@
+#!/bin/sh
+# PCP QA Test No. 1007
+# Check handling of "tab" keyword in configuration language.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+_check_display
+which pmchart >/dev/null 2>&1 || _notrun "pmchart not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== Valid, no error ==="
+cat <<End-of-File | pmchart -c - -C 2>&1 | _filter_views
+#kmchart
+version 1
+tab "1" points 300 samples 300
+chart title "Tab Test" style stacking
+ plot legend "User" color #2d2de2 metric kernel.all.cpu.user
+tab "2" points 0 samples 20
+tab "3" points 20 samples 200
+End-of-File
+
+echo "=== Bad syntax, no tab specification ==="
+cat <<End-of-File | pmchart -c - -C 2>&1 | _filter_views
+#kmchart
+version 1
+tab
+End-of-File
+
+echo "=== Bad syntax, no point keyword ==="
+cat <<End-of-File | pmchart -c - -C 2>&1 | _filter_views
+#kmchart
+version 1
+tab "Indexing Host" 300
+End-of-File
+
+echo "=== Bad syntax, no point value ==="
+cat <<End-of-File | pmchart -c - -C 2>&1 | _filter_views
+#kmchart
+version 1
+tab "DB" points
+End-of-File
+
+echo "=== Bad syntax, no sample value ==="
+cat <<End-of-File | pmchart -c - -C 2>&1 | _filter_views
+#kmchart
+version 1
+tab "App" points 34 samples
+End-of-File
+
+exit
diff --git a/qa/1007.out b/qa/1007.out
new file mode 100644
index 0000000..ed76a37
--- /dev/null
+++ b/qa/1007.out
@@ -0,0 +1,10 @@
+QA output created by 1007
+=== Valid, no error ===
+=== Bad syntax, no tab specification ===
+Error: stdin[4] Syntax error: expecting "<tab label>", found End-of-Line
+=== Bad syntax, no point keyword ===
+Error: stdin[3] Syntax error: expecting "<tab points>", found "300"
+=== Bad syntax, no point value ===
+Error: stdin[4] Syntax error: expecting "<tab points value>", found End-of-Line
+=== Bad syntax, no sample value ===
+Error: stdin[4] Syntax error: expecting "<tab samples value>", found End-of-Line
diff --git a/qa/1008 b/qa/1008
new file mode 100755
index 0000000..a7afb1b
--- /dev/null
+++ b/qa/1008
@@ -0,0 +1,63 @@
+#!/bin/sh
+# PCP QA Test No. 1008
+# Metrics class error handling, instance matching etc.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+localhost=$host
+otherhost=no.such.host
+dump="pmdumptext -s 1"
+tz=`pmprobe -v pmcd.timezone | sed -e 's/.* "//' -e 's/"//'`
+
+_filter()
+{
+ sed \
+ -e "s/$otherhost[\.a-zA-Z0-9\-]*/OTHER_HOST/g" \
+ -e "s/$localhost[\.a-zA-Z0-9\-]*/THIS_HOST/g" \
+ -e "s#$tz#TZ#"
+}
+
+echo "--- bogus host ---"
+$dump -h bogus.host.i.hope hinv.ncpu 2>&1 | _filter
+$dump bogus.host.i.hope:hinv.ncpu 2>&1 | _filter
+
+echo "--- bogus archive ---"
+$dump -a bogus_archive_i_hope 2>&1 | _filter
+$dump bogus_archive_i_hope/hinv.ncpu 2>&1 | _filter
+
+echo "--- bogus metric ---"
+$dump go.faster 2>&1 | _filter
+
+echo "--- bogus instance ---"
+$dump "kernel.percpu.cpu.user[cpu999999]" 2>&1 | _filter
+
+echo "--- metric has no instances ---"
+$dump "hinv.ncpu[cpu0]" 2>&1 | _filter
+
+echo "--- matching instances up to leading space ---"
+$dump -imC "kernel.all.load[15,5,1]" 2>&1 | _filter
+
+echo "--- two archives from the same host ---"
+$dump -a archives/gap,archives/gap2 hinv.ncpu
+$dump -a archives/gap2 archives/gap/hinv.ncpu
+
+echo "--- no matching archive for host ---"
+$dump -a archives/gap ${otherhost}:hinv.ncpu 2>&1 | _filter
+
+echo "--- live and archive contexts ---"
+$dump -h $localhost archives/gap/hinv.ncpu 2>&1 | _filter
+
+echo "--- handle a string or aggregate metric ---"
+$dump -f "TIME:" pmcd.timezone sample.sysinfo 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/1008.out b/qa/1008.out
new file mode 100644
index 0000000..6b71062
--- /dev/null
+++ b/qa/1008.out
@@ -0,0 +1,35 @@
+QA output created by 1008
+--- bogus host ---
+pmdumptext: Error: bogus.host.i.hope: No route to host
+pmdumptext: Error: bogus.host.i.hope: No route to host
+pmdumptext: no valid metrics, exiting.
+--- bogus archive ---
+pmdumptext: Error: bogus_archive_i_hope: No such file or directory
+pmdumptext: Error: bogus_archive_i_hope: No such file or directory
+pmdumptext: no valid metrics, exiting.
+--- bogus metric ---
+pmdumptext: Error: go.faster: Unknown metric name
+pmdumptext: no valid metrics, exiting.
+--- bogus instance ---
+pmdumptext: Error: THIS_HOST:kernel.percpu.cpu.user[cpu999999]: Unknown or illegal instance identifier
+pmdumptext: no valid metrics, exiting.
+--- metric has no instances ---
+pmdumptext: Error: THIS_HOST:hinv.ncpu[cpu0]: Unknown or illegal instance identifier
+pmdumptext: no valid metrics, exiting.
+--- matching instances up to leading space ---
+ Metric load load load
+ Inst 15 min 5 minu 1 minu
+--- two archives from the same host ---
+pmdumptext: Error: Archives "archives/gap" and "archives/gap2" are from the same host "smash"
+pmdumptext: Error: Archives "archives/gap2" and "archives/gap" are from the same host "smash"
+pmdumptext: no valid metrics, exiting.
+--- no matching archive for host ---
+pmdumptext: Error: No archives were specified for host "OTHER_HOST"
+pmdumptext: no valid metrics, exiting.
+--- live and archive contexts ---
+pmdumptext: Error: Archive "archives/gap" requested after live mode was assumed.
+pmdumptext: no valid metrics, exiting.
+--- handle a string or aggregate metric ---
+pmdumptext: Error: THIS_HOST:sample.sysinfo has type "AGGREGATE", which is not a number or a string
+pmdumptext: Warning: Some metrics ignored, continuing with valid metrics
+TIME: "TZ"
diff --git a/qa/1009 b/qa/1009
new file mode 100755
index 0000000..f5a018e
--- /dev/null
+++ b/qa/1009
@@ -0,0 +1,48 @@
+#!/bin/sh
+# PCP QA Test No. 1009
+# Exercise some pmdumptext problems
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# proc metrics may not be available
+pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
+
+# see if unix domain sockets are available (permissions)
+unix_domain_sockets=false
+eval `pmconfig -L 2>/dev/null`
+target="-h localhost"
+$unix_domain_sockets && target="-h unix:"
+
+# real QA test starts here
+inst=`pminfo $target -F proc.psinfo.pid \
+ | sed -n -e '/inst \[1 /{
+s/^[^"]*"//
+s/ .*//
+p
+}'`
+
+if [ -z "$inst" ]
+then
+ echo "Arrgh, cannot find proc.psinfo.pid for init!"
+ pminfo $target -F proc.psinfo.pid
+fi
+
+echo "proc.psinfo.pid[$inst] 0" >$tmp.config
+echo "proc.psinfo.pid[1]" >> $tmp.config
+
+pmdumptext $target -G -s 1 -f '' -t 1 -c $tmp.config >$tmp.out 2>&1
+
+echo
+echo "expect two \"1\"s ..."
+sort -u $tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/1009.out b/qa/1009.out
new file mode 100644
index 0000000..775443e
--- /dev/null
+++ b/qa/1009.out
@@ -0,0 +1,4 @@
+QA output created by 1009
+
+expect two "1"s ...
+1 1
diff --git a/qa/101 b/qa/101
new file mode 100755
index 0000000..9c93b80
--- /dev/null
+++ b/qa/101
@@ -0,0 +1,145 @@
+#! /bin/sh
+# PCP QA Test No. 101
+# exercise the logging state compatibility matrix for pmlc ...
+# initial: some instances for a metric
+# request: different instances for the same metric
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e '/connect /{
+s/connect [0-9][0-9]*/connect PID/
+s/@.*/@HOSTNAME/
+}' \
+ -e '/Connected /{
+s/ on port [0-9][0-9]*//
+s/ pid [0-9][0-9]*//
+s/ at .*/ at HOSTNAME/
+}' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ | $PCP_AWK_PROG '
+/pmlc commands/ { skip = 1; print "[command summary deleted ...]" }
+/metric-name/ { skip = 0; next }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_logger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/AF event queue/d'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+_do_cmds()
+{
+ for ctl in mandatory advisory
+ do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ ( echo "# setup"; \
+ echo "log mandatory maybe sample.bin "'[ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]'
+ echo "# $ctl $state -> $req_ctl $req_state"; \
+ echo "log $ctl $state sample.bin "'[ "bin-100", "bin-200", "bin-300"]'
+ ) | pmlc -ie $1
+ sleep 2
+ ( echo "log $req_ctl $req_state sample.bin "'[ "bin-400", "bin-500" ]'; \
+ echo "query sample.bin"; \
+ ) | pmlc -ie $1
+ sleep 2
+ # need sleeps to allow pmlogger to get a look in and
+ # to allow the pmlogger socket to be closed so the
+ # next pmlc invocation can get connected
+ done
+ done
+ done
+ done
+}
+
+x=3
+
+# real QA test starts here
+$sudo rm -f $tmp.0 $tmp.meta $tmp.index
+
+# start pmlogger with the expected number of samples plus a few more
+# to detect extra log output
+#
+_start_up_pmlogger -t 0.5sec -L -s 30 -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+sleep 2
+_do_cmds $logger_pid >$tmp.out 2>&1
+
+# this chews up any remaining samples quickly so pmlogger terminates
+#
+echo "log mandatory on 25 msec sample.long.one" \
+| pmlc -ie $logger_pid >>$tmp.out 2>&1
+
+_filter_pmlc <$tmp.out
+
+# wait for pmlogger to terminate
+#
+_wait_pmlogger_end $logger_pid
+cat $tmp.err $tmp.log | _filter_logger
+
+echo
+if [ -s $tmp.0 ]
+then
+ echo "Uniq filtered entries from pmdumplog ..."
+ pmdumplog $tmp \
+ | _filter_dump \
+ | sed -e 's/TIMESTAMP//' -e 's/^ *//' \
+ | LC_COLLATE=POSIX sort -u
+ pmdumplog $tmp >$seq.full 2>&1
+else
+ echo "Archive log is empty"
+fi
+
+exit
diff --git a/qa/101.out b/qa/101.out
new file mode 100644
index 0000000..2909af0
--- /dev/null
+++ b/qa/101.out
@@ -0,0 +1,1307 @@
+QA output created by 101
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> mandatory on once
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> mandatory maybe
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> mandatory off
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> advisory on once
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> advisory off
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> mandatory on once
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> mandatory maybe
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> mandatory off
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> advisory on once
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> advisory off
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> mandatory on once
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> mandatory maybe
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> mandatory off
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> advisory on once
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> advisory off
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> mandatory on once
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> mandatory maybe
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> mandatory off
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> advisory on once
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> advisory off
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> mandatory on once
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> mandatory maybe
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> mandatory off
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> advisory on once
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> advisory off
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-400", "bin-500" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on 25 msec sample.long.one
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-400
+ instance: bin-500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.long.one
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+Uniq filtered entries from pmdumplog ...
+2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+29.0.10 (sample.long.one): value NUMBER
+29.0.6 (sample.bin):
+inst [100 or "bin-100"] value NUMBER
+inst [200 or "bin-200"] value NUMBER
+inst [300 or "bin-300"] value NUMBER
+inst [400 or "bin-400"] value NUMBER
+inst [500 or "bin-500"] value NUMBER
diff --git a/qa/1010 b/qa/1010
new file mode 100755
index 0000000..156f871
--- /dev/null
+++ b/qa/1010
@@ -0,0 +1,61 @@
+#!/bin/sh
+# PCP QA Test No. 1010
+# Test pmdumptext output formats
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { state = 0 }
+$1 == "General" { print; print "...:"; state = 1; next }
+$1 == "Reporting" { print; print "...:"; state = 1; next }
+state == 1 && NF == 0 { state = 0 }
+state == 1 { next }
+ { print }' \
+ | sed "s/^[A-Za-z]* [A-Za-z]* [ 0-3][0-9] [ 0-2][0-9]:[0-5][0-9]:[0-5][0-9]/VERY_VERY_LONG_TIME/" \
+ | sed "s/^[ 0-2][0-9]:[0-5][0-9]:[0-5][0-9]/SHRTTIME/"
+}
+
+# real QA test starts here
+
+cat << end-of-file > $tmp.log_conf
+log mandatory on 1 second {
+ sample.hordes.one
+ sample.double
+}
+end-of-file
+pmlogger -c $tmp.log_conf -s 5s $tmp.log
+offset=`_arch_start $tmp.log 0`
+
+cat << end-of-file > $tmp.conf
+sample.hordes.one["3"]
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.ten 0.5
+sample.double.hundred -0.0033
+sample.double.million 0.000056
+end-of-file
+
+for i in '' '-i' '-i -w 10'
+do
+ for f in '' '-M' '-F' '-G' '-f %H:%M:%S'
+ do
+ echo
+ echo "pmdumptext $i $f -umN"
+ pmdumptext -O $offset $i $f -d' ' -umN -t 1 -s 3 -c $tmp.conf -a $tmp.log 2>&1 \
+ | _filter
+ done
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/1010.out b/qa/1010.out
new file mode 100644
index 0000000..4b73f7b
--- /dev/null
+++ b/qa/1010.out
@@ -0,0 +1,160 @@
+QA output created by 1010
+
+pmdumptext -umN
+Time sample.hordes.one["3"] sample.double.ten sample.double.hundred sample.double.million sample.double.ten sample.double.hundred sample.double.million
+? 0.000 0.000 0.000 0.000 0.500 -0.003 0.000
+none none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.000 10.000 100.000 1000000.000 20.000 -30303.030 17857142857.143
+VERY_VERY_LONG_TIME 3.000 10.000 100.000 1000000.000 20.000 -30303.030 17857142857.143
+
+pmdumptext -M -umN
+[ 1] sample.hordes.one["3"]
+[ 2] sample.double.ten
+[ 3] sample.double.hundred
+[ 4] sample.double.million
+[ 5] sample.double.ten
+[ 6] sample.double.hundred
+[ 7] sample.double.million
+
+ 1 2 3 4 5 6 7
+Time sample.hordes.one["3"] sample.double.ten sample.double.hundred sample.double.million sample.double.ten sample.double.hundred sample.double.million
+? 0.000 0.000 0.000 0.000 0.500 -0.003 0.000
+none none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.000 10.000 100.000 1000000.000 20.000 -30303.030 17857142857.143
+VERY_VERY_LONG_TIME 3.000 10.000 100.000 1000000.000 20.000 -30303.030 17857142857.143
+
+pmdumptext -F -umN
+Time sample.hordes.one["3"] sample.double.ten sample.double.hundred sample.double.million sample.double.ten sample.double.hundred sample.double.million
+? 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+none none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -G -umN
+Time sample.hordes.one["3"] sample.double.ten sample.double.hundred sample.double.million sample.double.ten sample.double.hundred sample.double.million
+? 0 0 0 0 0.5 -0.0033 5.6e-05
+none none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3 10 100 1e+06 20 -3.03e+04 1.79e+10
+VERY_VERY_LONG_TIME 3 10 100 1e+06 20 -3.03e+04 1.79e+10
+
+pmdumptext -f %H:%M:%S -umN
+Time sample.hordes.one["3"] sample.double.ten sample.double.hundred sample.double.million sample.double.ten sample.double.hundred sample.double.million
+? 0.000 0.000 0.000 0.000 0.500 -0.003 0.000
+none none none none none none none none
+SHRTTIME ? ? ? ? ? ? ?
+SHRTTIME 3.000 10.000 100.000 1000000.000 20.000 -30303.030 17857142857.143
+SHRTTIME 3.000 10.000 100.000 1000000.000 20.000 -30303.030 17857142857.143
+
+pmdumptext -i -umN
+ Metric one ten undred illion ten undred illion
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -i -M -umN
+[ 1] sample.hordes.one["3"]
+[ 2] sample.double.ten
+[ 3] sample.double.hundred
+[ 4] sample.double.million
+[ 5] sample.double.ten
+[ 6] sample.double.hundred
+[ 7] sample.double.million
+
+ Column 1 2 3 4 5 6 7
+ Metric one ten undred illion ten undred illion
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -i -F -umN
+ Metric one ten undred illion ten undred illion
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -i -G -umN
+pmdumptext: -i and -G may not be used togther
+Usage: pmdumptext [options] [metrics ...]
+
+General options:
+...:
+
+Reporting options:
+...:
+
+pmdumptext -i -f %H:%M:%S -umN
+ Metric one ten undred illion ten undred illion
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+SHRTTIME ? ? ? ? ? ? ?
+SHRTTIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+SHRTTIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -i -w 10 -umN
+ Metric hordes.one double.ten hundred million double.ten hundred million
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -i -w 10 -M -umN
+[ 1] sample.hordes.one["3"]
+[ 2] sample.double.ten
+[ 3] sample.double.hundred
+[ 4] sample.double.million
+[ 5] sample.double.ten
+[ 6] sample.double.hundred
+[ 7] sample.double.million
+
+ Column 1 2 3 4 5 6 7
+ Metric hordes.one double.ten hundred million double.ten hundred million
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -i -w 10 -F -umN
+ Metric hordes.one double.ten hundred million double.ten hundred million
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+VERY_VERY_LONG_TIME ? ? ? ? ? ? ?
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+VERY_VERY_LONG_TIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+
+pmdumptext -i -w 10 -G -umN
+pmdumptext: -i and -G may not be used togther
+Usage: pmdumptext [options] [metrics ...]
+
+General options:
+...:
+
+Reporting options:
+...:
+
+pmdumptext -i -w 10 -f %H:%M:%S -umN
+ Metric hordes.one double.ten hundred million double.ten hundred million
+ Inst 3 n/a n/a n/a n/a n/a n/a
+ Normal 0.00 0.00 0.00 0.00 0.50 0.00 0.00
+ Units none none none none none none none
+SHRTTIME ? ? ? ? ? ? ?
+SHRTTIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
+SHRTTIME 3.00 10.00 0.10K 1.00M 20.00 -0.03M 17.86G
diff --git a/qa/1011 b/qa/1011
new file mode 100755
index 0000000..27cc02d
--- /dev/null
+++ b/qa/1011
@@ -0,0 +1,94 @@
+#!/bin/sh
+# PCP QA Test No. 1011
+# Compare pmdumptext output to pmval
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+date=`pmdumplog -l archives/gap | grep commencing |
+ sed -e 's/ commencing //' -e 's/\.[0-9]*//'`
+
+_diff_filter()
+{
+ # do nothing, we want to see all of the text if there are differences
+ #
+ cat
+ # old stuff ...
+ #
+ # sed \
+ # -e "s/$date/DATE/g" \
+ # -e "s/^[<>] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]/TIME/"
+}
+
+# Note: pmdumptext and pmval can disagree about the timezone when
+# processing an archive, in the presence of timestamps in the
+# archive coming from a period of daylight savings, and it not
+# currently being a period of daylight savings, or vice versa.
+# This sometimes produces a difference of 1 hour in the reported
+# time between the tools, hence the HH: filtering here and in
+# _pmdumptext_filter.
+# Given the way timezones work for Linux in particular, this
+# difference cannot be fixed, as the two applications use different
+# ways of interacting with the PCP timezones support.
+#
+_pmval_filter()
+{
+ $PCP_AWK_PROG '{if (NF > 0) print $0}' |
+ sed \
+ -e 's/No values available/?/' \
+ -e '/^[a-z]*:/d' \
+ -e 's/.[0-9][0-9][0-9][ ]*/ /' \
+ -e 's/\.0*//' \
+ -e 's/^[012][0-9]:/HH:/' \
+ -e '/bin-/d' \
+ -e 's/[ ]*$//' \
+ -e 's/ [ ]*/ /g'
+}
+
+_pmdumptext_filter()
+{
+ sed \
+ -e 's/^[012][0-9]:/HH:/' \
+ -e 's/? ? ? ? ? ? ? ? ?/?/'
+}
+
+# real QA test starts here
+rm -f $seq.full
+
+for metric in \
+ pmcd.pdu_in.total \
+ pmcd.pdu_in.fetch \
+ pmcd.numagents \
+ sample.bin
+do
+ echo Raw $metric
+ echo Raw $metric >>$seq.full
+ pmval -t 1 -r -a archives/gap $metric 2>&1 | _pmval_filter > $tmp.pmval
+ pmdumptext -G -w 16 -t 1 -r -a archives/gap -d" " -f "%H:%M:%S" $metric 2>&1 | _pmdumptext_filter > $tmp.dump
+ diff $tmp.pmval $tmp.dump | _diff_filter
+ echo "--- pmval ---" >>$seq.full
+ cat $tmp.pmval >>$seq.full
+ echo "--- pmdumptext ---" >>$seq.full
+ cat $tmp.dump >>$seq.full
+
+ echo Rate $metric
+ echo Rate $metric >>$seq.full
+ pmval -t 1 -a archives/gap $metric 2>&1 | _pmval_filter > $tmp.pmval
+ pmdumptext -G -w 16 -t 1 -a archives/gap -d" " -f "%H:%M:%S" $metric 2>&1 | _pmdumptext_filter > $tmp.dump
+ diff $tmp.pmval $tmp.dump | _diff_filter
+ echo "--- pmval ---" >>$seq.full
+ cat $tmp.pmval >>$seq.full
+ echo "--- pmdumptext ---" >>$seq.full
+ cat $tmp.dump >>$seq.full
+
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/1011.out b/qa/1011.out
new file mode 100644
index 0000000..25315b2
--- /dev/null
+++ b/qa/1011.out
@@ -0,0 +1,9 @@
+QA output created by 1011
+Raw pmcd.pdu_in.total
+Rate pmcd.pdu_in.total
+Raw pmcd.pdu_in.fetch
+Rate pmcd.pdu_in.fetch
+Raw pmcd.numagents
+Rate pmcd.numagents
+Raw sample.bin
+Rate sample.bin
diff --git a/qa/1012 b/qa/1012
new file mode 100755
index 0000000..cd68d06
--- /dev/null
+++ b/qa/1012
@@ -0,0 +1,28 @@
+#!/bin/sh
+# PCP QA Test No. 1012
+# Test unit scale conversion in pmdumptext
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ $PCP_AWK_PROG '
+$1 == "TIME-STAMP" && $2 != "?" { val = $2;
+ if (val < 1.05 && val > 0.95) $2 = 1.0;
+ printf("%s %5.2f\n", $1, $2); next }
+ { print }'
+}
+
+# real QA test starts here
+pmdumptext -imu -w 7 -s 3 -f 'TIME-STAMP' sample.milliseconds | _filter 2>&1
+
+# success, all done
+status=0
+exit
diff --git a/qa/1012.out b/qa/1012.out
new file mode 100644
index 0000000..c710e89
--- /dev/null
+++ b/qa/1012.out
@@ -0,0 +1,6 @@
+QA output created by 1012
+ Metric seconds
+ Units util
+TIME-STAMP ?
+TIME-STAMP 1.00
+TIME-STAMP 1.00
diff --git a/qa/1013 b/qa/1013
new file mode 100755
index 0000000..630adc0
--- /dev/null
+++ b/qa/1013
@@ -0,0 +1,31 @@
+#!/bin/sh
+# PCP QA Test No. 1013
+# Test QmcMetric::formatNumber
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_format/qmc_format ] || _notrun "qmc_format not built or installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+for i in \
+ 0 \
+ 0.00001 0.0001 0.001 0.01 0.1 1.0 10.0 100.0 1000.0 10000.0 \
+ 1000000.0 10000000.0 100000000.0 1000000000.0 10000000000.0 \
+ 100000000000.0 1000000000000.0 10000000000000.0 \
+ 0.005 0.0051 9.995 9.9951 99.95 99.951 99950.0 99951.0 \
+ 99950000.0 99951000.0 99950000000.0 99951000000.0 \
+ 99950000000000.0 99951000000000.0
+do
+ echo $i | $PCP_AWK_PROG '{printf("%17s = ", $1); }'
+ qt/qmc_format/qmc_format $i
+ echo -$i | $PCP_AWK_PROG '{printf("%17s = ", $1); }'
+ qt/qmc_format/qmc_format -$i
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/1013.out b/qa/1013.out
new file mode 100644
index 0000000..56df36a
--- /dev/null
+++ b/qa/1013.out
@@ -0,0 +1,67 @@
+QA output created by 1013
+ 0 = 0.00
+ -0 = 0.00
+ 0.00001 = 0.00
+ -0.00001 = 0.00
+ 0.0001 = 0.00
+ -0.0001 = 0.00
+ 0.001 = 0.00
+ -0.001 = 0.00
+ 0.01 = 0.01
+ -0.01 = -0.01
+ 0.1 = 0.10
+ -0.1 = -0.10
+ 1.0 = 1.00
+ -1.0 = -1.00
+ 10.0 = 10.00
+ -10.0 = -0.01K
+ 100.0 = 0.10K
+ -100.0 = -0.10K
+ 1000.0 = 1.00K
+ -1000.0 = -1.00K
+ 10000.0 = 10.00K
+ -10000.0 = -0.01M
+ 1000000.0 = 1.00M
+ -1000000.0 = -1.00M
+ 10000000.0 = 10.00M
+ -10000000.0 = -0.01G
+ 100000000.0 = 0.10G
+ -100000000.0 = -0.10G
+ 1000000000.0 = 1.00G
+ -1000000000.0 = -1.00G
+ 10000000000.0 = 10.00G
+ -10000000000.0 = -0.01T
+ 100000000000.0 = 0.10T
+ -100000000000.0 = -0.10T
+ 1000000000000.0 = 1.00T
+ -1000000000000.0 = -1.00T
+ 10000000000000.0 = 10.00T
+-10000000000000.0 = -inf?
+ 0.005 = 0.00
+ -0.005 = 0.00
+ 0.0051 = 0.01
+ -0.0051 = -0.01
+ 9.995 = 9.99
+ -9.995 = -9.99
+ 9.9951 = 10.00
+ -9.9951 = -0.01K
+ 99.95 = 99.95
+ -99.95 = -0.10K
+ 99.951 = 0.10K
+ -99.951 = -0.10K
+ 99950.0 = 99.95K
+ -99950.0 = -0.10M
+ 99951.0 = 0.10M
+ -99951.0 = -0.10M
+ 99950000.0 = 99.95M
+ -99950000.0 = -0.10G
+ 99951000.0 = 0.10G
+ -99951000.0 = -0.10G
+ 99950000000.0 = 99.95G
+ -99950000000.0 = -0.10T
+ 99951000000.0 = 0.10T
+ -99951000000.0 = -0.10T
+ 99950000000000.0 = 99.95T
+-99950000000000.0 = -inf?
+ 99951000000000.0 = inf?
+-99951000000000.0 = -inf?
diff --git a/qa/1014 b/qa/1014
new file mode 100755
index 0000000..72bfffb
--- /dev/null
+++ b/qa/1014
@@ -0,0 +1,12 @@
+#!/bin/sh
+# PCP QA Test No. 1014
+# Exercise the QmcDesc class
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_desc/qmc_desc ] || _notrun "qmc_desc not built or installed"
+
+qt/qmc_desc/qmc_desc
+exit $?
diff --git a/qa/1014.out b/qa/1014.out
new file mode 100644
index 0000000..220c3fb
--- /dev/null
+++ b/qa/1014.out
@@ -0,0 +1,12 @@
+QA output created by 1014
+*** Compare metric descriptor with pminfo output ***
+hinv.ncpu
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+hinv.ncpu
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+*** Fetch a bad descriptor ***
+qmc_desc: Error: Bogus metric: Unknown or illegal metric identifier
diff --git a/qa/1015 b/qa/1015
new file mode 100755
index 0000000..191c507
--- /dev/null
+++ b/qa/1015
@@ -0,0 +1,12 @@
+#!/bin/sh
+# PCP QA Test No. 1015
+# Test QmcIndom functionality
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_indom/qmc_indom ] || _notrun "qmc_indom not built or installed"
+
+qt/qmc_indom/qmc_indom
+exit $?
diff --git a/qa/1015.out b/qa/1015.out
new file mode 100644
index 0000000..0f6f8d5
--- /dev/null
+++ b/qa/1015.out
@@ -0,0 +1,38 @@
+QA output created by 1015
+*** Lookup an indom ***
+1.1: 8 instances (0 NULL)
+ [65792] = "cpu:1.1.a" (0 refs) active
+ [65793] = "cpu:1.1.b" (0 refs) active
+ [66304] = "cpu:1.3.a" (0 refs) active
+ [66305] = "cpu:1.3.b" (0 refs) active
+ [131328] = "cpu:2.1.a" (0 refs) active
+ [131329] = "cpu:2.1.b" (0 refs) active
+ [131840] = "cpu:2.3.a" (0 refs) active
+ [131841] = "cpu:2.3.b" (0 refs) active
+
+*** Reference one instance ***
+1.1: 8 instances (0 NULL)
+ [65792] = "cpu:1.1.a" (0 refs) active
+ [65793] = "cpu:1.1.b" (0 refs) active
+ [66304] = "cpu:1.3.a" (1 refs) active
+ [66305] = "cpu:1.3.b" (0 refs) active
+ [131328] = "cpu:2.1.a" (0 refs) active
+ [131329] = "cpu:2.1.b" (0 refs) active
+ [131840] = "cpu:2.3.a" (0 refs) active
+ [131841] = "cpu:2.3.b" (0 refs) active
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=4194305 [1.1] state=EXCLUDE 1 instances
+ Instances: [66304]
+
+*** Reference all instances ***
+1.1: 8 instances (0 NULL)
+ [65792] = "cpu:1.1.a" (1 refs) active
+ [65793] = "cpu:1.1.b" (1 refs) active
+ [66304] = "cpu:1.3.a" (2 refs) active
+ [66305] = "cpu:1.3.b" (1 refs) active
+ [131328] = "cpu:2.1.a" (1 refs) active
+ [131329] = "cpu:2.1.b" (1 refs) active
+ [131840] = "cpu:2.3.a" (1 refs) active
+ [131841] = "cpu:2.3.b" (1 refs) active
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=4194305 [1.1] state=INCLUDE 0 instances
diff --git a/qa/1016 b/qa/1016
new file mode 100755
index 0000000..67e8441
--- /dev/null
+++ b/qa/1016
@@ -0,0 +1,29 @@
+#!/bin/sh
+# PCP QA Test No. 1016
+# Test QmcContext functionality
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_context/qmc_context ] || _notrun "qmc_context not built or installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# timezones and EHOSTUNREACH (148 for IRIX, 113 for Linux)
+_filter()
+{
+ sed \
+ -e "s#EST-11EST-10,89/2:00,299/2:00#TZ#g" \
+ -e 's/hndl = [0-9][0-9]*/hndl = HANDLE/g' \
+ -e 's/-113 has 0/-148 has 0/' \
+ -e 's/sts = -113/sts = -148/'
+}
+
+cd $here/archives
+$here/qt/qmc_context/qmc_context -DPMC 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/1016.out b/qa/1016.out
new file mode 100644
index 0000000..399aef9
--- /dev/null
+++ b/qa/1016.out
@@ -0,0 +1,39 @@
+QA output created by 1016
+*** Simple connection ***
+QmcSource::getSource: Creating new source for oview-short
+QmcSource::QmcSource: Created context 0 to archive "oview-short"
+QmcSource::dupContext: Using original context for archive "oview-short"
+Context 0 has 0 metric names for source:
+ sts = 0, type = 2, source = oview-short
+ host = snort, timezone = TZ, tz hndl = HANDLE
+ start = Thu Sep 11 16:57:06.414 1997, end = Thu Sep 11 16:57:06.630 1997, dupFlag = true
+ 1 contexts: 0
+
+*** Cacheing of descriptors and indoms ***
+QmcContext::lookupDesc: Add descriptor for 1.18.2
+QmcContext::lookupPMID: Matched "hinv.ncpu" to id 1.18.2
+QmcContext::lookupDesc: Add descriptor for 1.26.13
+QmcContext::lookupInDom: Add indom for 1.1
+QmcContext::lookupPMID: Matched "hinv.cputype" to id 1.26.13
+QmcContext::lookupDesc: Add descriptor for 1.26.9
+QmcContext::lookupInDom: Reusing indom 1.1
+QmcContext::lookupPMID: Matched "hinv.map.cpu" to id 1.26.9
+QmcContext::lookupPMID: Matched "hinv.ncpu" to id 1.18.2
+QmcContext::lookupDesc: Reusing descriptor 1.18.2
+QmcContext::lookupPMID: Matched "hinv.ncpu" to id 1.18.2
+Context 0 has 3 metric names for source:
+ sts = 0, type = 2, source = oview-short
+ host = snort, timezone = TZ, tz hndl = HANDLE
+ start = Thu Sep 11 16:57:06.414 1997, end = Thu Sep 11 16:57:06.630 1997, dupFlag = true
+ 1 contexts: 0
+
+*** Bad Context ***
+QmcSource::getSource: Creating new source for no-such-host
+QmcSource::QmcSource: Context to no-such-host failed: No route to host
+Context -148 has 0 metric names for source:
+ sts = -148, type = 1, source = no-such-host
+ host = no-such-host, timezone = , tz hndl = HANDLE
+
+
+*** Exiting ***
+QmcSource::delContext: No contexts remain, removing archive "oview-short"
diff --git a/qa/1017 b/qa/1017
new file mode 100755
index 0000000..486711e
--- /dev/null
+++ b/qa/1017
@@ -0,0 +1,93 @@
+#!/bin/sh
+# PCP QA Test No. 1017
+# Test QmcMetric functionality
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_metric/qmc_metric ] || _notrun "qmc_metric not built or installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+SIMPLE_CONF=$PCP_PMDAS_DIR/simple/simple.conf
+status=1 # failure is the default!
+rm -f $seq.full
+
+_cleanup()
+{
+ [ -f $tmp.conf ] && $sudo cp $tmp.conf $PCP_PMDAS_DIR/simple/simple.conf
+ [ -f $tmp.pmcd.conf ] && $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo killall -HUP pmcd
+ _wait_for_pmcd
+ rm -f $tmp.*
+}
+
+_filter()
+{
+ tee $here/$seq.full |\
+ sed \
+ -e "s/$host/HOST/g" \
+ -e "/^sample\.seconds/s/= 0.9[0-9]*/= 1/g" \
+ -e "/^sample\.seconds/s/= 1.0[0-9]*/= 1/g" \
+ -e "/^sample\.seconds/s/= 1 /= NUMBER /g" \
+ -e "/^sample\.seconds/s/= 0 /= NUMBER /g" \
+ -e '/ minute" /s/= [0-9][0-9]*\.[0-9]*/= NUMBER/g' \
+ -e '/ minute" /s/= [0-9][0-9]*/= NUMBER/g' \
+ -e "s/ptr = 0x[1-9a-f][0-9a-f]*/ptr = 0x########/g" \
+ -e '/"sec"/{
+s/[0-9][0-9]* none/VALUE none/
+s/\[[0-9][0-9]*]/[I]/
+}' \
+ -e '/"min"/{
+s/[0-9][0-9]* none/VALUE none/
+s/\[[0-9][0-9]*]/[J]/
+}' \
+ -e '/"hour"/{
+s/[0-9][0-9]* none/VALUE none/
+s/\[[0-9][0-9]*]/[K]/
+}' \
+ -e "/hinv\.ncpu =/s/[0-9][0-9]* none/VALUE none/" \
+ -e "/lookupDesc:/s/29\.0\.31$/<pmid for sample.string.hullo>/" \
+ -e "/lookupDesc:/s/29\.0\.6$/<pmid for sample.bin>/" \
+ -e "/lookupDesc:/s/29\.0\.2$/<pmid for sample.seconds>/" \
+ -e "/lookupDesc:/s/1\.18\.2$/<pmid for hinv.ncpu>/" \
+ -e "/lookupDesc:/s/60\.0\.32$/<pmid for hinv.ncpu>/" \
+ -e "/lookupDesc:/s/1\.18\.3$/<pmid for kernel.all.load>/" \
+ -e "/lookupDesc:/s/60\.2\.0$/<pmid for kernel.all.load>/" \
+ -e "/lookupPMID:/s/60\.2\.0$/<pmid for kernel.all.load>/" \
+ -e "/lookupInDom:/s/1\.5$/<indom for kernel.all.load>/" \
+ -e "/lookupInDom:/s/60\.2$/<indom for kernel.all.load>/" \
+ -e "/lookupInDom:/s/29\.2$/<indom for sample.bin>/" \
+ -e "/::genProfile/s/id = [0-9]*,/id = NNN,/" \
+ -e "/::genProfile/s/ptr = 0$/ptr = 0x0/"
+
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+cp $SIMPLE_CONF $tmp.conf
+echo "sec" > $tmp.newconf
+$sudo rm -f $SIMPLE_CONF
+$sudo cp $tmp.newconf $SIMPLE_CONF
+
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+cd $PCP_PMDAS_DIR/simple
+$sudo ./Install </dev/null >$tmp.install 2>&1
+_check_metric simple.now
+
+cd $here/qt/qmc_metric
+$sudo ./qmc_metric -DPMC,OPTFETCH 2>&1 | _filter
+
+cd $PCP_PMDAS_DIR/simple
+$sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+$sudo cp $tmp.conf $SIMPLE_CONF
+rm -f $tmp.pmcd.conf $tmp.conf
+$sudo ./Remove </dev/null >$tmp.remove 2>&1
+
+# success, all done
+status=0
+exit
diff --git a/qa/1017.out b/qa/1017.out
new file mode 100644
index 0000000..9866995
--- /dev/null
+++ b/qa/1017.out
@@ -0,0 +1,329 @@
+QA output created by 1017
+*** Create a single fetch group ***
+
+*** Simple metric ***
+QmcSource::getSource: Creating new source for HOST
+QmcSource::QmcSource: Created context 0 to host "HOST"
+QmcGroup::createLocalContext: Default context to host "HOST"
+QmcSource::dupContext: Using original context for host "HOST"
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for <pmid for hinv.ncpu>
+HOST:hinv.ncpu from host "HOST" with scale = 0 and units = none
+hinv.ncpu = Missing metric value(s)
+
+*** Metric with an Indom ***
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.bin>
+QmcContext::lookupInDom: Add indom for <indom for sample.bin>
+HOST:sample.bin["bin-100", "bin-200", "bin-300", "bin-400", "bin-500", "bin-600", "bin-700", "bin-800", "bin-900"] from host "HOST" with scale = 0 and units = none
+sample.bin: 9 instances
+ [100 or "bin-100" (0)] = Missing metric value(s)
+ [200 or "bin-200" (1)] = Missing metric value(s)
+ [300 or "bin-300" (2)] = Missing metric value(s)
+ [400 or "bin-400" (3)] = Missing metric value(s)
+ [500 or "bin-500" (4)] = Missing metric value(s)
+ [600 or "bin-600" (5)] = Missing metric value(s)
+ [700 or "bin-700" (6)] = Missing metric value(s)
+ [800 or "bin-800" (7)] = Missing metric value(s)
+ [900 or "bin-900" (8)] = Missing metric value(s)
+
+*** proc style specific instance ***
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for <pmid for kernel.all.load>
+QmcContext::lookupInDom: Add indom for <indom for kernel.all.load>
+QmcIndom::lookup: inst "1"(0) matched to "1 minute"(0)
+QmcIndom::lookup: inst "5"(1) matched to "5 minute"(1)
+HOST:kernel.all.load["1 minute", "5 minute"] from host "HOST" with scale = 0 and units = none
+kernel.all.load: 2 instances
+ [1 or "1 minute" (0)] = Missing metric value(s)
+ [5 or "5 minute" (1)] = Missing metric value(s)
+
+*** String metric ***
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.string.hullo>
+HOST:sample.string.hullo from host "HOST" with scale = 0 and units = none
+sample.string.hullo = Missing metric value(s)
+
+*** Rate converted metric ***
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.seconds>
+HOST:sample.seconds from host "HOST" with scale = 0 and units = sec / second
+sample.seconds = Missing metric value(s)
+
+*** Bogus metric ***
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+qmc_metric: Error: HOST:bogus.metric: Unknown metric name
+
+*** Bogus instance ***
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupPMID: Matched "kernel.all.load" to id <pmid for kernel.all.load>
+QmcContext::lookupDesc: Reusing descriptor <pmid for kernel.all.load>
+QmcContext::lookupInDom: Reusing indom <indom for kernel.all.load>
+qmc_metric: Error: HOST:kernel.all.load[2]: Unknown or illegal instance identifier
+
+*** Group 1 Fetch 1 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 9, numInsts = 9, active = 9, activeRef = 9: ALL ptr = 0x0
+QmcIndom::genProfile: id = NNN, count = 2, numInsts = 3, active = 3, activeRef = 2: DELETE ptr = 0x########
+QmcContext::fetch: fetching context host "HOST" has 5 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+hinv.ncpu = VALUE none
+sample.bin: 9 instances
+ [100 or "bin-100" (0)] = 100 none
+ [200 or "bin-200" (1)] = 200 none
+ [300 or "bin-300" (2)] = 300 none
+ [400 or "bin-400" (3)] = 400 none
+ [500 or "bin-500" (4)] = 500 none
+ [600 or "bin-600" (5)] = 600 none
+ [700 or "bin-700" (6)] = 700 none
+ [800 or "bin-800" (7)] = 800 none
+ [900 or "bin-900" (8)] = 900 none
+kernel.all.load: 2 instances
+ [1 or "1 minute" (0)] = NUMBER none
+ [5 or "5 minute" (1)] = NUMBER none
+sample.string.hullo = hullo world!
+sample.seconds = Missing metric value(s)
+
+*** Group 1 Fetch 2 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 5 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+hinv.ncpu = VALUE none
+sample.bin: 9 instances
+ [100 or "bin-100" (0)] = 100 none
+ [200 or "bin-200" (1)] = 200 none
+ [300 or "bin-300" (2)] = 300 none
+ [400 or "bin-400" (3)] = 400 none
+ [500 or "bin-500" (4)] = 500 none
+ [600 or "bin-600" (5)] = 600 none
+ [700 or "bin-700" (6)] = 700 none
+ [800 or "bin-800" (7)] = 800 none
+ [900 or "bin-900" (8)] = 900 none
+kernel.all.load: 2 instances
+ [1 or "1 minute" (0)] = NUMBER none
+ [5 or "5 minute" (1)] = NUMBER none
+sample.string.hullo = hullo world!
+sample.seconds = NUMBER sec / second
+
+*** Remove an instance ***
+kernel.all.load: 1 instance
+ [5 or "5 minute" (1)] = NUMBER none
+
+*** Group 1 Fetch 3 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 1, numInsts = 3, active = 3, activeRef = 1: ADD ptr = 0x########
+QmcContext::fetch: fetching context host "HOST" has 5 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+hinv.ncpu = VALUE none
+sample.bin: 9 instances
+ [100 or "bin-100" (0)] = 100 none
+ [200 or "bin-200" (1)] = 200 none
+ [300 or "bin-300" (2)] = 300 none
+ [400 or "bin-400" (3)] = 400 none
+ [500 or "bin-500" (4)] = 500 none
+ [600 or "bin-600" (5)] = 600 none
+ [700 or "bin-700" (6)] = 700 none
+ [800 or "bin-800" (7)] = 800 none
+ [900 or "bin-900" (8)] = 900 none
+kernel.all.load: 1 instance
+ [5 or "5 minute" (1)] = NUMBER none
+sample.string.hullo = hullo world!
+sample.seconds = NUMBER sec / second
+
+*** Add an instance ***
+QmcIndom::lookup: inst "15"(2) matched to "15 minute"(2)
+kernel.all.load: 2 instances
+ [5 or "5 minute" (1)] = NUMBER none
+ [15 or "15 minute" (2)] = Missing metric value(s)
+
+*** Group 1 Fetch 4 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 2, numInsts = 3, active = 3, activeRef = 2: DELETE ptr = 0x########
+QmcContext::fetch: fetching context host "HOST" has 5 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+hinv.ncpu = VALUE none
+sample.bin: 9 instances
+ [100 or "bin-100" (0)] = 100 none
+ [200 or "bin-200" (1)] = 200 none
+ [300 or "bin-300" (2)] = 300 none
+ [400 or "bin-400" (3)] = 400 none
+ [500 or "bin-500" (4)] = 500 none
+ [600 or "bin-600" (5)] = 600 none
+ [700 or "bin-700" (6)] = 700 none
+ [800 or "bin-800" (7)] = 800 none
+ [900 or "bin-900" (8)] = 900 none
+kernel.all.load: 2 instances
+ [5 or "5 minute" (1)] = NUMBER none
+ [15 or "15 minute" (2)] = NUMBER none
+sample.string.hullo = hullo world!
+sample.seconds = NUMBER sec / second
+
+*** Creating a new group ***
+
+*** Adding a metric with a dynamic indom ***
+QmcSource::getSource: Matched HOST to source 0
+QmcGroup::createLocalContext: Default context to host "HOST"
+QmcSource::dupContext: host "HOST" duplicated, handle[1] = 1
+QmcGroup::use: Using current context 0 (handle = 1) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for 253.2.4
+QmcContext::lookupInDom: Add indom for 253.1
+HOST:simple.now["sec"] from host "HOST" with scale = 0 and units = none
+simple.now: 1 instance
+ [0 or "sec" (0)] = Missing metric value(s)
+
+*** Group 2 Fetch 1 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 1, numInsts = 1, active = 1, activeRef = 1: ALL ptr = 0x0
+QmcContext::fetch: fetching context host "HOST" has 1 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 1 instance
+ [0 or "sec" (0)] = VALUE none
+
+*** Change the indom ***
+
+*** Group 2 Fetch 2 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 1 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 1 instance (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+
+*** Updating indom ***
+QmcIndom::update: Updating indom 253.1: Got 3 instances (vs 1)
+QmcMetric::updateIndom: HOST:simple.now: Had 1 instances, now have 3
+simple.now: 3 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [1 or "min" (1)] = Missing metric value(s)
+ [2 or "hour" (2)] = Missing metric value(s)
+253.1: 3 instances (0 NULL)
+ [I] = "sec" (1 refs) active
+ [J] = "min" (1 refs) active
+ [K] = "hour" (1 refs) active
+
+*** Group 2 Fetch 3 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 3, numInsts = 3, active = 3, activeRef = 3: ALL ptr = 0x0
+QmcContext::fetch: fetching context host "HOST" has 1 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 3 instances
+ [0 or "sec" (0)] = VALUE none
+ [1 or "min" (1)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+
+*** Remove instance from PMDA ***
+
+*** Group 2 Fetch 4 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 1 metrics
+QmcMetric::extractValues: HOST:simple.now["min"]: Missing metric value(s)
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 3 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [1 or "min" (1)] = Missing metric value(s)
+ [2 or "hour" (2)] = VALUE none
+
+*** Remove an instance ***
+simple.now: 2 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+253.1: 3 instances (0 NULL)
+ [I] = "sec" (1 refs) active
+ [J] = "min" (0 refs) active
+ [K] = "hour" (1 refs) active
+
+*** Updating indom ***
+QmcIndom::update: Updating indom 253.1: Got 2 instances (vs 3)
+simple.now: 2 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+253.1: 2 instances (1 NULL)
+ [I] = "sec" (1 refs) active
+ NULL -> -1
+ [K] = "hour" (1 refs) active
+
+*** Group 2 Fetch 5 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 2, numInsts = 2, active = 2, activeRef = 2: ALL ptr = 0x0
+QmcContext::fetch: fetching context host "HOST" has 1 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 2 instances
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+
+*** Add another metric with the same indom ***
+QmcGroup::use: Using current context 0 (handle = 1) for host "HOST"
+QmcContext::lookupPMID: Matched "simple.now" to id 253.2.4
+QmcContext::lookupDesc: Reusing descriptor 253.2.4
+QmcContext::lookupInDom: Reusing indom 253.1
+HOST:simple.now["sec", "hour"] from host "HOST" with scale = 0 and units = none
+simple.now: 2 instances
+ [0 or "sec" (0)] = Missing metric value(s)
+ [2 or "hour" (2)] = Missing metric value(s)
+253.1: 2 instances (1 NULL)
+ [I] = "sec" (2 refs) active
+ NULL -> -1
+ [K] = "hour" (2 refs) active
+
+*** Group 2 Fetch 6 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 2 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 2 instances
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+simple.now: 2 instances
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+
+*** Add an instance to the PMDA ***
+
+*** Group 2 Fetch 7 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 2 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 2 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+simple.now: 2 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+
+*** Updating indom ***
+QmcIndom::update: Updating indom 253.1: Got 3 instances (vs 2)
+QmcMetric::updateIndom: HOST:simple.now: Had 2 instances, now have 3
+simple.now: 3 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [1 or "min" (1)] = Missing metric value(s)
+ [2 or "hour" (2)] = VALUE none
+253.1: 3 instances (0 NULL)
+ [I] = "sec" (2 refs) active
+ [J] = "min" (1 refs) active
+ [K] = "hour" (2 refs) active
+
+*** Group 2 Fetch 8 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 3, numInsts = 3, active = 3, activeRef = 3: ALL ptr = 0x0
+QmcContext::fetch: fetching context host "HOST" has 2 metrics
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+simple.now: 2 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+simple.now: 3 instances (indom has changed)
+ [0 or "sec" (0)] = VALUE none
+ [1 or "min" (1)] = VALUE none
+ [2 or "hour" (2)] = VALUE none
+
+*** Exiting ***
+QmcSource::delContext: No contexts remain, removing host "HOST"
diff --git a/qa/1018 b/qa/1018
new file mode 100755
index 0000000..e9696b1
--- /dev/null
+++ b/qa/1018
@@ -0,0 +1,45 @@
+#!/bin/sh
+# PCP QA Test No. 1018
+# Test QmcSource functionality
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_source/qmc_source ] || _notrun "qmc_source not built or installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+tz=`pmprobe -v pmcd.timezone | sed -e 's/.* "//' -e 's/"//'`
+
+_filter()
+{
+ sed \
+ -e "s/$host/HOST/g" \
+ -e 's/sts = -146,/sts = ECONNREFUSED,/' \
+ -e 's/sts = -111,/sts = ECONNREFUSED,/' \
+ -e "s/snort/HOST/g" \
+ -e "s#EST-11EST-10,89/2:00,299/2:00#TZ#g" \
+ -e "s#$tz#TZ#g"
+
+ # The sed(1) command "s#EST-11EST-10,89/2:00,299/2:00#TZ#g" is required
+ # for when pmc_source uses the archive oview-short. oview-short
+ # contains this timezone, so is required to be masked when pmc_source
+ # spits its output.
+}
+
+$sudo qt/qmc_source/qmc_source -DPMC 2>&1 | _filter
+
+# What happens if we stop pmcd
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+$sudo qt/qmc_source/qmc_source -DPMC 2>&1 | _filter
+
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+
+# success, all done
+status=0
+exit
diff --git a/qa/1018.out b/qa/1018.out
new file mode 100644
index 0000000..978818e
--- /dev/null
+++ b/qa/1018.out
@@ -0,0 +1,76 @@
+QA output created by 1018
+*** Create an archive context ***
+QmcSource::getSource: Creating new source for archives/oview-short
+QmcSource::QmcSource: Created context 0 to archive "archives/oview-short"
+
+*** Create an archive context using the host name ***
+QmcSource::getSource: Matched host HOST to archive archives/oview-short (source 0)
+
+*** Create two live contexts to the local host ***
+QmcSource::getSource: Creating new source for HOST
+QmcSource::QmcSource: Created context 1 to host "HOST"
+QmcSource::getSource: Matched HOST to source 1
+
+*** Create a local context ***
+QmcSource::getSource: Creating new local context
+QmcSource::QmcSource: Created context 2 to Local context
+
+*** List all known sources ***
+3 sources:
+[0] archive "archives/oview-short"
+ sts = 0, type = 2, source = archives/oview-short
+ host = HOST, timezone = TZ, tz hndl = 0
+ start = 8.73961e+08, end = 8.73961e+08, dupFlag = false
+ 1 contexts: 0
+[1] host "HOST"
+ sts = 1, type = 1, source = HOST
+ host = HOST, timezone = TZ, tz hndl = 1
+ start = 0, end = 0, dupFlag = false
+ 1 contexts: 1
+[2] Local context
+ sts = 2, type = 3, source = HOST
+ host = HOST, timezone = TZ, tz hndl = 2
+ start = 0, end = 0, dupFlag = false
+ 1 contexts: 2
+Waiting for pmcd to terminate ...
+*** Create an archive context ***
+QmcSource::getSource: Creating new source for archives/oview-short
+QmcSource::QmcSource: Created context 0 to archive "archives/oview-short"
+
+*** Create an archive context using the host name ***
+QmcSource::getSource: Matched host HOST to archive archives/oview-short (source 0)
+
+*** Create two live contexts to the local host ***
+QmcSource::getSource: Creating new source for HOST
+QmcSource::QmcSource: Context to HOST failed: Connection refused
+QmcSource::getSource: Matched HOST to source 1
+QmcSource::QmcSource: Context to HOST failed: Connection refused
+qmc_source: Error: Unable to create context to "HOST": Connection refused
+qmc_source: Error: Unable to create context to "HOST": Connection refused
+
+*** Create a local context ***
+QmcSource::getSource: Creating new local context
+QmcSource::QmcSource: Created context 1 to Local context
+
+*** List all known sources ***
+4 sources:
+[0] archive "archives/oview-short"
+ sts = 0, type = 2, source = archives/oview-short
+ host = HOST, timezone = TZ, tz hndl = 0
+ start = 8.73961e+08, end = 8.73961e+08, dupFlag = false
+ 1 contexts: 0
+[1] host "HOST"
+ sts = ECONNREFUSED, type = 1, source = HOST
+ host = HOST, timezone = , tz hndl = 0
+
+[2] host "HOST"
+ sts = ECONNREFUSED, type = 1, source = HOST
+ host = HOST, timezone = , tz hndl = 0
+
+[3] Local context
+ sts = 1, type = 3, source = HOST
+ host = HOST, timezone = TZ, tz hndl = 1
+ start = 0, end = 0, dupFlag = false
+ 1 contexts: 1
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/1019 b/qa/1019
new file mode 100755
index 0000000..d3d85d5
--- /dev/null
+++ b/qa/1019
@@ -0,0 +1,89 @@
+#!/bin/sh
+# PCP QA Test No. 1019
+# Exercise QmcGroup illustrating simple clients and protocols
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_group/qmc_group ] || _notrun "qmc_group not built or installed"
+
+_cleanup()
+{
+ if [ ! -f $tmp.done ]
+ then
+ cd $here/pmdas/dynamic
+ $sudo ./Remove >>$here/src/$seq.full
+ cd $here
+ touch $tmp.done
+ fi
+}
+
+status=1 # failure is the default!
+rm -f $seq.full
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter1()
+{
+ sed \
+ -e "s/$host [:A-Z][A-Z]*[-A-Za-z0-9,/:\.]*/HOST TIMEZONE/" \
+ -e "s/localhost [:A-Z][A-Z]*[-A-Za-z0-9,/:\.]*/LOCALHOST TIMEZONE/" \
+ -e "s/irix\.//g" \
+ -e "s/^\- [0-9][0-9]*\.[0-9][0-9]*$/- NUM/" \
+ -e "s/^\- [0-9][0-9]*$/- NUM/" \
+ -e "s/: Line [0-9][0-9]* /: Line <N> /" \
+ | $PCP_AWK_PROG '
+BEGIN { mode = 0 }
+/Client1/ { mode = 1; print; next }
+/Client2/ { mode = 1; print; next }
+$1 == "FETCH" && mode == 1 { mode = 2; print; next }
+$1 == "CONTEXT" && $2 == "0" && mode == 2 { printf("CONTEXT 0 DELTA SEC USEC\n"); next }
+ { mode = 0; print; next }'
+}
+
+_filter2()
+{
+ sed -n \
+ -e '/^\*\*\*/p' \
+ -e '/pmGetPDU/p' \
+ -e '/pmXmitPDU/p' \
+ -e '/^PMC_/p' \
+ | sed \
+ -e "s/^\[[0-9]*\]//" \
+ -e "s/fd=[0-9]/fd=#/" \
+ -e "s/from=[0-9]*/from=###/" \
+ -e "s/$host/HOST/" \
+ -e "s/id = [0-9]*/id = ##########/" \
+ -e "s/ptr = 0x0/ptr = NULL/" \
+ -e "s/ptr = 0x[0-9a-f]*/ptr = 0x########/" \
+ > $tmp.filtered
+
+ echo
+ echo "*** PDUs ***"
+ sed -n < $tmp.filtered \
+ -e '/pmGetPDU/p' \
+ -e '/pmXmitPDU/p' \
+ | sed \
+ -e "s/ fd=.*//" \
+ | sort \
+ | uniq -c \
+ | sed -e 's/ */ /g'
+
+ echo "*** Transactions ***" >> $seq.full
+ echo >> $seq.full
+ cat $tmp.filtered >> $seq.full
+}
+
+# real QA test starts here
+cd $here/pmdas/dynamic
+$sudo make >$here/$seq.full 2>&1
+$sudo ./Install </dev/null >>$here/$seq.full
+cd $here
+_check_metric dynamic.numinsts
+
+pmstore dynamic.control.del "-1"
+qt/qmc_group/qmc_group -DPDU,PMC 2>$tmp.stderr | _filter1
+cat $tmp.stderr | _filter2
+
+status=0
+exit
diff --git a/qa/1019.out b/qa/1019.out
new file mode 100644
index 0000000..bf6ec59
--- /dev/null
+++ b/qa/1019.out
@@ -0,0 +1,489 @@
+QA output created by 1019
+dynamic.control.del old value=0 new value=-1
+dynamic.control.del -1
+
+dynamic.numinsts
+ value 0
+
+dynamic.discrete
+No value(s) available!
+
+dynamic.instant
+No value(s) available!
+
+dynamic.counter
+No value(s) available!
+
+dynamic.control.add
+ value 0
+
+dynamic.control.del
+ value 0
+
+*** 1: Line <N> - Client1: VERSION version ***
+
+*** 2: Line <N> - Client1: LIST 2 hinv.ncpu kernel.all.load[1,15] ***
+LIST 1
+CONTEXT 0 1 2 2 HOST HOST TIMEZONE
+INDOM 0 2
+- 0 1 minute
+- 2 15 minute
+DESC 0 REAL none
+DESC 1 REAL none
+METRIC 0 1 hinv.ncpu 0 0 -1
+METRIC 1 2 kernel.all.load 0 1 0
+- NUM
+- NUM
+.
+
+*** 3: Line <N> - Client1: FETCH ***
+FETCH 1 2
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 2
+- NUM
+- NUM
+.
+
+*** 4: Line <N> - Client2: VERSION version ***
+
+*** 5: Line <N> - Client2: CONTEXT HOST localhost ***
+CONTEXT 0 0 0 0 HOST LOCALHOST TIMEZONE
+.
+
+*** 6: Line <N> - Client2: NAME 0 dynamic ***
+NAME 6
+- dynamic.numinsts
+- dynamic.discrete
+- dynamic.instant
+- dynamic.counter
+- dynamic.control.add
+- dynamic.control.del
+.
+
+*** 7: Line <N> - Client2: TEXT 0 dynamic.numinsts ***
+TEXT 48
+The number of instances currently being exported
+.
+
+*** 8: Line <N> - Client1: FETCH ***
+FETCH 1 2
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 2
+- NUM
+- NUM
+.
+
+*** 9: Line <N> - Client3: VERSION version ***
+
+*** 10: Line <N> - Client3: CONTEXT ARCH archive1 ***
+CONTEXT 0 0 0 0 ARCH snort archives/snort-disks 1117075022 613953 1117075050 309912 EST-10
+.
+
+*** 11: Line <N> - Client3: CONTEXT ARCH archive2 ***
+CONTEXT 1 0 0 0 ARCH vldb.engr archives/vldb-disks 869629190 357184 869629210 660548 PST8PDT
+.
+
+*** 12: Line <N> - Client1: FETCH ***
+FETCH 1 2
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 2
+- NUM
+- NUM
+.
+
+*** 13: Line <N> - Client2: LIST 4 dynamic.numinsts dynamic.discrete dynamic.instant dynamic.counter ***
+LIST 1
+CONTEXT 0 1 4 4
+INDOM 0 0
+DESC 0 REAL none
+DESC 1 STRING none
+DESC 2 REAL count
+DESC 3 REAL count / second
+METRIC 0 1 dynamic.numinsts 0 0 -1
+METRIC 1 0 dynamic.discrete 0 1 0
+METRIC 2 0 dynamic.instant 0 2 0
+METRIC 3 0 dynamic.counter 0 3 0
+.
+
+*** 14: Line <N> - Client2: FETCH ***
+FETCH 1 4
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 0
+METRIC 2 0
+METRIC 3 0
+.
+
+*** 15: Line <N> - Client3: LIST 4 snort:disk.dev.read[dks0d1,dks1d1,dks9d1] archives/vldb-disks/disk.dev.total[dks17d8,dks11d3,dks45d2] disk.dev.write[dks1d1,dks0d4] vldb.engr:disk.dev.total[dks18d6,dks11d3] ***
+LIST 2
+CONTEXT 0 1 2 2
+INDOM 0 4
+- 0 dks9d1
+- 5 dks0d1
+- 8 dks1d1
+- 9 dks0d4
+DESC 0 REAL count / second
+DESC 1 REAL count / second
+CONTEXT 1 1 1 2
+INDOM 0 4
+- 322 dks45d2
+- 392 dks17d8
+- 395 dks11d3
+- 406 dks18d6
+DESC 0 REAL count / second
+METRIC 0 3 disk.dev.read 0 0 0
+- NUM
+- NUM
+- NUM
+METRIC 1 3 disk.dev.total 1 0 0
+- NUM
+- NUM
+- NUM
+METRIC 2 2 disk.dev.write 0 1 0
+- NUM
+- NUM
+METRIC 3 2 disk.dev.total 1 0 0
+- NUM
+- NUM
+.
+
+*** 16: Line <N> - Client3: JUMP 5000 869629200 0 ***
+JUMP
+.
+
+*** 17: Line <N> - Client3: FETCH ***
+FETCH 2 4
+CONTEXT 0 0 0 0
+CONTEXT 1 869629200000 869629200 0
+METRIC 0 3
+- ?
+- ?
+- ?
+METRIC 1 3
+- ?
+- ?
+- ?
+METRIC 2 2
+- ?
+- ?
+METRIC 3 2
+- ?
+- ?
+.
+
+*** 18: Line <N> - Client3: FETCH ***
+FETCH 2 4
+CONTEXT 0 0 0 0
+CONTEXT 1 5000 869629205 0
+METRIC 0 3
+- ?
+- ?
+- ?
+METRIC 1 3
+- NUM
+- NUM
+- NUM
+METRIC 2 2
+- ?
+- ?
+METRIC 3 2
+- NUM
+- NUM
+.
+
+*** 19: Line <N> - Client1: LIST 2 hinv.ndisk disk.all.total ***
+LIST 1
+CONTEXT 0 1 4 4
+INDOM 0 2
+- 0 1 minute
+- 2 15 minute
+DESC 0 REAL none
+DESC 1 REAL none
+DESC 2 REAL none
+DESC 3 REAL count / second
+METRIC 2 1 hinv.ndisk 0 2 -1
+METRIC 3 1 disk.all.total 0 3 -1
+.
+
+*** 20: Line <N> - Client1: FETCH ***
+FETCH 1 4
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 2
+- NUM
+- NUM
+METRIC 2 1
+- NUM
+METRIC 3 1
+- ?
+.
+
+*** 21: Line <N> - Client1: FETCH ***
+FETCH 1 4
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 2
+- NUM
+- NUM
+METRIC 2 1
+- NUM
+METRIC 3 1
+- NUM
+.
+
+*** 22: Line <N> - Client3: JUMP 2000 1117075022 0 ***
+JUMP
+.
+
+*** 23: Line <N> - Client3: FETCH ***
+FETCH 2 4
+CONTEXT 0 0 0 0
+CONTEXT 1 5000 869629205 0
+METRIC 0 3
+- ?
+- ?
+- ?
+METRIC 1 3
+- ?
+- ?
+- ?
+METRIC 2 2
+- ?
+- ?
+METRIC 3 2
+- ?
+- ?
+.
+
+*** 24: Line <N> - Client3: FETCH ***
+FETCH 2 4
+CONTEXT 0 1117075024000 1117075024 0
+CONTEXT 1 5000 869629205 0
+METRIC 0 3 UPDATE
+- ?
+- ?
+- ?
+METRIC 1 3
+- ?
+- ?
+- ?
+METRIC 2 2 UPDATE
+- ?
+- ?
+METRIC 3 2
+- ?
+- ?
+.
+
+*** 25: Line <N> - Client3: FETCH ***
+FETCH 2 4
+CONTEXT 0 2000 1117075026 0
+CONTEXT 1 5000 869629205 0
+METRIC 0 3
+- ?
+- ?
+- ?
+METRIC 1 3
+- ?
+- ?
+- ?
+METRIC 2 2
+- ?
+- ?
+METRIC 3 2
+- ?
+- ?
+.
+
+*** 26: Line <N> - Client1: WIPE ***
+WIPE
+.
+
+*** 27: Line <N> - Client1: FETCH ***
+FETCH 0 0
+.
+
+*** 28: Line <N> - Dynamic Indom Changes ***
+dynamic.control.add 2
+
+dynamic.numinsts
+ value 1
+
+dynamic.discrete
+ inst [2 or "2"] value "2"
+
+dynamic.instant
+ inst [2 or "2"] value 2
+
+dynamic.counter
+ inst [2 or "2"] value 2
+
+dynamic.control.add
+ value 3
+
+dynamic.control.del
+ value 2
+dynamic.control.add 4
+
+dynamic.numinsts
+ value 2
+
+dynamic.discrete
+ inst [2 or "2"] value "2"
+ inst [4 or "4"] value "4"
+
+dynamic.instant
+ inst [2 or "2"] value 6
+ inst [4 or "4"] value 4
+
+dynamic.counter
+ inst [2 or "2"] value 6
+ inst [4 or "4"] value 4
+
+dynamic.control.add
+ value 5
+
+dynamic.control.del
+ value 3
+
+*** 29: Line <N> - Client2: FETCH ***
+FETCH 1 4
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 0 UPDATE
+METRIC 2 0 UPDATE
+METRIC 3 0 UPDATE
+.
+
+*** 30: Line <N> - Client2: UPDATE 3 1 2 3 ***
+UPDATE 1
+CONTEXT 0 1 3
+INDOM 0 2
+- 0 2
+- 1 4
+METRIC 1 2
+- NUM
+- NUM
+METRIC 2 2
+- NUM
+- NUM
+METRIC 3 2
+- NUM
+- NUM
+.
+
+*** 31: Line <N> - Client2: FETCH ***
+FETCH 1 4
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 2
+- NUM
+- NUM
+METRIC 2 2
+- NUM
+- NUM
+METRIC 3 2
+- ?
+- ?
+.
+
+*** 32: Line <N> - Client2: FETCH ***
+FETCH 1 4
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 2
+- NUM
+- NUM
+METRIC 2 2
+- NUM
+- NUM
+METRIC 3 2
+- NUM
+- NUM
+.
+
+*** 33: Line <N> - Client1: CONTEXT ARCH moomba.pmkstat ***
+CONTEXT 0 0 0 0 ARCH moomba archives/moomba.pmkstat 885849643 84980 885849712 951398 EST-11EST-10,89/2:00,299/2:00
+.
+
+*** 34: Line <N> - Client1: LIST 2 kernel.all.idle localhost:kernel.all.cpu.user ***
+LIST 1
+CONTEXT 0 0 2 2
+DESC 0 REAL millisec / second
+DESC 1 REAL millisec / second
+METRIC 0 1 kernel.all.cpu.idle 0 0 -1
+METRIC 1 1 kernel.all.cpu.user 0 1 -1
+.
+
+*** 35: Line <N> - Client1: JUMP 5000 885849650 0 ***
+JUMP
+.
+
+*** 36: Line <N> - Client1: FETCH ***
+FETCH 1 2
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- ?
+METRIC 1 1
+- ?
+.
+
+*** 37: Line <N> - Client1: FETCH ***
+FETCH 1 2
+CONTEXT 0 DELTA SEC USEC
+METRIC 0 1
+- NUM
+METRIC 1 1
+- NUM
+.
+
+*** 38: Line <N> - Client3: FETCH ***
+FETCH 2 4
+CONTEXT 0 2000 1117075028 0
+CONTEXT 1 5000 869629205 0
+METRIC 0 3
+- NUM
+- NUM
+- NUM
+METRIC 1 3
+- ?
+- ?
+- ?
+METRIC 2 2
+- NUM
+- NUM
+METRIC 3 2
+- ?
+- ?
+.
+
+*** 39: Line <N> - Exiting ***
+
+*** PDUs ***
+ 8 pmGetPDU: DESC
+ 2 pmGetPDU: ERROR
+ 3 pmGetPDU: INSTANCE
+ 10 pmGetPDU: PMNS_IDS
+ 1 pmGetPDU: PMNS_NAMES
+ 11 pmGetPDU: RESULT
+ 1 pmGetPDU: TEXT
+ 2 pmXmitPDU: CREDS
+ 8 pmXmitPDU: DESC_REQ
+ 11 pmXmitPDU: FETCH
+ 3 pmXmitPDU: INSTANCE_REQ
+ 10 pmXmitPDU: PMNS_NAMES
+ 1 pmXmitPDU: PMNS_TRAVERSE
+ 4 pmXmitPDU: PROFILE
+ 1 pmXmitPDU: TEXT_REQ
diff --git a/qa/102 b/qa/102
new file mode 100755
index 0000000..f62add2
--- /dev/null
+++ b/qa/102
@@ -0,0 +1,138 @@
+#! /bin/sh
+# PCP QA Test No. 102
+# pmlc parser/scanner/error handling
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ _restore_primary_logger
+ $sudo rm -f $tmp $tmp.*
+ exit $status
+}
+
+status=1
+rm -f $seq.full
+trap "_cleanup" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ # error message mapping is due to differences between IRIX and Linux
+ #
+ sed \
+ -e 's/connect [0-9][0-9]*/connect PID/' \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ -e 's/^parse error/Syntax error/' \
+ -e 's/line [0-9]*/line NUM/g' \
+ -e 's/^syntax error/Syntax error/' \
+ -e 's/^Reason: Unknown or illegal.*$/Reason: No PMCD agent for domain of request/'
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+
+# real QA test starts here
+_writable_primary_logger
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
+# not connected
+query sample.drift
+advisory on 1 hour sample.drift
+
+connect primary
+# incomplete - syntax error
+query sample.bin [
+query {
+sample.drift
+# eat input
+# up to
+# next } -- curly brace
+}
+query {
+barf.no.metric
+# suck to } ... not that one, this one ..
+}
+
+End-of-File
+_filter_pmlc <$tmp.err
+_filter_pmlc <$tmp.out
+
+for delta in "-1 msec" "75 hours" "599 hours" "1200 hours"
+do
+ $sudo rm -f $tmp.*
+ cat <<End-of-File >$tmp.config
+log advisory on $delta sample.bin [100]
+End-of-File
+ # pmlogger -c $tmp.config -T 4 $tmp
+ $sudo rm -f $tmp.*
+ _start_up_pmlogger -L -c /dev/null -l $tmp.log -T 4 $tmp
+ pmsleep 0.5
+ pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
+connect $pid
+log advisory on $delta sample.bin [100]
+End-of-File
+_filter_pmlc <$tmp.err
+_filter_pmlc <$tmp.out
+ $sudo $signal -s TERM $pid
+ _wait_pmlogger_end $pid
+ _filter_pmlogger_log <$tmp.log
+done
+pmsleep 0.5
+
+pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
+connect primary
+log mandatory on 1 hour { sample.bin, sample.drift, sample.seconds }
+query sample.bin[333]
+End-of-File
+_filter_pmlc <$tmp.err
+_filter_pmlc <$tmp.out
+
+$sudo $signal -a pmdasample
+pmsleep 0.5 # time to cleanup
+pminfo -f sample >/dev/null 2>&1 # and make sure pmcd notices
+
+pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
+connect primary
+query sample.bin[100]
+query sample.bin[100]
+End-of-File
+_filter_pmlc <$tmp.err
+_filter_pmlc <$tmp.out
+
+$sudo $signal -a -s HUP pmcd
+pmsleep 0.5 # time to cleanup
+pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
+connect primary
+query sample.bin[100]
+
+query { sample.bin,sample.drift sample.seconds }
+query { sample.bin sample.drift,sample.seconds }
+query sample.bin [100,200,300 400 500,700]
+query sample.bin [100,"bin-200"]
+End-of-File
+_filter_pmlc <$tmp.err
+_filter_pmlc <$tmp.out
+
+pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
+connect primary
+log mandatory maybe {
+ sample.bin
+ sample.drift, sample.seconds
+}
+End-of-File
+_filter_pmlc <$tmp.err
+_filter_pmlc <$tmp.out
+
+status=0
+exit
diff --git a/qa/102.out b/qa/102.out
new file mode 100644
index 0000000..001523c
--- /dev/null
+++ b/qa/102.out
@@ -0,0 +1,369 @@
+QA output created by 102
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Error [<stdin>, line NUM]
+Not connected to any pmlogger instance
+Error [<stdin>, line NUM]
+Not connected to any pmlogger instance
+Error [<stdin>, line NUM]
+Syntax error
+Warning [<stdin>, line NUM]
+Problem with lookup for metric "barf.no.metric" ...
+Reason: Unknown metric name
+Logging statement ignored due to error(s)
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> # not connected
+pmlc> query sample.drift
+pmlc> advisory on 1 hour sample.drift
+pmlc>
+pmlc> connect primary
+pmlc> # incomplete - syntax error
+pmlc> query sample.bin [
+pmlc> query {
+? sample.drift
+? # eat input
+? # up to
+? # next } -- curly brace
+? }
+sample.drift
+ adv off nl
+
+pmlc> query {
+? barf.no.metric
+? # suck to } ... not that one, this one ..
+? }
+pmlc>
+pmlc>
+Error [<stdin>, line NUM]
+Unexpected character '-'
+Error [<stdin>, line NUM]
+Syntax error
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect PID
+pmlc> log advisory on -1 msec sample.bin [100]
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Log finished DATE
+Logging delta (270000000 msec) cannot be bigger than 268435455 msec
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect PID
+pmlc> log advisory on 75 hours sample.bin [100]
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Log finished DATE
+Logging delta (-2138567296 msec) must be positive
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect PID
+pmlc> log advisory on 599 hours sample.bin [100]
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Log finished DATE
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect PID
+pmlc> log advisory on 1200 hours sample.bin [100]
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: advisory on 25032.7 sec
+ metric: sample.bin
+ instance: bin-100
+
+Log finished DATE
+sample.bin currently has no instance number 333
+ - you may only specify metric instances active now. However if no
+ instances are specified, pmlogger will use all of the instances
+ available at the time the metric is logged
+Logging statement ignored due to error(s)
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect primary
+pmlc> log mandatory on 1 hour { sample.bin, sample.drift, sample.seconds }
+pmlc> query sample.bin[333]
+pmlc>
+Warning [<stdin>, line NUM]
+Problem with lookup for metric "sample.bin" ...
+Reason: No PMCD agent for domain of request
+Logging statement ignored due to error(s)
+Warning [<stdin>, line NUM]
+Problem with lookup for metric "sample.bin" ...
+Reason: No PMCD agent for domain of request
+Logging statement ignored due to error(s)
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect primary
+pmlc> query sample.bin[100]
+pmlc> query sample.bin[100]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect primary
+pmlc> query sample.bin[100]
+sample.bin
+ mand on nl 1 hour [100 or "bin-100"]
+
+pmlc>
+pmlc> query { sample.bin,sample.drift sample.seconds }
+sample.bin
+ mand on nl 1 hour [100 or "bin-100"]
+ mand on nl 1 hour [200 or "bin-200"]
+ mand on nl 1 hour [300 or "bin-300"]
+ mand on nl 1 hour [400 or "bin-400"]
+ mand on nl 1 hour [500 or "bin-500"]
+ mand on nl 1 hour [600 or "bin-600"]
+ mand on nl 1 hour [700 or "bin-700"]
+ mand on nl 1 hour [800 or "bin-800"]
+ mand on nl 1 hour [900 or "bin-900"]
+
+sample.drift
+ mand on nl 1 hour
+
+sample.seconds
+ mand on nl 1 hour
+
+pmlc> query { sample.bin sample.drift,sample.seconds }
+sample.bin
+ mand on nl 1 hour [100 or "bin-100"]
+ mand on nl 1 hour [200 or "bin-200"]
+ mand on nl 1 hour [300 or "bin-300"]
+ mand on nl 1 hour [400 or "bin-400"]
+ mand on nl 1 hour [500 or "bin-500"]
+ mand on nl 1 hour [600 or "bin-600"]
+ mand on nl 1 hour [700 or "bin-700"]
+ mand on nl 1 hour [800 or "bin-800"]
+ mand on nl 1 hour [900 or "bin-900"]
+
+sample.drift
+ mand on nl 1 hour
+
+sample.seconds
+ mand on nl 1 hour
+
+pmlc> query sample.bin [100,200,300 400 500,700]
+sample.bin
+ mand on nl 1 hour [100 or "bin-100"]
+ mand on nl 1 hour [200 or "bin-200"]
+ mand on nl 1 hour [300 or "bin-300"]
+ mand on nl 1 hour [400 or "bin-400"]
+ mand on nl 1 hour [500 or "bin-500"]
+ mand on nl 1 hour [700 or "bin-700"]
+
+pmlc> query sample.bin [100,"bin-200"]
+sample.bin
+ mand on nl 1 hour [100 or "bin-100"]
+ mand on nl 1 hour [200 or "bin-200"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect primary
+pmlc> log mandatory maybe {
+? sample.bin
+? sample.drift, sample.seconds
+? }
+pmlc>
diff --git a/qa/1020 b/qa/1020
new file mode 100755
index 0000000..69842d1
--- /dev/null
+++ b/qa/1020
@@ -0,0 +1,73 @@
+#!/bin/sh
+# PCP QA Test No. 1020
+# libqmc dynamic indom testing
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_dynamic/qmc_dynamic ] || _notrun "qmc_dynamic not built or installed"
+
+_cleanup()
+{
+ if [ ! -f $tmp.done ]
+ then
+ cd $here/pmdas/dynamic
+ $sudo ./Remove >>$here/src/$seq.full
+ cd $here
+ touch $tmp.done
+ fi
+}
+
+status=1 # failure is the default!
+rm -f $seq.full
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter2()
+{
+ sed -n \
+ -e '/^\*\*\*/p' \
+ -e '/pmGetPDU/p' \
+ -e '/pmXmitPDU/p' \
+ -e '/^PMC_/p' \
+ | sed \
+ -e "s/^\[[0-9]*\]//" \
+ -e "s/fd=[0-9]/fd=#/" \
+ -e "s/from=[0-9]*/from=###/" \
+ -e "s/$host/HOST/" \
+ -e "s/id = [0-9]*/id = ##########/" \
+ -e "s/ptr = 0x0/ptr = NULL/" \
+ -e "s/ptr = 0x[0-9a-f]*/ptr = 0x########/" \
+ > $tmp.filtered
+
+ echo
+ echo "*** PDUs ***"
+ sed -n < $tmp.filtered \
+ -e '/pmGetPDU/p' \
+ -e '/pmXmitPDU/p' \
+ | sed \
+ -e "s/ fd=.*//" \
+ | LC_COLLATE=POSIX sort \
+ | uniq -c \
+ | sed -e 's/ */ /g'
+
+ echo "*** Transactions ***" > $seq.full
+ echo >> $seq.full
+ cat $tmp.filtered >> $seq.full
+}
+
+# real QA test starts here
+cd $here/pmdas/dynamic
+$sudo make >$here/$seq.full 2>&1
+$sudo ./Install </dev/null >>$here/$seq.full
+cd $here
+_check_metric dynamic.numinsts
+
+pmstore dynamic.control.del "-1"
+qt/qmc_dynamic/qmc_dynamic -DPDU,PMC,INDOM,OPTFETCH 2>$tmp.stderr \
+ | sed -e "s/: Line [0-9][0-9]* /: Line <N> /"
+cat $tmp.stderr | _filter2
+
+# success, all done
+status=0
+exit
diff --git a/qa/1020.out b/qa/1020.out
new file mode 100644
index 0000000..f9c4c9f
--- /dev/null
+++ b/qa/1020.out
@@ -0,0 +1,310 @@
+QA output created by 1020
+dynamic.control.del old value=0 new value=-1
+
+*** 1: Line <N> - Create two fetch groups ***
+
+*** 2: Line <N> - Add number of instances to both groups ***
+dynamic.numinsts = Missing metric value(s)
+dynamic.numinsts = Missing metric value(s)
+
+*** 3: Line <N> - Fetch both groups ***
+dynamic.numinsts = 0 none
+dynamic.numinsts = 0 none
+
+*** 4: Line <N> - Add dynamic metrics to both groups ***
+dynamic.discrete: 0 instances
+dynamic.instant: 0 instances
+dynamic.counter: 0 instances
+dynamic.discrete: 0 instances
+dynamic.instant: 0 instances
+dynamic.counter: 0 instances
+
+*** 5: Line <N> - Fetch both groups ***
+dynamic.numinsts = 0
+
+
+247.0: 0 instances (0 NULL)
+dynamic.numinsts = 0
+
+
+247.0: 0 instances (0 NULL)
+
+*** 6: Line <N> - Add an instance ***
+dynamic.control.add 1
+
+*** 7: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+
+247.0: 0 instances (0 NULL)
+
+*** 8: Line <N> - Update indom for first group ***
+
+*** 9: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[1] = "1" = 2 (Missing metric value(s))
+
+247.0: 1 instances (0 NULL)
+ [1] = "1" (3 refs) active
+
+*** 10: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[1] = "1" = 3 (3)
+
+247.0: 1 instances (0 NULL)
+ [1] = "1" (3 refs) active
+
+*** 11: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[1] = "1" = 4 (4)
+
+247.0: 1 instances (0 NULL)
+ [1] = "1" (3 refs) active
+
+*** 12: Line <N> - Add another instance ***
+dynamic.control.add 5
+
+*** 13: Line <N> - Fetch first group ***
+dynamic.numinsts = 2
+
+[1] = "1" = 6 (6)
+
+247.0: 1 instances (0 NULL)
+ [1] = "1" (3 refs) active
+
+*** 14: Line <N> - Update indom for first group ***
+
+*** 15: Line <N> - Fetch first group ***
+dynamic.numinsts = 2
+
+[1] = "1" = 7 (7)
+[5] = "5" = 10 (Missing metric value(s))
+
+247.0: 2 instances (0 NULL)
+ [1] = "1" (3 refs) active
+ [5] = "5" (3 refs) active
+
+*** 16: Line <N> - Fetch first group ***
+dynamic.numinsts = 2
+
+[1] = "1" = 8 (8)
+[5] = "5" = 15 (15)
+
+247.0: 2 instances (0 NULL)
+ [1] = "1" (3 refs) active
+ [5] = "5" (3 refs) active
+
+*** 17: Line <N> - Delete first instance ***
+dynamic.control.del 1
+
+*** 18: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[1] = Missing metric value(s)
+[5] = "5" = 25 (25)
+
+247.0: 2 instances (0 NULL)
+ [1] = "1" (3 refs) active
+ [5] = "5" (3 refs) active
+
+*** 19: Line <N> - Update indom for first group ***
+
+*** 20: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[5] = "5" = 30 (30)
+
+247.0: 1 instances (1 NULL)
+ NULL -> -1
+ [5] = "5" (3 refs) active
+
+*** 21: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+
+247.0: 0 instances (0 NULL)
+
+*** 22: Line <N> - Update indom for second group ***
+
+*** 23: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+[5] = "5" = 40 (Missing metric value(s))
+
+247.0: 1 instances (0 NULL)
+ [5] = "5" (3 refs) active
+
+*** 24: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+[5] = "5" = 45 (45)
+
+247.0: 1 instances (0 NULL)
+ [5] = "5" (3 refs) active
+
+*** 25: Line <N> - Delete second instance, add new instance ***
+dynamic.control.del 5
+dynamic.control.add 3
+
+*** 26: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[5] = Missing metric value(s)
+
+247.0: 1 instances (1 NULL)
+ NULL -> -1
+ [5] = "5" (3 refs) active
+
+*** 27: Line <N> - Update indom for first group ***
+
+*** 28: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[3] = "3" = 6 (Missing metric value(s))
+
+247.0: 1 instances (1 NULL)
+ [3] = "3" (3 refs) active
+ NULL -> -1
+
+*** 29: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[3] = "3" = 9 (9)
+
+247.0: 1 instances (1 NULL)
+ [3] = "3" (3 refs) active
+ NULL -> -1
+
+*** 30: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+[5] = Missing metric value(s)
+
+247.0: 1 instances (0 NULL)
+ [5] = "5" (3 refs) active
+
+*** 31: Line <N> - Update indom for second group ***
+
+*** 32: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+[5] = Missing metric value(s)
+[3] = "3" = 15 (Missing metric value(s))
+
+247.0: 2 instances (0 NULL)
+ [5] = "5" (3 refs) inactive
+ [3] = "3" (3 refs) active
+
+*** 33: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+[5] = Missing metric value(s)
+[3] = "3" = 18 (18)
+
+247.0: 2 instances (0 NULL)
+ [5] = "5" (3 refs) inactive
+ [3] = "3" (3 refs) active
+
+*** 34: Line <N> - Delete third instance ***
+dynamic.control.del 3
+
+*** 35: Line <N> - Fetch first group ***
+dynamic.numinsts = 0
+
+[3] = Missing metric value(s)
+
+247.0: 1 instances (1 NULL)
+ [3] = "3" (3 refs) active
+ NULL -> -1
+
+*** 36: Line <N> - Update indom for first group ***
+
+*** 37: Line <N> - Fetch first group ***
+dynamic.numinsts = 0
+
+
+247.0: 0 instances (2 NULL)
+ NULL -> 1
+ NULL -> -1
+
+*** 38: Line <N> - Fetch second group ***
+dynamic.numinsts = 0
+
+[5] = Missing metric value(s)
+[3] = Missing metric value(s)
+
+247.0: 2 instances (0 NULL)
+ [5] = "5" (3 refs) inactive
+ [3] = "3" (3 refs) active
+
+*** 39: Line <N> - Update indom for second group ***
+
+*** 40: Line <N> - Fetch second group ***
+dynamic.numinsts = 0
+
+[5] = Missing metric value(s)
+[3] = Missing metric value(s)
+
+247.0: 2 instances (0 NULL)
+ [5] = "5" (3 refs) inactive
+ [3] = "3" (3 refs) inactive
+
+*** 41: Line <N> - Add second instance again ***
+dynamic.control.add 5
+
+*** 42: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+
+247.0: 0 instances (2 NULL)
+ NULL -> 1
+ NULL -> -1
+
+*** 43: Line <N> - Update indom for first group ***
+
+*** 44: Line <N> - Fetch first group ***
+dynamic.numinsts = 1
+
+[5] = "5" = 10 (Missing metric value(s))
+
+247.0: 1 instances (1 NULL)
+ [5] = "5" (3 refs) active
+ NULL -> -1
+
+*** 45: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+[5] = "5" = 15 (Missing metric value(s))
+[3] = Missing metric value(s)
+
+247.0: 2 instances (0 NULL)
+ [5] = "5" (3 refs) inactive
+ [3] = "3" (3 refs) inactive
+
+*** 46: Line <N> - Update indom for second group ***
+
+*** 47: Line <N> - Fetch second group ***
+dynamic.numinsts = 1
+
+[5] = "5" = 20 (20)
+[3] = Missing metric value(s)
+
+247.0: 2 instances (0 NULL)
+ [5] = "5" (3 refs) active
+ [3] = "3" (3 refs) inactive
+
+*** PDUs ***
+ 8 pmGetPDU: DESC
+ 1 pmGetPDU: ERROR
+ 12 pmGetPDU: INSTANCE
+ 9 pmGetPDU: PMNS_IDS
+ 31 pmGetPDU: RESULT
+ 1 pmXmitPDU: CREDS
+ 8 pmXmitPDU: DESC_REQ
+ 31 pmXmitPDU: FETCH
+ 12 pmXmitPDU: INSTANCE_REQ
+ 9 pmXmitPDU: PMNS_NAMES
+ 10 pmXmitPDU: PROFILE
diff --git a/qa/1021 b/qa/1021
new file mode 100755
index 0000000..ff24f56
--- /dev/null
+++ b/qa/1021
@@ -0,0 +1,15 @@
+#!/bin/sh
+# PCP QA Test No. 1021
+# Check PMC handles host to archive mapping with multiple groups
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_hosts/qmc_hosts ] || _notrun "qmc_hosts not built or installed"
+
+# real QA test starts here
+
+qt/qmc_hosts/qmc_hosts -DPMC 2>&1 \
+ | sed -e 's/: Line [0-9][0-9]*/: Line <N>/'
+exit $?
diff --git a/qa/1021.out b/qa/1021.out
new file mode 100644
index 0000000..270ca14
--- /dev/null
+++ b/qa/1021.out
@@ -0,0 +1,27 @@
+QA output created by 1021
+
+*** 1: Line <N> - Create two groups ***
+
+*** 2: Line <N> - Create an archive context in both groups, but to different hosts ***
+QmcGroup::use: No direct match for context "archives/oview-short" (type 2).
+QmcGroup::use: Creating new context for "archives/oview-short"
+QmcSource::getSource: Creating new source for archives/oview-short
+QmcSource::QmcSource: Created context 0 to archive "archives/oview-short"
+QmcSource::dupContext: Using original context for archive "archives/oview-short"
+QmcGroup::use: Added context 0: archive "archives/oview-short" has 0 metrics
+QmcGroup::use: No direct match for context "archives/rattle" (type 2).
+QmcGroup::use: Creating new context for "archives/rattle"
+QmcSource::getSource: Creating new source for archives/rattle
+QmcSource::QmcSource: Created context 1 to archive "archives/rattle"
+QmcSource::dupContext: Using original context for archive "archives/rattle"
+QmcGroup::use: Added context 0: archive "archives/rattle" has 0 metrics
+
+*** 3: Line <N> - Try to create a host context to snort in group1 ***
+QmcGroup::use: No direct match for context "snort" (type 1).
+QmcGroup::use: Using current context 0 (handle = 0) for archive "archives/oview-short"
+
+*** 4: Line <N> - Try to create a host context to snort in group2 ***
+QmcGroup::use: No direct match for context "snort" (type 1).
+qmc_hosts: Error: No archives were specified for host "snort"
+QmcSource::delContext: No contexts remain, removing archive "archives/rattle"
+QmcSource::delContext: No contexts remain, removing archive "archives/oview-short"
diff --git a/qa/1022 b/qa/1022
new file mode 100755
index 0000000..b0d72c1
--- /dev/null
+++ b/qa/1022
@@ -0,0 +1,31 @@
+#!/bin/sh
+# PCP QA Test No. 1022
+# -S and -T values that are _both_ before the start, or after the end
+# of an archive ...
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+#
+# Performance metrics from host rattle
+# commencing Sat May 17 21:22:42.025 1997
+# ending Mon May 19 10:22:42.021 1997
+
+# -S and -T before the start of the archive
+#
+pmdumptext -z -S '@Sat May 10 01:00:00 1997' -T '@Sat May 10 01:00:00 1997' -a archives/rattle irix.kernel.all.load
+
+# -S and -T after the end of the archive
+#
+echo
+pmdumptext -z -S '@Sat May 24 01:00:00 1997' -T '@Sat May 24 01:00:00 1997' -a archives/rattle irix.kernel.all.load
+
+# success, all done
+exit
diff --git a/qa/1022.out b/qa/1022.out
new file mode 100644
index 0000000..ae0890c
--- /dev/null
+++ b/qa/1022.out
@@ -0,0 +1,2 @@
+QA output created by 1022
+
diff --git a/qa/1023 b/qa/1023
new file mode 100755
index 0000000..159dd41
--- /dev/null
+++ b/qa/1023
@@ -0,0 +1,48 @@
+#!/bin/sh
+# PCP QA Test No. 1023
+# Exercise some pmdumptext problems
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# proc metrics may not be available
+pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
+
+# see if unix domain sockets are available (permissions)
+unix_domain_sockets=false
+eval `pmconfig -L 2>/dev/null`
+target="-h localhost"
+$unix_domain_sockets && target="-h unix:"
+
+# real QA test starts here
+inst=`pminfo $target -F proc.psinfo.pid \
+ | sed -n -e '/inst \[1 /{
+s/^[^"]*"//
+s/ .*//
+p
+}'`
+
+if [ -z "$inst" ]
+then
+ echo "Arrgh, cannot find proc.psinfo.pid for init!"
+ pminfo $target -F proc.psinfo.pid
+fi
+
+echo "proc.psinfo.pid[$inst] 0" >$tmp.config
+echo "proc.psinfo.pid[1]" >> $tmp.config
+
+pmdumptext $target -G -s 1 -f '' -t 1 -c $tmp.config >$tmp.out 2>&1
+
+echo
+echo "expect two \"1\"s ..."
+sort -u $tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/1023.out b/qa/1023.out
new file mode 100644
index 0000000..11e9e57
--- /dev/null
+++ b/qa/1023.out
@@ -0,0 +1,4 @@
+QA output created by 1023
+
+expect two "1"s ...
+1 1
diff --git a/qa/1025 b/qa/1025
new file mode 100755
index 0000000..b5b2d2b
--- /dev/null
+++ b/qa/1025
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 1025
+# Test out handling of > MAXHOSTNAMELEN (64) hostnames
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ $sudo rm -f $tmp.*
+}
+
+# real QA test starts here
+
+rm -f $seq.full
+
+metric="sample.control"
+cat <<EOF >$tmp.config
+log mandatory on 1 sec {
+ $metric
+}
+EOF
+
+pmlogger -s1 -c $tmp.config -l $tmp.log $tmp.arch 1>$tmp.out 2>&1
+cat $tmp.log >> $seq.full
+
+bighostname="abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde"
+pmloglabel -h $bighostname $tmp.arch >> $seq.full
+
+pmdumplog -l $tmp.arch | sed -e '/commencing/d' -e '/ending/d'
+
+pmdumptext -C -a $tmp.arch $bighostname:$metric
+
+# success, all done
+status=0
+exit
diff --git a/qa/1025.out b/qa/1025.out
new file mode 100644
index 0000000..1de579f
--- /dev/null
+++ b/qa/1025.out
@@ -0,0 +1,3 @@
+QA output created by 1025
+Log Label (Log Format Version 2)
+Performance metrics from host abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabc
diff --git a/qa/1026 b/qa/1026
new file mode 100755
index 0000000..9ed2f85
--- /dev/null
+++ b/qa/1026
@@ -0,0 +1,40 @@
+#!/bin/sh
+# PCP QA Test No. 1026
+# Test for pmdumptext regressions
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+multi=`./getpmcdhosts -p multi -n 1`
+[ -z "$multi" ] && _notrun "Cannot get remote multi-CPU machine"
+single=`./getpmcdhosts -p single -n 1`
+[ -z "$single" ] && _notrun "Cannot get remote single-CPU machine"
+
+_filter()
+{
+ sed \
+ -e "s/$multi/MULTI/g" \
+ -e "s/$single/SINGLE/g" \
+ -e 's/[1-2][0-9]*\.000 1\.000/N 1/g' \
+ -e 's/[2-9]\.000 1\.000/N 1/g' \
+ -e "s/$$/TMP/g"
+}
+
+# real QA test starts here
+
+# check support for different hosts at once
+eval pmdumptext -lM -s 1 -d "' '" -f "''" $multi:hinv.ncpu $single:hinv.ncpu | _filter
+
+# check that we manage a bad config file OK
+pmdumptext -c $tmp.not_here 2>&1 | _filter
+
+# check that instances are converted to canonical units
+pmdumptext -C -iu $single:kernel.percpu.cpu.user[cpu0] 2>&1 | _filter
+
+exit
diff --git a/qa/1026.out b/qa/1026.out
new file mode 100644
index 0000000..3235e10
--- /dev/null
+++ b/qa/1026.out
@@ -0,0 +1,9 @@
+QA output created by 1026
+[ 1] MULTI:hinv.ncpu
+[ 2] SINGLE:hinv.ncpu
+
+ 1 2
+MULTI:hinv.ncpu SINGLE:hinv.ncpu
+N 1
+pmdumptext: Unable to open /tmp/TMP.not_here: No such file or directory
+ Units util
diff --git a/qa/1027 b/qa/1027
new file mode 100755
index 0000000..b0c9761
--- /dev/null
+++ b/qa/1027
@@ -0,0 +1,28 @@
+#!/bin/sh
+# PCP QA Test No. 1027
+# Exercise PM_CONTEXT_LOCAL extensions to pmParseMetricSpec() and libpcp_qmc
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo 'expected to pass when sampledso is installed'
+pmdumptext -t 0.5 -s 1 @:sampledso.bin | _filter_pmdumptext
+pmstore sampledso.write_me 42
+echo "expect 2 2 42"
+pmdumptext -t 0.5 -s 1 @:sampledso.write_me sampledso.write_me localhost:sampledso.write_me \
+| _filter_pmdumptext
+echo "expect 42 42 2"
+pmdumptext -t 0.5 -s 1 localhost:sampledso.write_me sampledso.write_me @:sampledso.write_me \
+| _filter_pmdumptext
+
+pmstore sampledso.write_me 2
+
+# success, all done
+exit
diff --git a/qa/1027.out b/qa/1027.out
new file mode 100644
index 0000000..f923c2a
--- /dev/null
+++ b/qa/1027.out
@@ -0,0 +1,9 @@
+QA output created by 1027
+expected to pass when sampledso is installed
+DATE 100.000 200.000 300.000 400.000 500.000 600.000 700.000 800.000 900.000
+sampledso.write_me old value=2 new value=42
+expect 2 2 42
+DATE 2.000 2.000 42.000
+expect 42 42 2
+DATE 42.000 42.000 2.000
+sampledso.write_me old value=42 new value=2
diff --git a/qa/1028 b/qa/1028
new file mode 100755
index 0000000..e132402
--- /dev/null
+++ b/qa/1028
@@ -0,0 +1,21 @@
+#!/bin/sh
+# PCP QA Test No. 1028
+# Exercise pmdumptext handling of config files with no final EOL
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Silence is golden"
+$PCP_ECHO_PROG $PCP_ECHO_N "hinv.ncpu" > $tmp.conf
+pmdumptext -s 1 -c $tmp.conf >/dev/null
+status=$?
+
+# success, all done
+exit
diff --git a/qa/1028.out b/qa/1028.out
new file mode 100644
index 0000000..a91d340
--- /dev/null
+++ b/qa/1028.out
@@ -0,0 +1,2 @@
+QA output created by 1028
+Silence is golden
diff --git a/qa/1029 b/qa/1029
new file mode 100755
index 0000000..df212a6
--- /dev/null
+++ b/qa/1029
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Test libqmc event tracing functionality
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+. ./common.qt
+
+[ -x qt/qmc_event/qmc_event ] || _notrun "qmc_event not built or installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s/$host/HOST/g" \
+ -e "/^sample\.seconds/s/= 0.[0-9][0-9]*/= 1/g" \
+ -e "/^sample\.seconds/s/= 1.[0-9][0-9]*/= 1/g" \
+ -e "/^sample\.seconds/s/= 1 /= NUMBER /g" \
+ -e "/^sample\.seconds/s/= 0 /= NUMBER /g" \
+ -e "/::genProfile/s/id = [0-9]*,/id = NNN,/" \
+ -e "s/ptr = 0x[1-9a-f][0-9a-f]*/ptr = 0x########/g" \
+ -e "/lookupDesc:/s/29\.0\.2$/<pmid for sample.seconds>/" \
+ -e "/lookupDesc:/s/29\.0\.127$/<pmid for sample.event.type>/" \
+ -e "/lookupDesc:/s/29\.0\.128$/<pmid for sample.event.param_32>/" \
+ -e "/lookupDesc:/s/29\.0\.129$/<pmid for sample.event.param_u32>/" \
+ -e "/lookupDesc:/s/29\.0\.130$/<pmid for sample.event.param_64>/" \
+ -e "/lookupDesc:/s/29\.0\.131$/<pmid for sample.event.param_u64>/" \
+ -e "/lookupDesc:/s/29\.0\.132$/<pmid for sample.event.param_float>/" \
+ -e "/lookupDesc:/s/29\.0\.133$/<pmid for sample.event.param_double>/" \
+ -e "/lookupDesc:/s/29\.0\.134$/<pmid for sample.event.param_string>/" \
+ -e "/lookupDesc:/s/29\.0\.135$/<pmid for sample.event.param_aggregate>/" \
+ -e "/lookupDesc:/s/29\.0\.136$/<pmid for sample.event.records>/" \
+ -e "/lookupInDom:/s/29\.10$/<indom for sample.event.records>/" \
+ -e 's/^ [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/ <timestamp>/' \
+
+}
+
+# real QA test starts here
+
+rm -f $seq.full
+pmstore sample.event.reset 1 >$seq.full
+$here/qt/qmc_event/qmc_event -DPMC,OPTFETCH 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/1029.out b/qa/1029.out
new file mode 100644
index 0000000..efcd605
--- /dev/null
+++ b/qa/1029.out
@@ -0,0 +1,155 @@
+QA output created by 1029
+*** Create a single fetch group ***
+
+*** Event metric ***
+QmcSource::getSource: Creating new source for HOST
+QmcSource::QmcSource: Created context 0 to host "HOST"
+QmcGroup::createLocalContext: Default context to host "HOST"
+QmcSource::dupContext: Using original context for host "HOST"
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.records>
+QmcContext::lookupInDom: Add indom for <indom for sample.event.records>
+HOST:sample.event.records["fungus", "bogus"] from host "HOST" with scale = 0 and units = none
+sample.event.records["fungus"]: 0 event records
+sample.event.records["bogus"]: 0 event records
+QmcGroup::use: Using current context 0 (handle = 0) for host "HOST"
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.seconds>
+HOST:sample.seconds from host "HOST" with scale = 0 and units = sec / second
+sample.seconds = Missing metric value(s)
+
+*** Group Fetch 0 ***
+QmcGroup::fetch: 1 contexts
+QmcIndom::genProfile: id = NNN, count = 2, numInsts = 2, active = 2, activeRef = 2: ALL ptr = 0x0
+QmcContext::fetch: fetching context host "HOST" has 2 metrics
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+sample.event.records["fungus"]: 1 event records
+ <timestamp> --- event record [0] flags 0x1 (point) ---
+sample.event.records["bogus"]: 1 event records
+ <timestamp> --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+sample.seconds = Missing metric value(s)
+
+*** Group Fetch 1 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 2 metrics
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.type>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupName: Matched id 29.0.127 to "sample.event.type"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_64>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_64>
+QmcContext::lookupName: Matched id 29.0.134 to "sample.event.param_string"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+sample.event.records["fungus"]: 2 event records
+ <timestamp> --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ <timestamp> --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records["bogus"]: 1 event records
+ <timestamp> --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+sample.seconds = NUMBER sec / second
+
+*** Group Fetch 2 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 2 metrics
+QmcContext::lookupName: Matched id 29.0.127 to "sample.event.type"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_u64>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_u64>
+QmcContext::lookupName: Matched id 29.0.134 to "sample.event.param_string"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupName: Matched id 29.0.127 to "sample.event.type"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_double>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_double>
+QmcContext::lookupName: Matched id 29.0.133 to "sample.event.param_double"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_double>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_double>
+QmcContext::lookupName: Matched id 29.0.127 to "sample.event.type"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupName: Matched id 29.0.131 to "sample.event.param_u64"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_u64>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_u64>
+QmcContext::lookupName: Matched id 29.0.134 to "sample.event.param_string"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupName: Matched id 29.0.134 to "sample.event.param_string"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_32>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_32>
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_u32>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_u32>
+QmcContext::lookupName: Matched id 29.0.127 to "sample.event.type"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.type>
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_float>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_float>
+QmcContext::lookupDesc: Add descriptor for <pmid for sample.event.param_aggregate>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_aggregate>
+QmcContext::lookupName: Matched id 29.0.134 to "sample.event.param_string"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupName: Matched id 29.0.134 to "sample.event.param_string"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+sample.event.records["fungus"]: 5 event records
+ <timestamp> --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ <timestamp> --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ <timestamp> --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ <timestamp> --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ <timestamp> --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate []
+sample.event.records["bogus"]: 2 event records
+ <timestamp> --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #3"
+ <timestamp> --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+sample.seconds = NUMBER sec / second
+
+*** Group Fetch 3 ***
+QmcGroup::fetch: 1 contexts
+QmcContext::fetch: fetching context host "HOST" has 2 metrics
+QmcContext::lookupName: Matched id 29.0.134 to "sample.event.param_string"
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::lookupDesc: Reusing descriptor <pmid for sample.event.param_string>
+QmcContext::fetch: Updating metrics
+QmcGroup::fetch: Done
+sample.event.records["fungus"]: 0 event records
+sample.event.records["bogus"]: 1 event records
+ <timestamp> --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #4"
+sample.seconds = NUMBER sec / second
+
+*** Exiting ***
+QmcSource::delContext: No contexts remain, removing host "HOST"
diff --git a/qa/103 b/qa/103
new file mode 100755
index 0000000..c6124cb
--- /dev/null
+++ b/qa/103
@@ -0,0 +1,146 @@
+#! /bin/sh
+# PCP QA Test No. 103
+# exercise the logging state compatibility matrix for pmlc ...
+# initial: some instances for a metric
+# request: some overlapping instances for the same metric
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e '/connect /{
+s/connect [0-9][0-9]*/connect PID/
+s/@.*/@HOSTNAME/
+}' \
+ -e '/Connected /{
+s/ on port [0-9][0-9]*//
+s/ pid [0-9][0-9]*//
+s/ at .*/ at HOSTNAME/
+}' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ | $PCP_AWK_PROG '
+/pmlc commands/ { skip = 1; print "[command summary deleted ...]" }
+/metric-name/ { skip = 0; next }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_logger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/AF event queue/d'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+_do_cmds()
+{
+ for ctl in mandatory advisory
+ do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ ( echo "# setup"; \
+
+ echo "log mandatory maybe sample.bin "'[ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]'; \
+ echo "# $ctl $state -> $req_ctl $req_state"; \
+ echo "log $ctl $state sample.bin "'[ "bin-100", "bin-200", "bin-300"]'; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ ( echo "log $req_ctl $req_state sample.bin "'[ "bin-200", "bin-400" ]'; \
+ echo "query sample.bin"; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ # need sleeps to allow pmlogger to get a look in and
+ # to allow the pmlogger socket to be closed so the
+ # next pmlc invocation can get connected
+ done
+ done
+ done
+ done
+}
+
+x=3
+
+# real QA test starts here
+$sudo rm -f $tmp.0 $tmp.meta $tmp.index
+
+# start pmlogger with the expected number of samples plus a few more
+# to detect extra log output
+#
+_start_up_pmlogger -t 0.5sec -L -s 30 -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+pmsleep 1.5
+_do_cmds $logger_pid >$tmp.out 2>&1
+
+# this chews up any remaining samples quickly so pmlogger terminates
+#
+echo "log mandatory on 25 msec sample.long.one" \
+| pmlc -ie $logger_pid >>$tmp.out 2>&1
+
+_filter_pmlc <$tmp.out
+
+# wait for pmlogger to terminate
+#
+_wait_pmlogger_end $logger_pid
+cat $tmp.err $tmp.log | _filter_logger
+
+echo
+if [ -s $tmp.0 ]
+then
+ echo "Uniq filtered entries from pmdumplog ..."
+ pmdumplog $tmp \
+ | _filter_dump \
+ | sed -e 's/TIMESTAMP//' -e 's/^ *//' \
+ | LC_COLLATE=POSIX sort -u
+ pmdumplog $tmp >$seq.full 2>&1
+else
+ echo "Archive log is empty"
+fi
+
+exit
diff --git a/qa/103.out b/qa/103.out
new file mode 100644
index 0000000..44618ed
--- /dev/null
+++ b/qa/103.out
@@ -0,0 +1,1323 @@
+QA output created by 103
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> mandatory on once
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> mandatory maybe
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> mandatory off
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> advisory on once
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-200", "bin-400" ]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [200 or "bin-200"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory on once -> advisory off
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-200", "bin-400" ]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [200 or "bin-200"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> mandatory on once
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> mandatory maybe
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> mandatory off
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> advisory on once
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory maybe -> advisory off
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> mandatory on once
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> mandatory maybe
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> mandatory off
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> advisory on once
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-200", "bin-400" ]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [200 or "bin-200"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # mandatory off -> advisory off
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-200", "bin-400" ]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [200 or "bin-200"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> mandatory on once
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> mandatory maybe
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> mandatory off
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> advisory on once
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory on once -> advisory off
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> mandatory on once
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> mandatory maybe
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> mandatory off
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> advisory on once
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300", "bin-400", "bin-500" ]
+pmlc> # advisory off -> advisory off
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin [ "bin-200", "bin-400" ]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on 25 msec sample.long.one
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-200 [request failed]
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-200 [request failed]
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-200 [request failed]
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-200 [request failed]
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-200
+ instance: bin-400
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #200
+ instance: #400
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.long.one
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+Uniq filtered entries from pmdumplog ...
+2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+29.0.10 (sample.long.one): value NUMBER
+29.0.6 (sample.bin):
+29.0.6 (sample.bin): inst [400 or "bin-400"] value NUMBER
+inst [100 or "bin-100"] value NUMBER
+inst [200 or "bin-200"] value NUMBER
+inst [300 or "bin-300"] value NUMBER
+inst [400 or "bin-400"] value NUMBER
diff --git a/qa/104 b/qa/104
new file mode 100755
index 0000000..dd84e92
--- /dev/null
+++ b/qa/104
@@ -0,0 +1,145 @@
+#! /bin/sh
+# PCP QA Test No. 104
+# exercise the logging state compatibility matrix for pmlc ...
+# initial: some instances for a metric
+# request: all instances for the same metric
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e '/connect /{
+s/connect [0-9][0-9]*/connect PID/
+s/@.*/@HOSTNAME/
+}' \
+ -e '/Connected /{
+s/ on port [0-9][0-9]*//
+s/ pid [0-9][0-9]*//
+s/ at .*/ at HOSTNAME/
+}' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ | $PCP_AWK_PROG '
+/pmlc commands/ { skip = 1; print "[command summary deleted ...]" }
+/metric-name/ { skip = 0; next }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_logger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/AF event queue/d'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+_do_cmds()
+{
+ for ctl in mandatory advisory
+ do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ ( echo "# setup"; \
+
+ echo "log mandatory maybe sample.bin"; \
+ echo "# $ctl $state -> $req_ctl $req_state"; \
+ echo "log $ctl $state sample.bin "'[ "bin-100", "bin-200", "bin-300"]'; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ ( echo "log $req_ctl $req_state sample.bin"; \
+ echo "query sample.bin"; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ # need sleeps to allow pmlogger to get a look in and
+ # to allow the pmlogger socket to be closed so the
+ # next pmlc invocation can get connected
+ #
+ done
+ done
+ done
+ done
+}
+
+x=3
+
+# real QA test starts here
+$sudo rm -f $tmp.0 $tmp.meta $tmp.index
+
+# start pmlogger with the expected number of samples plus a few more
+# to detect extra log output
+#
+_start_up_pmlogger -t 0.5sec -L -s 30 -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+pmsleep 1.1
+_do_cmds $logger_pid >$tmp.out 2>&1
+
+# this chews up any remaining samples quickly so pmlogger terminates
+#
+echo "log mandatory on 25 msec sample.long.one" \
+| pmlc -ie $logger_pid >>$tmp.out 2>&1
+
+_filter_pmlc <$tmp.out
+
+_wait_pmlogger_end $logger_pid
+cat $tmp.err $tmp.log | _filter_logger
+
+echo
+if [ -s $tmp.0 ]
+then
+ echo "Uniq filtered entries from pmdumplog ..."
+ pmdumplog $tmp \
+ | _filter_dump \
+ | sed -e 's/TIMESTAMP//' -e 's/^ *//' \
+ | LC_COLLATE=POSIX sort -u
+ pmdumplog $tmp >$seq.full 2>&1
+else
+ echo "Archive log is empty"
+fi
+
+exit
diff --git a/qa/104.out b/qa/104.out
new file mode 100644
index 0000000..68ab570
--- /dev/null
+++ b/qa/104.out
@@ -0,0 +1,1628 @@
+QA output created by 104
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory on once
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory maybe
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory off
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> advisory on once
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+ [400 or "bin-400"]
+ [500 or "bin-500"]
+ [600 or "bin-600"]
+ [700 or "bin-700"]
+ [800 or "bin-800"]
+ [900 or "bin-900"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> advisory off
+pmlc> log mandatory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory on once
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory maybe
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory off
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> advisory on once
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> advisory off
+pmlc> log mandatory maybe sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory on once
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory maybe
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory off
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> advisory on once
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+ [400 or "bin-400"]
+ [500 or "bin-500"]
+ [600 or "bin-600"]
+ [700 or "bin-700"]
+ [800 or "bin-800"]
+ [900 or "bin-900"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> advisory off
+pmlc> log mandatory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory on once
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory maybe
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory off
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> advisory on once
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> advisory off
+pmlc> log advisory on once sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory on once
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory maybe
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory off
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> advisory on once
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> advisory off
+pmlc> log advisory off sample.bin [ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on 25 msec sample.long.one
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: #400 [request failed]
+ instance: #500 [request failed]
+ instance: #600 [request failed]
+ instance: #700 [request failed]
+ instance: #800 [request failed]
+ instance: #900 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: #400 [request failed]
+ instance: #500 [request failed]
+ instance: #600 [request failed]
+ instance: #700 [request failed]
+ instance: #800 [request failed]
+ instance: #900 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.long.one
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+Uniq filtered entries from pmdumplog ...
+2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+29.0.10 (sample.long.one): value NUMBER
+29.0.6 (sample.bin):
+inst [100 or "bin-100"] value NUMBER
+inst [200 or "bin-200"] value NUMBER
+inst [300 or "bin-300"] value NUMBER
+inst [400 or "bin-400"] value NUMBER
+inst [500 or "bin-500"] value NUMBER
+inst [600 or "bin-600"] value NUMBER
+inst [700 or "bin-700"] value NUMBER
+inst [800 or "bin-800"] value NUMBER
+inst [900 or "bin-900"] value NUMBER
diff --git a/qa/1044 b/qa/1044
new file mode 100755
index 0000000..16d3e26
--- /dev/null
+++ b/qa/1044
@@ -0,0 +1,141 @@
+#! /bin/sh
+# PCP QA Test No. 1044 (formerly 525)
+# exercises pmieconf cmd line
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmieconf >/dev/null 2>&1 || _notrun "No pmieconf binary installed"
+
+status=1 # failure is the default!
+
+_cleanup()
+{
+ [ -f $tmp.save ] && cp $tmp.save $HOME/.pcp/pmie/config.pmie
+ rm -f $tmp.*
+ exit $status
+}
+
+filterpmieerr()
+{
+ sed -e '
+/^pmieconf:.* already been used,/ {
+ s/"[^"]*"/"SOME.RULE"/
+}
+/, line [0-9]*\./ {
+ s/, line [0-9]*\./, line LINENUMBER./
+ s/"\.\/pconf\/.*",/"\.\/pconf\/SOME\/RULE",/
+}'
+}
+
+trap "_cleanup" 0 1 2 3 15
+# keep this to restore later in case its someones local pmie config file
+[ -f $HOME/.pcp/pmie/config.pmie ] && cp $HOME/.pcp/pmie/config.pmie $tmp.save
+rm -f $HOME/.pcp/pmie/config.pmie
+
+# real QA test starts here
+
+echo
+echo "=== basic test - check that we get one rule..."
+pmieconf -r ./pconf list memory
+
+echo
+echo "=== basic test - check that we get one rule..."
+pmieconf -r ./pconf l memory.exhausted
+
+echo
+echo "=== check for non-existant rules location"
+pmieconf -r /no/such/file -v 5 all
+
+rm -f $seq.full
+echo
+echo "=== check no fatal errors when creating config.pmie"
+pmieconf -r ./pconf -f $seq.full -F >/dev/null 2>$tmp.out
+sed -e "s/$$/PID/g" $tmp.out
+wc -l <$seq.full | sed -e 's/ //g' # check the file is what we expect
+head -2 $seq.full # check the initial lines generated OK
+
+echo
+echo "=== check generated config.pmie is good pmie syntax"
+# Mac OS X issue ... swap.pagesout is not supported, so we get
+# pmie: metric swap.pagesout not in namespace for host Colleens-iMac.local
+# pmLookupName failed: Unknown metric name
+#
+# Solaris issue ... some filesys.* metrics and swap.pagesout not
+# supported, so similar problem there
+#
+# FreeBSD issue ... some filesys.* metrics not supported
+# pmie: metric filesys.used not in namespace for host vm06.localdomain
+#
+pmie -C $seq.full >$tmp.out 2>&1
+sts=$?
+
+if [ $PCP_PLATFORM = darwin ]
+then
+ $PCP_AWK_PROG <$tmp.out '
+BEGIN { skip = 0 }
+/pmie: metric swap.pagesout not in namespace/ { skip = 2 }
+skip > 0 { skip--; next }
+ { print }'
+elif [ $PCP_PLATFORM = solaris ]
+then
+ $PCP_AWK_PROG <$tmp.out '
+BEGIN { skip = 0 }
+/pmie: metric filesys.used not in namespace/ { skip = 2 }
+/pmie: metric filesys.capacity not in namespace/{ skip = 2 }
+/pmie: metric swap.pagesout not in namespace/ { skip = 2 }
+skip > 0 { skip--; next }
+ { print }'
+elif [ $PCP_PLATFORM = freebsd ]
+then
+ $PCP_AWK_PROG <$tmp.out '
+BEGIN { skip = 0 }
+/pmie: metric filesys.used not in namespace/ { skip = 2 }
+/pmie: metric filesys.capacity not in namespace/{ skip = 2 }
+skip > 0 { skip--; next }
+ { print }'
+else
+ cat $tmp.out
+fi
+
+echo status=$sts
+
+cat > $tmp.input << EOF
+list all
+quit
+EOF
+echo
+echo "=== check interactive similar to command line...."
+pmieconf -r ./pconf list all > $tmp.cmdline
+pmieconf -r ./pconf > $tmp.interact < $tmp.input
+echo >> $tmp.interact
+diff $tmp.cmdline $tmp.interact | sed -e "s,$HOME,HOME,g"
+
+echo
+echo "=== check rules path & duplicate rule names (-r)..."
+pmieconf -F -r ./pconf:./pconf 2>&1 | filterpmieerr
+echo status=$?
+
+echo
+echo "=== check rules path & duplicate rule names (env)..."
+PMIECONF_PATH=./pconf:/no/such/rules:./pconf
+export PMIECONF_PATH
+pmieconf -F -r ./pconf:./pconf 2>&1 | filterpmieerr
+echo status=$?
+
+echo
+echo "=== check env variable gets used over default..."
+pmieconf list all
+echo status=$?
+
+# success, all done
+status=0
+exit
diff --git a/qa/1044.out b/qa/1044.out
new file mode 100644
index 0000000..eaca55e
--- /dev/null
+++ b/qa/1044.out
@@ -0,0 +1,52 @@
+QA output created by 1044
+
+=== basic test - check that we get one rule...
+ rule: memory.exhausted [chronic main memory exhaustion]
+ help: The system is swapping modified pages out of main memory to the
+ swap partitions, and has been doing this on at least 3 of the
+ last 10 evaluations of this rule.
+ There appears to be insufficient main memory to meet the resident
+ demands of the current workload.
+ predicate =
+ some_host (30 %_sample swap.pagesout $hosts$ @0..9 > 0)
+ vars: enabled = yes
+
+=== basic test - check that we get one rule...
+ rule: memory.exhausted [chronic main memory exhaustion]
+ help: The system is swapping modified pages out of main memory to the
+ swap partitions, and has been doing this on at least 3 of the
+ last 10 evaluations of this rule.
+ There appears to be insufficient main memory to meet the resident
+ demands of the current workload.
+ predicate =
+ some_host (30 %_sample swap.pagesout $hosts$ @0..9 > 0)
+ vars: enabled = yes
+
+=== check for non-existant rules location
+pmieconf: error - cannot stat /no/such/file: No such file or directory
+
+=== check no fatal errors when creating config.pmie
+45
+// pmieconf-pmie 1 ./pconf
+// end
+
+=== check generated config.pmie is good pmie syntax
+status=0
+
+=== check interactive similar to command line....
+214a215
+>
+
+=== check rules path & duplicate rule names (-r)...
+pmieconf: error - rule name "SOME.RULE" has already been used, duplicate name found in:
+ "./pconf/SOME/RULE", line LINENUMBER.
+status=0
+
+=== check rules path & duplicate rule names (env)...
+pmieconf: error - rule name "SOME.RULE" has already been used, duplicate name found in:
+ "./pconf/SOME/RULE", line LINENUMBER.
+status=0
+
+=== check env variable gets used over default...
+pmieconf: error - cannot stat /no/such/rules: No such file or directory
+status=1
diff --git a/qa/1045 b/qa/1045
new file mode 100755
index 0000000..1f8c39c
--- /dev/null
+++ b/qa/1045
@@ -0,0 +1,131 @@
+#! /bin/sh
+# PCP QA Test No. 1045 (formerly 526)
+# exercise pmieconf version control (pmie config/rules)
+#
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmieconf >/dev/null 2>&1 || _notrun "No pmieconf binary installed"
+
+_filter_date()
+{
+ # ctime format: Thu Dec 17 15:26:15 1998
+ sed -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]/[DATE]/g' \
+ -e "s@$PCP_BINADM_DIR/pmpost@pmpost@"
+}
+
+_filter_pmie()
+{
+ if [ $PCP_PLATFORM = darwin ]
+ then
+ sed \
+ -e '/metric swap.pagesout not in namespace/d' \
+ -e '/pmLookupName failed: Unknown metric name/d'
+ elif [ $PCP_PLATFORM = solaris ]
+ then
+ sed \
+ -e '/metric swap.pagesout not in namespace/d' \
+ -e '/metric filesys.used not in namespace/d' \
+ -e '/metric filesys.capacity not in namespace/d' \
+ -e '/metric filesys.used not in namespace/d' \
+ -e '/pmLookupName failed: Unknown metric name/d'
+ else
+ cat
+ fi
+}
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat > $tmp.pmie <<EOF
+// pmieconf-pmie 0 ./pconf
+// end
+EOF
+echo
+echo "=== check unsupported pmie config version"
+pmieconf -F -r ./pconf -f $tmp.pmie 2>$tmp.stderr
+sed -e "s/$seq-$$/[SEQ-PID]/g" $tmp.stderr
+echo status=$?
+
+cat > $tmp.pmie <<EOF
+// pmieconf-pmie 1 ./pconf
+// 1 filesys.buffer_cache threshold = 81.500%
+// 1 filesys.buffer_cache hosts = "moomba wobbly"
+// 1 filesys.buffer_cache sss_action = yes
+// 1 filesys.buffer_cache user_command = "$PCP_BINADM_DIR/pmpost \$rule\$^ %v@%h"
+// 1 filesys.buffer_cache holdoff = 20
+// 2 filesys.buffer_cache holdoff = 20
+// 2 filesys.buffer_cache delta = 1908
+// 3 filesys.buffer_cache enabled = yes
+// 1 filesys.capacity delta = 60
+// 1 network.interface_bytes holdoff = 30
+// 1 network.tcp_dropped_conns holdoff = 30
+// 1 network.tcp_retransmit holdoff = 30
+// end
+
+// 1 cpu.aggregate_util
+sample.float.one;
+
+// 1 cpu.load_average
+sample.float.ten;
+
+// 1 filesys.buffer_cache
+sample.float.hundred;
+EOF
+cp $tmp.pmie $tmp.pmie1
+
+echo
+echo "=== check that unneeded changes for unsupported versions are dumped"
+pmieconf -r ./pconf -f $tmp.pmie1 m filesys.buffer_cache sss_action no >/dev/null
+echo status=$?
+pmie -C $tmp.pmie1 >$tmp.out 2>&1
+sts=$?
+_filter_pmie <$tmp.out
+echo status=$sts
+_filter_date < $tmp.pmie1
+
+# APPEND this to the above file
+cat >> $tmp.pmie <<EOF
+// 2 filesys.buffer_cache
+sample.drift;
+
+sample.double.one;
+EOF
+cp $tmp.pmie $tmp.pmie2
+
+echo
+echo "=== check that changes for unsupported versions are moved to end"
+pmieconf -r ./pconf -f $tmp.pmie2 m network.interface_bytes holdoff 40 >/dev/null
+echo status=$?
+pmie -C $tmp.pmie2 >$tmp.out 2>&1
+sts=$?
+_filter_pmie <$tmp.out
+echo status=$sts
+_filter_date < $tmp.pmie2
+
+cp $tmp.pmie $tmp.pmie3
+$sudo mv ./pconf/cpu/load_average $tmp.load
+echo
+echo "=== check that changes for unsupported rules are moved to end"
+pmieconf -r ./pconf -f $tmp.pmie3 m filesys.buffer_cache holdoff 120 >/dev/null
+$sudo mv $tmp.load ./pconf/cpu/load_average
+echo status=$?
+pmie -C $tmp.pmie3 >$tmp.out 2>&1
+sts=$?
+_filter_pmie <$tmp.out
+echo status=$sts
+_filter_date < $tmp.pmie3
+
+# success, all done
+status=0
+exit
diff --git a/qa/1045.out b/qa/1045.out
new file mode 100644
index 0000000..89584e5
--- /dev/null
+++ b/qa/1045.out
@@ -0,0 +1,182 @@
+QA output created by 1045
+
+=== check unsupported pmie config version
+pmieconf: error - unknown version number in /tmp/[SEQ-PID].pmie: "0" (expected 1)
+status=0
+
+=== check that unneeded changes for unsupported versions are dumped
+status=0
+status=0
+// pmieconf-pmie 1 ./pconf
+// 1 filesys.buffer_cache threshold = 81.5%
+// 1 filesys.buffer_cache hosts = "moomba wobbly"
+// 1 filesys.buffer_cache sss_action = no
+// 1 filesys.buffer_cache user_command = "pmpost $rule$^ %v@%h"
+// 1 filesys.buffer_cache holdoff = 20
+// 1 filesys.capacity delta = 60
+// 1 network.interface_bytes holdoff = 30
+// 1 network.tcp_dropped_conns holdoff = 30
+// 1 network.tcp_retransmit holdoff = 30
+// end
+//
+// --- START GENERATED SECTION (do not change this section) ---
+// generated by pmieconf on: [DATE]
+//
+
+// 1 cpu.load_average
+delta = 120;
+cpu.load_average =
+some_host (
+ kernel.all.load #'1 minute'
+ > hinv.ncpu * 1.5
+) -> shell 15 "/usr/pcp/bin/pmpost high 1-minute load average" " %v@%h";
+
+// 1 cpu.system_mode
+delta = 120;
+cpu.system_mode =
+some_host (
+ ( kernel.all.cpu.user
+ + kernel.all.cpu.sys
+ > hinv.ncpu * 75 / 100 ) &&
+ ( kernel.all.cpu.sys /
+ ( kernel.all.cpu.user
+ + kernel.all.cpu.sys )
+ > 80 / 100 )
+) -> shell 15 "/usr/pcp/bin/pmpost busy executing in system mode" " %h";
+
+// 1 filesys.capacity
+delta = 60;
+filesys.capacity =
+some_host (
+ some_inst (
+ ( 100 * filesys.used >
+ 95 * filesys.capacity ) &&
+ rate filesys.used > 0
+ )
+) -> shell 15 "/usr/pcp/bin/pmpost imminent file system full" " %i@%h";
+
+// 1 memory.exhausted
+delta = 120;
+memory.exhausted =
+some_host (30 %_sample swap.pagesout @0..9 > 0) -> shell 15 "/usr/pcp/bin/pmpost chronic main memory exhaustion" " %h";
+
+// --- END GENERATED SECTION (changes below will be preserved) ---
+
+=== check that changes for unsupported versions are moved to end
+status=0
+status=0
+// pmieconf-pmie 1 ./pconf
+// 1 filesys.buffer_cache threshold = 81.5%
+// 1 filesys.buffer_cache hosts = "moomba wobbly"
+// 1 filesys.buffer_cache sss_action = yes
+// 1 filesys.buffer_cache user_command = "pmpost $rule$^ %v@%h"
+// 1 filesys.buffer_cache holdoff = 20
+// 1 filesys.capacity delta = 60
+// 1 network.interface_bytes holdoff = 40
+// 1 network.tcp_dropped_conns holdoff = 30
+// 1 network.tcp_retransmit holdoff = 30
+// end
+//
+// --- START GENERATED SECTION (do not change this section) ---
+// generated by pmieconf on: [DATE]
+//
+
+// 1 cpu.load_average
+delta = 120;
+cpu.load_average =
+some_host (
+ kernel.all.load #'1 minute'
+ > hinv.ncpu * 1.5
+) -> shell 15 "/usr/pcp/bin/pmpost high 1-minute load average" " %v@%h";
+
+// 1 cpu.system_mode
+delta = 120;
+cpu.system_mode =
+some_host (
+ ( kernel.all.cpu.user
+ + kernel.all.cpu.sys
+ > hinv.ncpu * 75 / 100 ) &&
+ ( kernel.all.cpu.sys /
+ ( kernel.all.cpu.user
+ + kernel.all.cpu.sys )
+ > 80 / 100 )
+) -> shell 15 "/usr/pcp/bin/pmpost busy executing in system mode" " %h";
+
+// 1 filesys.capacity
+delta = 60;
+filesys.capacity =
+some_host (
+ some_inst (
+ ( 100 * filesys.used >
+ 95 * filesys.capacity ) &&
+ rate filesys.used > 0
+ )
+) -> shell 15 "/usr/pcp/bin/pmpost imminent file system full" " %i@%h";
+
+// 1 memory.exhausted
+delta = 120;
+memory.exhausted =
+some_host (30 %_sample swap.pagesout @0..9 > 0) -> shell 15 "/usr/pcp/bin/pmpost chronic main memory exhaustion" " %h";
+
+// --- END GENERATED SECTION (changes below will be preserved) ---
+// // 2 filesys.buffer_cache (deprecated, rule version no longer supported)
+// sample.drift;
+//
+// sample.double.one;
+
+=== check that changes for unsupported rules are moved to end
+status=0
+status=0
+// pmieconf-pmie 1 ./pconf
+// 1 filesys.buffer_cache threshold = 81.5%
+// 1 filesys.buffer_cache hosts = "moomba wobbly"
+// 1 filesys.buffer_cache sss_action = yes
+// 1 filesys.buffer_cache user_command = "pmpost $rule$^ %v@%h"
+// 1 filesys.buffer_cache holdoff = 120
+// 1 filesys.capacity delta = 60
+// 1 network.interface_bytes holdoff = 30
+// 1 network.tcp_dropped_conns holdoff = 30
+// 1 network.tcp_retransmit holdoff = 30
+// end
+//
+// --- START GENERATED SECTION (do not change this section) ---
+// generated by pmieconf on: [DATE]
+//
+
+// 1 cpu.system_mode
+delta = 120;
+cpu.system_mode =
+some_host (
+ ( kernel.all.cpu.user
+ + kernel.all.cpu.sys
+ > hinv.ncpu * 75 / 100 ) &&
+ ( kernel.all.cpu.sys /
+ ( kernel.all.cpu.user
+ + kernel.all.cpu.sys )
+ > 80 / 100 )
+) -> shell 15 "/usr/pcp/bin/pmpost busy executing in system mode" " %h";
+
+// 1 filesys.capacity
+delta = 60;
+filesys.capacity =
+some_host (
+ some_inst (
+ ( 100 * filesys.used >
+ 95 * filesys.capacity ) &&
+ rate filesys.used > 0
+ )
+) -> shell 15 "/usr/pcp/bin/pmpost imminent file system full" " %i@%h";
+
+// 1 memory.exhausted
+delta = 120;
+memory.exhausted =
+some_host (30 %_sample swap.pagesout @0..9 > 0) -> shell 15 "/usr/pcp/bin/pmpost chronic main memory exhaustion" " %h";
+
+// --- END GENERATED SECTION (changes below will be preserved) ---
+// // 1 cpu.load_average (deprecated, rule definition no longer exists)
+// sample.float.ten;
+//
+// // 2 filesys.buffer_cache (deprecated, rule version no longer supported)
+// sample.drift;
+//
+// sample.double.one;
diff --git a/qa/1046 b/qa/1046
new file mode 100755
index 0000000..3ba96f8
--- /dev/null
+++ b/qa/1046
@@ -0,0 +1,73 @@
+#! /bin/sh
+# PCP QA Test No. 1046 (formerly 527)
+# exercise pmieconf global parameters
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmieconf >/dev/null 2>&1 || _notrun "No pmieconf binary installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ $PCP_AWK_PROG '/delta = ([0-9]+)/ { print $(NF-2), $(NF-1), $NF }'
+}
+
+# real QA test starts here
+cat > $tmp.pmie <<EOF
+// pmieconf-pmie 1 ./pconf
+// end
+EOF
+
+echo
+echo "=== first, set global delta"
+pmieconf -r ./pconf -f $tmp.pmie m global delta 120
+head -3 $tmp.pmie
+
+echo
+echo "=== now change cpu groups delta"
+pmieconf -r ./pconf -f $tmp.pmie modify cpu delta 450
+head -9 $tmp.pmie
+
+echo
+echo "=== now print out some deltas"
+# note use fgrep in case of bogus double delta
+echo o global
+pmieconf -r ./pconf -f $tmp.pmie l global | _filter
+echo o memory
+pmieconf -r ./pconf -f $tmp.pmie l memory | _filter
+echo o cpu
+pmieconf -r ./pconf -f $tmp.pmie l cpu | _filter
+
+echo
+echo "=== change global again"
+pmieconf -r ./pconf -f $tmp.pmie m global delta 60
+head -9 $tmp.pmie
+
+echo
+echo "=== print out the deltas"
+echo o global
+pmieconf -r ./pconf -f $tmp.pmie l global | _filter
+echo o memory
+pmieconf -r ./pconf -f $tmp.pmie l memory | _filter
+echo o cpu
+pmieconf -r ./pconf -f $tmp.pmie l cpu | _filter
+
+echo
+echo "=== lconf is in $seq.full ==="
+echo
+cp $tmp.pmie $seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/1046.out b/qa/1046.out
new file mode 100644
index 0000000..5238b11
--- /dev/null
+++ b/qa/1046.out
@@ -0,0 +1,55 @@
+QA output created by 1046
+
+=== first, set global delta
+// pmieconf-pmie 1 ./pconf
+// 0 global delta = 120
+// end
+
+=== now change cpu groups delta
+// pmieconf-pmie 1 ./pconf
+// 0 global delta = 120
+// 1 cpu.aggregate_util delta = 450
+// 1 cpu.excess_fpe delta = 450
+// 1 cpu.load_average delta = 450
+// 1 cpu.single_util delta = 450
+// 1 cpu.system_calls delta = 450
+// 1 cpu.system_mode delta = 450
+// end
+
+=== now print out some deltas
+o global
+delta = 120
+o memory
+o cpu
+delta = 450
+delta = 450
+delta = 450
+delta = 450
+delta = 450
+delta = 450
+
+=== change global again
+// pmieconf-pmie 1 ./pconf
+// 0 global delta = 60
+// 1 cpu.aggregate_util delta = 450
+// 1 cpu.excess_fpe delta = 450
+// 1 cpu.load_average delta = 450
+// 1 cpu.single_util delta = 450
+// 1 cpu.system_calls delta = 450
+// 1 cpu.system_mode delta = 450
+// end
+
+=== print out the deltas
+o global
+delta = 60
+o memory
+o cpu
+delta = 450
+delta = 450
+delta = 450
+delta = 450
+delta = 450
+delta = 450
+
+=== lconf is in 1046.full ===
+
diff --git a/qa/1047 b/qa/1047
new file mode 100755
index 0000000..080bb85
--- /dev/null
+++ b/qa/1047
@@ -0,0 +1,94 @@
+#! /bin/sh
+# PCP QA Test No. 1047 (formerly 528)
+# rules file syntax parsing & value/type checking
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmieconf >/dev/null 2>&1 || _notrun "No pmieconf binary installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat > $tmp.pmie <<EOF
+// pmieconf-pmie 1 $tmp.test
+// end
+EOF
+
+cat > $tmp.rules <<EOF
+#pmieconf-rules 1
+
+EOF
+
+_run_pmieconf()
+{
+ pmieconf -f $tmp.pmie -r $tmp.test list all >$tmp.out 2>&1
+ pstatus=$?
+ sed -e "s/$seq-$$/[SEQ-PID]/g" $tmp.out
+ echo status=$pstatus
+}
+
+
+# real QA test starts here
+
+echo
+echo "=== basic sanity check (pmieconf should fail with no rules)"
+cat $tmp.rules - > $tmp.test <<EOF
+string global.foo
+ default = 100;
+EOF
+_run_pmieconf
+
+
+echo
+echo "=== non-existant type"
+cat $tmp.rules - > $tmp.test <<EOF
+foo global.bloo
+ default = moo;
+EOF
+_run_pmieconf
+
+
+echo
+echo "=== 5 bad rulefile syntax tests"
+cat $tmp.rules - > $tmp.test <<EOF
+string global.bloo
+ default moo;
+EOF
+_run_pmieconf
+
+cat $tmp.rules - > $tmp.test <<EOF
+= global.bloo
+ default = "";
+EOF
+_run_pmieconf
+
+cat $tmp.rules - > $tmp.test <<EOF
+percent global.bloo
+ sometext = blat;
+EOF
+_run_pmieconf
+
+cat $tmp.rules - > $tmp.test <<EOF
+percent global.joe enabled = yes
+EOF
+_run_pmieconf
+
+cat $tmp.rules - > $tmp.test <<EOF
+string bloo
+ default "missing rule";
+EOF
+_run_pmieconf
+
+
+# success, all done
+status=0
+exit
diff --git a/qa/1047.out b/qa/1047.out
new file mode 100644
index 0000000..62dda9a
--- /dev/null
+++ b/qa/1047.out
@@ -0,0 +1,38 @@
+QA output created by 1047
+
+=== basic sanity check (pmieconf should fail with no rules)
+pmieconf: no rules were found using rule path: /tmp/[SEQ-PID].test
+status=1
+
+=== non-existant type
+pmieconf: error - file parsing error.
+ line number: 3 ("/tmp/[SEQ-PID].test")
+ expected: type keyword
+ found: foo
+status=1
+
+=== 5 bad rulefile syntax tests
+pmieconf: error - file parsing error.
+ line number: 4 ("/tmp/[SEQ-PID].test")
+ expected: =
+ found: moo
+status=1
+pmieconf: error - file parsing error.
+ line number: 3 ("/tmp/[SEQ-PID].test")
+ expected: type keyword
+ found: =
+status=1
+pmieconf: error - file parsing error.
+ line number: 4 ("/tmp/[SEQ-PID].test")
+ expected: attribute keyword
+ found: sometext
+status=1
+pmieconf: error - file parsing error.
+ line number: 4 ("/tmp/[SEQ-PID].test")
+ expected: attribute or ';'
+ found: end-of-file
+status=1
+pmieconf: error - no rule defined, cannot make sense of string "bloo" without one
+ line number: 4 ("/tmp/[SEQ-PID].test")
+
+status=1
diff --git a/qa/1049 b/qa/1049
new file mode 100755
index 0000000..41b9483
--- /dev/null
+++ b/qa/1049
@@ -0,0 +1,69 @@
+#! /bin/sh
+# PCP QA Test No. 1049 (formerly 552)
+# make sure that installed pmie rule files are syntactically OK.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+which pmieconf >/dev/null 2>&1 || _notrun "No pmieconf binary installed"
+
+status=1 # failure is the default!
+username=`id -u -n`
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat >$tmp.cmd <<EOF
+modify all enabled yes
+modify shping enabled no
+EOF
+
+# TODO - revisit these lists periodically to see what has changed
+#
+if [ $PCP_PLATFORM = irix ]
+then
+ # Not all metrics are available in IRIX, so skip the associated
+ # rules
+ cat >>$tmp.cmd <<EOF
+modify espping enabled no
+modify environ enabled no
+modify xvm enabled no
+EOF
+else
+ # Some metrics unavailable by default, so skip the associated rules
+ #
+ cat >>$tmp.cmd <<EOF
+modify cisco enabled no
+EOF
+fi
+
+# real QA test starts here
+echo "running pmieconf with default rules..."
+( cat $tmp.cmd; echo quit ) | pmieconf -f $tmp.eek
+echo "status=$?"
+
+echo "running pmie..."
+pmieargs="-C"
+id pcp >/dev/null 2>&1 && pmieargs="$pmieargs -U $username"
+pmie $pmieargs -c $tmp.eek -l $tmp.pmielog
+echo "status=$?"
+echo "pmie log file..."
+cat $tmp.pmielog | _filter_pmie_log
+
+echo "--- pmieconf input ---" >$seq.full
+cat $tmp.cmd >>$seq.full
+echo "--- pmie input ---" >>$seq.full
+cat $tmp.eek >>$seq.full
+echo "--- pmie output ---" >>$seq.full
+cat $tmp.pmielog >>$seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/1049.out b/qa/1049.out
new file mode 100644
index 0000000..4475c99
--- /dev/null
+++ b/qa/1049.out
@@ -0,0 +1,12 @@
+QA output created by 1049
+running pmieconf with default rules...
+status=0
+running pmie...
+status=0
+pmie log file...
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+
+Log finished DATE
diff --git a/qa/105 b/qa/105
new file mode 100755
index 0000000..a86496e
--- /dev/null
+++ b/qa/105
@@ -0,0 +1,143 @@
+#! /bin/sh
+# PCP QA Test No. 105
+# exercise the logging state compatibility matrix for pmlc ...
+# initial: all instances for a metric
+# request: all instances for the same metric
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e '/connect /{
+s/connect [0-9][0-9]*/connect PID/
+s/@.*/@HOSTNAME/
+}' \
+ -e '/Connected /{
+s/ on port [0-9][0-9]*//
+s/ pid [0-9][0-9]*//
+s/ at .*/ at HOSTNAME/
+}' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ | $PCP_AWK_PROG '
+/pmlc commands/ { skip = 1; print "[command summary deleted ...]" }
+/metric-name/ { skip = 0; next }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_logger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/AF event queue/d'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+_do_cmds()
+{
+ for ctl in mandatory advisory
+ do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ ( echo "# setup"; \
+ echo "log mandatory maybe sample.bin"; \
+ echo "# $ctl $state -> $req_ctl $req_state"; \
+ echo "log $ctl $state sample.bin"; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ ( echo "log $req_ctl $req_state sample.bin"; \
+ echo "query sample.bin"; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ # need sleeps to allow pmlogger to get a look in and
+ # to allow the pmlogger socket to be closed so the
+ # next pmlc invocation can get connected
+ done
+ done
+ done
+ done
+}
+
+x=3
+
+# real QA test starts here
+$sudo rm -f $tmp.0 $tmp.meta $tmp.index
+
+# start pmlogger with the expected number of samples plus a few more
+# to detect extra log output
+#
+_start_up_pmlogger -t 0.5sec -L -s 30 -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+pmsleep 1.1
+_do_cmds $logger_pid >$tmp.out 2>&1
+
+# this chews up any remaining samples quickly so pmlogger terminates
+#
+echo "log mandatory on 25 msec sample.long.one" \
+| pmlc -ie $logger_pid >>$tmp.out 2>&1
+
+_filter_pmlc <$tmp.out
+
+_wait_pmlogger_end $logger_pid
+cat $tmp.err $tmp.log | _filter_logger
+
+echo
+if [ -s $tmp.0 ]
+then
+ echo "Uniq filtered entries from pmdumplog ..."
+ pmdumplog $tmp \
+ | _filter_dump \
+ | sed -e 's/TIMESTAMP//' -e 's/^ *//' \
+ | LC_COLLATE=POSIX sort -u
+ pmdumplog $tmp >$seq.full 2>&1
+else
+ echo "Archive log is empty"
+fi
+
+exit
diff --git a/qa/105.out b/qa/105.out
new file mode 100644
index 0000000..a73fa7e
--- /dev/null
+++ b/qa/105.out
@@ -0,0 +1,1784 @@
+QA output created by 105
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory on once
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory maybe
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory off
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> advisory on once
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+ [400 or "bin-400"]
+ [500 or "bin-500"]
+ [600 or "bin-600"]
+ [700 or "bin-700"]
+ [800 or "bin-800"]
+ [900 or "bin-900"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> advisory off
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+ [400 or "bin-400"]
+ [500 or "bin-500"]
+ [600 or "bin-600"]
+ [700 or "bin-700"]
+ [800 or "bin-800"]
+ [900 or "bin-900"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory on once
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory maybe
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory off
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> advisory on once
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> advisory off
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory on once
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory maybe
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory off
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> advisory on once
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+ [400 or "bin-400"]
+ [500 or "bin-500"]
+ [600 or "bin-600"]
+ [700 or "bin-700"]
+ [800 or "bin-800"]
+ [900 or "bin-900"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> advisory off
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+ [400 or "bin-400"]
+ [500 or "bin-500"]
+ [600 or "bin-600"]
+ [700 or "bin-700"]
+ [800 or "bin-800"]
+ [900 or "bin-900"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory on once
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory maybe
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory off
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> advisory on once
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> advisory off
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory on once
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory maybe
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory off
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> advisory on once
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> advisory off
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on 25 msec sample.long.one
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: bin-400 [request failed]
+ instance: bin-500 [request failed]
+ instance: bin-600 [request failed]
+ instance: bin-700 [request failed]
+ instance: bin-800 [request failed]
+ instance: bin-900 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: bin-400 [request failed]
+ instance: bin-500 [request failed]
+ instance: bin-600 [request failed]
+ instance: bin-700 [request failed]
+ instance: bin-800 [request failed]
+ instance: bin-900 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: bin-400 [request failed]
+ instance: bin-500 [request failed]
+ instance: bin-600 [request failed]
+ instance: bin-700 [request failed]
+ instance: bin-800 [request failed]
+ instance: bin-900 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+ instance: bin-400 [request failed]
+ instance: bin-500 [request failed]
+ instance: bin-600 [request failed]
+ instance: bin-700 [request failed]
+ instance: bin-800 [request failed]
+ instance: bin-900 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.long.one
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+Uniq filtered entries from pmdumplog ...
+2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+29.0.10 (sample.long.one): value NUMBER
+29.0.6 (sample.bin):
+inst [100 or "bin-100"] value NUMBER
+inst [200 or "bin-200"] value NUMBER
+inst [300 or "bin-300"] value NUMBER
+inst [400 or "bin-400"] value NUMBER
+inst [500 or "bin-500"] value NUMBER
+inst [600 or "bin-600"] value NUMBER
+inst [700 or "bin-700"] value NUMBER
+inst [800 or "bin-800"] value NUMBER
+inst [900 or "bin-900"] value NUMBER
diff --git a/qa/1050 b/qa/1050
new file mode 100755
index 0000000..21b7088
--- /dev/null
+++ b/qa/1050
@@ -0,0 +1,49 @@
+#! /bin/sh
+# PCP QA Test No. 1050 (formerly 553)
+# check line length in pmieconf default rules
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmieconf >/dev/null 2>&1 || _notrun "No pmieconf binary installed"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_length_check()
+{
+ sed -e 's/ / /g' \
+ | $PCP_AWK_PROG '
+$1 == "rule:" { rule = $0 }
+ {
+ line = $0
+ if (length(line) > '$1') {
+ print rule
+ print "text is too long: "
+ print
+ }
+ }'
+}
+
+# real QA test starts here
+echo
+echo "=== Checking help text ==="
+pmieconf -f $tmp.pmie help all | _length_check 80
+echo
+echo "=== Checking predicate ==="
+# increased from 80 to 96 because of all of the crap white space to the
+# left of the real prodicate text.
+#
+pmieconf -f $tmp.pmie list all predicate | _length_check 96
+
+# success, all done
+status=0
+exit
diff --git a/qa/1050.out b/qa/1050.out
new file mode 100644
index 0000000..4436cef
--- /dev/null
+++ b/qa/1050.out
@@ -0,0 +1,5 @@
+QA output created by 1050
+
+=== Checking help text ===
+
+=== Checking predicate ===
diff --git a/qa/1051 b/qa/1051
new file mode 100755
index 0000000..780a740
--- /dev/null
+++ b/qa/1051
@@ -0,0 +1,91 @@
+#! /bin/sh
+# PCP QA Test No. 1051 (formerly 582)
+# pmieconf dumps core
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmieconf >/dev/null 2>&1 || _notrun "No pmieconf binary installed"
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix|linux|darwin|solaris)
+ ln $seq.out.$PCP_PLATFORM $seq.out || exit 1
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.conf
+// pmieconf-pmie 1 $PCP_VAR_DIR/config/pmieconf
+// 0 global delta = "1 min"
+// 0 global hosts = ""
+// 1 cpu.excess_fpe enabled = yes
+// 1 cpu.load_average enabled = yes
+// 1 cpu.syscall enabled = yes
+// 1 cpu.system enabled = yes
+// 1 cpu.util enabled = yes
+// 1 craylink.node_cb_errs enabled = yes
+// 1 craylink.router_cb_errs enabled = yes
+// 1 filesys.buffer_cache enabled = yes
+// 1 filesys.filling enabled = yes
+// 1 memory.exhausted enabled = yes
+// 1 memory.swap_low enabled = yes
+// 1 network.buffers enabled = yes
+// 1 network.tcp_drop_connects enabled = yes
+// 1 network.tcp_retransmit enabled = yes
+// 1 shping.status enabled = yes
+// end
+//
+// --- START GENERATED SECTION (do not change this section) ---
+// generated by pmieconf on: Wed May 19 10:35:42 1999
+//
+
+End-of-File
+
+_filter()
+{
+ sed \
+ -e '/not currently available/d' \
+ -e '/Unknown or illegal metric identifier/d' \
+ -e '/not in namespace/d' \
+ -e '/Unknown metric name/d'
+}
+
+$sudo rm -f core* $seq.core* $seq.full
+
+# real QA test starts here
+
+pmieconf -f $tmp.conf m global syslog_prefix '$bogus_macro_name$' 2>&1 \
+| tee $seq.full \
+| _filter
+
+echo >>$seq.full
+echo "=== configured rules ===" >>$seq.full
+cat $tmp.conf >>$seq.full
+echo >>$seq.full
+echo "=== pmie output ===" >>$seq.full
+
+_check_core
+
+if [ $status = 0 ]
+then
+ pmie -C $tmp.conf 2>&1 \
+ | tee -a $seq.full \
+ | _filter
+fi
+
+exit
diff --git a/qa/1051.out.darwin b/qa/1051.out.darwin
new file mode 100644
index 0000000..6f21cb5
--- /dev/null
+++ b/qa/1051.out.darwin
@@ -0,0 +1,17 @@
+QA output created by 1051
+Warning - failed to expand action for rule cpu.load_average
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule filesys.filling
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.collisions
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.errors
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule shping.status
+ string: "$syslog_prefix$$rule$^ $action_expand$"
diff --git a/qa/1051.out.irix b/qa/1051.out.irix
new file mode 100644
index 0000000..4865746
--- /dev/null
+++ b/qa/1051.out.irix
@@ -0,0 +1,55 @@
+QA output created by 1051
+Warning - failed to expand action for rule cpu.context_switch
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.excess_fpe
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.load_average
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.syscall
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule craylink.node_cb_errs
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule craylink.router_cb_errs
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule filesys.buffer_cache
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule filesys.filling
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule memory.exhausted
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule memory.swap_low
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule network.buffers
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule network.tcp_drop_connects
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule network.tcp_retransmit
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.context_switch
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.many_util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.some_util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.syscall
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_disk.util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.collisions
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.errors
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule rpc.bad_network
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule rpc.slow_response
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule shping.status
+ string: "$syslog_prefix$$rule$^ $action_expand$"
diff --git a/qa/1051.out.linux b/qa/1051.out.linux
new file mode 100644
index 0000000..dc9e455
--- /dev/null
+++ b/qa/1051.out.linux
@@ -0,0 +1,29 @@
+QA output created by 1051
+Warning - failed to expand action for rule cpu.context_switch
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.load_average
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule filesys.filling
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule memory.exhausted
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule memory.swap_low
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.many_util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.some_util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.collisions
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.errors
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_netif.util
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule shping.status
+ string: "$syslog_prefix$$rule$^ $action_expand$"
diff --git a/qa/1051.out.solaris b/qa/1051.out.solaris
new file mode 100644
index 0000000..1e6ec2d
--- /dev/null
+++ b/qa/1051.out.solaris
@@ -0,0 +1,21 @@
+QA output created by 1051
+Warning - failed to expand action for rule cpu.context_switch
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.excess_fpe
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.load_average
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.syscall
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule filesys.buffer_cache
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.context_switch
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.syscall
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule per_cpu.system
+ string: "$syslog_prefix$$rule$^ $action_expand$"
+Warning - failed to expand action for rule shping.status
+ string: "$syslog_prefix$$rule$^ $action_expand$"
diff --git a/qa/106 b/qa/106
new file mode 100755
index 0000000..f05003a
--- /dev/null
+++ b/qa/106
@@ -0,0 +1,143 @@
+#! /bin/sh
+# PCP QA Test No. 106
+# exercise the logging state compatibility matrix for pmlc ...
+# initial: all instances for the same metric
+# request: some instances for a metric
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e '/connect /{
+s/connect [0-9][0-9]*/connect PID/
+s/@.*/@HOSTNAME/
+}' \
+ -e '/Connected /{
+s/ on port [0-9][0-9]*//
+s/ pid [0-9][0-9]*//
+s/ at .*/ at HOSTNAME/
+}' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ | $PCP_AWK_PROG '
+/pmlc commands/ { skip = 1; print "[command summary deleted ...]" }
+/metric-name/ { skip = 0; next }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_logger()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/AF event queue/d'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
+}' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+_do_cmds()
+{
+ for ctl in mandatory advisory
+ do
+ for state in "on once" maybe off
+ do
+ [ "$ctl $state" = "advisory maybe" ] && continue
+ for req_ctl in mandatory advisory
+ do
+ for req_state in "on once" maybe off
+ do
+ [ "$req_ctl $req_state" = "advisory maybe" ] && continue
+ ( echo "# setup"; \
+ echo "log mandatory maybe sample.bin"; \
+ echo "# $ctl $state -> $req_ctl $req_state"; \
+ echo "log $ctl $state sample.bin "; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ ( echo "log $req_ctl $req_state sample.bin"'[ "bin-100", "bin-200", "bin-300"]'; \
+ echo "query sample.bin"; \
+ ) | pmlc -ie $1
+ pmsleep 0.5
+ # need sleeps to allow pmlogger to get a look in and
+ # to allow the pmlogger socket to be closed so the
+ # next pmlc invocation can get connected
+ done
+ done
+ done
+ done
+}
+
+x=3
+
+# real QA test starts here
+$sudo rm -f $tmp.0 $tmp.meta $tmp.index
+
+# start pmlogger with the expected number of samples plus a few more
+# to detect extra log output
+#
+_start_up_pmlogger -t 0.5sec -L -s 30 -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+pmsleep 1.1
+_do_cmds $logger_pid >$tmp.out 2>&1
+
+# this chews up any remaining samples quickly so pmlogger terminates
+#
+echo "log mandatory on 25 msec sample.long.one" \
+| pmlc -ie $logger_pid >>$tmp.out 2>&1
+
+_filter_pmlc <$tmp.out
+
+_wait_pmlogger_end $logger_pid
+cat $tmp.err $tmp.log | _filter_logger
+
+echo
+if [ -s $tmp.0 ]
+then
+ echo "Uniq filtered entries from pmdumplog ..."
+ pmdumplog $tmp \
+ | _filter_dump \
+ | sed -e 's/TIMESTAMP//' -e 's/^ *//' \
+ | LC_COLLATE=POSIX sort -u
+ pmdumplog $tmp >$seq.full 2>&1
+else
+ echo "Archive log is empty"
+fi
+
+exit
diff --git a/qa/106.out b/qa/106.out
new file mode 100644
index 0000000..e8bbb34
--- /dev/null
+++ b/qa/106.out
@@ -0,0 +1,1652 @@
+QA output created by 106
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory on once
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory maybe
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> mandatory off
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> advisory on once
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory on once -> advisory off
+pmlc> log mandatory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ mand on once [400 or "bin-400"]
+ mand on once [500 or "bin-500"]
+ mand on once [600 or "bin-600"]
+ mand on once [700 or "bin-700"]
+ mand on once [800 or "bin-800"]
+ mand on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory on once
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory maybe
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> mandatory off
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> advisory on once
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory maybe -> advisory off
+pmlc> log mandatory maybe sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory on once
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory maybe
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> mandatory off
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> advisory on once
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # mandatory off -> advisory off
+pmlc> log mandatory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ mand off [400 or "bin-400"]
+ mand off [500 or "bin-500"]
+ mand off [600 or "bin-600"]
+ mand off [700 or "bin-700"]
+ mand off [800 or "bin-800"]
+ mand off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory on once
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory maybe
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> mandatory off
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> advisory on once
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory on once -> advisory off
+pmlc> log advisory on once sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+Warning: unable to change logging state for:
+sample.bin instance(s):
+ [100 or "bin-100"]
+ [200 or "bin-200"]
+ [300 or "bin-300"]
+
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv on once [400 or "bin-400"]
+ adv on once [500 or "bin-500"]
+ adv on once [600 or "bin-600"]
+ adv on once [700 or "bin-700"]
+ adv on once [800 or "bin-800"]
+ adv on once [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory on once
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ mand on once [100 or "bin-100"]
+ mand on once [200 or "bin-200"]
+ mand on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory maybe
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory maybe sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> mandatory off
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ mand off [100 or "bin-100"]
+ mand off [200 or "bin-200"]
+ mand off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> advisory on once
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory on once sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv on once [100 or "bin-100"]
+ adv on once [200 or "bin-200"]
+ adv on once [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> # setup
+pmlc> log mandatory maybe sample.bin
+pmlc> # advisory off -> advisory off
+pmlc> log advisory off sample.bin
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log advisory off sample.bin[ "bin-100", "bin-200", "bin-300"]
+pmlc> query sample.bin
+sample.bin
+ adv off [100 or "bin-100"]
+ adv off [200 or "bin-200"]
+ adv off [300 or "bin-300"]
+ adv off [400 or "bin-400"]
+ adv off [500 or "bin-500"]
+ adv off [600 or "bin-600"]
+ adv off [700 or "bin-700"]
+ adv off [800 or "bin-800"]
+ adv off [900 or "bin-900"]
+
+pmlc>
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+[command summary deleted ...]
+
+Connected to pmlogger at HOSTNAME
+pmlc> log mandatory on 25 msec sample.long.one
+pmlc>
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: bin-100 [request failed]
+ instance: bin-200 [request failed]
+ instance: bin-300 [request failed]
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: mandatory off
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory on once
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+
+DATE
+pmlc request from HOST: mandatory maybe
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+ instance: #400
+ instance: #500
+ instance: #600
+ instance: #700
+ instance: #800
+ instance: #900
+
+DATE
+pmlc request from HOST: advisory off
+ metric: sample.bin
+ instance: #100
+ instance: #200
+ instance: #300
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.long.one
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+Uniq filtered entries from pmdumplog ...
+2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+29.0.10 (sample.long.one): value NUMBER
+29.0.6 (sample.bin):
+inst [100 or "bin-100"] value NUMBER
+inst [200 or "bin-200"] value NUMBER
+inst [300 or "bin-300"] value NUMBER
+inst [400 or "bin-400"] value NUMBER
+inst [500 or "bin-500"] value NUMBER
+inst [600 or "bin-600"] value NUMBER
+inst [700 or "bin-700"] value NUMBER
+inst [800 or "bin-800"] value NUMBER
+inst [900 or "bin-900"] value NUMBER
diff --git a/qa/107 b/qa/107
new file mode 100755
index 0000000..43d487d
--- /dev/null
+++ b/qa/107
@@ -0,0 +1,68 @@
+#! /bin/sh
+# PCP QA Test No. 107
+# Check pmlc "query" command against the primary pmlogger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter()
+{
+ # Note
+ # ... already using all instances ... line comes from dynamic PMNS
+ # support where sample.secret.foo.bar.max.redirect and
+ # sampledso.secret.foo.bar.max.redirect are aliases (i.e. have the
+ # same PMID) for pmcd.agent.status ... so the Warning is expected
+ #
+ echo "Checking for errors in $1 ..."
+ sed <$1 \
+ -e '/Warning: already using all instances for pmcd.agent.status/d' \
+ -e '/^$/d' \
+ -e '/^disk[^:]*$/d' \
+ -e '/^network[^:]*$/d' \
+ -e '/^kernel[^:]*$/d' \
+ -e '/^pmcd[^:]*$/d' \
+ -e '/^sample[^:]*$/d' \
+ -e '/^sampledso[^:]*$/d' \
+ -e '/^ mand on /d' \
+ -e '/^ mand off /d' \
+ -e '/^ adv off /d' \
+ -e '/^ adv on /d' \
+ -e '/^ (no instances)/d' \
+ -e '=' \
+ -e 's/^/ /' \
+ | sed -e '/^[0-9][0-9]*$/s//line &:/'
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+pmlc <<End-of-File >$seq.full 2>&1
+connect primary
+query { disk network kernel pmcd sample sampledso }
+End-of-File
+
+$PCP_ECHO_PROG $PCP_ECHO_N "Expect at least one metric with logging state \"on\" ...""$PCP_ECHO_C"
+if egrep '^ (mand on )|(adv on )' $seq.full >/dev/null
+then
+ echo " PASS"
+else
+ echo " FAIL"
+fi
+
+$PCP_ECHO_PROG $PCP_ECHO_N "Expect at least 250 metrics to be reported ...""$PCP_ECHO_C"
+num=`egrep '^(disk|network|kernel|pmcd|sample|sampledso)\.' $seq.full | wc -l | sed -e 's/ //g'`
+if [ $num -ge 250 ]
+then
+ echo " PASS"
+else
+ echo " FAIL (found $num)"
+fi
+
+_filter $seq.full
diff --git a/qa/107.out b/qa/107.out
new file mode 100644
index 0000000..320d798
--- /dev/null
+++ b/qa/107.out
@@ -0,0 +1,4 @@
+QA output created by 107
+Expect at least one metric with logging state "on" ... PASS
+Expect at least 250 metrics to be reported ... PASS
+Checking for errors in 107.full ...
diff --git a/qa/108 b/qa/108
new file mode 100755
index 0000000..5c35004
--- /dev/null
+++ b/qa/108
@@ -0,0 +1,109 @@
+#! /bin/sh
+# PCP QA Test No. 108
+# pmNameInDom and bad inst number .. core dump for pmda?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+_filter()
+{
+ cat >$tmp.in
+ sed <$tmp.in \
+ -e 's/value [0-9][0-9]*/value NUMBER/' >$tmp.tmp
+ if [ `egrep 'red|green|blue' $tmp.tmp | wc -l | sed -e 's/ *//g'` -ge 1 ]
+ then
+ egrep -v 'red|green|blue' $tmp.tmp
+ echo "... at least one value"
+ else
+ cat $tmp.in
+ echo "... does not look right"
+ fi
+}
+
+#
+# just like the kill builtin, just do it quietly
+_silent_kill()
+{
+ if [ $# -eq 1 ]
+ then
+ (( $signal $1 )&) >/dev/null 2>&1
+ else
+ echo "_silent_kill: needs 1 arg, not $#"
+ fi
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.config
+log mandatory on 1 sec {
+ sample.bin [ "x555" "x666" ]
+ sample.bin [ 555 666 ]
+ sample.bin [ "x777" "x888" ]
+ sample.bin [ 777 888 ]
+}
+End-of-File
+rm -f $tmp.0 $tmp.meta $tmp.index
+pmlogger -c $tmp.config -s 1 $tmp >$tmp.tmp 2>&1 &
+killer=$!
+sleep 2
+_silent_kill $killer
+
+echo "check sample pmda is still alive ..."
+pminfo -f sample.bin
+pminfo -v sample \
+| sed \
+ -e '/sample.dynamic/d' \
+ -e '/sample.darkness/d' \
+ -e '/sample.secret/d' \
+ -e '/sample.sysinfo/d'
+echo ""
+
+cat <<End-of-File >$tmp.config
+log mandatory on 1 sec {
+ sample.bin [ 100 ]
+ simple.color [ 0 2 ]
+ sample.bin [ 200 ]
+}
+End-of-File
+rm -f $tmp.0 $tmp.meta $tmp.index
+pmlogger -c $tmp.config -s 1 $tmp >$tmp.tmp 2>&1 &
+killer=$!
+sleep 2
+_silent_kill $killer
+
+echo "check simple pmda is still alive ..."
+pminfo -f simple.color | _filter
+pminfo -v simple
+echo ""
+
+cat <<End-of-File >$tmp.config
+log mandatory on 1 sec {
+ sampledso.bin [ 777 888 ]
+}
+End-of-File
+rm -f $tmp.0 $tmp.meta $tmp.index
+pmlogger -c $tmp.config -s 1 $tmp >$tmp.tmp 2>&1 &
+killer=$!
+sleep 2
+_silent_kill $killer 2>&1 >/dev/null
+
+echo "check sampledso pmda is still alive ..."
+pminfo -f sampledso.bin
+pminfo -v sampledso \
+| sed \
+ -e '/sampledso.dynamic/d' \
+ -e '/sampledso.darkness/d' \
+ -e '/sampledso.secret/d' \
+ -e '/sampledso.sysinfo/d'
+echo ""
+
+exit 0
diff --git a/qa/108.out b/qa/108.out
new file mode 100644
index 0000000..c041f74
--- /dev/null
+++ b/qa/108.out
@@ -0,0 +1,60 @@
+QA output created by 108
+check sample pmda is still alive ...
+
+sample.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
+sample.event.type: No value(s) available
+sample.event.param_32: No value(s) available
+sample.event.param_u32: No value(s) available
+sample.event.param_64: No value(s) available
+sample.event.param_u64: No value(s) available
+sample.event.param_float: No value(s) available
+sample.event.param_double: No value(s) available
+sample.event.param_string: No value(s) available
+sample.event.param_aggregate: No value(s) available
+
+check simple pmda is still alive ...
+
+simple.color
+... at least one value
+
+check sampledso pmda is still alive ...
+
+sampledso.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+sampledso.noinst: No value(s) available
+sampledso.needprofile: Explicit instance identifier(s) required
+sampledso.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sampledso.bad.nosupport: Not Supported
+sampledso.bad.novalues: No value(s) available
+sampledso.event.type: No value(s) available
+sampledso.event.param_32: No value(s) available
+sampledso.event.param_u32: No value(s) available
+sampledso.event.param_64: No value(s) available
+sampledso.event.param_u64: No value(s) available
+sampledso.event.param_float: No value(s) available
+sampledso.event.param_double: No value(s) available
+sampledso.event.param_string: No value(s) available
+sampledso.event.param_aggregate: No value(s) available
+
diff --git a/qa/109 b/qa/109
new file mode 100755
index 0000000..836d727
--- /dev/null
+++ b/qa/109
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 109
+# check out pmclient
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/^Host: .*/Host: .../' \
+ -e 's/ *[0-9][0-9]*\.[0-9][0-9]*/ FLOAT/g' \
+ -e 's/ *[0-9][0-9]*/ INTEGER/g'
+}
+
+# real QA test starts here
+
+ncpu=`pmprobe -v hinv.ncpu 2>&1 \
+| $PCP_AWK_PROG '
+NF == 3 && $2 == 1 { print $3; exit }
+ { print "0"; exit }'`
+
+#
+# output is sensitive to SP/MP ... so do the one that is real, and fake
+# the other
+
+if [ "$ncpu" -eq 1 ]
+then
+ pmclient -t 1 -s 3 | _filter
+ echo "..."
+ # fake MP output
+ cat <<End-of-File
+Host: ...
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS INTEGER Min INTEGER Min
+ FLOAT INTEGER FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT INTEGER FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT INTEGER FLOAT FLOAT INTEGER FLOAT FLOAT
+End-of-File
+else
+ # fake SP output
+ cat <<End-of-File
+Host: ...
+ CPU Free Mem Disk Load Average
+ Util (Mbytes) IOPS INTEGER Min INTEGER Min
+ FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT FLOAT INTEGER FLOAT FLOAT
+End-of-File
+ echo "..."
+ pmclient -t 1 -s 3 | _filter
+fi
diff --git a/qa/109.out b/qa/109.out
new file mode 100644
index 0000000..27af9bd
--- /dev/null
+++ b/qa/109.out
@@ -0,0 +1,14 @@
+QA output created by 109
+Host: ...
+ CPU Free Mem Disk Load Average
+ Util (Mbytes) IOPS INTEGER Min INTEGER Min
+ FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT FLOAT INTEGER FLOAT FLOAT
+...
+Host: ...
+ CPU Busy Busy Free Mem Disk Load Average
+ Util CPU Util (Mbytes) IOPS INTEGER Min INTEGER Min
+ FLOAT INTEGER FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT INTEGER FLOAT FLOAT INTEGER FLOAT FLOAT
+ FLOAT INTEGER FLOAT FLOAT INTEGER FLOAT FLOAT
diff --git a/qa/110 b/qa/110
new file mode 100755
index 0000000..8a0cf7c
--- /dev/null
+++ b/qa/110
@@ -0,0 +1,227 @@
+#! /bin/sh
+# PCP QA Test No. 110
+# check out simple PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1
+
+PMDA_LOG_PATH=`echo $PCP_PMCDLOG_PATH | sed -e 's/pmcd.log/simple.log/'`
+
+_cleanup()
+{
+ [ -f $tmp.conf.bak ] && $sudo cp $tmp.conf.bak $home/$iam/$iam.conf
+ if diff $tmp.pmcd.conf $PCP_PMCDCONF_PATH > /dev/null 2>&1
+ then
+ :
+ else
+
+# do a default install which ensures the pmns and any views are installed
+
+ $sudo ./Install < /dev/null > /dev/null 2>&1
+
+# PMDA may have been installed differently to default. As everything is
+# installed we can use the old pmcd.conf file to restore state.
+
+ if diff $tmp.pmcd.conf $PCP_PMCDCONF_PATH > /dev/null 2>&1
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd
+ fi
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+_failed()
+{
+ echo
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+ echo
+ echo "... and the tail of the pmcd log ..."
+ tail -20 $PCP_PMCDLOG_PATH
+ echo
+ echo "...and the PMDA log ..."
+ cat $PMDA_LOG_PATH
+}
+
+_filter()
+{
+ _filter_pmda_install | \
+ sed \
+ -e 's/ or perl//' \
+ -e 's/ or python//' \
+ -e "s;$tmp;TMP;" \
+ -e "s/$port1/PORT1/" \
+ -e "s/$port2/PORT2/"
+}
+
+_full()
+{
+ echo "--- pmcd.conf ---" >>$here/$seq.full
+ cat $PCP_PMCDCONF_PATH >>$here/$seq.full
+ echo "--- pmcd.log ---" >>$here/$seq.full
+ cat $PCP_PMCDLOG_PATH >>$here/$seq.full
+ echo "--- simple.log ---" >>$here/$seq.full
+ if [ -f $PMDA_LOG_PATH ]
+ then
+ cat $PMDA_LOG_PATH >>$here/$seq.full
+ else
+ echo "$PMDA_LOG_PATH: file not found" >>$here/$seq.full
+ fi
+ echo >>$here/$seq.full
+}
+
+rm -f $seq.full
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=simple
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+if $sudo make clobber >$tmp.out 2>&1
+then
+ :
+else
+ cat $tmp.out
+ echo "Arrgh, make clobber failed"
+ exit
+fi
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+echo
+echo "=== pipe daemon agent ==="
+echo "=== pipe daemon agent ===" >>$here/$seq.full
+$sudo ./Remove >$tmp.out 2>&1
+$sudo rm -f $PMDA_LOG_PATH
+echo 'both
+daemon
+pipe' | $sudo ./Install -e >>$tmp.out 2>&1
+_full
+
+_filter <$tmp.out
+
+if pminfo -v simple
+then
+ :
+else
+ _failed
+fi
+
+echo
+echo "=== Unix socket daemon agent ==="
+echo "=== Unix socket daemon agent ===" >>$here/$seq.full
+$sudo ./Remove >$tmp.out 2>&1
+echo 'both
+daemon
+socket
+Unix
+'"$tmp.fifo-1" | $sudo ./Install -e >>$tmp.out 2>&1
+$sudo rm -f $PMDA_LOG_PATH
+echo 'both
+daemon
+socket
+Unix
+'"$tmp.fifo-2" | $sudo ./Install -e >>$tmp.out 2>&1
+_full
+
+_filter <$tmp.out
+
+if pminfo -v simple
+then
+ :
+else
+ _failed
+fi
+
+echo
+echo "=== Internet socket daemon agent ==="
+echo "=== Internet socket daemon agent ===" >>$here/$seq.full
+$sudo ./Remove >$tmp.out 2>&1
+
+# pick a tcp port that is not in use
+#
+port1=`_get_port tcp 5650 5699`
+if [ -z "$port1" ]
+then
+ echo "Arrgh ... no free TCP port in the range 5650 ... 5699"
+ exit 1
+fi
+
+echo 'both
+daemon
+socket
+Internet
+'$port1 | $sudo ./Install -e >>$tmp.out 2>&1
+
+# use next port this time
+port2=`expr $port1 + 1`
+
+$sudo rm -f $PMDA_LOG_PATH
+echo 'both
+daemon
+socket
+Internet
+'$port2 | $sudo ./Install -e >>$tmp.out 2>&1
+_full
+
+_filter <$tmp.out
+
+if pminfo -v simple
+then
+ :
+else
+ _failed
+fi
+
+echo
+echo "=== dso agent ==="
+echo "=== dso agent ===" >>$here/$seq.full
+$sudo ./Remove >$tmp.out 2>&1
+echo 'both
+dso' | $sudo ./Install -e >>$tmp.out 2>&1
+$sudo rm -f $PMDA_LOG_PATH
+echo 'both
+dso' | $sudo ./Install -e >>$tmp.out 2>&1
+_full
+
+_filter <$tmp.out
+
+if pminfo -v simple
+then
+ :
+else
+ _failed
+fi
+
+$sudo ./Remove >$tmp.out 2>&1
+_filter <$tmp.out
+
+status=0
+exit
diff --git a/qa/110.out b/qa/110.out
new file mode 100644
index 0000000..9825e4f
--- /dev/null
+++ b/qa/110.out
@@ -0,0 +1,159 @@
+QA output created by 110
+
+=== pipe daemon agent ===
+Culling the Performance Metrics Name Space ...
+simple ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] daemon
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] pipe
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+=== Unix socket daemon agent ===
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] daemon
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Unix
+Unix FIFO name? TMP.fifo-1
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] daemon
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Unix
+Unix FIFO name? TMP.fifo-2
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+=== Internet socket daemon agent ===
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] daemon
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Internet
+Internet port number or service name? [2078] PORT1
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] daemon
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Internet
+Internet port number or service name? [2078] PORT2
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+=== dso agent ===
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] dso
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] dso
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
diff --git a/qa/1108 b/qa/1108
new file mode 100755
index 0000000..c551afd
--- /dev/null
+++ b/qa/1108
@@ -0,0 +1,100 @@
+#! /bin/sh
+# PCP QA Test No. 1108 (formerly 830)
+# pv:821339 sed gives "Too many commands" in cron.pmdaily script
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ test -f $PCP_LOG_DIR/NOTICES.orig && \
+ $sudo mv $PCP_LOG_DIR/NOTICES.orig $PCP_LOG_DIR/NOTICES
+ $sudo rm -f $tmp.*
+}
+
+status=0 # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+_filter()
+{
+ sed \
+ -e '/^+ cd /s/cd .*/cd .../' \
+ -e '/^+ mv /s/mv .*/mv .../' \
+ -e '/^+ pmlogger /s/pmlogger .*/pmlogger .../' \
+ -e '/^+ pmnewlog /s/pmnewlog .*/pmnewlog .../' \
+ -e '/^+ mkaf /s/mkaf .*/mkaf .../' \
+ -e '/^+ kill/{
+s/INT //
+s/-s USR1 //
+s/ [0-9][0-9]*/ ... PID/
+}' \
+ -e '/^+ rm /d' \
+ -e '/^+ pmlogger_merge /d' \
+ -e '/^[12][0-9][0-9][0-9][01][0-9][0-3][0-9]\.[0-9][0-9]\.[0-9][0-9]/d' \
+ -e '/Warning: no write access/d' \
+ -e 's/ *$//' \
+ | tr -s ' '
+}
+
+# Avoid conflict with normal management of the summary logs ...
+# this is lifted from pmlogger_daily
+
+# each summarized log is named yyyymmdd using yesterday's date
+# previous day's logs are named yymmdd (old format) or
+# yyyymmdd (new year 2000 format)
+#
+SUMMARY_LOGNAME=`pmdate -1d %Y%m%d`
+echo "SUMMARY_LOGNAME=$SUMMARY_LOGNAME" >>$seq.full
+echo "Files to be removed before we start ..." >>$seq.full
+ls -l $PCP_LOG_DIR/pmlogger/*/$SUMMARY_LOGNAME.* >>$seq.full 2>&1
+$sudo rm -f $PCP_LOG_DIR/pmlogger/*/$SUMMARY_LOGNAME.*
+
+# create a temporary control file with well-known contents
+$sudo rm -f $tmp.control
+echo '$version=1.1' >> $tmp.control
+echo 'LOCALHOSTNAME y n PCP_LOG_DIR/pmlogger/LOCALHOSTNAME -c config.default' >> $tmp.control
+
+# make sure pmlogger_daily gets a timestamp that is at least
+# a minute after the previous primary logger was started to avoid
+# the collision on the timestamp and the extra 3 mv's needed to
+# rename the archive files from <timestamp> to <timestamp>-00
+#
+current=`pminfo -f pmcd.pmlogger.archive | sed -n -e '/"primary"/{
+s;.*/;;
+s/"//
+p
+}'`
+if [ -z "$current" ]
+then
+ echo "Arrgh ... cannot get current primary pmlogger timestamp from"
+ pminfo -f pmcd.pmlogger.archive
+ status=1
+ exit
+fi
+echo "current=$current" >>$seq.full
+sec=0
+while [ $sec -lt 60 ]
+do
+ now=`pmdate %Y%m%d.%H.%M`
+ [ "$now" != "$current" ] && break
+ echo "now=$now" >>$seq.full
+ sleep 1
+ sec=`expr $sec + 1`
+done
+echo "done, now=$now" >>$seq.full
+
+# real QA test starts here
+test -f $PCP_LOG_DIR/NOTICES && \
+ $sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.orig
+$sudo $PCP_BINADM_DIR/pmlogger_daily -o -k 550 -N -c $tmp.control 2>&1 \
+| tee -a $seq.full \
+| _filter
diff --git a/qa/1108.out b/qa/1108.out
new file mode 100644
index 0000000..576d61a
--- /dev/null
+++ b/qa/1108.out
@@ -0,0 +1,12 @@
+QA output created by 1108
+# $version=1.1
++ export version; version=1.1
++ cd ...
++ pmnewlog ...
++ kill ... PID
++ cd ...
++ mv ...
++ pmlogger ...
++ ... assume pid is 12345
++ echo 'connect 12345' | pmlc ...
++ mkaf ...
diff --git a/qa/111 b/qa/111
new file mode 100755
index 0000000..2f1d3a8
--- /dev/null
+++ b/qa/111
@@ -0,0 +1,41 @@
+#! /bin/sh
+# PCP QA Test No. 111
+# time conversion error for some proc metrics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# real QA test starts here
+pmcd_pid=`grep "pmcd: PID" $PCP_PMCDLOG_PATH | $PCP_AWK_PROG '{ print $4 }'`
+
+for metric in \
+ proc.psinfo.start proc.psinfo.time proc.pstatus.utime proc.pstatus.stime \
+ proc.pstatus.cutime proc.pstatus.cstime proc.psusage.tstamp \
+ proc.psusage.starttime proc.psusage.utime proc.psusage.stime
+do
+ pmval -t 0.025 -s 500 -i $pmcd_pid $metric >$tmp.$metric 2>&1 &
+done
+
+wait
+
+for metric in \
+ proc.psinfo.start proc.psinfo.time proc.pstatus.utime proc.pstatus.stime \
+ proc.pstatus.cutime proc.pstatus.cstime proc.psusage.tstamp \
+ proc.psusage.starttime proc.psusage.utime proc.psusage.stime
+do
+ echo $metric
+ grep '.-' $tmp.$metric \
+ | sed \
+ -e '/[0-9]E-[0-9]/d' \
+ -e '/Unknown metric/d'
+done
diff --git a/qa/111.out b/qa/111.out
new file mode 100644
index 0000000..e98d13a
--- /dev/null
+++ b/qa/111.out
@@ -0,0 +1,11 @@
+QA output created by 111
+proc.psinfo.start
+proc.psinfo.time
+proc.pstatus.utime
+proc.pstatus.stime
+proc.pstatus.cutime
+proc.pstatus.cstime
+proc.psusage.tstamp
+proc.psusage.starttime
+proc.psusage.utime
+proc.psusage.stime
diff --git a/qa/112 b/qa/112
new file mode 100755
index 0000000..038e3f7
--- /dev/null
+++ b/qa/112
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 112
+# new PMNS exercises
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmcd_log \
+ | _filter_torture_api
+}
+
+_cmp()
+{
+ echo "differences relative to 031.out ..."
+
+ diff $1 031.out.${PCP_PLATFORM}
+}
+
+_failok()
+{
+ sed <$1 \
+ -e 's/pcp\[[0-9]*]/pcp[PID]/' \
+ -e "s;$tmp;TEMPFILE;g"
+}
+
+
+# real QA test starts here
+rm -f $tmp.*
+
+# test out compilation stat values
+# use a fixed namespace
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -n src/root_pmns $tmp.bin.fixed
+fi
+
+cp $PCP_VAR_DIR/pmns/root $tmp.ascii
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -n $tmp.ascii $tmp.bin >/dev/null 2>&1
+fi
+
+echo "=== pmapi v2, ascii format pmns ==="
+src/torture_api -v -n $tmp.ascii 2>&1 | _filter >$tmp.out
+_cmp $tmp.out
+
+if [ $PCP_VER -lt 3600 ]
+then
+ echo ""
+ echo "=== pmapi v2, binary format pmns ==="
+ src/torture_api -v -n $tmp.bin 2>&1 | _filter >$tmp.out
+ _cmp $tmp.out
+fi
+
+status=0
+exit
diff --git a/qa/112.out.1 b/qa/112.out.1
new file mode 100644
index 0000000..b43fe69
--- /dev/null
+++ b/qa/112.out.1
@@ -0,0 +1,15 @@
+QA output created by 112
+Compiled PMNS contains
+ 307 hash table entries
+ 1300 leaf nodes
+ 212 non-leaf nodes
+ 11390 bytes of symbol table
+=== pmapi v2, ascii format pmns ===
+differences relative to 031.out ...
+0a1
+> QA output created by 031
+
+=== pmapi v2, binary format pmns ===
+differences relative to 031.out ...
+0a1
+> QA output created by 031
diff --git a/qa/112.out.2 b/qa/112.out.2
new file mode 100644
index 0000000..9c2233f
--- /dev/null
+++ b/qa/112.out.2
@@ -0,0 +1,5 @@
+QA output created by 112
+=== pmapi v2, ascii format pmns ===
+differences relative to 031.out ...
+0a1
+> QA output created by 031
diff --git a/qa/113 b/qa/113
new file mode 100755
index 0000000..b7fbbb0
--- /dev/null
+++ b/qa/113
@@ -0,0 +1,318 @@
+#! /bin/sh
+# PCP QA Test No. 113
+# check filesys metrics against df and mount
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ $PCP_PLATFORM = solaris ]
+then
+ _notrun No filesys metrics for Solaris
+elif [ $PCP_PLATFORM = linux ]
+then
+ loopcount=`$sudo losetup -a | wc -l`
+ [ $loopcount -eq 0 ] || _notrun "System has active loop devices, bailing"
+fi
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+filesystems=`mount \
+ | sed -e 's/[(,)]//g' \
+ | $PCP_AWK_PROG '
+$4 == "type" && ($5 == "efs" || $5 == "xfs" || $5 == "ext2" || $5 == "ext3" || $5 == "ext4") { print $1 }
+$4 == "hfs" { print $1 }'`
+
+if [ -z "$filesystems" ]
+then
+ echo "Botch: cannot extract filesystems list from mount(1) output ..."
+ mount
+ sts=1
+ exit
+fi
+
+rootdev=`df / | $PCP_AWK_PROG 'NR == 2 { print $1 }'`
+echo "rootdev=$rootdev" >>$seq.full
+if [ -z "$rootdev" ]
+then
+ echo "Arrgh, cannot get device for root fs from df(1) ..."
+ df /
+ exit
+fi
+if [ -L "$rootdev" ]
+then
+ if which realpath >/dev/null 2>&1
+ then
+ symroot=`realpath $rootdev`
+ else
+ symroot=`ls -l $rootdev | sed -e 's/.*-> //'`
+ if [ -z "$symroot" ]
+ then
+ echo "Arrgh, cannot get symlink for device for root fs ..."
+ ls -l $rootdev
+ exit
+ fi
+ case "$symroot"
+ in
+ ../*)
+ # handle case like ...
+ # /dev/disk/by-uuid/467793a8-5191-4940-90fb-38a6f28b035d -> ../../sda1
+ dir=`dirname $rootdev`
+ while true
+ do
+ case "$symroot"
+ in
+ ../*)
+ dir=`echo $dir | sed -e 's@/[^/]*$@@'`
+ symroot=`echo $symroot | sed -e 's@\.\./\([^.]\)@\1@'`
+ ;;
+ *)
+ symroot=${dir}/${symroot}
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+ fi
+ echo "symroot=$symroot" >>$seq.full
+ rootdev=$symroot
+fi
+
+# disk name aliases are a real pain ...
+#
+mount \
+| sed \
+ -e '/ type proc/d' \
+ -e '/ type sysfs/d' \
+ -e '/ type devpts/d' \
+ -e '/ type devtmpfs/d' \
+ -e '/ type tmpfs/d' \
+ -e '/ type debugfs/d' \
+ -e '/ type autofs/d' \
+ -e '/ type securityfs/d' \
+ -e '/ type selinuxfs/d' \
+ -e '/ type rpc_pipefs/d' \
+ -e '/ type fusectl/d' \
+ -e '/ type binfmt_misc/d' \
+ -e '/ type fuse.gvfs-fuse-daemon/d' \
+ -e '/ type cgroup/d' \
+ -e '/ type hugetlbfs/d' \
+ -e '/ type mqueue/d' \
+ -e '/ type rootfs/d' \
+ -e 's/[ ].*//' \
+| while read dev
+do
+ [ ! -L $dev ] && continue
+ [ "$dev" = "/dev/root" ] && continue
+ echo "mount device: $dev" >>$seq.full
+ if which realpathx >/dev/null 2>&1
+ then
+ sym=`realpath $dev`
+ else
+ sym=`ls -l $dev | sed -e 's/.*-> //'`
+ if [ -z "$sym" ]
+ then
+ echo "Arrgh, cannot get symlink for device for fs ..."
+ ls -l $dev
+ exit
+ fi
+ case "$sym"
+ in
+ ../*)
+ # handle case like ...
+ # /dev/disk/by-uuid/467793a8-5191-4940-90fb-38a6f28b035d -> ../../sda1
+ dir=`dirname $dev`
+ while true
+ do
+ case "$sym"
+ in
+ ../*)
+ dir=`echo $dir | sed -e 's@/[^/]*$@@'`
+ sym=`echo $sym | sed -e 's@\.\./\([^.]\)@\1@'`
+ ;;
+ *)
+ sym=${dir}/${sym}
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+ fi
+ echo "sym=$sym" >>$seq.full
+ link=$sym
+ [ "$link" != "$dev" ] && echo "s;$dev;$link;" >>$tmp.map
+done
+
+if [ -f $tmp.map ]
+then
+ # need longest prefix replacements first ... ~ should sort "high"
+ #
+ sed -e 's/;/~/' $tmp.map \
+ | LC_COLLATE=POSIX sort \
+ | sed -e 's/~/;/' >$tmp.tmp
+ mv $tmp.tmp $tmp.map
+else
+ echo "s;$rootdev;/dev/root;" >>$tmp.map
+fi
+
+if grep "s;$rootdev;" $tmp.map >/dev/null
+then
+ # already have a mapping for this one
+ :
+else
+ echo "s;$rootdev;/dev/root;" >>$tmp.map
+fi
+
+echo "-- map --" >>$seq.full
+cat $tmp.map >>$seq.full
+
+numval=`pmprobe -v filesys.avail 2>/dev/null | $PCP_AWK_PROG '{print $2}'`
+if [ ! -z "$numval" -a "$numval" -gt 0 ]
+then
+ # better match for df "free" if available on Linux
+ #
+ free=filesys.avail
+else
+ free=filesys.free
+fi
+
+echo "-- pcp --" >>$seq.full
+pminfo -f filesys >>$seq.full
+
+pminfo -f \
+ filesys.capacity \
+ filesys.used \
+ $free \
+ filesys.maxfiles \
+ filesys.usedfiles \
+ filesys.freefiles \
+ filesys.mountdir \
+ filesys.full \
+| sed \
+ -e '/"devfs"/d' \
+ -e '/"map -hosts"/d' \
+ -e '/"map auto_home"/d' \
+ -e "s/$free/filesys.free/" \
+ -e 's/\[//g' -e 's/\]//g' \
+ -e 's/\"//g' \
+| $PCP_AWK_PROG '
+/^[ \t]*$/ {next}
+/^filesys/ {metric=$1}
+$1 == "inst" { printf "%s_%s %s\n", metric, $4, $6 }' \
+| LC_COLLATE=POSIX sort > $tmp.1
+
+echo "-- pcp-filtered-1 --" >>$seq.full
+cat $tmp.1 >>$seq.full
+
+# map symbolic link names and /dev/root for pcp output
+#
+sed -f $tmp.map $tmp.1 | LC_COLLATE=POSIX sort >$tmp.tmp
+mv $tmp.tmp $tmp.1
+
+echo "-- pcp-filtered-2 --" >>$seq.full
+cat $tmp.1 >>$seq.full
+
+(for f in $filesystems
+do
+ if [ $PCP_PLATFORM = irix ]
+ then
+ df -lki $f \
+ | $PCP_AWK_PROG '
+/^Filesystem/ {next}
+ {
+ dev="'$f'"
+ printf "%s_%s %d\n", "filesys.capacity", dev, $3
+ printf "%s_%s %d\n", "filesys.used", dev, $4
+ printf "%s_%s %d\n", "filesys.free", dev, $5
+ printf "%s_%s %d\n", "filesys.maxfiles", dev, $7+$8
+ printf "%s_%s %d\n", "filesys.usedfiles", dev, $7
+ printf "%s_%s %d\n", "filesys.freefiles", dev, $8
+ printf "%s_%s %d\n", "filesys.mountdir", dev, $10
+ }'
+ elif [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = darwin ]
+ then
+ $sudo df -lk \
+ | grep $f \
+ | $PCP_AWK_PROG '
+BEGIN { dev="'$f'" }
+NF == 1 { next }
+NF == 6 { printf "%s_%s %d\n", "filesys.capacity", dev, $2
+ printf "%s_%s %d\n", "filesys.used", dev, $3
+ printf "%s_%s %d\n", "filesys.free", dev, $4
+ printf "%s_%s %d\n", "filesys.mountdir", dev, $6
+ }
+NF == 5 { printf "%s_%s %d\n", "filesys.capacity", dev, $1
+ printf "%s_%s %d\n", "filesys.used", dev, $2
+ printf "%s_%s %d\n", "filesys.free", dev, $3
+ printf "%s_%s %d\n", "filesys.mountdir", dev, $5
+ }'
+ $sudo df -li \
+ | grep $f \
+ | $PCP_AWK_PROG '
+BEGIN { dev="'$f'" }
+NF == 1 { next }
+NF == 6 { printf "%s_%s %d\n", "filesys.maxfiles", dev, $2
+ printf "%s_%s %d\n", "filesys.usedfiles", dev, $3
+ printf "%s_%s %d\n", "filesys.freefiles", dev, $4
+ }
+NF == 5 { printf "%s_%s %d\n", "filesys.maxfiles", dev, $1
+ printf "%s_%s %d\n", "filesys.usedfiles", dev, $2
+ printf "%s_%s %d\n", "filesys.freefiles", dev, $3
+ }
+NF == 9 { printf "%s_%s %d\n", "filesys.maxfiles", dev, $6+$7
+ printf "%s_%s %d\n", "filesys.usedfiles", dev, $6
+ printf "%s_%s %d\n", "filesys.freefiles", dev, $7
+ }'
+ else
+ echo "Blah, what sort df magic is needed for a \"$PCP_PLATFORM\" system?" >&2
+ status=1
+ exit
+ fi
+done) | LC_COLLATE=POSIX sort > $tmp.2
+
+# map symbolic link names and /dev/root for df output
+#
+sed -f $tmp.map $tmp.2 | LC_COLLATE=POSIX sort >$tmp.tmp
+mv $tmp.tmp $tmp.2
+
+echo "-- df --" >>$seq.full
+$sudo df -li >>$seq.full 2>&1
+echo "-- df-filtered --" >>$seq.full
+cat $tmp.2 >>$seq.full
+
+LC_COLLATE=POSIX join -a2 -1 1 $tmp.1 $tmp.2 \
+| $PCP_AWK_PROG '{
+ a=$2; b=$3; d=a-b;
+ if (d<0) d = -d;
+ if (d > 5 && d>a/100) {
+ print "'$0' : Diff of more than 5 in total and 1 percent: ", $0
+ err++
+ }
+}
+END {
+ exit err
+}'
+
+status=$?
+if [ $status != 0 ]
+then
+ echo $0 =========== pcp output ==============
+ cat $tmp.1
+ echo $0 =========== df output ==============
+ cat $tmp.2
+ echo $0 exit status $status
+fi
+
+exit $status
diff --git a/qa/113.out b/qa/113.out
new file mode 100644
index 0000000..5111294
--- /dev/null
+++ b/qa/113.out
@@ -0,0 +1 @@
+QA output created by 113
diff --git a/qa/114 b/qa/114
new file mode 100755
index 0000000..841957b
--- /dev/null
+++ b/qa/114
@@ -0,0 +1,51 @@
+#! /bin/sh
+# PCP QA Test No. 114
+# Checks proc.psinfo.wchan_s matches the wait channel reported by ps
+# Only runs on linux.
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = linux ] || _notrun "tests pmdalinux functionality"
+pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+process="[k]eventd"
+ps=`ps -elf | grep $process | awk '{print $11}'`
+pcp=`pminfo -f proc.psinfo.wchan_s | grep $process \
+| sed -e 's/"//g' | awk '{print $NF}'`
+
+echo "=== ps ===" >$seq.full
+ps -elf >>$seq.full
+echo >>$seq.full
+echo "=== pminfo ===" >>$seq.full
+pminfo -f proc.psinfo.wchan_s >>$seq.full
+
+#
+# ps truncates the wchan string
+awk -v ps="$ps" -v pcp="$pcp" '
+END {
+ len=length(ps)
+ s = substr(pcp, 1, length(ps))
+ if (ps != s) {
+ printf "FAIL ps=\"%s\" pminfo=\"%s\"\n", ps, pcp
+ exit 1
+ }
+ print "Succeeded"
+ exit 0
+}' </dev/null
+status=$?
+
+exit
diff --git a/qa/114.out b/qa/114.out
new file mode 100644
index 0000000..2fc9123
--- /dev/null
+++ b/qa/114.out
@@ -0,0 +1,2 @@
+QA output created by 114
+Succeeded
diff --git a/qa/115 b/qa/115
new file mode 100755
index 0000000..14d3504
--- /dev/null
+++ b/qa/115
@@ -0,0 +1,152 @@
+#! /bin/sh
+# PCP QA Test No. 115
+# exercises pmie_check functionality
+# See also of No. 504 ... for a version that uses pmsocks
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+signal=$PCP_BINADM_DIR/pmsignal
+lhost=`hostname | sed -e 's/\..*//'`
+host=`_get_fqdn`
+remote=`./getpmcdhosts -n 1 -L 2>$tmp.out`
+rhost=`echo $remote | sed -e 's/\..*//'`
+if [ -z "$remote" ]
+then
+ cat $tmp.out >$seq.notrun
+ rm -f $tmp.out
+ exit
+fi
+needclean=false
+if [ -z "$PCP_PMIECONTROL_PATH" ]
+then
+ echo "Arrgh: Botch: PCP_PMIECONTROL_PATH not defined"
+ exit 1
+fi
+
+_cleanup()
+{
+ if $needclean
+ then
+ $sudo cp $tmp.control.bak $PCP_PMIECONTROL_PATH
+ $sudo chown pcp:pcp $PCP_PMIECONTROL_PATH
+ $sudo chmod 664 $PCP_PMIECONTROL_PATH
+ $sudo cp $tmp.pmcd.bak $PCP_PMCDCONF_PATH
+ fi
+ $sudo rm -f $tmp.*
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s/$seq-$$/SEQ-PID/g" \
+ -e 's/$/ /' \
+ -e 's/\([ "]\)'"$remote"'\([ "]\)/\1REMOTEHOST\2/g' \
+ -e 's/\([ "]\)'"$rhost"'\([ "]\)/\1REMOTEHOST\2/g' \
+ -e 's/\([ "]\)'"$host"'\([ "]\)/\1LOCALHOST\2/g' \
+ -e 's/\([ "]\)local:\([ "]\)/\1LOCALHOST\2/g' \
+ -e "s;/private/tmp;/tmp;g" \
+ -e 's/ $//'
+}
+
+_count_pmies()
+{
+ count=0
+ if [ -d $PCP_TMP_DIR/pmie ]
+ then cd $PCP_TMP_DIR/pmie
+ else return 0
+ fi
+
+ plist=`ls -1`
+ cd $here
+
+ for process in $plist
+ do
+ ps -p $process >/dev/null 2>&1
+ if [ $? = 1 ]
+ then
+ echo "urk, $PCP_TMP_DIR/pmie/$process has no running pmie instance"
+ else
+ count=`expr $count + 1`
+ fi
+ done
+
+ return $count
+}
+
+# create a basic pmcd config file
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+EOF
+
+# create a pmie config file
+cat >$tmp.conf << EOF
+foo = sample.long.one;
+doo = sample.long.ten;
+EOF
+
+# create pmie control files
+cat >$tmp.control << EOF
+\$version=1.0
+$remote n $tmp.log1 -c $tmp.conf
+$remote n $tmp.log2 -c $tmp.conf
+LOCALHOSTNAME n $tmp.log0 $tmp.conf
+EOF
+
+# real QA test starts here
+cp $PCP_PMIECONTROL_PATH $tmp.control.bak
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.bak
+needclean=true
+$sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+
+$sudo $signal -a -s TERM pmie >/dev/null 2>&1
+_change_config pmcd on
+_change_config pmie off
+$sudo rm -f $PCP_TMP_DIR/pmie/*
+
+_count_pmies
+echo "pmie count at start of QA testing: $?"
+echo
+
+echo === check default install operation ===
+$sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start
+_count_pmies
+echo "pmie count after chkconfig pmie off: $?"
+echo
+
+echo === check for missing control file ===
+_change_config pmie off
+$sudo rm -f $PCP_PMIECONTROL_PATH
+_change_config pmie on
+$sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start
+_count_pmies
+echo "pmie count after attempt without control file: $?"
+echo
+
+echo === check pmie_check and custom config ===
+pmie_check -V -V -N -c $tmp.control 2>&1 | _filter
+# don't bother counting pmie processes, as -N is used above!
+#
+echo
+
+$sudo $PCP_RC_DIR/pmie stop 2>&1 \
+| _filter_pmie_start \
+| sed -e '/pmie: PMIE not running/d'
+_change_config pmie off
+
+status=0
+exit
diff --git a/qa/115.out b/qa/115.out
new file mode 100644
index 0000000..50f6f31
--- /dev/null
+++ b/qa/115.out
@@ -0,0 +1,37 @@
+QA output created by 115
+pmie count at start of QA testing: 0
+
+=== check default install operation ===
+pmie count after chkconfig pmie off: 0
+
+=== check for missing control file ===
+$PCP_RC_DIR/pmie:
+Error: PCP inference engine control file $PCP_PMIECONTROL_PATH
+ is missing! Cannot start any Performance Co-Pilot inference engine(s).
+pmie count after attempt without control file: 0
+
+=== check pmie_check and custom config ===
+# $version=1.0
++ export version; version=1.0
+Check pmie -h REMOTEHOST -l /tmp/SEQ-PID.log1 ...
++ cd /tmp
+No current pmie process exists for:
+ host = REMOTEHOST
+ log file = /tmp/SEQ-PID.log1
+Restarting pmie for host "REMOTEHOST" ...
++ pmie -b -h REMOTEHOST -l /tmp/SEQ-PID.log1 -c /tmp/SEQ-PID.conf
+Check pmie -h REMOTEHOST -l /tmp/SEQ-PID.log2 ...
++ cd /tmp
+No current pmie process exists for:
+ host = REMOTEHOST
+ log file = /tmp/SEQ-PID.log2
+Restarting pmie for host "REMOTEHOST" ...
++ pmie -b -h REMOTEHOST -l /tmp/SEQ-PID.log2 -c /tmp/SEQ-PID.conf
+Check pmie -h LOCALHOST -l /tmp/SEQ-PID.log0 ...
++ cd /tmp
+No current pmie process exists for:
+ host = LOCALHOST
+ log file = /tmp/SEQ-PID.log0
+Restarting pmie for host "LOCALHOST" ...
++ pmie -b -h LOCALHOST -l /tmp/SEQ-PID.log0 /tmp/SEQ-PID.conf
+
diff --git a/qa/116 b/qa/116
new file mode 100755
index 0000000..18ccd3c
--- /dev/null
+++ b/qa/116
@@ -0,0 +1,89 @@
+#! /bin/sh
+# PCP QA Test No. 116
+# Check hyphen in host name
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.config
+
+[ -z "$PCPQA_HYPHEN_HOST" -o "$PCPQA_HYPHEN_HOST" = "some-host" ] && \
+ _notrun 'PCPQA_HYPHEN_HOST is not set in ./common.config'
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+rm -f $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+host=$PCPQA_HYPHEN_HOST
+eval realhost=`pmprobe -v -h $PCPQA_HYPHEN_HOST pmcd.hostname | \
+ $PCP_AWK_PROG '{ print $3 }'`
+if [ -z "$realhost" ]
+then
+ _notrun "cannot connect to pmcd on $PCPQA_HYPHEN_HOST"
+fi
+[ "$realhost" = Unknown ] && realhost=`pmhostname $PCPQA_HYPHEN_HOST`
+
+_filter_pmlc()
+{
+ sed \
+ -e '/primary/d' \
+ -e "s/$host/HYPHEN-HOST/" \
+ -e "s/$realhost/HYPHEN-HOST/" \
+ -e 's/HYPHEN-HOST\.localdomain/HYPHEN-HOST/' \
+ -e 's/ *.*/ .../'
+}
+
+_filter()
+{
+ sed \
+ -e "s/$host/HYPHEN-HOST/" \
+ -e "s/$realhost/HYPHEN-HOST/" \
+ -e 's/HYPHEN-HOST\.localdomain/HYPHEN-HOST/' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/'
+}
+
+# real QA test starts here
+
+echo "pmie [hostname in config]"
+cat <<End-of-File >$tmp.config
+delta = 1;
+// note have to quote hostname
+2 * pmcd.control.sighup :'$host' - pmcd.control.sighup :'$host';
+End-of-File
+cat $tmp.config >$seq.full
+pmie -T 2sec -v <$tmp.config >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err \
+| tee -a $seq.full \
+| sed -e 's/expr_1: */expr_1: /' \
+| _show_pmie_errors
+
+echo
+echo "pmval [metric spec on command line]"
+pmval -t0.5 -s 1 $host:pmcd.control.sighup \
+| tee -a $seq.full \
+| _filter
+
+echo
+echo "pmlc [several uses]"
+( echo "show loggers"; \
+ echo "show loggers@$host"; \
+ echo "connect primary@$host"; \
+ echo "status" \
+) \
+| pmlc -h $host -P \
+| tee -a $seq.full \
+| _filter_pmlc
+
+# success, all done
+status=0
+exit
diff --git a/qa/116.out b/qa/116.out
new file mode 100644
index 0000000..59e684b
--- /dev/null
+++ b/qa/116.out
@@ -0,0 +1,25 @@
+QA output created by 116
+pmie [hostname in config]
+expr_1: 0
+expr_1: 0
+expr_1: 0
+pmie: note - evaluator exiting
+
+pmval [metric spec on command line]
+
+metric: pmcd.control.sighup
+host: HYPHEN-HOST
+semantics: discrete instantaneous value
+units: none
+samples: 1
+ 0
+
+pmlc [several uses]
+The following pmloggers are running on HYPHEN-HOST:
+The following pmloggers are running on HYPHEN-HOST:
+PMCD host ...
+log started ...
+last log entry ...
+current time ...
+log volume ...
+log size ...
diff --git a/qa/117 b/qa/117
new file mode 100755
index 0000000..3c8ae3f
--- /dev/null
+++ b/qa/117
@@ -0,0 +1,187 @@
+#! /bin/sh
+# PCP QA Test No. 117
+# Verify network.ip statistics (Non-linux version, see 216 for Linux version)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ $PCP_PLATFORM = linux ]
+then
+ _notrun "network.ip checks for linux done in test 216"
+elif [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ _notrun "no network.ip metrics for $PCP_PLATFORM"
+fi
+
+compare=`pwd`/src/compare
+rm -rf $tmp.*
+
+trap "rm -rf $tmp.*" 0 1 2 3 15
+
+if [ ! -x $compare ]
+then
+ echo "Can't find compare, giving up"
+ exit 1
+fi
+
+if pminfo network.ip >/dev/null
+then
+ :
+else
+ echo "pminfo network.ip not working, giving up"
+ exit 1
+fi
+
+# real QA test starts here
+ns1=$tmp.netstat1
+pcp=$tmp.pcp
+ns2=$tmp.netstat2
+
+rm -f $seq.full
+rm -rf $ns1 $pcp $ns2
+
+_get_netstat()
+{
+ netstat -s -p ip \
+ | tee -a $seq.full \
+ | $PCP_AWK_PROG '
+ NR > 1 {
+ print $1
+ # This used to be a bit nasty because some lines contain
+ # another number in parentheses with surrounding text in
+ # some cases ... no longer an issue me thinks
+ #
+ #for (i = 2; i <= NF; i++) {
+ #n = match($i, /[0-9][0-9]*/);
+ #if ( n > 0 )
+ #print $i
+ #}
+ }' \
+ | tr -d '()'
+}
+
+echo "=== First netstat ===" >>$seq.full
+_get_netstat >$ns1
+
+# Fetch metrics in the same order as they appear in netstat output
+#
+# ip:
+# 584532 total packets received
+# 0 bad header checksums
+# 0 with size smaller than minimum
+# 0 with data size < data length
+# 0 with header length < data size
+# 0 with data length < header length
+# 0 with bad options
+# 0 fragments received
+# 0 fragments dropped
+# 0 fragments dropped after timeout
+# 584387 packets for this host
+# 283 packets recvd for unknown/unsupported protocol
+# 0 packets forwarded (forwarding enabled)
+# 145 packets not forwardable
+# 0 redirects sent
+# 1009836 packets sent from this host
+# 0 output packets dropped due to no bufs, etc.
+# 0 output packets discarded due to no route
+# 0 datagrams fragmented
+# 0 fragments created
+# 0 datagrams that can't be fragmented
+# 0 fragments dropped due to overlap (and ipv4_strict_reassembly = 1)
+# 0 fragments dropped because they introduced gaps (and ipv4_strict_reassembly = 1)
+#
+
+ip=network.ip
+
+#
+cat <<END >$tmp.metrics
+$ip.total
+$ip.badsum
+$ip.toosmall
+$ip.tooshort
+$ip.badhlen
+$ip.badlen
+$ip.badoptions
+$ip.fragments
+$ip.fragdropped
+$ip.fragtimeout
+$ip.delivered
+$ip.noproto
+$ip.forward
+$ip.cantforward
+$ip.redirect
+$ip.localout
+$ip.odropped
+$ip.noroute
+$ip.fragmented
+$ip.ofragments
+$ip.cantfrag
+$ip.strictreassoverlapfrags
+$ip.strictreassgapfrags
+END
+
+echo '#!/bin/sh' >$tmp.pminfo.sh
+$PCP_ECHO_PROG $PCP_ECHO_N 'true'"$PCP_ECHO_C" >>$tmp.pminfo.sh
+$PCP_AWK_PROG < $tmp.metrics >>$tmp.pminfo.sh '
+line % 5 == 0 { printf " || exit 1\npminfo -f "; line++; }
+ { printf "%s ", $1; line++; }
+END { print " || exit 1" }
+'
+
+echo "=== pminfo ===" >>$seq.full
+if sh $tmp.pminfo.sh \
+ | tee -a $seq.full \
+ | sed -e '/^No/s/.*/ value -666/' \
+ | grep ' value ' \
+ | $PCP_AWK_PROG '{ print $2 }' \
+ > $pcp
+then
+ :
+else
+ echo "pminfo fetches failed, giving up"
+ exit 1
+fi
+
+echo "=== Second netstat ===" >>$seq.full
+_get_netstat >$ns2
+
+nm=`wc -l $tmp.metrics | $PCP_AWK_PROG '{print $1}'`
+nn=`wc -l $ns2 | $PCP_AWK_PROG '{print $1}'`
+if [ $nm -lt $nn ]
+then
+ echo "Update list! fewer metrics ($nm) than netstat statistics ($nn)"
+elif [ $nm -gt $nn ]
+then
+ echo "Update list! more metrics ($nm) than netstat statistics ($nn)"
+fi
+
+echo "#!/bin/sh" >>$tmp.sh
+echo "sts=0" >>$tmp.sh
+paste -d" \n" $ns1 $pcp $ns2 $tmp.metrics \
+| tee $tmp.debug \
+ | $PCP_AWK_PROG ' {
+ printf "if '$compare' %d %d %d; then :; else ", $1, $2, $3;
+ printf "sts=1; echo \"%s = %d out of range %d..%d\"; fi\n", $4, $2, $1, $3
+ }' \
+ >>$tmp.sh
+echo "exit $sts" >>$tmp.sh
+chmod u+x $tmp.sh
+
+# for debugging
+# if sh -x $tmp.sh
+
+if sh $tmp.sh
+then
+ exit 0
+else
+ echo "Bad network.ip metrics"
+ exit 1
+fi
diff --git a/qa/117.out b/qa/117.out
new file mode 100644
index 0000000..41b120e
--- /dev/null
+++ b/qa/117.out
@@ -0,0 +1 @@
+QA output created by 117
diff --git a/qa/118 b/qa/118
new file mode 100755
index 0000000..f8d4c6e
--- /dev/null
+++ b/qa/118
@@ -0,0 +1,71 @@
+#! /bin/sh
+# PCP QA Test No. 118
+# check totals for disk metrics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+echo checking disk.all metrics against sum of disk.dev metrics
+
+# here are the exercises
+cat > $tmp.config << \EOF
+delta = 1 sec;
+
+// 10 below is percentage difference
+//
+iopsTolerance = "10 * (sum_inst disk.dev.total) / 100";
+blkTolerance = "10 * (sum_inst disk.dev.blktotal) / 100";
+actTolerance = "10 * (sum_inst disk.dev.active) / 100";
+rspTolerance = "10 * (sum_inst disk.dev.response) / 100";
+
+(disk.all.read - sum_inst disk.dev.read) > $iopsTolerance ||
+sum_inst disk.dev.read - disk.all.read > $iopsTolerance
+-> print "disk.all.read off from sum disk.dev.read, delta: %v";
+
+(disk.all.write - sum_inst disk.dev.write) > $iopsTolerance ||
+sum_inst disk.dev.write - disk.all.write > $iopsTolerance
+-> print "disk.all.write off from sum disk.dev.write, delta: %v";
+
+(disk.all.total - sum_inst disk.dev.total) > $iopsTolerance ||
+sum_inst disk.dev.total - disk.all.total > $iopsTolerance
+-> print "disk.all.total off by more than 8% from sum disk.dev.total, delta: %v";
+
+(disk.all.blkread - sum_inst disk.dev.blkread) > $blkTolerance ||
+sum_inst disk.dev.blkread - disk.all.blkread > $blkTolerance
+-> print "disk.all.blkread off by more than 8% from sum disk.dev.blkread, delta: %v";
+
+(disk.all.blkwrite - sum_inst disk.dev.blkwrite) > $blkTolerance ||
+sum_inst disk.dev.blkwrite - disk.all.blkwrite > $blkTolerance
+-> print "disk.all.blkwrite off by more than 8% from sum disk.dev.blkwrite, delta: %v";
+
+(disk.all.blktotal - sum_inst disk.dev.blktotal) > $blkTolerance ||
+sum_inst disk.dev.blktotal - disk.all.blktotal > $blkTolerance
+-> print "disk.all.blktotal off by more than 8% from sum disk.dev.blktotal, delta: %v";
+
+(disk.all.active - sum_inst disk.dev.active) > $actTolerance ||
+sum_inst disk.dev.active - disk.all.active > $actTolerance
+-> print "disk.all.active off by more than 8% from sum disk.dev.active, delta: %v";
+
+(disk.all.response - sum_inst disk.dev.response) > $rspTolerance ||
+sum_inst disk.dev.response - disk.all.response > $rspTolerance
+-> print "disk.all.response off by more than 8% from sum disk.dev.response, delta: %v";
+EOF
+
+/bin/sh ./disk-work >$tmp.workload.out 2>&1 &
+KILL_PID=$!
+
+pmie -T 20 $tmp.config >$tmp.out 2>$tmp.err
+
+$signal -s TERM $KILL_PID
+cat $tmp.out
+cat $tmp.err | _show_pmie_exit
diff --git a/qa/118.out b/qa/118.out
new file mode 100644
index 0000000..9778543
--- /dev/null
+++ b/qa/118.out
@@ -0,0 +1,3 @@
+QA output created by 118
+checking disk.all metrics against sum of disk.dev metrics
+pmie: note - evaluator exiting
diff --git a/qa/119 b/qa/119
new file mode 100755
index 0000000..d2065a1
--- /dev/null
+++ b/qa/119
@@ -0,0 +1,180 @@
+#! /bin/sh
+# PCP QA Test No. 119
+# pmlogger_check failure produces way too many lines of output
+# pv 877570
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# need fix for pv 877570
+if [ $PCP_PLATFORM != irix -a $PCP_VER -ge 2300 ]
+then
+ # fix is in pcp-2.3.0-11
+ :
+elif [ $PCP_PLATFORM = irix -a $PCP_VER -ge 2400 ]
+then
+ # PCP 2.4 or later
+ :
+else
+ echo "need fix for pv #877570" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+rm -f $seq.out
+if grep ^TERSE= $PCP_BINADM_DIR/pmlogger_check >/dev/null
+then
+ # new version with -T option
+ #
+ have_T=true
+ ln $seq.new.out $seq.out
+else
+ # old version
+ #
+ have_T=false
+ ln $seq.old.out $seq.out
+fi
+
+$sudo rm -rf $tmp.*
+status=1 # failure is the default!
+_needclean=true
+[ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+
+LOGGING_DIR=$PCP_LOG_DIR/pmlogger_qa
+
+myhost=`hostname`
+[ $PCP_VER -lt 3806 ] && myhost=`echo $myhost | sed -e 's/\..*//'`
+
+trap "_cleanup" 0 1 2 3 15
+
+_cleanup()
+{
+ if $_needclean
+ then
+ [ -f $tmp.control ] && \
+ $sudo cp $tmp.control $PCP_PMLOGGERCONTROL_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ $sudo rm -f $tmp.*
+ $sudo rm -rf $LOGGING_DIR/${myhost}-one
+ $sudo rm -rf $LOGGING_DIR/${myhost}-two
+ $sudo rm -rf $LOGGING_DIR/no.such.host
+ exit $status
+}
+
+_filter()
+{
+ sed \
+ -e "s/$myhost/LOCALHOST/g" \
+ -e "/UID.*PID/d" \
+ -e "/USER.*PID/d" \
+ -e "s/.* pmlogger .*-c .*/<pmlogger process>/" \
+ -e "/Warning: creating directory/s/(.*\/\([^/][^/]*\))/(...\/\1)/" \
+ | _filter_pmlogger_log \
+ | $PCP_AWK_PROG '
+/pmlogger_check: Error: archive file .* missing/ {
+ $5 = "FILE"
+ print
+ skip = 1
+ next
+ }
+skip == 1 { next }
+ { print }'
+}
+
+$sudo cp $PCP_PMLOGGERCONTROL_PATH $tmp.control
+cat <<End-of-File >$tmp.tmp
+# dummy file created by qa/$seq on `date`
+# the goal here is to have just two pmlogger instances running and
+# a third one that will never run ...
+#
+\$version=1.1
+LOCALHOSTNAME y n $LOGGING_DIR/LOCALHOSTNAME-one -c /dev/null
+LOCALHOSTNAME n n $LOGGING_DIR/LOCALHOSTNAME-two -c /dev/null -L
+no.such.host n n $LOGGING_DIR/no.such.host -c /dev/null
+End-of-File
+$sudo cp $tmp.tmp $PCP_PMLOGGERCONTROL_PATH
+
+# stop pmcd, create the archive directories, start pmcd ...
+#
+$sudo $PCP_RC_DIR/pcp stop >$tmp.out 2>&1
+cat $tmp.out >$seq.full
+$sudo mkdir -p $LOGGING_DIR/${myhost}-one >/dev/null 2>&1
+$sudo mkdir -p $LOGGING_DIR/${myhost}-two >/dev/null 2>&1
+$sudo mkdir -p $LOGGING_DIR/no.such.host >/dev/null 2>&1
+id pcp >/dev/null 2>&1 && $sudo chown -R pcp:pcp $LOGGING_DIR
+echo "+++ before pmcd start ..." >>$seq.full
+$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mlogger' >>$seq.full
+echo "+++" >>$seq.full
+$sudo $PCP_RC_DIR/pcp start >$tmp.out 2>&1
+cat $tmp.out >>$seq.full
+_wait_for_pmcd
+echo "+++ after pmcd start ..." >>$seq.full
+$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mlogger' >>$seq.full
+echo "+++" >>$seq.full
+
+# avoid race with pmloggers not being started before pmlogger_check
+# is run below
+for i in 1 2 3 4 5
+do
+ [ -f $LOGGING_DIR/${myhost}-one/pmlogger.log -a -f $LOGGING_DIR/${myhost}-two/pmlogger.log ] && break
+ sleep 1
+done
+if [ ! -f $LOGGING_DIR/${myhost}-one/pmlogger.log ]
+then
+ echo "Failed to start pmlogger for ${myhost}-one"
+ echo "Logging directory contents ..."
+ ls -l $LOGGING_DIR/${myhost}-one
+ exit
+fi
+
+if [ ! -f $LOGGING_DIR/${myhost}-two/pmlogger.log ]
+then
+ echo "Failed to start pmlogger for ${myhost}-two"
+ echo "Logging directory contents ..."
+ ls -l $LOGGING_DIR/${myhost}-two
+ exit
+fi
+
+# real QA test starts here
+
+echo
+echo "=== pmlogger_check ==="
+echo "+++ before pmlogger_check ..." >>$seq.full
+$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mlogger' >>$seq.full
+echo "+++" >>$seq.full
+echo >>$seq.full
+echo "=== pmlogger_check ===" >>$seq.full
+$sudo $PCP_BINADM_DIR/pmlogger_check >$tmp.out 2>&1
+echo "+++ after pmlogger_check ..." >>$seq.full
+$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mlogger' >>$seq.full
+echo "+++" >>$seq.full
+_filter <$tmp.out
+cat $tmp.out >>$seq.full
+
+if $have_T
+then
+ echo
+ echo "=== pmlogger_check -T ==="
+ echo >>$seq.full
+ echo "=== pmlogger_check -T ===" >>$seq.full
+ $sudo $PCP_BINADM_DIR/pmlogger_check -T >$tmp.out 2>&1
+ _filter <$tmp.out
+ cat $tmp.out >>$seq.full
+fi
+
+# all OK
+status=0
+exit
diff --git a/qa/119.new.out b/qa/119.new.out
new file mode 100644
index 0000000..f0e1f68
--- /dev/null
+++ b/qa/119.new.out
@@ -0,0 +1,29 @@
+QA output created by 119
+
+=== pmlogger_check ===
+Restarting pmlogger for host "no.such.host" ... process exited!
+pmlogger_check: Error: failed to restart pmlogger
+Current pmlogger processes:
+<pmlogger process>
+<pmlogger process>
+
+Contents of pmlogger output file "pmlogger.log" ...
+Log for pmlogger on HOST started DATE
+
+pmlogger: Cannot connect to PMCD on host "no.such.host": No route to host
+
+Log finished DATE
+pmlogger_check: Error: archive file FILE missing
+
+=== pmlogger_check -T ===
+Restarting pmlogger for host "no.such.host" ... process exited!
+Contents of pmlogger output file "pmlogger.log" ...
+Log for pmlogger on HOST started DATE
+
+pmlogger: Cannot connect to PMCD on host "no.such.host": No route to host
+
+Log finished DATE
+pmlogger_check: Error: archive file FILE missing
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/119.old.out b/qa/119.old.out
new file mode 100644
index 0000000..669b372
--- /dev/null
+++ b/qa/119.old.out
@@ -0,0 +1,19 @@
+QA output created by 119
+
+=== pmlogger_check ===
+Restarting pmlogger for host "no.such.host" ... process exited!
+pmlogger_check: Error: failed to restart pmlogger
+Current pmlogger processes:
+<pmlogger process>
+<pmlogger process>
+
+Contents of pmlogger output file "pmlogger.log" ...
+Log for pmlogger on HOST started DATE
+
+pmlogger: Cannot connect to PMCD on host "no.such.host": No route to host
+
+Log finished DATE
+pmlogger_check: Error: archive file FILE missing
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/120 b/qa/120
new file mode 100755
index 0000000..8f406a0
--- /dev/null
+++ b/qa/120
@@ -0,0 +1,179 @@
+#! /bin/sh
+# PCP QA Test No. 120
+#
+# Verify some irix.resource.efs metrics
+#
+# See the instructions below for updating expected ranges (search for NOTE)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -rf $tmp.*
+
+# Find an efs filesystem ... if you do not have one, abandon ship
+#
+efs=`df 2>/dev/null \
+ | grep -v CDROM \
+ | $PCP_AWK_PROG ' $2 == "efs" { print $NF; exit }'`
+
+if [ "X$efs" = "X" ]
+then
+ # not much you can do if no EFS filesystem found ...
+ sed 1d <$seq.out
+ exit 0
+fi
+
+[ ! -d $efs/$$ ] && $sudo mkdir $efs/$$
+$sudo chmod 777 $efs/$$
+
+trap "$sudo rm -rf $tmp.* $efs/$$" 0 1 2 3 15
+#
+# real QA starts here
+
+# Don't change this lightly---the DELTAS will require tuning
+#
+nfiles=250
+
+# Find metric values and metric names in $tmp.vals.1
+#
+pminfo -f irix.resource.efs \
+ | $PCP_AWK_PROG '
+ /^$/ { next }
+ /^No val/ { next }
+ /^irix./ { metric = $1 }
+ / value / { print metric, $2 }
+ { next } ' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.vals.1
+
+# Generate some efs activity
+#
+cd $efs/$$
+$here/src/mkfiles xxx $nfiles
+
+# Get the new values of the metrics
+pminfo -f irix.resource.efs \
+ | $PCP_AWK_PROG '
+ /^$/ { next }
+ /^No val/ { next }
+ /^irix./ { metric = $1 }
+ / value / { print metric, $2 }
+ { next } ' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.vals.2
+
+# clean up mkfiles' handiwork
+#
+cd $here
+if $sudo rm -rf $efs/$$
+then
+ :
+else
+ echo "Error removing files to exercise efs from $efs/$$"
+ exit 1
+fi
+
+# Create and execute a shell script which computes the differences between
+# the efs metrics and displays the equivalent of
+# printf("%d\t%s", delta, metric_name)
+#
+echo '#!/bin/sh' >$tmp.sh
+LC_COLLATE=POSIX join -j 1 -o 2.2 1.2 1.1 -e ERR $tmp.vals.1 $tmp.vals.2 \
+ | $PCP_AWK_PROG '{ printf "echo %s `expr %d - %d`\n", $3, $1, $2 }' \
+ >> $tmp.sh
+sh $tmp.sh >$tmp.delta
+
+# NOTE : how to update the expected value ranges
+# When new metrics appear use this to determine what resonable differences
+# may be expected:
+#
+# echo "DELTAS:"
+# cat $tmp.delta
+# echo ""
+
+# Here is where to paste the new values AFTER adjusting them to multiples of
+# the expected minimum delta (nfiles). Values less than the minimum delta
+# should NOT appear.
+#
+# Things to beware of!
+#
+# 1. Use only nondeterministic metrics. Some metrics rely on kernel data
+# structures which may or not be populated with the "right" objects when the
+# test is run e.g. things like "allocated from free list" vs "allocated new".
+#
+# 2. Different versions of the kernel may have different paths through the
+# statistics gathering code. Be conservative in the minima you set below.
+# The test must work on all of them. If possible, try on a variety of kernels.
+# E.g. if x.y.z returns 758 on IRIX 6.1 and 516 on IRIX 5.3 the minimum should
+# be set to 500.
+#
+# 3. Use a quiescent system!
+#
+# DO NOT INCREASE THESE FIGURES WITHOUT CHECKING THE OUTPUT ON 5.3 and 6.1
+#
+# Nondeterministic metrics zeroed in list below:
+# bmapfbc, itobpf, found
+#
+cat >$tmp.delta.expect <<END
+irix.resource.efs.attempts 250
+irix.resource.efs.attrchg 0
+irix.resource.efs.bmapfbc 0
+irix.resource.efs.bmapfbm 0
+irix.resource.efs.bmaprd 250
+irix.resource.efs.dirupd 250
+irix.resource.efs.dup 0
+irix.resource.efs.found 0
+irix.resource.efs.frecycle 0
+irix.resource.efs.ialloccoll 0
+irix.resource.efs.iallocrd 250
+irix.resource.efs.iallocrdf 250
+irix.resource.efs.icreat 250
+irix.resource.efs.itobp 500
+irix.resource.efs.itobpf 0
+irix.resource.efs.iupacc 250
+irix.resource.efs.iupchg 500
+irix.resource.efs.iupdat 500
+irix.resource.efs.iupmod 0
+irix.resource.efs.iupunk 0
+irix.resource.efs.iupupd 500
+irix.resource.efs.missed 0
+irix.resource.efs.reclaims 0
+irix.resource.efs.truncs 0
+END
+
+LC_COLLATE=POSIX sort $tmp.delta.expect | sed -e 's/[ ][ ]*/ /' >$tmp.filtered
+mv $tmp.filtered $tmp.delta.expect
+
+# Now generate and run another shell script to compare the observed deltas
+# with the expected ones
+#
+echo '#!/bin/sh' >$tmp.delta.sh
+echo 'sts=0' >>$tmp.delta.sh
+LC_COLLATE=POSIX join -j 1 -o 1.2 2.2 1.1 $tmp.delta $tmp.delta.expect \
+ | tee $tmp.join \
+ | $PCP_AWK_PROG '{
+ printf "[ %d -lt %d ]", $1, $2;
+ printf " && sts=1 && " ;
+ printf "echo \"%s: got %d expected min %d\"\n", $3, $1, $2;
+ } ' \
+ >>$tmp.delta.sh
+echo 'exit $sts' >>$tmp.delta.sh
+
+# For debuging use sh -x
+#
+if sh $tmp.delta.sh
+then
+ :
+else
+ echo ""
+ echo "irix.resource.efs: one or more metrics failed range tests"
+ exit 1
+fi
+exit 0
diff --git a/qa/120.out b/qa/120.out
new file mode 100644
index 0000000..4a61924
--- /dev/null
+++ b/qa/120.out
@@ -0,0 +1 @@
+QA output created by 120
diff --git a/qa/121 b/qa/121
new file mode 100755
index 0000000..476743d
--- /dev/null
+++ b/qa/121
@@ -0,0 +1,72 @@
+#! /bin/sh
+# PCP QA Test No. 121
+# check that pmlogconf finds new groups, pv 893249
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+pmlogconf $tmp.in >/dev/null 2>&1
+echo "--- default config ---" >>$seq.full
+cat $tmp.in >>$seq.full
+
+# strip comments, empty lines and then strip the groups:
+# disk/summary
+# kernel/bufcache-all to memory/swap
+sed <$tmp.in >$tmp.ref \
+ -e '/^#$/d' \
+ -e '/^# /d' \
+ -e '/^[ ]*$/d'
+cat <<End-of-File >>$tmp.ref
+
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+End-of-File
+
+$PCP_AWK_PROG <$tmp.ref >$tmp.tmp '
+/^\#\+ disk\/summary/ { state = 1; next }
+state == 1 && /^\#----/ { state = 0; next }
+/^\#\+ kernel\/bufcache-all/ { state = 2; next }
+state == 2 && /^\#\+ memory\/swap/{ state = 1; next }
+state == 0 { print }'
+cp $tmp.tmp $tmp.in
+echo >>$seq.full
+echo "--- culled and stripped config ---" >>$seq.full
+cat $tmp.in >>$seq.full
+
+# now process again ... the diffs should be small
+#
+echo >>$seq.full
+echo "--- pmlogconf ---" >>$seq.full
+( echo q; echo y ) | pmlogconf -v $tmp.in >>$seq.full 2>&1
+
+grep Error: $seq.full
+
+echo >>$seq.full
+echo "--- final config ---" >>$seq.full
+cat $tmp.in >>$seq.full
+
+echo "Expect few differences ..."
+LC_COLLATE=POSIX sort $tmp.ref >$tmp.ref.sort
+LC_COLLATE=POSIX sort $tmp.in >$tmp.in.sort
+diff $tmp.ref.sort $tmp.in.sort
+
+# success, all done
+exit
diff --git a/qa/121.out b/qa/121.out
new file mode 100644
index 0000000..8f07915
--- /dev/null
+++ b/qa/121.out
@@ -0,0 +1,2 @@
+QA output created by 121
+Expect few differences ...
diff --git a/qa/122 b/qa/122
new file mode 100755
index 0000000..00f67cb
--- /dev/null
+++ b/qa/122
@@ -0,0 +1,67 @@
+#! /bin/sh
+# PCP QA Test No. 122
+# arg parsing botches for
+# pmtrace -h host -v value tag
+# pmtrace -D ...
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# stolen from getpmcdhosts
+#
+check=`echo a | od -x 2>&1 | sed -e 's/^0[^ ]* *//' -e 's/ //g' -e '/^$/d'`
+case "$check"
+in
+ 0a61)
+ # little, want big
+ #
+ want=big
+ echo "I am little endian, looking for pmtrace PMDA on a big endian platform" >>$seq.full
+ ;;
+ 610a)
+ # big, want little
+ #
+ want=little
+ echo "I am big endian, looking for pmtrace PMDA on a little endian platform" >>$seq.full
+ ;;
+ *)
+ echo "Arrgh ... od -x returned something odd ($check)"
+ echo a | od -x
+ status=1
+ exit
+ ;;
+esac
+
+# find the trace PMDA running somewhere else with tho other endianess
+#
+host=`./getpmcdhosts -L -n 1 -a trace -e $want`
+if [ -z "$host" ]
+then
+ echo "Cannot find $want endian host running pmdatrace" >$seq.notrun
+ exit
+fi
+echo "remote host: $host" >>$seq.full
+
+# real QA test starts here
+for val in 42 1234.5678 -3.14132
+do
+ pmtrace -h $host -v $val "qa/$seq-value"
+ pminfo -h $host -f trace.observe.value | grep "qa/$seq-value"
+done
+
+# success, all done
+exit
diff --git a/qa/122.out b/qa/122.out
new file mode 100644
index 0000000..10c31e2
--- /dev/null
+++ b/qa/122.out
@@ -0,0 +1,7 @@
+QA output created by 122
+pmtrace: observation complete (tag="qa/122-value", value=42.000000)
+ inst [1 or "qa/122-value"] value 42
+pmtrace: observation complete (tag="qa/122-value", value=1234.567800)
+ inst [1 or "qa/122-value"] value 1234.5678
+pmtrace: observation complete (tag="qa/122-value", value=-3.141320)
+ inst [1 or "qa/122-value"] value -3.14132
diff --git a/qa/123 b/qa/123
new file mode 100755
index 0000000..694b616
--- /dev/null
+++ b/qa/123
@@ -0,0 +1,24 @@
+#! /bin/sh
+# PCP QA Test No. 123
+# pv:892936 adding PM_SPACE_PBYTE and PM_SPACE_EBYTE
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+src/pmconvscale x
+
+# success, all done
+exit
diff --git a/qa/123.out b/qa/123.out
new file mode 100644
index 0000000..5a17537
--- /dev/null
+++ b/qa/123.out
@@ -0,0 +1,13 @@
+QA output created by 123
+ 1.0 Ebyte / sec -> 1024.0 Pbyte / sec
+ 2.0 Pbyte / sec -> 2048.0 Tbyte / sec
+ 4.0 Tbyte / sec -> 4096.0 Gbyte / sec
+ 8.0 Gbyte / sec -> 8192.0 Mbyte / sec
+ 16.0 Mbyte / sec -> 16384.0 Kbyte / sec
+ 32.0 Kbyte / sec -> 32768.0 byte / sec
+ 32768.0 byte / sec -> 32.0 Kbyte / sec
+ 16384.0 Kbyte / sec -> 16.0 Mbyte / sec
+ 8192.0 Mbyte / sec -> 8.0 Gbyte / sec
+ 4096.0 Gbyte / sec -> 4.0 Tbyte / sec
+ 2048.0 Tbyte / sec -> 2.0 Pbyte / sec
+ 1024.0 Pbyte / sec -> 1.0 Ebyte / sec
diff --git a/qa/124 b/qa/124
new file mode 100755
index 0000000..0884f23
--- /dev/null
+++ b/qa/124
@@ -0,0 +1,41 @@
+#! /bin/sh
+# PCP QA Test No. 124
+# check that exit status in pmie actions processed correctly
+# (problem raised by todd.c.davis@intel.com)
+# pv #870661
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo 'hinv.ncpu > 0 -> shell "echo true; true";' | pmie -f -t2 -T1 2>/dev/null
+sleep 1
+
+echo 'hinv.ncpu > 0 -> shell "echo true; true" | shell "echo or true; true";' | pmie -f -t2 -T1 2>/dev/null
+sleep 1
+
+echo 'hinv.ncpu > 0 -> shell "echo true; true" & shell "echo and true; true";' | pmie -f -t2 -T1 2>/dev/null
+sleep 1
+
+echo 'hinv.ncpu > 0 -> shell "echo false; false" | shell "echo or true; true";' | pmie -f -t2 -T1 2>/dev/null
+sleep 1
+
+echo 'hinv.ncpu > 0 -> shell "echo false; false" & shell "echo and true; true";' | pmie -f -t2 -T1 2>/dev/null
+sleep 1
+
+# success, all done
+exit
+
diff --git a/qa/124.out b/qa/124.out
new file mode 100644
index 0000000..70599e4
--- /dev/null
+++ b/qa/124.out
@@ -0,0 +1,9 @@
+QA output created by 124
+true
+true
+true
+and true
+false
+or true
+false
+and true
diff --git a/qa/125 b/qa/125
new file mode 100755
index 0000000..4750571
--- /dev/null
+++ b/qa/125
@@ -0,0 +1,25 @@
+#! /bin/sh
+# PCP QA Test No. 125
+# pv 910632
+# __pmLogFetchInterp doing way more reading than it needs to.
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmval -z -Dlog,interp -O-16 -t 15 -a src/kenj-pc-1 kernel.all.cpu.idle 2>$tmp.err
+
+echo
+echo "__pmLogRead calls: `grep __pmLogRead $tmp.err | wc -l | sed -e 's/ *//g'`"
diff --git a/qa/125.out b/qa/125.out
new file mode 100644
index 0000000..28238a0
--- /dev/null
+++ b/qa/125.out
@@ -0,0 +1,15 @@
+QA output created by 125
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: kernel.all.cpu.idle
+archive: src/kenj-pc-1
+host: kenj-pc
+start: Sun Feb 8 15:28:30 2004
+end: Sun Feb 8 15:28:46 2004
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 2
+interval: 15.00 sec
+15:28:45.729 0.8971
+
+__pmLogRead calls: 23
diff --git a/qa/126 b/qa/126
new file mode 100755
index 0000000..c1ea9ab
--- /dev/null
+++ b/qa/126
@@ -0,0 +1,45 @@
+#! /bin/sh
+# PCP QA Test No. 126
+# on linux only, check /proc/net/snmp is what we're expecting
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+. ./localconfig
+rm -f $seq.out
+if [ -f /etc/redhat-release ]
+then
+ if egrep -q '^CentOS [^0-9]*5\.[0-9]|^Red Hat [^0-9]*5\.[0-9]' </etc/redhat-release
+ then
+ # not all the snmp metrics are there ...
+ ln $seq.out.2 $seq.out
+ else
+ ln $seq.out.1 $seq.out
+ fi
+else
+ ln $seq.out.1 $seq.out
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+if [ -e /proc/net/snmp ]
+then
+ awk '$2 !~ /[0-9]/ {print}' /proc/net/snmp
+else
+ grep -v '^QA' $seq.out
+fi
+
+# success, all done
+exit $status
diff --git a/qa/126.out.1 b/qa/126.out.1
new file mode 100644
index 0000000..e141ef5
--- /dev/null
+++ b/qa/126.out.1
@@ -0,0 +1,6 @@
+QA output created by 126
+Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates
+Icmp: InMsgs InErrors InDestUnreachs InTimeExcds InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors OutDestUnreachs OutTimeExcds OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps OutTimestampReps OutAddrMasks OutAddrMaskReps
+Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts
+Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors
+UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors
diff --git a/qa/126.out.2 b/qa/126.out.2
new file mode 100644
index 0000000..ce6533f
--- /dev/null
+++ b/qa/126.out.2
@@ -0,0 +1,5 @@
+QA output created by 126
+Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates
+Icmp: InMsgs InErrors InDestUnreachs InTimeExcds InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors OutDestUnreachs OutTimeExcds OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps OutTimestampReps OutAddrMasks OutAddrMaskReps
+Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts
+Udp: InDatagrams NoPorts InErrors OutDatagrams
diff --git a/qa/127 b/qa/127
new file mode 100755
index 0000000..60d2a2f
--- /dev/null
+++ b/qa/127
@@ -0,0 +1,33 @@
+#! /bin/sh
+# PCP QA Test No. 127
+# pmlogreduce basic metadata sanity
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmlogreduce src/kenj-pc-1 $tmp
+pmdumplog -d $tmp \
+| sed -e '/^PMID/{
+N
+N
+s/\n /| /g
+}' \
+| LC_COLLATE=POSIX sort \
+| sed -e 's/| /\
+ /g'
+
+# success, all done
+exit
diff --git a/qa/127.out b/qa/127.out
new file mode 100644
index 0000000..0d33202
--- /dev/null
+++ b/qa/127.out
@@ -0,0 +1,66 @@
+QA output created by 127
+
+Descriptions for Metrics in the Log ...
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 60.0.0 (kernel.percpu.cpu.user)
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: millisec
+PMID: 60.0.1 (kernel.percpu.cpu.nice)
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: millisec
+PMID: 60.0.2 (kernel.percpu.cpu.sys)
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: millisec
+PMID: 60.0.20 (kernel.all.cpu.user)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 60.0.21 (kernel.all.cpu.nice)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 60.0.22 (kernel.all.cpu.sys)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 60.0.23 (kernel.all.cpu.idle)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 60.0.28 (disk.dev.total)
+ Data Type: 64-bit unsigned int InDom: 60.1 0xf000001
+ Semantics: counter Units: count
+PMID: 60.0.29 (disk.all.total)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 60.0.3 (kernel.percpu.cpu.idle)
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: millisec
+PMID: 60.0.30 (kernel.percpu.cpu.wait.total)
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: millisec
+PMID: 60.0.31 (kernel.percpu.cpu.intr)
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: millisec
+PMID: 60.0.32 (hinv.ncpu)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 60.0.34 (kernel.all.cpu.intr)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 60.0.35 (kernel.all.cpu.wait.total)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 60.1.1 (mem.util.used)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+PMID: 60.18.0 (hinv.cpu.clock)
+ Data Type: float InDom: 60.0 0xf000000
+ Semantics: discrete Units: count
+PMID: 60.2.0 (kernel.all.load)
+ Data Type: float InDom: 60.2 0xf000002
+ Semantics: instant Units: none
diff --git a/qa/128 b/qa/128
new file mode 100755
index 0000000..478b3e9
--- /dev/null
+++ b/qa/128
@@ -0,0 +1,110 @@
+#! /bin/sh
+# PCP QA Test No. 128
+# Check NFS Server and Client stats (v2 and v3)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ _notrun "no nfs metrics for $PCP_PLATFORM"
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+get_pminfo()
+{
+ perl -e '
+ open STATS, "pminfo -f '$1' |" || die "pminfo: $!";
+ while (<STATS>) {
+ if (m/.*"(\S+)"] value (\d+)/) {
+ printf("'$2'_%s %d\n", $1, $2);
+ }
+ }
+ close STATS;
+ '
+}
+
+get_nfsstat()
+{
+ perl -e '
+ $prefix = "";
+ open STATS, "nfsstat -n |" || die "nfsstat: $!";
+ while (<STATS>) {
+ if (m/server nfs v2/i) { $prefix = "nfs2_server_reqs_"; }
+ elsif (m/server nfs v3/i) { $prefix = "nfs3_server_reqs_"; }
+ elsif (m/client nfs v2/i) { $prefix = "nfs2_client_reqs_"; }
+ elsif (m/client nfs v3/i) { $prefix = "nfs3_client_reqs_"; }
+ # NFSv4 unsupported. Reset prefix to "" to ensure
+ # that NFSv4 stats are not incorrectly attributed to
+ # another NFS version.
+ elsif (m/client nfs v4/i) { $prefix = ""; }
+ elsif (m/server nfs v4/i) { $prefix = ""; }
+ elsif ($prefix eq "") { next; }
+ elsif (m/((\d+)\s+\d+%)+/g) {
+ @values = split(/\s+/);
+ #print "found - @values, @instances\n";
+ for ($i = 0; $i <= $#instances; $i++) {
+ print $prefix, $instances[$i], " ", $values[$i*2], "\n";
+ }
+ }
+ elsif (m/((\S+)\s+)+/g) {
+ #print "instances - $_\n";
+ @instances = split(/\s+/);
+ }
+ }
+ close STATS;
+ '
+}
+
+# real QA test starts here
+
+# if we can find a nfs loop-back mount, go hammer on it for a while
+#
+mnt=''
+[ -d /hosts/localhost/usr ] && mnt=/hosts/localhost/usr
+
+cat > $tmp.workload << EOF
+ls -R /$mnt >/dev/null 2>/dev/null &
+KILL_PID=\$!
+sleep 3
+$signal -s KILL \$KILL_PID >/dev/null 2>&1
+EOF
+chmod u+x $tmp.workload
+
+$tmp.workload >/dev/null 2>&1
+sleep 2
+
+rm -f $tmp.info $tmp.stat $tmp.join $seq.full $tmp.info2 $tmp.stat2
+
+echo | tee -a $seq.full
+echo "fetching nfsstat values..." | tee -a $seq.full
+get_nfsstat 2>$tmp.err | tee -a $seq.full >$tmp.stat
+LC_COLLATE=POSIX sort -d < $tmp.stat > $tmp.stat2
+( echo "stderr from get_nfsstat ..."; cat $tmp.err ) >>$seq.full
+
+echo | tee -a $seq.full
+echo "fetching pminfo values..." | tee -a $seq.full
+get_pminfo nfs.server.reqs nfs2_server_reqs | tee -a $seq.full >$tmp.info
+get_pminfo nfs3.server.reqs nfs3_server_reqs | tee -a $seq.full >>$tmp.info
+get_pminfo nfs.client.reqs nfs2_client_reqs | tee -a $seq.full >>$tmp.info
+get_pminfo nfs3.client.reqs nfs3_client_reqs | tee -a $seq.full >>$tmp.info
+LC_COLLATE=POSIX sort -d < $tmp.info > $tmp.info2
+
+echo | tee -a $seq.full
+echo "comparing all values... (details in $seq.full)" | tee -a $seq.full
+LC_COLLATE=POSIX join $tmp.info2 $tmp.stat2 | while read metric nfsvalue pmvalue
+do
+ _within_tolerance $metric $nfsvalue $pmvalue 2% -v >>$seq.full
+ [ $? -eq 1 ] && echo failed cross check on $metric: $nfsvalue $pmvalue
+done
+echo done
diff --git a/qa/128.out b/qa/128.out
new file mode 100644
index 0000000..adf5b31
--- /dev/null
+++ b/qa/128.out
@@ -0,0 +1,8 @@
+QA output created by 128
+
+fetching nfsstat values...
+
+fetching pminfo values...
+
+comparing all values... (details in 128.full)
+done
diff --git a/qa/129 b/qa/129
new file mode 100755
index 0000000..72c72fc
--- /dev/null
+++ b/qa/129
@@ -0,0 +1,124 @@
+#! /bin/sh
+# PCP QA Test No. 129
+# pmlogreduce rate conversion
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+_filter()
+{
+ sed \
+ -e '/^ *$/d' \
+ -e 's/ */ /g' \
+ -e 's/ $//' \
+ -e '/End of PCP archive log/d' \
+ | $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+$1 == "interval:" { skip = 0; next }
+skip == 0 { print }'
+}
+
+_fix_e_fmt()
+{
+ sed \
+ -e 's/\([0-9]\)E/\1 E /' \
+ | $PCP_AWK_PROG '
+ { printf "%s",$1
+ for (i = 2; i <= NF; i++) {
+ if ($(i+1) == "E") {
+ b = $(i+2)
+ s = 1.0
+ while (b < 0) {
+ s /= 10
+ b++
+ }
+ while (b > 0) {
+ s *= 10
+ b--
+ }
+ $i *= s
+ printf " %s",$i
+ i += 2
+ }
+ else
+ printf " %s",$i
+ }
+ print ""
+ }'
+}
+
+_do()
+{
+ $PCP_ECHO_PROG $PCP_ECHO_N "$1""$PCP_ECHO_C"
+ echo >>$seq.full
+ echo "=== $1 orig ===" >>$seq.full
+ pmval -z -O 1m -A 15m -t 15m -a src/kenj-pc-1 $1 2>$tmp.orig.err \
+ | tee -a $seq.full \
+ | _fix_e_fmt \
+ | _filter >$tmp.orig
+ echo "--- stderr ---" >>$seq.full
+ cat $tmp.orig.err >>$seq.full
+ echo "--- filtered ---" >>$seq.full
+ cat $tmp.orig >>$seq.full
+
+ echo "=== $1 reduce ===" >>$seq.full
+ pmval -z -O 15m -A 15m -t 15m -a $tmp $1 2>$tmp.reduce.err \
+ | tee -a $seq.full \
+ | _fix_e_fmt \
+ | _filter >$tmp.reduce
+ echo "--- stderr ---" >>$seq.full
+ cat $tmp.reduce.err >>$seq.full
+ echo "--- filtered ---" >>$seq.full
+ cat $tmp.reduce >>$seq.full
+
+ join -a 1 -a 2 -e "?" $tmp.orig $tmp.reduce >$tmp.join
+
+# cat $tmp.join
+
+ $PCP_AWK_PROG <$tmp.join >$tmp.chk '
+NF != 3 { if (NR > 1) print
+ next
+ }
+$2 == "?" { print; next }
+$3 == "?" { print; next }
+ { if (0.99*$2 <= $3 && $3 <= 1.01*$2) next }
+ { print }'
+
+ if [ -s $tmp.chk ]
+ then
+ $PCP_ECHO_PROG " mismatches ..."
+ echo "--- chk ---" >>$seq.full
+ cat $tmp.chk >>$seq.full
+ cat $tmp.orig.err
+ cat $tmp.reduce.err
+ diff -u $tmp.orig $tmp.reduce
+ else
+ $PCP_ECHO_PROG " OK"
+ fi
+}
+
+# real QA test starts here
+pmlogreduce -A 15m -t 15m -D appl0,appl1,appl2 src/kenj-pc-1 $tmp 2>>$seq.full
+
+for m in \
+ disk.all.total kernel.all.cpu.idle \
+ disk.dev.total kernel.percpu.cpu.user
+do
+ _do $m
+done
+
+
diff --git a/qa/129.out b/qa/129.out
new file mode 100644
index 0000000..801a6e5
--- /dev/null
+++ b/qa/129.out
@@ -0,0 +1,5 @@
+QA output created by 129
+disk.all.total OK
+kernel.all.cpu.idle OK
+disk.dev.total OK
+kernel.percpu.cpu.user OK
diff --git a/qa/130 b/qa/130
new file mode 100755
index 0000000..1e2c2a0
--- /dev/null
+++ b/qa/130
@@ -0,0 +1,136 @@
+#! /bin/sh
+# PCP QA Test No. 130
+# Compare rpc.server metrics with what nfsstat reports
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+if [ $PCP_PLATFORM != irix ]
+then
+ echo "TODO: Need to reconcile rpc.server metrics" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+echo checking PCP metric values against: nfsstat -rs
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+# Don't bother about dupage
+# Not very popular and has a bug: pv#652216
+
+
+cat > $tmp.workload << \EOF
+ls -R /hosts/localhost/usr >/dev/null 2>/dev/null &
+KILL_PID=$!
+sleep 3
+$signal -s KILL $KILL_PID >/dev/null 2>&1
+EOF
+chmod u+x $tmp.workload
+
+$tmp.workload >/dev/null 2>&1
+sleep 2
+
+# Example Output:
+# > pminfo -f rpc.server
+#
+# rpc.server.badcalls
+# value 0
+#
+# rpc.server.badlen
+# value 0
+#
+# rpc.server.calls
+# value 111217257
+#
+# rpc.server.duphits
+# value 426
+#
+# rpc.server.nullrecv
+# value 11687166
+#
+# rpc.server.xdrcall
+# value 0
+#
+# > nfsstat -rs
+#
+# Server RPC:
+# calls badcalls nullrecv badlen xdrcall duphits dupage
+# 111220948 0 11687178 0 0 426 6198.58
+
+
+pminfo -f rpc.server >$tmp.pminfo
+nfsstat -rs >$tmp.nfs
+
+# acceptance: abs diff within 10 or diff within 5%
+#
+cat $tmp.pminfo $tmp.nfs | tee $seq.full | $PCP_AWK_PROG '
+NF == 0 { next }
+/Server RPC/ { nfstat=1; next }
+/rpc.server/ { # pminfo name
+ metric = $1
+ sub("rpc.server.", "", metric)
+ next
+ }
+/value/ { # pminfo value
+ value=$2
+ if (metric == "dupage") {
+ value /= 1000
+ }
+ pminfo[metric] = value
+ next
+ }
+NF>3 && nfstat==1 && /calls/ { # stat names
+ for(i=1;i<=NF;i++){
+ stat_names[i] = $i
+ }
+ next
+ }
+NF>3 && nfstat==1 { # stat values
+ for(i=1;i<=NF;i++){
+ name = stat_names[i]
+ stat_chk[name] = 1
+ stat_value = $i
+ if (! (name in pminfo) ) {
+ print name ": not in pminfo output"
+ next
+ }
+ pminfo_value = pminfo[name]
+ delta = pminfo_value - stat_value
+ if (delta < 0) delta *= -1
+
+ ok=0
+ if (delta < 10) {
+ ok = 1
+ }
+ else {
+ if (stat_value == 0) {
+ ok = 0
+ } else {
+ pct = delta / stat_value
+ ok = (0.95 <= pct && pct <= 1.05)
+ }
+ }
+ if (ok)
+ print name ": OK"
+ else
+ print name ": mismatch, pcp=" pminfo_value " nfsstat=" stat_value
+ }
+ }
+END {
+ for (name in pminfo) {
+ if (! (name in stat_chk) ) {
+ print name ": not in stats output"
+ }
+ }
+ }
+' | sort
diff --git a/qa/130.out.0 b/qa/130.out.0
new file mode 100644
index 0000000..6fc153a
--- /dev/null
+++ b/qa/130.out.0
@@ -0,0 +1,9 @@
+QA output created by 130
+checking PCP metric values against: nfsstat -rs
+badcalls: OK
+badlen: OK
+calls: OK
+dupage: OK
+duphits: OK
+nullrecv: OK
+xdrcall: OK
diff --git a/qa/130.out.1 b/qa/130.out.1
new file mode 100644
index 0000000..60dfceb
--- /dev/null
+++ b/qa/130.out.1
@@ -0,0 +1,17 @@
+QA output created by 130
+checking PCP metric values against: nfsstat -rs
+allnfsd.calls: not in stats output
+allnfsd.idle: not in stats output
+allnfsd.num_nfsd: not in stats output
+allnfsd.sys: not in stats output
+badcalls: OK
+badlen: OK
+calls: OK
+dupage: OK
+duphits: OK
+nullrecv: OK
+pernfsd.calls: not in stats output
+pernfsd.idle: not in stats output
+pernfsd.qnum: not in stats output
+pernfsd.sys: not in stats output
+xdrcall: OK
diff --git a/qa/131 b/qa/131
new file mode 100755
index 0000000..fa20397
--- /dev/null
+++ b/qa/131
@@ -0,0 +1,36 @@
+#! /bin/sh
+# PCP QA Test No. 131
+# values for PMCD_CONNECT_TIMEOUT < 1 ??
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.config
+
+[ -z "$PCPQA_FAR_PMCD" -o "$PCPQA_FAR_PMCD" = "far_away_pmcd" ] && \
+ _notrun 'PCPQA_FAR_PMCD is not set in ./common.config'
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# real QA test starts here
+farhost=$PCPQA_FAR_PMCD
+
+# was 1msec, but that was too short of $PCPQA_FAR_PMCD was not that
+# far away! Changed to 10usec, 1 Jan 2003
+#
+PMCD_CONNECT_TIMEOUT=0.00001
+export PMCD_CONNECT_TIMEOUT
+
+echo "Expect: Connection timed out"
+echo "The far host is $farhost" >$seq.full
+pminfo -f -h $farhost pmcd 2>&1 \
+| sed \
+ -e "s/$farhost/HOST/g" \
+ -e 's/Operation timed out/Connection timed out/' \
+ -e 's/Timeout waiting for a response from PMCD/Connection timed out/'
diff --git a/qa/131.out b/qa/131.out
new file mode 100644
index 0000000..c4e8ea3
--- /dev/null
+++ b/qa/131.out
@@ -0,0 +1,3 @@
+QA output created by 131
+Expect: Connection timed out
+pminfo: Cannot connect to PMCD on host "HOST": Connection timed out
diff --git a/qa/132 b/qa/132
new file mode 100755
index 0000000..af9029f
--- /dev/null
+++ b/qa/132
@@ -0,0 +1,37 @@
+#! /bin/sh
+# PCP QA Test No. 132
+# exercise the new -L (linger) option to pmlogger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+$sudo rm -f $tmp.*
+pmlogger -c /dev/null $tmp 2>&1 \
+| _filter_pmlogger_log
+
+$sudo rm -f $tmp.*
+_start_up_pmlogger -L -c /dev/null -l $tmp.log -s1 $tmp >$tmp.out 2>&1
+logger_pid=$pid
+
+# this sleep is necessary to allow pmlogger to start up properly
+# before running pmlc
+pmsleep 1.1
+
+pmlc <<End-of-File
+connect $logger_pid
+log mandatory on 10 msec sample.bin
+End-of-File
+
+_wait_pmlogger_end $logger_pid
+_filter_pmlogger_log <$tmp.log
diff --git a/qa/132.out b/qa/132.out
new file mode 100644
index 0000000..48990fc
--- /dev/null
+++ b/qa/132.out
@@ -0,0 +1,22 @@
+QA output created by 132
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory on 0.0 sec
+ metric: sample.bin
+ instance: bin-100
+ instance: bin-200
+ instance: bin-300
+ instance: bin-400
+ instance: bin-500
+ instance: bin-600
+ instance: bin-700
+ instance: bin-800
+ instance: bin-900
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
diff --git a/qa/133 b/qa/133
new file mode 100755
index 0000000..3b94e12
--- /dev/null
+++ b/qa/133
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 133
+# Verify log volume switching for pmlc/pmlogger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+# real QA test starts here
+$sudo rm -f $tmp.*
+_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+
+pmsleep 1.1
+
+pmlc <<End-of-File
+connect $pid
+log mandatory on 500 msec pmcd.numagents
+End-of-File
+
+pmsleep 1.1
+pmlc <<End-of-File
+connect $pid
+new volume
+End-of-File
+
+pmsleep 1.1
+pmlc <<End-of-File
+connect $pid
+new volume
+End-of-File
+
+pmsleep 1.1
+$sudo $signal -s HUP $pid
+pmsleep 1.1
+$sudo $signal -s HUP $pid
+
+pmsleep 1.1
+pmlc <<End-of-File
+connect $pid
+new volume
+End-of-File
+
+pmsleep 1.1
+pmlc <<End-of-File
+connect $pid
+new volume
+End-of-File
+
+pmsleep 1.1
+$sudo $signal -s TERM $pid
+_wait_pmlogger_end $pid
+_filter_pmlogger_log <$tmp.log
+$sudo rm -f $tmp.log
+
+# be careful of $tmp.pid $tmp.err $tmp.cmd and so on from earlier
+nfile=`echo $tmp.[0-9]* ${tmp}.*index ${tmp}.*meta | wc -w | tr -d ' '`
+echo "Created $nfile archive pieces."
+if [ $nfile -ne 9 ]
+then
+ echo "Expected 10 archive pieces ..."
+ ls -l $tmp.*
+fi
+
+pmdumplog -t $tmp \
+| _filter_pmdumplog \
+| $PCP_AWK_PROG '
+$1 == "TIMESTAMP" && NF == 4 { print "TIMESTAMP " $2 " OFFSET OFFSET"; next }
+ { print }'
diff --git a/qa/133.out b/qa/133.out
new file mode 100644
index 0000000..7258746
--- /dev/null
+++ b/qa/133.out
@@ -0,0 +1,33 @@
+QA output created by 133
+New log volume 1
+New log volume 2
+New log volume 5
+New log volume 6
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory on 0.5 sec
+ metric: pmcd.numagents
+New log volume 1, via pmlc request at DATE
+New log volume 2, via pmlc request at DATE
+New log volume 3, via SIGHUP at DATE
+New log volume 4, via SIGHUP at DATE
+New log volume 5, via pmlc request at DATE
+New log volume 6, via pmlc request at DATE
+
+Log finished DATE
+Created 9 archive pieces.
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 1 OFFSET OFFSET
+TIMESTAMP 2 OFFSET OFFSET
+TIMESTAMP 3 OFFSET OFFSET
+TIMESTAMP 4 OFFSET OFFSET
+TIMESTAMP 5 OFFSET OFFSET
+TIMESTAMP 6 OFFSET OFFSET
diff --git a/qa/134 b/qa/134
new file mode 100755
index 0000000..b1ef8fe
--- /dev/null
+++ b/qa/134
@@ -0,0 +1,197 @@
+#! /bin/sh
+# PCP QA Test No. 134
+# Check pmGetArchiveEnd for multi-volume logs
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+_do_ls()
+{
+ eval `cat $tmp.last`
+ $PCP_AWK_PROG '
+/Cannot/ { print; next }
+ { print $9,$5,"bytes" }' \
+ | sed -e "s;$tmp;MYLOG;" \
+ | $PCP_AWK_PROG '
+BEGIN { l0='$l0'; l1='$l1' }
+$1 ~ /\.1$/ { if (l1 == 0) {
+ if ($2 == 132)
+ print $1,"initial OK"
+ else
+ print $1,"initial BAD - ",$2
+ }
+ else if (l1 == $2)
+ print $1,"unchanged"
+ else
+ print $1,"incr",$2-l1,"bytes"
+ l1=$2
+ next
+ }
+$1 ~ /\.0$/ { if (l0 == 0) {
+ if ($2 > 200 && $2 < 400)
+ print $1,"initial OK"
+ else
+ print $1,"initial BAD - ",$2
+ }
+ else if (l0 == $2)
+ print $1,"unchanged"
+ else
+ print $1,"incr",$2-l0,"bytes"
+ l0=$2
+ next
+ }
+ { print }
+END { print "l0=" l0 " l1=" l1 >"'$tmp.last'" }'
+ echo "end _do_ls $tmp.last: `cat $tmp.last`" >>$seq.full
+
+}
+
+_do_time()
+{
+ tstamp=`wc -l <$tmp.sed | sed -e 's/ *//g'`
+ tstamp=`expr $tstamp - 2`
+ sed >$tmp.tmp \
+ -e "s;$tmp;MYLOG;" \
+ -e 's/from host .*/from host LOCALHOST/' \
+ -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
+ -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd.pmlogger.archive/s/value ".*/value "PATH"/'
+ sed -n <$tmp.tmp \
+ -e 's/.*\([0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]\).*/\1/p' \
+ | LC_COLLATE=POSIX sort -u \
+ | while read time
+ do
+ if grep $time $tmp.sed >/dev/null
+ then
+ :
+ else
+ echo "s/$time/TIMESTAMP-$tstamp/g" >>$tmp.sed
+ tstamp=`expr $tstamp + 1`
+ fi
+ done
+
+ sed -f $tmp.sed $tmp.tmp \
+ | $PCP_AWK_PROG '
+$1 ~ /TIMESTAMP/ && NF == 4 { print $1 " " $2 " OFFSET OFFSET"; next }
+ { print }'
+}
+
+_do_metrics()
+{
+ echo "Metrics in archive:"
+ egrep 'sample|pmcd' \
+ | sed -e 's/.*(//' -e 's/).*//' -e 's/^/ /'
+}
+
+# real QA test starts here
+$sudo rm -f $tmp.* $seq.full
+
+echo 's/ [A-Z][a-z][a-z] [A-Z][a-z][a-z] .. / month-day /g' >$tmp.sed
+echo 's/ [12][0-9][0-9][0-9]$/ year/' >>$tmp.sed
+echo "l0=0 l1=0" >$tmp.last
+echo "init $tmp.last: `cat $tmp.last`" >>$seq.full
+
+_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp
+_wait_for_pmlogger $pid $tmp.log
+
+echo
+echo "=== logger started, nothing logged ==="
+echo "=== logger started, nothing logged ===" >>$seq.full
+LC_TIME=POSIX ls -l $tmp.? 2>&1 | tee -a $seq.full | _do_ls
+pmdumplog -lt $tmp 2>&1 | tee -a $seq.full | _do_time
+pmdumplog $tmp | tee -a $seq.full | _do_metrics
+
+pmlc <<End-of-File
+connect $pid
+log mandatory on once pmcd.control.register["0"]
+End-of-File
+pmsleep 1.1
+echo flush | pmlc $pid >/dev/null
+
+echo
+echo "=== first volume, one result ==="
+echo "=== first volume, one result ===" >>$seq.full
+LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
+pmdumplog -lt $tmp | tee -a $seq.full | _do_time
+pmdumplog $tmp | tee -a $seq.full | _do_metrics
+
+pmlc <<End-of-File
+connect $pid
+new volume
+End-of-File
+pmsleep 1.1
+
+echo
+echo "=== second empty volume ==="
+echo "=== second empty volume ===" >>$seq.full
+LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
+pmdumplog -lt $tmp | tee -a $seq.full | _do_time
+pmdumplog $tmp | tee -a $seq.full | _do_metrics
+
+pmlc <<End-of-File
+connect $pid
+log mandatory on once pmcd.control.register["0"]
+End-of-File
+pmsleep 1.1
+echo flush | pmlc $pid >/dev/null
+
+echo
+echo "=== second volume, one result ==="
+echo "=== second volume, one result ===" >>$seq.full
+LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
+pmdumplog -lt $tmp | tee -a $seq.full | _do_time
+pmdumplog $tmp | tee -a $seq.full | _do_metrics
+
+pmlc <<End-of-File
+connect $pid
+log mandatory on once {
+ pmcd.control.debug
+ pmcd.control.timeout
+ sample.bin
+}
+End-of-File
+pmsleep 1.1
+pmlc <<End-of-File
+connect $pid
+log mandatory on once pmcd.control.register["0"]
+End-of-File
+pmsleep 1.1
+echo flush | pmlc $pid >/dev/null
+
+echo
+echo "=== second volume, second + third result ==="
+echo "=== second volume, second + third result ===" >>$seq.full
+LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
+pmdumplog -lt $tmp | tee -a $seq.full | _do_time
+pmdumplog $tmp | tee -a $seq.full | _do_metrics
+
+$sudo $signal -s TERM $pid
+_wait_pmlogger_end $pid
+
+echo
+echo "=== logger done ==="
+echo "=== logger done ===" >>$seq.full
+LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
+pmdumplog -lt $tmp | tee -a $seq.full | _do_time
+pmdumplog $tmp | tee -a $seq.full | _do_metrics
+
+# save the archive files for post-mortem test failure analysis
+#
+for i in 0 1 meta index
+do
+ cp ${tmp}.$i $seq.full.$i
+done
+
+exit 0
diff --git a/qa/134.out b/qa/134.out
new file mode 100644
index 0000000..9701cc4
--- /dev/null
+++ b/qa/134.out
@@ -0,0 +1,122 @@
+QA output created by 134
+
+=== logger started, nothing logged ===
+MYLOG.0 initial OK
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-0 year
+
+Temporal Index
+ month-day end(meta) end(log)
+TIMESTAMP-0 0 OFFSET OFFSET
+Metrics in archive:
+ pmcd.pmlogger.host
+ pmcd.pmlogger.port
+ pmcd.pmlogger.archive
+
+=== first volume, one result ===
+MYLOG.0 incr 40 bytes
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-1 year
+
+Temporal Index
+ month-day end(meta) end(log)
+TIMESTAMP-0 0 OFFSET OFFSET
+TIMESTAMP-1 0 OFFSET OFFSET
+Metrics in archive:
+ pmcd.pmlogger.host
+ pmcd.pmlogger.port
+ pmcd.pmlogger.archive
+ pmcd.control.register
+New log volume 1
+
+=== second empty volume ===
+MYLOG.0 unchanged
+MYLOG.1 initial OK
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-1 year
+
+Temporal Index
+ month-day end(meta) end(log)
+TIMESTAMP-0 0 OFFSET OFFSET
+TIMESTAMP-1 0 OFFSET OFFSET
+Metrics in archive:
+ pmcd.pmlogger.host
+ pmcd.pmlogger.port
+ pmcd.pmlogger.archive
+ pmcd.control.register
+
+=== second volume, one result ===
+MYLOG.0 unchanged
+MYLOG.1 incr 40 bytes
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-2 year
+
+Temporal Index
+ month-day end(meta) end(log)
+TIMESTAMP-0 0 OFFSET OFFSET
+TIMESTAMP-1 0 OFFSET OFFSET
+TIMESTAMP-2 1 OFFSET OFFSET
+Metrics in archive:
+ pmcd.pmlogger.host
+ pmcd.pmlogger.port
+ pmcd.pmlogger.archive
+ pmcd.control.register
+ pmcd.control.register
+
+=== second volume, second + third result ===
+MYLOG.0 unchanged
+MYLOG.1 incr 184 bytes
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-4 year
+
+Temporal Index
+ month-day end(meta) end(log)
+TIMESTAMP-0 0 OFFSET OFFSET
+TIMESTAMP-1 0 OFFSET OFFSET
+TIMESTAMP-2 1 OFFSET OFFSET
+TIMESTAMP-3 1 OFFSET OFFSET
+Metrics in archive:
+ pmcd.pmlogger.host
+ pmcd.pmlogger.port
+ pmcd.pmlogger.archive
+ pmcd.control.register
+ pmcd.control.register
+ sample.bin
+ pmcd.control.timeout
+ pmcd.control.debug
+ pmcd.control.register
+
+=== logger done ===
+MYLOG.0 unchanged
+MYLOG.1 unchanged
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-4 year
+
+Temporal Index
+ month-day end(meta) end(log)
+TIMESTAMP-0 0 OFFSET OFFSET
+TIMESTAMP-1 0 OFFSET OFFSET
+TIMESTAMP-2 1 OFFSET OFFSET
+TIMESTAMP-3 1 OFFSET OFFSET
+Metrics in archive:
+ pmcd.pmlogger.host
+ pmcd.pmlogger.port
+ pmcd.pmlogger.archive
+ pmcd.control.register
+ pmcd.control.register
+ sample.bin
+ pmcd.control.timeout
+ pmcd.control.debug
+ pmcd.control.register
diff --git a/qa/135 b/qa/135
new file mode 100755
index 0000000..02f131c
--- /dev/null
+++ b/qa/135
@@ -0,0 +1,109 @@
+#! /bin/sh
+# PCP QA Test No. 135
+# Simple forwards and backwards scan of a multi-volume log
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+_do_time()
+{
+ tstamp=`wc -l <$tmp.sed | sed -e 's/ *//g'`
+ tstamp=`expr $tstamp - 2`
+ sed >$tmp.tmp \
+ -e "s;$tmp;MYLOG;" \
+ -e 's/from host .*/from host LOCALHOST/' \
+ -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
+ -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd.pmlogger.archive/s/value ".*/value "PATH"/'
+ sed -n <$tmp.tmp \
+ -e 's/.*\([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]\).*/\1/p' \
+ | LC_COLLATE=POSIX sort -u \
+ | while read time
+ do
+ if grep $time $tmp.sed >/dev/null
+ then
+ :
+ else
+ echo "s/$time/TIMESTAMP-$tstamp/g" >>$tmp.sed
+ tstamp=`expr $tstamp + 1`
+ fi
+ done
+
+ sed <$tmp.sed >$tmp.sed.tmp \
+ -e '${
+s/^s/xs/
+s/TIME/FOO/
+}' \
+ -e '4,${
+s/^s\//\//
+s/.TIME.*/\/d/
+}' \
+ -e '${
+s/^xs/s/
+s/FOO/TIME/
+s/P-.*/P-LAST\//
+}'
+ mv $tmp.sed.tmp $tmp.sed
+
+ sed -f $tmp.sed $tmp.tmp \
+ | sed -e 's/value .*/value .../' \
+ -e 's/ [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/ hh:mm:ss/'
+}
+
+# real QA test starts here
+$sudo rm -f $tmp.*
+
+echo 's/ [A-Z][a-z][a-z] [A-Z][a-z][a-z] .. / month-day /g' >$tmp.sed
+echo 's/ [12][0-9][0-9][0-9]/ year/' >>$tmp.sed
+
+_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+logger_pid=$pid
+
+pmsleep 1.1
+
+pmlc <<End-of-File
+connect $logger_pid
+log mandatory on 100 msec sampledso.milliseconds
+End-of-File
+
+for i in 1 2 3 4 5
+do
+ pmsleep 0.5
+ pmlc <<End-of-File
+connect $logger_pid
+new volume
+End-of-File
+done
+
+pmsleep 0.5
+$sudo $signal -s TERM $logger_pid
+_wait_pmlogger_end $logger_pid
+
+echo
+echo "=== forwards ==="
+pmdumplog -lm $tmp | sed -e '/^$/d' | tee $tmp.list | _do_time
+LC_COLLATE=POSIX sort -o $tmp.list $tmp.list
+
+echo
+echo "=== backwards ==="
+pmdumplog -lmr $tmp | sed -e '/^$/d' | tee $tmp.rev | _do_time
+sed -e '/dump in reverse order/d' $tmp.rev \
+| LC_COLLATE=POSIX sort -o $tmp.rev
+
+echo
+echo "=== expect no differences ==="
+diff $tmp.list $tmp.rev
+
+exit 0
diff --git a/qa/135.out b/qa/135.out
new file mode 100644
index 0000000..7d4ea30
--- /dev/null
+++ b/qa/135.out
@@ -0,0 +1,29 @@
+QA output created by 135
+New log volume 1
+New log volume 2
+New log volume 3
+New log volume 4
+New log volume 5
+
+=== forwards ===
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-LAST year
+TIMESTAMP-0 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value ...
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value ...
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value ...
+TIMESTAMP-LAST 30.0.3 (sampledso.milliseconds): value ...
+
+=== backwards ===
+Log Label (Log Format Version 2)
+Performance metrics from host LOCALHOST
+ commencing month-day TIMESTAMP-0 year
+ ending month-day TIMESTAMP-LAST year
+Log finished at month-day hh:mm:ss year - dump in reverse order
+TIMESTAMP-LAST 30.0.3 (sampledso.milliseconds): value ...
+TIMESTAMP-0 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value ...
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value ...
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value ...
+
+=== expect no differences ===
diff --git a/qa/136 b/qa/136
new file mode 100755
index 0000000..936bd21
--- /dev/null
+++ b/qa/136
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 136
+# exercise the -v N option to pmlogger to volume switch after N samples
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+
+_do_ls()
+{
+ $PCP_AWK_PROG '
+/Cannot/ { print; next }
+ { print $9,int($5/100)*100 "-" 100+int($5/100)*100,"bytes" }' \
+ | sed -e "s;$tmp;MYLOG;"
+}
+
+_do_time()
+{
+ tstamp=`wc -l <$tmp.sed | sed -e 's/ *//g'`
+ tstamp=`expr $tstamp - 2`
+ sed >$tmp.tmp \
+ -e "s;$tmp;MYLOG;" \
+ -e 's/from host .*/from host LOCALHOST/'
+ sed -n <$tmp.tmp \
+ -e 's/.*\([0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]\).*/\1/p' \
+ | sort -u \
+ | while read time
+ do
+ if grep $time $tmp.sed >/dev/null
+ then
+ :
+ else
+ echo "s/$time/TIMESTAMP-$tstamp/g" >>$tmp.sed
+ tstamp=`expr $tstamp + 1`
+ fi
+ done
+
+ sed -f $tmp.sed $tmp.tmp
+}
+
+# real QA test starts here
+$sudo rm -f $tmp.*
+echo 's/ [A-Z][a-z][a-z] [A-Z][a-z][a-z] .. / month-day /g' >$tmp.sed
+echo 's/ [12][0-9][0-9][0-9]$/ year/' >>$tmp.sed
+
+_start_up_pmlogger -s 50 -v 10 -L -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+pmsleep 1.1
+
+pmlc <<End-of-File
+connect $pid
+log mandatory on 100 msec { sampledso.milliseconds }
+End-of-File
+
+_wait_pmlogger_end $pid
+
+# write a fixed length hostname into log label (for dumplog determinism)
+$sudo pmloglabel -h qahost $tmp
+
+LC_TIME=POSIX ls -l $tmp.? | _do_ls
+
+echo
+pmdumplog -t $tmp | _do_time \
+| $PCP_AWK_PROG '
+$1 ~ /TIMESTAMP/ && NF == 4 { print $1 " " $2 " OFFSET OFFSET"; next }
+ { print }'
+
+echo
+echo "=== samples, expect 50 + 3 for preamble ==="
+pmdumplog -m $tmp | sed -e '/^$/d' | wc -l | sed -e 's/ *//g'
diff --git a/qa/136.out b/qa/136.out
new file mode 100644
index 0000000..7ca3e5f
--- /dev/null
+++ b/qa/136.out
@@ -0,0 +1,19 @@
+QA output created by 136
+MYLOG.0 700-800 bytes
+MYLOG.1 600-700 bytes
+MYLOG.2 600-700 bytes
+MYLOG.3 600-700 bytes
+MYLOG.4 600-700 bytes
+
+
+Temporal Index
+ month-day end(meta) end(log)
+TIMESTAMP-0 0 OFFSET OFFSET
+TIMESTAMP-1 1 OFFSET OFFSET
+TIMESTAMP-2 2 OFFSET OFFSET
+TIMESTAMP-3 3 OFFSET OFFSET
+TIMESTAMP-4 4 OFFSET OFFSET
+TIMESTAMP-5 4 OFFSET OFFSET
+
+=== samples, expect 50 + 3 for preamble ===
+53
diff --git a/qa/137 b/qa/137
new file mode 100755
index 0000000..ea5958a
--- /dev/null
+++ b/qa/137
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 137
+# exercise dbpmda
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's,/[^/]*\.pmda,/ISA.pmda,' \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e "s/\.$DSO_SUFFIX/.\$DSO_SUFFIX/" \
+ | _filter_dumpresult
+}
+
+# make sure the simple PMDA has been made (binaries and the help
+# text ... Installing it is the only safe way)
+#
+( cd $PCP_PMDAS_DIR/simple; $sudo ./Install ) </dev/null >/dev/null 2>&1
+
+# real QA test starts here
+$sudo dbpmda -n $PCP_PMDAS_DIR/simple/root -ie <<End-of-File 2>&1 | _filter
+open dso $PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX simple_init 253
+getdesc on
+desc simple.numfetch
+fetch simple.numfetch
+desc simple.color
+fetch simple.color
+instance 253.0
+End-of-File
+
+exit 0
diff --git a/qa/137.out b/qa/137.out
new file mode 100644
index 0000000..f135321
--- /dev/null
+++ b/qa/137.out
@@ -0,0 +1,29 @@
+QA output created by 137
+dbpmda> open dso $PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX simple_init 253
+dbpmda> getdesc on
+dbpmda> desc simple.numfetch
+PMID: 253.0.0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+dbpmda> fetch simple.numfetch
+PMID(s): 253.0.0
+pmResult ... numpmid: 1
+ 253.0.0 (simple.numfetch): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+dbpmda> desc simple.color
+PMID: 253.0.1
+ Data Type: 32-bit int InDom: 253.0 0x3f400000
+ Semantics: instant Units: none
+dbpmda> fetch simple.color
+PMID(s): 253.0.1
+pmResult ... numpmid: 1
+ 253.0.1 (simple.color): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> instance 253.0
+pmInDom: 253.0
+[ 0] inst: 0 name: "red"
+[ 1] inst: 1 name: "green"
+[ 2] inst: 2 name: "blue"
+dbpmda>
diff --git a/qa/138 b/qa/138
new file mode 100755
index 0000000..78eec37
--- /dev/null
+++ b/qa/138
@@ -0,0 +1,52 @@
+#! /bin/sh
+# PCP QA Test No. 138
+# new PMNS specification parser, thanks to white space from GNU cpp
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+cat <<End-of-File >$tmp
+root {
+ one 1:2:3 /* valid */
+ a
+ b
+ c
+}
+
+a {
+ two 1 :3:4 /* 1st colon space after */
+ three 1: 3:5 /* 1st colon space before */
+ four 1 : 3:6 /* 1st colon space after and before */
+}
+
+b {
+ two 1:4 :4 /* 2nd colon space after */
+ three 1:4: 5 /* 2nd colon space before */
+ four 1:4 : 6 /* 2nd colon space after and before */
+}
+
+c {
+ two 1 :5 :4 /* both colon space after */
+ three 1: 5: 5 /* both colon space before */
+ four 1 : 5 : 6 /* both colon space after and before */
+}
+End-of-File
+
+pminfo -m -n $tmp
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -f -n $tmp $tmp.bin
+ pminfo -m -n $tmp
+fi
diff --git a/qa/138.out b/qa/138.out
new file mode 100644
index 0000000..e13cfbb
--- /dev/null
+++ b/qa/138.out
@@ -0,0 +1,11 @@
+QA output created by 138
+one PMID: 1.2.3
+a.two PMID: 1.3.4
+a.three PMID: 1.3.5
+a.four PMID: 1.3.6
+b.two PMID: 1.4.4
+b.three PMID: 1.4.5
+b.four PMID: 1.4.6
+c.two PMID: 1.5.4
+c.three PMID: 1.5.5
+c.four PMID: 1.5.6
diff --git a/qa/138.out.1 b/qa/138.out.1
new file mode 100644
index 0000000..2c45614
--- /dev/null
+++ b/qa/138.out.1
@@ -0,0 +1,26 @@
+QA output created by 138
+one PMID: 1.2.3
+a.two PMID: 1.3.4
+a.three PMID: 1.3.5
+a.four PMID: 1.3.6
+b.two PMID: 1.4.4
+b.three PMID: 1.4.5
+b.four PMID: 1.4.6
+c.two PMID: 1.5.4
+c.three PMID: 1.5.5
+c.four PMID: 1.5.6
+Compiled PMNS contains
+ 7 hash table entries
+ 10 leaf nodes
+ 4 non-leaf nodes
+ 60 bytes of symbol table
+one PMID: 1.2.3
+a.two PMID: 1.3.4
+a.three PMID: 1.3.5
+a.four PMID: 1.3.6
+b.two PMID: 1.4.4
+b.three PMID: 1.4.5
+b.four PMID: 1.4.6
+c.two PMID: 1.5.4
+c.three PMID: 1.5.5
+c.four PMID: 1.5.6
diff --git a/qa/138.out.2 b/qa/138.out.2
new file mode 100644
index 0000000..e13cfbb
--- /dev/null
+++ b/qa/138.out.2
@@ -0,0 +1,11 @@
+QA output created by 138
+one PMID: 1.2.3
+a.two PMID: 1.3.4
+a.three PMID: 1.3.5
+a.four PMID: 1.3.6
+b.two PMID: 1.4.4
+b.three PMID: 1.4.5
+b.four PMID: 1.4.6
+c.two PMID: 1.5.4
+c.three PMID: 1.5.5
+c.four PMID: 1.5.6
diff --git a/qa/139 b/qa/139
new file mode 100755
index 0000000..1ff76cf
--- /dev/null
+++ b/qa/139
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 139
+# Illegal/unknown metrics to pmlc
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/ on /d' -e '/ off /d' -e '/^$/d' \
+ -e 's/Version [0-9].*/Version VERSION/' \
+ -e '/sample\.dynamic/d' \
+ -e '/no instances/d' \
+ -e '/sample\.many\./d'\
+ -e '/sample\.bigid/d' \
+ -e '/sample\.byte_/d' \
+ -e '/sample\.kbyte_/d' \
+ -e '/sample\.datasize/d' \
+ -e '/sample\.darkness/d' \
+
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+pmlc -ie <<End-of-File | _filter
+connect primary
+query no_such_metric
+query sample.bad.unknown
+query sample.bad.nosupport
+query sample.bad
+query sample
+End-of-File
diff --git a/qa/139.out b/qa/139.out
new file mode 100644
index 0000000..179d4c9
--- /dev/null
+++ b/qa/139.out
@@ -0,0 +1,164 @@
+QA output created by 139
+Warning [<stdin>, line 2]
+Problem with lookup for metric "no_such_metric" ...
+Reason: Unknown metric name
+Logging statement ignored due to error(s)
+Warning [<stdin>, line 3]
+Problem with lookup for metric "sample.bad.unknown" ...
+Logging statement ignored due to error(s)
+Warning [<stdin>, line 4]
+Problem with lookup for metric "sample.bad.nosupport" ...
+Logging statement ignored due to error(s)
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+pmlc commands
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+ log mandatory maybe _metric-list
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+pmlc> connect primary
+pmlc> query no_such_metric
+pmlc> query sample.bad.unknown
+pmlc> query sample.bad.nosupport
+pmlc> query sample.bad
+sample.bad.novalues
+pmlc> query sample
+sample.control
+sample.daemon_pid
+sample.seconds
+sample.milliseconds
+sample.load
+sample.colour
+sample.bin
+sample.bucket
+sample.part_bin
+sample.bogus_bin
+sample.drift
+sample.step
+sample.step_counter
+sample.mirage
+sample.mirage_longlong
+sample.write_me
+sample.lights
+sample.magnitude
+sample.sysinfo
+sample.pdu
+sample.recv_pdu
+sample.xmit_pdu
+sample.noinst
+sample.needprofile
+sample.not_ready
+sample.rapid
+sample.error_code
+sample.error_check
+sample.secret.foo.bar.max.redirect
+sample.secret.bar
+sample.secret.foo.one
+sample.secret.foo.two
+sample.secret.foo.bar.three
+sample.secret.foo.bar.four
+sample.secret.foo.bar.grunt.five
+sample.secret.foo.bar.grunt.snort.six
+sample.secret.foo.bar.grunt.snort.huff.puff.seven
+sample.long.one
+sample.long.ten
+sample.long.hundred
+sample.long.million
+sample.long.write_me
+sample.long.bin
+sample.long.bin_ctr
+sample.ulong.one
+sample.ulong.ten
+sample.ulong.hundred
+sample.ulong.million
+sample.ulong.write_me
+sample.ulong.bin
+sample.ulong.bin_ctr
+sample.ulong.count.base
+sample.ulong.count.deca
+sample.ulong.count.hecto
+sample.ulong.count.kilo
+sample.ulong.count.mega
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.longlong.bin
+sample.longlong.bin_ctr
+sample.ulonglong.one
+sample.ulonglong.ten
+sample.ulonglong.hundred
+sample.ulonglong.million
+sample.ulonglong.write_me
+sample.ulonglong.bin
+sample.ulonglong.bin_ctr
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.float.bin
+sample.float.bin_ctr
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.double.bin
+sample.double.bin_ctr
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+sample.hordes.one
+sample.hordes.two
+sample.bad.novalues
+sample.wrap.long
+sample.wrap.ulong
+sample.wrap.longlong
+sample.wrap.ulonglong
+sample.dodgey.control
+sample.dodgey.value
+sample.scale_step.bytes_up
+sample.scale_step.bytes_down
+sample.scale_step.count_up
+sample.scale_step.count_down
+sample.scale_step.time_up_secs
+sample.scale_step.time_up_nanosecs
+sample.scale_step.none_up
+sample.const_rate.value
+sample.const_rate.gradient
+sample.scramble.version
+sample.scramble.bin
+sample.percontext.pdu
+sample.percontext.recv_pdu
+sample.percontext.xmit_pdu
+sample.percontext.control.ctx
+sample.percontext.control.active
+sample.percontext.control.start
+sample.percontext.control.end
+sample.event.records
+sample.event.highres_records
+sample.event.no_indom_records
+sample.event.reset
+sample.event.reset_highres
+sample.event.type
+sample.event.param_32
+sample.event.param_u32
+sample.event.param_64
+sample.event.param_u64
+sample.event.param_float
+sample.event.param_double
+sample.event.param_string
+sample.event.param_aggregate
+pmlc>
diff --git a/qa/140 b/qa/140
new file mode 100755
index 0000000..6b6e711
--- /dev/null
+++ b/qa/140
@@ -0,0 +1,54 @@
+#! /bin/sh
+# PCP QA Test No. 140
+# strange include file processing by pmnscomp
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# this test and the web pmda are not good friends
+#
+if [ -d $PCP_PMDAS_DIR/web ]
+then
+ if pminfo web 2>&1 | grep "Error: web: Unknown metric name" >/dev/null
+ then
+ :
+ else
+ # remove web from namespace
+ cd $PCP_PMDAS_DIR/web
+ $sudo ./Remove
+ cd $here
+ fi
+fi
+
+# real QA test starts here
+
+cd $PCP_VAR_DIR/pmns
+$sudo rm -f /tmp/pmcd
+echo "=== no /tmp/pmcd ==="
+$sudo ./Rebuild >$tmp.out 2>&1
+if grep -i error $tmp.out >/dev/null
+then
+ echo "Failed!"
+ cat $tmp.out
+fi
+
+touch /tmp/pmcd
+echo "=== empty /tmp/pmcd ==="
+$sudo ./Rebuild >$tmp.out 2>&1
+if grep -i error $tmp.out >/dev/null
+then
+ echo "Failed!"
+ cat $tmp.out
+fi
+
+rm -f /tmp/pmcd
+exit 0
diff --git a/qa/140.out b/qa/140.out
new file mode 100644
index 0000000..64ecc82
--- /dev/null
+++ b/qa/140.out
@@ -0,0 +1,3 @@
+QA output created by 140
+=== no /tmp/pmcd ===
+=== empty /tmp/pmcd ===
diff --git a/qa/141 b/qa/141
new file mode 100755
index 0000000..9a0cb30
--- /dev/null
+++ b/qa/141
@@ -0,0 +1,36 @@
+#!/bin/sh
+# PCP QA Test No. 141
+# pmNewContext and archive and fullpathname bug
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== bar bar ==="
+cd src
+./badloglabel bar bar
+
+echo
+echo "=== bar ./bar ==="
+./badloglabel bar ./bar
+
+echo
+echo "=== ./bar ./bar ==="
+./badloglabel ./bar ./bar
+
+echo
+echo "=== bar ...fullpath.../bar ==="
+./badloglabel bar `pwd`/bar
+
+echo
+echo "=== ...fullpath.../bar ...fullpath.../bar ==="
+./badloglabel `pwd`/bar `pwd`/bar
diff --git a/qa/141.out b/qa/141.out
new file mode 100644
index 0000000..bf85366
--- /dev/null
+++ b/qa/141.out
@@ -0,0 +1,10 @@
+QA output created by 141
+=== bar bar ===
+
+=== bar ./bar ===
+
+=== ./bar ./bar ===
+
+=== bar ...fullpath.../bar ===
+
+=== ...fullpath.../bar ...fullpath.../bar ===
diff --git a/qa/142 b/qa/142
new file mode 100755
index 0000000..4f2ad0e
--- /dev/null
+++ b/qa/142
@@ -0,0 +1,46 @@
+#! /bin/sh
+# PCP QA Test No. 142
+# memory leaks from pmlogreduce
+#
+# Note on number of samples in the output ... due to slight timestamp
+# variations, for some of the output sample intervals there are _no_
+# input records ... earlier pmlogreduce versions incorrectly generated
+# mark records in this case, but there should simply be no output record
+# for 46 of the 745 samples for this particular input archive and command
+# line arguments to pmlogreduce
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmlogreduce -Dappl2 -S 15s -t 15s src/kenj-pc-1 $tmp >$tmp.out 2>&1
+
+echo "Samples: `pmdumplog $tmp | grep '^[0-2]' | wc -l | sed -e 's/ //g'`"
+
+# echo "memusage: huge (delta 123)" >>$tmp.out
+
+# skip first 5 fetches until things settle down, real interest is in no
+# leaks for the next 740 samples
+#
+echo "Leaks: ..."
+grep memusage $tmp.out \
+| sed \
+ -e 1,5d \
+ -e '/delta 0)/d'
+
+echo
+echo "Mark records: ... (expect none)"
+pmdumplog $tmp | grep '<mark>'
+
+cp $tmp.out $seq.full
diff --git a/qa/142.out b/qa/142.out
new file mode 100644
index 0000000..f24d987
--- /dev/null
+++ b/qa/142.out
@@ -0,0 +1,5 @@
+QA output created by 142
+Samples: 699
+Leaks: ...
+
+Mark records: ... (expect none)
diff --git a/qa/143 b/qa/143
new file mode 100755
index 0000000..fe6e485
--- /dev/null
+++ b/qa/143
@@ -0,0 +1,67 @@
+#! /bin/sh
+# PCP QA Test No. 143
+# pmnsdel fails for x.x
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "cd $here; rm -rf $tmp; exit" 0 1 2 3 15
+
+# real QA test starts here
+mkdir $tmp
+cd $tmp
+cat >root <<End-of-File
+root {
+ x
+}
+#include "x"
+End-of-File
+
+cat >x <<End-of-File
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+End-of-File
+
+cat >x.x <<End-of-File
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+End-of-File
+
+cat >x.x.x <<End-of-File
+x.x.x {
+ y 3:3:3
+}
+End-of-File
+
+echo "=== PMNS from pminfo ==="
+pminfo -n root
+
+for path in x.x.x x.x x
+do
+ echo "=== remove $path ==="
+ pmnsdel -n root $path
+ for file in root x x.x x.x.x
+ do
+ [ ! -f $file ] && continue
+ echo "----------"
+ echo " $file"
+ echo "----------"
+ cat $file
+ done
+ echo "=== PMNS from pminfo ==="
+ pminfo -n root
+done
diff --git a/qa/143.out b/qa/143.out
new file mode 100644
index 0000000..ebfd0fd
--- /dev/null
+++ b/qa/143.out
@@ -0,0 +1,111 @@
+QA output created by 143
+=== PMNS from pminfo ===
+x.x.x.y
+x.x.y
+x.y
+=== remove x.x.x ===
+----------
+ root
+----------
+root {
+ x
+}
+
+x {
+ x
+ y 1:1:1
+}
+
+x.x {
+ y 2:2:2
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+x.x.y
+x.y
+=== remove x.x ===
+----------
+ root
+----------
+root {
+ x
+}
+
+x {
+ y 1:1:1
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+x.y
+=== remove x ===
+----------
+ root
+----------
+root {
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+PMNS appears to be empty!
diff --git a/qa/143.out.1 b/qa/143.out.1
new file mode 100644
index 0000000..a89918c
--- /dev/null
+++ b/qa/143.out.1
@@ -0,0 +1,126 @@
+QA output created by 143
+=== PMNS from pminfo ===
+x.x.x.y
+x.x.y
+x.y
+=== remove x.x.x ===
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 3 non-leaf nodes
+ 13 bytes of symbol table
+----------
+ root
+----------
+root {
+ x
+}
+
+x {
+ x
+ y 1:1:1
+}
+
+x.x {
+ y 2:2:2
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+x.x.y
+x.y
+=== remove x.x ===
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 2 non-leaf nodes
+ 9 bytes of symbol table
+----------
+ root
+----------
+root {
+ x
+}
+
+x {
+ y 1:1:1
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+x.y
+=== remove x ===
+Compiled PMNS contains
+ 1 hash table entries
+ 0 leaf nodes
+ 1 non-leaf nodes
+ 5 bytes of symbol table
+----------
+ root
+----------
+root {
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+PMNS appears to be empty!
diff --git a/qa/143.out.2 b/qa/143.out.2
new file mode 100644
index 0000000..ebfd0fd
--- /dev/null
+++ b/qa/143.out.2
@@ -0,0 +1,111 @@
+QA output created by 143
+=== PMNS from pminfo ===
+x.x.x.y
+x.x.y
+x.y
+=== remove x.x.x ===
+----------
+ root
+----------
+root {
+ x
+}
+
+x {
+ x
+ y 1:1:1
+}
+
+x.x {
+ y 2:2:2
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+x.x.y
+x.y
+=== remove x.x ===
+----------
+ root
+----------
+root {
+ x
+}
+
+x {
+ y 1:1:1
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+x.y
+=== remove x ===
+----------
+ root
+----------
+root {
+}
+----------
+ x
+----------
+x {
+ x
+ y 1:1:1
+}
+#include "x.x"
+----------
+ x.x
+----------
+x.x {
+ x
+ y 2:2:2
+}
+#include "x.x.x"
+----------
+ x.x.x
+----------
+x.x.x {
+ y 3:3:3
+}
+=== PMNS from pminfo ===
+PMNS appears to be empty!
diff --git a/qa/144 b/qa/144
new file mode 100755
index 0000000..2fa238e
--- /dev/null
+++ b/qa/144
@@ -0,0 +1,71 @@
+#! /bin/sh
+# PCP QA Test No. 144
+# pmlogreduce data values
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/^archive:/d' \
+ -e 's/ */ /g'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+pmlogreduce -A 30sec -t 30sec src/naslog $tmp
+
+nch_in=`wc -c <src/naslog.0 | sed -e 's/ //g'`
+nch_out=`wc -c <$tmp.0 | sed -e 's/ //g'`
+echo "Data reduction: `echo scale=4\\;$nch_out/$nch_in | bc`"
+
+# network.interface.baudrate
+# Data Type: 64-bit unsigned int InDom: 1.6 0x400006
+# Semantics: discrete Units: byte / sec
+#
+# network.interface.in.packets
+# Data Type: 32-bit unsigned int InDom: 1.6 0x400006
+# Semantics: counter Units: count
+#
+# kernel.all.load
+# Data Type: float InDom: 1.5 0x400005
+# Semantics: instant Units: none
+#
+# kernel.all.cpu.idle
+# Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+# Semantics: counter Units: millisec
+#
+# disk.all.total
+# Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+# Semantics: counter Units: count
+
+for metric in network.interface.baudrate network.interface.in.packets \
+ kernel.all.load kernel.all.cpu.idle disk.all.total
+do
+ echo
+ echo "=== $metric ==="
+ echo "=== $metric ===" >>$seq.full
+ echo "--- original ---" >>$seq.full
+ pmval -z -a src/naslog -t 30sec -A 30sec $metric 2>&1 \
+ | tee -a $seq.full \
+ | _filter >$tmp.in
+
+ echo "--- reduced ---" >>$seq.full
+ pmval -z -a $tmp -t 30sec -A 30sec $metric 2>&1 \
+ | tee -a $seq.full \
+ | _filter >$tmp.out
+ diff $tmp.in $tmp.out
+done
diff --git a/qa/144.out b/qa/144.out
new file mode 100644
index 0000000..90a0e21
--- /dev/null
+++ b/qa/144.out
@@ -0,0 +1,32 @@
+QA output created by 144
+Data reduction: .0476
+
+=== network.interface.baudrate ===
+6c6
+< end: Thu Apr 8 16:21:25 2004
+---
+> end: Thu Apr 8 16:21:00 2004
+
+=== network.interface.in.packets ===
+6c6
+< end: Thu Apr 8 16:21:25 2004
+---
+> end: Thu Apr 8 16:21:00 2004
+
+=== kernel.all.load ===
+6c6
+< end: Thu Apr 8 16:21:25 2004
+---
+> end: Thu Apr 8 16:21:00 2004
+
+=== kernel.all.cpu.idle ===
+6c6
+< end: Thu Apr 8 16:21:25 2004
+---
+> end: Thu Apr 8 16:21:00 2004
+
+=== disk.all.total ===
+6c6
+< end: Thu Apr 8 16:21:25 2004
+---
+> end: Thu Apr 8 16:21:00 2004
diff --git a/qa/145 b/qa/145
new file mode 100755
index 0000000..e8903bb
--- /dev/null
+++ b/qa/145
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 145
+# Duplicate PMIDs in the PMNS
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+_get_libpcp_config
+if $secure_sockets ; then
+ ln $seq.out.sec $seq.out || exit 1
+else
+ ln $seq.out.nonsec $seq.out || exit 1
+fi
+
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+_filter_load()
+{
+ sed -e "s#$tmp#TMP#g"
+}
+
+_filter()
+{
+ # initial ones are regular stuff ...
+ # later ones are for systems that are not network byte ordered
+ # also, deal with optional pmcd features (16 bits, error PDU).
+ #
+ sed \
+ -e 's/ fd=[0-9][0-9]*/ fd=<n>/' \
+ -e 's/dump from.*/dump from .../' \
+ -e 's/^\[[0-9][0-9]*]/[PID]/' \
+ -e 's/from=[0-9][0-9]*/from=PMCD/' \
+ -e '/^000:/{
+s/\(000:.................. \)......../\1 FROM/
+s/\(000:..............7001......... \)........ ......../\1 DATE STAMP/
+}' \
+ -e 's/ 1000000 b004007 1000000/ 1 740000b 1/' \
+ -e 's/ 1000000 201/ 1 1020000/' \
+ -e 's/ 1000000 b004007/ 1 740000b/' \
+ -e 's/ffffffff a000000/ffffffff a/' \
+ -e 's/ffffffff 3000000/ffffffff 3/' \
+ -e 's/ b004007/ 740000b/' \
+ -e 's/ 201[0-9][0-9][0-9][0-9]/ 2010000/' \
+ -e 's/ [0-9][0-9][0-9][0-9]102/ 2010000/' \
+ -e 's/ 201/ 1020000/' \
+ -e 's/ 102/ 2010000/' \
+ # end
+}
+
+# real QA test starts here
+cat >$tmp <<End-of-File
+root {
+ ten 29:0:11
+ another_ten 29:0:11
+ yet
+}
+
+yet {
+ another
+ again 29:0:11
+}
+
+yet.another {
+ ten 29:0:11
+}
+End-of-File
+
+pminfo -b1 -n $tmp 2>&1 | _filter_load
+pminfo -b1 -D1 -N $tmp -fdm 2>&1 | _filter
diff --git a/qa/145.out.nonsec b/qa/145.out.nonsec
new file mode 100644
index 0000000..7b6e198
--- /dev/null
+++ b/qa/145.out.nonsec
@@ -0,0 +1,78 @@
+QA output created by 145
+Error Parsing ASCII PMNS: Duplicate metric id (29.0.11) in name space for metrics "another_ten" and "ten"
+
+pminfo: Cannot load namespace from "TMP": Problems parsing PMNS definitions
+[PID]pmGetPDU: ERROR fd=<n> len=20 from=PMCD
+000: 14 7000 FROM 0 2010000
+[PID]pmXmitPDU: CREDS fd=<n> len=20
+000: 14 700c FROM 1 1020000
+[PID]pmXmitPDU: PROFILE fd=<n> len=28
+000: 1c 7002 FROM 0 0 0 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+
+ten PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
+
+another_ten PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
+
+yet.another.ten PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
+
+yet.again PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
diff --git a/qa/145.out.sec b/qa/145.out.sec
new file mode 100644
index 0000000..307f128
--- /dev/null
+++ b/qa/145.out.sec
@@ -0,0 +1,78 @@
+QA output created by 145
+Error Parsing ASCII PMNS: Duplicate metric id (29.0.11) in name space for metrics "another_ten" and "ten"
+
+pminfo: Cannot load namespace from "TMP": Problems parsing PMNS definitions
+[PID]pmGetPDU: ERROR fd=<n> len=20 from=PMCD
+000: 14 7000 FROM 0 17000102
+[PID]pmXmitPDU: CREDS fd=<n> len=20
+000: 14 700c FROM 1 1020000
+[PID]pmXmitPDU: PROFILE fd=<n> len=28
+000: 1c 7002 FROM 0 0 0 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 FROM 0 0 0 1 740000b
+[PID]pmGetPDU: RESULT fd=<n> len=44 from=PMCD
+000: 2c 7001 FROM DATE STAMP 1 740000b 1
+008: 0 ffffffff a
+pmResult dump from ...
+ 29.0.11 (yet.again): numval: 1 valfmt: 0 vlist[]:
+ value 10
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 FROM 740000b
+[PID]pmGetPDU: DESC fd=<n> len=32 from=PMCD
+000: 20 7005 FROM 740000b 0 ffffffff 3 0
+
+ten PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
+
+another_ten PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
+
+yet.another.ten PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
+
+yet.again PMID: 29.0.11
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 10
diff --git a/qa/146 b/qa/146
new file mode 100755
index 0000000..e08390d
--- /dev/null
+++ b/qa/146
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 146
+# exercise pmNameAll
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+cat >$tmp <<End-of-File
+root {
+ ten 29:0:11
+ another_ten 29:0:11
+ yet
+}
+
+yet {
+ another
+ again 29:0:11
+}
+
+yet.another {
+ ten 29:0:11
+}
+End-of-File
+
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -df -n $tmp $tmp.bin > $tmp.out 2>&1
+ src/nameall -n $tmp "" >> $tmp.out 2>&1
+else
+ src/nameall -N $tmp "" >> $tmp.out 2>&1
+fi
+
+sed < $tmp.out -e 's/[0-9\.]* msec/[TIME] msec/'
diff --git a/qa/146.out b/qa/146.out
new file mode 100644
index 0000000..6d88d07
--- /dev/null
+++ b/qa/146.out
@@ -0,0 +1,14 @@
+QA output created by 146
+Name space load: [TIME] msec
+29.0.11 alias ten and yet.again
+29.0.11 alias ten and yet.another.ten
+29.0.11 alias ten and another_ten
+29.0.11 alias another_ten and yet.again
+29.0.11 alias another_ten and yet.another.ten
+29.0.11 alias another_ten and ten
+29.0.11 alias yet.another.ten and yet.again
+29.0.11 alias yet.another.ten and another_ten
+29.0.11 alias yet.another.ten and ten
+29.0.11 alias yet.again and yet.another.ten
+29.0.11 alias yet.again and another_ten
+29.0.11 alias yet.again and ten
diff --git a/qa/146.out.1 b/qa/146.out.1
new file mode 100644
index 0000000..a078891
--- /dev/null
+++ b/qa/146.out.1
@@ -0,0 +1,19 @@
+QA output created by 146
+Compiled PMNS contains
+ 1 hash table entries
+ 4 leaf nodes
+ 3 non-leaf nodes
+ 43 bytes of symbol table
+Name space load: [TIME] msec
+29.0.11 alias ten and yet.again
+29.0.11 alias ten and yet.another.ten
+29.0.11 alias ten and another_ten
+29.0.11 alias another_ten and yet.again
+29.0.11 alias another_ten and yet.another.ten
+29.0.11 alias another_ten and ten
+29.0.11 alias yet.another.ten and yet.again
+29.0.11 alias yet.another.ten and another_ten
+29.0.11 alias yet.another.ten and ten
+29.0.11 alias yet.again and yet.another.ten
+29.0.11 alias yet.again and another_ten
+29.0.11 alias yet.again and ten
diff --git a/qa/146.out.2 b/qa/146.out.2
new file mode 100644
index 0000000..6d88d07
--- /dev/null
+++ b/qa/146.out.2
@@ -0,0 +1,14 @@
+QA output created by 146
+Name space load: [TIME] msec
+29.0.11 alias ten and yet.again
+29.0.11 alias ten and yet.another.ten
+29.0.11 alias ten and another_ten
+29.0.11 alias another_ten and yet.again
+29.0.11 alias another_ten and yet.another.ten
+29.0.11 alias another_ten and ten
+29.0.11 alias yet.another.ten and yet.again
+29.0.11 alias yet.another.ten and another_ten
+29.0.11 alias yet.another.ten and ten
+29.0.11 alias yet.again and yet.another.ten
+29.0.11 alias yet.again and another_ten
+29.0.11 alias yet.again and ten
diff --git a/qa/147 b/qa/147
new file mode 100755
index 0000000..6a338e3
--- /dev/null
+++ b/qa/147
@@ -0,0 +1,63 @@
+#! /bin/sh
+# PCP QA Test No. 147
+# profile exerciser for dbpmda
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e "s/\\.$DSO_SUFFIX/.\$DSO_SUFFIX/"
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+dsopmda=$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX
+pipepmda=$PCP_PMDAS_DIR/sample/pmdasample
+[ ! -f $pipepmda ] && echo "FATAL ERROR Could not find \"$pipepmda\"" && exit 1
+[ ! -f $dsopmda ] && echo "FATAL ERROR Could not find \"$dsopmda\"" && exit 1
+
+$sudo dbpmda -ie <<End-of-File 2>&1 | _filter
+open pipe $pipepmda -d 29
+getdesc on
+fetch 29.0.6
+profile 29.2 none
+profile 29.2 add 200
+profile 29.2 add 400
+profile 29.2 add 600
+profile 29.2 add 800
+fetch 29.0.6
+profile 29.2 all
+profile 29.2 delete 100
+profile 29.2 delete 300
+profile 29.2 delete 500
+profile 29.2 delete 700
+profile 29.2 delete 900
+fetch 29.0.6
+open dso $dsopmda sample_init 30
+fetch 30.0.6
+profile 30.2 none
+profile 30.2 add 200
+profile 30.2 add 400
+profile 30.2 add 600
+profile 30.2 add 800
+fetch 30.0.6
+profile 30.2 all
+profile 30.2 delete 100
+profile 30.2 delete 300
+profile 30.2 delete 500
+profile 30.2 delete 700
+profile 30.2 delete 900
+fetch 30.0.6
+End-of-File
diff --git a/qa/147.out b/qa/147.out
new file mode 100644
index 0000000..1ec65bc
--- /dev/null
+++ b/qa/147.out
@@ -0,0 +1,86 @@
+QA output created by 147
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 29
+dbpmda> getdesc on
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> profile 29.2 none
+dbpmda> profile 29.2 add 200
+dbpmda> profile 29.2 add 400
+dbpmda> profile 29.2 add 600
+dbpmda> profile 29.2 add 800
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 4 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [400 or ???] value 400
+ inst [600 or ???] value 600
+ inst [800 or ???] value 800
+dbpmda> profile 29.2 all
+dbpmda> profile 29.2 delete 100
+dbpmda> profile 29.2 delete 300
+dbpmda> profile 29.2 delete 500
+dbpmda> profile 29.2 delete 700
+dbpmda> profile 29.2 delete 900
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 4 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [400 or ???] value 400
+ inst [600 or ???] value 600
+ inst [800 or ???] value 800
+dbpmda> open dso $PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+pmResult ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> profile 30.2 none
+dbpmda> profile 30.2 add 200
+dbpmda> profile 30.2 add 400
+dbpmda> profile 30.2 add 600
+dbpmda> profile 30.2 add 800
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+pmResult ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 4 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [400 or ???] value 400
+ inst [600 or ???] value 600
+ inst [800 or ???] value 800
+dbpmda> profile 30.2 all
+dbpmda> profile 30.2 delete 100
+dbpmda> profile 30.2 delete 300
+dbpmda> profile 30.2 delete 500
+dbpmda> profile 30.2 delete 700
+dbpmda> profile 30.2 delete 900
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+pmResult ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 4 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [400 or ???] value 400
+ inst [600 or ???] value 600
+ inst [800 or ???] value 800
+dbpmda>
diff --git a/qa/148 b/qa/148
new file mode 100755
index 0000000..4356e56
--- /dev/null
+++ b/qa/148
@@ -0,0 +1,93 @@
+#! /bin/sh
+# PCP QA Test No. 148
+# validate ipc.shm metric values
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ $PCP_PLATFORM != irix ]
+then
+ echo "No ipc/shm/sem metrics yet" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# blow away any residual junk
+$sudo src/ipcs_clear
+
+
+# real QA test starts here
+#
+# assumed output format from ipcs -am
+#IPC status from /dev/kmem as of Wed Mar 26 12:23:47 1997
+#T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME
+#Shared Memory:
+#m 9 0x09e4218f --rw-r----- oracle dba oracle dba 2351167232 6159 15032 12:03:49 12:06:18 15:47:42
+#
+# build the sed filter from the heading line of the output
+#
+$sudo ipcs -am >$tmp.out
+sed -n <$tmp.out >$tmp.sed -e '/NATTCH/{
+s/./.\\(/
+s/ID/..\\)/
+s/CGROUP/&\\(/
+s/NATTCH/&\\)\\(/
+s/\(SEGSZ\).*/\1\\).*/
+s/[A-Z ]/./g
+s/^/s\//
+s/$/\/\\1 \\2 \\3\/p/
+p
+q
+}'
+echo 's/ */ /g' >>$tmp.sed
+echo 's/^ //' >>$tmp.sed
+echo 's/ $//' >>$tmp.sed
+
+grep '^m' $tmp.out \
+| sed -f $tmp.sed \
+| LC_COLLATE=POSIX sort >$tmp.ipc
+
+pminfo -F ipc.shm.nattch \
+| sed -n \
+ -e '/ inst /{
+s/.*\[//
+s/ .* value / /p
+}' \
+| LC_COLLATE=POSIX sort >$tmp.1
+
+pminfo -F ipc.shm.segsz \
+| sed -n \
+ -e '/ inst /{
+s/.*\[//
+s/ .* value / /p
+}' \
+| LC_COLLATE=POSIX sort >$tmp.2
+
+LC_COLLATE=POSIX join $tmp.1 $tmp.2 >$tmp.pcp
+
+if diff $tmp.pcp $tmp.ipc
+then
+ echo "ipc.shm and ipcs agree"
+else
+ echo "=== ipcs -am ==="
+ $sudo ipcs -am
+ echo "=== summary ==="
+ cat $tmp.ipc
+ echo "=== pminfo -F ==="
+ pminfo -F ipc.shm.nattch ipc.shm.segsz
+ echo "=== summary ==="
+ cat $tmp.pcp
+ echo "Mismatch error: summaries should be identical"
+ exit 1
+fi
+
+exit 0
diff --git a/qa/148.out b/qa/148.out
new file mode 100644
index 0000000..a371a49
--- /dev/null
+++ b/qa/148.out
@@ -0,0 +1,2 @@
+QA output created by 148
+ipc.shm and ipcs agree
diff --git a/qa/149 b/qa/149
new file mode 100755
index 0000000..6d2774f
--- /dev/null
+++ b/qa/149
@@ -0,0 +1,63 @@
+#! /bin/sh
+# PCP QA Test No. 149
+# check inst in pmResult for metrics with indom of PM_INDOM_NULL
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = irix ]
+then
+ ln $seq.out.irix $seq.out
+elif [ $PCP_PLATFORM = linux ]
+then
+ ln $seq.out.linux $seq.out
+elif [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ # same output as linux
+ ln $seq.out.linux $seq.out
+else
+ _notrun "Need qualified output for $PCP_PLATFORM"
+fi
+
+# real QA test starts here
+
+# note filter at the back end has to be aggressive because of variations
+# in the metrics coverage for the various IRIX and Linux PMDAs
+#
+src/nullinst irix hinv sample \
+| sed \
+ -e '/pmLookupDesc/d' \
+ -e '/^hinv\.ntape/d' \
+ -e '/^irix\.engr/d' \
+ -e '/^irix\.gfx/d' \
+ -e '/^irix\.xfs/d' \
+ -e '/^sample\.event\.type/d' \
+ -e '/^sample\.event\.param_/d' \
+| if [ $PCP_PLATFORM != "irix" ]
+then
+ sed \
+ -e '/disk.*bytes:/d' \
+ -e '/disk.all.avactive/d' \
+ -e '/disk.all.aveq/d' \
+ -e '/irix.mem.util/d' \
+ -e '/irix.mem.vmstat/d' \
+ -e '/rpc.client/d' \
+ -e '/rpc.server/d' \
+ -e '/nfs3*.client.calls:/d' \
+ -e '/nfs3*.server.calls:/d' \
+ -e '/kernel.all.syscall:/d' \
+ -e '/hinv.nxbow:/d'
+else
+ cat
+fi
diff --git a/qa/149.out.irix b/qa/149.out.irix
new file mode 100644
index 0000000..2a1df6a
--- /dev/null
+++ b/qa/149.out.irix
@@ -0,0 +1,2 @@
+QA output created by 149
+sample.noinst: bad numval (0)
diff --git a/qa/149.out.linux b/qa/149.out.linux
new file mode 100644
index 0000000..548df15
--- /dev/null
+++ b/qa/149.out.linux
@@ -0,0 +1,3 @@
+QA output created by 149
+sample.noinst: bad numval (0)
+sample.bad.novalues: bad numval (0)
diff --git a/qa/150 b/qa/150
new file mode 100755
index 0000000..a4b7fa1
--- /dev/null
+++ b/qa/150
@@ -0,0 +1,40 @@
+#! /bin/sh
+# PCP QA Test No. 150
+# Check for supression of instantaneous metrics that have not been
+# seen in an interval ... for pmlogreduce
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/^archive:/d' \
+ -e 's/ */ /g'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+pmlogreduce -A 30sec -t 30sec src/naslog $tmp
+
+echo "=== input archive ==="
+pmval -z -U src/naslog hinv.ncpu \
+| _filter
+
+echo "=== reduced archive ==="
+pmval -z -U $tmp hinv.ncpu \
+| _filter
+
diff --git a/qa/150.out b/qa/150.out
new file mode 100644
index 0000000..a40c392
--- /dev/null
+++ b/qa/150.out
@@ -0,0 +1,27 @@
+QA output created by 150
+=== input archive ===
+
+pmval: pmFetchArchive: End of PCP archive log
+Note: timezone set to local timezone of host "snort" from archive
+
+metric: hinv.ncpu
+host: snort
+start: Thu Apr 8 16:11:09 2004
+end: Thu Apr 8 16:21:25 2004
+semantics: discrete instantaneous value
+units: none
+samples: all
+16:11:10.106 10
+=== reduced archive ===
+
+pmval: pmFetchArchive: End of PCP archive log
+Note: timezone set to local timezone of host "snort" from archive
+
+metric: hinv.ncpu
+host: snort
+start: Thu Apr 8 16:11:30 2004
+end: Thu Apr 8 16:21:00 2004
+semantics: discrete instantaneous value
+units: none
+samples: all
+16:11:30.000 10
diff --git a/qa/151 b/qa/151
new file mode 100755
index 0000000..217311f
--- /dev/null
+++ b/qa/151
@@ -0,0 +1,175 @@
+#! /bin/sh
+# PCP QA Test No. 151
+# check the new behaviour of pmlogger_daily to collect archives
+# from longer ago than just yesterday. Based on qa/532.
+#
+# Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed -f $tmp/sed \
+ | sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/local:/HOST/g" \
+ -e "s/localhost/HOST/g" \
+ -e "s/`hostname`/HOST/g" \
+ -e "s/`hostname | sed -e 's/\..*//'`/HOST/g" \
+ -e '/\/var\/adm\/pcplog\/NOTICES/d' \
+ -e 's/-rw-r--r--\./-rw-r--r--/' \
+ | $PCP_AWK_PROG '
+/-rw-r--r--/ { print $1,"...",$5,"...",$9; next }
+ { print }' \
+ | _filter_cron_scripts
+}
+
+status=1 # failure is the default!
+trap "cd $here; $sudo rm -rf $tmp $tmp.*; $sudo mv $PCP_LOG_DIR/NOTICES.$$ $PCP_LOG_DIR/NOTICES; exit \$status" 0 1 2 3 15
+
+# take explicit control of the umask
+#
+umask 022
+
+$sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.$$
+rm -f $seq.full
+rm -rf $tmp $tmp.*
+mkdir $tmp
+mkdir $tmp/foo
+
+# real QA test starts here
+
+echo >$tmp/sed
+# unmerged archives for these days ...
+#
+for day in 0 1 2 3
+do
+ for hour in 1 4 16
+ do
+ [ $day -gt 0 -a $hour -gt 1 ] && continue
+ # aiming for the time to be hour:10, hour:20 and hour:30 on
+ # each day, even if that is ahead of NOW for today
+ #
+ now_hr=`pmdate %H`
+ hr_set=`expr $hour - $now_hr`
+ [ "$hr_set" -ge 0 ] && hr_set="+$hr_set"
+ now_min=`pmdate %M`
+ min_set10=`expr 10 - $now_min`
+ [ "$min_set10" -ge 0 ] && min_set10="+$min_set10"
+ min_set20=`expr 20 - $now_min`
+ [ "$min_set20" -ge 0 ] && min_set20="+$min_set20"
+ min_set30=`expr 30 - $now_min`
+ [ "$min_set30" -ge 0 ] && min_set30="+$min_set30"
+ namea=`pmdate -${day}d ${hr_set}H ${min_set10}M %Y%m%d.%H.%M`
+ nameb=`pmdate -${day}d ${hr_set}H ${min_set20}M %Y%m%d.%H.%M`
+ namec=`pmdate -${day}d ${hr_set}H ${min_set30}M %Y%m%d.%H.%M`
+ stampa=`echo $namea | sed -e 's/\.//g'`
+ stampb=`echo $nameb | sed -e 's/\.//g'`
+ stampc=`echo $namec | sed -e 's/\.//g'`
+ nameb=${namea}-00
+ namec=${namea}-01
+ echo "s/$namea/TODAY-$day.${hour}H.MM/g" >>$tmp/sed
+ echo "s/$nameb/TODAY-$day.${hour}H.MM-00/g" >>$tmp/sed
+ echo "s/$namec/TODAY-$day.${hour}H.MM-01/g" >>$tmp/sed
+
+ for ext in 0 index meta
+ do
+ if [ $hour -ne 4 ]
+ then
+ cp src/arch_a.$ext $tmp/$namea.$ext
+ touch -t $stampa $tmp/$namea.$ext
+ fi
+ cp src/arch_b.$ext $tmp/$nameb.$ext
+ touch -t $stampb $tmp/$nameb.$ext
+ cp src/arch_b.$ext $tmp/$namec.$ext
+ touch -t $stampc $tmp/$namec.$ext
+ done
+ done
+ echo "s/`pmdate -${day}d ${hr_set}H ${min_set10}M %Y%m%d`/TODAY-$day/g" >>$tmp/sed
+done
+
+# merged archives for these days ...
+#
+for day in 4 5 6
+do
+ # aiming for the time to be 00:10 like when cron does its stuff
+ #
+ hr_set=-`pmdate %H`
+ now_min=`pmdate %M`
+ min_set=`expr 10 - $now_min`
+ [ "$min_set" -ge 0 ] && min_set="+$min_set"
+ namea=`pmdate -${day}d ${hr_set}H ${min_set}M %Y%m%d`
+ stampa=`echo $namea | sed -e 's/\.//g'`0010
+ echo "s/$namea/TODAY-$day/g" >>$tmp/sed
+
+ for ext in 0 index meta
+ do
+ cp src/arch_a.$ext $tmp/$namea.$ext
+ touch -t $stampa $tmp/$namea.$ext
+ done
+ echo "s/$namea/TODAY-$day/g" >>$tmp/sed
+done
+
+echo "s/TODAY-0/TODAY/g" >>$tmp/sed
+echo "s/`pmdate %Y%m%d`/TODAY/g" >>$tmp/sed
+
+( cd $tmp; tar cf - *.0 *.meta *.index 2>/dev/null ) \
+| ( cd $tmp/foo; tar xpf - 2>/dev/null )
+
+echo >$tmp/control '$version=1.1
+LOCALHOSTNAME n n '"$tmp"' ./config'
+
+echo
+echo "Before ..."
+ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort | tee $tmp.before
+echo "sed ..." >>$seq.full
+cat $tmp/sed >>$seq.full
+echo "before ..." >>$seq.full
+ls -l $tmp >>$seq.full
+
+# list of culled files is in directory order, hence the cut and sort
+# complexity at the end of this pipeline
+#
+echo
+echo "pmlogger_daily -k 4 -V ..." >>$seq.full
+$sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp/control -k 4 -V 2>&1 \
+| tee -a $tmp.full \
+| _filter \
+| $PCP_AWK_PROG '
+state == 0 { print >"'$tmp.out.0'"
+ if ($0 ~ /older than 4 days/) state = 1
+ next
+ }
+state == 1 && NF == 0 { state = 2 }
+state == 1 { for (i = 1; i <= NF; i++) print $i >"'$tmp.out.1'" }'
+[ -f $tmp.out.0 ] && cat $tmp.out.0
+[ -f $tmp.out.1 ] && LC_COLLATE=POSIX sort $tmp.out.1
+
+echo "out.0 ..." >>$seq.full
+[ -f $tmp.out.0 ] && cat $tmp.out.0 >>$seq.full
+echo "out.1 ..." >>$seq.full
+[ -f $tmp.out.1 ] && cat $tmp.out.1 >>$seq.full
+
+echo
+echo "After ..."
+ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort | tee $tmp.after
+echo "after ..." >>$seq.full
+ls -l $tmp >>$seq.full
+
+echo
+echo "Differences ..."
+diff $tmp.before $tmp.after
+
+rm -rf $tmp/* $tmp.*
+
+# all done
+status=0
+exit
diff --git a/qa/151.out b/qa/151.out
new file mode 100644
index 0000000..b035631
--- /dev/null
+++ b/qa/151.out
@@ -0,0 +1,195 @@
+QA output created by 151
+
+Before ...
+TODAY-1.1H.MM-00.0
+TODAY-1.1H.MM-00.index
+TODAY-1.1H.MM-00.meta
+TODAY-1.1H.MM-01.0
+TODAY-1.1H.MM-01.index
+TODAY-1.1H.MM-01.meta
+TODAY-1.1H.MM.0
+TODAY-1.1H.MM.index
+TODAY-1.1H.MM.meta
+TODAY-2.1H.MM-00.0
+TODAY-2.1H.MM-00.index
+TODAY-2.1H.MM-00.meta
+TODAY-2.1H.MM-01.0
+TODAY-2.1H.MM-01.index
+TODAY-2.1H.MM-01.meta
+TODAY-2.1H.MM.0
+TODAY-2.1H.MM.index
+TODAY-2.1H.MM.meta
+TODAY-3.1H.MM-00.0
+TODAY-3.1H.MM-00.index
+TODAY-3.1H.MM-00.meta
+TODAY-3.1H.MM-01.0
+TODAY-3.1H.MM-01.index
+TODAY-3.1H.MM-01.meta
+TODAY-3.1H.MM.0
+TODAY-3.1H.MM.index
+TODAY-3.1H.MM.meta
+TODAY-4.0
+TODAY-4.index
+TODAY-4.meta
+TODAY-5.0
+TODAY-5.index
+TODAY-5.meta
+TODAY-6.0
+TODAY-6.index
+TODAY-6.meta
+TODAY.16H.MM-00.0
+TODAY.16H.MM-00.index
+TODAY.16H.MM-00.meta
+TODAY.16H.MM-01.0
+TODAY.16H.MM-01.index
+TODAY.16H.MM-01.meta
+TODAY.16H.MM.0
+TODAY.16H.MM.index
+TODAY.16H.MM.meta
+TODAY.1H.MM-00.0
+TODAY.1H.MM-00.index
+TODAY.1H.MM-00.meta
+TODAY.1H.MM-01.0
+TODAY.1H.MM-01.index
+TODAY.1H.MM-01.meta
+TODAY.1H.MM.0
+TODAY.1H.MM.index
+TODAY.1H.MM.meta
+TODAY.4H.MM-00.0
+TODAY.4H.MM-00.index
+TODAY.4H.MM-00.meta
+TODAY.4H.MM-01.0
+TODAY.4H.MM-01.index
+TODAY.4H.MM-01.meta
+control
+foo
+sed
+
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+Input archives to be merged:
+ TODAY-3.1H.MM
+ TODAY-3.1H.MM-00
+ TODAY-3.1H.MM-01
+Output archive files:
+-rw-r--r-- ... 455 ... TODAY-3.meta
+-rw-r--r-- ... 192 ... TODAY-3.index
+-rw-r--r-- ... 1240 ... TODAY-3.0
+Removing input archive files ... done
+Input archives to be merged:
+ TODAY-2.1H.MM
+ TODAY-2.1H.MM-00
+ TODAY-2.1H.MM-01
+Output archive files:
+-rw-r--r-- ... 455 ... TODAY-2.meta
+-rw-r--r-- ... 192 ... TODAY-2.index
+-rw-r--r-- ... 1240 ... TODAY-2.0
+Removing input archive files ... done
+Input archives to be merged:
+ TODAY-1.1H.MM
+ TODAY-1.1H.MM-00
+ TODAY-1.1H.MM-01
+Output archive files:
+-rw-r--r-- ... 455 ... TODAY-1.meta
+-rw-r--r-- ... 192 ... TODAY-1.index
+-rw-r--r-- ... 1240 ... TODAY-1.0
+Removing input archive files ... done
+Archive files older than 4 days being removed ...
+TODAY-5.0
+TODAY-5.index
+TODAY-5.meta
+TODAY-6.0
+TODAY-6.index
+TODAY-6.meta
+
+After ...
+TODAY-1.0
+TODAY-1.index
+TODAY-1.meta
+TODAY-2.0
+TODAY-2.index
+TODAY-2.meta
+TODAY-3.0
+TODAY-3.index
+TODAY-3.meta
+TODAY-4.0
+TODAY-4.index
+TODAY-4.meta
+TODAY.16H.MM-00.0
+TODAY.16H.MM-00.index
+TODAY.16H.MM-00.meta
+TODAY.16H.MM-01.0
+TODAY.16H.MM-01.index
+TODAY.16H.MM-01.meta
+TODAY.16H.MM.0
+TODAY.16H.MM.index
+TODAY.16H.MM.meta
+TODAY.1H.MM-00.0
+TODAY.1H.MM-00.index
+TODAY.1H.MM-00.meta
+TODAY.1H.MM-01.0
+TODAY.1H.MM-01.index
+TODAY.1H.MM-01.meta
+TODAY.1H.MM.0
+TODAY.1H.MM.index
+TODAY.1H.MM.meta
+TODAY.4H.MM-00.0
+TODAY.4H.MM-00.index
+TODAY.4H.MM-00.meta
+TODAY.4H.MM-01.0
+TODAY.4H.MM-01.index
+TODAY.4H.MM-01.meta
+control
+foo
+sed
+
+Differences ...
+1,27c1,9
+< TODAY-1.1H.MM-00.0
+< TODAY-1.1H.MM-00.index
+< TODAY-1.1H.MM-00.meta
+< TODAY-1.1H.MM-01.0
+< TODAY-1.1H.MM-01.index
+< TODAY-1.1H.MM-01.meta
+< TODAY-1.1H.MM.0
+< TODAY-1.1H.MM.index
+< TODAY-1.1H.MM.meta
+< TODAY-2.1H.MM-00.0
+< TODAY-2.1H.MM-00.index
+< TODAY-2.1H.MM-00.meta
+< TODAY-2.1H.MM-01.0
+< TODAY-2.1H.MM-01.index
+< TODAY-2.1H.MM-01.meta
+< TODAY-2.1H.MM.0
+< TODAY-2.1H.MM.index
+< TODAY-2.1H.MM.meta
+< TODAY-3.1H.MM-00.0
+< TODAY-3.1H.MM-00.index
+< TODAY-3.1H.MM-00.meta
+< TODAY-3.1H.MM-01.0
+< TODAY-3.1H.MM-01.index
+< TODAY-3.1H.MM-01.meta
+< TODAY-3.1H.MM.0
+< TODAY-3.1H.MM.index
+< TODAY-3.1H.MM.meta
+---
+> TODAY-1.0
+> TODAY-1.index
+> TODAY-1.meta
+> TODAY-2.0
+> TODAY-2.index
+> TODAY-2.meta
+> TODAY-3.0
+> TODAY-3.index
+> TODAY-3.meta
+31,36d12
+< TODAY-5.0
+< TODAY-5.index
+< TODAY-5.meta
+< TODAY-6.0
+< TODAY-6.index
+< TODAY-6.meta
diff --git a/qa/152 b/qa/152
new file mode 100755
index 0000000..f3bb3ba
--- /dev/null
+++ b/qa/152
@@ -0,0 +1,43 @@
+#! /bin/sh
+# PCP QA Test No. 152
+# pmcd.numclients was incorrect
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+pminfo -f pmcd.numclients >$tmp.out
+N=`sed -n '/value/s/ value //p' $tmp.out`
+sed "s/$N/N/" $tmp.out
+N=`expr $N + 4`
+
+KILL=""
+for i in 1 2 3 4
+do
+ sh -c "pmval -s2 -t5 pmcd.numagents" >/dev/null 2>&1 &
+ KILL="$KILL $!"
+done
+
+sleep 2
+pminfo -f pmcd.numclients >$tmp.out
+
+wait
+
+if grep "value $N" $tmp.out >/dev/null
+then
+ sed "s/$N/N+4/" $tmp.out
+else
+ echo "Error: expected value $N"
+ cat $tmp.out
+fi
+
+exit 0
diff --git a/qa/152.out b/qa/152.out
new file mode 100644
index 0000000..76c32ec
--- /dev/null
+++ b/qa/152.out
@@ -0,0 +1,7 @@
+QA output created by 152
+
+pmcd.numclients
+ value N
+
+pmcd.numclients
+ value N+4
diff --git a/qa/153 b/qa/153
new file mode 100755
index 0000000..080620e
--- /dev/null
+++ b/qa/153
@@ -0,0 +1,88 @@
+#! /bin/sh
+# PCP QA Test No. 153
+# Check out pmafm/mkaf changes to no longer use file(1)
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+rm -rf $tmp
+mkdir $tmp
+cp src/bar.* $tmp
+cd $tmp
+mkdir foo
+cp bar.* foo
+
+_filter()
+{
+ sed \
+ -e 's/\(Created: on \).*/\1 .../' \
+ -e 's/pmchart/kmchart/' \
+ | $PCP_AWK_PROG '
+$1 == "Archive:" { $2 = "somehost" }
+$1 == "Host:" { $2 = "somehost" }
+$2 ~ /[0-9]]$/ { $3 = "somehost" }
+ { print }'
+
+}
+
+# real QA test starts here
+
+# ok with simple files
+mkaf bar.* >f_ok
+_filter <f_ok
+
+# no such file
+echo
+mkaf bar >f_bad
+[ -f f_bad ] && _filter <f_bad
+
+# bad files ... short, not-archive
+echo
+touch short
+echo "i am not a PCP archive" >not-archive
+mkaf short not-archive >f_bad
+[ -f f_bad ] && _filter <f_bad
+echo
+mkaf * >f_ok
+[ -f f_ok ] && _filter <f_ok
+
+# should skip all but archives
+echo
+mkaf . >f_ok
+_filter <f_ok
+
+# pmafm tests
+
+# ok
+echo
+echo run pminfo -d sampledso.bin | pmafm f_ok | _filter
+
+# one missing file
+echo
+cp f_ok f_bad
+mv bar.meta oops.meta
+echo run pminfo -d sampledso.bin | pmafm f_bad | _filter
+mv oops.meta bar.meta
+
+# one bad file
+echo
+mv foo/bar.0 oops.0
+cp not-archive foo/bar.0
+echo run pminfo -d sampledso.bin | pmafm f_bad | _filter
+mv oops.0 foo/bar.0
+
+
+# success, all done
+exit
diff --git a/qa/153.out b/qa/153.out
new file mode 100644
index 0000000..010be62
--- /dev/null
+++ b/qa/153.out
@@ -0,0 +1,78 @@
+QA output created by 153
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on ...
+Creator: kmchart
+# Host Basename
+#
+Archive: somehost bar
+
+mkaf: bar: No such file
+mkaf: Warning: no PCP archives found, so no folio created
+
+mkaf: short: Not a PCP archive file
+mkaf: not-archive: Not a PCP archive file
+mkaf: Warning: no PCP archives found, so no folio created
+
+mkaf: f_bad: Not a PCP archive file
+mkaf: f_ok: Not a PCP archive file
+Searching "find foo -follow ..." done
+mkaf: not-archive: Not a PCP archive file
+mkaf: short: Not a PCP archive file
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on ...
+Creator: kmchart
+# Host Basename
+#
+Archive: somehost bar
+Archive: somehost foo/bar
+
+Searching "find . -follow ..." done
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on ...
+Creator: kmchart
+# Host Basename
+#
+Archive: somehost ./bar
+Archive: somehost ./foo/bar
+
+pmafm> Note: running pminfo serially, once per archive
+Host: somehost Archive: ./bar
+
+sampledso.bin
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+Host: somehost Archive: ./foo/bar
+
+sampledso.bin
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmafm>
+
+pminfo: Cannot open archive "./bar": Missing PCP archive log file
+pmafm> Note: running pminfo serially, once per archive
+Host: somehost Archive: ./bar
+Host: somehost Archive: ./foo/bar
+
+sampledso.bin
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmafm>
+
+pminfo: Cannot open archive "./foo/bar": Illegal label record at start of a PCP archive log file
+pmafm> Note: running pminfo serially, once per archive
+Host: somehost Archive: ./bar
+
+sampledso.bin
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+Host: somehost Archive: ./foo/bar
+pmafm>
diff --git a/qa/154 b/qa/154
new file mode 100755
index 0000000..f0f8001
--- /dev/null
+++ b/qa/154
@@ -0,0 +1,139 @@
+#! /bin/sh
+# PCP QA Test No. 154
+# what the hell is chkhelp supposed to do?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# New cisco metrics in pcp2.2
+if [ $PCP_VER -ge 2200 ]
+then
+ rm -f $seq.out && ln $seq.out.2 $seq.out
+else
+ rm -f $seq.out && ln $seq.out.1 $seq.out
+fi
+
+_filter_illegal()
+{
+ sed \
+ -e '/illegal key/s/(-*[0-9][0-9]*)/(SIZE)/' \
+ -e "s;$tmp;TMP;g"
+}
+
+_filter_chk()
+{
+ sed \
+ -e '/-v version/d' \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;"
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+cleanup=false
+if [ ! -f $PCP_PMDAS_DIR/cisco/help.pag ]
+then
+ # no compiled help text, so the cisco PMDA has never been installed
+ # here ... the only way to make this file appear is Install and Remove
+ # the PMDA ... this should be a no-op, but may take a while
+ #
+ cd $PCP_PMDAS_DIR/cisco
+ unset ROOT MAKEFLAGS
+ $sudo ./Install </dev/null >/dev/null 2>&1
+ cd $here
+ if [ ! -f $PCP_PMDAS_DIR/cisco/help.pag ]
+ then
+ echo "Arrggh, need $PCP_PMDAS_DIR/cisco/help.pag and cannot remake it!"
+ exit 1
+ fi
+ cleanup=true
+fi
+$sudo chmod 644 $PCP_PMDAS_DIR/cisco/help.*
+
+echo
+echo bad dbf
+dd if=/dev/zero ibs=1024 count=4 of=$tmp.pag >/dev/null 2>&1
+cp $tmp.pag $tmp.dir
+echo "chkhelp bad-helpfile"
+chkhelp $tmp >$tmp.out 2>&1
+status=$?
+_filter_illegal <$tmp.out
+echo status=$status
+echo "chkhelp -p bad-helpfile"
+chkhelp -p $tmp >$tmp.out 2>&1
+status=$?
+_filter_illegal <$tmp.out
+echo status=$status
+echo "chkhelp bad-helpfile cisco.rate_in"
+chkhelp $tmp cisco.rate_in 2>&1 | _filter_illegal
+echo status=$?
+
+echo
+echo "some usage failures ..."
+echo 'chkhelp -i $PCP_PMDAS_DIR/cisco/help cisco.rate_in'
+chkhelp -i $PCP_PMDAS_DIR/cisco/help cisco.rate_in 2>&1 \
+| _filter_chk
+echo 'chkhelp -p $PCP_PMDAS_DIR/cisco/help cisco.rate_in'
+chkhelp -p $PCP_PMDAS_DIR/cisco/help cisco.rate_in 2>&1 \
+| _filter_chk
+echo 'chkhelp -ip $PCP_PMDAS_DIR/cisco/help cisco.rate_in'
+chkhelp -ip $PCP_PMDAS_DIR/cisco/help cisco.rate_in 2>&1 \
+| _filter_chk
+
+echo
+echo "debug trace ..."
+echo 'chkhelp -D 2048 $PCP_PMDAS_DIR/cisco/help'
+chkhelp -D 2048 $PCP_PMDAS_DIR/cisco/help 2>&1 \
+| _filter_chk
+
+echo
+echo "exercise options ..."
+
+for h in "" -H
+do
+ for o in "" -O
+ do
+ for i in "" -i
+ do
+ for p in "" -p
+ do
+ for metric in "" cisco.rate_in "cisco.rate_in cisco.rate_out"
+ do
+ if [ "X$p" = "X-p" -o "X$i" = "X-i" ]
+ then
+ [ "X$metric" != X ] && continue
+ fi
+ echo
+ echo "args: $h $o $i $p $metric"
+ chkhelp $h $o $i $p \
+ -n $PCP_PMDAS_DIR/cisco/root \
+ $PCP_PMDAS_DIR/cisco/help $metric >$tmp.out 2>&1
+ status=$?
+ _filter_chk <$tmp.out
+ echo status=$status
+ done
+ done
+ done
+ done
+done
+
+if $cleanup
+then
+ # see comments above when help.pag created for cisco PMDA
+ #
+ cd $PCP_PMDAS_DIR/cisco
+ unset ROOT MAKEFLAGS
+ $sudo ./Remove </dev/null >/dev/null 2>&1
+ cd $here
+fi
+
+exit 0
diff --git a/qa/154.out.1 b/qa/154.out.1
new file mode 100644
index 0000000..8250612
--- /dev/null
+++ b/qa/154.out.1
@@ -0,0 +1,406 @@
+QA output created by 154
+
+bad dbf
+chkhelp bad-helpfile
+pmdaOpenHelp: failed to open "TMP": Bad format, not version 2 PCP help text
+status=1
+chkhelp -p bad-helpfile
+pmdaOpenHelp: failed to open "TMP": Bad format, not version 2 PCP help text
+status=1
+chkhelp bad-helpfile cisco.rate_in
+pmdaOpenHelp: failed to open "TMP": Bad format, not version 2 PCP help text
+status=0
+
+some usage failures ...
+chkhelp -i $PCP_PMDAS_DIR/cisco/help cisco.rate_in
+chkhelp: metric-name arguments cannot be used with -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+chkhelp -p $PCP_PMDAS_DIR/cisco/help cisco.rate_in
+chkhelp: metric-name arguments cannot be used with -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+chkhelp -ip $PCP_PMDAS_DIR/cisco/help cisco.rate_in
+chkhelp: metric-name arguments cannot be used with -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+
+debug trace ...
+chkhelp -D 2048 $PCP_PMDAS_DIR/cisco/help
+next_type=1 id=0x1400001
+next_type=1 id=0x1400002
+next_type=1 id=0x1400003
+next_type=1 id=0x1400004
+next_type=1 id=0x1400005
+next_type=2 id=0x1400001
+
+exercise options ...
+
+args:
+status=0
+
+args: cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+status=0
+
+args: cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+status=0
+
+args: -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+status=0
+
+args: -i
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -i -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -O
+chkhelp: -O or -H require metric-name arguments or -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+status=1
+
+args: -O cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+status=0
+
+args: -O cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+status=0
+
+args: -O -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+status=0
+
+args: -O -i
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -O -i -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -H
+chkhelp: -O or -H require metric-name arguments or -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+status=1
+
+args: -H cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in:
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+status=0
+
+args: -H cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in:
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.4 cisco.rate_out:
+Cisco's compute average output rate in bytes per second, over the last
+five minutes, for this interface.
+status=0
+
+args: -H -p
+
+PMID 5.0.1 cisco.bytes_in:
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out:
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in:
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.4 cisco.rate_out:
+Cisco's compute average output rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.5 cisco.bandwidth:
+status=0
+
+args: -H -i
+
+InDom 5.1:
+There is one instance in this domain for each interface on a Cisco
+router that the Cisco PMDA (Performance Metrics Domain Agent) has been
+told about when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one
+of "a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet),
+"f" for Fddi, "h" for HSSC, or "s" for Serial. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+status=0
+
+args: -H -i -p
+
+PMID 5.0.1 cisco.bytes_in:
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out:
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in:
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.4 cisco.rate_out:
+Cisco's compute average output rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.5 cisco.bandwidth:
+
+InDom 5.1:
+There is one instance in this domain for each interface on a Cisco
+router that the Cisco PMDA (Performance Metrics Domain Agent) has been
+told about when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one
+of "a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet),
+"f" for Fddi, "h" for HSSC, or "s" for Serial. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+status=0
+
+args: -H -O
+chkhelp: -O or -H require metric-name arguments or -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+status=1
+
+args: -H -O cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+status=0
+
+args: -H -O cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+Cisco's compute average output rate in bytes per second, over the last
+five minutes, for this interface.
+status=0
+
+args: -H -O -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+Cisco's compute average output rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+status=0
+
+args: -H -O -i
+
+InDom 5.1: Interfaces on Cisco router
+There is one instance in this domain for each interface on a Cisco
+router that the Cisco PMDA (Performance Metrics Domain Agent) has been
+told about when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one
+of "a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet),
+"f" for Fddi, "h" for HSSC, or "s" for Serial. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+status=0
+
+args: -H -O -i -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's compute average input rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+Cisco's compute average output rate in bytes per second, over the last
+five minutes, for this interface.
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+InDom 5.1: Interfaces on Cisco router
+There is one instance in this domain for each interface on a Cisco
+router that the Cisco PMDA (Performance Metrics Domain Agent) has been
+told about when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one
+of "a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet),
+"f" for Fddi, "h" for HSSC, or "s" for Serial. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+status=0
diff --git a/qa/154.out.2 b/qa/154.out.2
new file mode 100644
index 0000000..83c83a2
--- /dev/null
+++ b/qa/154.out.2
@@ -0,0 +1,436 @@
+QA output created by 154
+
+bad dbf
+chkhelp bad-helpfile
+pmdaOpenHelp: failed to open "TMP": Bad format, not version 2 PCP help text
+status=1
+chkhelp -p bad-helpfile
+pmdaOpenHelp: failed to open "TMP": Bad format, not version 2 PCP help text
+status=1
+chkhelp bad-helpfile cisco.rate_in
+pmdaOpenHelp: failed to open "TMP": Bad format, not version 2 PCP help text
+status=0
+
+some usage failures ...
+chkhelp -i $PCP_PMDAS_DIR/cisco/help cisco.rate_in
+chkhelp: metricname arguments cannot be used with -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -e exists check, only report metrics with no help text
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+chkhelp -p $PCP_PMDAS_DIR/cisco/help cisco.rate_in
+chkhelp: metricname arguments cannot be used with -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -e exists check, only report metrics with no help text
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+chkhelp -ip $PCP_PMDAS_DIR/cisco/help cisco.rate_in
+chkhelp: metricname arguments cannot be used with -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -e exists check, only report metrics with no help text
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+
+debug trace ...
+chkhelp -D 2048 $PCP_PMDAS_DIR/cisco/help
+next_type=1 id=0x1400001
+next_type=1 id=0x1400002
+next_type=1 id=0x1400003
+next_type=1 id=0x1400004
+next_type=1 id=0x1400005
+next_type=1 id=0x1400006
+next_type=2 id=0x1400001
+
+exercise options ...
+
+args:
+status=0
+
+args: cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+status=0
+
+args: cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+status=0
+
+args: -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+PMID 5.0.6 cisco.bytes_out_bcast: Total broadcast Kbytes output from the Cisco
+status=0
+
+args: -i
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -i -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+PMID 5.0.6 cisco.bytes_out_bcast: Total broadcast Kbytes output from the Cisco
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -O
+chkhelp: -O or -H require metricname arguments or -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -e exists check, only report metrics with no help text
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+status=1
+
+args: -O cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+status=0
+
+args: -O cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+status=0
+
+args: -O -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+PMID 5.0.6 cisco.bytes_out_bcast: Total broadcast Kbytes output from the Cisco
+status=0
+
+args: -O -i
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -O -i -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+PMID 5.0.6 cisco.bytes_out_bcast: Total broadcast Kbytes output from the Cisco
+
+InDom 5.1: Interfaces on Cisco router
+status=0
+
+args: -H
+chkhelp: -O or -H require metricname arguments or -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -e exists check, only report metrics with no help text
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+status=1
+
+args: -H cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in:Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+status=0
+
+args: -H cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in:Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.4 cisco.rate_out:Cisco's computed average output rate in bytes per second, over the recent
+past, for this interface.
+status=0
+
+args: -H -p
+
+PMID 5.0.1 cisco.bytes_in:Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out:Total number of Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in:Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.4 cisco.rate_out:Cisco's computed average output rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.5 cisco.bandwidth:
+PMID 5.0.6 cisco.bytes_out_bcast:Total number of broadcast Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+status=0
+
+args: -H -i
+
+InDom 5.1:There is one instance in this domain for each interface on a Cisco router
+that the Cisco PMDA (Performance Metrics Domain Agent) has been told about
+when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one of
+"a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet), "f" for
+Fddi, "h" for HSSC, "s" for Serial or "Vl" for Vlan. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series routers) or
+two integers separated by a slash (e.g. 7000 Series routers) or three
+integers separated by a slash and a period (Frame-Relay PVCs on serial line
+subinterfaces).
+status=0
+
+args: -H -i -p
+
+PMID 5.0.1 cisco.bytes_in:Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out:Total number of Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in:Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.4 cisco.rate_out:Cisco's computed average output rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.5 cisco.bandwidth:
+PMID 5.0.6 cisco.bytes_out_bcast:Total number of broadcast Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+InDom 5.1:There is one instance in this domain for each interface on a Cisco router
+that the Cisco PMDA (Performance Metrics Domain Agent) has been told about
+when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one of
+"a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet), "f" for
+Fddi, "h" for HSSC, "s" for Serial or "Vl" for Vlan. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series routers) or
+two integers separated by a slash (e.g. 7000 Series routers) or three
+integers separated by a slash and a period (Frame-Relay PVCs on serial line
+subinterfaces).
+status=0
+
+args: -H -O
+chkhelp: -O or -H require metricname arguments or -i or -p
+
+Usage: chkhelp helpfile
+ chkhelp [options] helpfile [metricname ...]
+
+Options:
+ -e exists check, only report metrics with no help text
+ -H display verbose help text
+ -i process all the instance domains
+ -n pmnsfile use an alternative PMNS
+ -O display the one line help summary
+ -p process all the metrics (PMIDs)
+
+No options implies silently check internal integrity of the helpfile.
+status=1
+
+args: -H -O cisco.rate_in
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+status=0
+
+args: -H -O cisco.rate_in cisco.rate_out
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+Cisco's computed average output rate in bytes per second, over the recent
+past, for this interface.
+status=0
+
+args: -H -O -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+Total number of Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+Cisco's computed average output rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+PMID 5.0.6 cisco.bytes_out_bcast: Total broadcast Kbytes output from the Cisco
+Total number of broadcast Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+status=0
+
+args: -H -O -i
+
+InDom 5.1: Interfaces on Cisco router
+There is one instance in this domain for each interface on a Cisco router
+that the Cisco PMDA (Performance Metrics Domain Agent) has been told about
+when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one of
+"a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet), "f" for
+Fddi, "h" for HSSC, "s" for Serial or "Vl" for Vlan. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series routers) or
+two integers separated by a slash (e.g. 7000 Series routers) or three
+integers separated by a slash and a period (Frame-Relay PVCs on serial line
+subinterfaces).
+status=0
+
+args: -H -O -i -p
+
+PMID 5.0.1 cisco.bytes_in: Total Kbytes input to the Cisco
+Total number of Kbytes input to the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.2 cisco.bytes_out: Total Kbytes output from the Cisco
+Total number of Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in time
+are likely to be subject to wide variance.
+
+PMID 5.0.3 cisco.rate_in: 5 minutes average input rate in bytes (not bits!) per second
+Cisco's computed average input rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.4 cisco.rate_out: 5 minutes average output rate in bytes (not bits!) per second
+Cisco's computed average output rate in bytes per second, over the recent
+past, for this interface.
+
+PMID 5.0.5 cisco.bandwidth: peak interface bandwidth in bytes per second
+
+PMID 5.0.6 cisco.bytes_out_bcast: Total broadcast Kbytes output from the Cisco
+Total number of broadcast Kbytes output from the Cisco on this interface.
+
+Note that due to network delays in extracting the metrics from the
+Cisco routers, any rate computed from this metric over small deltas in
+time are likely to be subject to wide variance.
+
+InDom 5.1: Interfaces on Cisco router
+There is one instance in this domain for each interface on a Cisco router
+that the Cisco PMDA (Performance Metrics Domain Agent) has been told about
+when the PMDA is started.
+
+The names of the instances are of the form hostname:tX where "t" is one of
+"a" for ATM, "B" for ISDN BRI, "e" for Ethernet, "E" (FastEthernet), "f" for
+Fddi, "h" for HSSC, "s" for Serial or "Vl" for Vlan. The "X" is the
+interface identifier which is either an integer (e.g. 4000 Series routers) or
+two integers separated by a slash (e.g. 7000 Series routers) or three
+integers separated by a slash and a period (Frame-Relay PVCs on serial line
+subinterfaces).
+status=0
diff --git a/qa/155 b/qa/155
new file mode 100755
index 0000000..cf42de3
--- /dev/null
+++ b/qa/155
@@ -0,0 +1,54 @@
+#! /bin/sh
+# PCP QA Test No. 155
+# verify PMDA not ready protocol
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "pmstore sample.long.write_me 13 >/dev/null; rm -f $tmp.*; exit" 0 1 2 3 15
+
+# for newer versions, we default to local sockets (without
+# auto-credential transfer to the PMDA, which causes early
+# protocol exchange between PMCD/PMDA, and circumvents the
+# goal of this test).
+target=""
+hostname=`hostname`
+test $PCP_VER -ge 3803 && target="-h $hostname"
+
+pmstore sample.not_ready 5
+
+for i in no yes
+do
+ if [ "$i" = no ]
+ then
+ echo "-- THESE SHOULD RETURN PM_ERR_AGAIN --"
+ else
+ sleep 8
+ echo
+ echo "-- THESE SHOULD SUCCEED --"
+ fi
+
+ echo
+echo "descriptor request:"
+ pminfo $target -d sample.long.ten
+ echo
+echo "short help text request:"
+ pminfo $target -t sample.long.ten
+ echo
+echo "long help text request:"
+ pminfo $target -T sample.long.ten
+ echo
+echo "fetch request:"
+ src/fetchpdu $target
+ echo
+echo "store request:"
+ src/storepdu $target
+
+done
diff --git a/qa/155.out b/qa/155.out
new file mode 100644
index 0000000..a175121
--- /dev/null
+++ b/qa/155.out
@@ -0,0 +1,46 @@
+QA output created by 155
+sample.not_ready old value=0 new value=5
+-- THESE SHOULD RETURN PM_ERR_AGAIN --
+
+descriptor request:
+sample.long.ten: pmLookupDesc: Try again. Information not currently available
+
+short help text request:
+sample.long.ten One-line Help: Error: Try again. Information not currently available
+
+
+long help text request:
+
+sample.long.ten
+Full Help: Error: Try again. Information not currently available
+
+fetch request:
+sample.long.one: Try again. Information not currently available
+sampledso.long.one: 1
+
+store request:
+pmStore: Try again. Information not currently available
+
+-- THESE SHOULD SUCCEED --
+
+descriptor request:
+
+sample.long.ten
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+short help text request:
+sample.long.ten [10 as a 32-bit integer]
+
+long help text request:
+
+sample.long.ten
+Help:
+10 as a 32-bit integer
+
+fetch request:
+sample.long.one: 1
+sampledso.long.one: 1
+
+store request:
+pmStore: ok
diff --git a/qa/156 b/qa/156
new file mode 100755
index 0000000..a88d229
--- /dev/null
+++ b/qa/156
@@ -0,0 +1,148 @@
+#! /bin/sh
+# PCP QA Test No. 156
+# check out sample PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+_filter()
+{
+ _filter_pmda_install | \
+ sed -e 's/ 1[1-2][0-9][0-9] values/ 1200+ values/' \
+ -e 's/ 1[0-9] warnings/ 10+ warnings/' \
+ -e 's/ 3 warnings/ 10+ warnings/' \
+ -e 's/ 1[0-9][0-9] metrics/ 100+ metrics/' \
+ -e "s;$tmp;TMP;" \
+ -e "s/$port1/PORT1/" \
+ -e "s/$port2/PORT2/"
+}
+
+_filter_rem()
+{
+ sed \
+ -e '/mips_64/d' \
+ -e '/mips_o32/d' \
+ -e '/mips_n32/d'
+}
+
+_check_pmda_gone()
+{
+ sleep 2
+ pminfo -v $1 && echo "Error: pminfo -v found some \"$1\" metrics"
+ ps $PCP_PS_ALL_FLAGS | grep pmda$1 >$tmp.tmp
+ if [ ! -z "`grep -v grep <$tmp.tmp`" ]
+ then
+ echo "Error: some \"$1\" PMDAs still present"
+ cat $tmp.tmp
+ fi
+ rm -f $tmp.tmp
+}
+
+status=1
+
+# save pmcd.conf and restore it after the test
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+home=$PCP_PMDAS_DIR
+iam=sample
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+if [ ! -f dynamic.indom ]
+then
+ echo "1 one" >$tmp.indom
+ echo "2 two" >>$tmp.indom
+ $sudo cp $tmp.indom dynamic.indom
+fi
+
+# make sure sample agent is running again at the end, so other QA tests
+# continue to work
+#
+trap "echo; echo 'Reinstall PMDA ...'; $sudo ./Install </dev/null >$tmp.out; _filter <$tmp.out; $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH; $sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo
+echo "=== remove agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_rem <$tmp.out
+_check_pmda_gone $iam
+
+echo
+echo "=== pipe agent ==="
+echo 'both
+pipe' | $sudo ./Install -e >$tmp.out 2>&1
+_filter <$tmp.out
+pminfo -v sample || echo "... failed!"
+echo 'both
+pipe' | $sudo ./Install -e >$tmp.out 2>&1
+_filter <$tmp.out
+pminfo -v sample || echo "... failed!"
+
+echo
+echo "=== socket Internet agent ==="
+
+# pick a tcp port that is not in use
+#
+port1=`_get_port tcp 5670 5689`
+if [ -z "$port1" ]
+then
+ echo "Arrgh ... no free TCP port in the range 5670 ... 5689"
+ exit 1
+fi
+
+echo 'both
+socket
+Internet
+'$port1 | $sudo ./Install -e >$tmp.out 2>&1
+_filter <$tmp.out
+pminfo -v sample || echo "... failed!"
+
+# use next port this time
+port2=`expr $port1 + 1`
+
+echo 'both
+socket
+Internet
+'$port2 | $sudo ./Install -e >$tmp.out 2>&1
+_filter <$tmp.out
+pminfo -v sample || echo "... failed!"
+
+echo
+echo "=== socket Unix agent ==="
+echo 'both
+socket
+Unix
+'"$tmp.fifo" | $sudo ./Install -e >$tmp.out 2>&1
+_filter <$tmp.out
+pminfo -v sample || echo "... failed!"
+echo 'both
+socket
+Unix
+'"$tmp.fifo" | $sudo ./Install -e >$tmp.out 2>&1
+_filter <$tmp.out
+pminfo -v sample || echo "... failed!"
+
+$sudo ./Remove >$tmp.out 2>&1
+_filter_rem <$tmp.out
+_check_pmda_gone $iam
+
+status=0
+exit
diff --git a/qa/156.out b/qa/156.out
new file mode 100644
index 0000000..7045d0c
--- /dev/null
+++ b/qa/156.out
@@ -0,0 +1,335 @@
+QA output created by 156
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== remove agent ===
+Culling the Performance Metrics Name Space ...
+sample ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check sample metrics have gone away ... OK
+Culling the Performance Metrics Name Space ...
+sampledso ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check sampledso metrics have gone away ... OK
+Error: sample: Unknown metric name
+
+=== pipe agent ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe] pipe
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sample metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sampledso metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+sample.darkness: No value(s) available
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
+sample.event.type: No value(s) available
+sample.event.param_32: No value(s) available
+sample.event.param_u32: No value(s) available
+sample.event.param_64: No value(s) available
+sample.event.param_u64: No value(s) available
+sample.event.param_float: No value(s) available
+sample.event.param_double: No value(s) available
+sample.event.param_string: No value(s) available
+sample.event.param_aggregate: No value(s) available
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe] pipe
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sample metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sampledso metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+sample.darkness: No value(s) available
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
+sample.event.type: No value(s) available
+sample.event.param_32: No value(s) available
+sample.event.param_u32: No value(s) available
+sample.event.param_64: No value(s) available
+sample.event.param_u64: No value(s) available
+sample.event.param_float: No value(s) available
+sample.event.param_double: No value(s) available
+sample.event.param_string: No value(s) available
+sample.event.param_aggregate: No value(s) available
+
+=== socket Internet agent ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Internet
+Internet port number or service name? [2077] PORT1
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sample metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sampledso metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+sample.darkness: No value(s) available
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
+sample.event.type: No value(s) available
+sample.event.param_32: No value(s) available
+sample.event.param_u32: No value(s) available
+sample.event.param_64: No value(s) available
+sample.event.param_u64: No value(s) available
+sample.event.param_float: No value(s) available
+sample.event.param_double: No value(s) available
+sample.event.param_string: No value(s) available
+sample.event.param_aggregate: No value(s) available
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Internet
+Internet port number or service name? [2077] PORT2
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sample metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sampledso metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+sample.darkness: No value(s) available
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
+sample.event.type: No value(s) available
+sample.event.param_32: No value(s) available
+sample.event.param_u32: No value(s) available
+sample.event.param_64: No value(s) available
+sample.event.param_u64: No value(s) available
+sample.event.param_float: No value(s) available
+sample.event.param_double: No value(s) available
+sample.event.param_string: No value(s) available
+sample.event.param_aggregate: No value(s) available
+
+=== socket Unix agent ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Unix
+Unix FIFO name? TMP.fifo
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sample metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sampledso metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+sample.darkness: No value(s) available
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
+sample.event.type: No value(s) available
+sample.event.param_32: No value(s) available
+sample.event.param_u32: No value(s) available
+sample.event.param_64: No value(s) available
+sample.event.param_u64: No value(s) available
+sample.event.param_float: No value(s) available
+sample.event.param_double: No value(s) available
+sample.event.param_string: No value(s) available
+sample.event.param_aggregate: No value(s) available
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] Unix
+Unix FIFO name? TMP.fifo
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sample metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sampledso metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+sample.darkness: No value(s) available
+sample.noinst: No value(s) available
+sample.needprofile: Explicit instance identifier(s) required
+sample.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+sample.bad.nosupport: Not Supported
+sample.bad.novalues: No value(s) available
+sample.event.type: No value(s) available
+sample.event.param_32: No value(s) available
+sample.event.param_u32: No value(s) available
+sample.event.param_64: No value(s) available
+sample.event.param_u64: No value(s) available
+sample.event.param_float: No value(s) available
+sample.event.param_double: No value(s) available
+sample.event.param_string: No value(s) available
+sample.event.param_aggregate: No value(s) available
+Culling the Performance Metrics Name Space ...
+sample ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check sample metrics have gone away ... OK
+Culling the Performance Metrics Name Space ...
+sampledso ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check sampledso metrics have gone away ... OK
+Error: sample: Unknown metric name
+
+Reinstall PMDA ...
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] ======================
+= sample daemon PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sample metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check sampledso metrics have appeared ... 10+ warnings, 100+ metrics and 1200+ values
diff --git a/qa/157 b/qa/157
new file mode 100755
index 0000000..a72af93
--- /dev/null
+++ b/qa/157
@@ -0,0 +1,47 @@
+#! /bin/sh
+# PCP QA Test No. 157
+# exercise the -u (unbuffered) option for pmlogger that was added
+# for NASmgr
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+
+echo "log mandatory on default { sample.bucket }" \
+| pmlogger -u -r -l $tmp.log -t 2sec -s 5 $tmp &
+
+then=0
+for i in 1 2 3 4 5 6 7 8 9 10 11 12
+do
+ if [ -f $tmp.0 ]
+ then
+ now=`wc -c <$tmp.0 | sed -e 's/ //g'`
+ ls -l $tmp.0 >>$seq.full
+ echo "then=$then now=$now" >>$seq.full
+ if [ "$now" -ne "$then" ]
+ then
+ echo "size changed"
+ then=$now
+ fi
+ fi
+ sleep 1
+done
+
+cat $tmp.log >>$seq.full
+
+exit
diff --git a/qa/157.out b/qa/157.out
new file mode 100644
index 0000000..3dbd1cb
--- /dev/null
+++ b/qa/157.out
@@ -0,0 +1,7 @@
+QA output created by 157
+size changed
+size changed
+size changed
+size changed
+size changed
+size changed
diff --git a/qa/158 b/qa/158
new file mode 100755
index 0000000..a4c03f3
--- /dev/null
+++ b/qa/158
@@ -0,0 +1,62 @@
+#! /bin/sh
+# PCP QA Test No. 158
+#
+# -S and -T values that are _both_ before the start, or after the end
+# of an archive ... for cmds in the open source PCP release (see also
+# 160)
+#
+# PV 928021
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# output depends on fix for pv 928021
+#
+rm -f $seq.out
+if [ $PCP_VER -gt 2400 ]
+then
+ # fix is in pcp-2.4.1-1
+ ln $seq.out.2 $seq.out
+else
+ ln $seq.out.1 $seq.out
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+#
+# the archive src/rattle
+# Performance metrics from host rattle
+# commencing Sat May 17 21:22:42.025 1997
+# ending Mon May 19 10:22:42.021 1997
+
+# -S and -T before the start of the archive
+#
+pmval -z -S '@Sat May 10 01:00:00 1997' -T '@Sat May 10 01:00:00 1997' -a src/rattle irix.kernel.all.load
+
+echo
+echo "irix.kernel.all.load;" \
+| pmie -z -v -S '@Sat May 10 01:00:00 1997' -T '@Sat May 10 01:00:00 1997' -a src/rattle 2>&1 \
+| grep -v 'evaluator exiting'
+
+# -S and -T after the end of the archive
+#
+echo
+pmval -z -S '@Sat May 24 01:00:00 1997' -T '@Sat May 24 01:00:00 1997' -a src/rattle irix.kernel.all.load
+
+echo
+echo "irix.kernel.all.load;" \
+| pmie -v -S '@Sat May 24 01:00:00 1997' -T '@Sat May 24 01:00:00 1997' -a src/rattle 2>&1 \
+| grep -v 'evaluator exiting'
+
+# success, all done
+exit
diff --git a/qa/158.out.1 b/qa/158.out.1
new file mode 100644
index 0000000..fd50af5
--- /dev/null
+++ b/qa/158.out.1
@@ -0,0 +1,30 @@
+QA output created by 158
+
+metric: irix.kernel.all.load
+archive: src/rattle
+host: rattle
+start: Sat May 17 21:22:42 1997
+end: Sat May 17 21:22:42 1997
+semantics: instantaneous value
+units: none
+samples: 1
+21:22:42.025 No values available
+
+expr_1 (Sat May 17 21:22:42 1997): ?
+
+
+
+metric: irix.kernel.all.load
+archive: src/rattle
+host: rattle
+start: Mon May 19 10:22:42 1997
+end: Mon May 19 10:22:42 1997
+semantics: instantaneous value
+units: none
+samples: 1
+
+ 1 minute 5 minute 15 minute
+10:22:42.021 3.223E-02 ? ?
+
+expr_1 (Mon May 19 10:22:42 1997): ?
+
diff --git a/qa/158.out.2 b/qa/158.out.2
new file mode 100644
index 0000000..ab36507
--- /dev/null
+++ b/qa/158.out.2
@@ -0,0 +1,25 @@
+QA output created by 158
+Note: timezone set to local timezone of host "rattle" from archive
+
+metric: irix.kernel.all.load
+archive: src/rattle
+host: rattle
+start: Sat May 17 22:22:42 1997
+end: Sat May 10 01:00:00 1997
+semantics: instantaneous value
+units: none
+samples: 0
+
+pmie: timezone set to local timezone of host rattle
+
+Note: timezone set to local timezone of host "rattle" from archive
+
+metric: irix.kernel.all.load
+archive: src/rattle
+host: rattle
+start: Sat May 24 01:00:00 1997
+end: Mon May 19 11:22:42 1997
+semantics: instantaneous value
+units: none
+samples: 0
+
diff --git a/qa/159 b/qa/159
new file mode 100755
index 0000000..5e1f1dd
--- /dev/null
+++ b/qa/159
@@ -0,0 +1,174 @@
+#! /bin/sh
+# PCP QA Test No. 159
+# check out cisco PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ -z "$PCP_CISCO_ROUTER" ]
+then
+ echo "No cisco router set via PCP_CISCO_ROUTER" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+# New cisco metrics in pcp2.2
+if [ $PCP_VER -ge 2300 ]
+then
+ rm -f $seq.out && ln $seq.out.3 $seq.out
+elif [ $PCP_VER -ge 2200 ]
+then
+ rm -f $seq.out && ln $seq.out.2 $seq.out
+else
+ rm -f $seq.out && ln $seq.out.1 $seq.out
+fi
+
+status=1
+signal=$PCP_BINADM_DIR/pmsignal
+trap _cleanup 0 1 2 3 15
+
+_cleanup()
+{
+ pmstore pmcd.control.tracenobuf 0 2>&1 >/dev/null
+ _cleanup_agent
+ rm -f $tmp.*
+ exit $status
+}
+
+_cleanup_agent()
+{
+ cd $home/$iam
+
+ [ -f $tmp_configfile ] && $sudo mv $tmp_configfile $configfile
+
+ if grep $iam $tmp.pmcd.conf > /dev/null
+ then
+ $sudo ./Install < /dev/null > /dev/null 2>&1
+ else
+ $sudo ./Remove < /dev/null > /dev/null 2>&1
+ fi
+
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd
+
+ cd $here
+}
+
+_filter_ins()
+{
+ sed -e '/^Check/{
+s/ 1 warnings, / /
+s/ [0-9][0-9]* values/ SOME values/
+}' \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/' \
+ -e '/make: Nothing to be done for/d' \
+| $PCP_AWK_PROG '
+ /currently unselected interfaces/ { interfaces=1; print; next }
+ interfaces==1 { print "<interfaces>\n"; interfaces=0; next }
+ { print }'
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=cisco
+configdir=$PCP_VAR_DIR/config/$iam
+configfile=$configdir/$iam.conf
+tmp_configfile=/tmp/$iam.conf
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+if [ -f Makefile ]
+then
+ if $sudo make clobber 2>&1 >$tmp.out
+ then
+ :
+ else
+ cat $tmp.out
+ echo "Arrgh, make clobber failed"
+ exit 1
+ fi
+fi
+
+# copy the pmcd config file to restore state later
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# copy the agent config file to restore state later
+[ -f $configfile ] && $sudo mv $configfile $tmp_configfile
+
+echo
+echo "=== remove agent ==="
+$PCP_BINADM_DIR/pmpost "start watching for qa/159"
+pmstore pmcd.control.tracenobuf 1>/dev/null 2>&1
+$sudo ./Remove \
+| sed -e 's/not found in Name Space, this is OK/done/'
+
+if pminfo -v cisco
+then
+ echo "... failed!"
+ if [ -d $PCP_LOG_DIR/pmcd ]
+ then
+ cat $PCP_LOG_DIR/pmcd/pmcd.log
+ else
+ cat $PCP_LOG_DIR/pmcd.log
+ fi
+ echo
+ tail $PCP_LOG_DIR/NOTICES
+fi
+pmstore pmcd.control.tracenobuf 0 1>/dev/null 2>&1
+$PCP_BINADM_DIR/pmpost "end watching for qa/159"
+
+cat <<End-of-File >$tmp.in
+both
+$PCP_CISCO_ROUTER
+
+End-of-File
+if [ $PCP_VER -gt 2200 ]
+then
+ echo >>$tmp.in
+fi
+cat <<End-of-File >>$tmp.in
+s2/3
+e1/0
+quit
+$PCP_CISCO_ROUTER
+
+End-of-File
+if [ $PCP_VER -gt 2200 ]
+then
+ echo >>$tmp.in
+fi
+cat <<End-of-File >>$tmp.in
+s2/0
+quit
+
+End-of-File
+
+echo
+echo "=== install agent ==="
+$sudo ./Install <$tmp.in >$tmp.out 2>&1
+_filter_ins <$tmp.out
+pminfo -v `pminfo cisco | grep -v bytes_out_bcast` || echo "... failed!"
+
+echo
+echo "=== re-install agent ==="
+$sudo ./Install <$tmp.in >$tmp.out 2>&1
+_filter_ins <$tmp.out
+pminfo -v `pminfo cisco | grep -v bytes_out_bcast` || echo "... failed!"
+
+status=0
+exit
diff --git a/qa/159.out.1 b/qa/159.out.1
new file mode 100644
index 0000000..f0a170a
--- /dev/null
+++ b/qa/159.out.1
@@ -0,0 +1,167 @@
+QA output created by 159
+
+=== remove agent ===
+Culling the Performance Metrics Name Space ...
+cisco ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check cisco metrics have gone away ... OK
+Error: cisco: Unknown metric name
+
+=== install agent ===
+You will need to choose an appropriate configuration for installation of
+the "cisco" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+Installing files ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 20 seconds for the cisco agent to initialize ...
+Check cisco metrics have appeared ... 5 metrics and SOME values
+
+=== re-install agent ===
+You will need to choose an appropriate configuration for installation of
+the "cisco" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+Installing files ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 20 seconds for the cisco agent to initialize ...
+Check cisco metrics have appeared ... 5 metrics and SOME values
diff --git a/qa/159.out.2 b/qa/159.out.2
new file mode 100644
index 0000000..03ade5d
--- /dev/null
+++ b/qa/159.out.2
@@ -0,0 +1,167 @@
+QA output created by 159
+
+=== remove agent ===
+Culling the Performance Metrics Name Space ...
+cisco ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check cisco metrics have gone away ... OK
+Error: cisco: Unknown metric name
+
+=== install agent ===
+You will need to choose an appropriate configuration for installation of
+the "cisco" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+Installing files ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 20 seconds for the cisco agent to initialize ...
+Check cisco metrics have appeared ... 6 metrics and SOME values
+
+=== re-install agent ===
+You will need to choose an appropriate configuration for installation of
+the "cisco" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection]
+A user-level password may be required for the Cisco "show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next question.
+
+User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+Installing files ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 20 seconds for the cisco agent to initialize ...
+Check cisco metrics have appeared ... 6 metrics and SOME values
diff --git a/qa/159.out.3 b/qa/159.out.3
new file mode 100644
index 0000000..2c905fe
--- /dev/null
+++ b/qa/159.out.3
@@ -0,0 +1,175 @@
+QA output created by 159
+
+=== remove agent ===
+Culling the Performance Metrics Name Space ...
+cisco ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check cisco metrics have gone away ... OK
+Error: cisco: Unknown metric name
+
+=== install agent ===
+You will need to choose an appropriate configuration for installation of
+the "cisco" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+Cisco hostname or IP address? [return to quit Cisco selection]
+A username and/or user-level password may be required for the Cisco
+"show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Username:" appears, then a username is required,
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next two questions.
+
+Cisco username? User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection]
+A username and/or user-level password may be required for the Cisco
+"show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Username:" appears, then a username is required,
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next two questions.
+
+Cisco username? User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+Installing files ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 20 seconds for the cisco agent to initialize ...
+Check cisco metrics have appeared ... 6 metrics and SOME values
+
+=== re-install agent ===
+You will need to choose an appropriate configuration for installation of
+the "cisco" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+Cisco hostname or IP address? [return to quit Cisco selection]
+A username and/or user-level password may be required for the Cisco
+"show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Username:" appears, then a username is required,
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next two questions.
+
+Cisco username? User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection]
+A username and/or user-level password may be required for the Cisco
+"show interface" command.
+ If you are unsure, try the command
+ $ telnet melbourne-l0.wan.sgi.com
+ and if the prompt "Username:" appears, then a username is required,
+ and if the prompt "Password:" appears, a user-level password is required,
+ otherwise respond with an empty line for the next two questions.
+
+Cisco username? User-level Cisco password? Probing Cisco for list of interfaces ...
+
+Enter interfaces to monitor, one per line in the format tX where "t" is
+a type and one of "e" (Ethernet), "E" (FastEthernet), "f" (Fddi), "s"
+(Serial), "a" (ATM), "B" (ISDN BRI) or "h" (HSSC) and "X" is an
+interface identifier which is either an integer (e.g. 4000 Series
+routers) or two integers separated by a slash (e.g. 7000 Series
+routers).
+
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+The currently unselected interfaces for the Cisco "melbourne-l0.wan.sgi.com" are:
+<interfaces>
+
+Enter "*" to select all, "quit" to terminate selections for this Cisco.
+Interface? [e0/0]
+Cisco hostname or IP address? [return to quit Cisco selection] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+Installing files ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 20 seconds for the cisco agent to initialize ...
+Check cisco metrics have appeared ... 6 metrics and SOME values
diff --git a/qa/160 b/qa/160
new file mode 100755
index 0000000..d6f6f80
--- /dev/null
+++ b/qa/160
@@ -0,0 +1,57 @@
+#! /bin/sh
+# PCP QA Test No. 160
+# Exercise __pmSetClientId()
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+_filter()
+{
+ egrep 'QA-clientid|Error|__pmSetClientId' \
+ | sed -e 's/value ".* QA/value "<host> QA/' \
+ | sed -e 's/\[/[ /' -e 's/]/ ]/' \
+ | awk '
+BEGIN { seq = 1 }
+$1 == "inst" { if (seen[$3] == "") {
+ seen[$3] = "INST-" seq++
+ }
+ $5 = "\"" seen[$3] "\""
+ $3 = seen[$3]
+ }
+ { print }' \
+ | LC_COLLATE=POSIX sort -u
+}
+
+# real QA test starts here
+src/clientid -l a bb ccc dddd eeeee ffffff ggggggg hhhhhhhh iiiiiiiii >$tmp.1 2>$tmp.2 &
+pidlist="$pidlist $!"
+sleep 2
+src/clientid -l foo-bar-mumble >$tmp.3 2>$tmp.4 &
+pidlist="$pidlist $!"
+sleep 2
+src/clientid -l "here is a longer string to go in the ident place holder to try things out that are not quite so short and boring" >$tmp.5 2>$tmp.6 &
+pidlist="$pidlist $!"
+sleep 2
+
+kill -TERM $pidlist
+wait
+
+cat $tmp.? \
+| tee $seq.full \
+| _filter
+
+# success, all done
+exit
diff --git a/qa/160.out b/qa/160.out
new file mode 100644
index 0000000..e19f9b5
--- /dev/null
+++ b/qa/160.out
@@ -0,0 +1,14 @@
+QA output created by 160
+Error expected ...
+__pmSetClientId(...): PMNS not accessible
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid a"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid bb"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid ccc"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid dddd"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid eeeee"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid ffffff"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid ggggggg"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid hhhhhhhh"
+inst [ INST-1 or "INST-1" ] value "<host> QA-clientid iiiiiiiii"
+inst [ INST-2 or "INST-2" ] value "<host> QA-clientid foo-bar-mumble"
+inst [ INST-3 or "INST-3" ] value "<host> QA-clientid here is a longer string to go in the ident place holder to try things out that are not quite so short and boring"
diff --git a/qa/161 b/qa/161
new file mode 100755
index 0000000..3451afc
--- /dev/null
+++ b/qa/161
@@ -0,0 +1,72 @@
+#! /bin/sh
+# PCP QA Test No. 161
+# pmlogger now reads config from standard input by default
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File >$tmp.tmp
+log mandatory on once sample.bin
+End-of-File
+
+pmlogger -s 1 -c $tmp.tmp -l $tmp.log $tmp.A >$tmp.err 2>&1
+cat $tmp.err $tmp.log | _filter_pmlogger_log
+
+pmlogger -s 1 <$tmp.tmp -l $tmp.log $tmp.B >$tmp.err 2>&1
+cat $tmp.err $tmp.log | _filter_pmlogger_log
+
+if [ ! -f $tmp.A.meta ]
+then
+ echo "Cannot find $tmp.A.meta"
+else
+ if [ ! -f $tmp.B.meta ]
+ then
+ echo "Cannot find $tmp.B.meta"
+ else
+ sizeA=`wc -c <$tmp.A.meta`
+ sizeB=`wc -c <$tmp.B.meta`
+ diff=`expr $sizeA - $sizeB`
+ if [ "$diff" -lt -4 -o "$diff" -gt 4 ]
+ then
+ echo "Different sizes ..."
+ ls -l $tmp.A.meta $tmp.B.meta
+ else
+ echo "*.meta: sizes within 5 bytes"
+ fi
+ fi
+fi
+
+for ext in index 0
+do
+ if [ ! -f $tmp.A.$ext ]
+ then
+ echo "Cannot find $tmp.A.$ext"
+ else
+ if [ ! -f $tmp.B.$ext ]
+ then
+ echo "Cannot find $tmp.B.$ext"
+ else
+ sizeA=`wc -c <$tmp.A.$ext`
+ sizeB=`wc -c <$tmp.B.$ext`
+ if [ "`wc -c <$tmp.A.$ext`" != "`wc -c <$tmp.B.$ext`" ]
+ then
+ echo "Different sizes ..."
+ ls -l $tmp.A.$ext $tmp.B.$ext
+ else
+ echo "*.$ext: sizes match"
+ fi
+ fi
+ fi
+done
+
+exit 0
diff --git a/qa/161.out b/qa/161.out
new file mode 100644
index 0000000..1e93e85
--- /dev/null
+++ b/qa/161.out
@@ -0,0 +1,20 @@
+QA output created by 161
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+*.meta: sizes within 5 bytes
+*.index: sizes match
+*.0: sizes match
diff --git a/qa/162 b/qa/162
new file mode 100755
index 0000000..80f0364
--- /dev/null
+++ b/qa/162
@@ -0,0 +1,120 @@
+#! /bin/sh
+# PCP QA Test No. 162
+# namespace only Install/Remove for pmdas
+#
+# this is less important for PCP 2.0 than it was for PCP 1.x, but we
+# need to make sure the functionality still works, e.g. upgrade a
+# collector to PCP 2.0, but want to monitor from a PCP 1.x system
+#
+# Note: expect some "Cannot create" errors from the installation
+# of the pmchart view(s) ... we do not run Install/Remove as root
+# in this test
+#
+# See also 600. This version is for the PMDAs in pcp_opensrc.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::PMDA module not installed"
+
+trap "rm -rf $tmp; exit" 0 1 2 3 15
+
+#
+# Get rid of some new sample metrics which
+# would make the test vary.
+#
+_filter()
+{
+ sed \
+ -e '/sample\.dynamic\.meta/d' \
+ -e '/sample\.datasize/d' \
+ -e '/sample\.darkness/d' \
+
+}
+
+
+_filter_ins()
+{
+ sed \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/' \
+ -e 's/ *- Permission denied/\
+Permission denied/'
+}
+
+
+# all of the ones we ship as part of the PCP product
+#
+PMDALIST='
+cisco
+mailq
+news
+sample
+sendmail
+simple
+summary
+trace
+trivial
+txmon'
+
+# real QA test starts here
+unset ROOT MAKEFLAGS
+mkdir $tmp
+
+cat >>$tmp/root.orig <<End-of-File
+root {
+}
+End-of-File
+cp $tmp/root.orig $tmp/root
+
+for pmda in $PMDALIST
+do
+ instdir=$PCP_PMDAS_DIR/$pmda
+ echo
+ echo "=== Install -n for $pmda ==="
+ if [ -f $instdir/Install ]
+ then
+ cd $instdir
+ $sudo ./Install -e -n $tmp/root -N </dev/null 2>&1 | _filter_ins
+ pminfo -n $tmp/root $pmda | _filter | LC_COLLATE=POSIX sort
+ else
+ echo "Error: $instdir/Install does not exist"
+ fi
+done
+
+echo
+echo 'Removals ... expect "Unknown metric name" errors at the end of each'
+echo 'operation as the PMNS should have been culled'
+for pmda in $PMDALIST
+do
+ instdir=$PCP_PMDAS_DIR/$pmda
+ echo
+ echo "=== Remove -n for $pmda ==="
+ if [ -f $instdir/Remove ]
+ then
+ cd $instdir
+ $sudo ./Remove -n $tmp/root -N
+ pminfo -n $tmp/root $pmda
+ else
+ echo "Error: $instdir/Install does not exist"
+ fi
+
+done
+
+echo
+echo "=== Check final state of root ==="
+echo "(expect no diffs between the initial and final PMNS)"
+diff -c $tmp/root.orig $tmp/root
+
+exit 0
diff --git a/qa/162.out b/qa/162.out
new file mode 100644
index 0000000..29820c8
--- /dev/null
+++ b/qa/162.out
@@ -0,0 +1,387 @@
+QA output created by 162
+
+=== Install -n for cisco ===
+You will need to choose an appropriate configuration for installation of
+the "cisco" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+cisco.bandwidth
+cisco.bytes_in
+cisco.bytes_out
+cisco.bytes_out_bcast
+cisco.rate_in
+cisco.rate_out
+
+=== Install -n for mailq ===
+You will need to choose an appropriate configuration for installation of
+the "mailq" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+mailq.deferred
+mailq.length
+
+=== Install -n for news ===
+You will need to choose an appropriate configuration for installation of
+the "news" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+news
+
+=== Install -n for sample ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+======================
+= sample daemon PMDA =
+======================
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+======================
+= sampledso DSO PMDA =
+======================
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+sample.aggregate.hullo
+sample.aggregate.null
+sample.aggregate.write_me
+sample.bad.nosupport
+sample.bad.novalues
+sample.bad.unknown
+sample.bigid
+sample.bin
+sample.bogus_bin
+sample.bucket
+sample.byte_ctr
+sample.byte_rate
+sample.byte_rate_perhour
+sample.colour
+sample.const_rate.gradient
+sample.const_rate.value
+sample.control
+sample.daemon_pid
+sample.dodgey.control
+sample.dodgey.value
+sample.double.bin
+sample.double.bin_ctr
+sample.double.hundred
+sample.double.million
+sample.double.one
+sample.double.ten
+sample.double.write_me
+sample.drift
+sample.dynamic.counter
+sample.dynamic.discrete
+sample.dynamic.instant
+sample.error_check
+sample.error_code
+sample.event.highres_records
+sample.event.no_indom_records
+sample.event.param_32
+sample.event.param_64
+sample.event.param_aggregate
+sample.event.param_double
+sample.event.param_float
+sample.event.param_string
+sample.event.param_u32
+sample.event.param_u64
+sample.event.records
+sample.event.reset
+sample.event.reset_highres
+sample.event.type
+sample.float.bin
+sample.float.bin_ctr
+sample.float.hundred
+sample.float.million
+sample.float.one
+sample.float.ten
+sample.float.write_me
+sample.hordes.one
+sample.hordes.two
+sample.kbyte_ctr
+sample.kbyte_rate
+sample.lights
+sample.load
+sample.long.bin
+sample.long.bin_ctr
+sample.long.hundred
+sample.long.million
+sample.long.one
+sample.long.ten
+sample.long.write_me
+sample.longlong.bin
+sample.longlong.bin_ctr
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.write_me
+sample.magnitude
+sample.many.count
+sample.many.int
+sample.milliseconds
+sample.mirage
+sample.mirage_longlong
+sample.needprofile
+sample.noinst
+sample.not_ready
+sample.part_bin
+sample.pdu
+sample.percontext.control.active
+sample.percontext.control.ctx
+sample.percontext.control.end
+sample.percontext.control.start
+sample.percontext.pdu
+sample.percontext.recv_pdu
+sample.percontext.xmit_pdu
+sample.rapid
+sample.recv_pdu
+sample.scale_step.bytes_down
+sample.scale_step.bytes_up
+sample.scale_step.count_down
+sample.scale_step.count_up
+sample.scale_step.none_up
+sample.scale_step.time_up_nanosecs
+sample.scale_step.time_up_secs
+sample.scramble.bin
+sample.scramble.version
+sample.seconds
+sample.secret
+sample.step
+sample.step_counter
+sample.string.hullo
+sample.string.null
+sample.string.write_me
+sample.sysinfo
+sample.ulong.bin
+sample.ulong.bin_ctr
+sample.ulong.count.base
+sample.ulong.count.deca
+sample.ulong.count.hecto
+sample.ulong.count.kilo
+sample.ulong.count.mega
+sample.ulong.hundred
+sample.ulong.million
+sample.ulong.one
+sample.ulong.ten
+sample.ulong.write_me
+sample.ulonglong.bin
+sample.ulonglong.bin_ctr
+sample.ulonglong.hundred
+sample.ulonglong.million
+sample.ulonglong.one
+sample.ulonglong.ten
+sample.ulonglong.write_me
+sample.wrap.long
+sample.wrap.longlong
+sample.wrap.ulong
+sample.wrap.ulonglong
+sample.write_me
+sample.xmit_pdu
+
+=== Install -n for sendmail ===
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+sendmail.permailer.bytes_from
+sendmail.permailer.bytes_to
+sendmail.permailer.msgs_from
+sendmail.permailer.msgs_to
+sendmail.start_date
+sendmail.total.bytes_from
+sendmail.total.bytes_to
+sendmail.total.msgs_from
+sendmail.total.msgs_to
+
+=== Install -n for simple ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+simple.color
+simple.now
+simple.numfetch
+simple.time.sys
+simple.time.user
+
+=== Install -n for summary ===
+You will need to choose an appropriate configuration for installation of
+the "summary" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+summary.cpu.busy
+summary.cpu.util
+summary.disk.busy
+summary.disk.iops
+summary.netif.busy
+summary.netif.packets
+
+=== Install -n for trace ===
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+trace.control.buckets
+trace.control.debug
+trace.control.interval
+trace.control.period
+trace.control.port
+trace.control.reset
+trace.counter.count
+trace.counter.rate
+trace.counter.value
+trace.observe.count
+trace.observe.rate
+trace.observe.value
+trace.point.count
+trace.point.rate
+trace.transact.ave_time
+trace.transact.count
+trace.transact.max_time
+trace.transact.min_time
+trace.transact.rate
+trace.transact.total_time
+
+=== Install -n for trivial ===
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+trivial.time
+
+=== Install -n for txmon ===
+You will need to choose an appropriate configuration for installation of
+the "txmon" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m]
+Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+txmon.ave_time
+txmon.control.level
+txmon.control.reset
+txmon.count
+txmon.max_time
+txmon.reset_count
+
+Removals ... expect "Unknown metric name" errors at the end of each
+operation as the PMNS should have been culled
+
+=== Remove -n for cisco ===
+Culling the Performance Metrics Name Space ...
+cisco ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: cisco: Unknown metric name
+
+=== Remove -n for mailq ===
+Culling the Performance Metrics Name Space ...
+mailq ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: mailq: Unknown metric name
+
+=== Remove -n for news ===
+Culling the Performance Metrics Name Space ...
+news ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: news: Unknown metric name
+
+=== Remove -n for sample ===
+Culling the Performance Metrics Name Space ...
+sample ... done
+Skipping PMDA removal and PMCD re-configuration
+Culling the Performance Metrics Name Space ...
+sampledso ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: sample: Unknown metric name
+
+=== Remove -n for sendmail ===
+Culling the Performance Metrics Name Space ...
+sendmail ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: sendmail: Unknown metric name
+
+=== Remove -n for simple ===
+Culling the Performance Metrics Name Space ...
+simple ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: simple: Unknown metric name
+
+=== Remove -n for summary ===
+Culling the Performance Metrics Name Space ...
+summary ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: summary: Unknown metric name
+
+=== Remove -n for trace ===
+Culling the Performance Metrics Name Space ...
+trace ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: trace: Unknown metric name
+
+=== Remove -n for trivial ===
+Culling the Performance Metrics Name Space ...
+trivial ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: trivial: Unknown metric name
+
+=== Remove -n for txmon ===
+Culling the Performance Metrics Name Space ...
+txmon ... done
+Skipping PMDA removal and PMCD re-configuration
+Error: txmon: Unknown metric name
+
+=== Check final state of root ===
+(expect no diffs between the initial and final PMNS)
diff --git a/qa/163 b/qa/163
new file mode 100755
index 0000000..b4e4fad
--- /dev/null
+++ b/qa/163
@@ -0,0 +1,87 @@
+#! /bin/sh
+# PCP QA Test No. 163
+#
+# pv 929411
+# pmdanasavg SEGVs in pmGetArchiveEnd
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ archlist="src/naslog src/all-irix-6.5.25 src/bigace"
+ ln $seq.out.1 $seq.out
+else
+ # no support for V1 archives
+ archlist="src/naslog src/all-irix-6.5.25 src/bigace_v2"
+ ln $seq.out.2 $seq.out
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# original failures ...
+#
+# src/naslog
+# Mismatch: end=06:11:45.000 serial=15:21:13.958
+# Failed @ 832292
+# ...
+#
+# src/all-irix-6.5.25
+# Mismatch: end=10:00:00.066 serial=18:55:00.683
+# Failed @ 120984
+#
+# src/bigace
+# Mismatch: end=10:17:04.001 serial=16:12:55.556
+# Failed @ 1192840
+# dumped core
+# Failed @ 1192996
+# dumped core
+# Failed @ 1193152
+#
+
+rm -f $seq.full
+
+# real QA test starts here
+
+for arch in $archlist
+do
+ echo "=== $arch ==="
+
+ rm -f $tmp.*
+ cp $arch.index $tmp.index
+ cp $arch.meta $tmp.meta
+
+ maxsz=`wc -c <$arch.0 | sed -e 's/ //g'`
+ minsz=`expr $maxsz - 16 \* 1024`
+
+ cp $arch.0 $tmp.0
+ chmod u+w $tmp.0
+
+ sz=`expr $maxsz - 4`
+ while [ $sz -ge $minsz ]
+ do
+ # echo $sz
+ if src/torture-eol -q -a $tmp -t $sz
+ then
+ :
+ else
+ echo "Failed @ $sz"
+ fi
+ sz=`expr $sz - 4`
+ done
+done
+
+# success, all done
+exit
diff --git a/qa/163.out.1 b/qa/163.out.1
new file mode 100644
index 0000000..889a848
--- /dev/null
+++ b/qa/163.out.1
@@ -0,0 +1,4 @@
+QA output created by 163
+=== src/naslog ===
+=== src/all-irix-6.5.25 ===
+=== src/bigace ===
diff --git a/qa/163.out.2 b/qa/163.out.2
new file mode 100644
index 0000000..49be9fc
--- /dev/null
+++ b/qa/163.out.2
@@ -0,0 +1,4 @@
+QA output created by 163
+=== src/naslog ===
+=== src/all-irix-6.5.25 ===
+=== src/bigace_v2 ===
diff --git a/qa/164 b/qa/164
new file mode 100755
index 0000000..fef7884
--- /dev/null
+++ b/qa/164
@@ -0,0 +1,59 @@
+#! /bin/sh
+# PCP QA Test No. 164
+# exercise diskstat
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+if which diskstat >/dev/null 2>&1
+then
+ :
+else
+ echo "No diskstat binary installed" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+pmdumplog -z -a src/kenj-pc-diskstat disk >$tmp.out
+awk <$tmp.out '/^[0-1].*\(disk.dev.read\)/ { print NR }' >$tmp.tmp
+echo "=== first sample ==="
+f=`sed 1q $tmp.tmp`
+l=`sed -e 1d -e 2q $tmp.tmp`
+l=`expr $l - 2`
+sed -n -e "$f,${l}p" $tmp.out
+
+echo "=== last sample ==="
+f=`tail -1 <$tmp.tmp`
+sed -n -e "$f,\$p" $tmp.out
+
+echo
+echo "=== pmval ==="
+pmval -z -t 10 -S 10 -a src/kenj-pc-diskstat disk.dev.total
+
+echo
+echo "=== diskstat ==="
+diskstat -z -t 10 -S 10 -a src/kenj-pc-diskstat
+
+echo
+echo "=== diskstat -i ==="
+diskstat -z -i -t 10 -S 10 -a src/kenj-pc-diskstat
+
+echo
+echo "=== diskstat -x ==="
+diskstat -z -x -t 10 -S 10 -a src/kenj-pc-diskstat
+
+# success, all done
+exit
diff --git a/qa/164.out b/qa/164.out
new file mode 100644
index 0000000..b48c26e
--- /dev/null
+++ b/qa/164.out
@@ -0,0 +1,190 @@
+QA output created by 164
+=== first sample ===
+10:38:24.370 60.0.4 (disk.dev.read):
+ inst [0 or "hda"] value 96303
+ inst [7 or "hdc"] value 0
+ 60.0.5 (disk.dev.write):
+ inst [0 or "hda"] value 42923
+ inst [7 or "hdc"] value 0
+ 60.0.6 (disk.dev.blkread):
+ inst [0 or "hda"] value 2112563
+ inst [7 or "hdc"] value 0
+ 60.0.7 (disk.dev.blkwrite):
+ inst [0 or "hda"] value 983756
+ inst [7 or "hdc"] value 0
+ 60.0.28 (disk.dev.total):
+ inst [0 or "hda"] value 139226
+ inst [7 or "hdc"] value 0
+ 60.0.36 (disk.dev.blktotal):
+ inst [0 or "hda"] value 3096319
+ inst [7 or "hdc"] value 0
+ 60.0.38 (disk.dev.read_bytes):
+ inst [0 or "hda"] value 1056281
+ inst [7 or "hdc"] value 0
+ 60.0.39 (disk.dev.write_bytes):
+ inst [0 or "hda"] value 491878
+ inst [7 or "hdc"] value 0
+ 60.0.40 (disk.dev.total_bytes):
+ inst [0 or "hda"] value 1548159
+ inst [7 or "hdc"] value 0
+ 60.0.46 (disk.dev.avactive):
+ inst [0 or "hda"] value 4857027
+ inst [7 or "hdc"] value 0
+ 60.0.47 (disk.dev.aveq):
+ inst [0 or "hda"] value 34199140
+ inst [7 or "hdc"] value 0
+
+=== last sample ===
+10:40:04.330 60.0.4 (disk.dev.read):
+ inst [0 or "hda"] value 102305
+ inst [7 or "hdc"] value 21
+ 60.0.5 (disk.dev.write):
+ inst [0 or "hda"] value 44347
+ inst [7 or "hdc"] value 0
+ 60.0.6 (disk.dev.blkread):
+ inst [0 or "hda"] value 2202507
+ inst [7 or "hdc"] value 128
+ 60.0.7 (disk.dev.blkwrite):
+ inst [0 or "hda"] value 1013120
+ inst [7 or "hdc"] value 0
+ 60.0.28 (disk.dev.total):
+ inst [0 or "hda"] value 146652
+ inst [7 or "hdc"] value 21
+ 60.0.36 (disk.dev.blktotal):
+ inst [0 or "hda"] value 3215627
+ inst [7 or "hdc"] value 128
+ 60.0.38 (disk.dev.read_bytes):
+ inst [0 or "hda"] value 1101253
+ inst [7 or "hdc"] value 64
+ 60.0.39 (disk.dev.write_bytes):
+ inst [0 or "hda"] value 506560
+ inst [7 or "hdc"] value 0
+ 60.0.40 (disk.dev.total_bytes):
+ inst [0 or "hda"] value 1607813
+ inst [7 or "hdc"] value 64
+ 60.0.46 (disk.dev.avactive):
+ inst [0 or "hda"] value 4956399
+ inst [7 or "hdc"] value 204
+ 60.0.47 (disk.dev.aveq):
+ inst [0 or "hda"] value 39774254
+ inst [7 or "hdc"] value 204
+
+=== pmval ===
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: disk.dev.total
+archive: src/kenj-pc-diskstat
+host: kenj-pc
+start: Mon Mar 14 10:38:24 2005
+end: Mon Mar 14 10:40:04 2005
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 10
+interval: 10.00 sec
+
+ hda hdc
+10:38:34.382 76.60 0.0
+10:38:44.382 69.40 0.0
+10:38:54.382 70.80 0.0
+10:39:04.382 72.10 0.0
+10:39:14.382 78.70 0.0
+10:39:24.382 73.50 0.0
+10:39:34.382 68.50 0.0
+10:39:44.382 72.70 0.0
+10:39:54.382 84.30 0.9000
+
+pmval: pmFetch: End of PCP archive log
+
+=== diskstat ===
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+Archive: src/kenj-pc-diskstat, Host: kenj-pc, Mon Mar 14 10:38:34 2005
+ %busy r+w/s Kb/s w/s wKb/s tavq device
+10:38:34 95.6 77 637 2 5 2.4 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:38:44 99.0 69 936 1 5 1.8 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:38:54 99.8 71 473 3 84 6.3 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:04 99.9 72 518 23 225 37.4 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:14 100.0 79 538 15 175 87.1 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:24 99.9 74 480 24 196 71.8 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:34 100.0 69 534 14 204 71.9 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:44 100.0 73 495 17 165 108.3 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+ %busy r+w/s Kb/s w/s wKb/s tavq device
+10:39:54 100.0 84 726 20 143 102.5 hda
+ 0.8 1 2 0 0 0.0 hdc
+
+=== diskstat -i ===
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+Archive: src/kenj-pc-diskstat, Host: kenj-pc, Mon Mar 14 10:38:34 2005
+ %busy r+w/s Kb/s w/s wKb/s tavq device
+10:38:34 95.6 77 637 2 5 2.4 hda
+
+10:38:44 99.0 69 936 1 5 1.8 hda
+
+10:38:54 99.8 71 473 3 84 6.3 hda
+
+10:39:04 99.9 72 518 23 225 37.4 hda
+
+10:39:14 100.0 79 538 15 175 87.1 hda
+
+10:39:24 99.9 74 480 24 196 71.8 hda
+
+10:39:34 100.0 69 534 14 204 71.9 hda
+
+10:39:44 100.0 73 495 17 165 108.3 hda
+
+10:39:54 100.0 84 726 20 143 102.5 hda
+ 0.8 1 2 0 0 0.0 hdc
+
+=== diskstat -x ===
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+Archive: src/kenj-pc-diskstat, Host: kenj-pc, Mon Mar 14 10:38:34 2005
+ %busy r+w/s Kb/s w/s wKb/s tavq device
+10:38:34 95.6 77 637 2 5 2.4 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:38:44 99.0 69 936 1 5 1.8 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:38:54 99.8 71 473 3 84 6.3 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:04 99.9 72 518 23 225 37.4 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:14 100.0 79 538 15 175 87.1 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:24 99.9 74 480 24 196 71.8 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:34 100.0 69 534 14 204 71.9 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+10:39:44 100.0 73 495 17 165 108.3 hda
+ 0.0 0 0 0 0 0.0 hdc
+
+ %busy r+w/s Kb/s w/s wKb/s tavq device
+10:39:54 100.0 84 726 20 143 102.5 hda
+ 0.8 1 2 0 0 0.0 hdc
+
+ %busy r+w/s Kb/s w/s wKb/s tavq device
+Average 99.3 74 593 13 134 54.4 hda
+ 0.1 0 0 0 0 0.0 hdc
diff --git a/qa/165 b/qa/165
new file mode 100755
index 0000000..beb51a0
--- /dev/null
+++ b/qa/165
@@ -0,0 +1,40 @@
+#! /bin/sh
+# PCP QA Test No. 165
+# pmval -f checkout
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "=== kernel.all.load - instantaneous ==="
+for arg in "" "-f 0" "-f 3" "-f 0 -w 6" "-w 9 -f 3"
+do
+ echo
+ echo "--- arg $arg ---"
+ pmval $arg -z -a src/kenj-pc-1 -t 1min -s 4 kernel.all.load
+done
+
+echo
+echo "=== irix.network.interface.total.packets - counter ==="
+for arg in "" "-f 0" "-f 1" "-w 4 -f 0" "-w 6 -f 2"
+do
+ echo
+ echo "--- arg $arg ---"
+ pmval $arg -z -a src/changeinst -t 1sec -s 4 irix.network.interface.total.packets
+done
+
+# success, all done
+exit
diff --git a/qa/165.out b/qa/165.out
new file mode 100644
index 0000000..fb917b2
--- /dev/null
+++ b/qa/165.out
@@ -0,0 +1,202 @@
+QA output created by 165
+=== kernel.all.load - instantaneous ===
+
+--- arg ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: kernel.all.load
+archive: src/kenj-pc-1
+host: kenj-pc
+start: Sun Feb 8 12:22:31 2004
+end: Sun Feb 8 15:28:46 2004
+semantics: instantaneous value
+units: none
+samples: 4
+interval: 60.00 sec
+12:22:31.724 No values available
+
+ 1 minute 5 minute 15 minute
+12:23:31.724 0.1000 0.1700 0.1400
+12:24:31.724 0.1900 0.1900 0.1400
+12:25:31.724 0.1500 0.1700 0.1400
+
+--- arg -f 0 ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: kernel.all.load
+archive: src/kenj-pc-1
+host: kenj-pc
+start: Sun Feb 8 12:22:31 2004
+end: Sun Feb 8 15:28:46 2004
+semantics: instantaneous value
+units: none
+samples: 4
+interval: 60.00 sec
+12:22:31.724 No values available
+
+ 1 minute 5 minute 15 minute
+12:23:31.724 0 0 0
+12:24:31.724 0 0 0
+12:25:31.724 0 0 0
+
+--- arg -f 3 ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: kernel.all.load
+archive: src/kenj-pc-1
+host: kenj-pc
+start: Sun Feb 8 12:22:31 2004
+end: Sun Feb 8 15:28:46 2004
+semantics: instantaneous value
+units: none
+samples: 4
+interval: 60.00 sec
+12:22:31.724 No values available
+
+ 1 minute 5 minute 15 minute
+12:23:31.724 0.100 0.170 0.140
+12:24:31.724 0.190 0.190 0.140
+12:25:31.724 0.150 0.170 0.140
+
+--- arg -f 0 -w 6 ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: kernel.all.load
+archive: src/kenj-pc-1
+host: kenj-pc
+start: Sun Feb 8 12:22:31 2004
+end: Sun Feb 8 15:28:46 2004
+semantics: instantaneous value
+units: none
+samples: 4
+interval: 60.00 sec
+12:22:31.724 No values available
+full label for instance[0]: 1 minute
+full label for instance[1]: 5 minute
+full label for instance[2]: 15 minute
+
+ 1 minu 5 minu 15 min
+12:23:31.724 0 0 0
+12:24:31.724 0 0 0
+12:25:31.724 0 0 0
+
+--- arg -w 9 -f 3 ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: kernel.all.load
+archive: src/kenj-pc-1
+host: kenj-pc
+start: Sun Feb 8 12:22:31 2004
+end: Sun Feb 8 15:28:46 2004
+semantics: instantaneous value
+units: none
+samples: 4
+interval: 60.00 sec
+12:22:31.724 No values available
+
+ 1 minute 5 minute 15 minute
+12:23:31.724 0.100 0.170 0.140
+12:24:31.724 0.190 0.190 0.140
+12:25:31.724 0.150 0.170 0.140
+
+=== irix.network.interface.total.packets - counter ===
+
+--- arg ---
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: irix.network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 4
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:43.422 5.000 ? 48.00
+07:45:44.422 1.000 ? 8.000
+07:45:45.422 No values available
+
+--- arg -f 0 ---
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: irix.network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 4
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:43.422 5 ? 48
+07:45:44.422 1 ? 8
+07:45:45.422 No values available
+
+--- arg -f 1 ---
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: irix.network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 4
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:43.422 5.0 ? 48.0
+07:45:44.422 1.0 ? 8.0
+07:45:45.422 No values available
+
+--- arg -w 4 -f 0 ---
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: irix.network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 4
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:43.422 5 ? 48
+07:45:44.422 1 ? 8
+07:45:45.422 No values available
+
+--- arg -w 6 -f 2 ---
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: irix.network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 4
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:43.422 5.00 ? 48.00
+07:45:44.422 1.00 ? 8.00
+07:45:45.422 No values available
diff --git a/qa/166 b/qa/166
new file mode 100755
index 0000000..70fc847
--- /dev/null
+++ b/qa/166
@@ -0,0 +1,70 @@
+#! /bin/sh
+# PCP QA Test No. 166
+# pmlogreduce in the presence of mark records
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogreduce >/dev/null 2>&1 || "No pmlogreduce binary installed"
+
+_filter()
+{
+ sed -e "s;$tmp;TMP;"
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+pmlogreduce -A 1m -t 1m src/reduce-gap $tmp
+
+echo "--- mark records in input archive ---"
+pmdumplog -z src/reduce-gap | grep '<mark>'
+echo "--- mark records in reduced archive ---"
+pmdumplog -z $tmp | grep '<mark>'
+
+for metric in sample.milliseconds sample.drift
+do
+ echo
+ echo "=== $metric ==="
+ echo "--- pmval using input archive ---"
+ pmval -z -A 1m -t 15sec -a src/reduce-gap $metric
+ if [ $metric = sample.milliseconds ]
+ then
+ echo
+ echo "--- raw pmval using input archive ---"
+ pmval -r -f 0 -z -A 1m -t 15sec -a src/reduce-gap $metric
+ fi
+ echo
+ echo "--- pmval -U using reduced archive ---"
+ pmval -z -U $tmp $metric 2>&1 | _filter
+ if [ $metric = sample.milliseconds ]
+ then
+ echo
+ echo "--- raw pmval -U using reduced archive ---"
+ pmval -r -f 0 -z -U $tmp $metric 2>&1 | _filter
+ fi
+ echo
+ echo "--- pmval using reduced archive ---"
+ pmval -z -A 1m -t 15sec -a $tmp $metric 2>&1 | _filter
+ if [ $metric = sample.milliseconds ]
+ then
+ echo
+ echo "--- raw pmval using reduced archive ---"
+ pmval -r -f 0 -z -A 1m -t 15sec -a $tmp $metric 2>&1 | _filter
+ fi
+done
+
+
+# success, all done
+exit
diff --git a/qa/166.out b/qa/166.out
new file mode 100644
index 0000000..2cd4ec0
--- /dev/null
+++ b/qa/166.out
@@ -0,0 +1,497 @@
+QA output created by 166
+pmlogreduce: sample.aggregate.null: Warning: skipping AGGREGATE metric
+pmlogreduce: sample.aggregate.hullo: Warning: skipping AGGREGATE metric
+pmlogreduce: sample.aggregate.write_me: Warning: skipping AGGREGATE metric
+--- mark records in input archive ---
+22:01:48.423 <mark>
+--- mark records in reduced archive ---
+22:01:48.423 <mark>
+
+=== sample.milliseconds ===
+--- pmval using input archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.milliseconds
+archive: src/reduce-gap
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:26 2005
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 54
+interval: 15.00 sec
+21:57:15.000 1.000
+21:57:30.000 1.000
+21:57:45.000 1.000
+21:58:00.000 1.000
+21:58:15.000 1.000
+21:58:30.000 1.000
+21:58:45.000 1.000
+21:59:00.000 1.000
+21:59:15.000 1.000
+21:59:30.000 1.000
+21:59:45.000 1.000
+22:00:00.000 1.000
+22:00:15.000 1.000
+22:00:30.000 1.000
+22:00:45.000 1.000
+22:01:00.000 1.000
+22:01:15.000 1.000
+22:01:30.000 1.000
+22:01:45.000 1.000
+22:02:00.000 No values available
+22:02:15.000 No values available
+22:02:30.000 No values available
+22:02:45.000 No values available
+22:03:00.000 No values available
+22:03:15.000 No values available
+22:03:30.000 No values available
+22:03:45.000 No values available
+22:04:00.000 No values available
+22:04:15.000 No values available
+22:04:30.000 No values available
+22:04:45.000 No values available
+22:05:00.000 No values available
+22:05:15.000 No values available
+22:05:30.000 No values available
+22:05:45.000 No values available
+22:06:00.000 1.000
+22:06:15.000 1.000
+22:06:30.000 1.000
+22:06:45.000 1.000
+22:07:00.000 1.000
+22:07:15.000 1.000
+22:07:30.000 1.000
+22:07:45.000 1.000
+22:08:00.000 1.000
+22:08:15.000 1.000
+22:08:30.000 1.000
+22:08:45.000 1.000
+22:09:00.000 1.000
+22:09:15.000 1.000
+22:09:30.000 1.000
+22:09:45.000 1.000
+22:10:00.000 1.000
+22:10:15.000 1.000
+
+pmval: pmFetch: End of PCP archive log
+
+--- raw pmval using input archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.milliseconds
+archive: src/reduce-gap
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:26 2005
+semantics: cumulative counter
+units: millisec
+samples: 54
+interval: 15.00 sec
+21:57:00.000 3394854
+21:57:15.000 3409854
+21:57:30.000 3424854
+21:57:45.000 3439854
+21:58:00.000 3454854
+21:58:15.000 3469854
+21:58:30.000 3484854
+21:58:45.000 3499854
+21:59:00.000 3514854
+21:59:15.000 3529854
+21:59:30.000 3544854
+21:59:45.000 3559854
+22:00:00.000 3574854
+22:00:15.000 3589854
+22:00:30.000 3604854
+22:00:45.000 3619854
+22:01:00.000 3634854
+22:01:15.000 3649854
+22:01:30.000 3664854
+22:01:45.000 3679854
+22:02:00.000 No values available
+22:02:15.000 No values available
+22:02:30.000 No values available
+22:02:45.000 No values available
+22:03:00.000 No values available
+22:03:15.000 No values available
+22:03:30.000 No values available
+22:03:45.000 No values available
+22:04:00.000 No values available
+22:04:15.000 No values available
+22:04:30.000 No values available
+22:04:45.000 No values available
+22:05:00.000 No values available
+22:05:15.000 No values available
+22:05:30.000 No values available
+22:05:45.000 3919854
+22:06:00.000 3934854
+22:06:15.000 3949854
+22:06:30.000 3964854
+22:06:45.000 3979854
+22:07:00.000 3994854
+22:07:15.000 4009854
+22:07:30.000 4024854
+22:07:45.000 4039854
+22:08:00.000 4054854
+22:08:15.000 4069854
+22:08:30.000 4084854
+22:08:45.000 4099854
+22:09:00.000 4114854
+22:09:15.000 4129854
+22:09:30.000 4144854
+22:09:45.000 4159854
+22:10:00.000 4174854
+22:10:15.000 4189854
+
+--- pmval -U using reduced archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.milliseconds
+archive: TMP
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:00 2005
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: all
+21:58:00.000 1.000
+21:59:00.000 1.000
+22:00:00.000 1.000
+22:01:00.000 1.000
+22:01:48.423 Archive logging suspended
+22:02:00.000 No values available
+22:03:00.000 No values available
+22:04:00.000 No values available
+22:05:00.000 No values available
+22:06:00.000 No values available
+22:07:00.000 1.000
+22:08:00.000 1.000
+22:09:00.000 1.000
+22:10:00.000 1.000
+
+pmval: pmFetchArchive: End of PCP archive log
+
+--- raw pmval -U using reduced archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.milliseconds
+archive: TMP
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:00 2005
+semantics: cumulative counter
+units: millisec
+samples: all
+21:57:00.000 3394854
+21:58:00.000 3454854
+21:59:00.000 3514854
+22:00:00.000 3574854
+22:01:00.000 3634854
+22:01:48.423 Archive logging suspended
+22:02:00.000 No values available
+22:03:00.000 No values available
+22:04:00.000 No values available
+22:05:00.000 No values available
+22:06:00.000 3934854
+22:07:00.000 3994854
+22:08:00.000 4054854
+22:09:00.000 4114854
+22:10:00.000 4174854
+
+pmval: pmFetchArchive: End of PCP archive log
+
+--- pmval using reduced archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.milliseconds
+archive: TMP
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:00 2005
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 53
+interval: 15.00 sec
+21:57:15.000 1.000
+21:57:30.000 1.000
+21:57:45.000 1.000
+21:58:00.000 1.000
+21:58:15.000 1.000
+21:58:30.000 1.000
+21:58:45.000 1.000
+21:59:00.000 1.000
+21:59:15.000 1.000
+21:59:30.000 1.000
+21:59:45.000 1.000
+22:00:00.000 1.000
+22:00:15.000 1.000
+22:00:30.000 1.000
+22:00:45.000 1.000
+22:01:00.000 1.000
+22:01:15.000 No values available
+22:01:30.000 No values available
+22:01:45.000 No values available
+22:02:00.000 No values available
+22:02:15.000 No values available
+22:02:30.000 No values available
+22:02:45.000 No values available
+22:03:00.000 No values available
+22:03:15.000 No values available
+22:03:30.000 No values available
+22:03:45.000 No values available
+22:04:00.000 No values available
+22:04:15.000 No values available
+22:04:30.000 No values available
+22:04:45.000 No values available
+22:05:00.000 No values available
+22:05:15.000 No values available
+22:05:30.000 No values available
+22:05:45.000 No values available
+22:06:00.000 No values available
+22:06:15.000 1.000
+22:06:30.000 1.000
+22:06:45.000 1.000
+22:07:00.000 1.000
+22:07:15.000 1.000
+22:07:30.000 1.000
+22:07:45.000 1.000
+22:08:00.000 1.000
+22:08:15.000 1.000
+22:08:30.000 1.000
+22:08:45.000 1.000
+22:09:00.000 1.000
+22:09:15.000 1.000
+22:09:30.000 1.000
+22:09:45.000 1.000
+22:10:00.000 1.000
+
+pmval: pmFetch: End of PCP archive log
+
+--- raw pmval using reduced archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.milliseconds
+archive: TMP
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:00 2005
+semantics: cumulative counter
+units: millisec
+samples: 53
+interval: 15.00 sec
+21:57:00.000 3394854
+21:57:15.000 3409854
+21:57:30.000 3424854
+21:57:45.000 3439854
+21:58:00.000 3454854
+21:58:15.000 3469854
+21:58:30.000 3484854
+21:58:45.000 3499854
+21:59:00.000 3514854
+21:59:15.000 3529854
+21:59:30.000 3544854
+21:59:45.000 3559854
+22:00:00.000 3574854
+22:00:15.000 3589854
+22:00:30.000 3604854
+22:00:45.000 3619854
+22:01:00.000 3634854
+22:01:15.000 No values available
+22:01:30.000 No values available
+22:01:45.000 No values available
+22:02:00.000 No values available
+22:02:15.000 No values available
+22:02:30.000 No values available
+22:02:45.000 No values available
+22:03:00.000 No values available
+22:03:15.000 No values available
+22:03:30.000 No values available
+22:03:45.000 No values available
+22:04:00.000 No values available
+22:04:15.000 No values available
+22:04:30.000 No values available
+22:04:45.000 No values available
+22:05:00.000 No values available
+22:05:15.000 No values available
+22:05:30.000 No values available
+22:05:45.000 No values available
+22:06:00.000 3934854
+22:06:15.000 3949854
+22:06:30.000 3964854
+22:06:45.000 3979854
+22:07:00.000 3994854
+22:07:15.000 4009854
+22:07:30.000 4024854
+22:07:45.000 4039854
+22:08:00.000 4054854
+22:08:15.000 4069854
+22:08:30.000 4084854
+22:08:45.000 4099854
+22:09:00.000 4114854
+22:09:15.000 4129854
+22:09:30.000 4144854
+22:09:45.000 4159854
+22:10:00.000 4174854
+
+=== sample.drift ===
+--- pmval using input archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.drift
+archive: src/reduce-gap
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:26 2005
+semantics: instantaneous value
+units: none
+samples: 54
+interval: 15.00 sec
+21:57:00.000 479
+21:57:15.000 399
+21:57:30.000 346
+21:57:45.000 246
+21:58:00.000 253
+21:58:15.000 306
+21:58:30.000 255
+21:58:45.000 271
+21:59:00.000 262
+21:59:15.000 162
+21:59:30.000 159
+21:59:45.000 134
+22:00:00.000 94
+22:00:15.000 0
+22:00:30.000 67
+22:00:45.000 166
+22:01:00.000 265
+22:01:15.000 324
+22:01:30.000 387
+22:01:45.000 435
+22:02:00.000 No values available
+22:02:15.000 No values available
+22:02:30.000 No values available
+22:02:45.000 No values available
+22:03:00.000 No values available
+22:03:15.000 No values available
+22:03:30.000 No values available
+22:03:45.000 No values available
+22:04:00.000 No values available
+22:04:15.000 No values available
+22:04:30.000 No values available
+22:04:45.000 No values available
+22:05:00.000 No values available
+22:05:15.000 No values available
+22:05:30.000 No values available
+22:05:45.000 408
+22:06:00.000 363
+22:06:15.000 235
+22:06:30.000 264
+22:06:45.000 346
+22:07:00.000 280
+22:07:15.000 318
+22:07:30.000 273
+22:07:45.000 281
+22:08:00.000 319
+22:08:15.000 277
+22:08:30.000 333
+22:08:45.000 298
+22:09:00.000 360
+22:09:15.000 343
+22:09:30.000 326
+22:09:45.000 311
+22:10:00.000 314
+22:10:15.000 284
+
+--- pmval -U using reduced archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.drift
+archive: TMP
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:00 2005
+semantics: instantaneous value
+units: none
+samples: all
+21:57:00.000 479
+21:58:00.000 253
+21:59:00.000 262
+22:00:00.000 94
+22:01:00.000 265
+22:01:48.423 Archive logging suspended
+22:02:00.000 No values available
+22:03:00.000 No values available
+22:04:00.000 No values available
+22:05:00.000 No values available
+22:06:00.000 363
+22:07:00.000 280
+22:08:00.000 319
+22:09:00.000 360
+22:10:00.000 314
+
+pmval: pmFetchArchive: End of PCP archive log
+
+--- pmval using reduced archive ---
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.drift
+archive: TMP
+host: kenj-pc
+start: Wed Jan 19 21:57:00 2005
+end: Wed Jan 19 22:10:00 2005
+semantics: instantaneous value
+units: none
+samples: 53
+interval: 15.00 sec
+21:57:00.000 479
+21:57:15.000 479
+21:57:30.000 479
+21:57:45.000 479
+21:58:00.000 253
+21:58:15.000 253
+21:58:30.000 253
+21:58:45.000 253
+21:59:00.000 262
+21:59:15.000 262
+21:59:30.000 262
+21:59:45.000 262
+22:00:00.000 94
+22:00:15.000 94
+22:00:30.000 94
+22:00:45.000 94
+22:01:00.000 265
+22:01:15.000 No values available
+22:01:30.000 No values available
+22:01:45.000 No values available
+22:02:00.000 No values available
+22:02:15.000 No values available
+22:02:30.000 No values available
+22:02:45.000 No values available
+22:03:00.000 No values available
+22:03:15.000 No values available
+22:03:30.000 No values available
+22:03:45.000 No values available
+22:04:00.000 No values available
+22:04:15.000 No values available
+22:04:30.000 No values available
+22:04:45.000 No values available
+22:05:00.000 No values available
+22:05:15.000 No values available
+22:05:30.000 No values available
+22:05:45.000 No values available
+22:06:00.000 363
+22:06:15.000 363
+22:06:30.000 363
+22:06:45.000 363
+22:07:00.000 280
+22:07:15.000 280
+22:07:30.000 280
+22:07:45.000 280
+22:08:00.000 319
+22:08:15.000 319
+22:08:30.000 319
+22:08:45.000 319
+22:09:00.000 360
+22:09:15.000 360
+22:09:30.000 360
+22:09:45.000 360
+22:10:00.000 314
diff --git a/qa/167 b/qa/167
new file mode 100755
index 0000000..d8448ea
--- /dev/null
+++ b/qa/167
@@ -0,0 +1,41 @@
+#! /bin/sh
+# PCP QA Test No. 167
+# exercise pmcd.control.register
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+pmstore pmcd.control.register 0 >/dev/null 2>&1
+
+# indom error stuff
+#
+echo "error checks ..."
+pmval -i elephant pmcd.control.register
+pmval -i 16 pmcd.control.register
+
+echo
+echo "set one at a time ..."
+i=1
+while [ $i -lt 16 ]
+do
+ pmstore -i $i pmcd.control.register $i
+ pminfo -f pmcd.control.register
+ i=`expr $i + 1`
+done
+
+# clear all together
+#
+echo
+echo "clear all ..."
+pmstore pmcd.control.register 0
+pminfo -f pmcd.control.register
diff --git a/qa/167.out b/qa/167.out
new file mode 100644
index 0000000..f6b9e41
--- /dev/null
+++ b/qa/167.out
@@ -0,0 +1,329 @@
+QA output created by 167
+error checks ...
+
+pmval: instance elephant not available
+
+pmval: instance 16 not available
+
+set one at a time ...
+pmcd.control.register inst [1 or "1"] old value=0 new value=1
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 0
+ inst [3 or "3"] value 0
+ inst [4 or "4"] value 0
+ inst [5 or "5"] value 0
+ inst [6 or "6"] value 0
+ inst [7 or "7"] value 0
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [2 or "2"] old value=0 new value=2
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 0
+ inst [4 or "4"] value 0
+ inst [5 or "5"] value 0
+ inst [6 or "6"] value 0
+ inst [7 or "7"] value 0
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [3 or "3"] old value=0 new value=3
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 0
+ inst [5 or "5"] value 0
+ inst [6 or "6"] value 0
+ inst [7 or "7"] value 0
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [4 or "4"] old value=0 new value=4
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 0
+ inst [6 or "6"] value 0
+ inst [7 or "7"] value 0
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [5 or "5"] old value=0 new value=5
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 0
+ inst [7 or "7"] value 0
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [6 or "6"] old value=0 new value=6
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 0
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [7 or "7"] old value=0 new value=7
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [8 or "8"] old value=0 new value=8
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [9 or "9"] old value=0 new value=9
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [10 or "10"] old value=0 new value=10
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 10
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [11 or "11"] old value=0 new value=11
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 10
+ inst [11 or "11"] value 11
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [12 or "12"] old value=0 new value=12
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 10
+ inst [11 or "11"] value 11
+ inst [12 or "12"] value 12
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [13 or "13"] old value=0 new value=13
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 10
+ inst [11 or "11"] value 11
+ inst [12 or "12"] value 12
+ inst [13 or "13"] value 13
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
+pmcd.control.register inst [14 or "14"] old value=0 new value=14
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 10
+ inst [11 or "11"] value 11
+ inst [12 or "12"] value 12
+ inst [13 or "13"] value 13
+ inst [14 or "14"] value 14
+ inst [15 or "15"] value 0
+pmcd.control.register inst [15 or "15"] old value=0 new value=15
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 10
+ inst [11 or "11"] value 11
+ inst [12 or "12"] value 12
+ inst [13 or "13"] value 13
+ inst [14 or "14"] value 14
+ inst [15 or "15"] value 15
+
+clear all ...
+pmcd.control.register inst [0 or "0"] old value=0 new value=0
+pmcd.control.register inst [1 or "1"] old value=1 new value=0
+pmcd.control.register inst [2 or "2"] old value=2 new value=0
+pmcd.control.register inst [3 or "3"] old value=3 new value=0
+pmcd.control.register inst [4 or "4"] old value=4 new value=0
+pmcd.control.register inst [5 or "5"] old value=5 new value=0
+pmcd.control.register inst [6 or "6"] old value=6 new value=0
+pmcd.control.register inst [7 or "7"] old value=7 new value=0
+pmcd.control.register inst [8 or "8"] old value=8 new value=0
+pmcd.control.register inst [9 or "9"] old value=9 new value=0
+pmcd.control.register inst [10 or "10"] old value=10 new value=0
+pmcd.control.register inst [11 or "11"] old value=11 new value=0
+pmcd.control.register inst [12 or "12"] old value=12 new value=0
+pmcd.control.register inst [13 or "13"] old value=13 new value=0
+pmcd.control.register inst [14 or "14"] old value=14 new value=0
+pmcd.control.register inst [15 or "15"] old value=15 new value=0
+
+pmcd.control.register
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 0
+ inst [2 or "2"] value 0
+ inst [3 or "3"] value 0
+ inst [4 or "4"] value 0
+ inst [5 or "5"] value 0
+ inst [6 or "6"] value 0
+ inst [7 or "7"] value 0
+ inst [8 or "8"] value 0
+ inst [9 or "9"] value 0
+ inst [10 or "10"] value 0
+ inst [11 or "11"] value 0
+ inst [12 or "12"] value 0
+ inst [13 or "13"] value 0
+ inst [14 or "14"] value 0
+ inst [15 or "15"] value 0
diff --git a/qa/168 b/qa/168
new file mode 100755
index 0000000..c4a8821
--- /dev/null
+++ b/qa/168
@@ -0,0 +1,88 @@
+#! /bin/sh
+# PCP QA Test No. 168
+# pmlogmerge shall abort if descriptors non consistent across archives
+# pv 933456
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pminfo -v sample.dynamic.meta 2>&1 || "Need dynamic.meta metrics in sample PMDA"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; _reset; exit \$status" 0 1 2 3 15
+
+# force sample PMDA back to a sane state
+_reset()
+{
+ $sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+}
+
+_filter()
+{
+ sed -e "s;$tmp;TMP;g"
+}
+
+# create second archive and try to merge 'em
+_doit()
+{
+ rm -f $tmp.new.* $tmp.out
+ echo "log mandatory on 1sec { sample.dynamic.meta }" \
+ | pmlogger -l $tmp.log -s 3 $tmp.new
+ _reset
+ pmlogextract $tmp.base $tmp.new $tmp.out 2>&1 \
+ | _filter
+ if [ -f $tmp.out.0 ]
+ then
+ echo "Oops ... should not have created an output archive!"
+ echo
+ echo "=== Original metadata ==="
+ pminfo -d -a $tmp.base sample.dynamic.meta.metric
+ echo
+ echo "=== New metadata ==="
+ pminfo -d -a $tmp.new sample.dynamic.meta.metric
+ echo
+ echo "=== Merged metadata ==="
+ pminfo -d -a $tmp.out sample.dynamic.meta.metric
+ echo
+ echo "=== Dump of output archive ==="
+ pmdumplog -a $tmp.out
+ fi
+}
+
+_reset
+
+echo "Check initial metric set up ..."
+pminfo -f sample.dynamic.meta
+
+echo "log mandatory on 1sec { sample.dynamic.meta }" \
+| pmlogger -l $tmp.log -s 3 $tmp.base
+
+# real QA test starts here
+
+echo "Change metric type ..."
+pmstore sample.dynamic.meta.pmdesc.type 3
+_doit
+
+echo "Change metric indom ..."
+pmstore sample.dynamic.meta.pmdesc.indom 42
+_doit
+
+echo "Change metric semantics ..."
+pmstore sample.dynamic.meta.pmdesc.sem 0
+_doit
+
+echo "Change metric units ..."
+pmstore sample.dynamic.meta.pmdesc.units 0
+_doit
+
+# success, all done
+exit
diff --git a/qa/168.out b/qa/168.out
new file mode 100644
index 0000000..583fdb6
--- /dev/null
+++ b/qa/168.out
@@ -0,0 +1,33 @@
+QA output created by 168
+Check initial metric set up ...
+
+sample.dynamic.meta.metric
+ value 42
+
+sample.dynamic.meta.pmdesc.type
+ value 0
+
+sample.dynamic.meta.pmdesc.indom
+ value 4294967295
+
+sample.dynamic.meta.pmdesc.sem
+ value 4
+
+sample.dynamic.meta.pmdesc.units
+ value 520105984
+Change metric type ...
+sample.dynamic.meta.pmdesc.type old value=0 new value=3
+pmlogextract: Error: metric sample.dynamic.meta.metric: type changed from 32 to U64!
+Archive "TMP.out" not created.
+Change metric indom ...
+sample.dynamic.meta.pmdesc.indom old value=4294967295 new value=42
+pmlogextract: Error: metric sample.dynamic.meta.metric: indom changed from PM_INDOM_NULL to 0.42!
+Archive "TMP.out" not created.
+Change metric semantics ...
+sample.dynamic.meta.pmdesc.sem old value=4 new value=0
+pmlogextract: Error: metric sample.dynamic.meta.metric: semantics changed from 4 to 0!
+Archive "TMP.out" not created.
+Change metric units ...
+sample.dynamic.meta.pmdesc.units old value=520105984 new value=0
+pmlogextract: Error: metric sample.dynamic.meta.metric: units changed from byte / sec to !
+Archive "TMP.out" not created.
diff --git a/qa/169 b/qa/169
new file mode 100755
index 0000000..50d1952
--- /dev/null
+++ b/qa/169
@@ -0,0 +1,294 @@
+#! /bin/sh
+# PCP QA Test No. 169
+#
+# Test pmcd timeouts with the pmcd PMDA's pmcd.control.timeout
+#
+# Test setting the app's timeouts < pmcd's timeout and vice versa
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.check
+. ./common.filter
+
+echo ""
+echo "Test pmcd timeouts with the pmcd PMDA's pmcd.control.timeout"
+echo ""
+
+LOCALHOST=`hostname`
+signal=$PCP_BINADM_DIR/pmsignal
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_cleanup()
+{
+ $sudo $PCP_RC_DIR/pcp stop >$tmp.stop
+ _filter_pcp_stop <$tmp.stop | sed -e 's/\.\.\.\.\.*/[dots]/'
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ $sudo $PCP_RC_DIR/pcp restart >$tmp.start
+ _filter_pcp_start <$tmp.start | sed -e 's/\.\.\.\.\.*/[dots]/'
+ _wait_for_pmcd
+ _wait_for_pmlogger
+
+ rm -f $tmp.*
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+# real QA test starts here
+
+# This value is passed to processes this script creates on the command line.
+# It's unlikely to occur anywhere in a ps output and is used as a tag to
+# terminate or check for the existence of the processes later.
+#
+TAG=000000660066
+
+
+_check_pmcd_procs()
+{
+ n_pmcd=`ps $PCP_PS_ALL_FLAGS \
+ | tee $tmp.pmcd \
+ | fgrep "$PCP_PMCD_PATH" \
+ | grep -v grep \
+ | wc -l \
+ | tr -d ' '`
+ if [ "X$n_pmcd" != "X$1" ]
+ then
+ echo "Expected $1 pmcd processes but found $n_pmcd:"
+ cat $tmp.pmcd
+ cat $PCP_PMCDLOG_PATH
+ file $PCP_LOG_DIR/core* $PCP_LOG_DIR/pmcd/core*
+ return 1
+ else
+ return 0
+ fi
+}
+
+_set_timeouts()
+{
+ pmcd_timeout=$1
+ app_timeout=$2
+
+ echo "app timeout = $app_timeout"
+ echo "pmcd timeout = $pmcd_timeout"
+ PMCD_REQUEST_TIMEOUT=$app_timeout
+ export PMCD_REQUEST_TIMEOUT
+
+ pmstore pmcd.control.timeout $pmcd_timeout
+
+}
+
+_echo()
+{
+ echo "$*"
+ echo "$*" >>$seq.full
+}
+
+rm -rf $tmp.*
+pmns=$tmp.pmns
+
+# use a dummy pmns for pminfo
+dummy_domain=160 # choose non-existent domain
+cat >$pmns <<EOF
+root {
+ dummyproc $dummy_domain:0:0
+}
+EOF
+
+# pmcd will run a dumb_pmda, masquerading as the IRIX agent. This will
+# not respond to PDUs from PMCD, which should then time it out.
+# The pmcd PMDA is required so that pmcd.control.timeout can be modified.
+# Save the current pmcd.conf so it can be restored afterwards.
+
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+cat >$tmp.tmp <<End-Of-File
+# QA test 169 dummy pmcd.conf (blame Jonathan if you find this!)
+#
+dummyproc $dummy_domain pipe binary $here/src/dumb_pmda -d $dummy_domain $TAG
+End-Of-File
+
+$PCP_AWK_PROG <$PCP_PMCDCONF_PATH >>$tmp.tmp '
+ $3 == "dso" && $4 == "irix_init" { print }
+ $3 == "dso" && $4 == "linux_init" { print }
+ $3 == "dso" && $4 == "pmcd_init" { print }
+ $3 == "pipe" && $1 == "pmcd" { print }
+ { next }'
+
+pmcdlog=$PCP_PMCDLOG_PATH
+
+$sudo mv $tmp.tmp $PCP_PMCDCONF_PATH
+$sudo $PCP_RC_DIR/pcp start >$tmp.start
+_filter_pcp_start <$tmp.start | sed -e 's/\.\.\.\.\.*/[dots]/'
+_wait_for_pmcd
+if _check_pmcd_procs 1
+then
+ :
+else
+ _echo "pmcd didn't start!"
+ _echo ""
+ cat $pmcdlog >>$seq.full
+ exit 1
+fi
+
+ps $PCP_PS_ALL_FLAGS >$tmp.ps
+egrep '[P]ID|[p]m' $tmp.ps >>$seq.full
+if grep "[d]umb_pmda" $tmp.ps >/dev/null
+then
+ :
+else
+ _echo "pmcd didn't create the dumb_pmda agent"
+ _echo ""
+ cat $pmcdlog >>$seq.full
+ exit 1
+fi
+
+# force to a known state
+#
+pmstore pmcd.control.timeout 5 >/dev/null
+
+# for debugging
+#
+#debug# pmstore pmcd.control.tracenobuf 1 >/dev/null
+
+#
+# pmcd agent timeout < application time out
+#
+_echo ""
+_echo "*** pmcd agent timeout < app timeout ***"
+_echo "*** pmcd will killoff agent ***"
+_echo ""
+_set_timeouts 5 10
+
+# Fetch from dummy domain. This should cause the dumb_pmda agent to be
+# timed-out by pmcd, resulting in its termination.
+#
+_echo ""
+_echo "Expect dummyproc to fail (IPC protocol failure):"
+pminfo -n $pmns -d dummyproc
+_echo ""
+# make sure pmcd has had a chance to wait() on the pmda process
+#
+sleep 2
+pminfo -n $pmns -d dummyproc >/dev/null 2>&1
+
+ps $PCP_PS_ALL_FLAGS >$tmp.ps
+egrep '[P]ID|[p]m' $tmp.ps >>$seq.full
+if grep "[d]umb_pmda" <$tmp.ps >/dev/null
+then
+ _echo "Error: pmcd didn't terminate the dumb_pmda agent"
+ cat $pmcdlog >>$seq.full
+ exit 1
+else
+ _echo "pmcd terminated dummy the dumb_pmda agent as desired"
+fi
+
+echo >>$seq.full
+cat $PCP_LOG_DIR/pmcd/pmcd.log >>$seq.full
+echo >>$seq.full
+cat $PCP_LOG_DIR/pmcd/dumb_pmda.log >>$seq.full
+
+# Restart pmcd and its agents
+_echo ""
+$sudo $signal -a -s HUP pmcd
+sleep 1
+_wait_for_pmcd
+if _check_pmcd_procs 1
+then
+ :
+else
+ _echo "pmcd was sent SIGHUP and died"
+ _echo ""
+ cat $pmcdlog >>$seq.full
+ exit 1
+fi
+
+ps $PCP_PS_ALL_FLAGS >$tmp.ps
+egrep '[P]ID|[p]m' $tmp.ps >>$seq.full
+if grep "[d]umb_pmda" <$tmp.ps >/dev/null
+then
+ psline=`ps $PCP_PS_ALL_FLAGS | grep "[d]umb_pmda"`
+ old_dummy_pid=`echo $psline | cut -d ' ' -f 2`
+else
+ _echo "pmcd SIGHUP didn't restart the dumb_pmda agent"
+ _echo ""
+ cat $pmcdlog >>$seq.full
+ exit 1
+fi
+
+#
+# pmcd agent timeout > application time out
+#
+_echo ""
+_echo "*** pmcd agent timeout > app timeout ***"
+_echo "*** pmcd will not killoff agent until later ***"
+_echo ""
+_set_timeouts 10 5
+
+# Fetch from dummy domain. This should cause the dumb_pmda agent to be
+# timed-out by pmcd, resulting in its termination.
+#
+_echo ""
+_echo "Expect dummyproc to fail (timeout for pmcd failure):"
+#DEBUG# date
+pminfo -n $pmns -d dummyproc
+#DEBUG# date
+_echo ""
+
+ps $PCP_PS_ALL_FLAGS >$tmp.ps
+egrep '[P]ID|[p]m' $tmp.ps >>$seq.full
+if grep "[d]umb_pmda" <$tmp.ps >/dev/null
+then
+ _echo "pmcd did NOT terminate the dumb_pmda agent as desired"
+
+ # make sure it is really the same process - check pid
+ psline=`ps $PCP_PS_ALL_FLAGS | grep "[d]umb_pmda"`
+ new_dummy_pid=`echo $psline | cut -d ' ' -f 2`
+ if [ $old_dummy_pid -ne $new_dummy_pid ]
+ then
+ _echo "Error: dumb_pmda proc has been recreated"
+ _echo "pid mismatch: $old_dummy_pid versus $new_dummy_pid"
+ exit 1
+ fi
+else
+ _echo "Error: pmcd terminated the dumb_pmda agent"
+ cat $pmcdlog >>$seq.full
+ exit 1
+fi
+
+_echo ""
+_echo "Now wait for pmcd to timeout..."
+_echo ""
+sleep 6
+
+ps $PCP_PS_ALL_FLAGS >$tmp.ps
+egrep '[P]ID|[p]m' $tmp.ps >>$seq.full
+if grep "[d]umb_pmda" <$tmp.ps >/dev/null
+then
+ _echo "Error: pmcd didn't terminate the dumb_pmda agent"
+ cat $pmcdlog >>$seq.full
+ exit 1
+else
+ _echo "pmcd terminated the dumb_pmda agent as desired"
+fi
+
+echo >>$seq.full
+cat $PCP_LOG_DIR/pmcd/pmcd.log >>$seq.full
+echo >>$seq.full
+cat $PCP_LOG_DIR/pmcd/dumb_pmda.log >>$seq.full
+
+_echo ""
+status=0
diff --git a/qa/169.out b/qa/169.out
new file mode 100644
index 0000000..b19b9d0
--- /dev/null
+++ b/qa/169.out
@@ -0,0 +1,40 @@
+QA output created by 169
+
+Test pmcd timeouts with the pmcd PMDA's pmcd.control.timeout
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+*** pmcd agent timeout < app timeout ***
+*** pmcd will killoff agent ***
+
+app timeout = 10
+pmcd timeout = 5
+pmcd.control.timeout old value=5 new value=5
+
+Expect dummyproc to fail (IPC protocol failure):
+dummyproc: pmLookupDesc: IPC protocol failure
+
+pmcd terminated dummy the dumb_pmda agent as desired
+
+
+*** pmcd agent timeout > app timeout ***
+*** pmcd will not killoff agent until later ***
+
+app timeout = 5
+pmcd timeout = 10
+pmcd.control.timeout old value=5 new value=10
+
+Expect dummyproc to fail (timeout for pmcd failure):
+dummyproc: pmLookupDesc: Timeout waiting for a response from PMCD
+
+pmcd did NOT terminate the dumb_pmda agent as desired
+
+Now wait for pmcd to timeout...
+
+pmcd terminated the dumb_pmda agent as desired
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/170 b/qa/170
new file mode 100755
index 0000000..76dffbb
--- /dev/null
+++ b/qa/170
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 170
+# Test $PCP_RC_DIR/pcp script pmcd log location
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.product
+. ./common.check
+. ./common.filter
+
+status=0
+
+_cleanup()
+{
+ [ -f $tmp.save ] && $sudo mv $tmp.save $PCP_PMCDOPTIONS_PATH
+ $sudo rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ exit $status
+}
+
+trap _cleanup 0 1 2 3 15
+
+# real QA test starts here
+
+rm -rf $tmp.* $seq.full
+echo "First, the standard logfile:" | tee -a $seq.full
+$sudo $PCP_RC_DIR/pcp stop >/dev/null
+$sudo rm -f $PCP_LOG_DIR/pmcd/pmcd.log
+$sudo $PCP_RC_DIR/pcp start | tee -a $seq.full >$tmp.out
+_wait_for_pmcd
+_wait_for_pmlogger
+grep -i 'starting pmcd' $tmp.out | _filter_pcp_start
+if [ -f $PCP_LOG_DIR/pmcd/pmcd.log ]
+then
+ echo '$PCP_LOG_DIR/pmcd/pmcd.log created'
+else
+ echo 'Error: $PCP_LOG_DIR/pmcd/pmcd.log not created'
+ status=1
+fi
+echo ""
+
+cp $PCP_PMCDOPTIONS_PATH $tmp.save
+cp $PCP_PMCDOPTIONS_PATH $tmp.options
+cat <<End-Of-File >>$tmp.options
+# Dummy lines added by PCP QA test 170
+#
+-l $tmp.1.pmcd.log
+-l $tmp.2.pmcd.log
+End-Of-File
+$sudo cp $tmp.options $PCP_PMCDOPTIONS_PATH
+
+echo "The logfile from the hacked \$PCP_PMCDOPTIONS_PATH (pmcd.options):" | tee -a $seq.full
+$sudo $PCP_RC_DIR/pcp restart | tee -a $seq.full >$tmp.out
+_wait_for_pmcd
+_wait_for_pmlogger
+grep -i 'starting pmcd' $tmp.out | sed -e "s/$$/MYPID/" | _filter_pcp_start
+if [ -f $tmp.1.pmcd.log ]
+then
+ echo 'Error: $tmp.1.pmcd.log created unexpectedly'
+ ls -l $tmp.1.pmcd.log
+ cat $tmp.1.pmcd.log
+ status=1
+fi
+if [ -f $tmp.2.pmcd.log ]
+then
+ echo '$tmp.2.pmcd.log created'
+else
+ echo 'Error: $tmp.2.pmcd.log not created'
+ status=1
+fi
+
+exit
diff --git a/qa/170.out b/qa/170.out
new file mode 100644
index 0000000..c16d3cd
--- /dev/null
+++ b/qa/170.out
@@ -0,0 +1,11 @@
+QA output created by 170
+First, the standard logfile:
+Starting pmcd ...
+$PCP_LOG_DIR/pmcd/pmcd.log created
+
+The logfile from the hacked $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+$tmp.2.pmcd.log created
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/171 b/qa/171
new file mode 100755
index 0000000..1ac21d2
--- /dev/null
+++ b/qa/171
@@ -0,0 +1,50 @@
+#! /bin/sh
+# PCP QA Test No. 171
+# demonstrate interpolate mode bug
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/bug
+ pmns="-n src/root_irix"
+else
+ # no support for V1 archives
+ arch=src/bug_v2
+ pmns=
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+
+# need -n src/root_irix 'cause app looks up some metrics not in the
+# archive
+#
+src/interp_bug -n src/root_irix -t 2.0 -a $arch
+status=$?
+
+if [ $status != 0 ]
+then
+ echo
+ echo "Error ... here is the log"
+ pmdumplog $pmns -a $arch
+fi
+
+exit $status
diff --git a/qa/171.out b/qa/171.out
new file mode 100644
index 0000000..696e651
--- /dev/null
+++ b/qa/171.out
@@ -0,0 +1,25 @@
+QA output created by 171
+metrics_a[0]: sample.long.one 29.0.10
+metrics_a[1]: kernel.all.syscall 1.10.19
+metrics_b[0]: sample.long.one 29.0.10
+metrics_b[1]: kernel.all.sysexec 1.10.20
+Start at: 14:36:16.341
+
+Pass One: rewind and fetch metrics_a until end of log
+sample 0 time=14:36:16.341 correct result
+sample 1 time=14:36:18.341 correct result
+sample 2 time=14:36:20.341 correct result
+sample 3 time=14:36:22.341 correct result
+sample 4 time=14:36:24.341 correct result
+sample 5 time=14:36:26.341 correct result
+sample 6 time=14:36:28.341 correct result
+sample 7 time=14:36:30.341 correct result
+Pass Two: rewind and fetch metrics_b until end of log
+sample 0 time=14:36:16.341 correct result
+sample 1 time=14:36:18.341 correct result
+sample 2 time=14:36:20.341 correct result
+sample 3 time=14:36:22.341 correct result
+sample 4 time=14:36:24.341 correct result
+sample 5 time=14:36:26.341 correct result
+sample 6 time=14:36:28.341 correct result
+sample 7 time=14:36:30.341 correct result
diff --git a/qa/172 b/qa/172
new file mode 100755
index 0000000..8e44471
--- /dev/null
+++ b/qa/172
@@ -0,0 +1,115 @@
+#! /bin/sh
+# PCP QA Test No. 172
+# Exercise $PMCD_PORT and $PMLOGGER_PORT mechanisms
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+LOCALHOST=`hostname`
+_needclean=true
+status=0
+
+_interrupt()
+{
+ status=1
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_cleanup()
+{
+ if $_needclean
+ then
+ unset PMCD_PORT
+ unset PMLOGGER_PORT
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+&& $sudo sh $tmp.cmd
+
+trap "_cleanup" 0
+trap "_interrupt; _cleanup" 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+PMCD_PORT=42000
+PMLOGGER_PORT=43000
+export PMCD_PORT PMLOGGER_PORT
+
+echo "pmcd with PMCD_PORT=$PMCD_PORT, pmlogger with PMLOGGER_PORT=$PMLOGGER_PORT"
+# need to do this indirectly because system sudo cleanses the environment
+#
+echo "export PMCD_PORT=$PMCD_PORT" >$tmp.start
+echo "export PMLOGGER_PORT=$PMLOGGER_PORT" >>$tmp.start
+echo "$PCP_RC_DIR/pcp restart" >>$tmp.start
+
+$sudo sh $tmp.start | _filter_pcp_start
+_wait_for_pmlogger -P $LOGGING_DIR/$LOCALHOST/pmlogger.log
+
+echo
+echo "pminfo with PMCD_PORT=$PMCD_PORT"
+pminfo -v pmcd \
+| sed -e '/^pmcd\.pmie/d'
+
+echo
+echo "pmlc with PMLOGGER_PORT=$PMLOGGER_PORT"
+echo "show loggers" | pmlc \
+| sed \
+ -e '/primary/s/([0-9][0-9]*)/(LOGGER_PID) .../' \
+ -e "s/on `hostname`/on HOST/" \
+ -e "s/on local:/on HOST/" \
+ -e 's/ *[0-9][0-9]*//g'
+
+echo
+echo 'port from $PCP_TMP_DIR/pmlogger/primary'
+sed -e 1q $PCP_TMP_DIR/pmlogger/primary
+
+# For Mac OS X need to massage lines like ..
+# tcp4 0 0 *.42000 *.* LISTEN
+# tcp6 0 0 *.42000 *.* LISTEN
+#
+echo "... and netstat"
+netstat -an \
+| tee -a $seq.full \
+| sed -n -e '/4[23]000.*LISTEN/{
+s/0\.0\.0\.0/inet/g
+s/:::/inet6:/g
+s/tcp4[ 0]*\*./inet./
+s/tcp6[ 0]*\*./inet6./
+s/:/./g
+s/.*\(inet6*.4[23]000\).*\(LISTEN\).*/... \1 ... \2/
+p
+}' \
+| sort
diff --git a/qa/172.out.ipv6 b/qa/172.out.ipv6
new file mode 100644
index 0000000..b685a92
--- /dev/null
+++ b/qa/172.out.ipv6
@@ -0,0 +1,22 @@
+QA output created by 172
+pmcd with PMCD_PORT=42000, pmlogger with PMLOGGER_PORT=43000
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+pminfo with PMCD_PORT=42000
+
+pmlc with PMLOGGER_PORT=43000
+The following pmloggers are running on HOST:
+ primary (LOGGER_PID) ...
+
+port from $PCP_TMP_DIR/pmlogger/primary
+43000
+... and netstat
+... inet.42000 ... LISTEN
+... inet.43000 ... LISTEN
+... inet6.42000 ... LISTEN
+... inet6.43000 ... LISTEN
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/172.out.nonipv6 b/qa/172.out.nonipv6
new file mode 100644
index 0000000..cd147a8
--- /dev/null
+++ b/qa/172.out.nonipv6
@@ -0,0 +1,20 @@
+QA output created by 172
+pmcd with PMCD_PORT=42000, pmlogger with PMLOGGER_PORT=43000
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+pminfo with PMCD_PORT=42000
+
+pmlc with PMLOGGER_PORT=43000
+The following pmloggers are running on HOST:
+ primary (LOGGER_PID) ...
+
+port from $PCP_TMP_DIR/pmlogger/primary
+43000
+... and netstat
+... inet.42000 ... LISTEN
+... inet.43000 ... LISTEN
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/173 b/qa/173
new file mode 100755
index 0000000..a58717f
--- /dev/null
+++ b/qa/173
@@ -0,0 +1,51 @@
+#! /bin/sh
+# PCP QA Test No. 173
+# variant on 171 for bogus "No values" for pmchart from a log
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/bug
+ pmns="-n src/root_irix"
+else
+ # no support for V1 archives
+ arch=src/bug_v2
+ pmns=
+fi
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+
+# need -n src/root_irix 'cause app looks up some metrics not in the
+# archive
+#
+src/interp_bug2 -n src/root_irix -t 0.5 -a $arch
+status=$?
+
+if [ $status != 0 ]
+then
+ echo
+ echo "Error ... here is the log"
+ pmdumplog $pmns -a $arch
+fi
+
+exit $status
diff --git a/qa/173.out b/qa/173.out
new file mode 100644
index 0000000..33eea5f
--- /dev/null
+++ b/qa/173.out
@@ -0,0 +1,95 @@
+QA output created by 173
+metrics_a[0]: proc.nprocs 3.0.0
+metrics_b[0]: proc.nprocs 3.0.0
+metrics_b[1]: kernel.all.syscall 1.10.19
+metrics_c[0]: proc.nprocs 3.0.0
+metrics_c[1]: kernel.all.sysexec 1.10.20
+Start at: 14:36:16.341
+
+Pass One: rewind and fetch metrics_a until end of log
+sample 0 time=14:36:16.341 correct result
+sample 1 time=14:36:16.841 correct result
+sample 2 time=14:36:17.341 correct result
+sample 3 time=14:36:17.841 correct result
+sample 4 time=14:36:18.341 correct result
+sample 5 time=14:36:18.841 correct result
+sample 6 time=14:36:19.341 correct result
+sample 7 time=14:36:19.841 correct result
+sample 8 time=14:36:20.341 correct result
+sample 9 time=14:36:20.841 correct result
+sample 10 time=14:36:21.341 correct result
+sample 11 time=14:36:21.841 correct result
+sample 12 time=14:36:22.341 correct result
+sample 13 time=14:36:22.841 correct result
+sample 14 time=14:36:23.341 correct result
+sample 15 time=14:36:23.841 correct result
+sample 16 time=14:36:24.341 correct result
+sample 17 time=14:36:24.841 correct result
+sample 18 time=14:36:25.341 correct result
+sample 19 time=14:36:25.841 correct result
+sample 20 time=14:36:26.341 correct result
+sample 21 time=14:36:26.841 correct result
+sample 22 time=14:36:27.341 correct result
+sample 23 time=14:36:27.841 correct result
+sample 24 time=14:36:28.341 correct result
+sample 25 time=14:36:28.841 correct result
+sample 26 time=14:36:29.341 correct result
+sample 27 time=14:36:29.841 correct result
+Pass Two: rewind and fetch metrics_b until end of log
+sample 0 time=14:36:16.341 correct result
+sample 1 time=14:36:16.841 correct result
+sample 2 time=14:36:17.341 correct result
+sample 3 time=14:36:17.841 correct result
+sample 4 time=14:36:18.341 correct result
+sample 5 time=14:36:18.841 correct result
+sample 6 time=14:36:19.341 correct result
+sample 7 time=14:36:19.841 correct result
+sample 8 time=14:36:20.341 correct result
+sample 9 time=14:36:20.841 correct result
+sample 10 time=14:36:21.341 correct result
+sample 11 time=14:36:21.841 correct result
+sample 12 time=14:36:22.341 correct result
+sample 13 time=14:36:22.841 correct result
+sample 14 time=14:36:23.341 correct result
+sample 15 time=14:36:23.841 correct result
+sample 16 time=14:36:24.341 correct result
+sample 17 time=14:36:24.841 correct result
+sample 18 time=14:36:25.341 correct result
+sample 19 time=14:36:25.841 correct result
+sample 20 time=14:36:26.341 correct result
+sample 21 time=14:36:26.841 correct result
+sample 22 time=14:36:27.341 correct result
+sample 23 time=14:36:27.841 correct result
+sample 24 time=14:36:28.341 correct result
+sample 25 time=14:36:28.841 correct result
+sample 26 time=14:36:29.341 correct result
+sample 27 time=14:36:29.841 correct result
+Pass Three: rewind and fetch metrics_c until end of log
+sample 0 time=14:36:16.341 correct result
+sample 1 time=14:36:16.841 correct result
+sample 2 time=14:36:17.341 correct result
+sample 3 time=14:36:17.841 correct result
+sample 4 time=14:36:18.341 correct result
+sample 5 time=14:36:18.841 correct result
+sample 6 time=14:36:19.341 correct result
+sample 7 time=14:36:19.841 correct result
+sample 8 time=14:36:20.341 correct result
+sample 9 time=14:36:20.841 correct result
+sample 10 time=14:36:21.341 correct result
+sample 11 time=14:36:21.841 correct result
+sample 12 time=14:36:22.341 correct result
+sample 13 time=14:36:22.841 correct result
+sample 14 time=14:36:23.341 correct result
+sample 15 time=14:36:23.841 correct result
+sample 16 time=14:36:24.341 correct result
+sample 17 time=14:36:24.841 correct result
+sample 18 time=14:36:25.341 correct result
+sample 19 time=14:36:25.841 correct result
+sample 20 time=14:36:26.341 correct result
+sample 21 time=14:36:26.841 correct result
+sample 22 time=14:36:27.341 correct result
+sample 23 time=14:36:27.841 correct result
+sample 24 time=14:36:28.341 correct result
+sample 25 time=14:36:28.841 correct result
+sample 26 time=14:36:29.341 correct result
+sample 27 time=14:36:29.841 correct result
diff --git a/qa/174 b/qa/174
new file mode 100755
index 0000000..ee66d97
--- /dev/null
+++ b/qa/174
@@ -0,0 +1,100 @@
+#! /bin/sh
+# PCP QA Test No. 174
+# validate profile cacheing in dbpmda matches that in libpcp
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./localconfig
+
+sampledso=$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX
+username=`id -u -n`
+pipeargs=""
+id pcp >/dev/null 2>&1 && pipeargs="-U $username"
+
+_filter()
+{
+ sed \
+ -e '/pmResult/s/ 0x.* numpmid/ ... numpmid/' \
+ -e '/^dbpmda> $/d' \
+ -e "s/ -U $username//g" \
+ -e "s;$sampledso;SAMPLEDSO;g" \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;g"
+}
+
+# filter out GetPDUs and pmResult dumps
+_filter_stderr()
+{
+ # strange sed's are for endian differences in hex dumps
+ #
+ sed \
+ -e 's/ fd=[0-9][0-9]*/ fd=<n>/g' \
+ -e '/pmResult/,/numval: /d' \
+ -e '/ inst /d' \
+ -e '/ value /d' \
+ -e 's/^\[[0-9][0-9]*]/[PID]/' \
+ -e '/^000:/s/ 700\(.\) ......../ 700\1 XPID/' \
+ -e 's/ 1000000 201/ 1 1020000/' \
+ -e 's/ 1000000 6004007/ 1 7400006/' \
+ -e 's/ 1000000 1000000/ 1 1/' \
+ -e 's/ 1000000 2000000/ 1 2/' \
+ -e 's/ c8000000 90010000/ c8 190/' \
+ -e 's/ 0 c8000000/ 0 c8/' \
+ -e 's/ XPID 6004007/ XPID 7400006/' \
+ -e 's/ 1000000 0 2004007/ 1 0 7400002/' \
+ -e '/\(DSO init .*->\)0x[0-9a-f]*()/s//\1VADDR()/' \
+ -e '/DSO init .*->/s/pmda_interface=0x[0-9a-f][0-9a-f]*/pmda_interface=0xXXXX/' \
+ -e '/DSO has domain/s/pmda_interface=[5-9]/pmda_interface=X/' |
+ $PCP_AWK_PROG '
+ /pmGetPDU/ {gotGetPDU=1; next}
+ gotGetPDU==1 && $1 ~ /[0-9][0-9][0-9]:/ { next }
+ {gotGetPDU=0; print}'
+}
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+
+dbpmda -ie <<End-of-File 2>$tmp.stderr | _filter
+debug 1
+getdesc on
+open pipe $PCP_PMDAS_DIR/sample/pmdasample $pipeargs -d 29
+fetch 29.0.6
+fetch 29.0.6
+fetch 29.0.6
+profile 29.2 none
+profile 29.2 add 200
+fetch 29.0.6
+fetch 29.0.6
+fetch 29.0.6
+profile 29.2 add 400
+fetch 29.0.6
+fetch 29.0.6
+fetch 29.0.6
+open dso $sampledso sample_init 30
+fetch 30.0.6
+fetch 30.0.6
+fetch 30.0.6
+profile 30.2 none
+profile 30.2 add 100
+fetch 30.0.6
+fetch 30.0.6
+fetch 30.0.6
+profile 30.2 add 300
+fetch 30.0.6
+fetch 30.0.6
+fetch 30.0.6
+End-of-File
+
+echo
+echo "PDUs sent ..."
+_filter_stderr <$tmp.stderr
+
+
+exit 0
diff --git a/qa/174.out b/qa/174.out
new file mode 100644
index 0000000..4c97e1f
--- /dev/null
+++ b/qa/174.out
@@ -0,0 +1,263 @@
+QA output created by 174
+dbpmda> debug 1
+dbpmda> getdesc on
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 29
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> profile 29.2 none
+dbpmda> profile 29.2 add 200
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> profile 29.2 add 400
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [400 or ???] value 400
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [400 or ???] value 400
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 29.0.6 (sample.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [400 or ???] value 400
+dbpmda> open dso SAMPLEDSO sample_init 30
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> profile 30.2 none
+dbpmda> profile 30.2 add 100
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+dbpmda> profile 30.2 add 300
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [300 or ???] value 300
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [300 or ???] value 300
+dbpmda> fetch 30.0.6
+PMID(s): 30.0.6
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+pmResult dump from ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [300 or ???] value 300
+
+PDUs sent ...
+[PID]pmXmitPDU: CREDS fd=<n> len=20
+000: 14 700c XPID 1 1020000
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: PROFILE fd=<n> len=28
+000: 1c 7002 XPID 0 0 0 0
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: PROFILE fd=<n> len=48
+000: 30 7002 XPID 0 0 1 0 7400002
+008: 1 1 0 c8
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: PROFILE fd=<n> len=52
+000: 34 7002 XPID 0 0 1 0 7400002
+008: 1 2 0 c8 190
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+[PID]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 XPID 7400006
+[PID]pmXmitPDU: FETCH fd=<n> len=32
+000: 20 7003 XPID 0 0 0 1 7400006
+DSO init sample_init->VADDR() domain=0 challenge: pmda_interface=0xXXXX pmapi_version=2
+DSO has domain=30 pmda_interface=X pmapi_version=2
+DSO desc()
+DSO profile()
+DSO fetch()
+DSO desc()
+DSO fetch()
+DSO desc()
+DSO fetch()
+DSO desc()
+DSO profile()
+DSO fetch()
+DSO desc()
+DSO fetch()
+DSO desc()
+DSO fetch()
+DSO desc()
+DSO profile()
+DSO fetch()
+DSO desc()
+DSO fetch()
+DSO desc()
+DSO fetch()
diff --git a/qa/175 b/qa/175
new file mode 100755
index 0000000..7ec1fd8
--- /dev/null
+++ b/qa/175
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 175
+# Check pmval for initial "No values" and sample ctrs
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+_filter() {
+ cat $1 $2 \
+ | $PCP_AWK_PROG '
+BEGIN { ctr = 0 }
+/No values/ { print; next }
+NF == 0 { print; next }
+ctr > 0 && NF > 0 { print "sample #" ctr; ctr++; next }
+$1 == "interval:" { ctr = 1 }
+ { print }' \
+ | sed -e '/^host:.*$/s/.*/HOST/'
+}
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+pmval -t 0.2 -s 3 sample.noinst 2>$tmp.err >$tmp.out
+_filter $tmp.out $tmp.err
+pmval -t 0.2 -s 3 sample.long.one 2>$tmp.err >$tmp.out
+_filter $tmp.out $tmp.err
+pmval -t 0.2 -s 3 sample.pdu 2>$tmp.err >$tmp.out
+_filter $tmp.out $tmp.err
+pmval -t 0.2 -r -s 3 sample.noinst 2>$tmp.err >$tmp.out
+_filter $tmp.out $tmp.err
+pmval -t 0.2 -r -s 3 sample.long.one 2>$tmp.err >$tmp.out
+_filter $tmp.out $tmp.err
+pmval -t 0.2 -r -s 3 sample.pdu 2>$tmp.err >$tmp.out
+_filter $tmp.out $tmp.err
+
diff --git a/qa/175.out b/qa/175.out
new file mode 100644
index 0000000..f0ed47b
--- /dev/null
+++ b/qa/175.out
@@ -0,0 +1,61 @@
+QA output created by 175
+
+metric: sample.noinst
+HOST
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 0.20 sec
+No values available
+No values available
+No values available
+
+metric: sample.long.one
+HOST
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 0.20 sec
+sample #1
+sample #2
+sample #3
+
+metric: sample.pdu
+HOST
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 3
+interval: 0.20 sec
+sample #1
+sample #2
+sample #3
+
+metric: sample.noinst
+HOST
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 0.20 sec
+No values available
+No values available
+No values available
+
+metric: sample.long.one
+HOST
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 0.20 sec
+sample #1
+sample #2
+sample #3
+
+metric: sample.pdu
+HOST
+semantics: cumulative counter
+units: count
+samples: 3
+interval: 0.20 sec
+sample #1
+sample #2
+sample #3
diff --git a/qa/176 b/qa/176
new file mode 100755
index 0000000..04597a7
--- /dev/null
+++ b/qa/176
@@ -0,0 +1,54 @@
+#! /bin/sh
+# PCP QA Test No. 176
+# Unwelcome __pmPinPDUBuf for 0x77d not in pool!
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/ace
+ ln $seq.out.1 $seq.out
+else
+ # no support for V1 archives
+ arch=src/ace_v2
+ ln $seq.out.2 $seq.out
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+cat >$tmp.pmns <<'End-of-File'
+root {
+ sybase
+}
+
+sybase {
+ SYBASE
+}
+
+sybase.SYBASE {
+ disk_read 40:0:7
+}
+End-of-File
+
+pmval -z -n $tmp.pmns -a $arch sybase.SYBASE.disk_read 2>$tmp.err
+cat $tmp.err
+
+exit 0
diff --git a/qa/176.out.1 b/qa/176.out.1
new file mode 100644
index 0000000..0834308
--- /dev/null
+++ b/qa/176.out.1
@@ -0,0 +1,26 @@
+QA output created by 176
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: sybase.SYBASE.disk_read
+archive: src/ace
+host: moomba
+start: Mon Oct 30 14:25:09 1995
+end: Mon Oct 30 14:25:20 1995
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 12
+interval: 1.00 sec
+14:25:09.043 No values available
+14:25:10.043 No values available
+14:25:11.043 No values available
+14:25:12.043 12.00
+14:25:13.043 80.00
+14:25:14.043 92.00
+14:25:15.043 94.00
+14:25:16.043 94.00
+14:25:17.043 41.00
+14:25:18.043 34.00
+14:25:19.043 29.00
+14:25:20.043 29.00
+
+pmval: pmFetch: End of PCP archive log
diff --git a/qa/176.out.2 b/qa/176.out.2
new file mode 100644
index 0000000..1257332
--- /dev/null
+++ b/qa/176.out.2
@@ -0,0 +1,26 @@
+QA output created by 176
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: sybase.SYBASE.disk_read
+archive: src/ace_v2
+host: moomba
+start: Mon Oct 30 14:25:09 1995
+end: Mon Oct 30 14:25:20 1995
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 12
+interval: 1.00 sec
+14:25:09.043 No values available
+14:25:10.043 No values available
+14:25:11.043 No values available
+14:25:12.043 12.00
+14:25:13.043 80.00
+14:25:14.043 92.00
+14:25:15.043 94.00
+14:25:16.043 94.00
+14:25:17.043 41.00
+14:25:18.043 34.00
+14:25:19.043 29.00
+14:25:20.043 29.00
+
+pmval: pmFetch: End of PCP archive log
diff --git a/qa/177 b/qa/177
new file mode 100755
index 0000000..28e1fa1
--- /dev/null
+++ b/qa/177
@@ -0,0 +1,134 @@
+#! /bin/sh
+# PCP QA Test No. 177
+# interp.c and excessive reading
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { min["0.1"] = 58; max["0.1"] = 62
+ min["0.2"] = 28; max["0.2"] = 32
+ min["0.4"] = 13; max["0.4"] = 17
+ xx = "'$1'"
+ }
+/^[0-2][0-9]:/ { sample++; next }
+/No values/ { noval++; next }
+END { if (min[xx] <= sample && sample <= max[xx])
+ printf "%d-%d samples\n",min[xx],max[xx]
+ else
+ printf "unexpected %d samples, not %d-%d\n",sample,min[xx],max[xx]
+ if (noval > 0) printf "Error: %d \"no values\"\n",noval
+ }'
+}
+
+_filter_err()
+{
+ $PCP_AWK_PROG '
+/LogRead.*peek/ { print "__pmLogRead-peek"; next }
+/LogRead.*forw/ { print "__pmLogRead-forw"; next }
+/LogRead.*back/ { print "__pmLogRead-back"; next }
+/FetchInterp/ { print "_pmFetchInterp"; next }' \
+ | LC_COLLATE=POSIX sort \
+ | uniq -c \
+ | $PCP_AWK_PROG '
+BEGIN {
+ min["0.1-interp"] = 116; max["0.1-interp"] = 120
+ min["0.1-back"] = 1; max["0.1-back"] = 5
+ min["0.1-forw"] = 51; max["0.1-forw"] = 57
+ min["0.1-peek"] = 1; max["0.1-peek"] = 1
+
+ min["0.2-interp"] = 58; max["0.2-interp"] = 60
+ min["0.2-back"] = 1; max["0.2-back"] = 5
+ min["0.2-forw"] = 51; max["0.2-forw"] = 57
+ min["0.2-peek"] = 1; max["0.2-peek"] = 1
+
+ min["0.4-interp"] = 29; max["0.4-interp"] = 30
+ min["0.4-back"] = 5; max["0.4-back"] = 20
+ min["0.4-forw"] = 51; max["0.4-forw"] = 57
+ min["0.4-peek"] = 1; max["0.4-peek"] = 1
+ xx = "'$1'"
+ }
+ { yy = "" }
+$2 ~ /Interp/ { yy = xx "-interp" }
+$2 ~ /-back/ { yy = xx "-back" }
+$2 ~ /-forw/ { yy = xx "-forw" }
+$2 ~ /-peek/ { yy = xx "-peek" }
+ { if (yy == "")
+ print
+ else if (min[yy] <= $1 && $1 <= max[yy])
+ printf "%s %d-%d calls\n",$2,min[yy],max[yy]
+ else
+ printf "%s unexpected %d calls, not %d-%d\n",$2,$1,min[yy],max[yy]
+ }'
+}
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | grep TIMESTAMP \
+ | wc -l \
+ | $PCP_AWK_PROG '
+BEGIN { min = 31; max = 31 }
+ { if (min <= $1 && $1 <= max)
+ printf "%d-%d timestamps\n",min,max
+ else
+ printf "unexpected %d timestamps, not %d-%d\n",$1,min,max
+ }'
+}
+
+# real QA test starts here
+$sudo rm -f $tmp.* $seq.full
+_start_up_pmlogger -s 30 -L -c /dev/null -l $tmp.log $tmp
+
+pmsleep 0.5
+
+echo
+echo "=== log sample.bin[bin-100] ===" | tee -a $seq.full
+pmlc <<End-of-File
+connect $pid
+log mandatory on 200 msec sample.bin ["bin-100"]
+End-of-File
+pmsleep 4.0
+
+echo
+echo "=== log sample.bin[bin-200] ===" | tee -a $seq.full
+pmlc <<End-of-File
+connect $pid
+log mandatory on 200 msec sample.bin ["bin-200"]
+End-of-File
+
+_wait_pmlogger_end $pid
+_filter_pmlogger_log <$tmp.log
+cat $tmp.log >>$seq.full
+
+echo
+echo "=== pmdumplog ===" | tee -a $seq.full
+pmdumplog -m $tmp | tee -a $seq.full | _filter_dump
+
+offset=`_arch_start $tmp 0.05`
+echo "offset=$offset" >>$seq.full
+
+for delta in 0.1 0.2 0.4
+do
+ echo
+ echo "=== pmval -t $delta ===" | tee -a $seq.full
+ pmval -O $offset -Dlog,logmeta,interp -i "bin-100,bin-200" -t $delta -a $tmp sample.bin 2>$tmp.err \
+ | tee -a $seq.full \
+ | _filter $delta
+ _filter_err $delta <$tmp.err
+ cat $tmp.err >>$seq.full
+done
+
+exit 0
diff --git a/qa/177.out b/qa/177.out
new file mode 100644
index 0000000..014088b
--- /dev/null
+++ b/qa/177.out
@@ -0,0 +1,47 @@
+QA output created by 177
+
+=== log sample.bin[bin-100] ===
+
+=== log sample.bin[bin-200] ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+DATE
+pmlc request from HOST: mandatory on 0.2 sec
+ metric: sample.bin
+ instance: bin-100
+
+DATE
+pmlc request from HOST: mandatory on 0.2 sec
+ metric: sample.bin
+ instance: bin-200
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+=== pmdumplog ===
+31-31 timestamps
+
+=== pmval -t 0.1 ===
+58-62 samples
+__pmLogRead-back 1-5 calls
+__pmLogRead-forw 51-57 calls
+__pmLogRead-peek 1-1 calls
+_pmFetchInterp 116-120 calls
+
+=== pmval -t 0.2 ===
+28-32 samples
+__pmLogRead-back 1-5 calls
+__pmLogRead-forw 51-57 calls
+__pmLogRead-peek 1-1 calls
+_pmFetchInterp 58-60 calls
+
+=== pmval -t 0.4 ===
+13-17 samples
+__pmLogRead-back 5-20 calls
+__pmLogRead-forw 51-57 calls
+__pmLogRead-peek 1-1 calls
+_pmFetchInterp 29-30 calls
diff --git a/qa/178 b/qa/178
new file mode 100755
index 0000000..ab80a83
--- /dev/null
+++ b/qa/178
@@ -0,0 +1,199 @@
+#! /bin/sh
+# PCP QA Test No. 178
+# pmlogextract exerciser
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+#debug# tmp=`pwd`/tmp
+
+_filter()
+{
+ $PCP_AWK_PROG '
+/\<mark\>/ { next }
+/suspended/ { next }
+/No values/ { noval++; next }
+/\?/ { noval++; next }
+/^[0-2][0-9]:/ { sample++; next }
+END { printf "%d samples",sample
+ if (noval > 0) printf ", %d \"no values\"",noval
+ print ""
+ }'
+}
+
+_range()
+{
+ $PCP_AWK_PROG '
+'$1' <= $1 && $1 <= '$2' { print "Pass",$2,$3; next }
+ { print "Fail (" $1 " " $2 " " $3 ")" }'
+}
+
+_stamp()
+{
+ sed -e 's/ [0-2][0-9]:.*$/ datestamp/'
+}
+
+_count_rec()
+{
+ $PCP_AWK_PROG '
+/^[0-2][0-9]:.*\<mark\>/ { mark++; next }
+/^[0-2][0-9]:/ { rec++; next }
+END { printf "%d",rec
+ if (mark == 1) printf " (+%d mark)",mark
+ else if (mark > 1) printf " (+%d marks)",mark
+ print ""
+ }'
+}
+
+rm -f $seq.full $tmp.*
+
+# real QA test starts here
+cat >$tmp.a.config <<End-of-File
+log mandatory on 600 msec sample.bin
+End-of-File
+
+cat >$tmp.b.config <<End-of-File
+log mandatory on 300 msec {
+ sample.bin [ "bin-200" ]
+ sample.drift
+}
+End-of-File
+
+cat >$tmp.c.config <<End-of-File
+log mandatory on 300 msec {
+ sample.bin
+ sample.drift
+}
+End-of-File
+
+# find a port for each pmlogger to use, avoiding (small!) race
+# when starting multiple pmlogger processes at the same time.
+port1=`_find_free_port`
+port2=`expr $port1 + 1`
+port2=`_find_free_port $port2`
+port3=`expr $port2 + 1`
+port3=`_find_free_port $port3`
+
+# a and b concurrently
+# a: 25 x 0.6 sec
+# b: 20 x 0.3 sec
+#
+PMLOGGER_PORT=$port1 \
+pmlogger -c $tmp.a.config -l $tmp.a.log -s 25 $tmp.a >$tmp.a.err 2>&1 &
+PMLOGGER_PORT=$port2 \
+pmlogger -c $tmp.b.config -l $tmp.b.log -s 20 $tmp.b >$tmp.b.err 2>&1 &
+
+wait
+echo "log for archive 'a' ..." >>$seq.full
+cat $tmp.a.err $tmp.a.log | tee -a $seq.full | _filter_pmlogger_log
+echo >>$seq.full
+echo "log for archive 'b' ..." >>$seq.full
+cat $tmp.b.err $tmp.b.log | tee -a $seq.full | _filter_pmlogger_log
+
+# c later
+#
+PMLOGGER_PORT=$port3 \
+pmlogger -c $tmp.c.config -l $tmp.c.log -s 10 $tmp.c >$tmp.c.err 2>&1
+echo >>$seq.full
+echo "log for archive 'c' ..." >>$seq.full
+cat $tmp.c.err $tmp.c.log | tee -a $seq.full | _filter_pmlogger_log
+
+echo "Full merge ..."
+rm -f $tmp.merge.*
+pmlogextract $tmp.a $tmp.b $tmp.c $tmp.merge
+echo >>$seq.full
+echo "Log record counts ..." | tee -a $seq.full
+for i in a b c merge
+do
+ $PCP_ECHO_PROG $PCP_ECHO_N "$i: ""$PCP_ECHO_C"
+ ( echo; echo "=== $i ===" ) >>$seq.full
+ pmdumplog -m $tmp.$i | tee -a $seq.full | _count_rec
+done
+
+echo
+echo 'sample.bin ["bin-200"] ... expect 55 samples'
+pmval -i "bin-200" -U $tmp.merge sample.bin 2>&1 \
+| _filter
+
+echo
+echo 'sample.bin ["bin-100"] ... expect 35 samples, 20 no values'
+pmval -i "bin-100" -U $tmp.merge sample.bin 2>&1 \
+| _filter
+
+echo
+echo "sample.drift ... expect 30 samples"
+pmval -U $tmp.merge sample.drift 2>&1 \
+| _filter
+
+echo | tee -a $seq.full
+echo "merge -s 10" | tee -a $seq.full
+rm -f $tmp.merge.*
+pmlogextract -s 10 $tmp.a $tmp.b $tmp.c $tmp.merge
+$PCP_ECHO_PROG $PCP_ECHO_N "merge (expect 10): ""$PCP_ECHO_C"
+pmdumplog -m $tmp.merge \
+| tee -a $seq.full \
+| _count_rec
+
+# all of b + 11 from a
+#
+echo | tee -a $seq.full
+echo "merge -T 6.9" | tee -a $seq.full
+rm -f $tmp.merge.*
+pmlogextract -T 6.9 $tmp.a $tmp.b $tmp.c $tmp.merge
+$PCP_ECHO_PROG $PCP_ECHO_N "merge (expect 31 + 2 preamble + 1 mark): ""$PCP_ECHO_C"
+pmdumplog -m $tmp.merge \
+| tee -a $seq.full \
+| _count_rec
+
+# tail of a (less 1), none of b or c
+echo | tee -a $seq.full
+echo "merge -S 6.9 -T 7.2" | tee -a $seq.full
+rm -f $tmp.merge.*
+pmlogextract -S 6.9 -T 7.2 $tmp.a $tmp.b $tmp.c $tmp.merge
+$PCP_ECHO_PROG $PCP_ECHO_N "merge (expect 12): ""$PCP_ECHO_C"
+pmdumplog -m $tmp.merge \
+| tee -a $seq.full \
+| _count_rec
+
+echo | tee -a $seq.full
+echo "Full merge with volume switch ..." | tee -a $seq.full
+rm -f $tmp.merge.*
+pmlogextract -v 15 $tmp.a $tmp.b $tmp.c $tmp.merge 2>&1 \
+| tee -a $seq.full \
+| _stamp
+echo "Log record counts ..." | tee -a $seq.full
+for i in a b c merge
+do
+ $PCP_ECHO_PROG $PCP_ECHO_N "$i: ""$PCP_ECHO_C"
+ ( echo; echo "=== $i ===" ) >>$seq.full
+ pmdumplog -m $tmp.$i \
+ | tee -a $seq.full \
+ | _count_rec
+done
+
+for file in $tmp.merge.[0-9]*
+do
+ mv $file $file.x
+done
+
+echo "Log record counts per merged volume ..." | tee -a $seq.full
+for vol in `echo $tmp.merge.[0-9]* | sed -e "s;$tmp\\.merge\\.\\([0-9]*\\)\\.x;\\1;g"`
+do
+ $PCP_ECHO_PROG $PCP_ECHO_N "volume $vol: ""$PCP_ECHO_C"
+ ( echo; echo "=== volume $vol ===" ) >>$seq.full
+ mv $tmp.merge.$vol.x $tmp.merge.$vol
+ pmdumplog -m $tmp.merge \
+ | tee -a $seq.full \
+ | _count_rec
+ mv $tmp.merge.$vol $tmp.merge.$vol.x
+done
+
diff --git a/qa/178.out b/qa/178.out
new file mode 100644
index 0000000..a269fa4
--- /dev/null
+++ b/qa/178.out
@@ -0,0 +1,64 @@
+QA output created by 178
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Full merge ...
+Log record counts ...
+a: 26
+b: 21
+c: 11
+merge: 58 (+2 marks)
+
+sample.bin ["bin-200"] ... expect 55 samples
+55 samples
+
+sample.bin ["bin-100"] ... expect 35 samples, 20 no values
+35 samples, 20 "no values"
+
+sample.drift ... expect 30 samples
+30 samples
+
+merge -s 10
+merge (expect 10): 10
+
+merge -T 6.9
+merge (expect 31 + 2 preamble + 1 mark): 33 (+1 mark)
+
+merge -S 6.9 -T 7.2
+merge (expect 12): 12
+
+Full merge with volume switch ...
+pmlogextract: New log volume 1, at datestamp
+pmlogextract: New log volume 2, at datestamp
+pmlogextract: New log volume 3, at datestamp
+Log record counts ...
+a: 26
+b: 21
+c: 11
+merge: 58 (+2 marks)
+Log record counts per merged volume ...
+volume 0: 15
+volume 1: 15
+volume 2: 14 (+1 mark)
+volume 3: 14 (+1 mark)
diff --git a/qa/179 b/qa/179
new file mode 100755
index 0000000..04c470f
--- /dev/null
+++ b/qa/179
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 179
+# pmval -i failure for indom not defined at start of archive?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmlc()
+{
+ sed \
+ -e 's/connect [0-9][0-9]*/connect PID/' \
+ -e 's/ nl / /' \
+ -e "/timed out/d" \
+ -e 's/Version [0-9].*/Version VERSION/'
+}
+
+_filter()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/(hinv.ndisk)/{
+s/value [0-9][0-9]*/value INTEGER/
+s/[0-9]*\.[0-9]*\.[0-9]*/PMID/
+}' \
+ -e "/\"$pid\"/s/$pid/LOGGER_PID/g" \
+ -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
+ -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd.pmlogger.archive/s/value ".*/value "PATH"/'
+}
+
+# real QA test starts here
+
+echo "=== just bin.sample ==="
+$sudo rm -f $tmp.*
+_start_up_pmlogger -s4 -L -c /dev/null -l $tmp.log $tmp >$tmp.err 2>&1
+pmsleep 1.1
+
+pmlc -ie <<End-of-File 2>&1 | _filter_pmlc
+connect $pid
+log mandatory on 20 msec sample.bin
+End-of-File
+_wait_pmlogger_end $pid
+
+pmdumplog -im $tmp | _filter
+echo "pmval ..."
+pmval -i "bin-100,bin-300,bin-500" -U $tmp sample.bin 2>$tmp.err | _filter
+_filter <$tmp.err
+
+echo
+echo "=== hinv.ndisk, then bin.sample ==="
+$sudo rm -f $tmp.*
+_start_up_pmlogger -s5 -L -c /dev/null -l $tmp.log $tmp
+pmsleep 1.1
+
+pmlc -ie <<End-of-File 2>&1 | _filter_pmlc
+connect $pid
+log mandatory on once hinv.ndisk
+log mandatory on 20 msec sample.bin
+End-of-File
+_wait_pmlogger_end $pid
+
+pmdumplog -im $tmp | _filter
+echo "pmval ..."
+pmval -i "bin-100,bin-300,bin-500" -U $tmp sample.bin 2>$tmp.err | _filter
+_filter <$tmp.err
+
+exit 0
diff --git a/qa/179.out b/qa/179.out
new file mode 100644
index 0000000..888ab99
--- /dev/null
+++ b/qa/179.out
@@ -0,0 +1,221 @@
+QA output created by 179
+=== just bin.sample ===
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect PID
+pmlc> log mandatory on 20 msec sample.bin
+pmlc>
+
+Instance Domains in the Log ...
+InDom: 29.2
+TIMESTAMP 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+pmval ...
+
+metric: sample.bin
+archive: ARCHIVE
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: all
+
+ bin-100 bin-300 bin-500
+TIMESTAMP 100 300 500
+TIMESTAMP 100 300 500
+TIMESTAMP 100 300 500
+TIMESTAMP 100 300 500
+
+pmval: pmFetchArchive: End of PCP archive log
+
+=== hinv.ndisk, then bin.sample ===
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect PID
+pmlc> log mandatory on once hinv.ndisk
+pmlc> log mandatory on 20 msec sample.bin
+pmlc>
+
+Instance Domains in the Log ...
+InDom: 29.2
+TIMESTAMP 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP PMID (hinv.ndisk): value INTEGER
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+pmval ...
+
+metric: sample.bin
+archive: ARCHIVE
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: all
+
+ bin-100 bin-300 bin-500
+TIMESTAMP 100 300 500
+TIMESTAMP 100 300 500
+TIMESTAMP 100 300 500
+TIMESTAMP 100 300 500
+
+pmval: pmFetchArchive: End of PCP archive log
diff --git a/qa/180 b/qa/180
new file mode 100755
index 0000000..d84b116
--- /dev/null
+++ b/qa/180
@@ -0,0 +1,88 @@
+#! /bin/sh
+# PCP QA Test No. 180
+# log scanning for bigace
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./localconfig
+
+rm -f $seq.out
+if [ $PCP_EOE_VER -ge 6512 -o \
+ \( $PCP_EOE_VER -ge 2200 -a $PCP_EOE_VER -lt 6500 \) ]
+then
+ ln $seq.out.1 $seq.out
+else
+ ln $seq.out.2 $seq.out
+fi
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/bigace
+else
+ # no support for V1 archives
+ arch=src/bigace_v2
+ rm -f $seq.out
+ ln $seq.out.3 $seq.out
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# On linux, there are some annoying differences in arithemtic values
+# from printf() and friends ... map the know ones back to the IRIX
+# values
+_filter()
+{
+ sed \
+ -e '/^16:07:51.554/s/0.1164/0.1163/' \
+ -e '/^16:09:51.554/s/0.1033/0.1032/'
+}
+
+_do_cpu()
+{
+ $PCP_AWK_PROG '
+ { cpu += $2 }
+END { if (cpu < 3) print "CPU: less than 3 sec"
+ else if (cpu < 10) print "CPU: between 3 and 10 sec"
+ else print "CPU: roughly " 10*int((cpu+5)/10) " sec"
+ }'
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.pmns
+root {
+ foo 40:2:1
+}
+End-of-File
+
+DEBUG=-D386
+DEBUG=-D128
+DEBUG=
+
+DELTA=20
+
+echo "=== all of the instances ==="
+(time pmval -z -n $tmp.pmns -a $arch -t $DELTA foo) >$tmp.out 2>$tmp.err
+_filter <$tmp.out
+echo
+echo "samples: `grep '^[0-9][0-9]:' $tmp.out | wc -l | sed -e 's/ *//g'`"
+egrep '^(user|sys)' $tmp.err | _do_cpu
+pmval -z -D128 -n $tmp.pmns -a $arch -t $DELTA foo 2>$tmp.err >/dev/null
+echo "__pmLogReads: `grep __pmLogRead $tmp.err | wc -l | sed -e 's/ *//g'`"
+
+echo
+echo "=== just instance #4653127 (always there) ==="
+(time pmval -z -i 4653127 -n $tmp.pmns -a $arch -t $DELTA foo) >$tmp.out 2>$tmp.err
+_filter <$tmp.out
+echo
+echo "samples: `grep '^[0-9][0-9]:' $tmp.out | wc -l | sed -e 's/ *//g'`"
+egrep '^(user|sys)' $tmp.err | _do_cpu
+pmval -z -D128 -i 4653127 -n $tmp.pmns -a $arch -t $DELTA foo 2>$tmp.err >/dev/null
+echo "__pmLogReads: `grep __pmLogRead $tmp.err | wc -l | sed -e 's/ *//g'`"
diff --git a/qa/180.out.1 b/qa/180.out.1
new file mode 100644
index 0000000..a98ee80
--- /dev/null
+++ b/qa/180.out.1
@@ -0,0 +1,140 @@
+QA output created by 180
+=== all of the instances ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: foo
+archive: src/bigace
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 32
+interval: 20.00 sec
+16:02:31.554 No values available
+full label for instance[0]: 327685 (NULL) NETWORK HANDLER
+full label for instance[1]: 393222 (NULL) MIRROR HANDLER
+full label for instance[2]: 458759 (NULL) CHECKPOINT SLEEP
+full label for instance[3]: 4653127 (NULL) OPEN CURSOR
+full label for instance[4]: 7012459 isql DELETE
+full label for instance[5]: 7077996 isql EXECUTE
+full label for instance[6]: 7143533 isql AWAITING COMMAND
+full label for instance[7]: 7209070 isql UPDATE
+full label for instance[8]: 7274607 isql INSERT
+full label for instance[9]: 7340144 isql INSERT
+full label for instance[10]: 7405681 isql COMMIT TRANSACTI
+full label for instance[11]: 7471218 isql INSERT
+full label for instance[12]: 7536755 isql INSERT
+full label for instance[13]: 7602292 isql INSERT
+full label for instance[14]: 7667829 isql AWAITING COMMAND
+full label for instance[15]: 7733366 isql AWAITING COMMAND
+full label for instance[16]: 7798903 isql COMMIT TRANSACTI
+full label for instance[17]: 7864440 isql INSERT
+full label for instance[18]: 7929977 isql INSERT
+full label for instance[19]: 7995514 isql INSERT
+full label for instance[20]: 8061051 isql INSERT
+full label for instance[21]: 8126588 isql INSERT
+full label for instance[22]: 8192125 isql INSERT
+full label for instance[23]: 8257662 isql INSERT
+full label for instance[24]: 8323199 isql INSERT
+full label for instance[25]: 8388736 isql COMMIT TRANSACTI
+full label for instance[26]: 8454273 isql INSERT
+full label for instance[27]: 8519810 isql INSERT
+full label for instance[28]: 8585347 isql INSERT
+full label for instance[29]: 8650884 isql AWAITING COMMAND
+full label for instance[30]: 8716421 isql INSERT
+full label for instance[31]: 8781958 isql EXECUTE
+full label for instance[32]: 8847495 isql INSERT
+full label for instance[33]: 8913032 isql AWAITING COMMAND
+full label for instance[34]: 8978569 isql INSERT
+full label for instance[35]: 9044106 isql INSERT
+full label for instance[36]: 9109643 isql SELECT
+full label for instance[37]: 9175180 isql INSERT
+
+ 327685 (NUL 393222 (NUL 458759 (NUL 4653127 (NU 7012459 isq 7077996 isq 7143533 isq 7209070 isq 7274607 isq 7340144 isq 7405681 isq 7471218 isq 7536755 isq 7602292 isq 7667829 isq 7733366 isq 7798903 isq 7864440 isq 7929977 isq 7995514 isq 8061051 isq 8126588 isq 8192125 isq 8257662 isq 8323199 isq 8388736 isq 8454273 isq 8519810 isq 8585347 isq 8650884 isq 8716421 isq 8781958 isq 8847495 isq 8913032 isq 8978569 isq 9044106 isq 9109643 isq 9175180 isq
+16:02:51.554 No values available
+16:03:11.554 0.0 0.0 0.0 0.1027 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:03:31.554 0.0 0.0 0.0 0.1064 ? 4.170E-02 2.095E-02 4.500E-02 1.500E-02 4.840E-02 7.170E-02 4.340E-02 5.265E-02 4.680E-02 2.170E-02 2.000E-02 2.000E-02 5.140E-02 4.500E-02 2.000E-02 8.765E-02 2.500E-02 5.265E-02 3.670E-02 3.595E-02 4.765E-02 6.500E-02 3.970E-02 3.300E-02 5.300E-02 8.010E-02 2.595E-02 1.895E-02 3.000E-02 3.840E-02 2.000E-02 5.095E-02 ?
+16:03:51.554 0.0 0.0 0.0 5.660E-02 ? 1.330E-02 1.000E-02 3.750E-02 5.000E-02 5.160E-02 2.830E-02 6.665E-02 4.085E-02 4.320E-02 2.330E-02 4.000E-02 7.250E-02 2.660E-02 3.500E-02 6.000E-02 3.585E-02 1.750E-02 3.330E-02 1.830E-02 1.000E-02 8.300E-03 2.500E-02 3.330E-02 3.750E-02 5.500E-02 3.990E-02 5.750E-02 3.750E-02 1.000E-02 3.660E-02 7.500E-03 2.750E-02 ?
+16:04:11.554 0.0 0.0 0.0 7.775E-02 ? 1.500E-02 2.500E-02 7.140E-02 6.500E-02 3.500E-02 3.900E-03 2.690E-02 2.745E-02 2.500E-02 2.000E-02 1.390E-02 3.750E-02 4.500E-02 2.165E-02 5.000E-02 7.245E-02 2.250E-02 5.000E-03 2.000E-02 9.085E-02 1.085E-02 2.500E-02 2.500E-02 4.750E-02 2.500E-02 2.195E-02 6.335E-02 7.445E-02 4.000E-02 5.500E-02 3.750E-02 5.250E-02 ?
+16:04:31.554 0.0 0.0 0.0 0.1103 ? 1.000E-02 2.915E-02 4.610E-02 3.500E-02 5.500E-02 4.220E-02 1.610E-02 3.500E-02 3.500E-02 4.610E-02 2.110E-02 2.500E-02 5.000E-02 3.835E-02 4.610E-02 3.025E-02 5.500E-02 4.000E-02 4.500E-02 6.720E-02 2.915E-02 5.000E-02 1.500E-02 4.500E-02 6.500E-02 3.415E-02 3.915E-02 4.610E-02 2.805E-02 4.000E-02 2.500E-02 6.110E-02 ?
+16:04:51.554 0.0 0.0 0.0 0.1294 ? 4.500E-02 2.330E-02 2.000E-02 2.745E-02 4.000E-02 6.390E-02 2.440E-02 2.745E-02 1.245E-02 1.890E-02 2.235E-02 1.500E-02 3.745E-02 2.745E-02 2.390E-02 3.465E-02 7.450E-03 1.245E-02 3.000E-02 4.685E-02 4.245E-02 3.990E-02 1.500E-02 4.500E-02 2.000E-02 3.890E-02 2.245E-02 4.195E-02 2.685E-02 3.000E-02 4.990E-02 1.380E-02 ?
+16:05:11.554 0.0 0.0 0.0 7.065E-02 ? 3.465E-02 2.755E-02 2.000E-02 2.755E-02 3.000E-02 2.655E-02 3.255E-02 1.755E-02 4.410E-02 7.310E-02 5.265E-02 3.155E-02 4.565E-02 4.755E-02 5.155E-02 2.165E-02 2.410E-02 2.755E-02 2.000E-02 4.130E-02 3.755E-02 5.510E-02 5.500E-02 2.310E-02 4.655E-02 6.810E-02 8.410E-02 2.000E-02 3.165E-02 6.500E-02 4.510E-02 2.820E-02 ?
+16:05:31.554 0.0 0.0 0.0 5.825E-02 ? 4.800E-02 3.900E-02 4.265E-02 8.765E-02 4.665E-02 3.845E-02 5.000E-02 4.035E-02 3.845E-02 3.190E-02 2.135E-02 3.345E-02 4.090E-02 3.500E-02 3.980E-02 5.110E-02 4.980E-02 6.000E-02 3.500E-02 6.145E-02 4.500E-02 3.265E-02 3.500E-02 3.690E-02 5.845E-02 2.325E-02 2.845E-02 3.635E-02 2.610E-02 2.135E-02 3.635E-02 5.825E-02 ?
+16:05:51.554 0.0 0.0 0.0 3.965E-02 ? 4.435E-02 4.600E-02 1.735E-02 2.235E-02 4.535E-02 3.000E-02 2.500E-02 3.965E-02 4.000E-02 3.200E-02 8.650E-03 3.700E-02 3.600E-02 2.700E-02 1.765E-02 1.235E-02 2.565E-02 1.000E-02 7.200E-02 4.135E-02 2.700E-02 6.135E-02 4.000E-02 1.900E-02 4.500E-02 2.365E-02 2.000E-02 2.365E-02 3.935E-02 2.865E-02 2.365E-02 4.365E-02 ?
+16:06:11.554 0.0 0.0 0.0 8.730E-02 ? 4.300E-02 4.500E-02 1.665E-02 2.500E-02 6.130E-02 6.000E-02 3.000E-02 4.830E-02 3.000E-02 2.300E-02 3.500E-02 5.800E-02 3.000E-02 1.800E-02 5.600E-02 6.330E-02 1.965E-02 3.000E-02 3.465E-02 6.100E-02 3.465E-02 2.100E-02 3.000E-02 3.100E-02 1.665E-02 2.500E-02 1.500E-02 3.330E-02 1.300E-02 4.000E-02 2.830E-02 2.000E-02 ?
+16:06:31.554 0.0 0.0 0.0 6.170E-02 ? 5.700E-02 3.895E-02 1.035E-02 6.000E-02 3.370E-02 2.200E-02 2.700E-02 4.565E-02 6.500E-02 1.500E-02 1.895E-02 3.500E-02 3.895E-02 5.895E-02 3.200E-02 3.565E-02 5.035E-02 4.000E-02 8.230E-02 1.500E-02 4.035E-02 4.500E-02 3.500E-02 3.095E-02 3.335E-02 3.500E-02 2.000E-02 4.870E-02 2.700E-02 2.200E-02 7.370E-02 2.200E-02 ?
+16:06:51.554 0.0 0.0 0.0 5.775E-02 ? 4.350E-03 4.605E-02 2.075E-02 3.000E-02 1.800E-02 2.300E-02 4.350E-03 3.240E-02 3.500E-02 4.500E-02 6.050E-03 1.500E-02 1.605E-02 6.880E-02 4.075E-02 1.605E-02 1.800E-02 2.635E-02 6.605E-02 1.775E-02 1.935E-02 7.000E-02 7.275E-02 1.040E-02 2.635E-02 4.000E-02 1.000E-02 4.800E-02 2.935E-02 2.300E-02 3.800E-02 4.935E-02 ?
+16:07:11.554 0.0 0.0 0.0 5.225E-02 ? 5.865E-02 3.205E-02 4.130E-02 3.000E-02 3.110E-02 3.905E-02 4.365E-02 2.365E-02 4.110E-02 3.500E-02 6.110E-02 3.610E-02 3.000E-02 4.725E-02 3.225E-02 5.610E-02 5.000E-02 3.365E-02 3.000E-02 6.835E-02 3.865E-02 5.000E-03 4.335E-02 2.365E-02 7.270E-02 1.000E-02 2.500E-02 4.705E-02 3.865E-02 2.000E-02 3.000E-02 3.365E-02 ?
+16:07:31.554 0.0 0.0 0.0 6.660E-02 ? 2.580E-02 4.375E-02 4.755E-02 5.580E-02 3.050E-02 3.095E-02 3.080E-02 4.660E-02 5.050E-02 2.820E-02 6.390E-02 5.630E-02 2.660E-02 1.160E-02 5.160E-02 1.970E-02 3.080E-02 2.080E-02 1.080E-02 5.390E-02 4.160E-02 1.660E-02 7.390E-02 1.580E-02 5.255E-02 6.000E-02 1.600E-03 4.455E-02 5.740E-02 1.500E-02 5.580E-02 2.240E-02 ?
+16:07:51.554 0.0 0.0 0.0 0.1163 ? 1.420E-02 2.920E-02 3.340E-02 5.185E-02 3.870E-02 1.000E-02 4.980E-02 4.840E-02 2.840E-02 5.680E-02 1.530E-02 5.760E-02 2.430E-02 1.870E-02 3.840E-02 5.420E-02 3.420E-02 1.920E-02 2.420E-02 1.500E-02 6.370E-02 2.340E-02 3.500E-02 3.420E-02 4.605E-02 1.500E-02 3.840E-02 2.840E-02 3.760E-02 3.000E-02 5.215E-02 4.260E-02 ?
+16:08:11.554 0.0 0.0 0.0 7.380E-02 ? 4.030E-02 2.000E-02 1.355E-02 4.735E-02 3.470E-02 3.210E-02 2.940E-02 4.000E-02 4.855E-02 5.175E-02 4.500E-02 4.500E-02 5.910E-02 5.145E-02 1.530E-02 4.500E-02 4.175E-02 7.710E-02 1.855E-02 3.500E-02 5.825E-02 5.855E-02 3.500E-02 5.855E-02 6.590E-02 2.000E-02 1.175E-02 3.175E-02 4.030E-02 3.000E-02 7.560E-02 3.175E-02 ?
+16:08:31.554 0.0 0.0 0.0 7.325E-02 ? 2.820E-02 2.275E-02 5.420E-02 3.850E-02 9.775E-02 4.140E-02 5.275E-02 3.000E-02 2.920E-02 4.250E-02 6.320E-02 3.850E-02 3.350E-02 3.250E-02 1.820E-02 7.125E-02 4.600E-02 3.290E-02 2.570E-02 4.500E-02 4.570E-02 4.345E-02 4.425E-02 2.070E-02 1.145E-02 5.500E-02 2.325E-02 2.825E-02 4.670E-02 3.850E-02 3.420E-02 1.325E-02 ?
+16:08:51.554 0.0 0.0 0.0 6.840E-02 ? 3.990E-02 4.565E-02 6.065E-02 1.990E-02 5.145E-02 2.990E-02 5.225E-02 2.260E-02 4.485E-02 1.575E-02 1.570E-02 5.650E-02 6.500E-03 2.075E-02 2.410E-02 1.375E-02 7.250E-03 1.840E-02 4.755E-02 2.180E-02 3.915E-02 5.300E-02 2.575E-02 2.075E-02 4.500E-02 4.340E-02 3.420E-02 8.000E-02 2.720E-02 1.150E-02 5.065E-02 1.000E-02 ?
+16:09:11.554 0.0 0.0 0.0 7.995E-02 ? 3.160E-02 3.325E-02 3.160E-02 5.660E-02 7.245E-02 6.600E-03 5.500E-02 3.075E-02 6.905E-02 1.500E-02 3.080E-02 4.335E-02 2.165E-02 2.665E-02 3.240E-02 3.665E-02 4.000E-02 2.825E-02 4.820E-02 4.820E-02 6.600E-03 6.000E-02 3.500E-02 2.000E-02 5.000E-03 1.660E-02 5.580E-02 5.000E-02 4.080E-02 4.000E-02 2.160E-02 5.000E-02 ?
+16:09:31.554 0.0 0.0 0.0 7.060E-02 ? 3.500E-02 3.835E-02 3.500E-02 2.000E-02 2.835E-02 4.000E-02 4.445E-02 3.665E-02 1.835E-02 2.895E-02 2.895E-02 2.165E-02 3.730E-02 3.335E-02 4.285E-02 4.835E-02 4.500E-02 3.835E-02 5.000E-03 5.000E-02 2.945E-02 2.500E-02 3.500E-02 6.340E-02 6.500E-02 5.000E-02 5.340E-02 1.945E-02 3.000E-02 3.445E-02 5.500E-02 2.500E-02 ?
+16:09:51.554 0.0 0.0 0.0 0.1032 ? 2.610E-02 3.500E-02 2.500E-02 4.500E-02 2.000E-02 2.000E-02 3.555E-02 2.830E-02 1.610E-02 2.605E-02 4.605E-02 4.000E-02 4.105E-02 3.000E-02 4.215E-02 2.330E-02 3.000E-02 4.500E-02 2.500E-02 4.110E-02 3.665E-02 6.720E-02 3.830E-02 2.660E-02 3.000E-02 2.720E-02 2.595E-02 4.165E-02 3.500E-02 2.885E-02 2.000E-02 1.000E-02 ?
+16:10:11.554 0.0 0.0 0.0 9.830E-02 ? 3.390E-02 4.500E-02 5.000E-02 2.500E-02 5.640E-02 5.140E-02 7.640E-02 7.445E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:10:31.554 0.0 0.0 0.0 0.1433 ? 5.150E-02 6.000E-02 1.000E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:10:51.554 0.0 0.0 0.0 0.1254 ? 2.850E-02 4.500E-02 5.560E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:11.554 0.0 0.0 0.0 0.1416 ? 7.720E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:31.554 0.0 0.0 0.0 4.425E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:51.554 0.0 0.0 0.0 1.945E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:11.554 0.0 0.0 0.0 1.055E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:31.554 0.0 0.0 0.0 2.890E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:51.554 0.0 0.0 0.0 3.055E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+
+samples: 32
+CPU: less than 3 sec
+__pmLogReads: 3013
+
+=== just instance #4653127 (always there) ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: foo
+archive: src/bigace
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 32
+interval: 20.00 sec
+16:02:31.554 No values available
+
+ 4653127
+16:02:51.554 No values available
+16:03:11.554 0.1027
+16:03:31.554 0.1064
+16:03:51.554 5.660E-02
+16:04:11.554 7.775E-02
+16:04:31.554 0.1103
+16:04:51.554 0.1294
+16:05:11.554 7.065E-02
+16:05:31.554 5.825E-02
+16:05:51.554 3.965E-02
+16:06:11.554 8.730E-02
+16:06:31.554 6.170E-02
+16:06:51.554 5.775E-02
+16:07:11.554 5.225E-02
+16:07:31.554 6.660E-02
+16:07:51.554 0.1163
+16:08:11.554 7.380E-02
+16:08:31.554 7.325E-02
+16:08:51.554 6.840E-02
+16:09:11.554 7.995E-02
+16:09:31.554 7.060E-02
+16:09:51.554 0.1032
+16:10:11.554 9.830E-02
+16:10:31.554 0.1433
+16:10:51.554 0.1254
+16:11:11.554 0.1416
+16:11:31.554 4.425E-02
+16:11:51.554 1.945E-02
+16:12:11.554 1.055E-02
+16:12:31.554 2.890E-02
+16:12:51.554 3.055E-02
+
+samples: 32
+CPU: less than 3 sec
+__pmLogReads: 624
diff --git a/qa/180.out.2 b/qa/180.out.2
new file mode 100755
index 0000000..0d7f051
--- /dev/null
+++ b/qa/180.out.2
@@ -0,0 +1,140 @@
+QA output created by 180
+=== all of the instances ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: foo
+archive: src/bigace
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 32
+interval: 20.00 sec
+16:02:31.554 No values available
+full label for instance[0]: 327685 (NULL) NETWORK HANDLER
+full label for instance[1]: 393222 (NULL) MIRROR HANDLER
+full label for instance[2]: 458759 (NULL) CHECKPOINT SLEEP
+full label for instance[3]: 4653127 (NULL) OPEN CURSOR
+full label for instance[4]: 7012459 isql DELETE
+full label for instance[5]: 7077996 isql EXECUTE
+full label for instance[6]: 7143533 isql AWAITING COMMAND
+full label for instance[7]: 7209070 isql UPDATE
+full label for instance[8]: 7274607 isql INSERT
+full label for instance[9]: 7340144 isql INSERT
+full label for instance[10]: 7471218 isql INSERT
+full label for instance[11]: 7405681 isql COMMIT TRANSACTI
+full label for instance[12]: 7536755 isql INSERT
+full label for instance[13]: 7602292 isql INSERT
+full label for instance[14]: 7667829 isql AWAITING COMMAND
+full label for instance[15]: 7733366 isql AWAITING COMMAND
+full label for instance[16]: 7798903 isql COMMIT TRANSACTI
+full label for instance[17]: 7864440 isql INSERT
+full label for instance[18]: 7929977 isql INSERT
+full label for instance[19]: 7995514 isql INSERT
+full label for instance[20]: 8061051 isql INSERT
+full label for instance[21]: 8192125 isql INSERT
+full label for instance[22]: 8257662 isql INSERT
+full label for instance[23]: 8126588 isql INSERT
+full label for instance[24]: 8323199 isql INSERT
+full label for instance[25]: 8388736 isql COMMIT TRANSACTI
+full label for instance[26]: 8454273 isql INSERT
+full label for instance[27]: 8519810 isql INSERT
+full label for instance[28]: 8650884 isql AWAITING COMMAND
+full label for instance[29]: 8585347 isql INSERT
+full label for instance[30]: 8716421 isql INSERT
+full label for instance[31]: 8847495 isql INSERT
+full label for instance[32]: 8781958 isql EXECUTE
+full label for instance[33]: 8913032 isql AWAITING COMMAND
+full label for instance[34]: 8978569 isql INSERT
+full label for instance[35]: 9044106 isql INSERT
+full label for instance[36]: 9109643 isql SELECT
+full label for instance[37]: 9175180 isql INSERT
+
+ 327685 (NUL 393222 (NUL 458759 (NUL 4653127 (NU 7012459 isq 7077996 isq 7143533 isq 7209070 isq 7274607 isq 7340144 isq 7471218 isq 7405681 isq 7536755 isq 7602292 isq 7667829 isq 7733366 isq 7798903 isq 7864440 isq 7929977 isq 7995514 isq 8061051 isq 8192125 isq 8257662 isq 8126588 isq 8323199 isq 8388736 isq 8454273 isq 8519810 isq 8650884 isq 8585347 isq 8716421 isq 8847495 isq 8781958 isq 8913032 isq 8978569 isq 9044106 isq 9109643 isq 9175180 isq
+16:02:51.554 No values available
+16:03:11.554 0.0 0.0 0.0 0.1027 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:03:31.554 0.0 0.0 0.0 0.1064 ? 4.170E-02 2.095E-02 4.500E-02 1.500E-02 4.840E-02 4.340E-02 7.170E-02 5.265E-02 4.680E-02 2.170E-02 2.000E-02 2.000E-02 5.140E-02 4.500E-02 2.000E-02 8.765E-02 5.265E-02 3.670E-02 2.500E-02 3.595E-02 4.765E-02 6.500E-02 3.970E-02 5.300E-02 3.300E-02 8.010E-02 1.895E-02 2.595E-02 3.000E-02 3.840E-02 2.000E-02 5.095E-02 ?
+16:03:51.554 0.0 0.0 0.0 5.660E-02 ? 1.330E-02 1.000E-02 3.750E-02 5.000E-02 5.160E-02 6.665E-02 2.830E-02 4.085E-02 4.320E-02 2.330E-02 4.000E-02 7.250E-02 2.660E-02 3.500E-02 6.000E-02 3.585E-02 3.330E-02 1.830E-02 1.750E-02 1.000E-02 8.300E-03 2.500E-02 3.330E-02 5.500E-02 3.750E-02 3.990E-02 3.750E-02 5.750E-02 1.000E-02 3.660E-02 7.500E-03 2.750E-02 ?
+16:04:11.554 0.0 0.0 0.0 7.775E-02 ? 1.500E-02 2.500E-02 7.140E-02 6.500E-02 3.500E-02 2.690E-02 3.900E-03 2.745E-02 2.500E-02 2.000E-02 1.390E-02 3.750E-02 4.500E-02 2.165E-02 5.000E-02 7.245E-02 5.000E-03 2.000E-02 2.250E-02 9.085E-02 1.085E-02 2.500E-02 2.500E-02 2.500E-02 4.750E-02 2.195E-02 7.445E-02 6.335E-02 4.000E-02 5.500E-02 3.750E-02 5.250E-02 ?
+16:04:31.554 0.0 0.0 0.0 0.1103 ? 1.000E-02 2.915E-02 4.610E-02 3.500E-02 5.500E-02 1.610E-02 4.220E-02 3.500E-02 3.500E-02 4.610E-02 2.110E-02 2.500E-02 5.000E-02 3.835E-02 4.610E-02 3.025E-02 4.000E-02 4.500E-02 5.500E-02 6.720E-02 2.915E-02 5.000E-02 1.500E-02 6.500E-02 4.500E-02 3.415E-02 4.610E-02 3.915E-02 2.805E-02 4.000E-02 2.500E-02 6.110E-02 ?
+16:04:51.554 0.0 0.0 0.0 0.1294 ? 4.500E-02 2.330E-02 2.000E-02 2.745E-02 4.000E-02 2.440E-02 6.390E-02 2.745E-02 1.245E-02 1.890E-02 2.235E-02 1.500E-02 3.745E-02 2.745E-02 2.390E-02 3.465E-02 1.245E-02 3.000E-02 7.450E-03 4.685E-02 4.245E-02 3.990E-02 1.500E-02 2.000E-02 4.500E-02 3.890E-02 4.195E-02 2.245E-02 2.685E-02 3.000E-02 4.990E-02 1.380E-02 ?
+16:05:11.554 0.0 0.0 0.0 7.065E-02 ? 3.465E-02 2.755E-02 2.000E-02 2.755E-02 3.000E-02 3.255E-02 2.655E-02 1.755E-02 4.410E-02 7.310E-02 5.265E-02 3.155E-02 4.565E-02 4.755E-02 5.155E-02 2.165E-02 2.755E-02 2.000E-02 2.410E-02 4.130E-02 3.755E-02 5.510E-02 5.500E-02 4.655E-02 2.310E-02 6.810E-02 2.000E-02 8.410E-02 3.165E-02 6.500E-02 4.510E-02 2.820E-02 ?
+16:05:31.554 0.0 0.0 0.0 5.825E-02 ? 4.800E-02 3.900E-02 4.265E-02 8.765E-02 4.665E-02 5.000E-02 3.845E-02 4.035E-02 3.845E-02 3.190E-02 2.135E-02 3.345E-02 4.090E-02 3.500E-02 3.980E-02 5.110E-02 6.000E-02 3.500E-02 4.980E-02 6.145E-02 4.500E-02 3.265E-02 3.500E-02 5.845E-02 3.690E-02 2.325E-02 3.635E-02 2.845E-02 2.610E-02 2.135E-02 3.635E-02 5.825E-02 ?
+16:05:51.554 0.0 0.0 0.0 3.965E-02 ? 4.435E-02 4.600E-02 1.735E-02 2.235E-02 4.535E-02 2.500E-02 3.000E-02 3.965E-02 4.000E-02 3.200E-02 8.650E-03 3.700E-02 3.600E-02 2.700E-02 1.765E-02 1.235E-02 1.000E-02 7.200E-02 2.565E-02 4.135E-02 2.700E-02 6.135E-02 4.000E-02 4.500E-02 1.900E-02 2.365E-02 2.365E-02 2.000E-02 3.935E-02 2.865E-02 2.365E-02 4.365E-02 ?
+16:06:11.554 0.0 0.0 0.0 8.730E-02 ? 4.300E-02 4.500E-02 1.665E-02 2.500E-02 6.130E-02 3.000E-02 6.000E-02 4.830E-02 3.000E-02 2.300E-02 3.500E-02 5.800E-02 3.000E-02 1.800E-02 5.600E-02 6.330E-02 3.000E-02 3.465E-02 1.965E-02 6.100E-02 3.465E-02 2.100E-02 3.000E-02 1.665E-02 3.100E-02 2.500E-02 3.330E-02 1.500E-02 1.300E-02 4.000E-02 2.830E-02 2.000E-02 ?
+16:06:31.554 0.0 0.0 0.0 6.170E-02 ? 5.700E-02 3.895E-02 1.035E-02 6.000E-02 3.370E-02 2.700E-02 2.200E-02 4.565E-02 6.500E-02 1.500E-02 1.895E-02 3.500E-02 3.895E-02 5.895E-02 3.200E-02 3.565E-02 4.000E-02 8.230E-02 5.035E-02 1.500E-02 4.035E-02 4.500E-02 3.500E-02 3.335E-02 3.095E-02 3.500E-02 4.870E-02 2.000E-02 2.700E-02 2.200E-02 7.370E-02 2.200E-02 ?
+16:06:51.554 0.0 0.0 0.0 5.775E-02 ? 4.350E-03 4.605E-02 2.075E-02 3.000E-02 1.800E-02 4.350E-03 2.300E-02 3.240E-02 3.500E-02 4.500E-02 6.050E-03 1.500E-02 1.605E-02 6.880E-02 4.075E-02 1.605E-02 2.635E-02 6.605E-02 1.800E-02 1.775E-02 1.935E-02 7.000E-02 7.275E-02 2.635E-02 1.040E-02 4.000E-02 4.800E-02 1.000E-02 2.935E-02 2.300E-02 3.800E-02 4.935E-02 ?
+16:07:11.554 0.0 0.0 0.0 5.225E-02 ? 5.865E-02 3.205E-02 4.130E-02 3.000E-02 3.110E-02 4.365E-02 3.905E-02 2.365E-02 4.110E-02 3.500E-02 6.110E-02 3.610E-02 3.000E-02 4.725E-02 3.225E-02 5.610E-02 3.365E-02 3.000E-02 5.000E-02 6.835E-02 3.865E-02 5.000E-03 4.335E-02 7.270E-02 2.365E-02 1.000E-02 4.705E-02 2.500E-02 3.865E-02 2.000E-02 3.000E-02 3.365E-02 ?
+16:07:31.554 0.0 0.0 0.0 6.660E-02 ? 2.580E-02 4.375E-02 4.755E-02 5.580E-02 3.050E-02 3.080E-02 3.095E-02 4.660E-02 5.050E-02 2.820E-02 6.390E-02 5.630E-02 2.660E-02 1.160E-02 5.160E-02 1.970E-02 2.080E-02 1.080E-02 3.080E-02 5.390E-02 4.160E-02 1.660E-02 7.390E-02 5.255E-02 1.580E-02 6.000E-02 4.455E-02 1.600E-03 5.740E-02 1.500E-02 5.580E-02 2.240E-02 ?
+16:07:51.554 0.0 0.0 0.0 0.1163 ? 1.420E-02 2.920E-02 3.340E-02 5.185E-02 3.870E-02 4.980E-02 1.000E-02 4.840E-02 2.840E-02 5.680E-02 1.530E-02 5.760E-02 2.430E-02 1.870E-02 3.840E-02 5.420E-02 1.920E-02 2.420E-02 3.420E-02 1.500E-02 6.370E-02 2.340E-02 3.500E-02 4.605E-02 3.420E-02 1.500E-02 2.840E-02 3.840E-02 3.760E-02 3.000E-02 5.215E-02 4.260E-02 ?
+16:08:11.554 0.0 0.0 0.0 7.380E-02 ? 4.030E-02 2.000E-02 1.355E-02 4.735E-02 3.470E-02 2.940E-02 3.210E-02 4.000E-02 4.855E-02 5.175E-02 4.500E-02 4.500E-02 5.910E-02 5.145E-02 1.530E-02 4.500E-02 7.710E-02 1.855E-02 4.175E-02 3.500E-02 5.825E-02 5.855E-02 3.500E-02 6.590E-02 5.855E-02 2.000E-02 3.175E-02 1.175E-02 4.030E-02 3.000E-02 7.560E-02 3.175E-02 ?
+16:08:31.554 0.0 0.0 0.0 7.325E-02 ? 2.820E-02 2.275E-02 5.420E-02 3.850E-02 9.775E-02 5.275E-02 4.140E-02 3.000E-02 2.920E-02 4.250E-02 6.320E-02 3.850E-02 3.350E-02 3.250E-02 1.820E-02 7.125E-02 3.290E-02 2.570E-02 4.600E-02 4.500E-02 4.570E-02 4.345E-02 4.425E-02 1.145E-02 2.070E-02 5.500E-02 2.825E-02 2.325E-02 4.670E-02 3.850E-02 3.420E-02 1.325E-02 ?
+16:08:51.554 0.0 0.0 0.0 6.840E-02 ? 3.990E-02 4.565E-02 6.065E-02 1.990E-02 5.145E-02 5.225E-02 2.990E-02 2.260E-02 4.485E-02 1.575E-02 1.570E-02 5.650E-02 6.500E-03 2.075E-02 2.410E-02 1.375E-02 1.840E-02 4.755E-02 7.250E-03 2.180E-02 3.915E-02 5.300E-02 2.575E-02 4.500E-02 2.075E-02 4.340E-02 8.000E-02 3.420E-02 2.720E-02 1.150E-02 5.065E-02 1.000E-02 ?
+16:09:11.554 0.0 0.0 0.0 7.995E-02 ? 3.160E-02 3.325E-02 3.160E-02 5.660E-02 7.245E-02 5.500E-02 6.600E-03 3.075E-02 6.905E-02 1.500E-02 3.080E-02 4.335E-02 2.165E-02 2.665E-02 3.240E-02 3.665E-02 2.825E-02 4.820E-02 4.000E-02 4.820E-02 6.600E-03 6.000E-02 3.500E-02 5.000E-03 2.000E-02 1.660E-02 5.000E-02 5.580E-02 4.080E-02 4.000E-02 2.160E-02 5.000E-02 ?
+16:09:31.554 0.0 0.0 0.0 7.060E-02 ? 3.500E-02 3.835E-02 3.500E-02 2.000E-02 2.835E-02 4.445E-02 4.000E-02 3.665E-02 1.835E-02 2.895E-02 2.895E-02 2.165E-02 3.730E-02 3.335E-02 4.285E-02 4.835E-02 3.835E-02 5.000E-03 4.500E-02 5.000E-02 2.945E-02 2.500E-02 3.500E-02 6.500E-02 6.340E-02 5.000E-02 1.945E-02 5.340E-02 3.000E-02 3.445E-02 5.500E-02 2.500E-02 ?
+16:09:51.554 0.0 0.0 0.0 0.1032 ? 2.610E-02 3.500E-02 2.500E-02 4.500E-02 2.000E-02 3.555E-02 2.000E-02 2.830E-02 1.610E-02 2.605E-02 4.605E-02 4.000E-02 4.105E-02 3.000E-02 4.215E-02 2.330E-02 4.500E-02 2.500E-02 3.000E-02 4.110E-02 3.665E-02 6.720E-02 3.830E-02 3.000E-02 2.660E-02 2.720E-02 4.165E-02 2.595E-02 3.500E-02 2.885E-02 2.000E-02 1.000E-02 ?
+16:10:11.554 0.0 0.0 0.0 9.830E-02 ? ? ? 5.000E-02 ? 5.640E-02 ? ? ? ? ? ? ? ? ? 1.500E-02 3.220E-02 ? ? ? ? ? 3.920E-02 ? ? ? ? ? ? ? ? ? ? ?
+16:10:31.554 0.0 0.0 0.0 0.1433 ? ? ? ? ? ? ? 3.360E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:10:51.554 0.0 0.0 0.0 0.1254 ? 2.850E-02 4.500E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:11.554 0.0 0.0 0.0 0.1416 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:31.554 0.0 0.0 0.0 4.425E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:51.554 0.0 0.0 0.0 1.945E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:11.554 0.0 0.0 0.0 1.055E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:31.554 0.0 0.0 0.0 2.890E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:51.554 0.0 0.0 0.0 3.055E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+
+samples: 32
+CPU: less than 3 sec
+__pmLogReads: 3013
+
+=== just instance #4653127 (always there) ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: foo
+archive: src/bigace
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 32
+interval: 20.00 sec
+16:02:31.554 No values available
+
+ 4653127
+16:02:51.554 No values available
+16:03:11.554 0.1027
+16:03:31.554 0.1064
+16:03:51.554 5.660E-02
+16:04:11.554 7.775E-02
+16:04:31.554 0.1103
+16:04:51.554 0.1294
+16:05:11.554 7.065E-02
+16:05:31.554 5.825E-02
+16:05:51.554 3.965E-02
+16:06:11.554 8.730E-02
+16:06:31.554 6.170E-02
+16:06:51.554 5.775E-02
+16:07:11.554 5.225E-02
+16:07:31.554 6.660E-02
+16:07:51.554 0.1163
+16:08:11.554 7.380E-02
+16:08:31.554 7.325E-02
+16:08:51.554 6.840E-02
+16:09:11.554 7.995E-02
+16:09:31.554 7.060E-02
+16:09:51.554 0.1032
+16:10:11.554 9.830E-02
+16:10:31.554 0.1433
+16:10:51.554 0.1254
+16:11:11.554 0.1416
+16:11:31.554 4.425E-02
+16:11:51.554 1.945E-02
+16:12:11.554 1.055E-02
+16:12:31.554 2.890E-02
+16:12:51.554 3.055E-02
+
+samples: 32
+CPU: less than 3 sec
+__pmLogReads: 624
diff --git a/qa/180.out.3 b/qa/180.out.3
new file mode 100644
index 0000000..1c917ad
--- /dev/null
+++ b/qa/180.out.3
@@ -0,0 +1,140 @@
+QA output created by 180
+=== all of the instances ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: foo
+archive: src/bigace_v2
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 32
+interval: 20.00 sec
+16:02:31.554 No values available
+full label for instance[0]: 327685 (NULL) NETWORK HANDLER
+full label for instance[1]: 393222 (NULL) MIRROR HANDLER
+full label for instance[2]: 458759 (NULL) CHECKPOINT SLEEP
+full label for instance[3]: 4653127 (NULL) OPEN CURSOR
+full label for instance[4]: 7012459 isql DELETE
+full label for instance[5]: 7077996 isql EXECUTE
+full label for instance[6]: 7143533 isql AWAITING COMMAND
+full label for instance[7]: 7209070 isql UPDATE
+full label for instance[8]: 7274607 isql INSERT
+full label for instance[9]: 7340144 isql INSERT
+full label for instance[10]: 7405681 isql COMMIT TRANSACTI
+full label for instance[11]: 7471218 isql INSERT
+full label for instance[12]: 7536755 isql INSERT
+full label for instance[13]: 7602292 isql INSERT
+full label for instance[14]: 7667829 isql AWAITING COMMAND
+full label for instance[15]: 7733366 isql AWAITING COMMAND
+full label for instance[16]: 7798903 isql COMMIT TRANSACTI
+full label for instance[17]: 7864440 isql INSERT
+full label for instance[18]: 7929977 isql INSERT
+full label for instance[19]: 7995514 isql INSERT
+full label for instance[20]: 8061051 isql INSERT
+full label for instance[21]: 8126588 isql INSERT
+full label for instance[22]: 8192125 isql INSERT
+full label for instance[23]: 8257662 isql INSERT
+full label for instance[24]: 8323199 isql INSERT
+full label for instance[25]: 8388736 isql COMMIT TRANSACTI
+full label for instance[26]: 8454273 isql INSERT
+full label for instance[27]: 8519810 isql INSERT
+full label for instance[28]: 8585347 isql INSERT
+full label for instance[29]: 8650884 isql AWAITING COMMAND
+full label for instance[30]: 8716421 isql INSERT
+full label for instance[31]: 8781958 isql EXECUTE
+full label for instance[32]: 8847495 isql INSERT
+full label for instance[33]: 8913032 isql AWAITING COMMAND
+full label for instance[34]: 8978569 isql INSERT
+full label for instance[35]: 9044106 isql INSERT
+full label for instance[36]: 9109643 isql SELECT
+full label for instance[37]: 9175180 isql INSERT
+
+ 327685 (NUL 393222 (NUL 458759 (NUL 4653127 (NU 7012459 isq 7077996 isq 7143533 isq 7209070 isq 7274607 isq 7340144 isq 7405681 isq 7471218 isq 7536755 isq 7602292 isq 7667829 isq 7733366 isq 7798903 isq 7864440 isq 7929977 isq 7995514 isq 8061051 isq 8126588 isq 8192125 isq 8257662 isq 8323199 isq 8388736 isq 8454273 isq 8519810 isq 8585347 isq 8650884 isq 8716421 isq 8781958 isq 8847495 isq 8913032 isq 8978569 isq 9044106 isq 9109643 isq 9175180 isq
+16:02:51.554 No values available
+16:03:11.554 0.0 0.0 0.0 0.1027 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:03:31.554 0.0 0.0 0.0 0.1064 ? 4.170E-02 2.095E-02 4.500E-02 1.500E-02 4.840E-02 7.170E-02 4.340E-02 5.265E-02 4.680E-02 2.170E-02 2.000E-02 2.000E-02 5.140E-02 4.500E-02 2.000E-02 8.765E-02 2.500E-02 5.265E-02 3.670E-02 3.595E-02 4.765E-02 6.500E-02 3.970E-02 3.300E-02 5.300E-02 8.010E-02 2.595E-02 1.895E-02 3.000E-02 3.840E-02 2.000E-02 5.095E-02 ?
+16:03:51.554 0.0 0.0 0.0 5.660E-02 ? 1.330E-02 1.000E-02 3.750E-02 5.000E-02 5.160E-02 2.830E-02 6.665E-02 4.085E-02 4.320E-02 2.330E-02 4.000E-02 7.250E-02 2.660E-02 3.500E-02 6.000E-02 3.585E-02 1.750E-02 3.330E-02 1.830E-02 1.000E-02 8.300E-03 2.500E-02 3.330E-02 3.750E-02 5.500E-02 3.990E-02 5.750E-02 3.750E-02 1.000E-02 3.660E-02 7.500E-03 2.750E-02 ?
+16:04:11.554 0.0 0.0 0.0 7.775E-02 ? 1.500E-02 2.500E-02 7.140E-02 6.500E-02 3.500E-02 3.900E-03 2.690E-02 2.745E-02 2.500E-02 2.000E-02 1.390E-02 3.750E-02 4.500E-02 2.165E-02 5.000E-02 7.245E-02 2.250E-02 5.000E-03 2.000E-02 9.085E-02 1.085E-02 2.500E-02 2.500E-02 4.750E-02 2.500E-02 2.195E-02 6.335E-02 7.445E-02 4.000E-02 5.500E-02 3.750E-02 5.250E-02 ?
+16:04:31.554 0.0 0.0 0.0 0.1103 ? 1.000E-02 2.915E-02 4.610E-02 3.500E-02 5.500E-02 4.220E-02 1.610E-02 3.500E-02 3.500E-02 4.610E-02 2.110E-02 2.500E-02 5.000E-02 3.835E-02 4.610E-02 3.025E-02 5.500E-02 4.000E-02 4.500E-02 6.720E-02 2.915E-02 5.000E-02 1.500E-02 4.500E-02 6.500E-02 3.415E-02 3.915E-02 4.610E-02 2.805E-02 4.000E-02 2.500E-02 6.110E-02 ?
+16:04:51.554 0.0 0.0 0.0 0.1294 ? 4.500E-02 2.330E-02 2.000E-02 2.745E-02 4.000E-02 6.390E-02 2.440E-02 2.745E-02 1.245E-02 1.890E-02 2.235E-02 1.500E-02 3.745E-02 2.745E-02 2.390E-02 3.465E-02 7.450E-03 1.245E-02 3.000E-02 4.685E-02 4.245E-02 3.990E-02 1.500E-02 4.500E-02 2.000E-02 3.890E-02 2.245E-02 4.195E-02 2.685E-02 3.000E-02 4.990E-02 1.380E-02 ?
+16:05:11.554 0.0 0.0 0.0 7.065E-02 ? 3.465E-02 2.755E-02 2.000E-02 2.755E-02 3.000E-02 2.655E-02 3.255E-02 1.755E-02 4.410E-02 7.310E-02 5.265E-02 3.155E-02 4.565E-02 4.755E-02 5.155E-02 2.165E-02 2.410E-02 2.755E-02 2.000E-02 4.130E-02 3.755E-02 5.510E-02 5.500E-02 2.310E-02 4.655E-02 6.810E-02 8.410E-02 2.000E-02 3.165E-02 6.500E-02 4.510E-02 2.820E-02 ?
+16:05:31.554 0.0 0.0 0.0 5.825E-02 ? 4.800E-02 3.900E-02 4.265E-02 8.765E-02 4.665E-02 3.845E-02 5.000E-02 4.035E-02 3.845E-02 3.190E-02 2.135E-02 3.345E-02 4.090E-02 3.500E-02 3.980E-02 5.110E-02 4.980E-02 6.000E-02 3.500E-02 6.145E-02 4.500E-02 3.265E-02 3.500E-02 3.690E-02 5.845E-02 2.325E-02 2.845E-02 3.635E-02 2.610E-02 2.135E-02 3.635E-02 5.825E-02 ?
+16:05:51.554 0.0 0.0 0.0 3.965E-02 ? 4.435E-02 4.600E-02 1.735E-02 2.235E-02 4.535E-02 3.000E-02 2.500E-02 3.965E-02 4.000E-02 3.200E-02 8.650E-03 3.700E-02 3.600E-02 2.700E-02 1.765E-02 1.235E-02 2.565E-02 1.000E-02 7.200E-02 4.135E-02 2.700E-02 6.135E-02 4.000E-02 1.900E-02 4.500E-02 2.365E-02 2.000E-02 2.365E-02 3.935E-02 2.865E-02 2.365E-02 4.365E-02 ?
+16:06:11.554 0.0 0.0 0.0 8.730E-02 ? 4.300E-02 4.500E-02 1.665E-02 2.500E-02 6.130E-02 6.000E-02 3.000E-02 4.830E-02 3.000E-02 2.300E-02 3.500E-02 5.800E-02 3.000E-02 1.800E-02 5.600E-02 6.330E-02 1.965E-02 3.000E-02 3.465E-02 6.100E-02 3.465E-02 2.100E-02 3.000E-02 3.100E-02 1.665E-02 2.500E-02 1.500E-02 3.330E-02 1.300E-02 4.000E-02 2.830E-02 2.000E-02 ?
+16:06:31.554 0.0 0.0 0.0 6.170E-02 ? 5.700E-02 3.895E-02 1.035E-02 6.000E-02 3.370E-02 2.200E-02 2.700E-02 4.565E-02 6.500E-02 1.500E-02 1.895E-02 3.500E-02 3.895E-02 5.895E-02 3.200E-02 3.565E-02 5.035E-02 4.000E-02 8.230E-02 1.500E-02 4.035E-02 4.500E-02 3.500E-02 3.095E-02 3.335E-02 3.500E-02 2.000E-02 4.870E-02 2.700E-02 2.200E-02 7.370E-02 2.200E-02 ?
+16:06:51.554 0.0 0.0 0.0 5.775E-02 ? 4.350E-03 4.605E-02 2.075E-02 3.000E-02 1.800E-02 2.300E-02 4.350E-03 3.240E-02 3.500E-02 4.500E-02 6.050E-03 1.500E-02 1.605E-02 6.880E-02 4.075E-02 1.605E-02 1.800E-02 2.635E-02 6.605E-02 1.775E-02 1.935E-02 7.000E-02 7.275E-02 1.040E-02 2.635E-02 4.000E-02 1.000E-02 4.800E-02 2.935E-02 2.300E-02 3.800E-02 4.935E-02 ?
+16:07:11.554 0.0 0.0 0.0 5.225E-02 ? 5.865E-02 3.205E-02 4.130E-02 3.000E-02 3.110E-02 3.905E-02 4.365E-02 2.365E-02 4.110E-02 3.500E-02 6.110E-02 3.610E-02 3.000E-02 4.725E-02 3.225E-02 5.610E-02 5.000E-02 3.365E-02 3.000E-02 6.835E-02 3.865E-02 5.000E-03 4.335E-02 2.365E-02 7.270E-02 1.000E-02 2.500E-02 4.705E-02 3.865E-02 2.000E-02 3.000E-02 3.365E-02 ?
+16:07:31.554 0.0 0.0 0.0 6.660E-02 ? 2.580E-02 4.375E-02 4.755E-02 5.580E-02 3.050E-02 3.095E-02 3.080E-02 4.660E-02 5.050E-02 2.820E-02 6.390E-02 5.630E-02 2.660E-02 1.160E-02 5.160E-02 1.970E-02 3.080E-02 2.080E-02 1.080E-02 5.390E-02 4.160E-02 1.660E-02 7.390E-02 1.580E-02 5.255E-02 6.000E-02 1.600E-03 4.455E-02 5.740E-02 1.500E-02 5.580E-02 2.240E-02 ?
+16:07:51.554 0.0 0.0 0.0 0.1163 ? 1.420E-02 2.920E-02 3.340E-02 5.185E-02 3.870E-02 1.000E-02 4.980E-02 4.840E-02 2.840E-02 5.680E-02 1.530E-02 5.760E-02 2.430E-02 1.870E-02 3.840E-02 5.420E-02 3.420E-02 1.920E-02 2.420E-02 1.500E-02 6.370E-02 2.340E-02 3.500E-02 3.420E-02 4.605E-02 1.500E-02 3.840E-02 2.840E-02 3.760E-02 3.000E-02 5.215E-02 4.260E-02 ?
+16:08:11.554 0.0 0.0 0.0 7.380E-02 ? 4.030E-02 2.000E-02 1.355E-02 4.735E-02 3.470E-02 3.210E-02 2.940E-02 4.000E-02 4.855E-02 5.175E-02 4.500E-02 4.500E-02 5.910E-02 5.145E-02 1.530E-02 4.500E-02 4.175E-02 7.710E-02 1.855E-02 3.500E-02 5.825E-02 5.855E-02 3.500E-02 5.855E-02 6.590E-02 2.000E-02 1.175E-02 3.175E-02 4.030E-02 3.000E-02 7.560E-02 3.175E-02 ?
+16:08:31.554 0.0 0.0 0.0 7.325E-02 ? 2.820E-02 2.275E-02 5.420E-02 3.850E-02 9.775E-02 4.140E-02 5.275E-02 3.000E-02 2.920E-02 4.250E-02 6.320E-02 3.850E-02 3.350E-02 3.250E-02 1.820E-02 7.125E-02 4.600E-02 3.290E-02 2.570E-02 4.500E-02 4.570E-02 4.345E-02 4.425E-02 2.070E-02 1.145E-02 5.500E-02 2.325E-02 2.825E-02 4.670E-02 3.850E-02 3.420E-02 1.325E-02 ?
+16:08:51.554 0.0 0.0 0.0 6.840E-02 ? 3.990E-02 4.565E-02 6.065E-02 1.990E-02 5.145E-02 2.990E-02 5.225E-02 2.260E-02 4.485E-02 1.575E-02 1.570E-02 5.650E-02 6.500E-03 2.075E-02 2.410E-02 1.375E-02 7.250E-03 1.840E-02 4.755E-02 2.180E-02 3.915E-02 5.300E-02 2.575E-02 2.075E-02 4.500E-02 4.340E-02 3.420E-02 8.000E-02 2.720E-02 1.150E-02 5.065E-02 1.000E-02 ?
+16:09:11.554 0.0 0.0 0.0 7.995E-02 ? 3.160E-02 3.325E-02 3.160E-02 5.660E-02 7.245E-02 6.600E-03 5.500E-02 3.075E-02 6.905E-02 1.500E-02 3.080E-02 4.335E-02 2.165E-02 2.665E-02 3.240E-02 3.665E-02 4.000E-02 2.825E-02 4.820E-02 4.820E-02 6.600E-03 6.000E-02 3.500E-02 2.000E-02 5.000E-03 1.660E-02 5.580E-02 5.000E-02 4.080E-02 4.000E-02 2.160E-02 5.000E-02 ?
+16:09:31.554 0.0 0.0 0.0 7.060E-02 ? 3.500E-02 3.835E-02 3.500E-02 2.000E-02 2.835E-02 4.000E-02 4.445E-02 3.665E-02 1.835E-02 2.895E-02 2.895E-02 2.165E-02 3.730E-02 3.335E-02 4.285E-02 4.835E-02 4.500E-02 3.835E-02 5.000E-03 5.000E-02 2.945E-02 2.500E-02 3.500E-02 6.340E-02 6.500E-02 5.000E-02 5.340E-02 1.945E-02 3.000E-02 3.445E-02 5.500E-02 2.500E-02 ?
+16:09:51.554 0.0 0.0 0.0 0.1032 ? 2.610E-02 3.500E-02 2.500E-02 4.500E-02 2.000E-02 2.000E-02 3.555E-02 2.830E-02 1.610E-02 2.605E-02 4.605E-02 4.000E-02 4.105E-02 3.000E-02 4.215E-02 2.330E-02 3.000E-02 4.500E-02 2.500E-02 4.110E-02 3.665E-02 6.720E-02 3.830E-02 2.660E-02 3.000E-02 2.720E-02 2.595E-02 4.165E-02 3.500E-02 2.885E-02 2.000E-02 1.000E-02 ?
+16:10:11.554 0.0 0.0 0.0 9.830E-02 ? 3.390E-02 4.500E-02 5.000E-02 2.500E-02 5.640E-02 5.140E-02 7.640E-02 7.445E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:10:31.554 0.0 0.0 0.0 0.1433 ? 5.150E-02 6.000E-02 1.000E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:10:51.554 0.0 0.0 0.0 0.1254 ? 2.850E-02 4.500E-02 5.560E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:11.554 0.0 0.0 0.0 0.1416 ? 7.720E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:31.554 0.0 0.0 0.0 4.425E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:11:51.554 0.0 0.0 0.0 1.945E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:11.554 0.0 0.0 0.0 1.055E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:31.554 0.0 0.0 0.0 2.890E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+16:12:51.554 0.0 0.0 0.0 3.055E-02 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+
+samples: 32
+CPU: less than 3 sec
+__pmLogReads: 3013
+
+=== just instance #4653127 (always there) ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+metric: foo
+archive: src/bigace_v2
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 32
+interval: 20.00 sec
+16:02:31.554 No values available
+
+ 4653127
+16:02:51.554 No values available
+16:03:11.554 0.1027
+16:03:31.554 0.1064
+16:03:51.554 5.660E-02
+16:04:11.554 7.775E-02
+16:04:31.554 0.1103
+16:04:51.554 0.1294
+16:05:11.554 7.065E-02
+16:05:31.554 5.825E-02
+16:05:51.554 3.965E-02
+16:06:11.554 8.730E-02
+16:06:31.554 6.170E-02
+16:06:51.554 5.775E-02
+16:07:11.554 5.225E-02
+16:07:31.554 6.660E-02
+16:07:51.554 0.1163
+16:08:11.554 7.380E-02
+16:08:31.554 7.325E-02
+16:08:51.554 6.840E-02
+16:09:11.554 7.995E-02
+16:09:31.554 7.060E-02
+16:09:51.554 0.1032
+16:10:11.554 9.830E-02
+16:10:31.554 0.1433
+16:10:51.554 0.1254
+16:11:11.554 0.1416
+16:11:31.554 4.425E-02
+16:11:51.554 1.945E-02
+16:12:11.554 1.055E-02
+16:12:31.554 2.890E-02
+16:12:51.554 3.055E-02
+
+samples: 32
+CPU: less than 3 sec
+__pmLogReads: 624
diff --git a/qa/181 b/qa/181
new file mode 100755
index 0000000..bc80188
--- /dev/null
+++ b/qa/181
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 181
+# match instance name with embedded spaces for an archive
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/bigace
+ ln $seq.out.1 $seq.out
+else
+ # no support for V1 archives
+ arch=src/bigace_v2
+ ln $seq.out.2 $seq.out
+fi
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/Note: timezone set to local timezone of host/d'
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.pmns
+root {
+ foo 40:2:1
+}
+End-of-File
+
+pmval -z -U $arch -n $tmp.pmns -i 4653127 -s 3 foo | _filter
diff --git a/qa/181.out.1 b/qa/181.out.1
new file mode 100644
index 0000000..2082484
--- /dev/null
+++ b/qa/181.out.1
@@ -0,0 +1,15 @@
+QA output created by 181
+
+metric: foo
+archive: src/bigace
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 3
+
+ 4653127
+16:02:33.786 5.145E-02
+16:02:35.831 4.889E-02
+16:02:37.790 0.0
diff --git a/qa/181.out.2 b/qa/181.out.2
new file mode 100644
index 0000000..a0af9bb
--- /dev/null
+++ b/qa/181.out.2
@@ -0,0 +1,15 @@
+QA output created by 181
+
+metric: foo
+archive: src/bigace_v2
+host: moomba
+start: Tue Nov 21 16:02:31 1995
+end: Tue Nov 21 16:12:57 1995
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 3
+
+ 4653127
+16:02:33.786 5.145E-02
+16:02:35.831 4.889E-02
+16:02:37.790 0.0
diff --git a/qa/182 b/qa/182
new file mode 100755
index 0000000..843a6ee
--- /dev/null
+++ b/qa/182
@@ -0,0 +1,88 @@
+#! /bin/sh
+# PCP QA Test No. 182
+# pmlogger gets SIGPIPE if pmlc goes away unexpectedly
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+trap "$sudo rm -f $tmp.*; $sudo $signal -s TERM \$pid; exit" 0 1 2 3 15
+
+# just like the kill builtin, just do it quietly
+_silent_kill()
+{
+ if [ $# -eq 1 ]
+ then
+ (( $sudo $signal $1 )&) >/dev/null 2>&1
+ else
+ echo "_silent_kill: needs 1 arg, not $#"
+ fi
+}
+
+_filter_date()
+{
+ sed <$1 \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] .. /MONTH-DAY /' \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9] /TIME /' \
+ -e 's/ [12][0-9][0-9][0-9]/ YEAR/'
+}
+
+_filter_errs()
+{
+ _filter_pmlogger_log \
+ | sed \
+ -e '/^MONTH-/d' \
+ -e '/Error: do_control:/d'
+}
+
+# real QA test starts here
+_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp
+_wait_for_pmlogger $pid $tmp.log 10
+
+cat <<End-of-File >$tmp.cmd
+pmlc <<E-O-F >>$tmp.out
+connect $pid
+query kernel
+query kernel
+E-O-F
+End-of-File
+
+for i in 1 2 3
+do
+ echo "=== start and abort pmlc ==="
+ echo >>$tmp.out
+ echo "=== iteration $i ===" >>$tmp.out
+ ( sh $tmp.cmd & eval echo '$!' >$tmp.pid ) &
+
+ pmsleep 2.5
+ pmlc_pid=`cat $tmp.pid`
+ [ ! -z "$pmlc_pid" ] && _silent_kill $pmlc_pid
+ pmsleep 1.1
+ have=`ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == '"$pmlc_pid"' { print }' \
+ | wc -l | sed -e 's/ *//g'`
+ echo "$have pmlc processes are running"
+ [ $have -gt 0 ] && ps $PCP_PS_ALL_FLAGS | grep pmlc | grep -v grep
+
+ # ready to accept again on the socket?
+ #
+ pmsleep 2.5
+
+done
+
+echo
+echo "=== pmlogger log ==="
+_filter_date $tmp.log | _filter_errs
+
+# for debugging
+#
+cp $tmp.out $seq.out.full
+
+exit 0
diff --git a/qa/182.out b/qa/182.out
new file mode 100644
index 0000000..bfd4508
--- /dev/null
+++ b/qa/182.out
@@ -0,0 +1,14 @@
+QA output created by 182
+=== start and abort pmlc ===
+0 pmlc processes are running
+=== start and abort pmlc ===
+0 pmlc processes are running
+=== start and abort pmlc ===
+0 pmlc processes are running
+
+=== pmlogger log ===
+Log for pmlogger on HOST started MONTH-DAY TIME YEAR
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
diff --git a/qa/183 b/qa/183
new file mode 100755
index 0000000..66b3c5e
--- /dev/null
+++ b/qa/183
@@ -0,0 +1,235 @@
+#! /bin/sh
+# PCP QA Test No. 183
+# pmnewlog error handling
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+newlog=$PCP_BINADM_DIR/pmnewlog
+trap "$sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+status=1
+
+# used to debug qa test (tes:June/2000)
+rm -rf $seq.full
+
+hostname=`hostname`
+
+_filter_ls()
+{
+ sed \
+ -e 's/tmp\/[0-9][0-9]*/tmp\/PID/' \
+ -e 's/[A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]/TIME/' \
+ | $PCP_AWK_PROG '
+/TIME/ { $3 = "user"; $4 = "group" }
+ { print }'
+}
+
+_filter()
+{
+ sed \
+ -e "s|${PCP_BINADM_DIR}|PCP_BINADM_DIR|" \
+ -e 's/process [0-9][0-9]*/process PID/' \
+ -e "s/ at $hostname:/ at HOST:/" \
+ -e "s/ at local::/ at HOST:/" \
+ -e "s/ on port [0-9][0-9]*//" \
+ -e "s/ pid [0-9][0-9]*//" \
+ -e '/Error \[<stdin>,/d' \
+ -e '/Warning \[<stdin>,/d' \
+ -e '/Not connected to any/d' \
+ -e '/Logging statement ignored/d' \
+ -e '/Problem with lookup for metric/d' \
+ -e '/Reason: Unknown metric name/d' \
+ -e '/Try again. Information not currently available/d' \
+ -e '/Unknown or illegal metric identifier/d' \
+ -e '/Unknown or illegal instance domain identifier/d' \
+ -e '/Operation not permitted/s/line 1: //' \
+ -e 's/Address already in use/[TCP\/IP error]/' \
+ -e 's/Connection reset by peer/[TCP\/IP error]/' \
+ -e 's/Connection refused/[TCP\/IP error]/'
+}
+
+cat <<End-of-File >$tmp.config
+log mandatory on once hinv.ndisk
+End-of-File
+
+# real QA test starts here
+echo "=== usage ==="
+$newlog
+
+echo
+echo "=== archive exists ==="
+echo "=== archive exists ===" >>$seq.full
+$sudo rm -f $tmp.save.*
+_start_up_pmlogger -c $tmp.config -l $tmp.log $tmp.save >$tmp.err 2>&1
+_wait_for_pmlogger $pid $tmp.log
+$sudo $newlog -p $pid $tmp.save >$tmp.out 2>&1
+ok=true
+for base in $tmp.save $tmp.save-00
+do
+ for suff in 0 index meta
+ do
+ [ -f $base.$suff ] && continue
+ echo "Failed! expected file $base.$suff not found"
+ ok=false
+ done
+done
+if $ok
+then
+ echo "OK, previous one renamed using \"-00\" suffix"
+else
+ echo "output from pmnewlog ..."
+ cat $tmp.out
+fi
+$sudo $signal -a -s TERM pmlogger >/dev/null 2>&1
+
+echo
+echo "=== no non-primary logger ==="
+echo "=== no non-primary logger ===" >>$seq.full
+date >/dev/null &
+_wait_pmlogger_end $pid
+$sudo $newlog -p $! $tmp 2>&1 | tee -a $seq.full | _filter
+
+echo
+echo "=== no primary logger ==="
+echo "=== no primary logger ===" >>$seq.full
+$sudo $signal -a -s TERM pmlogger
+pmsleep 1.1
+$sudo $newlog $tmp 2>&1 | tee -a $seq.full | _filter
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+echo
+echo "=== process is not called pmlogger ==="
+echo "=== process is not called pmlogger ===" >>$seq.full
+pmsleep 10 &
+$sudo $newlog -p $! $tmp 2>&1 | tee -a $seq.full | _filter
+
+echo
+echo "=== process is not really pmlogger ==="
+echo "=== process is not really pmlogger ===" >>$seq.full
+cp `which sleep` $tmp.pmlogger
+$tmp.pmlogger 10 &
+$sudo $newlog -p $! $tmp 2>&1 | tee -a $seq.full | _filter \
+| sed -e "/\.pmlogger/s/.*/-- ps line removed --/" -e "s/$!/PID/"
+
+echo
+echo "=== non-primary logger busy ==="
+echo "=== non-primary logger busy ===" >>$seq.full
+$sudo rm -f $tmp.save.*
+_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp.save >$tmp.err 2>&1
+_wait_for_pmlogger $pid $tmp.log
+(( echo "connect $pid"; pmsleep 3.0 ) | pmlc ) &
+$sudo $newlog -p $pid $tmp 2>&1 | tee -a $seq.full | _filter \
+| sed -e "/\.save/s/.*/-- ps line removed --/" -e "s/$pid/PID/"
+$sudo $signal -s TERM $pid
+
+echo
+echo "=== primary logger busy ==="
+echo "=== primary logger busy ===" >>$seq.full
+(( echo "connect primary"; sleep 3 ) | pmlc ) &
+$sudo $newlog $tmp 2>&1 | tee -a $seq.full | _filter \
+| sed -e "/\/pmlogger/s/.*/-- ps line removed --/"
+
+echo
+echo "=== no extracted configuration ==="
+echo "=== no extracted configuration ===" >>$seq.full
+$sudo rm -f $tmp.save.*
+_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp.save >$tmp.err 2>&1
+_wait_for_pmlogger $pid $tmp.log
+
+echo "pid=$pid" >>$seq.full
+ps $PCP_PS_ALL_FLAGS | grep pmlogger >>$seq.full
+
+pmsleep 1.1
+$sudo $newlog -p $pid $tmp 2>&1 \
+| tee -a $seq.full \
+| _filter \
+| sed \
+ -e "/\.save/s/.*/-- ps line removed --/" \
+ -e "s/$pid/PID/" \
+ -e '/to get logging state/d' \
+ -e '/errors from talking/d' \
+ -e '/continuing/d' \
+ -e '/Reason: Metric not supported by this version/d' \
+ -e '/Reason: IPC protocol failure/d' \
+ -e '/^$/d'
+
+$sudo $signal -s TERM $pid
+
+_wait_pmlogger_end $pid
+echo "-- tmp.log --" >>$seq.full
+cat $tmp.log >>$seq.full
+echo "-- tmp.err --" >>$seq.full
+cat $tmp.err >>$seq.full
+echo "-- pmnewlog --" >>$seq.full
+
+echo
+echo "=== wrong uid to kill pmlogger ==="
+echo "=== wrong uid to kill pmlogger ===" >>$seq.full
+
+echo "=== initial pmloggers ===" >>$seq.full
+# root 29697 1 0 10:45 pts/1 00:00:00 pmlogger -P -c config.default 20101021.10.45
+ps $PCP_PS_ALL_FLAGS \
+| grep '[p]mlogger' \
+| tee -a $seq.full \
+| grep -v sudo \
+| $PCP_AWK_PROG '
+$1 == "root" { print $2 }' >$tmp.old
+cat $tmp.old >>$seq.full
+
+$sudo rm -f $tmp.save.*
+_start_up_pmlogger -L -c $tmp.config -l $tmp.log $tmp.save >$tmp.err 2>&1
+pmsleep 1.1
+
+echo "=== final pmloggers ===" >>$seq.full
+ps $PCP_PS_ALL_FLAGS \
+| grep '[p]mlogger' \
+| tee -a $seq.full \
+| grep -v sudo \
+| $PCP_AWK_PROG '
+$1 == "root" { print $2 }' >$tmp.new
+cat $tmp.new >>$seq.full
+
+#for pid in `cat $tmp.new`
+#do
+# if grep "^$pid"'$' $tmp.old >/dev/null
+# then
+# :
+# else
+# break
+# fi
+#done
+
+echo "target pmlogger pid=$pid" >>$seq.full
+pmsleep 1.1
+
+$newlog -p $pid $tmp 2>&1 \
+| tee -a $seq.full \
+| _filter \
+| sed \
+ -e "/\.save/s/.*/-- ps line removed --/" \
+ -e '/^kill:.*Not owner/s/Not owner/Operation not permitted/' \
+ -e '/.*: kill:.*Not owner/s/Not owner/Operation not permitted/' \
+ -e 's/.*kill:.*Operation not permitted/KILL: Operation not permitted/' \
+ -e 's/.*kill:.*permission denied/KILL: Operation not permitted/' \
+ -e '/to get logging state/d' \
+ -e '/errors from talking/d' \
+ -e '/continuing/d' \
+ -e '/Reason: Metric not supported by this version/d' \
+ -e '/Reason: Broken pipe/d' \
+ -e '/^$/d'
+
+$sudo $signal -s TERM $pid
+
+status=0
+exit
diff --git a/qa/183.out b/qa/183.out
new file mode 100644
index 0000000..7afd279
--- /dev/null
+++ b/qa/183.out
@@ -0,0 +1,97 @@
+QA output created by 183
+=== usage ===
+pmnewlog: Insufficient arguments
+
+Usage: pmnewlog [options] archive
+
+pmnewlog options:
+ -a FILE, --access=FILE
+ specify access controls for the new pmlogger
+ -C FILE, --save=FILE save the configuration of new pmlogger in FILE
+ -c FILE, --config=FILE
+ file to load configuration from
+ -N, --showme perform a dry run, showing what would be done
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -P, --primary execute as primary logger instance
+ -p PID, --pid=PID restart non-primary logger with pid
+ -s, --socks use pmsocks
+ -V, --verbose turn on verbose reporting of pmnewlog progress
+ -?, --help show this usage message and exit
+
+pmlogger options:
+ -c FILE, --config=FILE
+ file to load configuration from
+ -l FILE, --log=FILE redirect diagnostics and trace output
+ -L, --linger run even if not primary logger instance and nothing to log
+ -m MSG, --note=MSG descriptive note to be added to the port map file
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -P, --primary execute as primary logger instance
+ -r, --report report record sizes and archive growth rate
+ -t DELTA, --interval=DELTA
+ default logging interval
+ -T TIME, --finish=TIME
+ end of the time window
+ -v SIZE, --volsize=SIZE
+ switch log volumes after size has been accumulated
+ -y set timezone for times to local time rather than from PMCD host
+
+Sorry, but this is fatal. No new pmlogger instance has been started.
+
+=== archive exists ===
+OK, previous one renamed using "-00" suffix
+
+=== no non-primary logger ===
+Looking for pmlogger (process PID) ...
+pmnewlog: Error: process not found
+
+Sorry, but this is fatal. No new pmlogger instance has been started.
+
+=== no primary logger ===
+Looking for primary pmlogger ...
+pmnewlog: Error: process not found
+
+Sorry, but this is fatal. No new pmlogger instance has been started.
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== process is not called pmlogger ===
+Looking for pmlogger (process PID) ...
+pmnewlog: Error: process not found
+
+Sorry, but this is fatal. No new pmlogger instance has been started.
+
+=== process is not really pmlogger ===
+Getting logged host name from pmlogger (process PID) ... failed to connect
+
+ Unable to connect to pmlogger at HOST: [TCP/IP error]
+
+Sorry, but this is fatal. No new pmlogger instance has been started.
+
+=== non-primary logger busy ===
+Getting logged host name from pmlogger (process PID) ... failed to connect
+
+ Unable to connect to pmlogger at HOST: [TCP/IP error]
+
+Sorry, but this is fatal. No new pmlogger instance has been started.
+
+=== primary logger busy ===
+Contacting primary pmlogger to get logging state ... failed to connect
+
+ Unable to connect to primary pmlogger at HOST: [TCP/IP error]
+
+Sorry, but this is fatal. No new pmlogger instance has been started.
+
+=== no extracted configuration ===
+pmnewlog: Error: failed to collect configuration info from pmlogger (process PID)
+Most likely this pmlogger instance is inactive.
+Sorry, but this is fatal. No new pmlogger instance has been started.
+
+=== wrong uid to kill pmlogger ===
+KILL: Operation not permitted
+KILL: Operation not permitted
+KILL: Operation not permitted
+ failed!
+Sorry, but this is fatal. No new pmlogger instance has been started.
diff --git a/qa/184 b/qa/184
new file mode 100755
index 0000000..79bcad1
--- /dev/null
+++ b/qa/184
@@ -0,0 +1,108 @@
+#! /bin/sh
+# PCP QA Test No. 184
+# simplest possible case for pmnewlog
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+newlog=$PCP_BINADM_DIR/pmnewlog
+trap "$sudo $signal -a pmlogger >/dev/null 2>&1; $sudo rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter_dumplog()
+{
+ sed \
+ -e '/\[[0-9][0-9]* bytes\]/d' \
+ -e '/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/s//TIMESTAMP/' \
+ -e 's/^\(log started *\).*/\1DATESTAMP/' \
+ -e 's/^\(last log entry *\).*/\1DATESTAMP/' \
+ -e 's/^\(current time *\).*/\1DATESTAMP/' \
+ -e 's/^\( *commencing *\).*/\1DATESTAMP/' \
+ -e 's/^\( *ending *\).*/\1DATESTAMP/' \
+ -e '/^Performance metrics/s/host .*/host HOST/' \
+ -e '/(pmcd.control.register)/s/value [0-9][0-9]*/value INTEGER/' \
+ -e '/^InDom: 2.1/,/^$/s/[0-9][0-9]* or "[0-9][0-9]*"/LOGGER_PID or "LOGGER_PID"/g' \
+ -e '/pmcd.pmlogger.*inst/s/[0-9][0-9]* or "[0-9][0-9]*"/LOGGER_PID or "LOGGER_PID"/' \
+ -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
+ -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd.pmlogger.archive/s/value ".*/value "PATH"/' \
+ | $PCP_AWK_PROG '
+$1 == "TIMESTAMP" && NF == 4 { print "TIMESTAMP 0 OFFSET OFFSET"; next }
+ { print }'
+}
+
+_filter_newlog()
+{
+ sed \
+ -e 's/process [0-9][0-9]*/process PID/' \
+ -e '/pmlogger -L/s/.*/-- ps line removed --/' \
+ -e '/ \/usr\/pcp\/bin\/pmlogger /s/.*/-- ps line removed --/' \
+ -e 's/^\/usr\/pcp\/bin\/pmlogger/pmlogger/' \
+ -e "/^pmlogger/s/$seq-[0-9][0-9]*/SEQ-PID/g" \
+ -e '/configuration file saved as/s/[0-9][0-9]*/PID/g' \
+ -e 's/\[[0-9][0-9]*]/[PID]/' \
+ -e '/PMCD host/d' \
+ -e 's/ host [^ ]*/ host HOST/g' \
+ -e '/^Getting logged/s/host HOST/host name/' \
+ -e 's/ -h [^ ]*/ -h HOST/g' \
+ -e 's/ -c [^ ]*/ -c CONF/g' \
+ -e 's/ SIG.* done/ signal stuff ... done/' \
+ -e '/Error \[<stdin>,/d' \
+ -e '/Warning \[<stdin>,/d' \
+ -e '/Not connected to any/d' \
+ -e '/Logging statement ignored/d' \
+ -e '/Problem with lookup for metric/d' \
+ -e '/Reason: Unknown metric name/d' \
+ -e '/Try again. Information not currently available/d' \
+ -e '/Unknown or illegal metric identifier/d' \
+ -e '/Unknown or illegal instance domain identifier/d' \
+ -e '/Metric not supported by this version/d' \
+ -e '/^log size/s/[0-9][0-9]*/BYTES/' \
+ -e '/^Contacting pmlogger /d' \
+ -e '/^pmnewlog: Warning: errors from talking /d' \
+ -e '/^continuing .../d' \
+ -e '/New pmlogger configuration file saved /d' \
+ -e '/^[ ]*$/d' \
+ -e 's;/tmp/PID/pcp;/tmp/PID;g'
+}
+
+# real QA test starts here
+
+# Note:
+# Logging a metric with an instance domain so that the record will be flushed.
+cat <<End-of-File >$tmp.config
+log mandatory on once pmcd.control.register["0"]
+End-of-File
+$sudo rm -f $tmp.arch.*
+_start_up_pmlogger -L -c $tmp.config -l $tmp.log $tmp.arch >$tmp.err 2>&1
+logger_pid=$pid
+_wait_for_pmlogger $logger_pid $tmp.log
+
+echo "=== old log ===" | tee $seq.full
+pmdumplog -a $tmp.arch | tee -a $seq.full | _filter_dumplog
+
+echo | tee -a $seq.full
+echo "=== pmnewlog ==" | tee -a $seq.full
+$sudo $newlog -V -p $logger_pid -l $tmp.log $tmp.newarch 2>&1 >$tmp.out
+cat $tmp.out >>$seq.full
+_filter_newlog <$tmp.out | _filter_dumplog
+
+# Cleanup after youself
+$sudo rm -f `dirname $tmp`/Latest
+
+echo
+echo "=== check old pmlogger has gone ==="
+ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == '$logger_pid' { print }'
+
+echo | tee -a $seq.full
+echo "=== check what's in the new log ===" | tee -a $seq.full
+sleep 1
+pmdumplog -a $tmp.newarch | tee -a $seq.full | _filter_dumplog
diff --git a/qa/184.out b/qa/184.out
new file mode 100644
index 0000000..030d71b
--- /dev/null
+++ b/qa/184.out
@@ -0,0 +1,126 @@
+QA output created by 184
+=== old log ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATESTAMP
+ ending DATESTAMP
+
+Descriptions for Metrics in the Log ...
+PMID: 2.0.8 (pmcd.control.register)
+ Data Type: 32-bit int InDom: 2.2 0x800002
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 2.2
+TIMESTAMP 16 instances
+ 0 or "0"
+ 1 or "1"
+ 2 or "2"
+ 3 or "3"
+ 4 or "4"
+ 5 or "5"
+ 6 or "6"
+ 7 or "7"
+ 8 or "8"
+ 9 or "9"
+ 10 or "10"
+ 11 or "11"
+ 12 or "12"
+ 13 or "13"
+ 14 or "14"
+ 15 or "15"
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 2.0.8 (pmcd.control.register): inst [0 or "0"] value INTEGER
+
+=== pmnewlog ==
+Looking for pmlogger (process PID) ... found
+-- ps line removed --
+Getting logged host name from pmlogger (process PID) ... done
+Terminating pmlogger (process PID) ... signal stuff ... done
+Launching new pmlogger in directory "/tmp" as ...
+pmlogger -l /tmp/SEQ-PID.log -h HOST -c CONF SEQ-PID.newarch
+Waiting for new pmlogger to start ... done
+New pmlogger status ...
+pmlogger [PID] on host HOST is logging metrics from host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATESTAMP
+log volume 0
+log size BYTES
+
+=== check old pmlogger has gone ===
+
+=== check what's in the new log ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATESTAMP
+ ending DATESTAMP
+
+Descriptions for Metrics in the Log ...
+PMID: 2.0.8 (pmcd.control.register)
+ Data Type: 32-bit int InDom: 2.2 0x800002
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 2.2
+TIMESTAMP 16 instances
+ 0 or "0"
+ 1 or "1"
+ 2 or "2"
+ 3 or "3"
+ 4 or "4"
+ 5 or "5"
+ 6 or "6"
+ 7 or "7"
+ 8 or "8"
+ 9 or "9"
+ 10 or "10"
+ 11 or "11"
+ 12 or "12"
+ 13 or "13"
+ 14 or "14"
+ 15 or "15"
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 2.0.8 (pmcd.control.register): inst [0 or "0"] value INTEGER
diff --git a/qa/185 b/qa/185
new file mode 100755
index 0000000..b2667ec
--- /dev/null
+++ b/qa/185
@@ -0,0 +1,141 @@
+#! /bin/sh
+# PCP QA Test No. 185
+# pmnewlog config save/restore checks
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# create our own tmpdir to ensure we can write to it
+tmpdir=/tmp/$seq-$$
+rm -rf $tmpdir
+mkdir -p $tmpdir/pmlogger
+export PCP_TMP_DIR=$tmpdir
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+tmp=$tmpdir/$$
+signal=$PCP_BINADM_DIR/pmsignal
+trap "$signal -a pmlogger >/dev/null 2>&1; cd; rm -rf $tmpdir; exit" 0 1 2 3 15
+
+_filter_dumplog()
+{
+ sed \
+ -e '/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/s//TIMESTAMP/' \
+ -e 's/^\(log started *\).*/\1DATESTAMP/' \
+ -e 's/^\(last log entry *\).*/\1DATESTAMP/' \
+ -e 's/^\(current time *\).*/\1DATESTAMP/' \
+ -e 's/^\( *commencing *\).*/\1DATESTAMP/' \
+ -e 's/^\( *ending *\).*/\1DATESTAMP/' \
+ -e '/^Performance metrics/s/host .*/host HOST/'
+}
+
+_filter_newlog()
+{
+ sed \
+ -e 's/pid [0-9][0-9]*/pid PID/' \
+ -e '/ \/usr\/pcp\/bin\/pmlogger /s/.*/-- ps line removed --/' \
+ -e '/^\/usr\/pcp\/bin\/pmlogger/s/[0-9][0-9]*/PID/g' \
+ -e '/configuration file saved as/s/[0-9][0-9]*/PID/g' \
+ -e 's/\[[0-9][0-9]*]/[PID]/' \
+ -e 's/ host [^ ]*/ host HOST/g' \
+ -e '/^Getting logged/s/host HOST/host name/' \
+ -e 's/ -h [^ ]*/ -h HOST/g' \
+ -e 's/ SIG.* done/ signal stuff ... done/' \
+ -e '/Error \[<stdin>,/d' \
+ -e '/Warning \[<stdin>,/d' \
+ -e '/Not connected to any/d' \
+ -e '/Logging statement ignored/d' \
+ -e '/Problem with lookup for metric/d' \
+ -e '/Reason: Unknown metric name/d' \
+ -e '/Try again. Information not currently available/d' \
+ -e '/Unknown or illegal metric identifier/d' \
+ -e '/Metric not supported by this version/d' \
+ -e '/^log size/s/[0-9][0-9]*/BYTES/' \
+ -e '/^Contacting pmlogger /d' \
+ -e '/^pmnewlog: Warning: errors from talking /d' \
+ -e '/^continuing .../d' \
+ -e '/New pmlogger configuration file saved /d' \
+ -e '/^[ ]*$/d'
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.config
+# singular instances
+log mandatory off sample.control
+log mandatory on 10 sec sample.load
+log advisory on once sample.seconds
+# multiple instances
+log mandatory off sample.colour
+log mandatory on 20 sec sample.bin
+log advisory on 1 min sample.bucket
+End-of-File
+rm -f $tmp.arch.*
+pmlogger -L -c $tmp.config -l $tmp.log $tmp.arch &
+pid=$!
+sleep 1
+
+echo
+echo "=== pmnewlog #1 =="
+rm -f $tmp.arch.1.*
+# ps $PCP_PS_ALL_FLAGS | grep pmlogger
+# echo "pid=$pid"
+pmnewlog -C $tmp.config.1 -p $pid $tmp.arch.1 2>&1 >$tmp.out
+_filter_newlog <$tmp.out | _filter_dumplog >$tmp.check
+if [ -s $tmp.check ]
+then
+ echo "Unexpected output!"
+ echo
+ echo "Filtered residual ..."
+ cat $tmp.check
+ echo
+ echo "Unfiltered output from pmnewlog ..."
+ cat $tmp.out
+else
+ echo "Nothing unexpected in the pmnewlog output"
+fi
+
+echo
+echo "=== config differences ==="
+diff $tmp.config $tmp.config.1
+
+echo
+echo "=== pmnewlog #2 =="
+rm -f $tmp.arch.2.*
+
+hostname=`hostname`
+pid=`ps $PCP_PS_ALL_FLAGS \
+ | tee $tmp.ps \
+ | grep -v grep \
+ | $PCP_AWK_PROG "/pmlogger.*-h $hostname.*-c \/tmp\// "'{print $2}'`
+# ps $PCP_PS_ALL_FLAGS | grep pmlogger
+# echo "pid=$pid"
+if [ "X$pid" = X ]
+then
+ echo "Error: no pid matching \"pmlogger.*-h `hostname`.*-c /tmp/\" from ps!"
+ cat $tmp.ps
+ exit 1
+fi
+
+pmnewlog -C $tmp.config.2 -p $pid $tmp.arch.2 2>&1 >$tmp.out
+_filter_newlog <$tmp.out | _filter_dumplog >$tmp.check
+if [ -s $tmp.check ]
+then
+ echo "Unexpected output!"
+ echo
+ echo "Filtered residual ..."
+ cat $tmp.check
+ echo
+ echo "Unfiltered output from pmnewlog ..."
+ cat $tmp.out
+else
+ echo "Nothing unexpected in the pmnewlog output"
+fi
+
+echo
+echo "=== config differences (expect none!) ==="
+diff $tmp.config.1 $tmp.config.2
diff --git a/qa/185.out b/qa/185.out
new file mode 100644
index 0000000..7a87e8c
--- /dev/null
+++ b/qa/185.out
@@ -0,0 +1,43 @@
+QA output created by 185
+
+=== pmnewlog #1 ==
+Nothing unexpected in the pmnewlog output
+
+=== config differences ===
+1d0
+< # singular instances
+3d1
+< log mandatory on 10 sec sample.load
+5,8c3,24
+< # multiple instances
+< log mandatory off sample.colour
+< log mandatory on 20 sec sample.bin
+< log advisory on 1 min sample.bucket
+---
+> log mandatory on 10 sec sample.load
+> log mandatory off sample.colour ["red"]
+> log mandatory off sample.colour ["green"]
+> log mandatory off sample.colour ["blue"]
+> log mandatory on 20 sec sample.bin ["bin-100"]
+> log mandatory on 20 sec sample.bin ["bin-200"]
+> log mandatory on 20 sec sample.bin ["bin-300"]
+> log mandatory on 20 sec sample.bin ["bin-400"]
+> log mandatory on 20 sec sample.bin ["bin-500"]
+> log mandatory on 20 sec sample.bin ["bin-600"]
+> log mandatory on 20 sec sample.bin ["bin-700"]
+> log mandatory on 20 sec sample.bin ["bin-800"]
+> log mandatory on 20 sec sample.bin ["bin-900"]
+> log advisory on 1 min sample.bucket ["bin-100"]
+> log advisory on 1 min sample.bucket ["bin-200"]
+> log advisory on 1 min sample.bucket ["bin-300"]
+> log advisory on 1 min sample.bucket ["bin-400"]
+> log advisory on 1 min sample.bucket ["bin-500"]
+> log advisory on 1 min sample.bucket ["bin-600"]
+> log advisory on 1 min sample.bucket ["bin-700"]
+> log advisory on 1 min sample.bucket ["bin-800"]
+> log advisory on 1 min sample.bucket ["bin-900"]
+
+=== pmnewlog #2 ==
+Nothing unexpected in the pmnewlog output
+
+=== config differences (expect none!) ===
diff --git a/qa/186 b/qa/186
new file mode 100755
index 0000000..e48dad3
--- /dev/null
+++ b/qa/186
@@ -0,0 +1,38 @@
+#! /bin/sh
+# PCP QA Test No. 186
+# pmlogextract error?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+if [ $PCP_VER -lt 3600 ]
+then
+ arch=src/951127.23.01
+else
+ arch=src/951127.23.01_v2
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== merge ==="
+pmlogextract $arch $tmp
+
+echo
+echo "=== cmp files ==="
+for x in meta 0
+do
+ echo $x:
+ od -x $arch.$x \
+ | $PCP_AWK_PROG 'NR == 1 { print $1,$2,$3,$4,$5,".... .PID",$8,$9 }' >$tmp.input.hex
+ od -x $tmp.$x \
+ | $PCP_AWK_PROG 'NR == 1 { print $1,$2,$3,$4,$5,".... .PID",$8,$9 }' >$tmp.output.hex
+ diff -c $tmp.input.hex $tmp.output.hex
+done
diff --git a/qa/186.out b/qa/186.out
new file mode 100644
index 0000000..5dbc029
--- /dev/null
+++ b/qa/186.out
@@ -0,0 +1,6 @@
+QA output created by 186
+=== merge ===
+
+=== cmp files ===
+meta:
+0:
diff --git a/qa/187 b/qa/187
new file mode 100755
index 0000000..fd67d72
--- /dev/null
+++ b/qa/187
@@ -0,0 +1,135 @@
+#! /bin/sh
+# PCP QA Test No. 187
+# for bug #327288 - $PCP_RC_DIR/pcp blows away $PCP_TMP_DIR/pmlogger entries
+#
+# Note ... this will be a "sometimes" failure ... requires special
+# combinations of pids such that sort != sort -n and comm gets confused
+# $PCP_RC_DIR/pcp
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+sts=0
+trap "$sudo rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+rm -f $seq.full
+
+_burn_pids()
+{
+ # burn off 1024 pids
+ #
+ for i in 1 2 3 4 5 6 7 8
+ do
+ for j in 1 2 3 4 5 6 7 8
+ do
+ for k in 1 2 3 4 5 6 7 8
+ do
+ for l in 1 2
+ do
+ true
+ done
+ done
+ done
+ done
+}
+
+_check()
+{
+ ( echo "this" $this_pid;
+ echo "other" $other_pid;
+ echo "other-fqdn" $otherfqdn_pid; ) \
+ | while read tag pid
+ do
+ $PCP_ECHO_PROG $PCP_ECHO_N "map file for $tag host""$PCP_ECHO_C"
+ if [ -f $PCP_TMP_DIR/pmlogger/$pid ]
+ then
+ $PCP_ECHO_PROG " present"
+ else
+ $PCP_ECHO_PROG $PCP_ECHO_N " missing ... ""$PCP_ECHO_C"
+
+ if [ "$tag" = this ]
+ then
+ $PCP_ECHO_PROG "expected for this host when PMCD killed"
+ else
+ $PCP_ECHO_PROG "NOT EXPECTED"
+ echo "pid=$pid, $PCP_TMP_DIR/pmlogger contains"
+ ls -l $PCP_TMP_DIR/pmlogger
+ echo "pmlogger processes ..."
+ ps $PCP_PS_ALL_FLAGS | grep pmlogger
+ echo "pmlogger log file for missing one ..."
+ cat $tmp.$pid
+ fi
+ fi
+ done
+}
+
+otherhost=`./getpmcdhosts -L -n 1`
+[ -z "$otherhost" ] && _notrun "Cannot find a remote host running pmcd"
+echo "otherhost=$otherhost" >>$seq.full
+otherip=`_host_to_ipaddr $otherhost`
+if [ -z "$otherip" ]
+then
+ echo "Arrgh ... cannot get IP addr for otherhost=$otherhost"
+ sts=1
+ exit
+fi
+echo "otherip=$otherip" >>$seq.full
+
+# real QA test starts here
+_start_up_pmlogger -L -c /dev/null -l $tmp.log1 -s1 $tmp.this >/dev/null 2>&1
+this_pid=$pid
+echo "this logger pid=$this_pid" >>$seq.full
+_wait_for_pmlogger $this_pid $tmp.log1
+$sudo mv $tmp.log1 $tmp.$this_pid
+
+trap "$signal $this_pid $other_pid $otherfqdn_pid >/dev/null 2>&1; wait; $sudo rm -fr $tmp.*; exit \$sts" 0 1 2 3 15
+
+_burn_pids
+
+_start_up_pmlogger -h $otherhost -L -c /dev/null -l $tmp.log2 -s1 $tmp.other >/dev/null 2>&1
+other_pid=$pid
+echo "other host=$otherhost logger pid=$other_pid" >>$seq.full
+_wait_for_pmlogger $other_pid $tmp.log2
+$sudo mv $tmp.log2 $tmp.$other_pid
+
+_burn_pids
+
+_start_up_pmlogger -h $otherip -L -c /dev/null -l $tmp.log3 -s1 $tmp.other.fqdn >/dev/null 2>&1
+otherfqdn_pid=$pid
+echo "other fqdnhost=$otherip logger pid=$otherfqdn_pid" >>$seq.full
+_wait_for_pmlogger $otherfqdn_pid $tmp.log3
+$sudo mv $tmp.log3 $tmp.$otherfqdn_pid
+
+# check entries
+_check
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+# check again
+_check
+
+echo >>$seq.full
+echo "=== this log ===" >>$seq.full
+cat $tmp.$this_pid >>$seq.full
+
+
+echo >>$seq.full
+echo "=== other log ===" >>$seq.full
+cat $tmp.$other_pid >>$seq.full
+
+
+echo >>$seq.full
+echo "=== otherfqdn log ===" >>$seq.full
+cat $tmp.$otherfqdn_pid >>$seq.full
+
diff --git a/qa/187.out b/qa/187.out
new file mode 100644
index 0000000..48fef19
--- /dev/null
+++ b/qa/187.out
@@ -0,0 +1,10 @@
+QA output created by 187
+map file for this host present
+map file for other host present
+map file for other-fqdn host present
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+map file for this host missing ... expected for this host when PMCD killed
+map file for other host present
+map file for other-fqdn host present
diff --git a/qa/188 b/qa/188
new file mode 100755
index 0000000..522d86c
--- /dev/null
+++ b/qa/188
@@ -0,0 +1,117 @@
+#! /bin/sh
+# PCP QA Test No. 188
+# exercise __pmMktime
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = irix ] ; then
+ ln $seq.irix $seq.out
+elif [ $PCP_PLATFORM = linux ] ; then
+ # Linux is all over the shop here!
+ #
+ # History (linux version of $seq.out)
+ # glibc-2.3.3-98.* SuSE SLES9
+ #
+ # History (irix version of $seq.out)
+ # glibc-2.3.3-27 RedHat Fedora Core 2
+ #
+ if [ -f /etc/SuSE-release ]
+ then
+ case `cat /etc/SuSE-release`
+ in
+ 'SUSE LINUX Enterprise Server 9 '*|\
+ 'SUSE Linux Enterprise Server 10 '*|\
+ 'SUSE Linux Enterprise Server 11 '*|\
+ 'openSUSE 11'*|\
+ 'openSUSE 12'*)
+ ln $seq.linux $seq.out
+ ;;
+ esac
+ elif [ -f /etc/redhat-release ]
+ then
+ case `cat /etc/redhat-release`
+ in
+ 'Fedora Core release 2 '*)
+ ln $seq.irix $seq.out
+ ;;
+ 'Fedora Core release 6 '*)
+ ln $seq.linux.fc6 $seq.out
+ ;;
+ 'Fedora release 7'*)
+ ln $seq.linux.fc6 $seq.out
+ ;;
+ *)
+ ln $seq.linux $seq.out
+ ;;
+ esac
+ elif [ -f /etc/debian_version ]
+ then
+ ln $seq.linux $seq.out
+ fi
+ if [ ! -f $seq.out ]
+ then
+ # this is some old folklore ... better to handle in the explicit
+ # case above if possible
+ #
+ if which rpm >/dev/null 2>&1
+ then
+ case `rpm -q glibc`
+ in
+ glibc-1.*|glibc-2.[01].*|glibc-2.2.[0-4]-*|glibc-2.3.3-*)
+ ln $seq.linux $seq.out
+ ;;
+ *)
+ ln $seq.irix $seq.out
+ ;;
+ esac
+ elif which emerge >/dev/null 2>&1
+ then
+ # looking for a line like ...
+ # sys-libs/glibc-2.12.2 was built with the following:
+ version="`emerge --info glibc | sed -n -e '/was built with/{
+s/ was built with.*//
+s/.*\///
+p
+}'`"
+ case "$version"
+ in
+ glibc-2\.1[23][-.]*)
+ ln $seq.linux $seq.out
+ ;;
+ *)
+ echo "Arrgh ... don't know what to do with glibc version $version"
+ exit 1
+ ;;
+ esac
+ else
+ echo "Arrg ... don't know how to determine glibc version"
+ exit 1
+ fi
+ fi
+elif [ $PCP_PLATFORM = darwin ]
+then
+ ln $seq.darwin $seq.out
+elif [ $PCP_PLATFORM = solaris ]
+then
+ ln $seq.solaris $seq.out
+fi
+
+sts=0
+trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+
+# real QA test starts here
+
+# dodge daylight saving nonsense
+#
+TZ=EST-11; export TZ
+
+src/xmktime
diff --git a/qa/188.darwin b/qa/188.darwin
new file mode 100644
index 0000000..352e76f
--- /dev/null
+++ b/qa/188.darwin
@@ -0,0 +1,69 @@
+QA output created by 188
+standard libc routines
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 19:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 19:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 13:34:22 1996
++3 months -> 832818862 Thu May 23 13:34:22 1996
+
+pmNewZone("EST-11EST-10,86/2:00,303/2:00")
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 19:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 18:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 12:34:22 1996
++3 months -> 832818862 Thu May 23 12:34:22 1996
+
+pmNewZone("UTC")
+initial 28800 -> 28800 Thu Jan 1 08:00:00 1970
+-3 months -> -7920000 Wed Oct 1 08:00:00 1969
+-2 months -> -5241600 Sat Nov 1 08:00:00 1969
+-1 months -> -2649600 Mon Dec 1 08:00:00 1969
++1 months -> 2707200 Sun Feb 1 08:00:00 1970
++2 months -> 5126400 Sun Mar 1 08:00:00 1970
++3 months -> 7804800 Wed Apr 1 08:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 02:34:22 1996
+-3 months -> 817094062 Thu Nov 23 02:34:22 1995
+-2 months -> 819686062 Sat Dec 23 02:34:22 1995
+-1 months -> 822364462 Tue Jan 23 02:34:22 1996
++1 months -> 827548462 Sat Mar 23 02:34:22 1996
++2 months -> 830226862 Tue Apr 23 02:34:22 1996
++3 months -> 832818862 Thu May 23 02:34:22 1996
+
+pmNewZone("PST7PDT7")
+initial 28800 -> 28800 Thu Jan 1 01:00:00 1970
+-3 months -> -7920000 Wed Oct 1 01:00:00 1969
+-2 months -> -5241600 Sat Nov 1 01:00:00 1969
+-1 months -> -2649600 Mon Dec 1 01:00:00 1969
++1 months -> 2707200 Sun Feb 1 01:00:00 1970
++2 months -> 5126400 Sun Mar 1 01:00:00 1970
++3 months -> 7804800 Wed Apr 1 01:00:00 1970
+
+initial 825042862 -> 825042862 Thu Feb 22 19:34:22 1996
+-3 months -> 817094062 Wed Nov 22 19:34:22 1995
+-2 months -> 819686062 Fri Dec 22 19:34:22 1995
+-1 months -> 822364462 Mon Jan 22 19:34:22 1996
++1 months -> 827548462 Fri Mar 22 19:34:22 1996
++2 months -> 830226862 Mon Apr 22 19:34:22 1996
++3 months -> 832818862 Wed May 22 19:34:22 1996
+
diff --git a/qa/188.irix b/qa/188.irix
new file mode 100644
index 0000000..745a6ac
--- /dev/null
+++ b/qa/188.irix
@@ -0,0 +1,69 @@
+QA output created by 188
+standard libc routines
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -1 Thu Jan 1 10:59:59 1970
+-2 months -> -1 Thu Jan 1 10:59:59 1970
+-1 months -> -1 Thu Jan 1 10:59:59 1970
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 19:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 13:34:22 1996
++3 months -> 832818862 Thu May 23 13:34:22 1996
+
+pmNewZone("EST-11EST-10,86/2:00,303/2:00")
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -1 Thu Jan 1 10:59:59 1970
+-2 months -> -1 Thu Jan 1 10:59:59 1970
+-1 months -> -1 Thu Jan 1 10:59:59 1970
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 18:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 12:34:22 1996
++3 months -> 832818862 Thu May 23 12:34:22 1996
+
+pmNewZone("UTC")
+initial 28800 -> 28800 Thu Jan 1 08:00:00 1970
+-3 months -> -1 Wed Dec 31 23:59:59 1969
+-2 months -> -1 Wed Dec 31 23:59:59 1969
+-1 months -> -1 Wed Dec 31 23:59:59 1969
++1 months -> 2707200 Sun Feb 1 08:00:00 1970
++2 months -> 5126400 Sun Mar 1 08:00:00 1970
++3 months -> 7804800 Wed Apr 1 08:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 02:34:22 1996
+-3 months -> 817094062 Thu Nov 23 02:34:22 1995
+-2 months -> 819686062 Sat Dec 23 02:34:22 1995
+-1 months -> 822364462 Tue Jan 23 02:34:22 1996
++1 months -> 827548462 Sat Mar 23 02:34:22 1996
++2 months -> 830226862 Tue Apr 23 02:34:22 1996
++3 months -> 832818862 Thu May 23 02:34:22 1996
+
+pmNewZone("PST8PDT7")
+initial 28800 -> 28800 Thu Jan 1 00:00:00 1970
+-3 months -> -1 Wed Dec 31 15:59:59 1969
+-2 months -> -1 Wed Dec 31 15:59:59 1969
+-1 months -> -1 Wed Dec 31 15:59:59 1969
++1 months -> 2707200 Sun Feb 1 00:00:00 1970
++2 months -> 5126400 Sun Mar 1 00:00:00 1970
++3 months -> 7804800 Wed Apr 1 00:00:00 1970
+
+initial 825042862 -> 825042862 Thu Feb 22 18:34:22 1996
+-3 months -> 817094062 Wed Nov 22 18:34:22 1995
+-2 months -> 819686062 Fri Dec 22 18:34:22 1995
+-1 months -> 822364462 Mon Jan 22 18:34:22 1996
++1 months -> 827548462 Fri Mar 22 18:34:22 1996
++2 months -> 830226862 Mon Apr 22 19:34:22 1996
++3 months -> 832818862 Wed May 22 19:34:22 1996
+
diff --git a/qa/188.linux b/qa/188.linux
new file mode 100644
index 0000000..352e76f
--- /dev/null
+++ b/qa/188.linux
@@ -0,0 +1,69 @@
+QA output created by 188
+standard libc routines
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 19:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 19:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 13:34:22 1996
++3 months -> 832818862 Thu May 23 13:34:22 1996
+
+pmNewZone("EST-11EST-10,86/2:00,303/2:00")
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 19:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 18:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 12:34:22 1996
++3 months -> 832818862 Thu May 23 12:34:22 1996
+
+pmNewZone("UTC")
+initial 28800 -> 28800 Thu Jan 1 08:00:00 1970
+-3 months -> -7920000 Wed Oct 1 08:00:00 1969
+-2 months -> -5241600 Sat Nov 1 08:00:00 1969
+-1 months -> -2649600 Mon Dec 1 08:00:00 1969
++1 months -> 2707200 Sun Feb 1 08:00:00 1970
++2 months -> 5126400 Sun Mar 1 08:00:00 1970
++3 months -> 7804800 Wed Apr 1 08:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 02:34:22 1996
+-3 months -> 817094062 Thu Nov 23 02:34:22 1995
+-2 months -> 819686062 Sat Dec 23 02:34:22 1995
+-1 months -> 822364462 Tue Jan 23 02:34:22 1996
++1 months -> 827548462 Sat Mar 23 02:34:22 1996
++2 months -> 830226862 Tue Apr 23 02:34:22 1996
++3 months -> 832818862 Thu May 23 02:34:22 1996
+
+pmNewZone("PST7PDT7")
+initial 28800 -> 28800 Thu Jan 1 01:00:00 1970
+-3 months -> -7920000 Wed Oct 1 01:00:00 1969
+-2 months -> -5241600 Sat Nov 1 01:00:00 1969
+-1 months -> -2649600 Mon Dec 1 01:00:00 1969
++1 months -> 2707200 Sun Feb 1 01:00:00 1970
++2 months -> 5126400 Sun Mar 1 01:00:00 1970
++3 months -> 7804800 Wed Apr 1 01:00:00 1970
+
+initial 825042862 -> 825042862 Thu Feb 22 19:34:22 1996
+-3 months -> 817094062 Wed Nov 22 19:34:22 1995
+-2 months -> 819686062 Fri Dec 22 19:34:22 1995
+-1 months -> 822364462 Mon Jan 22 19:34:22 1996
++1 months -> 827548462 Fri Mar 22 19:34:22 1996
++2 months -> 830226862 Mon Apr 22 19:34:22 1996
++3 months -> 832818862 Wed May 22 19:34:22 1996
+
diff --git a/qa/188.linux.fc6 b/qa/188.linux.fc6
new file mode 100644
index 0000000..6e926c9
--- /dev/null
+++ b/qa/188.linux.fc6
@@ -0,0 +1,69 @@
+QA output created by 188
+standard libc routines
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 19:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 19:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 13:34:22 1996
++3 months -> 832818862 Thu May 23 13:34:22 1996
+
+pmNewZone("EST-11EST-10,86/2:00,303/2:00")
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 19:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 18:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 12:34:22 1996
++3 months -> 832818862 Thu May 23 12:34:22 1996
+
+pmNewZone("UTC")
+initial 28800 -> 28800 Thu Jan 1 08:00:00 1970
+-3 months -> -7920000 Wed Oct 1 08:00:00 1969
+-2 months -> -5241600 Sat Nov 1 08:00:00 1969
+-1 months -> -2649600 Mon Dec 1 08:00:00 1969
++1 months -> 2707200 Sun Feb 1 08:00:00 1970
++2 months -> 5126400 Sun Mar 1 08:00:00 1970
++3 months -> 7804800 Wed Apr 1 08:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 02:34:22 1996
+-3 months -> 817094062 Thu Nov 23 02:34:22 1995
+-2 months -> 819686062 Sat Dec 23 02:34:22 1995
+-1 months -> 822364462 Tue Jan 23 02:34:22 1996
++1 months -> 827548462 Sat Mar 23 02:34:22 1996
++2 months -> 830226862 Tue Apr 23 02:34:22 1996
++3 months -> 832818862 Thu May 23 02:34:22 1996
+
+pmNewZone("PST8PDT7")
+initial 28800 -> 28800 Thu Jan 1 00:00:00 1970
+-3 months -> -7920000 Wed Oct 1 01:00:00 1969
+-2 months -> -5241600 Sat Nov 1 00:00:00 1969
+-1 months -> -2649600 Mon Dec 1 00:00:00 1969
++1 months -> 2707200 Sun Feb 1 00:00:00 1970
++2 months -> 5126400 Sun Mar 1 00:00:00 1970
++3 months -> 7804800 Wed Apr 1 00:00:00 1970
+
+initial 825042862 -> 825042862 Thu Feb 22 18:34:22 1996
+-3 months -> 817094062 Wed Nov 22 18:34:22 1995
+-2 months -> 819686062 Fri Dec 22 18:34:22 1995
+-1 months -> 822364462 Mon Jan 22 18:34:22 1996
++1 months -> 827548462 Fri Mar 22 18:34:22 1996
++2 months -> 830226862 Mon Apr 22 19:34:22 1996
++3 months -> 832818862 Wed May 22 19:34:22 1996
+
diff --git a/qa/188.solaris b/qa/188.solaris
new file mode 100644
index 0000000..70da664
--- /dev/null
+++ b/qa/188.solaris
@@ -0,0 +1,69 @@
+QA output created by 188
+standard libc routines
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 19:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 19:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 13:34:22 1996
++3 months -> 832818862 Thu May 23 13:34:22 1996
+
+pmNewZone("EST-11EST-10,86/2:00,303/2:00")
+initial 28800 -> 28800 Thu Jan 1 19:00:00 1970
+-3 months -> -7920000 Wed Oct 1 18:00:00 1969
+-2 months -> -5241600 Sat Nov 1 19:00:00 1969
+-1 months -> -2649600 Mon Dec 1 19:00:00 1969
++1 months -> 2707200 Sun Feb 1 19:00:00 1970
++2 months -> 5126400 Sun Mar 1 19:00:00 1970
++3 months -> 7804800 Wed Apr 1 18:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 13:34:22 1996
+-3 months -> 817094062 Thu Nov 23 13:34:22 1995
+-2 months -> 819686062 Sat Dec 23 13:34:22 1995
+-1 months -> 822364462 Tue Jan 23 13:34:22 1996
++1 months -> 827548462 Sat Mar 23 13:34:22 1996
++2 months -> 830226862 Tue Apr 23 12:34:22 1996
++3 months -> 832818862 Thu May 23 12:34:22 1996
+
+pmNewZone("UTC")
+initial 28800 -> 28800 Thu Jan 1 08:00:00 1970
+-3 months -> -7920000 Wed Oct 1 08:00:00 1969
+-2 months -> -5241600 Sat Nov 1 08:00:00 1969
+-1 months -> -2649600 Mon Dec 1 08:00:00 1969
++1 months -> 2707200 Sun Feb 1 08:00:00 1970
++2 months -> 5126400 Sun Mar 1 08:00:00 1970
++3 months -> 7804800 Wed Apr 1 08:00:00 1970
+
+initial 825042862 -> 825042862 Fri Feb 23 02:34:22 1996
+-3 months -> 817094062 Thu Nov 23 02:34:22 1995
+-2 months -> 819686062 Sat Dec 23 02:34:22 1995
+-1 months -> 822364462 Tue Jan 23 02:34:22 1996
++1 months -> 827548462 Sat Mar 23 02:34:22 1996
++2 months -> 830226862 Tue Apr 23 02:34:22 1996
++3 months -> 832818862 Thu May 23 02:34:22 1996
+
+pmNewZone("PST7PDT7")
+initial 28800 -> 28800 Thu Jan 1 01:00:00 1970
+-3 months -> -7920000 Wed Oct 1 01:00:00 1969
+-2 months -> -5241600 Sat Nov 1 01:00:00 1969
+-1 months -> -2649600 Mon Dec 1 01:00:00 1969
++1 months -> 2707200 Sun Feb 1 01:00:00 1970
++2 months -> 5126400 Sun Mar 1 01:00:00 1970
++3 months -> 7804800 Wed Apr 1 01:00:00 1970
+
+initial 825042862 -> 825042862 Thu Feb 22 19:34:22 1996
+-3 months -> 817094062 Wed Nov 22 19:34:22 1995
+-2 months -> 819686062 Fri Dec 22 19:34:22 1995
+-1 months -> 822364462 Mon Jan 22 19:34:22 1996
++1 months -> 827548462 Fri Mar 22 19:34:22 1996
++2 months -> 830226862 Mon Apr 22 19:34:22 1996
++3 months -> 832818862 Wed May 22 19:34:22 1996
+
diff --git a/qa/189 b/qa/189
new file mode 100755
index 0000000..4f058b9
--- /dev/null
+++ b/qa/189
@@ -0,0 +1,99 @@
+#! /bin/sh
+# PCP QA Test No. 189
+# pmie does not wait() for children ... defunct processes accummulate
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+_numchildren()
+{
+ $PCP_AWK_PROG -v pid=$pmie_pid '
+ $5 == pid { n++ ; pidlist[n] = $4; next}
+ $1 == "----" {
+ # output: <num> <pid> <pid>...
+ printf("%d ", n);
+ for(i=1;i<=n;i++)
+ printf("%d ", pidlist[i]);
+ printf("\n");
+ n = 0
+ }'
+}
+
+# real QA test starts here
+tolerance=10 # allow only one round of 100msec children to accumulate
+
+cat <<End-of-File >$tmp.pmie
+delta = 100 msec;
+sample.long.ten >= 10 -> shell "date >>$tmp.log";
+delta = 1 sec;
+sample.long.ten >= 10 -> shell "ps -el >>$tmp.ps; echo '----' >>$tmp.ps";
+End-of-File
+
+pmie -T 10 $tmp.pmie >$tmp.out 2>$tmp.err &
+pmie_pid=$!
+wait $pmie_pid
+cat $tmp.out $tmp.err | _show_pmie_errors
+
+echo "== stdout ==" >$seq.full
+cat $tmp.out >>$seq.full
+echo >>$seq.full
+echo "== stderr ==" >>$seq.full
+cat $tmp.err >>$seq.full
+
+_numchildren < $tmp.ps > $tmp.num
+max=`cut -d' ' -f1 < $tmp.num | LC_COLLATE=POSIX sort -nr | head -1 | sed -e 's/ *//g'`
+
+# give the kernel a chance to catch its breath
+#
+sleep 2
+
+ps -el > $tmp.ps.final
+
+max=`cut -d' ' -f1 < $tmp.num | LC_COLLATE=POSIX sort -nr | head -1 | sed -e 's/ *//g'`
+
+if [ "$max" -gt "$tolerance" ]
+then
+ echo "There were too many child processes of pmie left over"
+ echo "In the worst case there were $max child processes"
+ echo "Running 1 second totals:"
+ cat $tmp.num
+ echo "ps output:"
+ cat $tmp.ps
+ # kernel may need more of a chance to catch up!
+ #
+ sleep 5
+fi
+
+# Look for any of the pmie child processes left after pmie death
+# They should all be dead
+cat $tmp.num >>$tmp.psawk
+echo "----" >>$tmp.psawk
+cat $tmp.ps.final >>$tmp.psawk
+$PCP_AWK_PROG < $tmp.psawk '
+ final == 0 {
+ # skip over $1 (num)
+ # chuck all others in pidlist
+ for(i=2;i<=NF;i++)
+ pidlist[$i] = 1;
+ next;
+ }
+ $1 == "----" { final = 1; next }
+ final == 1 {
+ # check if process in final ps is in pidlist
+ if ($4 in pidlist) {
+ printf("process %s (pid=%d) is still alive\n",
+ $14, $4);
+ }
+ }
+'
+
+exit 0
diff --git a/qa/189.out b/qa/189.out
new file mode 100644
index 0000000..2db17d5
--- /dev/null
+++ b/qa/189.out
@@ -0,0 +1,2 @@
+QA output created by 189
+pmie: note - evaluator exiting
diff --git a/qa/190 b/qa/190
new file mode 100755
index 0000000..4fa6fdf
--- /dev/null
+++ b/qa/190
@@ -0,0 +1,63 @@
+#!/bin/sh
+# PCP QA Test No. 190 (formerly 1003, and before that 383)
+# test bug in pmConvScale(3)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# we really on can rely on 6 digits of precision ..
+#
+_filter()
+{
+ sed \
+ -e 's/123456...........\.[0-9]/123456???????????.?/g' \
+ -e 's/123456..........\.[0-9]/123456??????????.?/g' \
+ -e 's/123456.........\.[0-9]/123456?????????.?/g' \
+ -e 's/123456........\.[0-9]/123456????????.?/g' \
+ -e 's/123456.......\.[0-9]/123456???????.?/g' \
+ -e 's/123456......\.[0-9]/123456??????.?/g' \
+ -e 's/123456.....\.[0-9]/123456?????.?/g' \
+ -e 's/123456....\.[0-9]/123456????.?/g' \
+ -e 's/123456...\.[0-9]/123456???.?/g' \
+ -e 's/123456..\.[0-9]/123456??.?/g' \
+ -e 's/123456.\.[0-9]/123456?.?/g'\
+ -e 's/123456\.[0-9]/123456.?/g'
+}
+
+# real QA test starts here
+echo "=== the dimension is NONE case ==="
+src/pmconvscale | _filter
+status=`expr $status + $?`
+
+echo
+echo "=== the dimension is COUNT case ==="
+src/pmconvscale c | _filter
+status=`expr $status + $?`
+
+echo
+echo "=== the dimension is SPACE case ==="
+src/pmconvscale s | _filter
+status=`expr $status + $?`
+
+echo
+echo "=== the dimension is TIME case ==="
+src/pmconvscale t | _filter
+status=`expr $status + $?`
+
+echo
+echo "=== the dimension is SPACE/sec case ==="
+src/pmconvscale r | _filter
+status=`expr $status + $?`
+
+exit
diff --git a/qa/190.out b/qa/190.out
new file mode 100644
index 0000000..c1dcf04
--- /dev/null
+++ b/qa/190.out
@@ -0,0 +1,96 @@
+QA output created by 190
+=== the dimension is NONE case ===
+scaleCount=1 old: 123456??.? "" new: 123456?.? "x 10"
+scaleCount=2 old: 123456?.? "x 10" new: 123456.? "x 10^2"
+scaleCount=3 old: 123456.? "x 10^2" new: 12345.7 "x 10^3"
+scaleCount=4 old: 12345.7 "x 10^3" new: 1234.6 "x 10^4"
+scaleCount=5 old: 1234.6 "x 10^4" new: 123.5 "x 10^5"
+scaleCount=6 old: 123.5 "x 10^5" new: 12.3 "x 10^6"
+scaleCount=7 old: 12.3 "x 10^6" new: 1.2 "x 10^7"
+scaleCount=6 old: 1.2 "x 10^7" new: 12.3 "x 10^6"
+scaleCount=5 old: 12.3 "x 10^6" new: 123.5 "x 10^5"
+scaleCount=4 old: 123.5 "x 10^5" new: 1234.6 "x 10^4"
+scaleCount=3 old: 1234.6 "x 10^4" new: 12345.7 "x 10^3"
+scaleCount=2 old: 12345.7 "x 10^3" new: 123456.? "x 10^2"
+scaleCount=1 old: 123456.? "x 10^2" new: 123456?.? "x 10"
+scaleCount=0 old: 123456?.? "x 10" new: 123456??.? ""
+scaleCount=-1 old: 123456??.? "" new: 123456???.? "x 10^-1"
+scaleCount=-2 old: 123456???.? "x 10^-1" new: 123456????.? "x 10^-2"
+scaleCount=-3 old: 123456????.? "x 10^-2" new: 123456?????.? "x 10^-3"
+scaleCount=-4 old: 123456?????.? "x 10^-3" new: 123456??????.? "x 10^-4"
+scaleCount=-5 old: 123456??????.? "x 10^-4" new: 123456???????.? "x 10^-5"
+scaleCount=-6 old: 123456???????.? "x 10^-5" new: 123456????????.? "x 10^-6"
+scaleCount=-7 old: 123456????????.? "x 10^-6" new: 123456?????????.? "x 10^-7"
+scaleCount=-8 old: 123456?????????.? "x 10^-7" new: 123456??????????.? "x 10^-8"
+scaleCount=-7 old: 123456??????????.? "x 10^-8" new: 123456?????????.? "x 10^-7"
+scaleCount=-6 old: 123456?????????.? "x 10^-7" new: 123456????????.? "x 10^-6"
+scaleCount=-5 old: 123456????????.? "x 10^-6" new: 123456???????.? "x 10^-5"
+scaleCount=-4 old: 123456???????.? "x 10^-5" new: 123456??????.? "x 10^-4"
+scaleCount=-3 old: 123456??????.? "x 10^-4" new: 123456?????.? "x 10^-3"
+scaleCount=-2 old: 123456?????.? "x 10^-3" new: 123456????.? "x 10^-2"
+scaleCount=-1 old: 123456????.? "x 10^-2" new: 123456???.? "x 10^-1"
+scaleCount=0 old: 123456???.? "x 10^-1" new: 123456??.? ""
+
+=== the dimension is COUNT case ===
+scaleCount=1 old: 123456??.? "count" new: 123456?.? "count x 10"
+scaleCount=2 old: 123456?.? "count x 10" new: 123456.? "count x 10^2"
+scaleCount=3 old: 123456.? "count x 10^2" new: 12345.7 "count x 10^3"
+scaleCount=4 old: 12345.7 "count x 10^3" new: 1234.6 "count x 10^4"
+scaleCount=5 old: 1234.6 "count x 10^4" new: 123.5 "count x 10^5"
+scaleCount=6 old: 123.5 "count x 10^5" new: 12.3 "count x 10^6"
+scaleCount=7 old: 12.3 "count x 10^6" new: 1.2 "count x 10^7"
+scaleCount=6 old: 1.2 "count x 10^7" new: 12.3 "count x 10^6"
+scaleCount=5 old: 12.3 "count x 10^6" new: 123.5 "count x 10^5"
+scaleCount=4 old: 123.5 "count x 10^5" new: 1234.6 "count x 10^4"
+scaleCount=3 old: 1234.6 "count x 10^4" new: 12345.7 "count x 10^3"
+scaleCount=2 old: 12345.7 "count x 10^3" new: 123456.? "count x 10^2"
+scaleCount=1 old: 123456.? "count x 10^2" new: 123456?.? "count x 10"
+scaleCount=0 old: 123456?.? "count x 10" new: 123456??.? "count"
+scaleCount=-1 old: 123456??.? "count" new: 123456???.? "count x 10^-1"
+scaleCount=-2 old: 123456???.? "count x 10^-1" new: 123456????.? "count x 10^-2"
+scaleCount=-3 old: 123456????.? "count x 10^-2" new: 123456?????.? "count x 10^-3"
+scaleCount=-4 old: 123456?????.? "count x 10^-3" new: 123456??????.? "count x 10^-4"
+scaleCount=-5 old: 123456??????.? "count x 10^-4" new: 123456???????.? "count x 10^-5"
+scaleCount=-6 old: 123456???????.? "count x 10^-5" new: 123456????????.? "count x 10^-6"
+scaleCount=-7 old: 123456????????.? "count x 10^-6" new: 123456?????????.? "count x 10^-7"
+scaleCount=-8 old: 123456?????????.? "count x 10^-7" new: 123456??????????.? "count x 10^-8"
+scaleCount=-7 old: 123456??????????.? "count x 10^-8" new: 123456?????????.? "count x 10^-7"
+scaleCount=-6 old: 123456?????????.? "count x 10^-7" new: 123456????????.? "count x 10^-6"
+scaleCount=-5 old: 123456????????.? "count x 10^-6" new: 123456???????.? "count x 10^-5"
+scaleCount=-4 old: 123456???????.? "count x 10^-5" new: 123456??????.? "count x 10^-4"
+scaleCount=-3 old: 123456??????.? "count x 10^-4" new: 123456?????.? "count x 10^-3"
+scaleCount=-2 old: 123456?????.? "count x 10^-3" new: 123456????.? "count x 10^-2"
+scaleCount=-1 old: 123456????.? "count x 10^-2" new: 123456???.? "count x 10^-1"
+scaleCount=0 old: 123456???.? "count x 10^-1" new: 123456??.? "count"
+
+=== the dimension is SPACE case ===
+scaleSpace=3 old: 123456??.? "Mbyte" new: 12056.3 "Gbyte"
+scaleSpace=4 old: 12056.3 "Gbyte" new: 11.8 "Tbyte"
+scaleSpace=3 old: 11.8 "Tbyte" new: 12056.3 "Gbyte"
+scaleSpace=2 old: 12056.3 "Gbyte" new: 123456??.? "Mbyte"
+scaleSpace=1 old: 123456??.? "Mbyte" new: 12641974272.0 "Kbyte"
+scaleSpace=0 old: 12641974272.0 "Kbyte" new: 12945381654528.0 "byte"
+scaleSpace=1 old: 12945381654528.0 "byte" new: 12641974272.0 "Kbyte"
+scaleSpace=2 old: 12641974272.0 "Kbyte" new: 123456??.? "Mbyte"
+
+=== the dimension is TIME case ===
+scaleTime=4 old: 123456??.? "sec" new: 205761.3 "min"
+scaleTime=5 old: 205761.3 "min" new: 3429.4 "hour"
+scaleTime=4 old: 3429.4 "hour" new: 205761.3 "min"
+scaleTime=3 old: 205761.3 "min" new: 123456??.? "sec"
+scaleTime=2 old: 123456??.? "sec" new: 123456?????.? "millisec"
+scaleTime=1 old: 123456?????.? "millisec" new: 123456????????.? "microsec"
+scaleTime=0 old: 123456????????.? "microsec" new: 123456???????????.? "nanosec"
+scaleTime=1 old: 123456???????????.? "nanosec" new: 123456????????.? "microsec"
+scaleTime=2 old: 123456????????.? "microsec" new: 123456?????.? "millisec"
+scaleTime=3 old: 123456?????.? "millisec" new: 123456??.? "sec"
+
+=== the dimension is SPACE/sec case ===
+scaleSpace=3 old: 123456??.? "Mbyte / sec" new: 12056.3 "Gbyte / sec"
+scaleSpace=4 old: 12056.3 "Gbyte / sec" new: 11.8 "Tbyte / sec"
+scaleSpace=3 old: 11.8 "Tbyte / sec" new: 12056.3 "Gbyte / sec"
+scaleSpace=2 old: 12056.3 "Gbyte / sec" new: 123456??.? "Mbyte / sec"
+scaleSpace=1 old: 123456??.? "Mbyte / sec" new: 12641974272.0 "Kbyte / sec"
+scaleSpace=0 old: 12641974272.0 "Kbyte / sec" new: 12945381654528.0 "byte / sec"
+scaleSpace=1 old: 12945381654528.0 "byte / sec" new: 12641974272.0 "Kbyte / sec"
+scaleSpace=2 old: 12641974272.0 "Kbyte / sec" new: 123456??.? "Mbyte / sec"
diff --git a/qa/191 b/qa/191
new file mode 100755
index 0000000..91c054d
--- /dev/null
+++ b/qa/191
@@ -0,0 +1,59 @@
+#! /bin/sh
+# PCP QA Test No. 191
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ tee $seq.full \
+ | sed \
+ -e 's/ :[^ ]* / :HOST /' \
+ -e 's/ :HOST @0/ :HOST /' \
+ -e '/(pmie)/s/pmie), .*/pmie), VERSION/' \
+ -e 's/pmie?/pmie>/g' \
+ -e '/^pmie> $/d'
+}
+
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+# real QA test starts here
+cat <<End-of-File >$tmp.rule
+hinv.ncpu > 0
+End-of-File
+
+echo "=== leading white space test ==="
+cat <<End-of-File | pmie -d 2>&1 | _filter
+f $tmp.rule
+l expr_1
+ l expr_1
+ l expr_1
+q
+End-of-File
+
+echo
+echo "=== EOF test ==="
+sleep 1
+( ( pmie -d </dev/null; echo "" ) | _filter ) &
+sleep 2
+echo
+$signal -s TERM $! 2>&1 \
+| sed \
+ -e "s/^$seq: //" \
+ -e "s,^$PCP_BINADM_DIR/pmsignal: ,," \
+ -e 's/no such/No such/' \
+ -e 's/such pid/such process/' \
+ -e 's/kill: ([0-9][0-9]*) - //' \
+ -e 's/kill: [0-9][0-9]*: //' \
+ -e 's/[0-9][0-9]*: kill: //' \
+ -e 's/^line [0-9][0-9]*: //' \
+ -e '/^ *$/d'
diff --git a/qa/191.out b/qa/191.out
new file mode 100644
index 0000000..ff5740e
--- /dev/null
+++ b/qa/191.out
@@ -0,0 +1,43 @@
+QA output created by 191
+=== leading white space test ===
+Performance Co-Pilot Inference Engine (pmie), VERSION
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> expr_1 =
+hinv.ncpu :HOST > 0;
+
+pmie> expr_1 =
+hinv.ncpu :HOST > 0;
+
+pmie> expr_1 =
+hinv.ncpu :HOST > 0;
+
+
+=== EOF test ===
+Performance Co-Pilot Inference Engine (pmie), VERSION
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+
+No such process
diff --git a/qa/192 b/qa/192
new file mode 100755
index 0000000..f600158
--- /dev/null
+++ b/qa/192
@@ -0,0 +1,60 @@
+#! /bin/sh
+# PCP QA Test No. 192
+# sending 2 DESC_REQ PDUs back to back
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+LOCALHOST=`hostname`
+_needclean=true
+status=0
+
+_interrupt()
+{
+ status=1
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_cleanup()
+{
+ if $_needclean
+ then
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+trap "_cleanup" 0
+trap "_interrupt; _cleanup" 1 2 3 15
+
+# real QA test starts here
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+PMCD_REQUEST_TIMEOUT=2; export PMCD_REQUEST_TIMEOUT
+
+src/descreqX2 2>&1 \
+| _filter_pmcd_log
+
+_filter_pmcd_log <$PCP_PMCDLOG_PATH \
+| grep '^->'
diff --git a/qa/192.out b/qa/192.out
new file mode 100644
index 0000000..25c06ba
--- /dev/null
+++ b/qa/192.out
@@ -0,0 +1,9 @@
+QA output created by 192
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+__pmGetPDUX1 -> 0x7005
+__pmGetPDUX2 -> 0x7005
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/193 b/qa/193
new file mode 100755
index 0000000..c4662f0
--- /dev/null
+++ b/qa/193
@@ -0,0 +1,38 @@
+#! /bin/sh
+# PCP QA Test No. 193
+# bogus pdus attacking pmcd causing core dump or looping pmcd
+# pv 935490
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+$sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+
+# real QA test starts here
+src/crashpmcd
+
+cat $PCP_PMCDLOG_PATH >$seq.full
+_filter_pmcd_log <$PCP_PMCDLOG_PATH \
+| sed \
+ -e '1,/ok FD /d' \
+ -e '/ok FD /d' \
+ -e 's/fd=[0-9][0-9]*/fd=N/' \
+ -e '/HandleClientInput/s/client\[[0-9][0-9]*]/client[N]/' \
+ -e 's/len=-1: Connection reset by peer.*/END-OF-FILE/' \
+ -e 's/Connection reset by peer/Broken pipe/' \
+ -e 's/have .*, want .*, got 0/END-OF-FILE/'
+
+# success, all done
+exit
diff --git a/qa/193.out b/qa/193.out
new file mode 100644
index 0000000..ec8b79f
--- /dev/null
+++ b/qa/193.out
@@ -0,0 +1,328 @@
+QA output created by 193
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=-1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=1 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=2 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=3 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=4 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=5 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=6 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=7 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=8 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=9 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=10 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=11 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: PDU hdr: len=0xc type=0x55aa0000
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: PDU hdr: len=0xc type=0x55aa0000
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: PDU hdr: len=0xc type=0x55aa0000
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N data read: END-OF-FILE
+[DATE] pmcd(PID) Error: __pmGetPDU: PDU hdr: len=0xc type=0x55aa0000
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N illegal PDU len=0 in hdr
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=16777216 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=33554432 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=50331648 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=67108864 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=83886080 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=100663296 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=117440512 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=134217728 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=150994944 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=167772160 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=184549376 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=1
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=2
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N hdr read: bad len=3
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
+[DATE] pmcd(PID) Error: __pmGetPDU: fd=N bad PDU len=201326592 in hdr exceeds maximum client PDU size (65536)
diff --git a/qa/194 b/qa/194
new file mode 100755
index 0000000..7f5b7f7
--- /dev/null
+++ b/qa/194
@@ -0,0 +1,34 @@
+#! /bin/sh
+# PCP QA Test No. 194
+# fallout ... initial fix introduced a bug in the timeout path
+# pv 935490
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo rm -f core*
+
+( src/dumb_pmda >$seq.full 2>&1 ) &
+
+sleep 15
+$signal -a -s KILL dumb_pmda >/dev/null 2>&1
+
+wait
+
+_check_core
+
+exit
diff --git a/qa/194.out b/qa/194.out
new file mode 100644
index 0000000..23b3886
--- /dev/null
+++ b/qa/194.out
@@ -0,0 +1 @@
+QA output created by 194
diff --git a/qa/195 b/qa/195
new file mode 100755
index 0000000..9af544a
--- /dev/null
+++ b/qa/195
@@ -0,0 +1,23 @@
+#! /bin/sh
+# PCP QA Test No. 195
+# validate new __pmLogOpen() semantics for base archive name deduction
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/mv-bigbin src/foo src/null src/mv-bigbin.* src/foo.* src/null.*
+do
+ echo
+ echo "=== $arch ==="
+ pmdumplog -l $arch 2>&1 | _filter_pmdumplog
+done
diff --git a/qa/195.out b/qa/195.out
new file mode 100644
index 0000000..734e3f6
--- /dev/null
+++ b/qa/195.out
@@ -0,0 +1,147 @@
+QA output created by 195
+
+=== src/mv-bigbin ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/foo ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/null ===
+pmdumplog: Cannot locate end of archive src/null: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending UNKNOWN
+
+=== src/mv-bigbin.0 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.1 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.2 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.3 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.4 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.5 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.6 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.7 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.8 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.9 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.index ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/mv-bigbin.meta ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/foo.0 ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/foo.index ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/foo.meta ===
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== src/null.0 ===
+pmdumplog: Cannot locate end of archive src/null.0: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending UNKNOWN
+
+=== src/null.index ===
+pmdumplog: Cannot locate end of archive src/null.index: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending UNKNOWN
+
+=== src/null.meta ===
+pmdumplog: Cannot locate end of archive src/null.meta: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending UNKNOWN
diff --git a/qa/196 b/qa/196
new file mode 100755
index 0000000..af9e612
--- /dev/null
+++ b/qa/196
@@ -0,0 +1,100 @@
+#! /bin/sh
+# PCP QA Test No. 196
+#
+# Test pmcd's "-i ipaddr" option
+# Don't expect this one to work away from Melbourne!
+# Need pcpqa remote access to other machines
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_needclean=true
+signal=$PCP_BINADM_DIR/pmsignal
+status=1
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ if $_needclean
+ then
+ _needclean=false
+ $sudo $signal -a -s KILL $PCP_PMCD_PROG
+ $sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ fi
+}
+
+. ./common.check
+
+# real QA test starts here
+
+# This test requires a machine with two network interfaces.
+# gonzo is the only one we have that cut's it.
+#
+host=`hostname`
+if [ X$host != "Xgonzo" ]
+then
+ # if this isn't gonzo, fake it!
+ tail -n +2 196.out
+ status=0
+ exit
+fi
+
+goodif=`grep ptg-gate /etc/hosts | cut -f1`
+badif=`grep gonzo /etc/hosts | cut -f1`
+
+# choose different ports to the standard ones so we don't have to stop/start
+# pmcd.
+#
+PMCD_PORT=4320
+export PMCD_PORT
+
+# Do this in /var/tmp
+#
+cd /var/tmp
+pmcdlog=$tmp.pmcd.log
+if [ -x $PCP_PMCD_PROG ]
+then
+ $PCP_PMCD_PROG -i $goodif -l $pmcdlog >$tmp.pmcd.err 2>1
+else
+ echo "Cannot find pmcd?"
+ exit
+fi
+
+_wait_for_pmcd 20 ptg-gate
+
+metric=pmcd.control.debug
+echo "Test that new pmcd is OK..."
+if pminfo -f -h $goodif $metric
+then
+ echo "OK"
+else
+ echo "Error starting pmcd with -i $goodif -l $pmcdlog"
+ echo "pmcd.log contains:"
+ echo "======== start pmcd.log ========
+ cat $pmcdlog
+ echo "======== end pmcd.log ========
+ exit
+fi
+echo ""
+
+echo "Test access on good port..."
+cmd='sh -c "PMCD_PORT='$PMCD_PORT'; export PMCD_PORT; pminfo -f -h '$goodif' '$metric'"'
+ssh -q pcpqa@moomba.melbourne.sgi.com $cmd </dev/null
+
+echo
+echo "Test access on bad port (should fail)..."
+cmd='sh -c "PMCD_PORT='$PMCD_PORT'; export PMCD_PORT; pminfo -f -h '$badif' '$metric'"'
+ssh -q pcpqa@moomba.melbourne.sgi.com $cmd </dev/null 2>&1 \
+| sed -e "s/$badif/NOT-A-GOOD-IPADDR/"
+
+status=0
+exit
diff --git a/qa/196.out b/qa/196.out
new file mode 100644
index 0000000..bf9936d
--- /dev/null
+++ b/qa/196.out
@@ -0,0 +1,14 @@
+QA output created by 196
+Test that new pmcd is OK...
+
+pmcd.control.debug
+ value 0
+OK
+
+Test access on good port...
+
+pmcd.control.debug
+ value 0
+
+Test access on bad port (should fail)...
+pminfo: Cannot connect to PMCD on host "NOT-A-GOOD-IPADDR": Connection refused
diff --git a/qa/197 b/qa/197
new file mode 100755
index 0000000..1b02518
--- /dev/null
+++ b/qa/197
@@ -0,0 +1,33 @@
+#! /bin/sh
+# PCP QA Test No. 197
+# pmNewContext used to leak file descriptors across an exec()
+# The close-on-exec flag is now set to prevent this.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/context_fd_leak 4 >$tmp.out
+
+# invocation 1: at startup, next free file descriptor = 3 at exit, next free file descriptor = 9
+#
+# expected range for the exit fd is >=4 and <= 12 ... depends on how
+# libpcp is built, version of nss/nspr installed, ... but it needs to
+# be the _same_ for all lines of output
+#
+$PCP_AWK_PROG <$tmp.out '
+BEGIN { n = 0 }
+/free file descriptor = / { if (n == 0 && $NF >=4 && $NF <=12) { n = $NF }
+ if (n == $NF) $NF = "OK"
+ }
+ { print }'
diff --git a/qa/197.out b/qa/197.out
new file mode 100644
index 0000000..fc40cea
--- /dev/null
+++ b/qa/197.out
@@ -0,0 +1,5 @@
+QA output created by 197
+invocation 1: at startup, next free file descriptor = 3 at exit, next free file descriptor = OK
+invocation 2: at startup, next free file descriptor = 3 at exec, next free file descriptor = OK
+invocation 3: at startup, next free file descriptor = 3 at exec, next free file descriptor = OK
+invocation 4: at startup, next free file descriptor = 3 at exec, next free file descriptor = OK
diff --git a/qa/198 b/qa/198
new file mode 100755
index 0000000..519e70e
--- /dev/null
+++ b/qa/198
@@ -0,0 +1,60 @@
+#! /bin/sh
+# PCP QA Test No. 198
+# pv:934332 __pmdaMainPDU leaks __pmProfile objects
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+
+for pmda in sample sampledso
+do
+ echo "=== $pmda pmda ==="
+ echo "=== $pmda pmda ===" >>$seq.full
+ then=`pmprobe -v $pmda.datasize`
+ echo "then=$then" >>$seq.full
+
+ for i in 1 2 3 4
+ do
+ pmval -t 20msec -s 250 -i "${i}10,${i}11,${i}12,${i}13,${i}14,${i}15,${i}16,${i}17,${i}18,${i}19,${i}20,${i}21,${i}22,${i}23,${i}24,${i}25,${i}26,${i}27,${i}28,${i}29,${i}30,${i}31,${i}32,${i}33,${i}34,${i}35,${i}36,${i}37,${i}38,${i}39,${i}40,${i}41,${i}42,${i}43,${i}44,${i}45,${i}46,${i}47,${i}48,${i}49,${i}50,${i}51,${i}52,${i}53,${i}54,${i}55,${i}56,${i}57,${i}58,${i}59" $pmda.hordes.one >$tmp.$i &
+ done
+
+ wait
+
+ for i in 1 2 3 4
+ do
+ echo "thread $i: lines of output: `wc -l <$tmp.$i | sed -e 's/ *//g'`"
+ done
+
+ now=`pmprobe -v $pmda.datasize`
+ echo "now=$now" >>$seq.full
+
+ if [ "$then" != "$now" ]
+ then
+ echo "Arrgh ... memory leak"
+ echo "before: $then"
+ echo "after: $now"
+ status=1
+ fi
+
+ cat $tmp.1 >>$seq.full
+done
+
+exit
+
+# all done
+exit
diff --git a/qa/198.out b/qa/198.out
new file mode 100644
index 0000000..c5fc3f6
--- /dev/null
+++ b/qa/198.out
@@ -0,0 +1,11 @@
+QA output created by 198
+=== sample pmda ===
+thread 1: lines of output: 259
+thread 2: lines of output: 259
+thread 3: lines of output: 259
+thread 4: lines of output: 259
+=== sampledso pmda ===
+thread 1: lines of output: 259
+thread 2: lines of output: 259
+thread 3: lines of output: 259
+thread 4: lines of output: 259
diff --git a/qa/199 b/qa/199
new file mode 100755
index 0000000..6b018a1
--- /dev/null
+++ b/qa/199
@@ -0,0 +1,215 @@
+#! /bin/sh
+# PCP QA Test No. 199
+# check out trivial PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1
+install_on_cleanup=false
+pminfo trivial >/dev/null 2>&1 && install_on_cleanup=true
+
+_cleanup()
+{
+
+ if $sudo make >$tmp.out 2>&1
+ then
+ :
+ else
+ cat $tmp.out
+ echo "Arrgh, cleanup make failed"
+ exit
+ fi
+
+ if diff $tmp.root $PCP_VAR_DIR/pmns/root >/dev/null 2>&1
+ then
+ :
+ else
+ [ -f $tmp.root ] && $sudo mv $tmp.root $PCP_VAR_DIR/pmns/root
+ fi
+
+ if diff $tmp.pmcd.conf $PCP_PMCDCONF_PATH > /dev/null 2>&1
+ then
+ :
+ else
+
+
+ if $install_on_cleanup
+ then
+# do a default install which ensures the pmns and any views are installed
+ $sudo ./Install </dev/null >/dev/null 2>&1
+ else
+# leave the landscape clean like you found it
+ $sudo ./Remove >/dev/null 2>&1
+ fi
+
+# PMDA may have been installed differently to default. As everything is
+# installed we can use the old pmcd.conf file to restore state.
+
+ if diff $tmp.pmcd.conf $PCP_PMCDCONF_PATH > /dev/null 2>&1
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd
+ fi
+ fi
+
+ rm -f $tmp.*
+ exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmda_install
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=trivial
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy some config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+cp $PCP_VAR_DIR/pmns/root $tmp.root
+
+if $sudo make clobber >$tmp.out 2>&1
+then
+ :
+else
+ cat $tmp.out
+ echo "Arrgh, make clobber failed"
+ exit
+fi
+
+if $sudo make >$tmp.out 2>&1
+then
+ :
+else
+ cat $tmp.out
+ echo "Arrgh, make failed"
+ exit
+fi
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+echo
+echo "=== pipe daemon agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+echo 'both
+daemon
+pipe' | $sudo ./Install >>$tmp.out 2>&1
+
+_filter <$tmp.out
+
+if pminfo -v trivial
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== Unix socket daemon agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+echo 'both
+daemon
+socket
+Unix
+'"$tmp.fifo" | $sudo ./Install >>$tmp.out 2>&1
+echo 'both
+daemon
+socket
+Unix
+'"$tmp.fifo" | $sudo ./Install >>$tmp.out 2>&1
+
+_filter <$tmp.out
+
+if pminfo -v trivial
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== Internet socket daemon agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+
+# pick a tcp port that is not in use
+#
+port=`_get_port tcp 5670 5689`
+if [ -z "$port" ]
+then
+ echo "Arrgh ... no free TCP port in the range 5670 ... 5689"
+ exit 1
+fi
+
+echo 'both
+daemon
+socket
+Internet
+'$port | $sudo ./Install >>$tmp.out 2>&1
+
+# use next port this time
+port=`expr $port + 1`
+
+echo 'both
+daemon
+socket
+Internet
+'$port | $sudo ./Install >>$tmp.out 2>&1
+
+_filter <$tmp.out
+
+if pminfo -v trivial
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== dso agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+echo 'both
+dso' | $sudo ./Install >>$tmp.out 2>&1
+echo 'both
+dso' | $sudo ./Install >>$tmp.out 2>&1
+
+_filter <$tmp.out
+
+if pminfo -v trivial
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+$sudo ./Remove >$tmp.out 2>&1
+_filter <$tmp.out
+
+status=0
+exit
diff --git a/qa/199.out b/qa/199.out
new file mode 100644
index 0000000..bae5a57
--- /dev/null
+++ b/qa/199.out
@@ -0,0 +1,132 @@
+QA output created by 199
+
+=== pipe daemon agent ===
+Culling the Performance Metrics Name Space ...
+trivial ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trivial metrics have appeared ... 1 metrics and 1 values
+
+=== Unix socket daemon agent ===
+Culling the Performance Metrics Name Space ...
+trivial ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trivial metrics have appeared ... 1 metrics and 1 values
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trivial metrics have appeared ... 1 metrics and 1 values
+
+=== Internet socket daemon agent ===
+Culling the Performance Metrics Name Space ...
+trivial ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trivial metrics have appeared ... 1 metrics and 1 values
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trivial metrics have appeared ... 1 metrics and 1 values
+
+=== dso agent ===
+Culling the Performance Metrics Name Space ...
+trivial ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trivial metrics have appeared ... 1 metrics and 1 values
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trivial metrics have appeared ... 1 metrics and 1 values
+Culling the Performance Metrics Name Space ...
+trivial ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
diff --git a/qa/200 b/qa/200
new file mode 100755
index 0000000..a77f18c
--- /dev/null
+++ b/qa/200
@@ -0,0 +1,131 @@
+#! /bin/sh
+# PCP QA Test No. 200
+# $PMCD_RECONNECT_TIMEOUT validation
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3702 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+rm -f $seq.full
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { last = "" }
+$0 != last { print; last = $0 }' \
+ | sed \
+ -e 's/failed: Connection reset by peer/failed: IPC protocol failure/' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e '/recon([0-9][0-9]*)/s//recon(PID)/' \
+ -e '/^Context\[/d' \
+ -e '/^pmReconnectContext(/d' \
+ -e '/^Dump Contexts:/d' \
+ -e '/^Dump Instance Profile /d' \
+ -e '/^IPC table fd/d' \
+ -e '/^__pmConnectPMCD(/d' \
+ -e '/^__pmDecodeXtendError:/d' \
+ -e '/^pmNewContext(/d' \
+ -e '/^__pmSendCreds:/d' \
+ -e '/^__pmSetSocketIPC:/d' \
+ -e '/^__pmSetVersionIPC:/d' \
+ -e '/^__pmDataIPC: /d' \
+ -e '/^__pmSetDataIPC:/d' \
+ -e '/^pmWhichContext(/d' \
+ -e '/__pmConnect(fd=.*) ->/d' \
+ | $PCP_AWK_PROG '
+/delay: 6 / { print "delay: 6-10 secs"; next }
+/delay: 7 / { print "delay: 6-10 secs"; next }
+/delay: 8 / { print "delay: 6-10 secs"; next }
+/delay: 9 / { print "delay: 6-10 secs"; next }
+/delay: 10 / { print "delay: 6-10 secs"; next }
+/delay: 14 / { print "delay: 14-16 secs"; next }
+/delay: 15 / { print "delay: 14-16 secs"; next }
+/delay: 16 / { print "delay: 14-16 secs"; next }
+ { print }'
+}
+
+cat >$tmp.new <<End-of-File
+# From QA 200
+#
+# Name Id IPC IPC Params File/Cmd
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+End-of-File
+
+# copy the pmcd config file to restore state later.
+$sudo cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+$sudo cp $tmp.new $PCP_PMCDCONF_PATH
+
+# ensure we have pmcd ready for the first iteration.
+$sudo $PCP_RC_DIR/pcp start >/dev/null 2>&1
+_wait_for_pmcd
+_wait_for_pmlogger
+
+_cleanup()
+{
+ [ -f $tmp.pmcd.conf ] && $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ [ "$PCP_PLATFORM" != "linux" ] && _change_config pmlogger on
+ $sudo $PCP_RC_DIR/pcp restart >/dev/null
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ $sudo rm -f $tmp.pmcd.conf
+ rm -f $tmp.*
+ exit $status
+}
+
+trap _cleanup 0 1 2 3 15
+
+# real QA test starts here
+for xxx in "" "1,3,5" "2" "1-2" "1,2,foo"
+do
+ if [ "X$xxx" = X ]
+ then
+ unset PMCD_RECONNECT_TIMEOUT
+ else
+ PMCD_RECONNECT_TIMEOUT="$xxx"
+ export PMCD_RECONNECT_TIMEOUT
+ fi
+
+ echo
+ echo "PMCD_RECONNECT_TIMEOUT=\"$PMCD_RECONNECT_TIMEOUT\""
+ echo "start PMCD_RECONNECT_TIMEOUT=$PMCD_RECONNECT_TIMEOUT" >>$seq.full
+ echo "start `date`" >>$seq.full
+
+ DEBUG=
+ DEBUG=-D16
+ src/recon $DEBUG >$tmp.out 2>&1 &
+
+ sleep 2
+ echo "begin stop pmcd `date`" >>$seq.full
+ $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+ echo "end stop pmcd `date`" >>$seq.full
+ sleep 4
+ echo "begin start pmcd `date`" >>$seq.full
+ $sudo $PCP_RC_DIR/pcp start \
+ | _filter_pcp_start \
+ | sed -e '/starting archive loggers/d' -e '/Starting pmlogger/d'
+ echo "end start pmcd `date`" >>$seq.full
+
+ wait
+ _filter <$tmp.out
+ cat $tmp.out >>$seq.full
+done
+
+status=0
+exit
diff --git a/qa/200.out.1 b/qa/200.out.1
new file mode 100644
index 0000000..b041128
--- /dev/null
+++ b/qa/200.out.1
@@ -0,0 +1,38 @@
+QA output created by 200
+
+PMCD_RECONNECT_TIMEOUT=""
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+pmReconnectContext: success
+delay: 14-16 secs
+
+PMCD_RECONNECT_TIMEOUT="1,3,5"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+pmReconnectContext: success
+delay: 6-10 secs
+
+PMCD_RECONNECT_TIMEOUT="2"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+pmReconnectContext: success
+delay: 6-10 secs
+
+PMCD_RECONNECT_TIMEOUT="1-2"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+[DATE] recon(PID) Warning: pmReconnectContext: ignored bad PMCD_RECONNECT_TIMEOUT = '1-2'
+pmReconnectContext: success
+delay: 14-16 secs
+
+PMCD_RECONNECT_TIMEOUT="1,2,foo"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+[DATE] recon(PID) Warning: pmReconnectContext: ignored bad PMCD_RECONNECT_TIMEOUT = '1,2,foo'
+pmReconnectContext: success
+delay: 14-16 secs
diff --git a/qa/200.out.2 b/qa/200.out.2
new file mode 100644
index 0000000..b041128
--- /dev/null
+++ b/qa/200.out.2
@@ -0,0 +1,38 @@
+QA output created by 200
+
+PMCD_RECONNECT_TIMEOUT=""
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+pmReconnectContext: success
+delay: 14-16 secs
+
+PMCD_RECONNECT_TIMEOUT="1,3,5"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+pmReconnectContext: success
+delay: 6-10 secs
+
+PMCD_RECONNECT_TIMEOUT="2"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+pmReconnectContext: success
+delay: 6-10 secs
+
+PMCD_RECONNECT_TIMEOUT="1-2"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+[DATE] recon(PID) Warning: pmReconnectContext: ignored bad PMCD_RECONNECT_TIMEOUT = '1-2'
+pmReconnectContext: success
+delay: 14-16 secs
+
+PMCD_RECONNECT_TIMEOUT="1,2,foo"
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+pmFetch failed: IPC protocol failure
+[DATE] recon(PID) Warning: pmReconnectContext: ignored bad PMCD_RECONNECT_TIMEOUT = '1,2,foo'
+pmReconnectContext: success
+delay: 14-16 secs
diff --git a/qa/20071023-08-06-36.folio b/qa/20071023-08-06-36.folio
new file mode 100644
index 0000000..c05736b
--- /dev/null
+++ b/qa/20071023-08-06-36.folio
@@ -0,0 +1,8 @@
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on kmcdonell-laptop.aconex.com at Tue Oct 23 08:06:36 2007
+Creator: pmchart 20071023-08-06-36.view
+# Host Basename
+Archive: kmcdonell-laptop.aconex.com archives/20071023-08-06-36
diff --git a/qa/20071023-08-06-36.view b/qa/20071023-08-06-36.view
new file mode 100644
index 0000000..a8e686c
--- /dev/null
+++ b/qa/20071023-08-06-36.view
@@ -0,0 +1,19 @@
+#kmchart
+version 1
+
+global width 0
+global height 0
+global points 0
+global xpos 0
+global ypos 0
+
+chart title "file system capacity" style plot legend off
+ plot color #ffff00 host kmcdonell-laptop.aconex.com metric filesys.capacity instance "/dev/root"
+chart style plot antialiasing off
+ plot color #ffff00 host kmcdonell-laptop.aconex.com metric sample.mirage_longlong instance "m-00"
+chart style plot antialiasing off
+ plot color #ffff00 host kmcdonell-laptop.aconex.com metric sample.scale_step.time_up_nanosecs
+chart style bar antialiasing off
+ plot color #ffff00 host kmcdonell-laptop.aconex.com metric kernel.all.cpu.user
+chart style plot antialiasing off
+ plot color #ffff00 host kmcdonell-laptop.aconex.com metric disk.dev.total_bytes instance "sda"
diff --git a/qa/201 b/qa/201
new file mode 100755
index 0000000..24c4377
--- /dev/null
+++ b/qa/201
@@ -0,0 +1,179 @@
+#! /bin/sh
+# PCP QA Test No. 201
+# exercise pmdaCache routines
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ # Note pmdaCacheDump: indom PM_INDOM_NULL lines come from QA
+ # fault injection
+ sed \
+ -e "s;$PCP_VAR_DIR/;\$PCP_VAR_DIR/;" \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/^\([0-9][0-9]*\) [0-9][0-9]* /\1 timestamp /' \
+ -e 's/torture_cache([0-9][0-9]*)/torture_cache(PID)/' \
+ -e '/active /s/ 0x0 / (nil) /' \
+ -e 's/^Cannot open /cat: /' \
+ -e '/pmdaCacheDump: indom PM_INDOM_NULL/d'
+}
+
+_filter2()
+{
+ sed \
+ -e 's/ 4444444 / orig-timestamp /' \
+ -e 's/^\([0-9][0-9]*\) [0-9][0-9]* /\1 timestamp /'
+}
+
+# real QA test starts here
+echo "basic operation tests ..."
+src/torture_cache -Dindom a 2>&1 | _filter
+
+echo
+echo "save tests ..."
+$sudo rm -f $PCP_VAR_DIR/config/pmda/123.8
+$sudo touch $PCP_VAR_DIR/config/pmda/123.8
+$sudo src/torture_cache b 2>&1 | _filter
+
+echo
+echo "load tests ..."
+echo "-- empty file --"
+$sudo rm -f $PCP_VAR_DIR/config/pmda/123.13
+$sudo touch $PCP_VAR_DIR/config/pmda/123.13
+src/torture_cache c 2>&1 | _filter
+echo "-- short header --"
+echo "1" >$tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.13
+src/torture_cache c 2>&1 | _filter
+echo "-- bad version (x) --"
+echo "x 0" >$tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.13
+src/torture_cache c 2>&1 | _filter
+echo "-- bad version (2) --"
+echo "2 0" >$tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.13
+src/torture_cache c 2>&1 | _filter
+echo "-- bad ins_mode (-1) --"
+echo "1 -1" >$tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.13
+src/torture_cache c 2>&1 | _filter
+echo "-- empty --"
+echo "1 0" >$tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.13
+src/torture_cache c 2>&1 | _filter
+echo "-- interesting --"
+cat <<End-of-File >$tmp
+1 0
+10 4444444 fubar-001
+15 4444444 this is a name with some spaces in it
+20 4444444 fubar-002
+30 4444444 fubar-003
+35 4444444 longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again-longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again
+40 4444444 fubar-004
+End-of-File
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.13
+$sudo src/torture_cache c 2>&1 | _filter
+cat $PCP_VAR_DIR/config/pmda/123.13 | _filter2
+echo "-- interesting (PMDA_CACHE_REUSE) --"
+cat <<End-of-File >$tmp
+1 1
+10 4444444 fubar-001
+15 4444444 this is a name with some spaces in it
+20 4444444 fubar-002
+30 4444444 fubar-003
+35 4444444 longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again-longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again
+40 4444444 fubar-004
+End-of-File
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.13
+$sudo src/torture_cache c 2>&1 | _filter
+cat $PCP_VAR_DIR/config/pmda/123.13 | _filter2
+
+echo
+echo "test inst wrap and ins_mode change ..."
+cat <<End-of-File >$tmp
+1 0
+2147483645 4444444 biggest-inst-2
+End-of-File
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.7
+$sudo src/torture_cache -D indom d 2>&1 | _filter
+cat $PCP_VAR_DIR/config/pmda/123.7 | _filter2
+
+echo
+echo "test purge operation ..."
+echo "-- empty @ start and end --"
+cat <<End-of-File >$tmp
+1 0
+End-of-File
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.11
+$sudo src/torture_cache e 2>&1 | _filter
+cat $PCP_VAR_DIR/config/pmda/123.11 | _filter2
+echo "-- not empty --"
+cat <<End-of-File >$tmp
+1 1
+01 4444444 fubar-001
+02 4444444 fubar-002
+05 4444444 fubar-003
+06 4444444 fubar-004
+07 5555555 fubar-005
+60 6666666 fubar-006
+End-of-File
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.11
+$sudo src/torture_cache f 2>&1 | _filter
+cat $PCP_VAR_DIR/config/pmda/123.11 | _filter2
+
+echo
+echo "exercise hash-table re-sizing ..."
+$sudo src/torture_cache g 2>&1 | _filter
+
+echo
+echo "short name match test cases ..."
+echo "-- cache --"
+cat <<End-of-File >$tmp
+1 0
+01 4444444 foo
+02 4444444 foobar
+End-of-File
+cat $tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.17
+$sudo src/torture_cache h 2>&1 | _filter
+echo "-- cache --"
+cat <<End-of-File >$tmp
+1 0
+01 4444444 foo bar
+End-of-File
+cat $tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.17
+$sudo src/torture_cache h 2>&1 | _filter
+echo "-- cache --"
+cat <<End-of-File >$tmp
+1 0
+01 4444444 foo blah
+End-of-File
+cat $tmp
+$sudo mv $tmp $PCP_VAR_DIR/config/pmda/123.17
+$sudo src/torture_cache h 2>&1 | _filter
+
+echo
+echo "-- revised dirty cache semantics --"
+for a in 1 2 3
+do
+ echo "+ flags=$a +"
+ $sudo rm -f $tmp $PCP_VAR_DIR/config/pmda/123.15
+ $sudo src/torture_cache i $a 2>&1 | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/201.out b/qa/201.out
new file mode 100644
index 0000000..fc19c28
--- /dev/null
+++ b/qa/201.out
@@ -0,0 +1,1591 @@
+QA output created by 201
+basic operation tests ...
+Add foo ...
+return -> 0
+pmdaCacheDump: indom 123.7: nentry=1 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) foo
+
+Add bar ...
+return -> 1
+pmdaCacheDump: indom 123.7: nentry=2 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) foo
+ 1 active 0xdeadbeef bar
+
+Add java coffee beans ...
+return -> 2
+pmdaCacheDump: indom 123.7: nentry=3 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) foo
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+
+Add another one ...
+return -> 3
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) foo
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 active (nil) another one [match len=7]
+
+Hide another one ...
+return -> 3
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) foo
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 inactive (nil) another one [match len=7]
+
+Cull foo ...
+return -> 0
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 inactive (nil) another one [match len=7]
+
+Cull foo again, should fail ...
+pmdaCache store: indom 123.7: instance "foo" not in cache: flags=4 not allowed
+return -> -12360: Unknown or illegal instance identifier
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 inactive (nil) another one [match len=7]
+
+Count instances ...
+entries: 4
+active entries: 2
+inactive entries: 1
+
+Probe bar ...
+return -> 1
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 inactive (nil) another one [match len=7]
+
+Probe another one (hidden) ...
+return -> 3 [inactive]
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 inactive (nil) another one [match len=7]
+
+Add foo in another indom ...
+return -> 0
+pmdaCacheDump: indom 123.8: nentry=1 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) foo
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 inactive (nil) another one [match len=7]
+
+Probe bar (not in this indom) ...
+return -> -12360: Unknown or illegal instance identifier
+pmdaCacheDump: indom 123.8: nentry=1 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) foo
+
+Mark all active ...
+return -> 1
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+ 1 active 0xdeadbeef bar
+ 2 active 0xcafecafe java coffee beans [match len=4]
+ 3 active (nil) another one [match len=7]
+
+Mark all inactive ...
+return -> 3
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+ 1 inactive 0xdeadbeef bar
+ 2 inactive 0xcafecafe java coffee beans [match len=4]
+ 3 inactive (nil) another one [match len=7]
+
+Cull all ...
+return -> 3
+pmdaCacheDump: indom 123.7: nentry=4 ins_mode=0 hstate=3 hsize=16
+( 0) empty
+( 1) empty
+( 2) empty
+( 3) empty
+
+save tests ...
+
+Populate the instance domain ...
+Save ...
+Before:
+return -> 7
+After:
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+Save ...
+Before:
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+return -> 14
+After:
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+Start save after changes ...
+Save -> 16
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+Save -> 17
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+Save -> 18
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+17 timestamp 017
+Save -> 19
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+17 timestamp 017
+18 timestamp 018
+Save -> 20
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+17 timestamp 017
+18 timestamp 018
+19 timestamp 019
+pmdaCacheDump: indom 123.8: nentry=20 ins_mode=0 hstate=0 hsize=16
+ 0 active 0xbeef0001 000
+ 1 inactive 0xbeef0002 001
+ 2 inactive 0xbeef0003 002
+ 3 active 0xbeef0004 003
+ 4 inactive 0xbeef0005 004
+ 5 active 0xbeef0006 005
+ 6 active 0xbeef0007 006
+ 7 active 0xbeef0008 007
+ 8 inactive 0xbeef0009 008
+ 9 active 0xbeef000a 009
+ 10 active 0xbeef000b 010
+ 11 active 0xbeef000c 011
+ 12 active 0xbeef000d 012
+ 13 active 0xbeef000e 013
+ 14 active 0xbeef000f 014
+ 15 active 0xbeef0010 015
+ 16 inactive 0xbeef0011 016
+ 17 active 0xbeef0012 017
+ 18 active 0xbeef0013 018
+ 19 active 0xbeef0014 019
+
+Hide 011 ...
+Save -> 0
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+17 timestamp 017
+18 timestamp 018
+19 timestamp 019
+Add 011 ...
+Save -> 0
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+11 timestamp 011
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+17 timestamp 017
+18 timestamp 018
+19 timestamp 019
+Cull 011 ...
+Save -> 19
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+17 timestamp 017
+18 timestamp 018
+19 timestamp 019
+Add 011 ...
+Save -> 20
+1 0
+0 timestamp 000
+1 timestamp 001
+2 timestamp 002
+3 timestamp 003
+4 timestamp 004
+5 timestamp 005
+6 timestamp 006
+7 timestamp 007
+8 timestamp 008
+9 timestamp 009
+10 timestamp 010
+12 timestamp 012
+13 timestamp 013
+14 timestamp 014
+15 timestamp 015
+16 timestamp 016
+17 timestamp 017
+18 timestamp 018
+19 timestamp 019
+20 timestamp 011
+
+load tests ...
+-- empty file --
+Load the instance domain ...
+[DATE] torture_cache(PID) Error: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/123.13: empty file?
+PMDA_CACHE_LOAD failed: Generic error, already reported above
+-- short header --
+Load the instance domain ...
+[DATE] torture_cache(PID) Error: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/123.13: illegal first record: 1
+
+PMDA_CACHE_LOAD failed: Generic error, already reported above
+-- bad version (x) --
+Load the instance domain ...
+[DATE] torture_cache(PID) Error: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/123.13: illegal first record: x 0
+
+PMDA_CACHE_LOAD failed: Generic error, already reported above
+-- bad version (2) --
+Load the instance domain ...
+[DATE] torture_cache(PID) Error: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/123.13: illegal first record: 2 0
+
+PMDA_CACHE_LOAD failed: Generic error, already reported above
+-- bad ins_mode (-1) --
+Load the instance domain ...
+[DATE] torture_cache(PID) Error: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/123.13: illegal first record: 1 -1
+
+PMDA_CACHE_LOAD failed: Generic error, already reported above
+-- empty --
+Load the instance domain ...
+PMDA_CACHE_HIDE failed for "fubar-001": Unknown or illegal instance identifier
+PMDA_CACHE_CULL failed for "fubar-003": Unknown or illegal instance identifier
+pmdaCacheDump: indom 123.13: nentry=2 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) fubar-002
+ 1 active (nil) fubar-009
+-- interesting --
+Load the instance domain ...
+pmdaCacheDump: indom 123.13: nentry=7 ins_mode=0 hstate=3 hsize=16
+ 10 inactive (nil) fubar-001
+ 15 inactive (nil) this is a name with some spaces in it [match len=4]
+ 20 active (nil) fubar-002
+( 30) empty
+ 35 inactive (nil) longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again-longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again
+ 40 inactive (nil) fubar-004
+ 41 active (nil) fubar-009
+1 0
+10 orig-timestamp fubar-001
+15 orig-timestamp this is a name with some spaces in it
+20 timestamp fubar-002
+35 orig-timestamp longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again-longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again
+40 orig-timestamp fubar-004
+41 timestamp fubar-009
+-- interesting (PMDA_CACHE_REUSE) --
+Load the instance domain ...
+pmdaCacheDump: indom 123.13: nentry=7 ins_mode=1 hstate=3 hsize=16
+ 0 active (nil) fubar-009
+ 10 inactive (nil) fubar-001
+ 15 inactive (nil) this is a name with some spaces in it [match len=4]
+ 20 active (nil) fubar-002
+( 30) empty
+ 35 inactive (nil) longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again-longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again
+ 40 inactive (nil) fubar-004
+1 1
+0 timestamp fubar-009
+10 orig-timestamp fubar-001
+15 orig-timestamp this is a name with some spaces in it
+20 timestamp fubar-002
+35 orig-timestamp longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again-longinstancenamefromwalesllanfairpwyllgwyngyllgogeryochdrobwllllantysiliogogogoch-and-again
+40 orig-timestamp fubar-004
+
+test inst wrap and ins_mode change ...
+Load the instance domain ...
+After PMDA_CACHE_LOAD
+pmdaCacheDump: indom 123.7: nentry=1 ins_mode=0 hstate=0 hsize=16
+ 2147483645 inactive (nil) biggest-inst-2
+Add foo ...
+return -> 2147483646
+
+Add bar ...
+return -> 2147483647
+
+Add java coffee beans ...
+return -> 0
+
+Add another one ...
+return -> 1
+
+Hide another one ...
+return -> 1
+
+Cull foo ...
+return -> 2147483646
+
+Cull foo again, should fail ...
+pmdaCache store: indom 123.7: instance "foo" not in cache: flags=4 not allowed
+return -> -12360: Unknown or illegal instance identifier
+
+Count instances ...
+entries: 5
+active entries: 2
+inactive entries: 2
+
+Probe bar ...
+return -> 2147483647
+
+Probe another one (hidden) ...
+return -> 1 [inactive]
+After cache_save hstate={DIRTY_INSTANCE}
+pmdaCacheDump: indom 123.7: nentry=5 ins_mode=1 hstate=0 hsize=16
+ 0 active 0xcafecafe java coffee beans [match len=4]
+ 1 inactive (nil) another one [match len=7]
+ 2147483645 inactive (nil) biggest-inst-2
+(2147483646) empty
+ 2147483647 active 0xdeadbeef bar
+1 1
+0 timestamp java coffee beans
+1 timestamp another one
+2147483645 orig-timestamp biggest-inst-2
+2147483647 timestamp bar
+
+test purge operation ...
+-- empty @ start and end --
+Save -> 10
+Before purge ...
+pmdaCacheDump: indom 123.11: nentry=10 ins_mode=0 hstate=0 hsize=16
+ 0 active 0xcaffe000 boring-instance-000
+ 1 inactive 0xcaffe001 boring-instance-001
+ 2 inactive 0xcaffe002 boring-instance-002
+ 3 active 0xcaffe003 boring-instance-003
+ 4 inactive 0xcaffe004 boring-instance-004
+ 5 active 0xcaffe005 boring-instance-005
+ 6 active 0xcaffe006 boring-instance-006
+ 7 active 0xcaffe007 boring-instance-007
+ 8 inactive 0xcaffe008 boring-instance-008
+ 9 active 0xcaffe009 boring-instance-009
+Purged 10 entries
+After purge ...
+Save -> 0
+pmdaCacheDump: indom 123.11: nentry=10 ins_mode=0 hstate=0 hsize=16
+( 0) empty
+( 1) empty
+( 2) empty
+( 3) empty
+( 4) empty
+( 5) empty
+( 6) empty
+( 7) empty
+( 8) empty
+( 9) empty
+1 0
+-- not empty --
+Save -> 16
+Before purge ...
+pmdaCacheDump: indom 123.11: nentry=16 ins_mode=1 hstate=0 hsize=16
+ 0 active 0xcaffe000 boring-instance-000
+ 1 inactive (nil) fubar-001
+ 2 inactive (nil) fubar-002
+ 3 inactive 0xcaffe001 boring-instance-001
+ 4 inactive 0xcaffe002 boring-instance-002
+ 5 inactive (nil) fubar-003
+ 6 inactive (nil) fubar-004
+ 7 inactive (nil) fubar-005
+ 8 active 0xcaffe003 boring-instance-003
+ 9 inactive 0xcaffe004 boring-instance-004
+ 10 active 0xcaffe005 boring-instance-005
+ 11 active 0xcaffe006 boring-instance-006
+ 12 active 0xcaffe007 boring-instance-007
+ 13 inactive 0xcaffe008 boring-instance-008
+ 14 active 0xcaffe009 boring-instance-009
+ 60 inactive (nil) fubar-006
+Purged 6 entries
+After purge ...
+Save -> 10
+pmdaCacheDump: indom 123.11: nentry=16 ins_mode=1 hstate=0 hsize=16
+ 0 active 0xcaffe000 boring-instance-000
+( 1) empty
+( 2) empty
+ 3 inactive 0xcaffe001 boring-instance-001
+ 4 inactive 0xcaffe002 boring-instance-002
+( 5) empty
+( 6) empty
+( 7) empty
+ 8 active 0xcaffe003 boring-instance-003
+ 9 inactive 0xcaffe004 boring-instance-004
+ 10 active 0xcaffe005 boring-instance-005
+ 11 active 0xcaffe006 boring-instance-006
+ 12 active 0xcaffe007 boring-instance-007
+ 13 inactive 0xcaffe008 boring-instance-008
+ 14 active 0xcaffe009 boring-instance-009
+( 60) empty
+1 1
+0 timestamp boring-instance-000
+3 timestamp boring-instance-001
+4 timestamp boring-instance-002
+8 timestamp boring-instance-003
+9 timestamp boring-instance-004
+10 timestamp boring-instance-005
+11 timestamp boring-instance-006
+12 timestamp boring-instance-007
+13 timestamp boring-instance-008
+14 timestamp boring-instance-009
+
+exercise hash-table re-sizing ...
+pmdaCacheDump: indom 123.7: nentry=254 ins_mode=0 hstate=3 hsize=64
+ 1 active 0xdeaf0001 hashing-instance-001
+ 2 inactive 0xdeaf0002 hashing-instance-002
+ 3 active 0xdeaf0003 hashing-instance-003
+ 4 inactive 0xdeaf0004 hashing-instance-004
+ 5 active 0xdeaf0005 hashing-instance-005
+ 6 inactive 0xdeaf0006 hashing-instance-006
+ 8 inactive 0xdeaf0008 hashing-instance-008
+ 9 active 0xdeaf0009 hashing-instance-009
+ 10 inactive 0xdeaf000a hashing-instance-010
+ 11 active 0xdeaf000b hashing-instance-011
+ 12 inactive 0xdeaf000c hashing-instance-012
+ 13 active 0xdeaf000d hashing-instance-013
+ 15 active 0xdeaf000f hashing-instance-015
+ 16 inactive 0xdeaf0010 hashing-instance-016
+ 17 active 0xdeaf0011 hashing-instance-017
+ 18 inactive 0xdeaf0012 hashing-instance-018
+ 19 active 0xdeaf0013 hashing-instance-019
+ 20 inactive 0xdeaf0014 hashing-instance-020
+ 22 inactive 0xdeaf0016 hashing-instance-022
+ 23 active 0xdeaf0017 hashing-instance-023
+ 24 inactive 0xdeaf0018 hashing-instance-024
+ 25 active 0xdeaf0019 hashing-instance-025
+ 26 inactive 0xdeaf001a hashing-instance-026
+ 27 active 0xdeaf001b hashing-instance-027
+ 29 active 0xdeaf001d hashing-instance-029
+ 30 inactive 0xdeaf001e hashing-instance-030
+ 31 active 0xdeaf001f hashing-instance-031
+ 32 inactive 0xdeaf0020 hashing-instance-032
+ 33 active 0xdeaf0021 hashing-instance-033
+ 34 inactive 0xdeaf0022 hashing-instance-034
+ 36 inactive 0xdeaf0024 hashing-instance-036
+ 37 active 0xdeaf0025 hashing-instance-037
+ 38 inactive 0xdeaf0026 hashing-instance-038
+ 39 active 0xdeaf0027 hashing-instance-039
+ 40 inactive 0xdeaf0028 hashing-instance-040
+ 41 active 0xdeaf0029 hashing-instance-041
+ 43 active 0xdeaf002b hashing-instance-043
+ 44 inactive 0xdeaf002c hashing-instance-044
+ 45 active 0xdeaf002d hashing-instance-045
+ 46 inactive 0xdeaf002e hashing-instance-046
+ 47 active 0xdeaf002f hashing-instance-047
+ 48 inactive 0xdeaf0030 hashing-instance-048
+ 50 inactive 0xdeaf0032 hashing-instance-050
+ 51 active 0xdeaf0033 hashing-instance-051
+ 52 inactive 0xdeaf0034 hashing-instance-052
+ 53 active 0xdeaf0035 hashing-instance-053
+ 54 inactive 0xdeaf0036 hashing-instance-054
+ 55 active 0xdeaf0037 hashing-instance-055
+ 57 active 0xdeaf0039 hashing-instance-057
+ 58 inactive 0xdeaf003a hashing-instance-058
+ 59 active 0xdeaf003b hashing-instance-059
+ 60 inactive 0xdeaf003c hashing-instance-060
+ 61 active 0xdeaf003d hashing-instance-061
+ 62 inactive 0xdeaf003e hashing-instance-062
+ 64 inactive 0xdeaf0040 hashing-instance-064
+ 65 active 0xdeaf0041 hashing-instance-065
+ 66 inactive 0xdeaf0042 hashing-instance-066
+ 67 active 0xdeaf0043 hashing-instance-067
+ 68 inactive 0xdeaf0044 hashing-instance-068
+ 69 active 0xdeaf0045 hashing-instance-069
+ 71 active 0xdeaf0047 hashing-instance-071
+ 72 inactive 0xdeaf0048 hashing-instance-072
+ 73 active 0xdeaf0049 hashing-instance-073
+ 74 inactive 0xdeaf004a hashing-instance-074
+ 75 active 0xdeaf004b hashing-instance-075
+ 76 inactive 0xdeaf004c hashing-instance-076
+ 78 inactive 0xdeaf004e hashing-instance-078
+ 79 active 0xdeaf004f hashing-instance-079
+ 80 inactive 0xdeaf0050 hashing-instance-080
+ 81 active 0xdeaf0051 hashing-instance-081
+ 82 inactive 0xdeaf0052 hashing-instance-082
+ 83 active 0xdeaf0053 hashing-instance-083
+ 85 active 0xdeaf0055 hashing-instance-085
+ 86 inactive 0xdeaf0056 hashing-instance-086
+ 87 active 0xdeaf0057 hashing-instance-087
+ 88 inactive 0xdeaf0058 hashing-instance-088
+ 89 active 0xdeaf0059 hashing-instance-089
+ 90 inactive 0xdeaf005a hashing-instance-090
+ 92 inactive 0xdeaf005c hashing-instance-092
+ 93 active 0xdeaf005d hashing-instance-093
+ 94 inactive 0xdeaf005e hashing-instance-094
+ 95 active 0xdeaf005f hashing-instance-095
+ 96 inactive 0xdeaf0060 hashing-instance-096
+ 97 active 0xdeaf0061 hashing-instance-097
+ 99 active 0xdeaf0063 hashing-instance-099
+ 100 inactive 0xdeaf0064 hashing-instance-100
+ 101 active 0xdeaf0065 hashing-instance-101
+ 102 inactive 0xdeaf0066 hashing-instance-102
+ 103 active 0xdeaf0067 hashing-instance-103
+ 104 inactive 0xdeaf0068 hashing-instance-104
+ 106 inactive 0xdeaf006a hashing-instance-106
+ 107 active 0xdeaf006b hashing-instance-107
+ 108 inactive 0xdeaf006c hashing-instance-108
+ 109 active 0xdeaf006d hashing-instance-109
+ 110 inactive 0xdeaf006e hashing-instance-110
+ 111 active 0xdeaf006f hashing-instance-111
+ 113 active 0xdeaf0071 hashing-instance-113
+ 114 inactive 0xdeaf0072 hashing-instance-114
+ 115 active 0xdeaf0073 hashing-instance-115
+ 116 inactive 0xdeaf0074 hashing-instance-116
+ 117 active 0xdeaf0075 hashing-instance-117
+ 118 inactive 0xdeaf0076 hashing-instance-118
+ 120 inactive 0xdeaf0078 hashing-instance-120
+ 121 active 0xdeaf0079 hashing-instance-121
+ 122 inactive 0xdeaf007a hashing-instance-122
+ 123 active 0xdeaf007b hashing-instance-123
+ 124 inactive 0xdeaf007c hashing-instance-124
+ 125 active 0xdeaf007d hashing-instance-125
+ 127 active 0xdeaf007f hashing-instance-127
+ 128 inactive 0xdeaf0080 hashing-instance-128
+ 129 active 0xdeaf0081 hashing-instance-129
+ 130 inactive 0xdeaf0082 hashing-instance-130
+ 131 active 0xdeaf0083 hashing-instance-131
+ 132 inactive 0xdeaf0084 hashing-instance-132
+( 133) empty
+ 134 inactive 0xdeaf0086 hashing-instance-134
+ 135 active 0xdeaf0087 hashing-instance-135
+ 136 inactive 0xdeaf0088 hashing-instance-136
+ 137 active 0xdeaf0089 hashing-instance-137
+ 138 inactive 0xdeaf008a hashing-instance-138
+ 139 active 0xdeaf008b hashing-instance-139
+( 140) empty
+ 141 active 0xdeaf008d hashing-instance-141
+ 142 inactive 0xdeaf008e hashing-instance-142
+ 143 active 0xdeaf008f hashing-instance-143
+ 144 inactive 0xdeaf0090 hashing-instance-144
+ 145 active 0xdeaf0091 hashing-instance-145
+ 146 inactive 0xdeaf0092 hashing-instance-146
+( 147) empty
+ 148 inactive 0xdeaf0094 hashing-instance-148
+ 149 active 0xdeaf0095 hashing-instance-149
+ 150 inactive 0xdeaf0096 hashing-instance-150
+ 151 active 0xdeaf0097 hashing-instance-151
+ 152 inactive 0xdeaf0098 hashing-instance-152
+ 153 active 0xdeaf0099 hashing-instance-153
+( 154) empty
+ 155 active 0xdeaf009b hashing-instance-155
+ 156 inactive 0xdeaf009c hashing-instance-156
+ 157 active 0xdeaf009d hashing-instance-157
+ 158 inactive 0xdeaf009e hashing-instance-158
+ 159 active 0xdeaf009f hashing-instance-159
+ 160 inactive 0xdeaf00a0 hashing-instance-160
+( 161) empty
+ 162 inactive 0xdeaf00a2 hashing-instance-162
+ 163 active 0xdeaf00a3 hashing-instance-163
+ 164 inactive 0xdeaf00a4 hashing-instance-164
+ 165 active 0xdeaf00a5 hashing-instance-165
+ 166 inactive 0xdeaf00a6 hashing-instance-166
+ 167 active 0xdeaf00a7 hashing-instance-167
+( 168) empty
+ 169 active 0xdeaf00a9 hashing-instance-169
+ 170 inactive 0xdeaf00aa hashing-instance-170
+ 171 active 0xdeaf00ab hashing-instance-171
+ 172 inactive 0xdeaf00ac hashing-instance-172
+ 173 active 0xdeaf00ad hashing-instance-173
+ 174 inactive 0xdeaf00ae hashing-instance-174
+( 175) empty
+ 176 inactive 0xdeaf00b0 hashing-instance-176
+ 177 active 0xdeaf00b1 hashing-instance-177
+ 178 inactive 0xdeaf00b2 hashing-instance-178
+ 179 active 0xdeaf00b3 hashing-instance-179
+ 180 inactive 0xdeaf00b4 hashing-instance-180
+ 181 active 0xdeaf00b5 hashing-instance-181
+( 182) empty
+ 183 active 0xdeaf00b7 hashing-instance-183
+ 184 inactive 0xdeaf00b8 hashing-instance-184
+ 185 active 0xdeaf00b9 hashing-instance-185
+ 186 inactive 0xdeaf00ba hashing-instance-186
+ 187 active 0xdeaf00bb hashing-instance-187
+ 188 inactive 0xdeaf00bc hashing-instance-188
+( 189) empty
+ 190 inactive 0xdeaf00be hashing-instance-190
+ 191 active 0xdeaf00bf hashing-instance-191
+ 192 inactive 0xdeaf00c0 hashing-instance-192
+ 193 active 0xdeaf00c1 hashing-instance-193
+ 194 inactive 0xdeaf00c2 hashing-instance-194
+ 195 active 0xdeaf00c3 hashing-instance-195
+( 196) empty
+ 197 active 0xdeaf00c5 hashing-instance-197
+ 198 inactive 0xdeaf00c6 hashing-instance-198
+ 199 active 0xdeaf00c7 hashing-instance-199
+ 200 inactive 0xdeaf00c8 hashing-instance-200
+ 201 active 0xdeaf00c9 hashing-instance-201
+ 202 inactive 0xdeaf00ca hashing-instance-202
+( 203) empty
+ 204 inactive 0xdeaf00cc hashing-instance-204
+ 205 active 0xdeaf00cd hashing-instance-205
+ 206 inactive 0xdeaf00ce hashing-instance-206
+ 207 active 0xdeaf00cf hashing-instance-207
+ 208 inactive 0xdeaf00d0 hashing-instance-208
+ 209 active 0xdeaf00d1 hashing-instance-209
+( 210) empty
+ 211 active 0xdeaf00d3 hashing-instance-211
+ 212 inactive 0xdeaf00d4 hashing-instance-212
+ 213 active 0xdeaf00d5 hashing-instance-213
+ 214 inactive 0xdeaf00d6 hashing-instance-214
+ 215 active 0xdeaf00d7 hashing-instance-215
+ 216 inactive 0xdeaf00d8 hashing-instance-216
+( 217) empty
+ 218 inactive 0xdeaf00da hashing-instance-218
+ 219 active 0xdeaf00db hashing-instance-219
+ 220 inactive 0xdeaf00dc hashing-instance-220
+ 221 active 0xdeaf00dd hashing-instance-221
+ 222 inactive 0xdeaf00de hashing-instance-222
+ 223 active 0xdeaf00df hashing-instance-223
+( 224) empty
+ 225 active 0xdeaf00e1 hashing-instance-225
+ 226 inactive 0xdeaf00e2 hashing-instance-226
+ 227 active 0xdeaf00e3 hashing-instance-227
+ 228 inactive 0xdeaf00e4 hashing-instance-228
+ 229 active 0xdeaf00e5 hashing-instance-229
+ 230 inactive 0xdeaf00e6 hashing-instance-230
+( 231) empty
+ 232 inactive 0xdeaf00e8 hashing-instance-232
+ 233 active 0xdeaf00e9 hashing-instance-233
+ 234 inactive 0xdeaf00ea hashing-instance-234
+ 235 active 0xdeaf00eb hashing-instance-235
+ 236 inactive 0xdeaf00ec hashing-instance-236
+ 237 active 0xdeaf00ed hashing-instance-237
+( 238) empty
+ 239 active 0xdeaf00ef hashing-instance-239
+ 240 inactive 0xdeaf00f0 hashing-instance-240
+ 241 active 0xdeaf00f1 hashing-instance-241
+ 242 inactive 0xdeaf00f2 hashing-instance-242
+ 243 active 0xdeaf00f3 hashing-instance-243
+ 244 inactive 0xdeaf00f4 hashing-instance-244
+( 245) empty
+ 246 inactive 0xdeaf00f6 hashing-instance-246
+ 247 active 0xdeaf00f7 hashing-instance-247
+ 248 inactive 0xdeaf00f8 hashing-instance-248
+ 249 active 0xdeaf00f9 hashing-instance-249
+ 250 inactive 0xdeaf00fa hashing-instance-250
+ 251 active 0xdeaf00fb hashing-instance-251
+( 252) empty
+ 253 active 0xdeaf00fd hashing-instance-253
+inst hash
+ [000] -> 192I -> 128I -> 64I
+ [001] -> 193 -> 129 -> 1 -> 65
+ [002] -> 194I -> 130I -> 2I -> 66I
+ [003] -> 195 -> 131 -> 3 -> 67
+ [004] -> 196E -> 132I -> 4I -> 68I
+ [005] -> 197 -> 133E -> 5 -> 69
+ [006] -> 198I -> 134I -> 6I
+ [007] -> 199 -> 135 -> 71
+ [008] -> 200I -> 136I -> 8I -> 72I
+ [009] -> 201 -> 137 -> 9 -> 73
+ [010] -> 202I -> 138I -> 10I -> 74I
+ [011] -> 203E -> 139 -> 11 -> 75
+ [012] -> 204I -> 140E -> 12I -> 76I
+ [013] -> 205 -> 141 -> 13
+ [014] -> 206I -> 142I -> 78I
+ [015] -> 207 -> 143 -> 15 -> 79
+ [016] -> 208I -> 144I -> 16I -> 80I
+ [017] -> 209 -> 145 -> 17 -> 81
+ [018] -> 210E -> 146I -> 18I -> 82I
+ [019] -> 211 -> 147E -> 19 -> 83
+ [020] -> 212I -> 148I -> 20I
+ [021] -> 213 -> 149 -> 85
+ [022] -> 214I -> 150I -> 22I -> 86I
+ [023] -> 215 -> 151 -> 23 -> 87
+ [024] -> 216I -> 152I -> 24I -> 88I
+ [025] -> 217E -> 153 -> 25 -> 89
+ [026] -> 218I -> 154E -> 26I -> 90I
+ [027] -> 219 -> 155 -> 27
+ [028] -> 220I -> 156I -> 92I
+ [029] -> 221 -> 157 -> 29 -> 93
+ [030] -> 222I -> 158I -> 30I -> 94I
+ [031] -> 223 -> 159 -> 31 -> 95
+ [032] -> 224E -> 160I -> 32I -> 96I
+ [033] -> 225 -> 161E -> 33 -> 97
+ [034] -> 226I -> 162I -> 34I
+ [035] -> 227 -> 163 -> 99
+ [036] -> 228I -> 164I -> 36I -> 100I
+ [037] -> 229 -> 165 -> 37 -> 101
+ [038] -> 230I -> 166I -> 38I -> 102I
+ [039] -> 231E -> 167 -> 39 -> 103
+ [040] -> 232I -> 168E -> 40I -> 104I
+ [041] -> 233 -> 169 -> 41
+ [042] -> 234I -> 170I -> 106I
+ [043] -> 235 -> 171 -> 43 -> 107
+ [044] -> 236I -> 172I -> 44I -> 108I
+ [045] -> 237 -> 173 -> 45 -> 109
+ [046] -> 238E -> 174I -> 46I -> 110I
+ [047] -> 239 -> 175E -> 47 -> 111
+ [048] -> 240I -> 176I -> 48I
+ [049] -> 241 -> 177 -> 113
+ [050] -> 242I -> 178I -> 50I -> 114I
+ [051] -> 243 -> 179 -> 51 -> 115
+ [052] -> 244I -> 180I -> 52I -> 116I
+ [053] -> 245E -> 181 -> 53 -> 117
+ [054] -> 246I -> 182E -> 54I -> 118I
+ [055] -> 247 -> 183 -> 55
+ [056] -> 248I -> 184I -> 120I
+ [057] -> 249 -> 185 -> 57 -> 121
+ [058] -> 250I -> 186I -> 58I -> 122I
+ [059] -> 251 -> 187 -> 59 -> 123
+ [060] -> 252E -> 188I -> 60I -> 124I
+ [061] -> 253 -> 189E -> 61 -> 125
+ [062] -> 190I -> 62I
+ [063] -> 191 -> 127
+name hash
+ [000] -> 197 -> 51 -> 85
+ [001] -> 64I -> 66I
+ [002] -> 249 -> 87
+ [003] -> 89 -> 88I
+ [004] -> 201 -> 130I -> 13
+ [005] -> 243 -> 190I -> 178I -> 153 -> 150I -> 48I
+ [006] -> 245E
+ [007] -> 229 -> 221 -> 45 -> 82I
+ [008] -> 165 -> 83 -> 107 -> 58I -> 10I
+ [009] -> 218I -> 213 -> 73
+ [010]
+ [011] -> 232I -> 161E -> 143 -> 136I -> 46I -> 94I -> 102I
+ [012] -> 242I -> 162I
+ [013] -> 60I -> 6I -> 78I
+ [014] -> 247 -> 151 -> 127 -> 32I
+ [015] -> 220I -> 144I -> 72I
+ [016] -> 222I -> 206I -> 174I -> 141 -> 135 -> 133E -> 65 -> 44I
+ [017] -> 244I -> 225 -> 185 -> 157 -> 33 -> 38I
+ [018] -> 103
+ [019] -> 228I -> 209 -> 31 -> 118I
+ [020] -> 217E -> 104I
+ [021] -> 200I -> 170I -> 132I -> 9
+ [022] -> 248I -> 202I -> 181 -> 81 -> 95 -> 92I
+ [023] -> 163 -> 97
+ [024] -> 250I -> 189E -> 184I -> 15 -> 18I -> 74I -> 120I -> 124I
+ [025] -> 241 -> 239 -> 166I -> 142I -> 23
+ [026] -> 214I -> 204I -> 139
+ [027] -> 235 -> 3
+ [028] -> 29 -> 52I -> 110I
+ [029] -> 177 -> 134I -> 34I -> 80I
+ [030] -> 215 -> 194I -> 55 -> 121
+ [031] -> 53 -> 37
+ [032] -> 196E -> 175E -> 158I -> 155 -> 149
+ [033] -> 186I -> 131 -> 36I
+ [034] -> 195 -> 128I -> 24I
+ [035] -> 234I -> 212I -> 203E -> 191 -> 164I -> 138I -> 61 -> 16I -> 12I -> 96I -> 114I
+ [036] -> 207 -> 57
+ [037] -> 238E -> 171 -> 93 -> 40I
+ [038] -> 251 -> 223 -> 101
+ [039] -> 208I -> 19 -> 20I -> 116I
+ [040] -> 169 -> 17 -> 109
+ [041] -> 253 -> 216I -> 188I -> 47
+ [042] -> 210E
+ [043] -> 199 -> 99 -> 125 -> 68I
+ [044] -> 183 -> 43
+ [045] -> 233 -> 152I -> 54I
+ [046] -> 179 -> 129 -> 115
+ [047] -> 176I -> 67 -> 122I
+ [048] -> 252E -> 246I -> 205 -> 8I -> 108I
+ [049] -> 237 -> 236I -> 159 -> 140E -> 111 -> 113 -> 76I -> 90I
+ [050] -> 198I -> 160I -> 145 -> 62I
+ [051] -> 173 -> 27 -> 123
+ [052] -> 156I -> 41
+ [053] -> 231E -> 172I -> 106I
+ [054] -> 230I -> 147E
+ [055] -> 227 -> 226I
+ [056] -> 192I -> 187 -> 50I
+ [057] -> 154E -> 59 -> 79 -> 26I -> 2I
+ [058] -> 211 -> 193 -> 182E -> 11 -> 30I -> 22I -> 100I
+ [059] -> 168E -> 146I -> 86I
+ [060] -> 240I -> 5 -> 117
+ [061] -> 224E -> 71 -> 4I
+ [062] -> 148I -> 39 -> 25 -> 1 -> 69
+ [063] -> 219 -> 180I -> 167 -> 137 -> 75
+Add foo ...
+return -> 254
+
+Add bar ...
+return -> 255
+
+Add java coffee beans ...
+return -> 256
+
+Add another one ...
+return -> 257
+
+Hide another one ...
+return -> 257
+
+Cull foo ...
+return -> 254
+
+Cull foo again, should fail ...
+return -> -12360: Unknown or illegal instance identifier
+
+Count instances ...
+entries: 258
+active entries: 111
+inactive entries: 109
+
+Probe bar ...
+return -> 255
+
+Probe another one (hidden) ...
+return -> 257 [inactive]
+pmdaCacheDump: indom 123.7: nentry=258 ins_mode=0 hstate=3 hsize=128
+ 1 active 0xdeaf0001 hashing-instance-001
+ 2 inactive 0xdeaf0002 hashing-instance-002
+ 3 active 0xdeaf0003 hashing-instance-003
+ 4 inactive 0xdeaf0004 hashing-instance-004
+ 5 active 0xdeaf0005 hashing-instance-005
+ 6 inactive 0xdeaf0006 hashing-instance-006
+ 8 inactive 0xdeaf0008 hashing-instance-008
+ 9 active 0xdeaf0009 hashing-instance-009
+ 10 inactive 0xdeaf000a hashing-instance-010
+ 11 active 0xdeaf000b hashing-instance-011
+ 12 inactive 0xdeaf000c hashing-instance-012
+ 13 active 0xdeaf000d hashing-instance-013
+ 15 active 0xdeaf000f hashing-instance-015
+ 16 inactive 0xdeaf0010 hashing-instance-016
+ 17 active 0xdeaf0011 hashing-instance-017
+ 18 inactive 0xdeaf0012 hashing-instance-018
+ 19 active 0xdeaf0013 hashing-instance-019
+ 20 inactive 0xdeaf0014 hashing-instance-020
+ 22 inactive 0xdeaf0016 hashing-instance-022
+ 23 active 0xdeaf0017 hashing-instance-023
+ 24 inactive 0xdeaf0018 hashing-instance-024
+ 25 active 0xdeaf0019 hashing-instance-025
+ 26 inactive 0xdeaf001a hashing-instance-026
+ 27 active 0xdeaf001b hashing-instance-027
+ 29 active 0xdeaf001d hashing-instance-029
+ 30 inactive 0xdeaf001e hashing-instance-030
+ 31 active 0xdeaf001f hashing-instance-031
+ 32 inactive 0xdeaf0020 hashing-instance-032
+ 33 active 0xdeaf0021 hashing-instance-033
+ 34 inactive 0xdeaf0022 hashing-instance-034
+ 36 inactive 0xdeaf0024 hashing-instance-036
+ 37 active 0xdeaf0025 hashing-instance-037
+ 38 inactive 0xdeaf0026 hashing-instance-038
+ 39 active 0xdeaf0027 hashing-instance-039
+ 40 inactive 0xdeaf0028 hashing-instance-040
+ 41 active 0xdeaf0029 hashing-instance-041
+ 43 active 0xdeaf002b hashing-instance-043
+ 44 inactive 0xdeaf002c hashing-instance-044
+ 45 active 0xdeaf002d hashing-instance-045
+ 46 inactive 0xdeaf002e hashing-instance-046
+ 47 active 0xdeaf002f hashing-instance-047
+ 48 inactive 0xdeaf0030 hashing-instance-048
+ 50 inactive 0xdeaf0032 hashing-instance-050
+ 51 active 0xdeaf0033 hashing-instance-051
+ 52 inactive 0xdeaf0034 hashing-instance-052
+ 53 active 0xdeaf0035 hashing-instance-053
+ 54 inactive 0xdeaf0036 hashing-instance-054
+ 55 active 0xdeaf0037 hashing-instance-055
+ 57 active 0xdeaf0039 hashing-instance-057
+ 58 inactive 0xdeaf003a hashing-instance-058
+ 59 active 0xdeaf003b hashing-instance-059
+ 60 inactive 0xdeaf003c hashing-instance-060
+ 61 active 0xdeaf003d hashing-instance-061
+ 62 inactive 0xdeaf003e hashing-instance-062
+ 64 inactive 0xdeaf0040 hashing-instance-064
+ 65 active 0xdeaf0041 hashing-instance-065
+ 66 inactive 0xdeaf0042 hashing-instance-066
+ 67 active 0xdeaf0043 hashing-instance-067
+ 68 inactive 0xdeaf0044 hashing-instance-068
+ 69 active 0xdeaf0045 hashing-instance-069
+ 71 active 0xdeaf0047 hashing-instance-071
+ 72 inactive 0xdeaf0048 hashing-instance-072
+ 73 active 0xdeaf0049 hashing-instance-073
+ 74 inactive 0xdeaf004a hashing-instance-074
+ 75 active 0xdeaf004b hashing-instance-075
+ 76 inactive 0xdeaf004c hashing-instance-076
+ 78 inactive 0xdeaf004e hashing-instance-078
+ 79 active 0xdeaf004f hashing-instance-079
+ 80 inactive 0xdeaf0050 hashing-instance-080
+ 81 active 0xdeaf0051 hashing-instance-081
+ 82 inactive 0xdeaf0052 hashing-instance-082
+ 83 active 0xdeaf0053 hashing-instance-083
+ 85 active 0xdeaf0055 hashing-instance-085
+ 86 inactive 0xdeaf0056 hashing-instance-086
+ 87 active 0xdeaf0057 hashing-instance-087
+ 88 inactive 0xdeaf0058 hashing-instance-088
+ 89 active 0xdeaf0059 hashing-instance-089
+ 90 inactive 0xdeaf005a hashing-instance-090
+ 92 inactive 0xdeaf005c hashing-instance-092
+ 93 active 0xdeaf005d hashing-instance-093
+ 94 inactive 0xdeaf005e hashing-instance-094
+ 95 active 0xdeaf005f hashing-instance-095
+ 96 inactive 0xdeaf0060 hashing-instance-096
+ 97 active 0xdeaf0061 hashing-instance-097
+ 99 active 0xdeaf0063 hashing-instance-099
+ 100 inactive 0xdeaf0064 hashing-instance-100
+ 101 active 0xdeaf0065 hashing-instance-101
+ 102 inactive 0xdeaf0066 hashing-instance-102
+ 103 active 0xdeaf0067 hashing-instance-103
+ 104 inactive 0xdeaf0068 hashing-instance-104
+ 106 inactive 0xdeaf006a hashing-instance-106
+ 107 active 0xdeaf006b hashing-instance-107
+ 108 inactive 0xdeaf006c hashing-instance-108
+ 109 active 0xdeaf006d hashing-instance-109
+ 110 inactive 0xdeaf006e hashing-instance-110
+ 111 active 0xdeaf006f hashing-instance-111
+ 113 active 0xdeaf0071 hashing-instance-113
+ 114 inactive 0xdeaf0072 hashing-instance-114
+ 115 active 0xdeaf0073 hashing-instance-115
+ 116 inactive 0xdeaf0074 hashing-instance-116
+ 117 active 0xdeaf0075 hashing-instance-117
+ 118 inactive 0xdeaf0076 hashing-instance-118
+ 120 inactive 0xdeaf0078 hashing-instance-120
+ 121 active 0xdeaf0079 hashing-instance-121
+ 122 inactive 0xdeaf007a hashing-instance-122
+ 123 active 0xdeaf007b hashing-instance-123
+ 124 inactive 0xdeaf007c hashing-instance-124
+ 125 active 0xdeaf007d hashing-instance-125
+ 127 active 0xdeaf007f hashing-instance-127
+ 128 inactive 0xdeaf0080 hashing-instance-128
+ 129 active 0xdeaf0081 hashing-instance-129
+ 130 inactive 0xdeaf0082 hashing-instance-130
+ 131 active 0xdeaf0083 hashing-instance-131
+ 132 inactive 0xdeaf0084 hashing-instance-132
+ 134 inactive 0xdeaf0086 hashing-instance-134
+ 135 active 0xdeaf0087 hashing-instance-135
+ 136 inactive 0xdeaf0088 hashing-instance-136
+ 137 active 0xdeaf0089 hashing-instance-137
+ 138 inactive 0xdeaf008a hashing-instance-138
+ 139 active 0xdeaf008b hashing-instance-139
+ 141 active 0xdeaf008d hashing-instance-141
+ 142 inactive 0xdeaf008e hashing-instance-142
+ 143 active 0xdeaf008f hashing-instance-143
+ 144 inactive 0xdeaf0090 hashing-instance-144
+ 145 active 0xdeaf0091 hashing-instance-145
+ 146 inactive 0xdeaf0092 hashing-instance-146
+ 148 inactive 0xdeaf0094 hashing-instance-148
+ 149 active 0xdeaf0095 hashing-instance-149
+ 150 inactive 0xdeaf0096 hashing-instance-150
+ 151 active 0xdeaf0097 hashing-instance-151
+ 152 inactive 0xdeaf0098 hashing-instance-152
+ 153 active 0xdeaf0099 hashing-instance-153
+ 155 active 0xdeaf009b hashing-instance-155
+ 156 inactive 0xdeaf009c hashing-instance-156
+ 157 active 0xdeaf009d hashing-instance-157
+ 158 inactive 0xdeaf009e hashing-instance-158
+ 159 active 0xdeaf009f hashing-instance-159
+ 160 inactive 0xdeaf00a0 hashing-instance-160
+ 162 inactive 0xdeaf00a2 hashing-instance-162
+ 163 active 0xdeaf00a3 hashing-instance-163
+ 164 inactive 0xdeaf00a4 hashing-instance-164
+ 165 active 0xdeaf00a5 hashing-instance-165
+ 166 inactive 0xdeaf00a6 hashing-instance-166
+ 167 active 0xdeaf00a7 hashing-instance-167
+ 169 active 0xdeaf00a9 hashing-instance-169
+ 170 inactive 0xdeaf00aa hashing-instance-170
+ 171 active 0xdeaf00ab hashing-instance-171
+ 172 inactive 0xdeaf00ac hashing-instance-172
+ 173 active 0xdeaf00ad hashing-instance-173
+ 174 inactive 0xdeaf00ae hashing-instance-174
+ 176 inactive 0xdeaf00b0 hashing-instance-176
+ 177 active 0xdeaf00b1 hashing-instance-177
+ 178 inactive 0xdeaf00b2 hashing-instance-178
+ 179 active 0xdeaf00b3 hashing-instance-179
+ 180 inactive 0xdeaf00b4 hashing-instance-180
+ 181 active 0xdeaf00b5 hashing-instance-181
+ 183 active 0xdeaf00b7 hashing-instance-183
+ 184 inactive 0xdeaf00b8 hashing-instance-184
+ 185 active 0xdeaf00b9 hashing-instance-185
+ 186 inactive 0xdeaf00ba hashing-instance-186
+ 187 active 0xdeaf00bb hashing-instance-187
+ 188 inactive 0xdeaf00bc hashing-instance-188
+ 190 inactive 0xdeaf00be hashing-instance-190
+ 191 active 0xdeaf00bf hashing-instance-191
+ 192 inactive 0xdeaf00c0 hashing-instance-192
+ 193 active 0xdeaf00c1 hashing-instance-193
+ 194 inactive 0xdeaf00c2 hashing-instance-194
+ 195 active 0xdeaf00c3 hashing-instance-195
+ 197 active 0xdeaf00c5 hashing-instance-197
+ 198 inactive 0xdeaf00c6 hashing-instance-198
+ 199 active 0xdeaf00c7 hashing-instance-199
+ 200 inactive 0xdeaf00c8 hashing-instance-200
+ 201 active 0xdeaf00c9 hashing-instance-201
+ 202 inactive 0xdeaf00ca hashing-instance-202
+ 204 inactive 0xdeaf00cc hashing-instance-204
+ 205 active 0xdeaf00cd hashing-instance-205
+ 206 inactive 0xdeaf00ce hashing-instance-206
+ 207 active 0xdeaf00cf hashing-instance-207
+ 208 inactive 0xdeaf00d0 hashing-instance-208
+ 209 active 0xdeaf00d1 hashing-instance-209
+ 211 active 0xdeaf00d3 hashing-instance-211
+ 212 inactive 0xdeaf00d4 hashing-instance-212
+ 213 active 0xdeaf00d5 hashing-instance-213
+ 214 inactive 0xdeaf00d6 hashing-instance-214
+ 215 active 0xdeaf00d7 hashing-instance-215
+ 216 inactive 0xdeaf00d8 hashing-instance-216
+ 218 inactive 0xdeaf00da hashing-instance-218
+ 219 active 0xdeaf00db hashing-instance-219
+ 220 inactive 0xdeaf00dc hashing-instance-220
+ 221 active 0xdeaf00dd hashing-instance-221
+ 222 inactive 0xdeaf00de hashing-instance-222
+ 223 active 0xdeaf00df hashing-instance-223
+ 225 active 0xdeaf00e1 hashing-instance-225
+ 226 inactive 0xdeaf00e2 hashing-instance-226
+ 227 active 0xdeaf00e3 hashing-instance-227
+ 228 inactive 0xdeaf00e4 hashing-instance-228
+ 229 active 0xdeaf00e5 hashing-instance-229
+ 230 inactive 0xdeaf00e6 hashing-instance-230
+ 232 inactive 0xdeaf00e8 hashing-instance-232
+ 233 active 0xdeaf00e9 hashing-instance-233
+ 234 inactive 0xdeaf00ea hashing-instance-234
+ 235 active 0xdeaf00eb hashing-instance-235
+ 236 inactive 0xdeaf00ec hashing-instance-236
+ 237 active 0xdeaf00ed hashing-instance-237
+ 239 active 0xdeaf00ef hashing-instance-239
+ 240 inactive 0xdeaf00f0 hashing-instance-240
+ 241 active 0xdeaf00f1 hashing-instance-241
+ 242 inactive 0xdeaf00f2 hashing-instance-242
+ 243 active 0xdeaf00f3 hashing-instance-243
+ 244 inactive 0xdeaf00f4 hashing-instance-244
+ 246 inactive 0xdeaf00f6 hashing-instance-246
+ 247 active 0xdeaf00f7 hashing-instance-247
+ 248 inactive 0xdeaf00f8 hashing-instance-248
+ 249 active 0xdeaf00f9 hashing-instance-249
+ 250 inactive 0xdeaf00fa hashing-instance-250
+ 251 active 0xdeaf00fb hashing-instance-251
+ 253 active 0xdeaf00fd hashing-instance-253
+( 254) empty
+ 255 active 0xdeadbeef bar
+ 256 active 0xcafecafe java coffee beans [match len=4]
+ 257 inactive (nil) another one [match len=7]
+inst hash
+ [000] -> 256 -> 128I
+ [001] -> 257I -> 1 -> 129
+ [002] -> 2I -> 130I
+ [003] -> 3 -> 131
+ [004] -> 4I -> 132I
+ [005] -> 5
+ [006] -> 6I -> 134I
+ [007] -> 135
+ [008] -> 8I -> 136I
+ [009] -> 9 -> 137
+ [010] -> 10I -> 138I
+ [011] -> 11 -> 139
+ [012] -> 12I
+ [013] -> 13 -> 141
+ [014] -> 142I
+ [015] -> 15 -> 143
+ [016] -> 16I -> 144I
+ [017] -> 17 -> 145
+ [018] -> 18I -> 146I
+ [019] -> 19
+ [020] -> 20I -> 148I
+ [021] -> 149
+ [022] -> 22I -> 150I
+ [023] -> 23 -> 151
+ [024] -> 24I -> 152I
+ [025] -> 25 -> 153
+ [026] -> 26I
+ [027] -> 27 -> 155
+ [028] -> 156I
+ [029] -> 29 -> 157
+ [030] -> 30I -> 158I
+ [031] -> 31 -> 159
+ [032] -> 32I -> 160I
+ [033] -> 33
+ [034] -> 34I -> 162I
+ [035] -> 163
+ [036] -> 36I -> 164I
+ [037] -> 37 -> 165
+ [038] -> 38I -> 166I
+ [039] -> 39 -> 167
+ [040] -> 40I
+ [041] -> 41 -> 169
+ [042] -> 170I
+ [043] -> 43 -> 171
+ [044] -> 44I -> 172I
+ [045] -> 45 -> 173
+ [046] -> 46I -> 174I
+ [047] -> 47
+ [048] -> 48I -> 176I
+ [049] -> 177
+ [050] -> 50I -> 178I
+ [051] -> 51 -> 179
+ [052] -> 52I -> 180I
+ [053] -> 53 -> 181
+ [054] -> 54I
+ [055] -> 55 -> 183
+ [056] -> 184I
+ [057] -> 57 -> 185
+ [058] -> 58I -> 186I
+ [059] -> 59 -> 187
+ [060] -> 60I -> 188I
+ [061] -> 61
+ [062] -> 62I -> 190I
+ [063] -> 191
+ [064] -> 64I -> 192I
+ [065] -> 65 -> 193
+ [066] -> 66I -> 194I
+ [067] -> 67 -> 195
+ [068] -> 68I
+ [069] -> 69 -> 197
+ [070] -> 198I
+ [071] -> 71 -> 199
+ [072] -> 72I -> 200I
+ [073] -> 73 -> 201
+ [074] -> 74I -> 202I
+ [075] -> 75
+ [076] -> 76I -> 204I
+ [077] -> 205
+ [078] -> 78I -> 206I
+ [079] -> 79 -> 207
+ [080] -> 80I -> 208I
+ [081] -> 81 -> 209
+ [082] -> 82I
+ [083] -> 83 -> 211
+ [084] -> 212I
+ [085] -> 85 -> 213
+ [086] -> 86I -> 214I
+ [087] -> 87 -> 215
+ [088] -> 88I -> 216I
+ [089] -> 89
+ [090] -> 90I -> 218I
+ [091] -> 219
+ [092] -> 92I -> 220I
+ [093] -> 93 -> 221
+ [094] -> 94I -> 222I
+ [095] -> 95 -> 223
+ [096] -> 96I
+ [097] -> 97 -> 225
+ [098] -> 226I
+ [099] -> 99 -> 227
+ [100] -> 100I -> 228I
+ [101] -> 101 -> 229
+ [102] -> 102I -> 230I
+ [103] -> 103
+ [104] -> 104I -> 232I
+ [105] -> 233
+ [106] -> 106I -> 234I
+ [107] -> 107 -> 235
+ [108] -> 108I -> 236I
+ [109] -> 109 -> 237
+ [110] -> 110I
+ [111] -> 111 -> 239
+ [112] -> 240I
+ [113] -> 113 -> 241
+ [114] -> 114I -> 242I
+ [115] -> 115 -> 243
+ [116] -> 116I -> 244I
+ [117] -> 117
+ [118] -> 118I -> 246I
+ [119] -> 247
+ [120] -> 120I -> 248I
+ [121] -> 121 -> 249
+ [122] -> 122I -> 250I
+ [123] -> 123 -> 251
+ [124] -> 124I
+ [125] -> 125 -> 253
+ [126] -> 254E
+ [127] -> 127 -> 255
+name hash
+ [000] -> 85 -> 51
+ [001]
+ [002] -> 87
+ [003] -> 89 -> 88I
+ [004] -> 13
+ [005] -> 243 -> 150I -> 178I -> 190I
+ [006] -> 254E
+ [007] -> 221
+ [008] -> 107 -> 83 -> 165
+ [009] -> 73 -> 218I
+ [010]
+ [011] -> 102I -> 94I -> 46I -> 232I
+ [012]
+ [013] -> 78I
+ [014] -> 247 -> 32I
+ [015] -> 72I
+ [016] -> 65 -> 141 -> 222I
+ [017] -> 33 -> 157 -> 38I
+ [018]
+ [019] -> 209 -> 118I
+ [020] -> 104I
+ [021] -> 9 -> 170I
+ [022] -> 81 -> 92I
+ [023] -> 97
+ [024] -> 120I -> 74I -> 250I
+ [025] -> 23 -> 166I
+ [026] -> 139 -> 204I -> 214I
+ [027] -> 3 -> 235
+ [028] -> 110I
+ [029] -> 80I -> 34I
+ [030] -> 121 -> 55 -> 215
+ [031] -> 53
+ [032] -> 149
+ [033] -> 131
+ [034]
+ [035] -> 61 -> 114I -> 96I -> 138I
+ [036] -> 207
+ [037] -> 93 -> 171
+ [038] -> 251
+ [039] -> 20I
+ [040] -> 109 -> 17
+ [041] -> 47 -> 188I
+ [042]
+ [043] -> 125 -> 199 -> 68I
+ [044] -> 183
+ [045] -> 54I
+ [046]
+ [047] -> 67 -> 122I
+ [048]
+ [049] -> 111 -> 90I -> 236I
+ [050] -> 145
+ [051] -> 123
+ [052]
+ [053]
+ [054]
+ [055] -> 257I
+ [056]
+ [057] -> 2I
+ [058] -> 11 -> 30I
+ [059]
+ [060] -> 5 -> 240I
+ [061] -> 4I
+ [062] -> 1 -> 25 -> 39
+ [063] -> 137 -> 180I
+ [064] -> 197
+ [065] -> 66I -> 64I
+ [066] -> 249
+ [067]
+ [068] -> 201 -> 130I
+ [069] -> 153 -> 48I
+ [070]
+ [071] -> 45 -> 229 -> 82I
+ [072] -> 10I -> 58I
+ [073] -> 213
+ [074]
+ [075] -> 143 -> 255 -> 136I
+ [076] -> 162I -> 242I
+ [077] -> 6I -> 60I
+ [078] -> 127 -> 151
+ [079] -> 144I -> 220I
+ [080] -> 135 -> 44I -> 174I -> 206I
+ [081] -> 185 -> 225 -> 244I
+ [082] -> 103
+ [083] -> 31 -> 228I
+ [084]
+ [085] -> 132I -> 200I
+ [086] -> 95 -> 181 -> 202I -> 248I
+ [087] -> 163
+ [088] -> 256 -> 15 -> 124I -> 18I -> 184I
+ [089] -> 239 -> 241 -> 142I
+ [090]
+ [091]
+ [092] -> 29 -> 52I
+ [093] -> 177 -> 134I
+ [094] -> 194I
+ [095] -> 37
+ [096] -> 155 -> 158I
+ [097] -> 36I -> 186I
+ [098] -> 195 -> 24I -> 128I
+ [099] -> 191 -> 12I -> 16I -> 164I -> 212I -> 234I
+ [100] -> 57
+ [101] -> 40I
+ [102] -> 101 -> 223
+ [103] -> 19 -> 116I -> 208I
+ [104] -> 169
+ [105] -> 253 -> 216I
+ [106]
+ [107] -> 99
+ [108] -> 43
+ [109] -> 233 -> 152I
+ [110] -> 115 -> 129 -> 179
+ [111] -> 176I
+ [112] -> 205 -> 108I -> 8I -> 246I
+ [113] -> 113 -> 159 -> 237 -> 76I
+ [114] -> 62I -> 160I -> 198I
+ [115] -> 27 -> 173
+ [116] -> 41 -> 156I
+ [117] -> 106I -> 172I
+ [118] -> 230I
+ [119] -> 227 -> 226I
+ [120] -> 187 -> 50I -> 192I
+ [121] -> 79 -> 59 -> 26I
+ [122] -> 193 -> 211 -> 100I -> 22I
+ [123] -> 86I -> 146I
+ [124] -> 117
+ [125] -> 71
+ [126] -> 69 -> 148I
+ [127] -> 75 -> 167 -> 219
+
+short name match test cases ...
+-- cache --
+1 0
+01 4444444 foo
+02 4444444 foobar
+[foo]
+ADD -> 1
+HIDE -> 1
+[foobar]
+ADD -> 2
+HIDE -> 2
+[foo bar]
+ADD failed: Invalid argument
+-- cache --
+1 0
+01 4444444 foo bar
+[foo]
+ADD -> 1
+HIDE -> 1
+[foobar]
+ADD -> 2
+HIDE -> 2
+[foo bar]
+ADD -> 1
+HIDE -> 1
+-- cache --
+1 0
+01 4444444 foo blah
+[foo]
+ADD -> 1
+HIDE -> 1
+[foobar]
+ADD -> 2
+HIDE -> 2
+[foo bar]
+ADD failed: Invalid argument
+
+-- revised dirty cache semantics --
++ flags=1 +
+PMDA_CACHE_LOAD failed: No such file or directory
+[ernie]
+ADD -> 0
+SAVE -> 1
+HIDE -> 0
+SAVE -> 0
+[bert]
+ADD -> 1
+SAVE -> 2
+HIDE -> 1
+ADD -> 1
+SAVE -> 0
+[kermit]
+ADD -> 2
+SAVE -> 3
+CULL -> 2
+SAVE -> 2
+[oscar]
+ADD -> 3
+SAVE -> 3
+extra [felix-the-cat]
+ADD -> 4
+SAVE -> 4
+[big bird]
+ADD -> 5
+SAVE -> 5
+SAVE -> 0
+[miss piggy]
+ADD -> 6
+SAVE -> 6
+CULL ALL -> 6
+SAVE -> 0
++ flags=2 +
+PMDA_CACHE_LOAD failed: No such file or directory
+[ernie]
+ADD -> 0
+SAVE -> 1
+HIDE -> 0
+SYNC -> 0
+[bert]
+ADD -> 1
+SAVE -> 2
+HIDE -> 1
+ADD -> 1
+SYNC -> 2
+[kermit]
+ADD -> 2
+SAVE -> 3
+CULL -> 2
+SYNC -> 2
+[oscar]
+ADD -> 3
+SAVE -> 3
+extra [felix-the-cat]
+ADD -> 4
+SYNC -> 4
+[big bird]
+ADD -> 5
+SAVE -> 5
+SYNC -> 0
+[miss piggy]
+ADD -> 6
+SAVE -> 6
+CULL ALL -> 6
+SYNC -> 0
++ flags=3 +
+PMDA_CACHE_LOAD failed: No such file or directory
+[ernie]
+ADD -> 0
+SAVE -> 1
+HIDE -> 0
+SAVE -> 0
+SYNC -> 0
+[bert]
+ADD -> 1
+SAVE -> 2
+HIDE -> 1
+ADD -> 1
+SAVE -> 0
+SYNC -> 2
+[kermit]
+ADD -> 2
+SAVE -> 3
+CULL -> 2
+SAVE -> 2
+SYNC -> 0
+[oscar]
+ADD -> 3
+SAVE -> 3
+extra [felix-the-cat]
+ADD -> 4
+SAVE -> 4
+SYNC -> 0
+[big bird]
+ADD -> 5
+SAVE -> 5
+SAVE -> 0
+SYNC -> 0
+[miss piggy]
+ADD -> 6
+SAVE -> 6
+CULL ALL -> 6
+SAVE -> 0
+SYNC -> 0
diff --git a/qa/202 b/qa/202
new file mode 100755
index 0000000..c271184
--- /dev/null
+++ b/qa/202
@@ -0,0 +1,80 @@
+#! /bin/sh
+# PCP QA Test No. 202
+# check EOL marker in pmlogmerge
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+#debug# tmp=`pwd`/tmp
+rm -f $tmp.* $seq.full
+
+_filter()
+{
+ pmdumplog $1 \
+ | tee -a $seq.full \
+ | $PCP_AWK_PROG '
+/\<mark\>/ { mark++; next }
+/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\./ { rec++ }
+END { printf "%d records",rec
+ if (mark) printf ", and %d marks",mark
+ print ""
+ }'
+ pmdumplog $1 \
+ | $PCP_AWK_PROG >$1.stamp '
+/\<mark\>/ { print $1 "-mark"; next }
+/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\./ { print $1 }'
+}
+
+# real QA test starts here
+rm -f $tmp.A.*
+echo "log mandatory on 40 msec sample.milliseconds" \
+| pmlogger -s 4 -l $tmp.log $tmp.A >>$seq.full 2>&1
+echo
+echo log.A
+cat $tmp.log >>$seq.full
+ls -l $tmp.A.* >>$seq.full
+pmdumplog -l $tmp.A >>$seq.full
+_filter $tmp.A
+
+rm -f $tmp.B.*
+echo "log mandatory on 50 msec sample.milliseconds" \
+| pmlogger -s 6 -l $tmp.log $tmp.B >>$seq.full 2>&1
+echo
+echo log.B
+cat $tmp.log >>$seq.full
+ls -l $tmp.B.* >>$seq.full
+pmdumplog -l $tmp.A >>$seq.full
+_filter $tmp.B
+
+rm -f $tmp.C.*
+pmlogextract $tmp.A $tmp.B $tmp.C
+echo
+echo "log.C == pmlogextract log.A log.B"
+_filter $tmp.C
+
+echo
+echo "mismatch timestamps"
+cat $tmp.A.stamp $tmp.B.stamp \
+| comm -3 - $tmp.C.stamp \
+| sed -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/timestamp/g'
+
+echo
+echo "pmval [no interpolate] ..."
+pmval -U $tmp.C sample.milliseconds 2>&1 \
+| tee -a $seq.full \
+| $PCP_AWK_PROG '
+/suspended/ { mark++; next }
+/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\./ { rec++ }
+END { printf "%d records",rec
+ if (mark) printf ", and %d marks",mark
+ print ""
+ }'
+
diff --git a/qa/202.out b/qa/202.out
new file mode 100644
index 0000000..20998b5
--- /dev/null
+++ b/qa/202.out
@@ -0,0 +1,16 @@
+QA output created by 202
+
+log.A
+5 records
+
+log.B
+7 records
+
+log.C == pmlogextract log.A log.B
+12 records, and 1 marks
+
+mismatch timestamps
+ timestamp-mark
+
+pmval [no interpolate] ...
+8 records, and 1 marks
diff --git a/qa/203 b/qa/203
new file mode 100755
index 0000000..170c00a
--- /dev/null
+++ b/qa/203
@@ -0,0 +1,105 @@
+#! /bin/sh
+# PCP QA Test No. 203
+# pmlogextract, then pmlogextract again (nested mark record processing)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+_filter()
+{
+ pmdumplog $1 \
+ | $PCP_AWK_PROG '
+/<mark>/ { mark++; next }
+/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\./ { rec++ }
+END { printf "%d records",rec
+ if (mark) printf ", and %d marks",mark
+ print ""
+ }'
+ pmdumplog $1 \
+ | $PCP_AWK_PROG >$1.stamp '
+/<mark>/ { print $1 "-mark"; next }
+/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\./ { print $1 }'
+}
+
+# real QA test starts here
+rm -f $tmp.A.*
+echo "log mandatory on 20 msec sample.milliseconds" \
+| pmlogger -s 4 $tmp.A >/dev/null 2>&1
+echo
+echo log.A
+_filter $tmp.A
+
+rm -f $tmp.B.*
+echo "log mandatory on 25 msec sample.milliseconds" \
+| pmlogger -s 5 $tmp.B >/dev/null 2>&1
+echo
+echo log.B
+_filter $tmp.B
+
+rm -f $tmp.C.*
+pmlogextract $tmp.A $tmp.B $tmp.C
+echo
+echo "log.C == pmlogextract log.A log.B"
+_filter $tmp.C
+
+echo
+echo "mismatch timestamps"
+cat $tmp.A.stamp $tmp.B.stamp \
+| comm -3 - $tmp.C.stamp \
+| sed -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/timestamp/g'
+
+echo
+echo "pmval [no interpolate] ..."
+rm -f $seq.full
+pmval -U $tmp.C sample.milliseconds 2>&1 \
+| tee $seq.full \
+| $PCP_AWK_PROG '
+/suspended/ { mark++; next }
+/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\./ { rec++ }
+END { printf "%d records",rec
+ if (mark) printf ", and %d marks",mark
+ print ""
+ }'
+
+rm -f $tmp.D.*
+echo "log mandatory on 20 msec sample.milliseconds" \
+| pmlogger -s 6 $tmp.D >/dev/null 2>&1
+echo
+echo log.D
+_filter $tmp.D
+
+rm -f $tmp.E.*
+pmlogextract $tmp.C $tmp.D $tmp.E
+echo
+echo "log.E == pmlogextract log.C log.D"
+_filter $tmp.E
+
+echo
+echo "mismatch timestamps"
+cat $tmp.C.stamp $tmp.D.stamp \
+| comm -3 - $tmp.E.stamp \
+| sed -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/timestamp/g'
+
+echo
+echo "pmval [no interpolate] ..."
+pmval -U $tmp.E sample.milliseconds 2>&1 \
+| tee -a $seq.full \
+| $PCP_AWK_PROG '
+/suspended/ { mark++; next }
+/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\./ { rec++ }
+END { printf "%d records",rec
+ if (mark) printf ", and %d marks",mark
+ print ""
+ }'
+
+
diff --git a/qa/203.out b/qa/203.out
new file mode 100644
index 0000000..818920b
--- /dev/null
+++ b/qa/203.out
@@ -0,0 +1,28 @@
+QA output created by 203
+
+log.A
+5 records
+
+log.B
+6 records
+
+log.C == pmlogextract log.A log.B
+11 records, and 1 marks
+
+mismatch timestamps
+ timestamp-mark
+
+pmval [no interpolate] ...
+7 records, and 1 marks
+
+log.D
+7 records
+
+log.E == pmlogextract log.C log.D
+18 records, and 2 marks
+
+mismatch timestamps
+ timestamp-mark
+
+pmval [no interpolate] ...
+12 records, and 2 marks
diff --git a/qa/204 b/qa/204
new file mode 100755
index 0000000..00d3eac
--- /dev/null
+++ b/qa/204
@@ -0,0 +1,36 @@
+#! /bin/sh
+# PCP QA Test No. 204
+# localhost in archive label .. not!
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ pmdumplog -l $tmp \
+ | grep host \
+ | sed -e "s/metrics from host .*/metrics from host REALHOSTNAME/"
+}
+
+# real QA test starts here
+
+rm -f $tmp.*
+echo
+echo "pmlogger with no -h"
+echo "log mandatory on 10msec hinv.ncpu" | pmlogger -s 1 $tmp >/dev/null 2>&1
+_filter
+
+rm -f $tmp.*
+echo
+echo "pmlogger -h localhost"
+echo "log mandatory on 10msec hinv.ncpu" | pmlogger -h localhost -s 1 $tmp >/dev/null 2>&1
+_filter
diff --git a/qa/204.out b/qa/204.out
new file mode 100644
index 0000000..59ec3f4
--- /dev/null
+++ b/qa/204.out
@@ -0,0 +1,7 @@
+QA output created by 204
+
+pmlogger with no -h
+Performance metrics from host REALHOSTNAME
+
+pmlogger -h localhost
+Performance metrics from host REALHOSTNAME
diff --git a/qa/205 b/qa/205
new file mode 100755
index 0000000..afacf21
--- /dev/null
+++ b/qa/205
@@ -0,0 +1,18 @@
+#! /bin/sh
+# PCP QA Test No. 205
+# TIMEOUT_NEVER mode for __pmGetPDU()
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+# real QA test starts here
+src/pducheck -N
diff --git a/qa/205.out b/qa/205.out
new file mode 100644
index 0000000..ce02da5
--- /dev/null
+++ b/qa/205.out
@@ -0,0 +1,17 @@
+QA output created by 205
++ Using TIMEOUT_NEVER instead of TIMEOUT_DEFAULT +
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 0 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 1 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 2 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 3 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 4 +
++++++++++++++++++++++++++++
diff --git a/qa/206 b/qa/206
new file mode 100755
index 0000000..f4455cc
--- /dev/null
+++ b/qa/206
@@ -0,0 +1,59 @@
+#! /bin/sh
+# PCP QA Test No. 206
+# interpolate mode and archives with gaps and mark records
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+host=`hostname`
+date=`pmdumplog -l src/gap | grep commencing |
+ sed -e 's/ commencing //' -e 's/\.[0-9]*//'`
+offset=`_arch_start src/gap 0.5`
+
+_filter_val()
+{
+ sed \
+ -e "s/$host[\.a-zA-Z0-9\-]*/HOST/g" \
+ -e "s/$date/DATE/g" \
+ -e "s/start:.*/start: START_TIME/g" \
+ -e "s/end:.*/end: END_TIME/g" \
+ -e "s/^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9][ ][ ]*[0-9][0-9\.]*/TIME VALUE/" \
+ -e "s/^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIME/" \
+ -e "s/VALUE[ ]*$/VALUE/"
+}
+
+# real QA test starts here
+rm -f $tmp.out
+touch $tmp.out
+
+for metric in \
+ hinv.ncpu \
+ pmcd.pdu_in.total pmcd.pdu_in.fetch \
+ pmcd.numagents \
+ sample.bin
+do
+ echo >> $tmp.out
+ echo "pmval args: -U -r" >>$tmp.out
+ pmval -r -U src/gap $metric >>$tmp.out 2>$tmp.err
+ cat $tmp.err >>$tmp.out
+ echo >>$tmp.out
+ echo "pmval args: -a -r" >>$tmp.out
+ pmval -s 10 -O $offset -r -t2 -a src/gap $metric >>$tmp.out 2>$tmp.err
+ cat $tmp.err >>$tmp.out
+ echo >>$tmp.out
+ echo "pmval args: -a" >>$tmp.out
+ pmval -s 10 -O $offset -t2 -a src/gap $metric >>$tmp.out 2>$tmp.err
+ cat $tmp.err >>$tmp.out
+done
+
+cat $tmp.out | _filter_val
diff --git a/qa/206.out b/qa/206.out
new file mode 100644
index 0000000..05cbbeb
--- /dev/null
+++ b/qa/206.out
@@ -0,0 +1,405 @@
+QA output created by 206
+
+pmval args: -U -r
+
+metric: hinv.ncpu
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: discrete instantaneous value
+units: none
+samples: all
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME Archive logging suspended
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval args: -a -r
+
+metric: hinv.ncpu
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: discrete instantaneous value
+units: none
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+
+pmval args: -a
+
+metric: hinv.ncpu
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: discrete instantaneous value
+units: none
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+
+pmval args: -U -r
+
+metric: pmcd.pdu_in.total
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: cumulative counter
+units: count
+samples: all
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME Archive logging suspended
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval args: -a -r
+
+metric: pmcd.pdu_in.total
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: cumulative counter
+units: count
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+
+pmval args: -a
+
+metric: pmcd.pdu_in.total
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+TIME VALUE
+
+pmval args: -U -r
+
+metric: pmcd.pdu_in.fetch
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: cumulative counter
+units: count
+samples: all
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME Archive logging suspended
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval args: -a -r
+
+metric: pmcd.pdu_in.fetch
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: cumulative counter
+units: count
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+
+pmval args: -a
+
+metric: pmcd.pdu_in.fetch
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+TIME VALUE
+
+pmval args: -U -r
+
+metric: pmcd.numagents
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: instantaneous value
+units: none
+samples: all
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME Archive logging suspended
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval args: -a -r
+
+metric: pmcd.numagents
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: instantaneous value
+units: none
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+
+pmval args: -a
+
+metric: pmcd.numagents
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: instantaneous value
+units: none
+samples: 10
+interval: 2.00 sec
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME VALUE
+TIME No values available
+TIME No values available
+TIME No values available
+TIME VALUE
+TIME VALUE
+
+pmval args: -U -r
+
+metric: sample.bin
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: instantaneous value
+units: none
+samples: all
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME Archive logging suspended
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval args: -a -r
+
+metric: sample.bin
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: instantaneous value
+units: none
+samples: 10
+interval: 2.00 sec
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME No values available
+TIME No values available
+TIME No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
+
+pmval args: -a
+
+metric: sample.bin
+archive: src/gap
+host: HOST
+start: START_TIME
+end: END_TIME
+semantics: instantaneous value
+units: none
+samples: 10
+interval: 2.00 sec
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME VALUE 200 ? 400 ? ? ? ? ?
+TIME No values available
+TIME No values available
+TIME No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+TIME VALUE ? 300 400 ? ? ? ? ?
+TIME VALUE ? 300 400 ? ? ? ? ?
diff --git a/qa/207 b/qa/207
new file mode 100755
index 0000000..d6cb7f3
--- /dev/null
+++ b/qa/207
@@ -0,0 +1,142 @@
+#! /bin/sh
+# PCP QA Test No. 207
+# Simple PMNS exerciser after dynamic PMNS changes
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e "s;$tmp;TMP;g"
+}
+
+cat <<'End-of-File' >$tmp.pmns
+root {
+ power
+ simple
+ set
+ dynamic
+}
+
+power {
+ zero 1:1:1
+ one 2:2:2
+ two 4:4:4
+ three 8:8:8
+ four 16:16:16
+ five 32:32:32
+ six 64:64:64
+ seven 128:128:128
+ eight 256:256:256
+ nine 510:512:512
+ ten 510:1024:1023
+ eleven 510:2048:1023
+}
+
+simple {
+ first 0:0:0
+ last 510:4095:1023
+}
+
+set {
+ first 0:0:1
+ last 510:4095:1022
+}
+
+dynamic {
+ first 0:*:*
+ last 510:*:*
+}
+End-of-File
+
+# real QA test starts here
+echo "=== Limits on PMID fields ==="
+pminfo -n $tmp.pmns -m
+
+echo
+echo "=== Error cases ==="
+cat <<'End-of-File' >$tmp.pmns
+root {
+ reserved_domain 511:0:0
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ big_domain 512:0:0
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ big_cluster 0:4096:0
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ big_serial 0:0:1024
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ bad_domain x:1:1
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ bad_cluster 1:x:1
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ bad_serial 1:1:x
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ dyn_bad_cluster 13:0:*
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+echo
+cat <<'End-of-File' >$tmp.pmns
+root {
+ dyn_bad_serial 13:*:0
+}
+End-of-File
+pminfo -n $tmp.pmns -m 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/207.out b/qa/207.out
new file mode 100644
index 0000000..8daca1a
--- /dev/null
+++ b/qa/207.out
@@ -0,0 +1,84 @@
+QA output created by 207
+=== Limits on PMID fields ===
+power.zero PMID: 1.1.1
+power.one PMID: 2.2.2
+power.two PMID: 4.4.4
+power.three PMID: 8.8.8
+power.four PMID: 16.16.16
+power.five PMID: 32.32.32
+power.six PMID: 64.64.64
+power.seven PMID: 128.128.128
+power.eight PMID: 256.256.256
+power.nine PMID: 510.512.512
+power.ten PMID: 510.1024.1023
+power.eleven PMID: 510.2048.1023
+simple.first PMID: 0.0.0
+simple.last PMID: 510.4095.1023
+set.first PMID: 0.0.1
+set.last PMID: 510.4095.1022
+dynamic.first PMID: 0.*.*
+dynamic.last PMID: 510.*.*
+
+=== Error cases ===
+[TMP.pmns:2] Error Parsing ASCII PMNS: Illegal domain field in PMID
+ reserved_domain 511:0:0
+ ^
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ ^
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Illegal domain field in PMID
+ big_domain 512:0:0
+ ^
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ ^
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Illegal cluster field in PMID
+ big_cluster 0:4096:0
+ ^
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ ^
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Illegal item field in PMID
+ big_serial 0:0:1024
+ ^
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ ^
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ bad_domain x:1:1
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ bad_cluster 1:x:1
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ bad_serial 1:1:x
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Illegal PMID
+ dyn_bad_cluster 13:0:*
+ ^
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ ^
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
+
+[TMP.pmns:2] Error Parsing ASCII PMNS: Illegal PMID
+ dyn_bad_serial 13:*:0
+ ^
+[TMP.pmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ ^
+ ^
+pminfo: Cannot load namespace from "TMP.pmns": Problems parsing PMNS definitions
diff --git a/qa/208 b/qa/208
new file mode 100755
index 0000000..70fbbb2
--- /dev/null
+++ b/qa/208
@@ -0,0 +1,82 @@
+#! /bin/sh
+# PCP QA Test No. 208
+#
+# Exercise dynamic PMNS features
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q ' RESERVED_DO_NOT_USE[ ]*511' $PCP_VAR_DIR/pmns/stdpmid
+then
+ :
+else
+ echo "No support for dynamic PMNS entries" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/value /s//xalue /' \
+ | _filter_dumpresult \
+ | sed \
+ -e 's/xalue /value /' \
+ -e '/Name space load:/s/[0-9][0-9.]*/NNN/'
+}
+
+# real QA test starts here
+echo "=== PMNS_LOCAL ==="
+
+for name in sample.secret sample.secret.bar sample.secret.foo.one
+do
+ src/torture_pmns -xb -v -s 1 -n $PCP_VAR_DIR/pmns/root $name \
+| _filter
+done
+
+echo
+echo "=== PMNS_REMOTE (daemon PMDA) ==="
+
+for name in sample.secret \
+ sample.secret.bar \
+ sample.secret.foo \
+ sample.secret.foo.one \
+ sample.secret.foo.bar \
+ sample.secret.foo.bar.grunt \
+ sample.secret.foo.bar.grunt.snort \
+ sample.secret.foo.bar.grunt.snort.huff.puff.seven
+do
+ src/torture_pmns -b -v $name \
+| _filter
+done
+
+echo
+echo "=== PMNS_REMOTE (DSO PMDA) ==="
+
+for name in sampledso.secret \
+ sampledso.secret.bar \
+ sampledso.secret.foo \
+ sampledso.secret.foo.one \
+ sampledso.secret.foo.bar \
+ sampledso.secret.foo.bar.grunt \
+ sampledso.secret.foo.bar.grunt.snort \
+ sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+do
+ src/torture_pmns -b -v $name \
+| _filter
+done
+
+# success, all done
+exit
diff --git a/qa/208.out b/qa/208.out
new file mode 100644
index 0000000..b28a638
--- /dev/null
+++ b/qa/208.out
@@ -0,0 +1,253 @@
+QA output created by 208
+=== PMNS_LOCAL ===
+Name space load: NNN msec
+pmLookupName() returns 1
+sample.secret: id[0] = 29.*.*
+
+=== metric 0 === name: sample.secret pmid 29.*.*
+pmNameID() returns -12358 (Unknown or illegal metric identifier)
+pmNameAll() returns -12358 (Unknown or illegal metric identifier)
+pmGetChildren() returns 0
+pmGetChildrenStatus() returns 0
+Name space load: NNN msec
+pmLookupName() returns 1
+sample.secret.bar: id[0] = 29.*.*
+
+=== metric 0 === name: sample.secret.bar pmid 29.*.*
+pmNameID() returns -12358 (Unknown or illegal metric identifier)
+pmNameAll() returns -12358 (Unknown or illegal metric identifier)
+pmGetChildren() returns -12357 (Unknown metric name)
+pmGetChildrenStatus() returns -12357 (Unknown metric name)
+Name space load: NNN msec
+pmLookupName() returns 1
+sample.secret.foo.one: id[0] = 29.*.*
+
+=== metric 0 === name: sample.secret.foo.one pmid 29.*.*
+pmNameID() returns -12358 (Unknown or illegal metric identifier)
+pmNameAll() returns -12358 (Unknown or illegal metric identifier)
+pmGetChildren() returns -12357 (Unknown metric name)
+pmGetChildrenStatus() returns -12357 (Unknown metric name)
+
+=== PMNS_REMOTE (daemon PMDA) ===
+pmLookupName() returns -12357 (Unknown metric name)
+sample.secret: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sample.secret pmid PM_ID_NULL
+pmGetChildren() returns 2
+pmGetChildrenStatus() returns 2
+children of "sample.secret" ...
+ bar <s = 0>
+ foo <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns 1
+sample.secret.bar: id[0] = 29.0.1000
+
+=== metric 0 === name: sample.secret.bar pmid 29.0.1000
+pmNameID() returns 0
+pmid: 29.0.1000 name: sample.secret.bar
+pmNameAll() returns 1
+pmid: 29.0.1000 name: sample.secret.bar
+pmLookupDesc() returns 0
+
+Real-time result ...
+pmResult ... numpmid: 1
+ 29.0.1000 (sample.secret.bar): numval: 1 valfmt: 1 vlist[]:
+ value "foo"
+pmLookupName() returns -12357 (Unknown metric name)
+sample.secret.foo: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sample.secret.foo pmid PM_ID_NULL
+pmGetChildren() returns 3
+pmGetChildrenStatus() returns 3
+children of "sample.secret.foo" ...
+ bar <s = 1>
+ one <s = 0>
+ two <s = 0>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns 1
+sample.secret.foo.one: id[0] = 29.0.1001
+
+=== metric 0 === name: sample.secret.foo.one pmid 29.0.1001
+pmNameID() returns 0
+pmid: 29.0.1001 name: sample.secret.foo.one
+pmNameAll() returns 1
+pmid: 29.0.1001 name: sample.secret.foo.one
+pmLookupDesc() returns 0
+
+Real-time result ...
+pmResult ... numpmid: 1
+ 29.0.1001 (sample.secret.foo.one): numval: 1 valfmt: 0 vlist[]:
+ value 1
+pmLookupName() returns -12357 (Unknown metric name)
+sample.secret.foo.bar: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sample.secret.foo.bar pmid PM_ID_NULL
+pmGetChildren() returns 4
+pmGetChildrenStatus() returns 4
+children of "sample.secret.foo.bar" ...
+ four <s = 0>
+ grunt <s = 1>
+ max <s = 1>
+ three <s = 0>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns -12357 (Unknown metric name)
+sample.secret.foo.bar.grunt: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sample.secret.foo.bar.grunt pmid PM_ID_NULL
+pmGetChildren() returns 2
+pmGetChildrenStatus() returns 2
+children of "sample.secret.foo.bar.grunt" ...
+ five <s = 0>
+ snort <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns -12357 (Unknown metric name)
+sample.secret.foo.bar.grunt.snort: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sample.secret.foo.bar.grunt.snort pmid PM_ID_NULL
+pmGetChildren() returns 2
+pmGetChildrenStatus() returns 2
+children of "sample.secret.foo.bar.grunt.snort" ...
+ huff <s = 1>
+ six <s = 0>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns 1
+sample.secret.foo.bar.grunt.snort.huff.puff.seven: id[0] = 29.0.1007
+
+=== metric 0 === name: sample.secret.foo.bar.grunt.snort.huff.puff.seven pmid 29.0.1007
+pmNameID() returns 0
+pmid: 29.0.1007 name: sample.secret.foo.bar.grunt.snort.huff.puff.seven
+pmNameAll() returns 1
+pmid: 29.0.1007 name: sample.secret.foo.bar.grunt.snort.huff.puff.seven
+pmLookupDesc() returns 0
+
+Real-time result ...
+pmResult ... numpmid: 1
+ 29.0.1007 (sample.secret.foo.bar.grunt.snort.huff.puff.seven): numval: 1 valfmt: 0 vlist[]:
+ value 7
+
+=== PMNS_REMOTE (DSO PMDA) ===
+pmLookupName() returns -12357 (Unknown metric name)
+sampledso.secret: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sampledso.secret pmid PM_ID_NULL
+pmGetChildren() returns 2
+pmGetChildrenStatus() returns 2
+children of "sampledso.secret" ...
+ bar <s = 0>
+ foo <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns 1
+sampledso.secret.bar: id[0] = 30.0.1000
+
+=== metric 0 === name: sampledso.secret.bar pmid 30.0.1000
+pmNameID() returns 0
+pmid: 30.0.1000 name: sampledso.secret.bar
+pmNameAll() returns 1
+pmid: 30.0.1000 name: sampledso.secret.bar
+pmLookupDesc() returns 0
+
+Real-time result ...
+pmResult ... numpmid: 1
+ 30.0.1000 (sampledso.secret.bar): numval: 1 valfmt: 1 vlist[]:
+ value "foo"
+pmLookupName() returns -12357 (Unknown metric name)
+sampledso.secret.foo: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sampledso.secret.foo pmid PM_ID_NULL
+pmGetChildren() returns 3
+pmGetChildrenStatus() returns 3
+children of "sampledso.secret.foo" ...
+ bar <s = 1>
+ one <s = 0>
+ two <s = 0>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns 1
+sampledso.secret.foo.one: id[0] = 30.0.1001
+
+=== metric 0 === name: sampledso.secret.foo.one pmid 30.0.1001
+pmNameID() returns 0
+pmid: 30.0.1001 name: sampledso.secret.foo.one
+pmNameAll() returns 1
+pmid: 30.0.1001 name: sampledso.secret.foo.one
+pmLookupDesc() returns 0
+
+Real-time result ...
+pmResult ... numpmid: 1
+ 30.0.1001 (sampledso.secret.foo.one): numval: 1 valfmt: 0 vlist[]:
+ value 1
+pmLookupName() returns -12357 (Unknown metric name)
+sampledso.secret.foo.bar: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sampledso.secret.foo.bar pmid PM_ID_NULL
+pmGetChildren() returns 4
+pmGetChildrenStatus() returns 4
+children of "sampledso.secret.foo.bar" ...
+ four <s = 0>
+ grunt <s = 1>
+ max <s = 1>
+ three <s = 0>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns -12357 (Unknown metric name)
+sampledso.secret.foo.bar.grunt: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sampledso.secret.foo.bar.grunt pmid PM_ID_NULL
+pmGetChildren() returns 2
+pmGetChildrenStatus() returns 2
+children of "sampledso.secret.foo.bar.grunt" ...
+ five <s = 0>
+ snort <s = 1>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns -12357 (Unknown metric name)
+sampledso.secret.foo.bar.grunt.snort: id[0] = PM_ID_NULL
+
+=== metric 0 === name: sampledso.secret.foo.bar.grunt.snort pmid PM_ID_NULL
+pmGetChildren() returns 2
+pmGetChildrenStatus() returns 2
+children of "sampledso.secret.foo.bar.grunt.snort" ...
+ huff <s = 1>
+ six <s = 0>
+
+Real-time result ...
+pmResult ... numpmid: 1
+ PM_ID_NULL (<noname>): No PMCD agent for domain of request
+pmLookupName() returns 1
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven: id[0] = 30.0.1007
+
+=== metric 0 === name: sampledso.secret.foo.bar.grunt.snort.huff.puff.seven pmid 30.0.1007
+pmNameID() returns 0
+pmid: 30.0.1007 name: sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+pmNameAll() returns 1
+pmid: 30.0.1007 name: sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+pmLookupDesc() returns 0
+
+Real-time result ...
+pmResult ... numpmid: 1
+ 30.0.1007 (sampledso.secret.foo.bar.grunt.snort.huff.puff.seven): numval: 1 valfmt: 0 vlist[]:
+ value 7
diff --git a/qa/209 b/qa/209
new file mode 100755
index 0000000..ebd03e9
--- /dev/null
+++ b/qa/209
@@ -0,0 +1,36 @@
+#! /bin/sh
+# PCP QA Test No. 209
+# pmval dumps core?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/960624.08.17
+ ln $seq.out.1 $seq.out
+else
+ # no support for V1 archives
+ arch=src/960624.08.17_v2
+ ln $seq.out.2 $seq.out
+fi
+
+tmp=/tmp/$$
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmval -z -r -n src/root_irix -U $arch disk.dev.total 2>$tmp.err
+cat $tmp.err
+
+# all done
+exit
diff --git a/qa/209.out.1 b/qa/209.out.1
new file mode 100644
index 0000000..a14f81e
--- /dev/null
+++ b/qa/209.out.1
@@ -0,0 +1,16 @@
+QA output created by 209
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+metric: disk.dev.total
+archive: src/960624.08.17
+host: brutus.corp
+start: Sun Jun 23 15:23:46 1996
+end: Sun Jun 23 15:43:26 1996
+semantics: cumulative counter
+units: count
+samples: all
+
+ dks0d1 dks0d2 dks0d3 dks0d4 dks1d1 dks1d2 dks1d3 dks1d4 dks2d1 dks2d2 dks2d3 dks2d4 dks3d1 dks3d2 dks3d3 dks3d4 dks5d1 dks5d2 dks5d3 dks5d4 dks6d1 dks6d2 dks6d3 dks6d4 dks7d1 dks7d2 dks7d3 dks7d4 dks110d1 dks110d2 dks110d3 dks110d4 dks111d1 dks111d2 dks111d3 dks111d4 dks115d1 dks115d2 dks115d3 dks115d4 dks116d1 dks116d2 dks116d3 dks116d4 dks117d1 dks117d2 dks117d3 dks117d4 dks117d5 dks130d1 dks130d2 dks130d3 dks130d4 dks131d1 dks131d2 dks131d3 dks131d4 dks132d1 dks132d2 dks132d3 dks132d4 dks133d1 dks133d2 dks133d3 dks133d4 dks134d1 dks134d2 dks134d3 dks134d4 dks135d1 dks135d2 dks135d3 dks135d4 dks136d1 dks136d3 dks137d1 dks137d2 dks137d3 dks137d4 dks137d5 dks137d6
+15:43:26.742 2179713246 2149933229 2149931057 2177896810 2177851150 2149975046 2177909078 2149971966 2177941126 2149986929 2178291201 2150178333 2178244943 2149975042 2178319137 2149911780 2201012620 2149967357 2196871060 2149963250 2196780777 2149911703 2200690176 2149911703 2200115440 2149921667 2195869025 2149921787 2178669246 2149967351 2178801070 2149963238 2178782108 2178896278 2150127024 2178916821 2190894008 2195071413 2191063526 2149943959 2190966795 2149986927 2199279879 2149911703 2195127062 2149921801 2195199191 2149921578 2190998537 2150047828 2179008195 2150130011 2179200710 2150064918 2179290664 2150127526 2179325328 2150047715 2195280938 2195598333 2195428928 2150178331 2191239180 2149911703 2191272199 2149928211 2195501328 2149942663 2191344036 2150056509 2191417687 2150127794 2180981204 2181061356 2263307216 2149928179 2181039527 2149942788 2177537028 2149911705 2177576841
+
+pmval: pmFetchArchive: End of PCP archive log
diff --git a/qa/209.out.2 b/qa/209.out.2
new file mode 100644
index 0000000..28b3edc
--- /dev/null
+++ b/qa/209.out.2
@@ -0,0 +1,16 @@
+QA output created by 209
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+metric: disk.dev.total
+archive: src/960624.08.17_v2
+host: brutus.corp
+start: Sun Jun 23 15:23:46 1996
+end: Sun Jun 23 15:43:26 1996
+semantics: cumulative counter
+units: count
+samples: all
+
+ dks0d1 dks0d2 dks0d3 dks0d4 dks1d1 dks1d2 dks1d3 dks1d4 dks2d1 dks2d2 dks2d3 dks2d4 dks3d1 dks3d2 dks3d3 dks3d4 dks5d1 dks5d2 dks5d3 dks5d4 dks6d1 dks6d2 dks6d3 dks6d4 dks7d1 dks7d2 dks7d3 dks7d4 dks110d1 dks110d2 dks110d3 dks110d4 dks111d1 dks111d2 dks111d3 dks111d4 dks115d1 dks115d2 dks115d3 dks115d4 dks116d1 dks116d2 dks116d3 dks116d4 dks117d1 dks117d2 dks117d3 dks117d4 dks117d5 dks130d1 dks130d2 dks130d3 dks130d4 dks131d1 dks131d2 dks131d3 dks131d4 dks132d1 dks132d2 dks132d3 dks132d4 dks133d1 dks133d2 dks133d3 dks133d4 dks134d1 dks134d2 dks134d3 dks134d4 dks135d1 dks135d2 dks135d3 dks135d4 dks136d1 dks136d3 dks137d1 dks137d2 dks137d3 dks137d4 dks137d5 dks137d6
+15:43:26.742 2179713246 2149933229 2149931057 2177896810 2177851150 2149975046 2177909078 2149971966 2177941126 2149986929 2178291201 2150178333 2178244943 2149975042 2178319137 2149911780 2201012620 2149967357 2196871060 2149963250 2196780777 2149911703 2200690176 2149911703 2200115440 2149921667 2195869025 2149921787 2178669246 2149967351 2178801070 2149963238 2178782108 2178896278 2150127024 2178916821 2190894008 2195071413 2191063526 2149943959 2190966795 2149986927 2199279879 2149911703 2195127062 2149921801 2195199191 2149921578 2190998537 2150047828 2179008195 2150130011 2179200710 2150064918 2179290664 2150127526 2179325328 2150047715 2195280938 2195598333 2195428928 2150178331 2191239180 2149911703 2191272199 2149928211 2195501328 2149942663 2191344036 2150056509 2191417687 2150127794 2180981204 2181061356 2263307216 2149928179 2181039527 2149942788 2177537028 2149911705 2177576841
+
+pmval: pmFetchArchive: End of PCP archive log
diff --git a/qa/210 b/qa/210
new file mode 100755
index 0000000..4d49b8f
--- /dev/null
+++ b/qa/210
@@ -0,0 +1,94 @@
+#! /bin/sh
+# PCP QA Test No. 210
+# Check dynamic metrics work with PMAPI clients - DSO PMDA version
+# See also 467 for the related tests using pmdumptext
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q ' RESERVED_DO_NOT_USE[ ]*511' $PCP_VAR_DIR/pmns/stdpmid
+then
+ :
+else
+ echo "No support for dynamic PMNS entries" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+_filter_probe()
+{
+ $PCP_AWK_PROG '
+# sample ... sampledso.secret.foo.bar.max.redirect 8 0 0 0 0 0 0 4 0
+/secret\.foo\.bar\.max\.redirect/ { if ($2 > 3 )
+ print $1,"> 3 values ..."
+ else
+ print
+ next
+ }
+ { print }'
+}
+
+_do() {
+ echo
+ echo "== $* =="
+ pminfo $* | LC_COLLATE=POSIX sort
+ pmprobe -v $* | _filter_probe | LC_COLLATE=POSIX sort
+}
+
+# real QA test starts here
+
+echo "PMNS traversal tests ..."
+pminfo sampledso | grep '\.secret\.' | LC_COLLATE=POSIX sort
+_do sampledso.secret
+_do sampledso.secret.bar sampledso.secret.foo
+_do sampledso.secret.foo.bar.grunt
+
+echo
+echo "pmval ..."
+pmval -s 3 -t 0.1 sampledso.secret.foo.bar.grunt.five \
+| sed -e '/^host:.*$/s/.*/HOST/'
+
+echo
+echo "pmie ..."
+echo 'sampledso.secret.foo.bar.four == 4 -> print "Bingo!"' \
+| pmie -t 0.1 -T 0.3 2>&1 \
+| _filter_pmie_log \
+| sed -e '/.* Info: evaluator exiting/d' \
+| sort -u
+
+echo
+echo "pmlogger ..."
+cat <<'End-of-File' >$tmp.config
+log mandatory on 100 msec {
+ sampledso.secret.bar
+ sampledso.secret.foo.one
+ sampledso.secret.foo.two
+ sampledso.secret.foo.bar.three
+ sampledso.secret.foo.bar.four
+ sampledso.secret.foo.bar.grunt
+}
+End-of-File
+echo "+ pmlogger -T 0.3 -c $tmp.config -l $tmp.log $tmp" >>$seq.full
+pmlogger -T 0.3 -c $tmp.config -l $tmp.log $tmp
+
+cat $tmp.log >>$seq.full
+pmdumplog $tmp 2>&1 \
+| tee -a $seq.full \
+| _filter_pmdumplog \
+| sed -e 1,4d
+
+
+exit
diff --git a/qa/210.out b/qa/210.out
new file mode 100644
index 0000000..fc1dfdd
--- /dev/null
+++ b/qa/210.out
@@ -0,0 +1,103 @@
+QA output created by 210
+PMNS traversal tests ...
+sampledso.secret.bar
+sampledso.secret.foo.bar.four
+sampledso.secret.foo.bar.grunt.five
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+sampledso.secret.foo.bar.grunt.snort.six
+sampledso.secret.foo.bar.max.redirect
+sampledso.secret.foo.bar.three
+sampledso.secret.foo.one
+sampledso.secret.foo.two
+
+== sampledso.secret ==
+sampledso.secret.bar
+sampledso.secret.foo.bar.four
+sampledso.secret.foo.bar.grunt.five
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+sampledso.secret.foo.bar.grunt.snort.six
+sampledso.secret.foo.bar.max.redirect
+sampledso.secret.foo.bar.three
+sampledso.secret.foo.one
+sampledso.secret.foo.two
+sampledso.secret.bar 1 "foo"
+sampledso.secret.foo.bar.four 1 4
+sampledso.secret.foo.bar.grunt.five 1 5
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven 1 7
+sampledso.secret.foo.bar.grunt.snort.six 1 6
+sampledso.secret.foo.bar.max.redirect > 3 values ...
+sampledso.secret.foo.bar.three 1 3
+sampledso.secret.foo.one 1 1
+sampledso.secret.foo.two 1 2
+
+== sampledso.secret.bar sampledso.secret.foo ==
+sampledso.secret.bar
+sampledso.secret.foo.bar.four
+sampledso.secret.foo.bar.grunt.five
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+sampledso.secret.foo.bar.grunt.snort.six
+sampledso.secret.foo.bar.max.redirect
+sampledso.secret.foo.bar.three
+sampledso.secret.foo.one
+sampledso.secret.foo.two
+sampledso.secret.bar 1 "foo"
+sampledso.secret.foo.bar.four 1 4
+sampledso.secret.foo.bar.grunt.five 1 5
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven 1 7
+sampledso.secret.foo.bar.grunt.snort.six 1 6
+sampledso.secret.foo.bar.max.redirect > 3 values ...
+sampledso.secret.foo.bar.three 1 3
+sampledso.secret.foo.one 1 1
+sampledso.secret.foo.two 1 2
+
+== sampledso.secret.foo.bar.grunt ==
+sampledso.secret.foo.bar.grunt.five
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+sampledso.secret.foo.bar.grunt.snort.six
+sampledso.secret.foo.bar.grunt.five 1 5
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven 1 7
+sampledso.secret.foo.bar.grunt.snort.six 1 6
+
+pmval ...
+
+metric: sampledso.secret.foo.bar.grunt.five
+HOST
+semantics: instantaneous value
+units: count
+samples: 3
+interval: 0.10 sec
+ 5
+ 5
+ 5
+
+pmie ...
+DATE: Bingo!
+
+pmlogger ...
+
+TIMESTAMP 30.0.1007 (sampledso.secret.foo.bar.grunt.snort.huff.puff.seven): value 7
+ 30.0.1006 (sampledso.secret.foo.bar.grunt.snort.six): value 6
+ 30.0.1005 (sampledso.secret.foo.bar.grunt.five): value 5
+ 30.0.1004 (sampledso.secret.foo.bar.four): value 4
+ 30.0.1003 (sampledso.secret.foo.bar.three): value 3
+ 30.0.1002 (sampledso.secret.foo.two): value 2
+ 30.0.1001 (sampledso.secret.foo.one): value 1
+ 30.0.1000 (sampledso.secret.bar): value "foo"
+
+TIMESTAMP 30.0.1007 (sampledso.secret.foo.bar.grunt.snort.huff.puff.seven): value 7
+ 30.0.1006 (sampledso.secret.foo.bar.grunt.snort.six): value 6
+ 30.0.1005 (sampledso.secret.foo.bar.grunt.five): value 5
+ 30.0.1004 (sampledso.secret.foo.bar.four): value 4
+ 30.0.1003 (sampledso.secret.foo.bar.three): value 3
+ 30.0.1002 (sampledso.secret.foo.two): value 2
+ 30.0.1001 (sampledso.secret.foo.one): value 1
+ 30.0.1000 (sampledso.secret.bar): value "foo"
+
+TIMESTAMP 30.0.1007 (sampledso.secret.foo.bar.grunt.snort.huff.puff.seven): value 7
+ 30.0.1006 (sampledso.secret.foo.bar.grunt.snort.six): value 6
+ 30.0.1005 (sampledso.secret.foo.bar.grunt.five): value 5
+ 30.0.1004 (sampledso.secret.foo.bar.four): value 4
+ 30.0.1003 (sampledso.secret.foo.bar.three): value 3
+ 30.0.1002 (sampledso.secret.foo.two): value 2
+ 30.0.1001 (sampledso.secret.foo.one): value 1
+ 30.0.1000 (sampledso.secret.bar): value "foo"
diff --git a/qa/211 b/qa/211
new file mode 100755
index 0000000..5bbd339
--- /dev/null
+++ b/qa/211
@@ -0,0 +1,93 @@
+#! /bin/sh
+# PCP QA Test No. 211
+# Check dynamic metrics work with PMAPI clients - DAEMON PMDA version
+# See also 468 for the related tests using pmdumptext
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+
+if grep -q ' RESERVED_DO_NOT_USE[ ]*511' $PCP_VAR_DIR/pmns/stdpmid
+then
+ :
+else
+ echo "No support for dynamic PMNS entries" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+_filter_probe()
+{
+ $PCP_AWK_PROG '
+# sample ... sample.secret.foo.bar.max.redirect 8 0 0 0 0 0 0 4 0
+/secret\.foo\.bar\.max\.redirect/ { if ($2 > 3 )
+ print $1,"> 3 values ..."
+ else
+ print
+ next
+ }
+ { print }'
+}
+
+_do() {
+ echo
+ echo "== $* =="
+ pminfo $* | LC_COLLATE=POSIX sort
+ pmprobe -v $* | _filter_probe | LC_COLLATE=POSIX sort
+}
+
+# real QA test starts here
+
+echo "PMNS traversal tests ..."
+pminfo sample | grep '\.secret\.' | LC_COLLATE=POSIX sort
+_do sample.secret
+_do sample.secret.bar sample.secret.foo
+_do sample.secret.foo.bar.grunt
+
+echo
+echo "pmval ..."
+pmval -s 3 -t 0.1 sample.secret.foo.bar.grunt.five \
+| sed -e '/^host:.*$/s/.*/HOST/' \
+
+echo
+echo "pmie ..."
+echo 'sample.secret.foo.bar.four == 4 -> print "Bingo!"' \
+| pmie -t 0.1 -T 0.3 2>&1 \
+| _filter_pmie_log \
+| sed -e '/.* Info: evaluator exiting/d' \
+| sort -u
+
+echo
+echo "pmlogger ..."
+cat <<'End-of-File' >$tmp.config
+log mandatory on 100 msec {
+ sample.secret.bar
+ sample.secret.foo.one
+ sample.secret.foo.two
+ sample.secret.foo.bar.three
+ sample.secret.foo.bar.four
+ sample.secret.foo.bar.grunt
+}
+End-of-File
+pmlogger -T 0.3 -c $tmp.config -l $tmp.log $tmp
+cat $tmp.log >>$seq.full
+pmdumplog $tmp 2>&1 \
+| tee -a $seq.full \
+| _filter_pmdumplog \
+| sed -e 1,4d
+
+
+exit
diff --git a/qa/211.out b/qa/211.out
new file mode 100644
index 0000000..fdfe725
--- /dev/null
+++ b/qa/211.out
@@ -0,0 +1,103 @@
+QA output created by 211
+PMNS traversal tests ...
+sample.secret.bar
+sample.secret.foo.bar.four
+sample.secret.foo.bar.grunt.five
+sample.secret.foo.bar.grunt.snort.huff.puff.seven
+sample.secret.foo.bar.grunt.snort.six
+sample.secret.foo.bar.max.redirect
+sample.secret.foo.bar.three
+sample.secret.foo.one
+sample.secret.foo.two
+
+== sample.secret ==
+sample.secret.bar
+sample.secret.foo.bar.four
+sample.secret.foo.bar.grunt.five
+sample.secret.foo.bar.grunt.snort.huff.puff.seven
+sample.secret.foo.bar.grunt.snort.six
+sample.secret.foo.bar.max.redirect
+sample.secret.foo.bar.three
+sample.secret.foo.one
+sample.secret.foo.two
+sample.secret.bar 1 "foo"
+sample.secret.foo.bar.four 1 4
+sample.secret.foo.bar.grunt.five 1 5
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1 7
+sample.secret.foo.bar.grunt.snort.six 1 6
+sample.secret.foo.bar.max.redirect > 3 values ...
+sample.secret.foo.bar.three 1 3
+sample.secret.foo.one 1 1
+sample.secret.foo.two 1 2
+
+== sample.secret.bar sample.secret.foo ==
+sample.secret.bar
+sample.secret.foo.bar.four
+sample.secret.foo.bar.grunt.five
+sample.secret.foo.bar.grunt.snort.huff.puff.seven
+sample.secret.foo.bar.grunt.snort.six
+sample.secret.foo.bar.max.redirect
+sample.secret.foo.bar.three
+sample.secret.foo.one
+sample.secret.foo.two
+sample.secret.bar 1 "foo"
+sample.secret.foo.bar.four 1 4
+sample.secret.foo.bar.grunt.five 1 5
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1 7
+sample.secret.foo.bar.grunt.snort.six 1 6
+sample.secret.foo.bar.max.redirect > 3 values ...
+sample.secret.foo.bar.three 1 3
+sample.secret.foo.one 1 1
+sample.secret.foo.two 1 2
+
+== sample.secret.foo.bar.grunt ==
+sample.secret.foo.bar.grunt.five
+sample.secret.foo.bar.grunt.snort.huff.puff.seven
+sample.secret.foo.bar.grunt.snort.six
+sample.secret.foo.bar.grunt.five 1 5
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1 7
+sample.secret.foo.bar.grunt.snort.six 1 6
+
+pmval ...
+
+metric: sample.secret.foo.bar.grunt.five
+HOST
+semantics: instantaneous value
+units: count
+samples: 3
+interval: 0.10 sec
+ 5
+ 5
+ 5
+
+pmie ...
+DATE: Bingo!
+
+pmlogger ...
+
+TIMESTAMP 29.0.1007 (sample.secret.foo.bar.grunt.snort.huff.puff.seven): value 7
+ 29.0.1006 (sample.secret.foo.bar.grunt.snort.six): value 6
+ 29.0.1005 (sample.secret.foo.bar.grunt.five): value 5
+ 29.0.1004 (sample.secret.foo.bar.four): value 4
+ 29.0.1003 (sample.secret.foo.bar.three): value 3
+ 29.0.1002 (sample.secret.foo.two): value 2
+ 29.0.1001 (sample.secret.foo.one): value 1
+ 29.0.1000 (sample.secret.bar): value "foo"
+
+TIMESTAMP 29.0.1007 (sample.secret.foo.bar.grunt.snort.huff.puff.seven): value 7
+ 29.0.1006 (sample.secret.foo.bar.grunt.snort.six): value 6
+ 29.0.1005 (sample.secret.foo.bar.grunt.five): value 5
+ 29.0.1004 (sample.secret.foo.bar.four): value 4
+ 29.0.1003 (sample.secret.foo.bar.three): value 3
+ 29.0.1002 (sample.secret.foo.two): value 2
+ 29.0.1001 (sample.secret.foo.one): value 1
+ 29.0.1000 (sample.secret.bar): value "foo"
+
+TIMESTAMP 29.0.1007 (sample.secret.foo.bar.grunt.snort.huff.puff.seven): value 7
+ 29.0.1006 (sample.secret.foo.bar.grunt.snort.six): value 6
+ 29.0.1005 (sample.secret.foo.bar.grunt.five): value 5
+ 29.0.1004 (sample.secret.foo.bar.four): value 4
+ 29.0.1003 (sample.secret.foo.bar.three): value 3
+ 29.0.1002 (sample.secret.foo.two): value 2
+ 29.0.1001 (sample.secret.foo.one): value 1
+ 29.0.1000 (sample.secret.bar): value "foo"
diff --git a/qa/212 b/qa/212
new file mode 100755
index 0000000..20bfaa4
--- /dev/null
+++ b/qa/212
@@ -0,0 +1,177 @@
+#! /bin/sh
+# PCP QA Test No. 212
+# can I make pmdacisco dump core during exit()?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./localconfig
+if [ $PCP_PLATFORM != irix ]
+then
+ echo "This version of cisco PMDA does not use sprocs" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+. ./common.product
+. ./common.check
+. ./common.filter
+
+status=0
+_needclean=true
+signal=$PCP_BINADM_DIR/pmsignal
+trap "_cleanup" 0 1 2 3 15
+
+_cleanup()
+{
+ if $_needclean
+ then
+ if [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ]
+ then
+ file $PMCD_LOG_DIR/core*
+ fi
+ rm -f $tmp.*
+ $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File
+g/^#$seq#.*pmdacisco/s/^#$seq#//
+w!
+q
+End-of-File
+ _needclean=false
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ fi
+ exit $status
+}
+
+# real QA test starts here
+status=1
+$sudo rm -f $PMCD_LOG_DIR/core*
+
+echo "SIGINT to pmdacisco parent ..."
+for i in 1 2 3
+do
+ for j in 1 2 3 4 5
+ do
+ pid=`ps $PCP_PS_ALL_FLAGS | grep pmdacisco | grep -v grep \
+ | $PCP_AWK_PROG '
+ { pid[$2]++; ppid[$3]++; next }
+ END { for (p in pid) {
+ for (pp in ppid) {
+ if (p == pp) {
+ print p
+ exit
+ }
+ }
+ }
+ }'`
+ [ ! -z "$pid" ] && break
+ sleep 1
+ done
+
+ if [ -z "$pid" ]
+ then
+ echo "Arrgh ... no pmdacisco parent process?"
+ ps $PCP_PS_ALL_FLAGS | grep pmdacisco
+ exit
+ fi
+ $sudo $signal -s TERM $pid
+ sleep 5
+ [ "`echo core*`" != "core*" ] && _cleanup
+ echo "Restart with SIGHUP"
+ $sudo $signal -a -s HUP pmcd
+ sleep 5
+done
+
+echo "SIGINT to pmdacisco sproc ..."
+for i in 1 2 3
+do
+ pid=`ps $PCP_PS_ALL_FLAGS | grep pmdacisco | grep -v grep \
+ | $PCP_AWK_PROG '
+ { pid[$2]++; ppid[$3]++; next }
+END { for (p in pid) {
+ fail=0
+ for (pp in ppid) {
+ if (p == pp) {
+ fail=1
+ break
+ }
+ }
+ if (fail == 0) {
+ print p
+ exit
+ }
+ }
+ }'`
+ if [ -z "$pid" ]
+ then
+ echo "Arrgh ... no pmdacisco sproc process?"
+ ps $PCP_PS_ALL_FLAGS | grep pmdacisco
+ exit
+ fi
+ $sudo $signal -s TERM $pid
+ sleep 5
+ [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
+ echo "Restart with SIGHUP"
+ $sudo $signal -a -s HUP pmcd
+ sleep 5
+done
+
+echo
+echo "start pmcd ..."
+for i in 1 2 3
+do
+ rm -f $PMCD_LOG_DIR/core*
+ if [ $1 -eq 1 ]
+ then
+ $sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+ else
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ fi
+ _wait_for_pmcd
+ [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
+done
+
+echo
+echo "stop pmcd ..."
+for i in 1 2 3
+do
+ $sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+ _wait_for_pmcd
+ rm -f $PMCD_LOG_DIR/core*
+ $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+ [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
+done
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+
+echo
+for i in 1 2 3
+do
+ echo "[pass $i] configure pmdacisco and notify pmcd ..."
+ $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File
+g/^#$seq#.*pmdacisco/s/^#$seq#//
+w!
+q
+End-of-File
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+
+ echo "[pass $i] unconfigure pmdacisco and notify pmcd ..."
+ $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File
+g/^[^#].*pmdacisco/s/^/#$seq#/
+w!
+q
+End-of-File
+ rm -f $PMCD_LOG_DIR/core*
+ $sudo $signal -a -s HUP pmcd
+ [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
+done
+
+echo
+echo "all done ..."
+status=0
+exit
diff --git a/qa/212.out b/qa/212.out
new file mode 100644
index 0000000..d38c510
--- /dev/null
+++ b/qa/212.out
@@ -0,0 +1,55 @@
+QA output created by 212
+SIGINT to pmdacisco parent ...
+Restart with SIGHUP
+Restart with SIGHUP
+Restart with SIGHUP
+SIGINT to pmdacisco sproc ...
+Restart with SIGHUP
+Restart with SIGHUP
+Restart with SIGHUP
+
+start pmcd ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+stop pmcd ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+[pass 1] configure pmdacisco and notify pmcd ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+[pass 1] unconfigure pmdacisco and notify pmcd ...
+[pass 2] configure pmdacisco and notify pmcd ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+[pass 2] unconfigure pmdacisco and notify pmcd ...
+[pass 3] configure pmdacisco and notify pmcd ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+[pass 3] unconfigure pmdacisco and notify pmcd ...
+
+all done ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/213 b/qa/213
new file mode 100755
index 0000000..f5ad597
--- /dev/null
+++ b/qa/213
@@ -0,0 +1,128 @@
+#! /bin/sh
+# PCP QA Test No. 213
+# exercise dbpmda with dynamic metrics
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if echo help | dbpmda | grep -q children
+then
+ :
+else
+ echo "No dynamic metric support in dbpmda" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+username=`id -u -n`
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+culldir=false
+
+_cleanup()
+{
+ rm -f $tmp.*
+ $sudo rm -f $files
+ $culldir && $sudo rm -fr "$PCP_TMP_DIR/mmv"
+}
+
+# is a pre-existing mmv directory in place? if so, write access needed
+if [ -d "$PCP_TMP_DIR/mmv" ]
+then
+ [ -w "$PCP_TMP_DIR/mmv" ] || _notrun "Cannot write to $PCP_TMP_DIR/mmv"
+ $sudo rm -rf $PCP_TMP_DIR/mmv/*
+else
+ culldir=true
+ $sudo mkdir -p "$PCP_TMP_DIR/mmv"
+ $sudo chown `whoami` "$PCP_TMP_DIR/mmv" # local user - tmpdir writing
+ $sudo chgrp $PCP_GROUP "$PCP_TMP_DIR/mmv" # group pcp - pmdammv reading
+fi
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e "s;$PCP_TMP_DIR;\$PCP_TMP_DIR;" \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/dbpmda([0-9][0-9]*)/dbpmda(PID)/' \
+ -e "s/ -U $username//g" \
+ -e "s/\.$DSO_SUFFIX/.DSO_SUFFIX/g" \
+ | _filter_dumpresult
+}
+
+pipeargs=""
+id pcp >/dev/null 2>&1 && pipeargs="-U $username"
+
+# real QA test starts here
+echo "=== DSO PMDA test ==="
+cat <<End-of-File | dbpmda -ei 2>&1 | _filter
+open dso $PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+name 30.0.1001
+name 30.0.1007
+name 2.4.1
+pmid sampledso.secret.foo.two
+pmid sampledso.secret.foo.bar.grunt.snort.six
+pmid sampledso.secret.foo.bar.max.redirect
+children sampledso.secret.foo
+traverse sampledso.secret.foo
+children sampledso.secret.foo.bar
+traverse sampledso.secret.foo.bar
+End-of-File
+
+echo
+echo "=== Daemon PMDA test ==="
+cat <<End-of-File | dbpmda -ei 2>&1 | _filter
+open pipe $PCP_PMDAS_DIR/sample/pmdasample $pipeargs 29
+name 29.0.1001
+name 29.0.1007
+name 2.4.1
+pmid sample.secret.foo.two
+pmid sample.secret.foo.bar.grunt.snort.six
+pmid sample.secret.foo.bar.max.redirect
+children sample.secret.foo
+traverse sample.secret.foo
+children sample.secret.foo.bar
+traverse sample.secret.foo.bar
+End-of-File
+
+echo
+echo "=== MMV PMDA test ==="
+src/mmv_genstats
+echo "installed mmv files ..."
+find $PCP_TMP_DIR/mmv -type f | sed -e "s;$PCP_TMP_DIR;PCP_TMP_DIR;"
+cat <<End-of-File >$tmp.pmns
+root {
+ mmv 70:*:*
+}
+End-of-File
+cat <<End-of-File | dbpmda -ei -n $tmp.pmns 2>&1 | _filter
+desc mmv.test.strings
+fetch mmv.test.strings mmv.test.counter
+text mmv.test.strings
+store mmv.reload "1"
+open pipe $PCP_PMDAS_DIR/mmv/pmdammv $pipeargs
+desc mmv.test.strings
+fetch mmv.test.strings mmv.test.counter
+text mmv.test.strings
+store mmv.reload "1"
+desc mmv.no.such.metric
+close
+open dso $PCP_PMDAS_DIR/mmv/pmda_mmv.$DSO_SUFFIX mmv_init 70
+desc mmv.test.strings
+fetch mmv.test.strings mmv.test.counter
+text mmv.test.strings
+store mmv.reload "1"
+End-of-File
+
+# success, all done
+exit
diff --git a/qa/213.out b/qa/213.out
new file mode 100644
index 0000000..53cd280
--- /dev/null
+++ b/qa/213.out
@@ -0,0 +1,167 @@
+QA output created by 213
+=== DSO PMDA test ===
+dbpmda> open dso $PCP_PMDAS_DIR/sample/pmda_sample.DSO_SUFFIX sample_init 30
+dbpmda> name 30.0.1001
+PMID: 30.0.1001
+ sampledso.secret.foo.one
+dbpmda> name 30.0.1007
+PMID: 30.0.1007
+ sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+dbpmda> name 2.4.1
+PMID: 2.4.1
+ sampledso.secret.foo.bar.max.redirect
+dbpmda> pmid sampledso.secret.foo.two
+Metric: sampledso.secret.foo.two
+ 30.0.1002
+dbpmda> pmid sampledso.secret.foo.bar.grunt.snort.six
+Metric: sampledso.secret.foo.bar.grunt.snort.six
+ 30.0.1006
+dbpmda> pmid sampledso.secret.foo.bar.max.redirect
+Metric: sampledso.secret.foo.bar.max.redirect
+ 2.4.1
+dbpmda> children sampledso.secret.foo
+Metric: sampledso.secret.foo
+ non-leaf bar
+ leaf one
+ leaf two
+dbpmda> traverse sampledso.secret.foo
+Metric: sampledso.secret.foo
+ leaf sampledso.secret.foo.bar.max.redirect
+ leaf sampledso.secret.foo.one
+ leaf sampledso.secret.foo.two
+ leaf sampledso.secret.foo.bar.three
+ leaf sampledso.secret.foo.bar.four
+ leaf sampledso.secret.foo.bar.grunt.five
+ leaf sampledso.secret.foo.bar.grunt.snort.six
+ leaf sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+dbpmda> children sampledso.secret.foo.bar
+Metric: sampledso.secret.foo.bar
+ non-leaf max
+ leaf three
+ leaf four
+ non-leaf grunt
+dbpmda> traverse sampledso.secret.foo.bar
+Metric: sampledso.secret.foo.bar
+ leaf sampledso.secret.foo.bar.max.redirect
+ leaf sampledso.secret.foo.bar.three
+ leaf sampledso.secret.foo.bar.four
+ leaf sampledso.secret.foo.bar.grunt.five
+ leaf sampledso.secret.foo.bar.grunt.snort.six
+ leaf sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+dbpmda>
+
+=== Daemon PMDA test ===
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample 29
+dbpmda> name 29.0.1001
+PMID: 29.0.1001
+ sample.secret.foo.one
+dbpmda> name 29.0.1007
+PMID: 29.0.1007
+ sample.secret.foo.bar.grunt.snort.huff.puff.seven
+dbpmda> name 2.4.1
+PMID: 2.4.1
+ sample.secret.foo.bar.max.redirect
+dbpmda> pmid sample.secret.foo.two
+Metric: sample.secret.foo.two
+ 29.0.1002
+dbpmda> pmid sample.secret.foo.bar.grunt.snort.six
+Metric: sample.secret.foo.bar.grunt.snort.six
+ 29.0.1006
+dbpmda> pmid sample.secret.foo.bar.max.redirect
+Metric: sample.secret.foo.bar.max.redirect
+ 2.4.1
+dbpmda> children sample.secret.foo
+Metric: sample.secret.foo
+ non-leaf bar
+ leaf one
+ leaf two
+dbpmda> traverse sample.secret.foo
+Metric: sample.secret.foo
+ sample.secret.foo.bar.max.redirect
+ sample.secret.foo.one
+ sample.secret.foo.two
+ sample.secret.foo.bar.three
+ sample.secret.foo.bar.four
+ sample.secret.foo.bar.grunt.five
+ sample.secret.foo.bar.grunt.snort.six
+ sample.secret.foo.bar.grunt.snort.huff.puff.seven
+dbpmda> children sample.secret.foo.bar
+Metric: sample.secret.foo.bar
+ non-leaf max
+ leaf three
+ leaf four
+ non-leaf grunt
+dbpmda> traverse sample.secret.foo.bar
+Metric: sample.secret.foo.bar
+ sample.secret.foo.bar.max.redirect
+ sample.secret.foo.bar.three
+ sample.secret.foo.bar.four
+ sample.secret.foo.bar.grunt.five
+ sample.secret.foo.bar.grunt.snort.six
+ sample.secret.foo.bar.grunt.snort.huff.puff.seven
+dbpmda>
+
+=== MMV PMDA test ===
+installed mmv files ...
+PCP_TMP_DIR/mmv/test
+dbpmda> desc mmv.test.strings
+Warning: No PMDA currently opened
+dbpmda> fetch mmv.test.strings mmv.test.counter
+Warning: No PMDA currently opened
+dbpmda> text mmv.test.strings
+Warning: No PMDA currently opened
+dbpmda> store mmv.reload "1"
+Warning: No PMDA currently opened
+dbpmda> open pipe $PCP_PMDAS_DIR/mmv/pmdammv
+Start pmdammv PMDA: $PCP_PMDAS_DIR/mmv/pmdammv
+dbpmda> desc mmv.test.strings
+PMID: 70.1.6
+ Data Type: string InDom: 70.2049 0x11800801
+ Semantics: instant Units: none
+dbpmda> fetch mmv.test.strings mmv.test.counter
+PMID(s): 70.1.6 70.1.1
+pmResult ... numpmid: 2
+ 70.1.6 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value STRING
+ inst [1 or ???] value STRING
+ 70.1.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER NUMBER HEXNUMBER
+dbpmda> text mmv.test.strings
+PMID: 70.1.6
+[test string metrics]
+Yes, this is a test string metric with instances
+dbpmda> store mmv.reload "1"
+PMID: 70.0.0
+Getting description...
+Getting Result Structure...
+70.0.0: 0 -> 1
+Sending Result...
+dbpmda> desc mmv.no.such.metric
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> close
+dbpmda> open dso $PCP_PMDAS_DIR/mmv/pmda_mmv.DSO_SUFFIX mmv_init 70
+dbpmda> desc mmv.test.strings
+PMID: 70.1.6
+ Data Type: string InDom: 70.2049 0x11800801
+ Semantics: instant Units: none
+dbpmda> fetch mmv.test.strings mmv.test.counter
+PMID(s): 70.1.6 70.1.1
+pmResult ... numpmid: 2
+ 70.1.6 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value STRING
+ inst [1 or ???] value STRING
+ 70.1.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER NUMBER HEXNUMBER
+dbpmda> text mmv.test.strings
+PMID: 70.1.6
+[test string metrics]
+Yes, this is a test string metric with instances
+dbpmda> store mmv.reload "1"
+PMID: 70.0.0
+Getting description...
+Getting Result Structure...
+70.0.0: 0 -> 1
+dbpmda>
diff --git a/qa/214 b/qa/214
new file mode 100755
index 0000000..60acfcb
--- /dev/null
+++ b/qa/214
@@ -0,0 +1,75 @@
+#! /bin/sh
+# PCP QA Test No. 214
+# Check timzone of the output archive from pmlogextract.
+#
+# Copyright (c) 2009 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if pmlogextract -\? 2>&1 | grep -q .-f
+then
+ :
+else
+ echo "No -f option for pmlogextract to select output timezone" >$seq.notrun
+ exit
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/PID for pmlogger/d'
+}
+
+# real QA test starts here
+
+infiles=`echo src/tzchange*.0 | sed -e 's/\.0//g'`
+for file in $infiles
+do
+ echo "=== $file ==="
+ pmdumplog -L -z $file | _filter
+ echo
+done
+
+for xxx in 1 2 3 4 5
+do
+ case "$xxx"
+ in
+ 1) # all 6 archives, 3 timezones
+ files="$infiles"
+ ;;
+ 2) # 3 archives, 3 timezones
+ files="`ls src/tzchange*.0 | sed -e '/\.meta/d' -e '/\.index/d' | grep '.-a' | tr '\012' ' ' | sed -e 's/ *$//'`"
+ ;;
+ 3) # 2 archives, 2 timezones
+ files="`ls src/tzchange*.0 | sed -e '/\.meta/d' -e '/\.index/d' | grep '.-a' | sed -e 2q | tr '\012' ' ' | sed -e 's/ *$//'`"
+ ;;
+ 4) # 1 archive, 1 timezone
+ files="`ls src/tzchange*.0 | sed -e '/\.meta/d' -e '/\.index/d' | grep '.-a' | sed -e 1q | tr '\012' ' ' | sed -e 's/ *$//'`"
+ ;;
+ 5) # 2 archives, 1 timezone
+ files="`ls src/tzchange*.0 | sed -e '/\.meta/d' -e '/\.index/d' | grep '.-11' | sed -e 2q | tr '\012' ' ' | sed -e 's/ *$//'`"
+ ;;
+ esac
+
+ for arg in "" "-f"
+ do
+ echo
+ echo "=== pmlogextract $arg $files ==="
+ rm -f $tmp.*
+ pmlogextract -z $arg $files $tmp
+ pmdumplog -L -z $tmp | _filter
+ done
+done
+
+# success, all done
+exit
diff --git a/qa/214.out b/qa/214.out
new file mode 100644
index 0000000..394482b
--- /dev/null
+++ b/qa/214.out
@@ -0,0 +1,207 @@
+QA output created by 214
+=== src/tzchange-10-a ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 10:49:14.259 2009
+ ending Fri Oct 16 10:49:15.060 2009
+Archive timezone: EST-10
+
+=== src/tzchange-10-b ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 10:49:15.066 2009
+ ending Fri Oct 16 10:49:15.866 2009
+Archive timezone: EST-10
+
+=== src/tzchange-11-a ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 11:49:19.458 2009
+ ending Fri Oct 16 11:49:20.258 2009
+Archive timezone: EST-11
+
+=== src/tzchange-11-b ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 11:49:20.262 2009
+ ending Fri Oct 16 11:49:21.062 2009
+Archive timezone: EST-11
+
+=== src/tzchange-12-a ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 12:49:24.572 2009
+ ending Fri Oct 16 12:49:25.372 2009
+Archive timezone: EST-12
+
+=== src/tzchange-12-b ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 12:49:25.379 2009
+ ending Fri Oct 16 12:49:26.178 2009
+Archive timezone: EST-12
+
+
+=== pmlogextract src/tzchange-10-a src/tzchange-10-b src/tzchange-11-a src/tzchange-11-b src/tzchange-12-a src/tzchange-12-b ===
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-12-b timezone: EST-12 [will be used]
+archive: src/tzchange-10-a timezone: EST-10 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-12-b timezone: EST-12 [will be used]
+archive: src/tzchange-10-b timezone: EST-10 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-12-b timezone: EST-12 [will be used]
+archive: src/tzchange-11-a timezone: EST-11 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-12-b timezone: EST-12 [will be used]
+archive: src/tzchange-11-b timezone: EST-11 [will be ignored]
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 12:49:14.259 2009
+ ending Fri Oct 16 12:49:26.178 2009
+Archive timezone: EST-12
+
+=== pmlogextract -f src/tzchange-10-a src/tzchange-10-b src/tzchange-11-a src/tzchange-11-b src/tzchange-12-a src/tzchange-12-b ===
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-10-a timezone: EST-10 [will be used]
+archive: src/tzchange-11-a timezone: EST-11 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-10-a timezone: EST-10 [will be used]
+archive: src/tzchange-11-b timezone: EST-11 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-10-a timezone: EST-10 [will be used]
+archive: src/tzchange-12-a timezone: EST-12 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-10-a timezone: EST-10 [will be used]
+archive: src/tzchange-12-b timezone: EST-12 [will be ignored]
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 10:49:14.259 2009
+ ending Fri Oct 16 10:49:26.178 2009
+Archive timezone: EST-10
+
+=== pmlogextract src/tzchange-10-a.0 src/tzchange-11-a.0 src/tzchange-12-a.0 ===
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-12-a.0 timezone: EST-12 [will be used]
+archive: src/tzchange-10-a.0 timezone: EST-10 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-12-a.0 timezone: EST-12 [will be used]
+archive: src/tzchange-11-a.0 timezone: EST-11 [will be ignored]
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 12:49:14.259 2009
+ ending Fri Oct 16 12:49:25.372 2009
+Archive timezone: EST-12
+
+=== pmlogextract -f src/tzchange-10-a.0 src/tzchange-11-a.0 src/tzchange-12-a.0 ===
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-10-a.0 timezone: EST-10 [will be used]
+archive: src/tzchange-11-a.0 timezone: EST-11 [will be ignored]
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-10-a.0 timezone: EST-10 [will be used]
+archive: src/tzchange-12-a.0 timezone: EST-12 [will be ignored]
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 10:49:14.259 2009
+ ending Fri Oct 16 10:49:25.372 2009
+Archive timezone: EST-10
+
+=== pmlogextract src/tzchange-10-a.0 src/tzchange-11-a.0 ===
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-11-a.0 timezone: EST-11 [will be used]
+archive: src/tzchange-10-a.0 timezone: EST-10 [will be ignored]
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 11:49:14.259 2009
+ ending Fri Oct 16 11:49:20.258 2009
+Archive timezone: EST-11
+
+=== pmlogextract -f src/tzchange-10-a.0 src/tzchange-11-a.0 ===
+pmlogextract: Warning: timezone mismatch for input archives
+archive: src/tzchange-10-a.0 timezone: EST-10 [will be used]
+archive: src/tzchange-11-a.0 timezone: EST-11 [will be ignored]
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 10:49:14.259 2009
+ ending Fri Oct 16 10:49:20.258 2009
+Archive timezone: EST-10
+
+=== pmlogextract src/tzchange-10-a.0 ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 10:49:14.259 2009
+ ending Fri Oct 16 10:49:15.060 2009
+Archive timezone: EST-10
+
+=== pmlogextract -f src/tzchange-10-a.0 ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 10:49:14.259 2009
+ ending Fri Oct 16 10:49:15.060 2009
+Archive timezone: EST-10
+
+=== pmlogextract src/tzchange-11-a.0 src/tzchange-11-b.0 ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 11:49:19.458 2009
+ ending Fri Oct 16 11:49:21.062 2009
+Archive timezone: EST-11
+
+=== pmlogextract -f src/tzchange-11-a.0 src/tzchange-11-b.0 ===
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Fri Oct 16 11:49:19.458 2009
+ ending Fri Oct 16 11:49:21.062 2009
+Archive timezone: EST-11
diff --git a/qa/215 b/qa/215
new file mode 100755
index 0000000..dd19c26
--- /dev/null
+++ b/qa/215
@@ -0,0 +1,159 @@
+#! /bin/sh
+# PCP QA Test No. 215
+# libpcp_socks + pmsocks testing
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+if [ "`pmsocks echo ok 2>&1`" != ok ]
+then
+ echo "pmsocks is not installed and/or not configured" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+rm -f $seq.out
+. ./localconfig
+if [ $PCP_PLATFORM = linux ]
+then
+ ln $seq.out.linux $seq.out
+elif [ $PCP_PLATFORM = irix ]
+then
+ ln $seq.out.irix $seq.out
+else
+ echo "Warning: no validated output for $PCP_PLATFORM"
+fi
+
+# get standard filters
+. ./common.filter
+. ./common.check
+. ./common.product
+. ./common.config
+
+status=0
+signal=$PCP_BINADM_DIR/pmsignal
+trap "_interrupt; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_interrupt()
+{
+ [ "X$KILLER" != "X" ] && $signal -s TERM $KILLER
+}
+
+_filter()
+{
+ egrep '(Rconnect direct)|(debug)|(value)|(^[ 0-9]*$)' \
+ | sed -e 's/ret=0,.*/no error/' \
+ | sed -e 's/discrete instantaneous/DISCRETE or INSTANTANEOUS/' \
+ | sed -e 's/instantaneous/DISCRETE or INSTANTANEOUS/'
+}
+
+# real QA test starts here
+otherhost=`./getpmcdhosts -L -n 1 2>$tmp.out`
+if [ -z "$otherhost" ]
+then
+ echo "Cannot find a suitable remote pmcd host" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit
+fi
+dname=`pmhostname | sed -e 's/^[a-z0-9]*\.//'`
+if ! grep sgi $dname >/dev/null
+then
+ echo "QA host is not in the SGI domain" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit
+fi
+
+SOCKS_SERVER=$PCPQA_SOCKS_SERVER
+SOCKS_NS=`_host_to_ipaddr $SOCKS_SERVER`
+SOCKS_DEBUG=
+PMCD_CONNECT_TIMEOUT=120
+PMCD_REQUEST_TIMEOUT=120
+export SOCKS_SERVER SOCKS_NS SOCKS_DEBUG PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+rm -f $seq.full
+touch $seq.full
+
+KILLER=""
+for host in www.sgi.com.au $otherhost localhost
+do
+ for i in 1 2
+ do
+ rm -f $tmp.${host}_${i}*
+ echo "log advisory on once pmcd.control" \
+ | pmsocks pmlogger -h $host -l $tmp.${host}_$i.log $tmp.${host}_$i >$tmp.${host}_$i.err 2>&1 &
+ KILLER="$KILLER $!"
+ done
+done
+
+echo "pmlogger launch, waiting ..."
+p=1
+for host in www.sgi.com.au $otherhost localhost
+do
+ for i in 1 2
+ do
+ pid=`echo $KILLER | $PCP_AWK_PROG '{ x='"$p"'; print $x }'`
+ _wait_for_pmlogger $pid $tmp.${host}_$i.log 120
+ p=`expr $p + 1`
+ done
+done
+
+for host in localhost $otherhost www.sgi.com.au
+do
+ for i in 1 2
+ do
+ echo
+ if [ $host = $otherhost ]
+ then
+ echo "=== pmlogger for OTHERHOST #$i connection ==="
+ echo "=== pmlogger for OTHERHOST #$i connection ===" >>$seq.full
+ else
+ echo "=== pmlogger for $host #$i connection ==="
+ echo "=== pmlogger for $host #$i connection ===" >>$seq.full
+ fi
+ cat $tmp.${host}_$i.err $tmp.${host}_$i.log | _filter
+ cat $tmp.${host}_$i.err $tmp.${host}_$i.log >> $seq.full
+ pmdumplog -l $tmp.${host}_$i | _filter_pmdumplog
+ done
+done
+
+
+$signal -s TERM $KILLER
+sleep 2
+KILLER=
+
+
+echo
+echo "=== localhost pmval connection ==="
+echo "=== localhost pmval connection ===" >>$seq.full
+pmsocks pmval -s1 -t 0.1 pmcd.control.debug 2>&1 \
+ | tee -a $seq.full | _filter
+
+echo
+echo "=== hostname local pmval connection ==="
+echo "=== hostname local pmval connection ===" >>$seq.full
+pmsocks pmval -s1 -t 0.1 -h `hostname` pmcd.control.debug 2>&1 \
+ | tee -a $seq.full | _filter
+
+for host in $otherhost www.sgi.com.au
+do
+ echo
+ if [ $host = $otherhost ]
+ then
+ echo "=== host OTHERHOST pmval connection ==="
+ echo "=== host OTHERHOST pmval connection ===" >>$seq.full
+ else
+ echo "=== host $host pmval connection ==="
+ echo "=== host $host pmval connection ===" >>$seq.full
+ fi
+ pmsocks pmval -s1 -t 0.1 -h $host pmcd.control.debug 2>&1 \
+ | tee -a $seq.full | _filter
+done
+
+# optional stuff if your test has verbose output to help resolve problems
+echo
+echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
+
+# all done
+exit
diff --git a/qa/215.out.irix b/qa/215.out.irix
new file mode 100644
index 0000000..73ecdb4
--- /dev/null
+++ b/qa/215.out.irix
@@ -0,0 +1,94 @@
+QA output created by 215
+pmlogger launch, waiting ...
+
+=== pmlogger for localhost #1 connection ===
+
+libpcp_socks: debugging enabled.
+ Rconnect direct = 1
+ Rconnect direct connect, no error
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for localhost #2 connection ===
+
+libpcp_socks: debugging enabled.
+ Rconnect direct = 1
+ Rconnect direct connect, no error
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for OTHERHOST #1 connection ===
+
+libpcp_socks: debugging enabled.
+ Rconnect direct = 0
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for OTHERHOST #2 connection ===
+
+libpcp_socks: debugging enabled.
+ Rconnect direct = 0
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for www.sgi.com.au #1 connection ===
+
+libpcp_socks: debugging enabled.
+ Rconnect direct = 0
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for www.sgi.com.au #2 connection ===
+
+libpcp_socks: debugging enabled.
+ Rconnect direct = 0
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== localhost pmval connection ===
+libpcp_socks: debugging enabled.
+ Rconnect direct = 1
+ Rconnect direct connect, no error
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+=== hostname local pmval connection ===
+libpcp_socks: debugging enabled.
+ Rconnect direct = 1
+ Rconnect direct connect, no error
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+=== host OTHERHOST pmval connection ===
+libpcp_socks: debugging enabled.
+ Rconnect direct = 0
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+=== host www.sgi.com.au pmval connection ===
+libpcp_socks: debugging enabled.
+ Rconnect direct = 0
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+If failure, check 215.full (this) and 215.full.ok (reference)
diff --git a/qa/215.out.linux b/qa/215.out.linux
new file mode 100644
index 0000000..1b20795
--- /dev/null
+++ b/qa/215.out.linux
@@ -0,0 +1,70 @@
+QA output created by 215
+pmlogger launch, waiting ...
+
+=== pmlogger for localhost #1 connection ===
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for localhost #2 connection ===
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for OTHERHOST #1 connection ===
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for OTHERHOST #2 connection ===
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for www.sgi.com.au #1 connection ===
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== pmlogger for www.sgi.com.au #2 connection ===
+
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== localhost pmval connection ===
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+=== hostname local pmval connection ===
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+=== host OTHERHOST pmval connection ===
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+=== host www.sgi.com.au pmval connection ===
+
+metric: pmcd.control.debug
+semantics: DISCRETE or INSTANTANEOUS value
+ 0
+
+If failure, check 215.full (this) and 215.full.ok (reference)
diff --git a/qa/216 b/qa/216
new file mode 100755
index 0000000..08d994e
--- /dev/null
+++ b/qa/216
@@ -0,0 +1,243 @@
+#! /bin/sh
+# PCP QA Test No. 216
+#
+# Verify network.<protocol> statistics
+# (Linux version, see 117 for non-Linux version - although this version
+# has been completely re-written to deal with optional output from the
+# Linux version of netstat)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+if [ $PCP_PLATFORM != linux ]
+then
+ echo "network.* checks for non-linux done in test 117" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+#debug# tmp=`pwd`/tmp
+compare=`pwd`/src/compare
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+if [ ! -x $compare ]
+then
+ echo "Can't find compare, giving up"
+ exit 1
+fi
+
+if pminfo network.ip >/dev/null
+then
+ :
+else
+ echo "pminfo network.ip not working, giving up"
+ exit 1
+fi
+
+ns1=$tmp.netstat1
+pcp=$tmp.pcp
+ns2=$tmp.netstat2
+
+rm -f $seq.full
+rm -rf $ns1 $pcp $ns2
+
+cat <<'End-of-File' >$tmp.map
+# build by hand from the source file statistics.c used to make netstat
+# tags ...
+# #notreported# netstat -s does not report this
+# #notcounter# semantics is not counter, so not suitable for this test
+#
+# SNMP Name|netstat string|PCP name
+# Iptab[]
+#notreported#Forwarding|Forwarding is %s|network.ip.forwarding
+#notreported#DefaultTTL|Default TTL is NNN|network.ip.defaultttl
+InReceives|NNN total packets received|network.ip.inreceives
+InHdrErrors|NNN with invalid headers|network.ip.inhdrerrors
+InAddrErrors|NNN with invalid addresses|network.ip.inaddrerrors
+ForwDatagrams|NNN forwarded|network.ip.forwdatagrams
+InUnknownProtos|NNN with unknown protocol|network.ip.inunknownprotos
+InDiscards|NNN incoming packets discarded|network.ip.indiscards
+InDelivers|NNN incoming packets delivered|network.ip.indelivers
+OutRequests|NNN requests sent out|network.ip.outrequests
+OutDiscards|NNN outgoing packets dropped|network.ip.outdiscards
+OutNoRoutes|NNN dropped because of missing route|network.ip.outnoroutes
+ReasmTimeout|NNN fragments dropped after timeout|network.ip.reasmtimeout
+ReasmReqds|NNN reassemblies required|network.ip.reasmreqds
+ReasmOKs|NNN packets reassembled ok|network.ip.reasmoks
+ReasmFails|NNN packet reassembles failed|network.ip.reasmfails
+FragOKs|NNN fragments received ok|network.ip.fragoks
+FragFails|NNN fragments failed|network.ip.fragfails
+FragCreates|NNN fragments created|network.ip.fragcreates
+# Icmptab[]
+InMsgs|NNN ICMP messages received|network.icmp.inmsgs
+InErrors|NNN input ICMP message failed.|network.icmp.inerrors
+InDestUnreachs|ICMP input *destination unreachable: NNN|network.icmp.indestunreachs
+InTimeExcds|ICMP input *timeout in transit: NNN|network.icmp.intimeexcds
+nParmProbs|ICMP input *wrong parameters: NNN|network.icmp.inparmprobs
+InSrcQuenchs|ICMP input *source quenches: NNN|network.icmp.insrcquenchs
+InRedirects|ICMP input *redirects: NNN|network.icmp.inredirects
+InEchos|ICMP input *echo requests: NNN|network.icmp.inechos
+InEchoReps|ICMP input *echo replies: NNN|network.icmp.inechoreps
+InTimestamps|ICMP input *timestamp request: NNN|network.icmp.intimestamps
+InTimestampReps|ICMP input *timestamp reply: NNN|network.icmp.intimestampreps
+InAddrMasks|ICMP input *address mask request: NNN|network.icmp.inaddrmasks
+InAddrMaskReps|ICMP input *address mask replies: NNN|network.icmp.inaddrmaskreps
+OutMsgs|NNN ICMP messages sent|network.icmp.outmsgs
+OutErrors|NNN ICMP messages failed|network.icmp.outerrors
+OutDestUnreachs|ICMP output *destination unreachable: NNN|network.icmp.outdestunreachs
+OutTimeExcds|ICMP output *time exceeded: NNN|network.icmp.outtimeexcds
+OutParmProbs|ICMP output *wrong parameters: NNN|network.icmp.outparmprobs
+OutSrcQuenchs|ICMP output *source quench: NNN|network.icmp.outsrcquenchs
+OutRedirects|ICMP output *redirect: NNN|network.icmp.outredirects
+OutEchos|ICMP output *echo request: NNN|network.icmp.outechos
+OutEchoReps|ICMP output *echo replies: NNN|network.icmp.outechoreps
+OutTimestamps|ICMP output *timestamp requests: NNN|network.icmp.outtimestamps
+OutTimestampReps|ICMP output *timestamp replies: NNN|network.icmp.outtimestampreps
+OutAddrMasks|ICMP output *address mask requests: NNN|network.icmp.outaddrmasks
+OutAddrMaskReps|ICMP output *address mask replies: NNN|network.icmp.outaddrmaskreps
+# Tcptab[]
+#notreported#RtoAlgorithm|RTO algorithm is %s|network.tcp.rtoalgorithm
+#notreported#RtoMin||network.tcp.rtomin
+#notreported#RtoMax||network.tcp.rtomax
+#notreported#MaxConn||network.tcp.maxconn
+#notcounter#ActiveOpens|NNN active connections openings|network.tcp.activeopens
+#notcounter#PassiveOpens|NNN passive connection openings|network.tcp.passiveopens
+AttemptFails|NNN failed connection attempts|network.tcp.attemptfails
+EstabResets|NNN connection resets received|network.tcp.estabresets
+#notcounter#CurrEstab|NNN connections established|network.tcp.currestab
+InSegs|NNN segments received|network.tcp.insegs
+OutSegs|NNN segments send out|network.tcp.outsegs
+RetransSegs|NNN segments retransmited|network.tcp.retranssegs
+InErrs|NNN bad segments received.|network.tcp.inerrs
+OutRsts|NNN resets sent|network.tcp.outrsts
+# Udptab[]
+InDatagrams|NNN packets received|network.udp.indatagrams
+NoPorts|NNN packets to unknown port received.|network.udp.noports
+InErrors|NNN packet receive errors|network.udp.inerrors
+OutDatagrams|NNN packets sent|network.udp.outdatagrams
+#notreported#RcvbufErrors||network.udp.recvbuferrors
+#notreported#SndbufErrors||network.udp.sndbuferrors
+End-of-File
+
+# real QA test starts here
+
+_get_netstat()
+{
+ netstat -s \
+ | tee -a $seq.full \
+ | $PCP_AWK_PROG >$tmp.out '
+/ICMP input histogram:/ { pfx = "ICMP input"; next }
+/ICMP output histogram:/ { pfx = "ICMP output"; next }
+/^Ip:/ { pfx = ""; skip = 0; print; next }
+/^Icmp:/ { pfx = ""; skip = 0; print; next }
+/^Tcp:/ { pfx = ""; skip = 0; print; next }
+/^Udp:/ { pfx = ""; skip = 0; print; next }
+/^[A-Z]/ { pfx = ""; skip = 1; print $0,"... skipped"; next }
+skip == 1 { next }
+/:/ { print pfx,$0; next }
+ { pfx = ""; print }'
+ echo "--- Culled netstat ---" >>$seq.full
+ cat $tmp.out >>$seq.full
+ $PCP_AWK_PROG <$tmp.map -F\| '
+/^#/ { next }
+ { print $2 }' \
+ | sed -e 's/NNN/\\\\([0-9][0-9]*\\\\)/' \
+ | while read pat
+ do
+ echo "pat=$pat" >>$seq.full
+ sed -n -e 's/^[ ]*//' -e "/$pat/s//\\1/p" <$tmp.out >$tmp.tmp
+ if [ -s $tmp.tmp ]
+ then
+ cat $tmp.tmp
+ else
+ # assume it is marked opt_number in the statistics table, so
+ # netstat does not generate output if the value is zero
+ echo "0"
+ fi
+ done
+}
+
+echo "=== First netstat ===" >>$seq.full
+_get_netstat >$ns1
+echo "=== Filtered first netstat ===" >>$seq.full
+cat $ns1 >>$seq.full
+
+echo "=== pmprobe ===" >>$seq.full
+$PCP_AWK_PROG <$tmp.map -F\| '
+/^#/ { next }
+ { print $3 }' \
+| tee $tmp.metrics \
+| while read metric
+do
+ pmprobe -v "$metric" 2>&1
+done \
+| tee -a $seq.full \
+| while read metric sts val
+do
+ if [ "$sts" = 1 ]
+ then
+ echo "$val"
+ else
+ # would prefer -1, but that messes up src/compare and 0
+ # happens too often ... 42424242 has only a 1 in 2^31 chance
+ # of hitting a false match!
+ echo "42424242"
+ fi
+done >$pcp
+
+echo "=== Second netstat ===" >>$seq.full
+_get_netstat >$ns2
+echo "=== Filtered second netstat ===" >>$seq.full
+cat $ns2 >>$seq.full
+
+nm=`wc -l <$pcp | sed -e 's/[ ]*//g'`
+nn=`wc -l <$ns2 | sed -e 's/[ ]*//g'`
+if [ $nm -lt $nn ]
+then
+ echo "Update list! fewer metrics ($nm) than netstat statistics ($nn) -- see $seq.full"
+elif [ $nm -gt $nn ]
+then
+ echo "Update list! more metrics ($nm) than netstat statistics ($nn) -- see $seq.full"
+fi
+
+echo "#!/bin/sh" >>$tmp.sh
+echo "sts=0" >>$tmp.sh
+paste -d" \n" $ns1 $pcp $ns2 $tmp.metrics \
+ | $PCP_AWK_PROG '
+NF == 4 {
+ printf "if '$compare' %d %d %d; then :; else ", $1, $2, $3;
+ printf "sts=1; echo \"%s = %d out of range %d..%d\"; fi\n", $4, $2, $1, $3
+ next
+ }
+ {
+ print "echo \"Test botch:",$0,"\""
+ next
+ }' \
+ >>$tmp.sh
+echo "exit $sts" >>$tmp.sh
+chmod u+x $tmp.sh
+
+cat $tmp.sh >>$seq.full
+
+# for debugging
+# if sh -x $tmp.sh
+
+if sh $tmp.sh
+then
+ exit 0
+else
+ echo "Bad network.* metrics"
+ exit 1
+fi
diff --git a/qa/216.out b/qa/216.out
new file mode 100644
index 0000000..fd170f2
--- /dev/null
+++ b/qa/216.out
@@ -0,0 +1 @@
+QA output created by 216
diff --git a/qa/217 b/qa/217
new file mode 100755
index 0000000..dca4a37
--- /dev/null
+++ b/qa/217
@@ -0,0 +1,104 @@
+#! /bin/sh
+# PCP QA Test No. 217
+# check mkaf and pmafm, after file(1) not used
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ LIST="src/951127.23.01.0 src/960624.08.17.0 src/ace.0 src/bar.0 src/bigace.0 src/bigbin.0 src/bug.0 src/dodgey-all.0 src/dodgey-mixed.0 src/dodgey-some.0 src/foo.0 src/interp.0 src/mirage.0 src/mv-bar.0 src/mv-bigbin.0 src/mv-foo.0 src/mv-interp.0 src/truncbin.0"
+ ln $seq.out.1 $seq.out
+else
+ # no support for V1 archives
+ LIST="src/951127.23.01_v2.0 src/960624.08.17_v2.0 src/ace_v2.0 src/bar.0 src/bigace_v2.0 src/bigbin.0 src/bug_v2.0 src/dodgey-all.0 src/dodgey-mixed.0 src/dodgey-some.0 src/foo.0 src/interp.0 src/mirage.0 src/mv-bar.0 src/mv-bigbin.0 src/mv-foo.0 src/mv-interp.0 src/truncbin.0"
+ ln $seq.out.2 $seq.out
+fi
+
+tmp=$$"_pmafm"
+$sudo rm -f $tmp
+
+status=0
+trap "rm -f $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ host=`hostname`
+ sed \
+ -e '/^Created:/{
+s/'"$host"'/HOSTNAME/
+s/ at .*/ at DATE/
+}' \
+ -e "s;`pwd`;<initial-path>/qa;" \
+ -e '/^Creator:/{
+s/mkaf/MKAF_OR_CHART/
+s/kmchart/MKAF_OR_CHART/
+s/pmchart/MKAF_OR_CHART/
+}' \
+| $PCP_AWK_PROG '
+$1 == "Archive:" { if ($3 ~ /bar$/ || $3 ~ /bigbin$/ ||
+ $3 ~ /dodgey/ || $3 ~ /foo$/ ||
+ $3 ~ /interp$/ || $3 ~ /truncbin$/)
+ $2 = "HOSTNAME"
+# Host Basename
+
+ printf "%-16s%-24s%s\n",$1,$2,$3
+ next
+ }
+ { print }'
+
+}
+
+HERE=`pwd`
+ABSLIST=""
+RELLIST=""
+for i in $LIST
+do
+ ABSLIST="$ABSLIST $HERE/$i"
+ RELLIST="$RELLIST $i"
+done
+
+
+# real QA test starts here
+echo "=== relative names ==="
+cd src
+echo $LIST | sed -e 's/ /\
+/g' | sed -n -e '/src\//s///p' >$tmp.tmp
+
+mkaf `cat $tmp.tmp` >$tmp
+_filter <$tmp
+rm -f $tmp.tmp
+
+echo
+pmafm $tmp check
+rm -f $tmp
+cd ..
+
+echo
+echo "=== absolute pathnames ==="
+mkaf $ABSLIST >$tmp
+_filter <$tmp
+echo
+pmafm $tmp check 2>&1 | sed -e "s;`pwd`;<initial-path>/qa;"
+rm -f $tmp
+
+echo
+echo "=== relative names, down one dir ==="
+mkaf $RELLIST >$tmp
+_filter <$tmp
+echo
+pmafm $tmp check
+rm -f $tmp
+
+# all done
+exit
diff --git a/qa/217.out.1 b/qa/217.out.1
new file mode 100644
index 0000000..355ebc2
--- /dev/null
+++ b/qa/217.out.1
@@ -0,0 +1,141 @@
+QA output created by 217
+=== relative names ===
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on HOSTNAME at DATE
+Creator: MKAF_OR_CHART
+# Host Basename
+#
+Archive: gonzo 951127.23.01
+Archive: brutus.corp 960624.08.17
+Archive: moomba ace
+Archive: HOSTNAME bar
+Archive: moomba bigace
+Archive: HOSTNAME bigbin
+Archive: sandpit bug
+Archive: HOSTNAME dodgey-all
+Archive: HOSTNAME dodgey-mixed
+Archive: HOSTNAME dodgey-some
+Archive: HOSTNAME foo
+Archive: HOSTNAME interp
+Archive: gonzo mirage
+Archive: HOSTNAME mv-bar
+Archive: HOSTNAME mv-bigbin
+Archive: HOSTNAME mv-foo
+Archive: HOSTNAME mv-interp
+Archive: HOSTNAME truncbin
+
+Archive: 951127.23.01 ... OK
+Archive: 960624.08.17 ... OK
+Archive: ace ... OK
+Archive: bar ... OK
+Archive: bigace ... OK
+Archive: bigbin ... OK
+Archive: bug ... OK
+Archive: dodgey-all ... OK
+Archive: dodgey-mixed ... OK
+Archive: dodgey-some ... OK
+Archive: foo ... OK
+Archive: interp ... OK
+Archive: mirage ... OK
+Archive: mv-bar ... OK
+Archive: mv-bigbin ... OK
+Archive: mv-foo ... OK
+Archive: mv-interp ... OK
+Archive: truncbin ... OK
+
+=== absolute pathnames ===
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on HOSTNAME at DATE
+Creator: MKAF_OR_CHART
+# Host Basename
+#
+Archive: gonzo <initial-path>/qa/src/951127.23.01
+Archive: brutus.corp <initial-path>/qa/src/960624.08.17
+Archive: moomba <initial-path>/qa/src/ace
+Archive: HOSTNAME <initial-path>/qa/src/bar
+Archive: moomba <initial-path>/qa/src/bigace
+Archive: HOSTNAME <initial-path>/qa/src/bigbin
+Archive: sandpit <initial-path>/qa/src/bug
+Archive: HOSTNAME <initial-path>/qa/src/dodgey-all
+Archive: HOSTNAME <initial-path>/qa/src/dodgey-mixed
+Archive: HOSTNAME <initial-path>/qa/src/dodgey-some
+Archive: HOSTNAME <initial-path>/qa/src/foo
+Archive: HOSTNAME <initial-path>/qa/src/interp
+Archive: gonzo <initial-path>/qa/src/mirage
+Archive: HOSTNAME <initial-path>/qa/src/mv-bar
+Archive: HOSTNAME <initial-path>/qa/src/mv-bigbin
+Archive: HOSTNAME <initial-path>/qa/src/mv-foo
+Archive: HOSTNAME <initial-path>/qa/src/mv-interp
+Archive: HOSTNAME <initial-path>/qa/src/truncbin
+
+Archive: <initial-path>/qa/src/951127.23.01 ... OK
+Archive: <initial-path>/qa/src/960624.08.17 ... OK
+Archive: <initial-path>/qa/src/ace ... OK
+Archive: <initial-path>/qa/src/bar ... OK
+Archive: <initial-path>/qa/src/bigace ... OK
+Archive: <initial-path>/qa/src/bigbin ... OK
+Archive: <initial-path>/qa/src/bug ... OK
+Archive: <initial-path>/qa/src/dodgey-all ... OK
+Archive: <initial-path>/qa/src/dodgey-mixed ... OK
+Archive: <initial-path>/qa/src/dodgey-some ... OK
+Archive: <initial-path>/qa/src/foo ... OK
+Archive: <initial-path>/qa/src/interp ... OK
+Archive: <initial-path>/qa/src/mirage ... OK
+Archive: <initial-path>/qa/src/mv-bar ... OK
+Archive: <initial-path>/qa/src/mv-bigbin ... OK
+Archive: <initial-path>/qa/src/mv-foo ... OK
+Archive: <initial-path>/qa/src/mv-interp ... OK
+Archive: <initial-path>/qa/src/truncbin ... OK
+
+=== relative names, down one dir ===
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on HOSTNAME at DATE
+Creator: MKAF_OR_CHART
+# Host Basename
+#
+Archive: gonzo src/951127.23.01
+Archive: brutus.corp src/960624.08.17
+Archive: moomba src/ace
+Archive: HOSTNAME src/bar
+Archive: moomba src/bigace
+Archive: HOSTNAME src/bigbin
+Archive: sandpit src/bug
+Archive: HOSTNAME src/dodgey-all
+Archive: HOSTNAME src/dodgey-mixed
+Archive: HOSTNAME src/dodgey-some
+Archive: HOSTNAME src/foo
+Archive: HOSTNAME src/interp
+Archive: gonzo src/mirage
+Archive: HOSTNAME src/mv-bar
+Archive: HOSTNAME src/mv-bigbin
+Archive: HOSTNAME src/mv-foo
+Archive: HOSTNAME src/mv-interp
+Archive: HOSTNAME src/truncbin
+
+Archive: src/951127.23.01 ... OK
+Archive: src/960624.08.17 ... OK
+Archive: src/ace ... OK
+Archive: src/bar ... OK
+Archive: src/bigace ... OK
+Archive: src/bigbin ... OK
+Archive: src/bug ... OK
+Archive: src/dodgey-all ... OK
+Archive: src/dodgey-mixed ... OK
+Archive: src/dodgey-some ... OK
+Archive: src/foo ... OK
+Archive: src/interp ... OK
+Archive: src/mirage ... OK
+Archive: src/mv-bar ... OK
+Archive: src/mv-bigbin ... OK
+Archive: src/mv-foo ... OK
+Archive: src/mv-interp ... OK
+Archive: src/truncbin ... OK
diff --git a/qa/217.out.2 b/qa/217.out.2
new file mode 100644
index 0000000..4c46418
--- /dev/null
+++ b/qa/217.out.2
@@ -0,0 +1,141 @@
+QA output created by 217
+=== relative names ===
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on HOSTNAME at DATE
+Creator: MKAF_OR_CHART
+# Host Basename
+#
+Archive: gonzo 951127.23.01_v2
+Archive: brutus.corp 960624.08.17_v2
+Archive: moomba ace_v2
+Archive: HOSTNAME bar
+Archive: moomba bigace_v2
+Archive: HOSTNAME bigbin
+Archive: sandpit bug_v2
+Archive: HOSTNAME dodgey-all
+Archive: HOSTNAME dodgey-mixed
+Archive: HOSTNAME dodgey-some
+Archive: HOSTNAME foo
+Archive: HOSTNAME interp
+Archive: gonzo mirage
+Archive: HOSTNAME mv-bar
+Archive: HOSTNAME mv-bigbin
+Archive: HOSTNAME mv-foo
+Archive: HOSTNAME mv-interp
+Archive: HOSTNAME truncbin
+
+Archive: 951127.23.01_v2 ... OK
+Archive: 960624.08.17_v2 ... OK
+Archive: ace_v2 ... OK
+Archive: bar ... OK
+Archive: bigace_v2 ... OK
+Archive: bigbin ... OK
+Archive: bug_v2 ... OK
+Archive: dodgey-all ... OK
+Archive: dodgey-mixed ... OK
+Archive: dodgey-some ... OK
+Archive: foo ... OK
+Archive: interp ... OK
+Archive: mirage ... OK
+Archive: mv-bar ... OK
+Archive: mv-bigbin ... OK
+Archive: mv-foo ... OK
+Archive: mv-interp ... OK
+Archive: truncbin ... OK
+
+=== absolute pathnames ===
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on HOSTNAME at DATE
+Creator: MKAF_OR_CHART
+# Host Basename
+#
+Archive: gonzo <initial-path>/qa/src/951127.23.01_v2
+Archive: brutus.corp <initial-path>/qa/src/960624.08.17_v2
+Archive: moomba <initial-path>/qa/src/ace_v2
+Archive: HOSTNAME <initial-path>/qa/src/bar
+Archive: moomba <initial-path>/qa/src/bigace_v2
+Archive: HOSTNAME <initial-path>/qa/src/bigbin
+Archive: sandpit <initial-path>/qa/src/bug_v2
+Archive: HOSTNAME <initial-path>/qa/src/dodgey-all
+Archive: HOSTNAME <initial-path>/qa/src/dodgey-mixed
+Archive: HOSTNAME <initial-path>/qa/src/dodgey-some
+Archive: HOSTNAME <initial-path>/qa/src/foo
+Archive: HOSTNAME <initial-path>/qa/src/interp
+Archive: gonzo <initial-path>/qa/src/mirage
+Archive: HOSTNAME <initial-path>/qa/src/mv-bar
+Archive: HOSTNAME <initial-path>/qa/src/mv-bigbin
+Archive: HOSTNAME <initial-path>/qa/src/mv-foo
+Archive: HOSTNAME <initial-path>/qa/src/mv-interp
+Archive: HOSTNAME <initial-path>/qa/src/truncbin
+
+Archive: <initial-path>/qa/src/951127.23.01_v2 ... OK
+Archive: <initial-path>/qa/src/960624.08.17_v2 ... OK
+Archive: <initial-path>/qa/src/ace_v2 ... OK
+Archive: <initial-path>/qa/src/bar ... OK
+Archive: <initial-path>/qa/src/bigace_v2 ... OK
+Archive: <initial-path>/qa/src/bigbin ... OK
+Archive: <initial-path>/qa/src/bug_v2 ... OK
+Archive: <initial-path>/qa/src/dodgey-all ... OK
+Archive: <initial-path>/qa/src/dodgey-mixed ... OK
+Archive: <initial-path>/qa/src/dodgey-some ... OK
+Archive: <initial-path>/qa/src/foo ... OK
+Archive: <initial-path>/qa/src/interp ... OK
+Archive: <initial-path>/qa/src/mirage ... OK
+Archive: <initial-path>/qa/src/mv-bar ... OK
+Archive: <initial-path>/qa/src/mv-bigbin ... OK
+Archive: <initial-path>/qa/src/mv-foo ... OK
+Archive: <initial-path>/qa/src/mv-interp ... OK
+Archive: <initial-path>/qa/src/truncbin ... OK
+
+=== relative names, down one dir ===
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP archive folio
+#
+Created: on HOSTNAME at DATE
+Creator: MKAF_OR_CHART
+# Host Basename
+#
+Archive: gonzo src/951127.23.01_v2
+Archive: brutus.corp src/960624.08.17_v2
+Archive: moomba src/ace_v2
+Archive: HOSTNAME src/bar
+Archive: moomba src/bigace_v2
+Archive: HOSTNAME src/bigbin
+Archive: sandpit src/bug_v2
+Archive: HOSTNAME src/dodgey-all
+Archive: HOSTNAME src/dodgey-mixed
+Archive: HOSTNAME src/dodgey-some
+Archive: HOSTNAME src/foo
+Archive: HOSTNAME src/interp
+Archive: gonzo src/mirage
+Archive: HOSTNAME src/mv-bar
+Archive: HOSTNAME src/mv-bigbin
+Archive: HOSTNAME src/mv-foo
+Archive: HOSTNAME src/mv-interp
+Archive: HOSTNAME src/truncbin
+
+Archive: src/951127.23.01_v2 ... OK
+Archive: src/960624.08.17_v2 ... OK
+Archive: src/ace_v2 ... OK
+Archive: src/bar ... OK
+Archive: src/bigace_v2 ... OK
+Archive: src/bigbin ... OK
+Archive: src/bug_v2 ... OK
+Archive: src/dodgey-all ... OK
+Archive: src/dodgey-mixed ... OK
+Archive: src/dodgey-some ... OK
+Archive: src/foo ... OK
+Archive: src/interp ... OK
+Archive: src/mirage ... OK
+Archive: src/mv-bar ... OK
+Archive: src/mv-bigbin ... OK
+Archive: src/mv-foo ... OK
+Archive: src/mv-interp ... OK
+Archive: src/truncbin ... OK
diff --git a/qa/218 b/qa/218
new file mode 100755
index 0000000..c2cb1cd
--- /dev/null
+++ b/qa/218
@@ -0,0 +1,45 @@
+#! /bin/sh
+# PCP QA Test No. 218
+# pmFetch for non-interp mode should not return mark records
+# pmFetchArchive should
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmlogger -s 1 $tmp.first << EOFEOF
+log mandatory on 1 second {
+ sample.long.one
+ sample.bin
+}
+EOFEOF
+
+pmlogger -s 1 $tmp.second << EOFEOF
+log mandatory on 1 second {
+ sample.long.ten
+}
+EOFEOF
+
+pmlogextract $tmp.first $tmp.second $tmp.result
+
+echo "=== pminfo, no mark, no core ==="
+pminfo -f -a $tmp.result sample.long.ten
+status=$?
+
+echo
+echo "=== pmdumplog, mark ==="
+pmdumplog -m $tmp.result | sed -e '/pmcd.pmlogger/d' | _filter_pmdumplog
+status=`expr $status + $?`
+
+# all done
+exit
diff --git a/qa/218.out b/qa/218.out
new file mode 100644
index 0000000..80503e9
--- /dev/null
+++ b/qa/218.out
@@ -0,0 +1,25 @@
+QA output created by 218
+=== pminfo, no mark, no core ===
+
+sample.long.ten
+ value 10
+
+=== pmdumplog, mark ===
+
+
+TIMESTAMP 29.0.10 (sample.long.one): value 1
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+TIMESTAMP <mark>
+
+
+TIMESTAMP 29.0.11 (sample.long.ten): value 10
diff --git a/qa/219 b/qa/219
new file mode 100755
index 0000000..194b61f
--- /dev/null
+++ b/qa/219
@@ -0,0 +1,53 @@
+#! /bin/sh
+# PCP QA Test No. 219
+# check pmdbg -l and pmdbg.h agree
+#
+# Copyright (c) 2009 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ -f $PCP_DIR/usr/include/pcp/pmdbg.h ]
+then
+ :
+else
+ echo "$PCP_DIR/usr/include/pcp/pmdbg.h not installed?" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmdbg -l \
+| tee $seq.full \
+| sed -n -e '/^DBG_/s/[ ].*//p' \
+| LC_COLLATE=POSIX sort >$tmp.dbg
+
+echo "------" >>$seq.full
+cat $PCP_DIR/usr/include/pcp/pmdbg.h >>$seq.full
+sed -n <$PCP_DIR/usr/include/pcp/pmdbg.h \
+ -e '/DBG_/{
+s/.*DBG_/DBG_/
+s/[ ].*//
+p
+}' \
+| LC_COLLATE=POSIX sort >$tmp.dbg.h
+
+echo "Missing from pmdbg -l ..."
+comm -23 $tmp.dbg.h $tmp.dbg
+
+echo
+echo "Missing from <pcp/pmdbg.h> ..."
+comm -13 $tmp.dbg.h $tmp.dbg
+
+# success, all done
+exit
diff --git a/qa/219.out b/qa/219.out
new file mode 100644
index 0000000..2caa139
--- /dev/null
+++ b/qa/219.out
@@ -0,0 +1,4 @@
+QA output created by 219
+Missing from pmdbg -l ...
+
+Missing from <pcp/pmdbg.h> ...
diff --git a/qa/220 b/qa/220
new file mode 100755
index 0000000..a85c8a4
--- /dev/null
+++ b/qa/220
@@ -0,0 +1,59 @@
+#! /bin/sh
+# PCP QA Test No. 220
+# Does primary logger die and cleanup when pmcd exits?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0
+clean=false
+LOCALHOST=`hostname`
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_cleanup()
+{
+ if $clean
+ then
+ :
+ else
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ rm -f $tmp.cmd
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ clean=true
+ fi
+}
+
+trap "rm -f $tmp.*; _cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+echo "primary pmlogger processes? exect none"
+ps $PCP_PS_ALL_FLAGS | grep 'pmlogger.* -P' | grep -v grep
+
+echo
+echo "primary port map? expect none"
+if [ -e $PCP_TMP_DIR/pmlogger/primary ]; then
+ echo "Eh?! $PCP_TMP_DIR/pmlogger/primar exists and it should not"
+else
+ echo "not there - goodness."
+fi
+
+# all done
+exit
diff --git a/qa/220.out b/qa/220.out
new file mode 100644
index 0000000..7780e7c
--- /dev/null
+++ b/qa/220.out
@@ -0,0 +1,8 @@
+QA output created by 220
+Waiting for pmcd to terminate ...
+primary pmlogger processes? exect none
+
+primary port map? expect none
+not there - goodness.
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/221 b/qa/221
new file mode 100755
index 0000000..fb8173f
--- /dev/null
+++ b/qa/221
@@ -0,0 +1,43 @@
+#! /bin/sh
+# PCP QA Test No. 221
+# pmlogger preamble gets timestamp from first pmFetch?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "log mandatory on 100 msec pmcd.timezone" \
+| pmlogger -s1 -D1 -l $tmp.log $tmp >$tmp.err 2>&1
+
+echo "expect no messages ..."
+cat $tmp.err $tmp.log \
+| tee $seq.full \
+| grep timestamp \
+| $PCP_AWK_PROG '
+/Starting logger/ { state = 1; next }
+state == 1 {
+ if (p != 0) {
+ if ($6 < p)
+ print "timestamp delta NEGATIVE!",p,$6
+ else if ($6 - p > 1)
+ print "timestamp delta more than 1 second!",p,$6
+ }
+ p = $6
+ }'
+
+# optional stuff if your test has verbose output to help resolve problems
+echo
+echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
+
+# all done
+exit
diff --git a/qa/221.out b/qa/221.out
new file mode 100644
index 0000000..fe93924
--- /dev/null
+++ b/qa/221.out
@@ -0,0 +1,4 @@
+QA output created by 221
+expect no messages ...
+
+If failure, check 221.full (this) and 221.full.ok (reference)
diff --git a/qa/222 b/qa/222
new file mode 100755
index 0000000..60dcbbd
--- /dev/null
+++ b/qa/222
@@ -0,0 +1,55 @@
+#! /bin/sh
+# PCP QA Test No. 222
+# Check symlinks in $PCP_PMDAS_DIR
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "expect no output ..."
+
+if [ ! -d $PCP_PMDAS_DIR ]
+then
+ echo "No $PCP_PMDAS_DIR dir?"
+ exit 1
+fi
+
+cd $PCP_PMDAS_DIR
+
+for dir in *
+do
+ if [ $dir = "irix" ]
+ then
+ continue
+ fi
+
+ if [ -L $dir ]
+ then
+ if [ ! -d $dir ]
+ then
+ echo "Error: symlink $PCP_PMDAS_DIR/$dir -> nowhere?"
+ fi
+ elif [ -d $dir ]
+ then
+ if [ ! -L /usr/pcp/pmdas/$dir -a -d /usr/pcp/pmdas/$dir ]
+ then
+ echo "Error: $dir directory in both /usr/pcp and /var/pcp!"
+ fi
+ else
+ echo "Error: what is $PCP_PMDAS_DIR/$dir?"
+ fi
+
+done
+
+# all done
+exit
diff --git a/qa/222.out b/qa/222.out
new file mode 100644
index 0000000..835b67f
--- /dev/null
+++ b/qa/222.out
@@ -0,0 +1,2 @@
+QA output created by 222
+expect no output ...
diff --git a/qa/223 b/qa/223
new file mode 100755
index 0000000..facf0e7
--- /dev/null
+++ b/qa/223
@@ -0,0 +1,337 @@
+#! /bin/sh
+# PCP QA Test No. 223
+# Exercise the new pmns/Rebuild
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = irix ] || _notrun "tests the IRIX Rebuild script"
+
+_copy_Rebuild()
+{
+ scr_src=$PCP_VAR_DIR/pmns/
+ cp $scr_src/Rebuild $1
+ if [ -f $scr_src/Xlate-irix-names ]
+ then
+ cp $scr_src/Xlate-irix-names $1
+ fi
+}
+
+_filter ()
+{
+ sed \
+ -e "s/\/$$/\/PID/g" \
+ -e 's/^\*\*\*.*[^*]$/*** old file/' \
+ -e 's/^---.*[^-]$/--- new file/'
+}
+
+_setup() {
+ PMNS_OLD=$tmp/old
+ PMNS_NEW=$tmp/new
+ export PMNS_OLD PMNS_NEW
+ rm -rf $PMNS_OLD $PMNS_NEW
+ mkdir -p $PMNS_NEW
+ mkdir -p $PMNS_OLD
+ echo >$PMNS_NEW/root 'root {
+ foo
+}
+foo {
+ one 0:0:1
+}'
+}
+
+_setup_wxy()
+{
+ echo >$PMNS_NEW/root '
+root {
+ extra
+}
+extra {
+ xxx
+ yyy
+}
+#include "xxx"
+#include "yyy"'
+
+ echo >$PMNS_NEW/www.orphan '
+extra.www {
+ two 0:0:2
+}'
+
+ echo >$PMNS_NEW/xxx '
+extra.xxx {
+ two 0:0:3
+}'
+
+ echo '/* new */' >$PMNS_NEW/xxx.N
+ cat $PMNS_NEW/xxx >>$PMNS_NEW/xxx.N
+
+ echo >$PMNS_NEW/yyy '
+extra.yyy {
+ two 0:0:4
+}'
+
+ echo '/* old */' >$PMNS_NEW/yyy.O
+ cat $PMNS_NEW/yyy >>$PMNS_NEW/yyy.O
+}
+
+_check()
+{
+ echo "Exit status: $1"
+ type=unknown
+ [ -d $PMNS_OLD ] && type=directory
+ [ -f $PMNS_OLD ] && type=file
+ [ -L $PMNS_OLD ] && type=symlink
+ echo "PMNS_OLD pathname is: $type"
+ echo "PMNS_NEW contents:"
+ ls $PMNS_NEW
+ $DO_VALIDATE && _validate
+}
+
+_validate()
+{
+ ( cd $PMNS_NEW; pmnscomp -f -n root root.bin )
+ echo "pminfo:"
+ pminfo -m -n $PMNS_NEW/root >$tmp.out 2>&1
+ status=$?
+ _filter <$tmp.out
+ if [ $status != 0 ]
+ then
+ for file in $PMNS_NEW/*
+ do
+ echo "=========================="
+ echo "new/`basename $file`"
+ echo "=========================="
+ cat $file
+ done
+ fi
+}
+
+_remove_rebuild()
+{
+ rm -f $1/Rebuild
+ if [ -f $1/Xlate-irix-names ]
+ then
+ rm -f $1/Xlate-irix-names
+ fi
+}
+
+# get standard filters
+. ./common.filter
+
+tmp=/tmp/$$
+status=0
+DO_VALIDATE=true
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "=== PMNS_OLD does not exist ==="
+_setup
+rm -rf $PMNS_OLD
+echo "=== PMNS_OLD does not exist ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD is empty ==="
+_setup
+echo "=== PMNS_OLD is empty ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD contains scripts that can safely be nuked ==="
+_setup
+touch $PMNS_OLD/Brand $PMNS_OLD/Makefile $PMNS_OLD/Rebuild
+echo "=== PMNS_OLD contains scripts that can safely be nuked ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD contains files not in conflict with PMNS_NEW, copy them ==="
+_setup
+touch $PMNS_OLD/root.N $PMNS_OLD/urk $PMNS_OLD/urk.O
+echo >$PMNS_OLD/xxx '
+extra.xxx {
+ two 0:0:3
+}'
+echo "=== PMNS_OLD contains files not in conflict with PMNS_NEW, copy them ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== files in PMNS_OLD and PMNS_NEW are identical ==="
+_setup
+_setup_wxy
+rm $PMNS_NEW/www*
+cp $PMNS_NEW/* $PMNS_OLD
+echo "=== files in PMNS_OLD and PMNS_NEW are identical ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== salvage useful stuff from PMNS_OLD ==="
+_setup
+_setup_wxy
+rm $PMNS_NEW/www*
+mv $PMNS_NEW/xxx* $PMNS_OLD
+DO_VALIDATE=false
+_check N/A
+DO_VALIDATE=true
+echo "=== salvage useful stuff from PMNS_OLD ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== hard cases ==="
+_setup
+_setup_wxy
+rm $PMNS_NEW/www*
+sed -e 's/two/three/' <$PMNS_NEW/xxx.N >$PMNS_OLD/xxx
+sed -e 's/two/three/' <$PMNS_NEW/yyy.O >$PMNS_OLD/yyy
+_check N/A
+echo "=== hard cases ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD is a file (error) ==="
+_setup
+rm -rf $PMNS_OLD
+touch $PMNS_OLD
+echo "=== PMNS_OLD is a file (error) ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== www.orphan, xxx.N and yyy.O in both places, waste the ones from PMNS_OLD ==="
+_setup
+_setup_wxy
+touch $PMNS_OLD/www.orphan $PMNS_OLD/xxx.N $PMNS_OLD/yyy.O
+_check N/A
+echo "=== www.orphan, xxx.N and yyy.O in both places, waste the ones from PMNS_OLD ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== orphan (saveme) in PMNS_OLD ==="
+_setup
+touch $PMNS_OLD/saveme
+echo "=== orphan (saveme) in PMNS_OLD ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== nested decls, a la DBMS PMDAS ==="
+_setup
+ echo >$PMNS_NEW/root '
+root {
+ extra
+}
+#include "extra"'
+
+ echo >$PMNS_NEW/extra '
+extra {
+ xxx
+ yyy
+}
+#include "xxx"
+#include "yyy"'
+
+ echo >$PMNS_NEW/xxx '
+#define CLUST 1
+#define ID xxx
+extra.xxx {
+#include "dummy"
+#undef CLUST
+#undef ID'
+
+ echo >$PMNS_NEW/yyy '
+#define CLUST 2
+#define ID yyy
+extra.yyy {
+#include "dummy"
+#undef CLUST
+#undef ID'
+
+ echo >$PMNS_NEW/dummy '
+ one 0:CLUST:1
+ special
+}
+
+extra.ID.special {
+ two 0:CLUST:2
+ three 0:CLUST:3
+}
+'
+
+echo "=== nested decls, a la DBMS PMDAS ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+# all done
+exit
diff --git a/qa/223.out b/qa/223.out
new file mode 100644
index 0000000..53be346
--- /dev/null
+++ b/qa/223.out
@@ -0,0 +1,312 @@
+QA output created by 223
+=== PMNS_OLD does not exist ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: symlink
+PMNS_NEW contents:
+root
+root.bin
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 2 non-leaf nodes
+ 13 bytes of symbol table
+pminfo:
+foo.one PMID: 0.0.1
+
+=== PMNS_OLD is empty ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.bin
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 2 non-leaf nodes
+ 13 bytes of symbol table
+pminfo:
+foo.one PMID: 0.0.1
+
+=== PMNS_OLD contains scripts that can safely be nuked ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.bin
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 2 non-leaf nodes
+ 13 bytes of symbol table
+pminfo:
+foo.one PMID: 0.0.1
+
+=== PMNS_OLD contains files not in conflict with PMNS_NEW, copy them ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Warning: the following new PMNS files may have to be merged ...
+ root.N
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.N
+root.bin
+urk
+urk.O
+xxx
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 2 non-leaf nodes
+ 13 bytes of symbol table
+pminfo:
+foo.one PMID: 0.0.1
+
+=== files in PMNS_OLD and PMNS_NEW are identical ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Warning: the following new PMNS files may have to be merged ...
+ xxx.N
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.bin
+xxx
+xxx.N
+yyy
+yyy.O
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 4 non-leaf nodes
+ 27 bytes of symbol table
+pminfo:
+extra.xxx.two PMID: 0.0.3
+extra.yyy.two PMID: 0.0.4
+
+=== salvage useful stuff from PMNS_OLD ===
+Exit status: N/A
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+yyy
+yyy.O
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Warning: the following new PMNS files may have to be merged ...
+ xxx.N
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.bin
+xxx
+xxx.N
+yyy
+yyy.O
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 4 non-leaf nodes
+ 27 bytes of symbol table
+pminfo:
+extra.xxx.two PMID: 0.0.3
+extra.yyy.two PMID: 0.0.4
+
+=== hard cases ===
+Exit status: N/A
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+xxx
+xxx.N
+yyy
+yyy.O
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 4 non-leaf nodes
+ 27 bytes of symbol table
+pminfo:
+extra.xxx.two PMID: 0.0.3
+extra.yyy.two PMID: 0.0.4
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Warning: the following new PMNS files may have to be merged ...
+ xxx.N yyy.N
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.bin
+xxx
+xxx.N
+xxx.O
+yyy
+yyy.N
+yyy.O
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 4 non-leaf nodes
+ 29 bytes of symbol table
+pminfo:
+extra.xxx.two PMID: 0.0.3
+extra.yyy.three PMID: 0.0.4
+
+=== PMNS_OLD is a file (error) ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Rebuild: "/tmp/PID/old" is neither a directory nor a symbolic link, cannot proceed
+Exit status: 1
+PMNS_OLD pathname is: file
+PMNS_NEW contents:
+root
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 2 non-leaf nodes
+ 13 bytes of symbol table
+pminfo:
+foo.one PMID: 0.0.1
+
+=== www.orphan, xxx.N and yyy.O in both places, waste the ones from PMNS_OLD ===
+Exit status: N/A
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+www.orphan
+xxx
+xxx.N
+yyy
+yyy.O
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 4 non-leaf nodes
+ 27 bytes of symbol table
+pminfo:
+extra.xxx.two PMID: 0.0.3
+extra.yyy.two PMID: 0.0.4
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Warning: the following new PMNS files may have to be merged ...
+ www.orphan.N xxx.N
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.bin
+www.orphan
+www.orphan.N
+xxx
+xxx.N
+yyy
+yyy.O
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 4 non-leaf nodes
+ 27 bytes of symbol table
+pminfo:
+extra.xxx.two PMID: 0.0.3
+extra.yyy.two PMID: 0.0.4
+
+=== orphan (saveme) in PMNS_OLD ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+root
+root.bin
+saveme
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 2 non-leaf nodes
+ 13 bytes of symbol table
+pminfo:
+foo.one PMID: 0.0.1
+
+=== nested decls, a la DBMS PMDAS ===
+Rebuilding the Performance Metrics Name Space (PMNS) in /tmp/PID/new ...
+Rebuild: PCP upgrade processing for migrated PMNS files ...
+Relocating /tmp/PID/old files to /tmp/PID/new ...
+Rebuild: PCP upgrade processing for "root" PMNS changes ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+Exit status: 0
+PMNS_OLD pathname is: directory
+PMNS_NEW contents:
+dummy
+extra
+root
+root.bin
+xxx
+yyy
+Compiled PMNS contains
+ 7 hash table entries
+ 6 leaf nodes
+ 6 non-leaf nodes
+ 63 bytes of symbol table
+pminfo:
+extra.xxx.one PMID: 0.1.1
+extra.xxx.special.two PMID: 0.1.2
+extra.xxx.special.three PMID: 0.1.3
+extra.yyy.one PMID: 0.2.1
+extra.yyy.special.two PMID: 0.2.2
+extra.yyy.special.three PMID: 0.2.3
diff --git a/qa/224 b/qa/224
new file mode 100755
index 0000000..cc7d856
--- /dev/null
+++ b/qa/224
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 224
+# This used to cause a core dump for pmcd
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+done_reset=false
+status=0
+LOCALHOST=`hostname`
+
+_reset()
+{
+ if $done_reset
+ then
+ :
+ else
+ _restore_loggers
+ $sudo $PCP_RC_DIR/pcp restart \
+ | _filter_pcp_start \
+ | sed -e '/Waiting/s/\.\.\.*/[dots]/'
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ done_reset=true
+ fi
+ $sudo rm -f $tmp.*
+}
+
+_filter()
+{
+ sed -e 's/value .*/value .../' \
+ -e '/No value/d' |\
+ $PCP_AWK_PROG '
+ /0 or "primary"/ { print; next }
+ /inst \[[0-9]* or "[0-9]*"\]/ { next }
+ { print }'
+
+}
+
+trap "_reset; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_disable_loggers
+$sudo $PCP_RC_DIR/pcp restart \
+| _filter_pcp_start \
+| sed -e '/Waiting/s/\.\.\.*/[dots]/'
+_wait_for_pmcd
+pminfo -f pmcd.numclients pmcd.pmlogger.host \
+| _filter
+
+# all done
+exit
diff --git a/qa/224.out b/qa/224.out
new file mode 100644
index 0000000..8fa3f22
--- /dev/null
+++ b/qa/224.out
@@ -0,0 +1,13 @@
+QA output created by 224
+Waiting for pmcd to terminate [dots]
+Starting pmcd ...
+Starting pmlogger ...
+
+pmcd.numclients
+ value ...
+
+pmcd.pmlogger.host
+ inst [0 or "primary"] value ...
+Waiting for pmcd to terminate [dots]
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/225 b/qa/225
new file mode 100755
index 0000000..8c35a34
--- /dev/null
+++ b/qa/225
@@ -0,0 +1,113 @@
+#! /bin/sh
+# PCP QA Test No. 225
+# Basic parsing for derived metric definitions ... no binding, so no
+# semantic checks
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+unset PCP_DERIVED_CONFIG
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+# expr node 0x9edc340 type=PLUS left=0x9edc2f8 right=0x9edc370
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e 's/=0x0 /=(nil) /g' \
+ -e 's/ref=0x[0-9a-f]*/ref=<addr>/' \
+ -e "s;$tmp;TMP;"
+}
+
+echo "root { local_pmns_no_pmcd_connection 1:2:3 }" >$tmp.pmns
+
+# real QA test starts here
+echo "No syntax errors here ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+myname.a = disk.dev.read
+myname.b = disk.dev.read + disk.dev.write
+myname.c = disk.dev.read + disk.dev.write + sample.long.writeme
+myname.d = (disk.dev.read)
+myname.e = 2 * disk.dev.write + sample.long.writeme
+myname.f = 2 + disk.dev.write * sample.long.writeme
+myname.g = ( 2 + disk.dev.write ) * sample.long.writeme
+myname.h = 2 + ( disk.dev.write * sample.long.writeme )
+myname.i = (disk.dev.write+disk.dev.read)*(sample.long.one+sample.long.ten)
+myname.j = (disk.dev.write*disk.dev.read)+(sample.long.one*sample.long.ten)
+myname.k = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million + sample.longlong.one + sample.longlong.ten + sample.longlong.hundred + sample.longlong.million
+myname.l = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million - sample.longlong.one - sample.longlong.ten - sample.longlong.hundred - sample.longlong.million
+myname.m = sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten
+myname.n = sample.long.one + sample.longlong.one * sample.long.ten + sample.longlong.ten
+myname.ABC.k42.x_1_3 = disk.dev.write*disk.dev.read + sample.long.one*sample.long.ten
+myname.o= sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten + sample.long.hundred * sample.longlong.hundred + sample.long.million * sample.longlong.million
+myname.p = pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total )
+myname.biggest.const = 4294967295
+End-of-File
+
+pminfo -Dderive,appl0 -c $tmp.config -n $tmp.pmns >$tmp.out 2>&1
+_filter
+
+echo | tee -a $seq.full
+echo "Syntax errors ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+myname.a = sample.long.one +
+myname.b = sample.long.one sample.long.ten
+myname.c=sample.long.one**sample.long.ten
+=
+myname.d
+myname.e =
+myname.e sample.long.one + sample.long.ten
+bad-name-xyz = sample.long.one
+123_really_bad_name = sample.long.one
+tricky._bad_name = sample.long.one
+myname.f = pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total
+myname.g = pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total ) )
+myname.a = 1
+myname.a = dup.name.a
+myname.h = 4294967296
+# extra tests here from gcov analysis
+myname.gcov.a = foo = bar
+# very long source lines to test buffer handling in parser
+myname.gcov.b = sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + "bogus"
+myname.gcov.c = sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million + "bogus"
+ myname.gcov.d = 3 * space
+ myname.gcov.e = tab
+myname.gcov.f = ( 1 + foo + ( ?
+myname.gcov.g = /
+
+End-of-File
+
+pminfo -Dderive,appl0 -c $tmp.config -n $tmp.pmns >$tmp.out 2>&1
+_filter
+
+export PCP_DERIVED_CONFIG=/no/such/file
+pminfo -Dderive -d no.such.metric
+
+# success, all done
+exit
diff --git a/qa/225.out b/qa/225.out
new file mode 100644
index 0000000..e833f8c
--- /dev/null
+++ b/qa/225.out
@@ -0,0 +1,534 @@
+QA output created by 225
+No syntax errors here ...
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: name="myname.a" expr="disk.dev.read"
+parse(1) state=P_INIT type=L_NAME "disk.dev.read"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[0] myname.a = disk.dev.read
+Derived metric expr dump from <addr->...
+expr node <addr-> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.read] master=1
+pmRegisterDerived: name="myname.b" expr="disk.dev.read + disk.dev.write"
+parse(1) state=P_INIT type=L_NAME "disk.dev.read"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "disk.dev.write"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[1] myname.b = disk.dev.read + disk.dev.write
+Derived metric expr dump from <addr-1>...
+expr node <addr-1> type=PLUS left=<addr-2> right=<addr-3> save_last=0
+expr node <addr-2> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.read] master=1
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+pmRegisterDerived: name="myname.c" expr="disk.dev.read + disk.dev.write + sample.long.writeme"
+parse(1) state=P_INIT type=L_NAME "disk.dev.read"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "disk.dev.write"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.writeme"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[2] myname.c = disk.dev.read + disk.dev.write + sample.long.writeme
+Derived metric expr dump from <addr-4>...
+expr node <addr-4> type=PLUS left=<addr-5> right=<addr-8> save_last=0
+expr node <addr-5> type=PLUS left=<addr-6> right=<addr-7> save_last=0
+expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.read] master=1
+expr node <addr-7> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-8> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.writeme] master=1
+pmRegisterDerived: name="myname.d" expr="(disk.dev.read)"
+parse(1) state=P_INIT type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "disk.dev.read"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_EOF ""
+pmRegisterDerived: register metric[3] myname.d = (disk.dev.read)
+Derived metric expr dump from <addr-9>...
+expr node <addr-9> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.read] master=1
+pmRegisterDerived: name="myname.e" expr="2 * disk.dev.write + sample.long.writeme"
+parse(1) state=P_INIT type=L_NUMBER "2"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "disk.dev.write"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.writeme"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[4] myname.e = 2 * disk.dev.write + sample.long.writeme
+Derived metric expr dump from <addr-10>...
+expr node <addr-10> type=PLUS left=<addr-11> right=<addr-14> save_last=0
+expr node <addr-11> type=STAR left=<addr-12> right=<addr-13> save_last=0
+expr node <addr-12> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=1
+expr node <addr-13> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-14> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.writeme] master=1
+pmRegisterDerived: name="myname.f" expr="2 + disk.dev.write * sample.long.writeme"
+parse(1) state=P_INIT type=L_NUMBER "2"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "disk.dev.write"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.long.writeme"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[5] myname.f = 2 + disk.dev.write * sample.long.writeme
+Derived metric expr dump from <addr-15>...
+expr node <addr-15> type=PLUS left=<addr-16> right=<addr-17> save_last=0
+expr node <addr-16> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=1
+expr node <addr-17> type=STAR left=<addr-18> right=<addr-19> save_last=0
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-19> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.writeme] master=1
+pmRegisterDerived: name="myname.g" expr="( 2 + disk.dev.write ) * sample.long.writeme"
+parse(1) state=P_INIT type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NUMBER "2"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_NAME "disk.dev.write"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.long.writeme"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[6] myname.g = ( 2 + disk.dev.write ) * sample.long.writeme
+Derived metric expr dump from <addr-20>...
+expr node <addr-20> type=STAR left=<addr-21> right=<addr-24> save_last=0
+expr node <addr-21> type=PLUS left=<addr-22> right=<addr-23> save_last=0
+expr node <addr-22> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=1
+expr node <addr-23> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-24> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.writeme] master=1
+pmRegisterDerived: name="myname.h" expr="2 + ( disk.dev.write * sample.long.writeme )"
+parse(1) state=P_INIT type=L_NUMBER "2"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "disk.dev.write"
+parse(2) state=P_LEAF type=L_STAR "*"
+parse(2) state=P_BINOP type=L_NAME "sample.long.writeme"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_EOF ""
+pmRegisterDerived: register metric[7] myname.h = 2 + ( disk.dev.write * sample.long.writeme )
+Derived metric expr dump from <addr-25>...
+expr node <addr-25> type=PLUS left=<addr-26> right=<addr-27> save_last=0
+expr node <addr-26> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=1
+expr node <addr-27> type=STAR left=<addr-28> right=<addr-29> save_last=0
+expr node <addr-28> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-29> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.writeme] master=1
+pmRegisterDerived: name="myname.i" expr="(disk.dev.write+disk.dev.read)*(sample.long.one+sample.long.ten)"
+parse(1) state=P_INIT type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "disk.dev.write"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_NAME "disk.dev.read"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_STAR "*"
+parse(1) state=P_BINOP type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "sample.long.one"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_EOF ""
+pmRegisterDerived: register metric[8] myname.i = (disk.dev.write+disk.dev.read)*(sample.long.one+sample.long.ten)
+Derived metric expr dump from <addr-30>...
+expr node <addr-30> type=STAR left=<addr-31> right=<addr-34> save_last=0
+expr node <addr-31> type=PLUS left=<addr-32> right=<addr-33> save_last=0
+expr node <addr-32> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-33> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.read] master=1
+expr node <addr-34> type=PLUS left=<addr-35> right=<addr-36> save_last=0
+expr node <addr-35> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-36> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+pmRegisterDerived: name="myname.j" expr="(disk.dev.write*disk.dev.read)+(sample.long.one*sample.long.ten)"
+parse(1) state=P_INIT type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "disk.dev.write"
+parse(2) state=P_LEAF type=L_STAR "*"
+parse(2) state=P_BINOP type=L_NAME "disk.dev.read"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "sample.long.one"
+parse(2) state=P_LEAF type=L_STAR "*"
+parse(2) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_EOF ""
+pmRegisterDerived: register metric[9] myname.j = (disk.dev.write*disk.dev.read)+(sample.long.one*sample.long.ten)
+Derived metric expr dump from <addr-37>...
+expr node <addr-37> type=PLUS left=<addr-38> right=<addr-41> save_last=0
+expr node <addr-38> type=STAR left=<addr-39> right=<addr-40> save_last=0
+expr node <addr-39> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-40> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.read] master=1
+expr node <addr-41> type=STAR left=<addr-42> right=<addr-43> save_last=0
+expr node <addr-42> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-43> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+pmRegisterDerived: name="myname.k" expr="sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million + sample.longlong.one + sample.longlong.ten + sample.longlong.hundred + sample.longlong.million"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.hundred"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.one"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.ten"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.hundred"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[10] myname.k = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million + sample.longlong.one + sample.longlong.ten + sample.longlong.hundred + sample.longlong.million
+Derived metric expr dump from <addr-44>...
+expr node <addr-44> type=PLUS left=<addr-45> right=<addr-58> save_last=0
+expr node <addr-45> type=PLUS left=<addr-46> right=<addr-57> save_last=0
+expr node <addr-46> type=PLUS left=<addr-47> right=<addr-56> save_last=0
+expr node <addr-47> type=PLUS left=<addr-48> right=<addr-55> save_last=0
+expr node <addr-48> type=PLUS left=<addr-49> right=<addr-54> save_last=0
+expr node <addr-49> type=PLUS left=<addr-50> right=<addr-53> save_last=0
+expr node <addr-50> type=PLUS left=<addr-51> right=<addr-52> save_last=0
+expr node <addr-51> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-52> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+expr node <addr-53> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=1
+expr node <addr-54> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=1
+expr node <addr-55> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=1
+expr node <addr-56> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.ten] master=1
+expr node <addr-57> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=1
+expr node <addr-58> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=1
+pmRegisterDerived: name="myname.l" expr="sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million - sample.longlong.one - sample.longlong.ten - sample.longlong.hundred - sample.longlong.million"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.hundred"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.million"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.one"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.ten"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.hundred"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[11] myname.l = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million - sample.longlong.one - sample.longlong.ten - sample.longlong.hundred - sample.longlong.million
+Derived metric expr dump from <addr-59>...
+expr node <addr-59> type=MINUS left=<addr-60> right=<addr-73> save_last=0
+expr node <addr-60> type=MINUS left=<addr-61> right=<addr-72> save_last=0
+expr node <addr-61> type=MINUS left=<addr-62> right=<addr-71> save_last=0
+expr node <addr-62> type=MINUS left=<addr-63> right=<addr-70> save_last=0
+expr node <addr-63> type=PLUS left=<addr-64> right=<addr-69> save_last=0
+expr node <addr-64> type=PLUS left=<addr-65> right=<addr-68> save_last=0
+expr node <addr-65> type=PLUS left=<addr-66> right=<addr-67> save_last=0
+expr node <addr-66> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-67> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+expr node <addr-68> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=1
+expr node <addr-69> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=1
+expr node <addr-70> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=1
+expr node <addr-71> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.ten] master=1
+expr node <addr-72> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=1
+expr node <addr-73> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=1
+pmRegisterDerived: name="myname.m" expr="sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.one"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.ten"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[12] myname.m = sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten
+Derived metric expr dump from <addr-74>...
+expr node <addr-74> type=PLUS left=<addr-75> right=<addr-78> save_last=0
+expr node <addr-75> type=STAR left=<addr-76> right=<addr-77> save_last=0
+expr node <addr-76> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-77> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=1
+expr node <addr-78> type=STAR left=<addr-79> right=<addr-80> save_last=0
+expr node <addr-79> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+expr node <addr-80> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.ten] master=1
+pmRegisterDerived: name="myname.n" expr="sample.long.one + sample.longlong.one * sample.long.ten + sample.longlong.ten"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.one"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.ten"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[13] myname.n = sample.long.one + sample.longlong.one * sample.long.ten + sample.longlong.ten
+Derived metric expr dump from <addr-81>...
+expr node <addr-81> type=PLUS left=<addr-82> right=<addr-87> save_last=0
+expr node <addr-82> type=PLUS left=<addr-83> right=<addr-84> save_last=0
+expr node <addr-83> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-84> type=STAR left=<addr-85> right=<addr-86> save_last=0
+expr node <addr-85> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=1
+expr node <addr-86> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+expr node <addr-87> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.ten] master=1
+pmRegisterDerived: name="myname.ABC.k42.x_1_3" expr="disk.dev.write*disk.dev.read + sample.long.one*sample.long.ten "
+parse(1) state=P_INIT type=L_NAME "disk.dev.write"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "disk.dev.read"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[14] myname.ABC.k42.x_1_3 = disk.dev.write*disk.dev.read + sample.long.one*sample.long.ten
+Derived metric expr dump from <addr-88>...
+expr node <addr-88> type=PLUS left=<addr-89> right=<addr-92> save_last=0
+expr node <addr-89> type=STAR left=<addr-90> right=<addr-91> save_last=0
+expr node <addr-90> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.write] master=1
+expr node <addr-91> type=NAME left=(nil) right=(nil) save_last=0 [disk.dev.read] master=1
+expr node <addr-92> type=STAR left=<addr-93> right=<addr-94> save_last=0
+expr node <addr-93> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-94> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+pmRegisterDerived: name="myname.o" expr="sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten + sample.long.hundred * sample.longlong.hundred + sample.long.million * sample.longlong.million"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.one"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.ten"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.hundred"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.hundred"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.long.million"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[15] myname.o = sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten + sample.long.hundred * sample.longlong.hundred + sample.long.million * sample.longlong.million
+Derived metric expr dump from <addr-95>...
+expr node <addr-95> type=PLUS left=<addr-96> right=<addr-107> save_last=0
+expr node <addr-96> type=PLUS left=<addr-97> right=<addr-104> save_last=0
+expr node <addr-97> type=PLUS left=<addr-98> right=<addr-101> save_last=0
+expr node <addr-98> type=STAR left=<addr-99> right=<addr-100> save_last=0
+expr node <addr-99> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=1
+expr node <addr-100> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=1
+expr node <addr-101> type=STAR left=<addr-102> right=<addr-103> save_last=0
+expr node <addr-102> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+expr node <addr-103> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.ten] master=1
+expr node <addr-104> type=STAR left=<addr-105> right=<addr-106> save_last=0
+expr node <addr-105> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=1
+expr node <addr-106> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=1
+expr node <addr-107> type=STAR left=<addr-108> right=<addr-109> save_last=0
+expr node <addr-108> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=1
+expr node <addr-109> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=1
+pmRegisterDerived: name="myname.p" expr="pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total )"
+parse(1) state=P_INIT type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "pmcd.pdu_in.total"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_NAME "pmcd.pdu_out.total"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_EOF ""
+pmRegisterDerived: register metric[16] myname.p = pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total )
+Derived metric expr dump from <addr-110>...
+expr node <addr-110> type=SLASH left=<addr-111> right=<addr-112> save_last=0
+expr node <addr-111> type=NAME left=(nil) right=(nil) save_last=0 [pmcd.pdu_in.total] master=1
+expr node <addr-112> type=PLUS left=<addr-113> right=<addr-114> save_last=0
+expr node <addr-113> type=NAME left=(nil) right=(nil) save_last=0 [pmcd.pdu_in.total] master=1
+expr node <addr-114> type=NAME left=(nil) right=(nil) save_last=0 [pmcd.pdu_out.total] master=1
+pmRegisterDerived: name="myname.biggest.const" expr="4294967295"
+parse(1) state=P_INIT type=L_NUMBER "4294967295"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[17] myname.biggest.const = 4294967295
+Derived metric expr dump from <addr-115>...
+expr node <addr-115> type=NUMBER left=(nil) right=(nil) save_last=0 [4294967295] master=1
+pmGetChildren(name="") 1 regular children, 1 derived children
+pmGetChildren(name="local_pmns_no_pmcd_connection") 0 regular children, no derived children (Unknown metric name)
+pmGetChildren(name="myname") no regular children (Unknown metric name), 18 derived children
+pmGetChildren(name="myname.a") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.b") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.c") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.d") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.e") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.f") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.g") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.h") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.i") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.j") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.k") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.l") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.m") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.n") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.ABC") no regular children (Unknown metric name), 1 derived children
+pmGetChildren(name="myname.ABC.k42") no regular children (Unknown metric name), 1 derived children
+pmGetChildren(name="myname.ABC.k42.x_1_3") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.o") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.p") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.biggest") no regular children (Unknown metric name), 1 derived children
+pmGetChildren(name="myname.biggest.const") no regular children (Unknown metric name), derived leaf
+local_pmns_no_pmcd_connection
+myname.a
+myname.b
+myname.c
+myname.d
+myname.e
+myname.f
+myname.g
+myname.h
+myname.i
+myname.j
+myname.k
+myname.l
+myname.m
+myname.n
+myname.ABC.k42.x_1_3
+myname.o
+myname.p
+myname.biggest.const
+
+Syntax errors ...
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: name="myname.a" expr="sample.long.one +"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_EOF ""
+[TMP.config:1] Error: pmRegisterDerived(myname.a, ...) syntax error
+ sample.long.one +
+ ^
+End of input
+pmRegisterDerived: name="myname.b" expr="sample.long.one sample.long.ten"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_NAME "sample.long.ten"
+[TMP.config:2] Error: pmRegisterDerived(myname.b, ...) syntax error
+ sample.long.one sample.long.ten
+ ^
+pmRegisterDerived: name="myname.c" expr="sample.long.one**sample.long.ten"
+parse(1) state=P_INIT type=L_NAME "sample.long.one"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_STAR "*"
+[TMP.config:3] Error: pmRegisterDerived(myname.c, ...) syntax error
+sample.long.one**sample.long.ten
+ ^
+[TMP.config:4] Error: pmLoadDerivedConfig: derived metric name missing
+=
+[TMP.config:5] Error: pmLoadDerivedConfig: missing ``='' after derived metric name
+myname.d
+[TMP.config:6] Error: pmLoadDerivedConfig: expression missing
+myname.e =
+[TMP.config:7] Error: pmLoadDerivedConfig: missing ``='' after derived metric name
+myname.e sample.long.one + sample.long.ten
+[TMP.config:8] Error: pmLoadDerivedConfig: illegal derived metric name (bad-name-xyz)
+[TMP.config:9] Error: pmLoadDerivedConfig: illegal derived metric name (123_really_bad_name)
+[TMP.config:10] Error: pmLoadDerivedConfig: illegal derived metric name (tricky._bad_name)
+pmRegisterDerived: name="myname.f" expr="pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total"
+parse(1) state=P_INIT type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "pmcd.pdu_in.total"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_NAME "pmcd.pdu_out.total"
+parse(2) state=P_LEAF type=L_EOF ""
+[TMP.config:11] Error: pmRegisterDerived(myname.f, ...) syntax error
+ pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total
+ ^
+End of input
+pmRegisterDerived: name="myname.g" expr="pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total ) )"
+parse(1) state=P_INIT type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NAME "pmcd.pdu_in.total"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_NAME "pmcd.pdu_out.total"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_RPAREN ")"
+[TMP.config:12] Error: pmRegisterDerived(myname.g, ...) syntax error
+ pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total ) )
+ ^
+Unexpected ')'
+pmRegisterDerived: name="myname.a" expr="1"
+parse(1) state=P_INIT type=L_NUMBER "1"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[0] myname.a = 1
+Derived metric expr dump from <addr->...
+expr node <addr-> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=1
+pmRegisterDerived: name="myname.a" expr="dup.name.a"
+[TMP.config:14] Error: pmRegisterDerived(myname.a, ...) syntax error
+ dup.name.a
+ ^
+Duplicate derived metric name
+pmRegisterDerived: name="myname.h" expr="4294967296"
+parse(1) state=P_INIT type=L_NUMBER "4294967296"
+[TMP.config:15] Error: pmRegisterDerived(myname.h, ...) syntax error
+ 4294967296
+ ^
+Constant value too large
+pmRegisterDerived: name="myname.gcov.a" expr="foo = bar"
+parse(1) state=P_INIT type=L_NAME "foo"
+parse(1) state=P_LEAF type=L_ERROR "=oo"
+[TMP.config:17] Error: pmRegisterDerived(myname.gcov.a, ...) syntax error
+ foo = bar
+ ^
+Illegal character
+pmRegisterDerived: name="myname.gcov.b" expr="sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + "bogus""
+parse(1) state=P_INIT type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_ERROR """
+[TMP.config:19] Error: pmRegisterDerived(myname.gcov.b, ...) syntax error
+ sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + "bogus"
+ ^
+Illegal character
+pmRegisterDerived: name="myname.gcov.c" expr="sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million + "bogus""
+parse(1) state=P_INIT type=L_NAME "sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_ERROR """
+[TMP.config:20] Error: pmRegisterDerived(myname.gcov.c, ...) syntax error
+ sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million + "bogus"
+ ^
+Illegal character
+pmRegisterDerived: name="myname.gcov.d" expr="3 * space"
+parse(1) state=P_INIT type=L_NUMBER "3"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "space"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[1] myname.gcov.d = 3 * space
+Derived metric expr dump from <addr-1>...
+expr node <addr-1> type=STAR left=<addr-2> right=<addr-3> save_last=0
+expr node <addr-2> type=NUMBER left=(nil) right=(nil) save_last=0 [3] master=1
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=0 [space] master=1
+pmRegisterDerived: name="myname.gcov.e" expr="tab"
+parse(1) state=P_INIT type=L_NAME "tab"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[2] myname.gcov.e = tab
+Derived metric expr dump from <addr-4>...
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [tab] master=1
+pmRegisterDerived: name="myname.gcov.f" expr="( 1 + foo + ( ?"
+parse(1) state=P_INIT type=L_LPAREN "("
+parse(2) state=P_INIT type=L_NUMBER "1"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_NAME "foo"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_LPAREN "("
+parse(3) state=P_INIT type=L_ERROR "?"
+[TMP.config:23] Error: pmRegisterDerived(myname.gcov.f, ...) syntax error
+ ( 1 + foo + ( ?
+ ^
+Illegal character
+pmRegisterDerived: name="myname.gcov.g" expr="/"
+parse(1) state=P_INIT type=L_SLASH "/"
+[TMP.config:24] Error: pmRegisterDerived(myname.gcov.g, ...) syntax error
+ /
+ ^
+pmGetChildren(name="") 1 regular children, 1 derived children
+pmGetChildren(name="local_pmns_no_pmcd_connection") 0 regular children, no derived children (Unknown metric name)
+pmGetChildren(name="myname") no regular children (Unknown metric name), 2 derived children
+pmGetChildren(name="myname.a") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.gcov") no regular children (Unknown metric name), 2 derived children
+pmGetChildren(name="myname.gcov.d") no regular children (Unknown metric name), derived leaf
+pmGetChildren(name="myname.gcov.e") no regular children (Unknown metric name), derived leaf
+local_pmns_no_pmcd_connection
+myname.a
+myname.gcov.d
+myname.gcov.e
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("/no/such/file")
+pmLoadDerivedConfig -> No such file or directory
+Error: no.such.metric: Unknown metric name
diff --git a/qa/226 b/qa/226
new file mode 100755
index 0000000..0e85244
--- /dev/null
+++ b/qa/226
@@ -0,0 +1,46 @@
+#! /bin/sh
+# PCP QA Test No. 226
+# Check for missing dbpmda help text
+#
+# Copyright (c) 2009 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3801 ]
+then
+ ln $seq.out.3 $seq.out || exit 1
+elif [ $PCP_VER -ge 3800 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo help | dbpmda 2>&1 | tee $tmp.cmds
+
+sed -e 's/ .*//' <$tmp.cmds \
+| LC_COLLATE=POSIX sort -u \
+| while read cmd
+do
+ [ -z "$cmd" ] && continue
+ [ "$cmd" = help ] && continue
+ echo "help $cmd"
+done \
+| dbpmda -ie
+
+# success, all done
+exit
diff --git a/qa/226.out.1 b/qa/226.out.1
new file mode 100644
index 0000000..c817c65
--- /dev/null
+++ b/qa/226.out.1
@@ -0,0 +1,190 @@
+QA output created by 226
+help [ command ]
+
+children metric-name
+close
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+desc metric
+fetch metric [ metric ... ]
+getdesc on | off
+instance indom# [ number | name | "name" ]
+name pmid#
+namespace fname
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket sockname
+pmid metric-name
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+quit
+status
+store metric "value"
+text metric
+text indom indom#
+timer on | off
+traverse metric-name
+wait seconds
+watch logfilename
+
+dbpmda> help children
+
+children metric-name
+
+Fetch and print the next name component of the direct decendents of
+metric-name in the PMNS, reporting for each if it is a leaf node or a
+non-leaf node.
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help close
+
+close
+
+Close the pipe to a daemon PMDA or dlclose(3) a DSO PMDA. dbpmda does not
+exit, allowing another PMDA to be opened.
+
+dbpmda> help debug
+
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+
+Specify which debugging flags should be active (see pmdbg(1)). Flags may
+be specified as integers or by name, with multiple flags separated by
+white space. All flags may be selected or deselected if 'all' or 'none' is
+specified. The current setting is displayed by the status command.
+
+
+dbpmda> help desc
+
+desc metric
+
+Print out the meta data description for the 'metric'. The metric may be
+specified by name, or as a PMID of the form N, N.N or N.N.N.
+
+dbpmda> help fetch
+
+fetch metric [ metric ... ]
+
+Fetch metrics from the PMDA. The metrics may be specified as a list of
+metric names, or PMIDs of the form N, N.N or N.N.N.
+
+dbpmda> help getdesc
+
+getdesc on | off
+
+Before doing a fetch, get the descriptor so that the result of a fetch
+can be printed out correctly.
+
+dbpmda> help instance
+
+instance indom# [ number | name | "name" ]
+
+List the instances in 'indom'. The list may be restricted to a specific
+instance 'name' or 'number'.
+
+dbpmda> help name
+
+name pmid#
+
+Print the name of the metric with PMID pmid#. The pmid# syntax follows
+the source PMNS syntax, namely 3 numbers separated by '.' to encode
+the domain, cluster and item components of the PMID, e.g.
+ name 29.0.1004
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help namespace
+
+namespace fname
+
+Unload the current Name Space and load up the given Name Space.
+If unsuccessful then will try to reload the previous Name Space.
+
+dbpmda> help open
+
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket sockname
+
+Open a PMDA as either a DSO, via UNIX domain socket (named pipe), or as a
+daemon (connected with a pipe). The 'dsoname' and 'execname' fields are
+the path to the PMDA shared object file or executable. The 'sockname'
+field is the path of a named pipe where a PMDA is listening for connections.
+The arguments to this command are similar to a line in the pmcd.conf file.
+
+dbpmda> help pmid
+
+pmid metric-name
+
+Print the PMID for the named metric
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help profile
+
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+
+For the instance domain specified, the profile may be changed to include
+'all' instances, no instances, add an instance or delete an instance.
+
+dbpmda> help quit
+
+quit
+
+Exit dbpmda. This also closes any open PMDAs.
+
+dbpmda> help status
+
+status
+
+Display the state of dbpmda, including which PMDA is connected, which
+pmDebug flags are set, and the current profile.
+
+dbpmda> help store
+
+store metric "value"
+
+Store the value (int, real or string) into the 'metric'. The metric may be
+specified by name or as a PMID with the format N, N.N, N.N.N. The value to
+be stored must be enclosed in quotes. Unlike the other commands, a store
+must request a metric description and fetch the metric to determine how to
+interpret the value, and to allocate the PDU for transmitting the value,
+respectively. The current profile will be used.
+
+dbpmda> help text
+
+text metric
+text indom indom#
+
+Retrieve the help text for the 'metric' or 'indom' from the PMDA. The one
+line message is shown between '[' and ']' with the long message on the next
+line. To get the help text for an instance domain requires the word
+``indom'' before the indom number
+
+dbpmda> help timer
+
+timer on | off
+
+Report the response time of the PMDA when sending and receiving PDUs.
+
+dbpmda> help traverse
+
+traverse metric-name
+
+Fetch and print all of the decendent metric names below metric-name
+in the PMNS.
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help wait
+
+wait seconds
+
+Sleep for this number of seconds
+
+dbpmda> help watch
+
+watch logfilename
+
+A xwsh window is opened which tails the specified log file. This window
+must be closed by the user when no longer required.
+
+dbpmda>
diff --git a/qa/226.out.2 b/qa/226.out.2
new file mode 100644
index 0000000..52edc8d
--- /dev/null
+++ b/qa/226.out.2
@@ -0,0 +1,200 @@
+QA output created by 226
+help [ command ]
+
+attr name [value]
+attr attr# [value]
+children metric-name
+close
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+desc metric
+fetch metric [ metric ... ]
+getdesc on | off
+instance indom# [ number | name | "name" ]
+name pmid#
+namespace fname
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket sockname
+pmid metric-name
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+quit
+status
+store metric "value"
+text metric
+text indom indom#
+timer on | off
+traverse metric-name
+wait seconds
+watch logfilename
+
+dbpmda> help attr
+
+attr name [value]
+attr attr# [value]
+
+Set a security attribute. These set aspects of per-user authentication,
+allowing a PMDA to provide different metric views for different users.
+
+dbpmda> help children
+
+children metric-name
+
+Fetch and print the next name component of the direct decendents of
+metric-name in the PMNS, reporting for each if it is a leaf node or a
+non-leaf node.
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help close
+
+close
+
+Close the pipe to a daemon PMDA or dlclose(3) a DSO PMDA. dbpmda does not
+exit, allowing another PMDA to be opened.
+
+dbpmda> help debug
+
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+
+Specify which debugging flags should be active (see pmdbg(1)). Flags may
+be specified as integers or by name, with multiple flags separated by
+white space. All flags may be selected or deselected if 'all' or 'none' is
+specified. The current setting is displayed by the status command.
+
+
+dbpmda> help desc
+
+desc metric
+
+Print out the meta data description for the 'metric'. The metric may be
+specified by name, or as a PMID of the form N, N.N or N.N.N.
+
+dbpmda> help fetch
+
+fetch metric [ metric ... ]
+
+Fetch metrics from the PMDA. The metrics may be specified as a list of
+metric names, or PMIDs of the form N, N.N or N.N.N.
+
+dbpmda> help getdesc
+
+getdesc on | off
+
+Before doing a fetch, get the descriptor so that the result of a fetch
+can be printed out correctly.
+
+dbpmda> help instance
+
+instance indom# [ number | name | "name" ]
+
+List the instances in 'indom'. The list may be restricted to a specific
+instance 'name' or 'number'.
+
+dbpmda> help name
+
+name pmid#
+
+Print the name of the metric with PMID pmid#. The pmid# syntax follows
+the source PMNS syntax, namely 3 numbers separated by '.' to encode
+the domain, cluster and item components of the PMID, e.g.
+ name 29.0.1004
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help namespace
+
+namespace fname
+
+Unload the current Name Space and load up the given Name Space.
+If unsuccessful then will try to reload the previous Name Space.
+
+dbpmda> help open
+
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket sockname
+
+Open a PMDA as either a DSO, via UNIX domain socket (named pipe), or as a
+daemon (connected with a pipe). The 'dsoname' and 'execname' fields are
+the path to the PMDA shared object file or executable. The 'sockname'
+field is the path of a named pipe where a PMDA is listening for connections.
+The arguments to this command are similar to a line in the pmcd.conf file.
+
+dbpmda> help pmid
+
+pmid metric-name
+
+Print the PMID for the named metric
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help profile
+
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+
+For the instance domain specified, the profile may be changed to include
+'all' instances, no instances, add an instance or delete an instance.
+
+dbpmda> help quit
+
+quit
+
+Exit dbpmda. This also closes any open PMDAs.
+
+dbpmda> help status
+
+status
+
+Display the state of dbpmda, including which PMDA is connected, which
+pmDebug flags are set, and the current profile.
+
+dbpmda> help store
+
+store metric "value"
+
+Store the value (int, real or string) into the 'metric'. The metric may be
+specified by name or as a PMID with the format N, N.N, N.N.N. The value to
+be stored must be enclosed in quotes. Unlike the other commands, a store
+must request a metric description and fetch the metric to determine how to
+interpret the value, and to allocate the PDU for transmitting the value,
+respectively. The current profile will be used.
+
+dbpmda> help text
+
+text metric
+text indom indom#
+
+Retrieve the help text for the 'metric' or 'indom' from the PMDA. The one
+line message is shown between '[' and ']' with the long message on the next
+line. To get the help text for an instance domain requires the word
+``indom'' before the indom number
+
+dbpmda> help timer
+
+timer on | off
+
+Report the response time of the PMDA when sending and receiving PDUs.
+
+dbpmda> help traverse
+
+traverse metric-name
+
+Fetch and print all of the decendent metric names below metric-name
+in the PMNS.
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help wait
+
+wait seconds
+
+Sleep for this number of seconds
+
+dbpmda> help watch
+
+watch logfilename
+
+A xwsh window is opened which tails the specified log file. This window
+must be closed by the user when no longer required.
+
+dbpmda>
diff --git a/qa/226.out.3 b/qa/226.out.3
new file mode 100644
index 0000000..82e6af8
--- /dev/null
+++ b/qa/226.out.3
@@ -0,0 +1,207 @@
+QA output created by 226
+help [ command ]
+
+attr name [value]
+attr attr# [value]
+children metric-name
+close
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+desc metric
+fetch metric [ metric ... ]
+getdesc on | off
+instance indom# [ number | name | "name" ]
+name pmid#
+namespace fname
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket unix sockname
+open socket inet port#|service
+open socket ipv6 port#|service
+pmid metric-name
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+quit
+status
+store metric "value"
+text metric
+text indom indom#
+timer on | off
+traverse metric-name
+wait seconds
+watch logfilename
+
+dbpmda> help attr
+
+attr name [value]
+attr attr# [value]
+
+Set a security attribute. These set aspects of per-user authentication,
+allowing a PMDA to provide different metric views for different users.
+
+dbpmda> help children
+
+children metric-name
+
+Fetch and print the next name component of the direct decendents of
+metric-name in the PMNS, reporting for each if it is a leaf node or a
+non-leaf node.
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help close
+
+close
+
+Close the pipe to a daemon PMDA or dlclose(3) a DSO PMDA. dbpmda does not
+exit, allowing another PMDA to be opened.
+
+dbpmda> help debug
+
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+
+Specify which debugging flags should be active (see pmdbg(1)). Flags may
+be specified as integers or by name, with multiple flags separated by
+white space. All flags may be selected or deselected if 'all' or 'none' is
+specified. The current setting is displayed by the status command.
+
+
+dbpmda> help desc
+
+desc metric
+
+Print out the meta data description for the 'metric'. The metric may be
+specified by name, or as a PMID of the form N, N.N or N.N.N.
+
+dbpmda> help fetch
+
+fetch metric [ metric ... ]
+
+Fetch metrics from the PMDA. The metrics may be specified as a list of
+metric names, or PMIDs of the form N, N.N or N.N.N.
+
+dbpmda> help getdesc
+
+getdesc on | off
+
+Before doing a fetch, get the descriptor so that the result of a fetch
+can be printed out correctly.
+
+dbpmda> help instance
+
+instance indom# [ number | name | "name" ]
+
+List the instances in 'indom'. The list may be restricted to a specific
+instance 'name' or 'number'.
+
+dbpmda> help name
+
+name pmid#
+
+Print the name of the metric with PMID pmid#. The pmid# syntax follows
+the source PMNS syntax, namely 3 numbers separated by '.' to encode
+the domain, cluster and item components of the PMID, e.g.
+ name 29.0.1004
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help namespace
+
+namespace fname
+
+Unload the current Name Space and load up the given Name Space.
+If unsuccessful then will try to reload the previous Name Space.
+
+dbpmda> help open
+
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket unix sockname
+open socket inet port#|service
+open socket ipv6 port#|service
+
+Open a PMDA as either a DSO, via a network socket (unix/inet/ipv6), or as a
+daemon (connected with a pipe). The 'dsoname' and 'execname' fields are
+the path to the PMDA shared object file or executable. The first socket PMDA
+field is the type - either unix (if supported), inet or ipv6. The 'sockname'
+argument for unix sockets is a path of a named pipe where a PMDA is listening
+for connections. The 'port' argument is a port number, 'serv' a service name
+typically defined in /etc/services (resolved to a port via getservent(3)).
+The arguments to this command are similar to a line in the pmcd.conf file.
+
+dbpmda> help pmid
+
+pmid metric-name
+
+Print the PMID for the named metric
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help profile
+
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+
+For the instance domain specified, the profile may be changed to include
+'all' instances, no instances, add an instance or delete an instance.
+
+dbpmda> help quit
+
+quit
+
+Exit dbpmda. This also closes any open PMDAs.
+
+dbpmda> help status
+
+status
+
+Display the state of dbpmda, including which PMDA is connected, which
+pmDebug flags are set, and the current profile.
+
+dbpmda> help store
+
+store metric "value"
+
+Store the value (int, real or string) into the 'metric'. The metric may be
+specified by name or as a PMID with the format N, N.N, N.N.N. The value to
+be stored must be enclosed in quotes. Unlike the other commands, a store
+must request a metric description and fetch the metric to determine how to
+interpret the value, and to allocate the PDU for transmitting the value,
+respectively. The current profile will be used.
+
+dbpmda> help text
+
+text metric
+text indom indom#
+
+Retrieve the help text for the 'metric' or 'indom' from the PMDA. The one
+line message is shown between '[' and ']' with the long message on the next
+line. To get the help text for an instance domain requires the word
+``indom'' before the indom number
+
+dbpmda> help timer
+
+timer on | off
+
+Report the response time of the PMDA when sending and receiving PDUs.
+
+dbpmda> help traverse
+
+traverse metric-name
+
+Fetch and print all of the decendent metric names below metric-name
+in the PMNS.
+Most useful for PMDAs that support dynamic metrics in the PMNS.
+
+dbpmda> help wait
+
+wait seconds
+
+Sleep for this number of seconds
+
+dbpmda> help watch
+
+watch logfilename
+
+A xwsh window is opened which tails the specified log file. This window
+must be closed by the user when no longer required.
+
+dbpmda>
diff --git a/qa/227 b/qa/227
new file mode 100755
index 0000000..9181d95
--- /dev/null
+++ b/qa/227
@@ -0,0 +1,35 @@
+#! /bin/sh
+# PCP QA Test No. 227
+# pmafm null input test
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cd src
+mkaf foo.0 >$tmp
+
+echo '/dev/null ...'
+pmafm $tmp </dev/null
+
+echo
+echo 'one blank line ...'
+echo '' | pmafm $tmp
+
+echo
+echo 'two blank lines, ?, two blank lines ...'
+echo '
+
+?
+
+' | pmafm $tmp
diff --git a/qa/227.out b/qa/227.out
new file mode 100644
index 0000000..325b0f6
--- /dev/null
+++ b/qa/227.out
@@ -0,0 +1,31 @@
+QA output created by 227
+/dev/null ...
+pmafm>
+
+one blank line ...
+pmafm> pmafm>
+
+two blank lines, ?, two blank lines ...
+pmafm> pmafm> pmafm> PCP Archive Folio Manager
+
+Commands:
+ archives - select all archives
+ archives N[,...] - select archives with these ordinal numbers
+ archives name[,...] - select archives with these names
+ check - integrity check for folio
+ help - this message
+ hosts - select archives for all hosts (the default)
+ hosts hostname[,...] - select archives for just these hosts
+ list [verbose] - display folio contents
+ quit - exit
+ remove - echo the sh(1) command to delete all files
+ associated with the folio
+ repeat tool [arg ...] - execute a known PCP tool on each archive in turn
+ replay - replay archives using the tool that created the folio
+ [run] tool [arg ...] - execute a known PCP tool on the selected archives
+ selections - list selected archives
+
+Selection:
+ If specified, both the "archives" and the "hosts" selection criteria
+ are applied as a conjunction.
+pmafm> pmafm> pmafm>
diff --git a/qa/228 b/qa/228
new file mode 100755
index 0000000..7968d09
--- /dev/null
+++ b/qa/228
@@ -0,0 +1,71 @@
+#! /bin/sh
+# PCP QA Test No. 228
+# pmie macro name handling in lexical scanner
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ _show_pmie_errors \
+ | sed -e '/warning cannot create stats file dir/d'
+}
+
+# real QA test starts here
+echo "special chars in macro name ..."
+cat >$tmp.conf <<'End-of-File'
+f_o_o_ = "sample";
+foo = "sample";
+'f!o!o' = "sample";
+
+x = $foo.long.ten;
+y = $f_o_o_.long.ten;
+z = $'f!o!o'.long.ten;
+End-of-File
+pmie -v -t 1 -T 1 <$tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+echo
+echo "some syntax errors ..."
+
+cat >$tmp.conf <<'End-of-File'
+// $foo-not-bar not defined
+x = $'foo-not-bar'.long.ten;
+End-of-File
+pmie -v -t 1 -T 1 <$tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+cat >$tmp.conf <<'End-of-File'
+// $foo not defined
+x = $foo
+End-of-File
+pmie -v -t 1 -T 1 <$tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+cat >$tmp.conf <<'End-of-File'
+// e-o-f before end of macro name
+x = $'foo-not-bar
+End-of-File
+pmie -v -t 1 -T 1 <$tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+cat >$tmp.conf <<'End-of-File'
+// macro name way too long
+x = $'foo.long.ten.this.is.some.long.and.boring.text.to.make.the.macro.name.exceed.the.250-odd.char.limit.this.is.some.long.and.boring.text.to.make.the.macro.name.exceed.the.250-odd.char.limit.this.is.some.long.and.boring.text.to.make.the.macro.name.exceed.the.250-odd.char.limit';
+End-of-File
+pmie -v -t 1 -T 1 <$tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+# all done
+status=0
+exit
diff --git a/qa/228.out b/qa/228.out
new file mode 100644
index 0000000..ccb72b0
--- /dev/null
+++ b/qa/228.out
@@ -0,0 +1,19 @@
+QA output created by 228
+special chars in macro name ...
+x: 10
+y: 10
+z: 10
+x: 10
+y: 10
+z: 10
+pmie: note - evaluator exiting
+
+some syntax errors ...
+undefined macro name $foo-not-bar
+pmie: syntax error - near line 2 of standard input
+undefined macro name $foo
+pmie: syntax error - at end of file
+unexpected end of file in macro name: $foo-not-bar
+pmie: syntax error - at end of file
+macro name too long: $foo.long.ten.this.is...
+pmie: syntax error - near line 2 of standard input
diff --git a/qa/229 b/qa/229
new file mode 100755
index 0000000..8922e16
--- /dev/null
+++ b/qa/229
@@ -0,0 +1,29 @@
+#! /bin/sh
+# PCP QA Test No. 229
+# pmie dumps core on this
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat >$tmp.conf <<'End-of-File'
+null = "";
+
+x = $'null'sample.bin;
+End-of-File
+pmie -v -t 1 -T 1 <$tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | sed -e 's/ */ /g' | _show_pmie_errors
+
+# all done
+status=0
+exit
diff --git a/qa/229.out b/qa/229.out
new file mode 100644
index 0000000..65e9189
--- /dev/null
+++ b/qa/229.out
@@ -0,0 +1,4 @@
+QA output created by 229
+x: 100 200 300 400 500 600 700 800 900
+x: 100 200 300 400 500 600 700 800 900
+pmie: note - evaluator exiting
diff --git a/qa/230 b/qa/230
new file mode 100755
index 0000000..3ae82ea
--- /dev/null
+++ b/qa/230
@@ -0,0 +1,278 @@
+#!/bin/sh
+# PCP QA Test No. 230
+#
+# Check timeouts for pmlc's calls to __pmGetPDU
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1
+$sudo rm -rf $tmp.*
+rm -f $seq.full
+trap "_cleanup" 0 1 2 3 15
+
+_cleanup()
+{
+ if [ -f $PCP_TMP_DIR/pmlogger/primary.qa.$seq ]
+ then
+ $sudo cp $PCP_TMP_DIR/pmlogger/primary.qa.$seq $PCP_TMP_DIR/pmlogger/primary
+ $sudo rm -f $PCP_TMP_DIR/pmlogger/primary.qa.$seq
+ fi
+ _restore_primary_logger
+ rm -f $tmp.*
+ exit $status
+}
+
+_check()
+{
+ echo "_check $1" >>$seq.full
+ sleep 2
+ pidlist=`_get_pids_by_name "pmlc"`
+ echo "pidlist=$pidlist" >>$seq.full
+ for pid in $pidlist
+ do
+ if [ "$pid" = "$1" ]
+ then
+ echo "pmlc still running ... killing it off"
+ kill -TERM $pid
+ return
+ fi
+ done
+ echo "pmlc has exited"
+}
+
+_filter()
+{
+ echo >>$seq.full
+ echo "=== $tmp.out ===">>$seq.full
+ cat $tmp.out >>$seq.full
+ sed <$tmp.out \
+ -e 's/^\[.*]/[DATE]/' \
+ -e 's/pmlc([0-9][0-9]*)/pmlc(PID)/' \
+ -e "s/`pmhostname`/MYHOST/g" \
+ -e "s/`hostname`/MYHOST/g" \
+ -e "s/localhost\.localdomain/MYHOST/g" \
+ -e "s/localhost/MYHOST/g" \
+ -e "s/local:/MYHOST/g" \
+ -e '/^PMCD host/s/\( *\).*/\1HOST/' \
+ -e '/^log started/s/\( *\).*/\1DATE/' \
+ -e '/^last log entry/s/\( *\).*/\1DATE/' \
+ -e '/^current time/s/\( *\).*/\1DATE/' \
+ -e '/^log volume/s/\( *\).*/\1NUMBER/' \
+ -e '/^log size/s/\( *\).*/\1NUMBER/' \
+
+}
+
+if [ ! -f $PCP_TMP_DIR/pmlogger/primary ]
+then
+ echo "Arrgh ... cannot find $PCP_TMP_DIR/pmlogger/primary"
+ status=1
+ exit
+ #NOTREACHED#
+fi
+
+# see comment in src/drain-server.c for choice of port #
+#
+port=1214
+
+# real QA test starts here
+_change_config pmcd on
+_change_config pmlogger on
+_writable_primary_logger
+$sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+_wait_for_pmlogger
+
+$sudo sed -e "1s/.*/$port/" $PCP_TMP_DIR/pmlogger/primary >$tmp.primary
+$sudo cp $PCP_TMP_DIR/pmlogger/primary $PCP_TMP_DIR/pmlogger/primary.qa.$seq
+$sudo cp $tmp.primary $PCP_TMP_DIR/pmlogger/primary
+
+echo "=== Hang on Connection Cases ===" | tee -a $seq.full
+
+echo | tee -a $seq.full
+echo "Expect hang ..." | tee -a $seq.full
+src/drain-server -h &
+draino=$!
+sleep 2
+pmlc -e -h localhost -P >$tmp.out 2>&1 &
+sleep 2
+_check $!
+_filter
+pidlist=`_get_pids_by_name "drain-server"`
+for pid in $pidlist
+do
+ [ "$draino" = "$pid" ] && kill -TERM $draino
+done
+sleep 2
+
+echo | tee -a $seq.full
+echo "Expect hang and warning ..." | tee -a $seq.full
+src/drain-server -h &
+draino=$!
+sleep 2
+export PMLOGGER_REQUEST_TIMEOUT=1.5
+pmlc -e -h localhost -P >$tmp.out 2>&1 &
+sleep 2
+_check $!
+_filter
+pidlist=`_get_pids_by_name "drain-server"`
+for pid in $pidlist
+do
+ [ "$draino" = "$pid" ] && kill -TERM $draino
+done
+sleep 2
+
+echo | tee -a $seq.full
+echo "Expect no hang and unable to connect to pmlogger ..." | tee -a $seq.full
+src/drain-server &
+draino=$!
+sleep 2
+export PMLOGGER_REQUEST_TIMEOUT=1
+pmlc -e -h localhost -P >$tmp.out 2>&1 </dev/null
+_check $!
+_filter
+pidlist=`_get_pids_by_name "drain-server"`
+for pid in $pidlist
+do
+ [ "$draino" = "$pid" ] && kill -TERM $draino
+done
+
+echo | tee -a $seq.full
+echo "=== Timeout on pmlc commands cases ===" | tee -a $seq.full
+
+# put port info back to original state
+#
+$sudo cp $PCP_TMP_DIR/pmlogger/primary.qa.$seq $PCP_TMP_DIR/pmlogger/primary
+$sudo rm -f $PCP_TMP_DIR/pmlogger/primary.qa.$seq
+
+echo | tee -a $seq.full
+echo "Check QA code cleared when pmlc exits ..." | tee -a $seq.full
+unset PMLOGGER_REQUEST_TIMEOUT
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+qa 1
+quit
+End-of-File
+_check $!
+_filter
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+status
+quit
+End-of-File
+_check $!
+_filter
+
+echo | tee -a $seq.full
+echo "Expect no hang and log command to timeout connecting to pmcd ..." | tee -a $seq.full
+export PMLOGGER_REQUEST_TIMEOUT=1
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+qa 1
+log mandatory on once sample.long.million
+quit
+End-of-File
+_check $!
+_filter
+sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+echo | tee -a $seq.full
+echo "Expect no hang and 2nd log command to timeout changing logging status ..." | tee -a $seq.full
+export PMLOGGER_REQUEST_TIMEOUT=1
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+log mandatory on once sample.long.million
+qa 1
+log mandatory on once sample.long.million
+quit
+End-of-File
+sleep 1 # pmlogger needs a little longer for this one
+_check $!
+_filter
+sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+echo | tee -a $seq.full
+echo "Expect no hang and status command to timeout ..." | tee -a $seq.full
+export PMLOGGER_REQUEST_TIMEOUT=1
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+qa 1
+status
+quit
+End-of-File
+_check $!
+_filter
+sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+echo | tee -a $seq.full
+echo "Expect hang and flush command to timeout ..." | tee -a $seq.full
+export PMLOGGER_REQUEST_TIMEOUT=1
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+qa 1
+flush
+quit
+End-of-File
+_check $!
+_filter
+sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+echo | tee -a $seq.full
+echo "Expect hang and new volume command to timeout ..." | tee -a $seq.full
+export PMLOGGER_REQUEST_TIMEOUT=1
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1 &
+qa 1
+new volume
+quit
+End-of-File
+sleep 2
+_check $!
+_filter
+sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+# skip show loggers command ... this one communicates with pmcd not
+# pmlogger
+#
+#echo | tee -a $seq.full
+#echo "Expect hang and show loggers to timeout ..." | tee -a $seq.full
+#export PMLOGGER_REQUEST_TIMEOUT=1
+#cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1 &
+#qa 1
+#show loggers
+#quit
+#End-of-File
+#sleep 2
+#_check $!
+#_filter
+#sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+echo | tee -a $seq.full
+echo "Expect no hang and query command to timeout connecting to pmcd ..." | tee -a $seq.full
+export PMLOGGER_REQUEST_TIMEOUT=1
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+qa 1
+query sample.long.million
+quit
+End-of-File
+_check $!
+_filter
+sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+echo | tee -a $seq.full
+echo "Expect no hang and 2nd query command to timeout fetching logging status ..." | tee -a $seq.full
+export PMLOGGER_REQUEST_TIMEOUT=1
+cat <<'End-of-File' | pmlc -e -P >$tmp.out 2>&1
+query sample.long.million
+qa 1
+query sample.long.million
+quit
+End-of-File
+sleep 1 # pmlogger needs a little longer for this one
+_check $!
+_filter
+sleep 3 # let pmlogger get out of sleep() so can use pmlc again
+
+# success, all done
+status=0
+exit
diff --git a/qa/230.out b/qa/230.out
new file mode 100644
index 0000000..d034358
--- /dev/null
+++ b/qa/230.out
@@ -0,0 +1,112 @@
+QA output created by 230
+=== Hang on Connection Cases ===
+
+Expect hang ...
+pmlc still running ... killing it off
+
+Expect hang and warning ...
+pmlc still running ... killing it off
+[DATE] pmlc(PID) Warning: ignored bad PMLOGGER_REQUEST_TIMEOUT = '1.5'
+
+Expect no hang and unable to connect to pmlogger ...
+pmlc has exited
+Unable to connect to primary pmlogger at MYHOST: Timeout, closed connection to the pmlogger instance
+
+=== Timeout on pmlc commands cases ===
+
+Check QA code cleared when pmlc exits ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+qa 1
+QA Test Case #1 activated
+quit
+Goodbye
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+status
+pmlogger [primary] on host MYHOST is logging metrics from host MYHOST
+PMCD host HOST
+log started DATE
+last log entry DATE
+current time DATE
+log volume NUMBER
+log size NUMBER
+quit
+Goodbye
+
+Expect no hang and log command to timeout connecting to pmcd ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+qa 1
+QA Test Case #1 activated
+log mandatory on once Error receiving response from pmlogger: Timeout, closed connection to the pmlogger instance
+Error [<stdin>, line 2]
+sample.long.million
+quit
+Goodbye
+
+Expect no hang and 2nd log command to timeout changing logging status ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+log mandatory on once sample.long.million
+qa 1
+QA Test Case #1 activated
+log mandatory on once sample.long.million
+Error receiving response from pmlogger: Timeout, closed connection to the pmlogger instance
+quit
+Goodbye
+
+Expect no hang and status command to timeout ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+qa 1
+QA Test Case #1 activated
+status
+Error receiving response from pmlogger: Timeout, closed connection to the pmlogger instance
+quit
+Goodbye
+
+Expect hang and flush command to timeout ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+qa 1
+QA Test Case #1 activated
+flush
+Error receiving response from pmlogger: Timeout, closed connection to the pmlogger instance
+quit
+Goodbye
+
+Expect hang and new volume command to timeout ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+qa 1
+QA Test Case #1 activated
+new volume
+Error receiving response from pmlogger: Timeout, closed connection to the pmlogger instance
+quit
+Goodbye
+
+Expect no hang and query command to timeout connecting to pmcd ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+qa 1
+QA Test Case #1 activated
+query Error receiving response from pmlogger: Timeout, closed connection to the pmlogger instance
+Error [<stdin>, line 2]
+sample.long.million
+quit
+Goodbye
+
+Expect no hang and 2nd query command to timeout fetching logging status ...
+pmlc has exited
+Connected to primary pmlogger at MYHOST
+query sample.long.million
+sample.long.million
+ mand on once
+
+qa 1
+QA Test Case #1 activated
+query sample.long.million
+Error receiving response from pmlogger: Timeout, closed connection to the pmlogger instance
+quit
+Goodbye
diff --git a/qa/231 b/qa/231
new file mode 100755
index 0000000..75ee6a5
--- /dev/null
+++ b/qa/231
@@ -0,0 +1,33 @@
+#! /bin/sh
+# PCP QA Test No. 231
+# number w/out leading digit in pmie ... bug #421411
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat >$tmp.conf <<'End-of-File'
+delta = 1;
+(1000 * 0.1 + hinv.ncpu - hinv.ncpu) != 100 -> print "%v != 100?";
+(1000 * .1 + hinv.ncpu - hinv.ncpu) != 100 -> print "%v != 100?";
+(1000 * 0.123 + hinv.ncpu - hinv.ncpu) != 123 -> print "%v != 123?";
+(1000 * .123 + hinv.ncpu - hinv.ncpu) != 123 -> print "%v != 123?";
+(0.4567e3 + hinv.ncpu - hinv.ncpu) != 456.7 -> print "%v != 456.7?";
+(.4567e3 + hinv.ncpu - hinv.ncpu) != 456.7 -> print "%v != 456.7?";
+End-of-File
+
+pmie -T 1sec <$tmp.conf >$tmp.out 2>$tmp.err
+status=$?
+cat $tmp.out $tmp.err | _show_pmie_errors
+
+exit
diff --git a/qa/231.out b/qa/231.out
new file mode 100644
index 0000000..d541446
--- /dev/null
+++ b/qa/231.out
@@ -0,0 +1,2 @@
+QA output created by 231
+pmie: note - evaluator exiting
diff --git a/qa/232 b/qa/232
new file mode 100755
index 0000000..3ae8aec
--- /dev/null
+++ b/qa/232
@@ -0,0 +1,103 @@
+#! /bin/sh
+# PCP QA Test No. 232
+# exercise instance API functions for PM_CONTEXT_LOCAL
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+_filter_dodgey_nfs_indom()
+{
+ sed \
+ -e '/number of instances .* (0) != that for pmGetInDom (18)/d' \
+ -e '/number of instances .* (0) != that for pmGetInDom (22)/d'
+}
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+PMDA_LOCAL_SAMPLE=yes
+export PMDA_LOCAL_SAMPLE
+
+for metric in \
+ kernel.percpu.cpu.idle \
+ disk.dev.read \
+ sampledso.colour \
+ kernel.all.load \
+ network.interface.in.bytes \
+ sampledso.bucket \
+ filesys.used \
+ swapdev.length \
+ nfs.client.reqs \
+ nfs.server.reqs \
+ nfs3.client.reqs \
+ nfs3.server.reqs \
+ sampledso.hordes.one
+do
+ if [ $PCP_PLATFORM = darwin ]
+ then
+ # some of the metrics just aren't there on Mac OS X
+ case $metric
+ in
+ swapdev.length|nfs.client.reqs|nfs.server.reqs)
+ continue
+ ;;
+ esac
+ elif [ $PCP_PLATFORM = solaris ]
+ then
+ # some of the metrics just aren't there on Solaris, or have
+ # equivalents with different names
+ case $metric
+ in
+ swapdev.length|nfs.*|nfs3.*)
+ continue
+ ;;
+ filesys.used)
+ metric=zfs.used.total
+ ;;
+ esac
+ elif [ $PCP_PLATFORM = freebsd ]
+ then
+ # some of the metrics just aren't there on FreeBSD
+ case $metric
+ in
+ filesys.used|swapdev.length|nfs.*|nfs3.*)
+ continue
+ ;;
+ esac
+ fi
+ if [ $PCP_PLATFORM = solaris -o $PCP_PLATFORM = freebsd ]
+ then
+ # need to be root to open /dev/kmem
+ $sudo $here/src/torture_indom $metric >$tmp.out 2>&1
+ status=$?
+ else
+ $here/src/torture_indom $metric >$tmp.out 2>&1
+ status=$?
+ fi
+ sed <$tmp.out \
+ -e '/using .* kmem interface/d' \
+ | _filter_pmcd_log \
+ | _filter_dodgey_nfs_indom
+ if [ $status != 0 ]
+ then
+ case "$metric"
+ in
+ nfs*reqs)
+ ;;
+ *)
+ echo torture_indom failed for $metric
+ ;;
+ esac
+ fi
+done
+
+# all done
+exit
diff --git a/qa/232.out b/qa/232.out
new file mode 100644
index 0000000..1cd79b3
--- /dev/null
+++ b/qa/232.out
@@ -0,0 +1 @@
+QA output created by 232
diff --git a/qa/233 b/qa/233
new file mode 100755
index 0000000..ca9d40e
--- /dev/null
+++ b/qa/233
@@ -0,0 +1,64 @@
+#! /bin/sh
+# PCP QA Test No. 233
+#
+# How fast can you fetch sampledso.sysinfo?
+# Using a local context (direct to the DSO) should be significantly
+# faster than going through PMCD. On Linux and IRIX the sampldso.sysinfo
+# metric ends up with a call to sysinfo which on Linux is so slow that
+# it stuffs up the timings this test is making, so.. we don't run it on
+# Linux.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+. ./localconfig
+if [ $PCP_PLATFORM = linux ]; then
+ echo "fetchrate tests not run on linux: sysinfo is too slow" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ status=0
+ exit
+fi
+
+_filter()
+{
+ _filter_pmcd_log | $PCP_AWK_PROG '
+ /^fetchrate.* fetches\/second$/ {
+ if ($4 >= '$1') {
+ print "FETCHRATE:",$2,$3,">='$1'",$5;
+ next
+ }
+ else {
+ print; print "Not >='$1'!"
+ }
+ }
+ { print }'
+}
+
+# real QA test starts here
+echo "without PMCD ..."
+if [ -x src/fetchrate_lite ]
+then
+ PMDA_LOCAL_SAMPLE=yes; export PMDA_LOCAL_SAMPLE
+ $sudo src/fetchrate_lite -L sampledso.sysinfo 2>&1 | _filter 6500
+else
+ $sudo src/fetchrate -L sampledso.sysinfo 2>&1 | _filter 6500
+fi
+e1=$?
+
+echo
+echo "with PMCD ..."
+src/fetchrate sampledso.sysinfo 2>&1 | _filter 480
+e2=$?
+
+status=`expr $e1 + $e2`
+exit
diff --git a/qa/233.out b/qa/233.out
new file mode 100644
index 0000000..6fd46c1
--- /dev/null
+++ b/qa/233.out
@@ -0,0 +1,6 @@
+QA output created by 233
+without PMCD ...
+FETCHRATE: metric sampledso.sysinfo >=6500 fetches/second
+
+with PMCD ...
+FETCHRATE: metric sampledso.sysinfo >=480 fetches/second
diff --git a/qa/234 b/qa/234
new file mode 100755
index 0000000..e66072b
--- /dev/null
+++ b/qa/234
@@ -0,0 +1,328 @@
+#! /bin/sh
+# PCP QA Test No. 234
+# pmlogsummary exerciser
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+stocave=0
+noncountstocave=0
+timeave=0
+noncounttimeave=0
+minimum=5000
+maximum=0
+limit=0
+overflow=0
+debug=false
+
+_xtract()
+{
+ # pmdumplog -D1 produces something like ...
+ #
+ # pmResult dump from 0x100051d0 timestamp: 882429086.522227 18:11:26.522 ...
+ # 29.0.64 (sample.rapid): numval: 1 valfmt: 0 vlist[]:
+ # value 1810065408
+ # ...
+ # 29.0.7 (sample.drift): numval: 1 valfmt: 0 vlist[]:
+ # value 101
+ # ...
+ # <empty line>
+ #
+ # the initial archive processing may cause the same pmResult to
+ # be reported twice, hence the sort at the end
+ #
+ # _xtract produces 3 columns: time time_t value
+ #
+ # Usage: _xtract metric
+ #
+ pmdumplog -D1 $tmp.merge $1 2>&1 \
+ | $PCP_AWK_PROG '
+$1 == "pmResult" { state=1; time=$7; stamp=$6; next }
+state == 1 && /\('"$1"'\)/ { state=2; next }
+state == 2 { state=0; print time,stamp,$2; next }
+NF==0 { state=0; next }' \
+ | LC_COLLATE=POSIX _POSIX2_VERSION=0 sort -u +1n -2
+}
+
+_check()
+{
+ $debug && echo "+ check pmlogsummary=$1 qa=$2"
+ echo "$1 $2" \
+ | $PCP_AWK_PROG '
+ { if ($1 == 0 && $2 == 0)
+ err=0
+ else if ($1 == 0)
+ err=100 # infinity
+ else
+ err=($1-$2)/$1
+ if (-0.05 <= err && err <= 0.05)
+ print "Pass"
+ else
+ print "Fail: pmlogsummary=" $1 " qa=" $2
+ }'
+}
+
+########
+
+_check_counter_stocave()
+{
+ from_summary=`pmlogsummary -x $tmp.merge $1 \
+ | $PCP_AWK_PROG '$1 == "'$1'" { print $2 }'`
+
+ echo "_check_counter_stocave" >>$seq.full
+ from_qa=`_xtract $1 | tee -a $seq.full | $PCP_AWK_PROG '
+ {
+ if (count > 0) {
+ avg += ($3 - prevval)/($2 - prevtime)
+ }
+ count++
+ prevval = $3
+ prevtime = $2
+ next
+ }
+END { print avg/(count-1) }'`
+
+ _check $from_summary $from_qa
+}
+
+########
+
+_check_noncounter_stocave()
+{
+ from_summary=`pmlogsummary -x $tmp.merge $1 \
+ | $PCP_AWK_PROG '$1 == "'$1'" { print $2 }'`
+
+ from_qa=`pmdumplog -m $tmp.merge $1 | $PCP_AWK_PROG '
+/\('"$1"'\)/ { sum += $5; count++; next }
+END { print sum/count }'`
+
+ _check $from_summary $from_qa
+}
+
+########
+
+_check_counter_timeave()
+{
+ from_summary=`pmlogsummary $tmp.merge $1 \
+ | $PCP_AWK_PROG '$1 == "'$1'" { print $2 }'`
+
+ from_qa=`_xtract $1 | $PCP_AWK_PROG '
+ {
+ if (count > 0) avg += ($3 - prevval)
+ if (count == 0) firsttime = $2
+ count++
+ prevval = $3
+ lasttime = $2
+ next
+ }
+END { print avg/(lasttime-firsttime) }'`
+
+ _check $from_summary $from_qa
+}
+
+########
+
+_check_noncounter_timeave()
+{
+ from_summary=`pmlogsummary $tmp.merge $1 \
+ | $PCP_AWK_PROG '$1 == "'$1'" { print $2 }'`
+
+ from_qa=`_xtract $1 | $PCP_AWK_PROG '
+ {
+ if (count > 0) avg += (prevval * ($2 - prevtime))
+ if (count == 0) firsttime = $2
+ count++
+ prevval = $3
+ prevtime = $2
+ next
+ }
+END { print avg/(prevtime-firsttime) }'`
+
+ _check $from_summary $from_qa
+}
+
+########
+
+_qa_minimum()
+{
+ pmdumplog -m $tmp.merge sample.drift | $PCP_AWK_PROG '
+/sample.drift/ { if (($5 < min) || (count < 1)) min = $5; count++; next }
+END { printf "%.3f",min }'
+}
+
+_qa_maximum()
+{
+ pmdumplog -m $tmp.merge sample.drift | $PCP_AWK_PROG '
+/sample.drift/ { if (($5 > max) || (count < 1)) max = $5; count++; next }
+END { printf "%.3f",max }'
+}
+
+_check_minmax()
+{
+ $PCP_AWK_PROG -v min=$minimum -v max=$maximum '
+/sample.drift/ {
+ if ($3 == min) print "Minimum test passed."
+ else printf "Minimum test failed (pmlogsummary:%.3f != qa:%.3f)\n",$3,min
+ if ($4 == max) print "Maximum test passed."
+ else printf "Maximum test failed (pmlogsummary:%.3f != qa:%.3f)\n",$4,max
+ }'
+}
+
+
+########
+
+# use stochastic average of counter
+#
+_check_overflow()
+{
+ from_summary=`pmlogsummary -x $tmp.merge $1 \
+ | $PCP_AWK_PROG '$1 == "'$1'" { print $2 }'`
+
+ from_qa=`_xtract $1 \
+ | $PCP_AWK_PROG '
+BEGIN { prevval = -1; print "scale=3"; printf "( 0" }
+ {
+ if (prevval != -1) {
+ if ($3 >= prevval) {
+ printf " + ((%f-%f)/(%f-%f))",$3,prevval,$2,prevtime
+ count++
+ }
+ }
+ prevval = $3
+ prevtime = $2
+ next
+ }
+END { printf ") / %d\n",count }' \
+ | bc`
+
+ _check $from_summary $from_qa
+}
+
+# use stochastic average of counter
+#
+_check_old_overflow()
+{
+ PCP_COUNTER_WRAP=yes
+ export PCP_COUNTER_WRAP
+
+ from_summary=`pmlogsummary -x $tmp.merge $1 \
+ | $PCP_AWK_PROG '$1 == "'$1'" { print $2 }'`
+
+ from_qa=`_xtract $1 \
+ | $PCP_AWK_PROG '
+BEGIN { prevval = -1; print "scale=3"; printf "( 0" }
+ {
+ if (prevval != -1) {
+ current = $3
+ #
+ # this wrap adjustment only works for 32-bit counters
+ #
+ if (current < prevval) current += (4294967295+1)
+ printf " + ((%f-%f)/(%f-%f))",current,prevval,$2,prevtime
+ count++
+ }
+ prevval = $3
+ prevtime = $2
+ next
+ }
+END { printf ") / %d\n",count }' \
+ | bc`
+
+ _check $from_summary $from_qa
+}
+
+########
+
+# real QA test starts here
+
+cat >$tmp.a.config <<End-of-File
+log mandatory on 30 msec {
+ sample.control
+ sample.rapid
+ sample.xmit_pdu
+ sample.drift
+}
+End-of-File
+
+cat >$tmp.b.config <<End-of-File
+log mandatory on 90 msec {
+ sample.control
+ sample.rapid
+ sample.xmit_pdu
+ sample.drift
+}
+End-of-File
+
+echo "Creating log files ..."
+$sudo rm -f $tmp.a.0 $tmp.a.meta $tmp.a.index
+$sudo rm -f $tmp.b.0 $tmp.b.meta $tmp.b.index
+pmlogger -c $tmp.a.config -l $tmp.a.log -s 3 $tmp.a >$tmp.a.err 2>&1
+pmlogger -c $tmp.b.config -l $tmp.b.log -s 5 $tmp.b >$tmp.b.err 2>&1
+
+echo "=== tmp.a ===" >>$seq.full
+pmdumplog $tmp.a >>$seq.full
+echo "=== tmp.b ===" >>$seq.full
+pmdumplog $tmp.b >>$seq.full
+
+wait
+echo "Filtering ..."
+cat $tmp.a.err $tmp.a.log | _filter_pmlogger_log
+cat $tmp.b.err $tmp.b.log | _filter_pmlogger_log
+
+echo "Merging ..."
+rm -f $tmp.merge.*
+pmlogextract $tmp.a $tmp.b $tmp.merge
+
+echo "=== tmp.merge ===" >>$seq.full
+pmdumplog $tmp.merge >>$seq.full
+
+# ensure no mark records in archive...
+#
+mv $tmp.merge.0 $tmp.markedmerge.0
+src/stripmark $tmp.markedmerge.0 $tmp.merge.0 2>&1 \
+| sed -e 's/byte [0-9][0-9]*/byte N/'
+
+echo
+echo "Checking non-counter stochastic average (sample.drift) ..."
+_check_noncounter_stocave sample.drift
+
+echo
+echo "Checking non-counter time average (sample.drift) ..."
+_check_noncounter_timeave sample.drift
+
+echo
+echo "Checking counter stochastic average (sample.xmit_pdu) ..."
+_check_counter_stocave sample.xmit_pdu
+
+echo
+echo "Checking counter time averaging (sample.xmit_pdu) ..."
+_check_counter_timeave sample.xmit_pdu
+
+echo
+echo "Checking minimum & maximum ..."
+minimum=`_qa_minimum`
+maximum=`_qa_maximum`
+pmlogsummary -mM $tmp.merge | _check_minmax
+
+echo
+echo "Checking overflow (sample.rapid) ..."
+_check_overflow sample.rapid
+
+echo
+echo "Checking PCP 1.x style overflow (sample.rapid) ..."
+_check_old_overflow sample.rapid
+
+# all done
+exit
diff --git a/qa/234.out b/qa/234.out
new file mode 100644
index 0000000..27ad433
--- /dev/null
+++ b/qa/234.out
@@ -0,0 +1,43 @@
+QA output created by 234
+Creating log files ...
+Filtering ...
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Merging ...
+Skip mark @ byte N into input
+
+Checking non-counter stochastic average (sample.drift) ...
+Pass
+
+Checking non-counter time average (sample.drift) ...
+Pass
+
+Checking counter stochastic average (sample.xmit_pdu) ...
+Pass
+
+Checking counter time averaging (sample.xmit_pdu) ...
+Pass
+
+Checking minimum & maximum ...
+Minimum test passed.
+Maximum test passed.
+
+Checking overflow (sample.rapid) ...
+Pass
+
+Checking PCP 1.x style overflow (sample.rapid) ...
+Pass
diff --git a/qa/235 b/qa/235
new file mode 100755
index 0000000..bf4dfbc
--- /dev/null
+++ b/qa/235
@@ -0,0 +1,127 @@
+#! /bin/sh
+# PCP QA Test No. 235
+# exercise pmnsmerge error handling, and null operation
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "+++ Errors +++"
+mkdir $tmp.dir
+cd $tmp.dir
+echo 'root {
+}' >null
+echo
+echo "=== no args ==="
+pmnsmerge
+echo
+echo "=== only 1 arg ==="
+pmnsmerge out-pmns
+echo
+echo "=== no such input file ==="
+pmnsmerge no-such-input out-pmns
+touch out-pmns
+echo
+echo "=== output file exists ==="
+pmnsmerge null out-pmns
+rm -f out-pmns
+chmod u-w .
+echo
+echo "=== cannot create output file ==="
+pmnsmerge null out-pmns
+chmod u+w .
+
+echo 'root {
+bogus - this is not correct
+}' >in
+echo
+echo "=== syntax error in input ==="
+pmnsmerge in out-pmns
+
+rm -f out-pmns
+echo 'root {
+ me 1:2:3
+}' >one
+echo 'root {
+ same_pmid 1:2:3
+}' >two
+echo
+echo "=== duplicate PMID in same group =="
+pmnsmerge one two out-pmns
+
+rm -f out-pmns
+echo 'root {
+ me 1:2:3
+}' >one
+echo 'root {
+ sub
+}
+sub {
+ same_pmid 1:2:3
+}' >two
+echo
+echo "=== duplicate PMID in different groups =="
+pmnsmerge one two out-pmns
+
+echo
+echo "+++ Warnings +++"
+rm -f out-pmns
+echo 'root {
+ me 1:2:3
+}' >one
+echo 'root {
+ me 4:5:6
+}' >two
+echo
+echo "=== PMID changed =="
+pmnsmerge one two out-pmns
+
+echo
+echo "+++ Null operations +++"
+
+rm -f out-pmns
+pminfo -n null
+echo
+echo "=== single null input PMNS ==="
+pmnsmerge -v null out-pmns
+cat out-pmns
+pminfo -n out-pmns
+
+rm -f out-pmns
+cp null one
+cp null two
+echo
+echo "=== multiple null input PMNSs ==="
+pmnsmerge null one two out-pmns
+cat out-pmns
+pminfo -n out-pmns
+
+rm -f out-pmns
+echo '#define _DATESTAMP 19961101
+root {
+}' >three
+echo '#define _DATESTAMP 19961102
+root {
+}' >four
+echo '#define _DATESTAMP 19961205
+root {
+}' >five
+echo
+echo "=== 3 have _DATESTAMPS, 3 do not ==="
+pmnsmerge -vv null one five four two three out-pmns
+cat out-pmns
+pminfo -n out-pmns
+
+# all done
+exit
diff --git a/qa/235.out b/qa/235.out
new file mode 100644
index 0000000..97b19f4
--- /dev/null
+++ b/qa/235.out
@@ -0,0 +1,85 @@
+QA output created by 235
++++ Errors +++
+
+=== no args ===
+Usage: pmnsmerge [options] infile [...] outfile
+
+Options:
+ -a process files in order, ignoring embedded _DATESTAMP control lines
+ -d, --duplicates duplicate PMIDs are allowed
+ -f, --force force overwriting of the output file if it exists
+ -v, --verbose verbose, echo input file names as processed
+ -?, --help show this usage message and exit
+
+=== only 1 arg ===
+Usage: pmnsmerge [options] infile [...] outfile
+
+Options:
+ -a process files in order, ignoring embedded _DATESTAMP control lines
+ -d, --duplicates duplicate PMIDs are allowed
+ -f, --force force overwriting of the output file if it exists
+ -v, --verbose verbose, echo input file names as processed
+ -?, --help show this usage message and exit
+
+=== no such input file ===
+pmnsmerge: Error: cannot open input PMNS file "no-such-input"
+
+=== output file exists ===
+pmnsmerge: Error: output PMNS file "out-pmns" already exists!
+You must either remove it first, or use -f
+
+=== cannot create output file ===
+pmnsmerge: Error: cannot create output PMNS file "out-pmns": Permission denied
+
+=== syntax error in input ===
+[in:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ bogus - this is not correct
+ ^
+pmnsmerge: Error: pmLoadNameSpace(in): Problems parsing PMNS definitions
+
+=== duplicate PMID in same group ==
+Error Parsing ASCII PMNS: Duplicate metric id (1.2.3) in name space for metrics "same_pmid" and "me"
+
+pmnsmerge: Error: pmLoadNameSpace(out-pmns): Problems parsing PMNS definitions
+
+=== duplicate PMID in different groups ==
+Error Parsing ASCII PMNS: Duplicate metric id (1.2.3) in name space for metrics "sub.same_pmid" and "me"
+
+pmnsmerge: Error: pmLoadNameSpace(out-pmns): Problems parsing PMNS definitions
+
++++ Warnings +++
+
+=== PMID changed ==
+pmnsmerge: Warning: performance metric "me" has multiple PMIDs.
+... using PMID 1.2.3 and ignoring PMID 4.5.6
+
++++ Null operations +++
+PMNS appears to be empty!
+
+=== single null input PMNS ===
+null:
+root {
+}
+PMNS appears to be empty!
+
+=== multiple null input PMNSs ===
+root {
+}
+PMNS appears to be empty!
+
+=== 3 have _DATESTAMPS, 3 do not ===
+arg[0] null _DATESTAMP=(null)
+arg[1] one _DATESTAMP=(null)
+arg[2] two _DATESTAMP=(null)
+arg[3] three _DATESTAMP=19961101
+arg[4] four _DATESTAMP=19961102
+arg[5] five _DATESTAMP=19961205
+null:
+one:
+two:
+three:
+four:
+five:
+root {
+}
+PMNS appears to be empty!
diff --git a/qa/236 b/qa/236
new file mode 100755
index 0000000..2d2cb4c
--- /dev/null
+++ b/qa/236
@@ -0,0 +1,127 @@
+#! /bin/sh
+# PCP QA Test No. 236
+# exercise pmnsadd and pmnsdel
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Error handling ..."
+( cd $PCP_VAR_DIR/pmns; pmnsadd )
+pmnsadd -n $PCP_VAR_DIR/pmns/root
+( cd $PCP_VAR_DIR/pmns; pmnsdel )
+pmnsdel -n $PCP_VAR_DIR/pmns/root
+
+mkdir $tmp.dir
+cd $tmp.dir
+echo >null 'root {
+}'
+echo >n.m1 'one {
+ m1 1:1:1
+}'
+
+echo
+echo "Simple adds ... expect one.m1 in each case"
+for root in root ./root `pwd`/root ../`basename $tmp.dir`/root
+do
+ cp null $root
+ pmnsadd -n $root n.m1
+ pminfo -m -n root
+done
+
+echo >one.root 'root {
+ one
+}
+#include "one"'
+echo >one 'one {
+ m1 1:1:1
+}'
+
+echo
+echo "Simple deletes ... expect empty PMNS in each case"
+for root in root ./root `pwd`/root ../`basename $tmp.dir`/root
+do
+ cp one.root $root
+ pmnsdel -n $root one
+ pminfo -m -n root
+ cat root
+done
+
+echo
+echo "Expect one.m1 and two.m2 ..."
+echo >root 'root {
+ one
+}
+one {
+ m1 1:1:1
+}'
+echo >n.m2 'two {
+ m2 2:2:2
+}'
+pmnsadd -n root n.m2
+pminfo -m -n root
+
+echo
+echo "... add two.three.* ..."
+echo >n.m3 'two.three {
+ m3 3:3:3
+ m4 4:4:4
+}'
+pmnsadd -n root n.m3
+pminfo -m -n root
+
+echo
+echo "... add five.* and five.six.* ..."
+echo >n.m10 'five {
+ m10 10:10:10
+ six
+}
+five.six {
+ m11 11:11:11
+}'
+pmnsadd -n root n.m10
+pminfo -m -n root
+
+echo
+echo "... add two.three.four.* ..."
+echo >n.m5 'two.three.four {
+ m5 5:5:5
+ m6 6:6:6
+ m7 7:7:7
+}'
+pmnsadd -n root n.m5
+pminfo -m -n root
+
+echo
+echo "... delete two.three.four.* ..."
+pmnsdel -n root two.three.four
+pminfo -m -n root
+
+echo
+echo "... delete five.* ..."
+pmnsdel -n root five
+pminfo -m -n root
+
+echo
+echo "... delete two.three.* ..."
+pmnsdel -n root two.three
+pminfo -m -n root
+
+echo
+echo "... delete two.* ..."
+pmnsdel -n root two
+pminfo -m -n root
+
+# all done
+exit
diff --git a/qa/236.out b/qa/236.out
new file mode 100644
index 0000000..764333c
--- /dev/null
+++ b/qa/236.out
@@ -0,0 +1,88 @@
+QA output created by 236
+Error handling ...
+Usage: pmnsadd [-d] [-n namespace] file
+Usage: pmnsadd [-d] [-n namespace] file
+Usage: pmnsdel [options] metricpath [...]
+
+Options:
+ -d, --duplicates duplicate PMIDs are allowed
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -?, --help show this usage message and exit
+Usage: pmnsdel [options] metricpath [...]
+
+Options:
+ -d, --duplicates duplicate PMIDs are allowed
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -?, --help show this usage message and exit
+
+Simple adds ... expect one.m1 in each case
+one.m1 PMID: 1.1.1
+one.m1 PMID: 1.1.1
+one.m1 PMID: 1.1.1
+one.m1 PMID: 1.1.1
+
+Simple deletes ... expect empty PMNS in each case
+PMNS appears to be empty!
+root {
+}
+PMNS appears to be empty!
+root {
+}
+PMNS appears to be empty!
+root {
+}
+PMNS appears to be empty!
+root {
+}
+
+Expect one.m1 and two.m2 ...
+one.m1 PMID: 1.1.1
+two.m2 PMID: 2.2.2
+
+... add two.three.* ...
+one.m1 PMID: 1.1.1
+two.m2 PMID: 2.2.2
+two.three.m3 PMID: 3.3.3
+two.three.m4 PMID: 4.4.4
+
+... add five.* and five.six.* ...
+one.m1 PMID: 1.1.1
+two.m2 PMID: 2.2.2
+two.three.m3 PMID: 3.3.3
+two.three.m4 PMID: 4.4.4
+five.m10 PMID: 10.10.10
+five.six.m11 PMID: 11.11.11
+
+... add two.three.four.* ...
+one.m1 PMID: 1.1.1
+two.m2 PMID: 2.2.2
+two.three.m3 PMID: 3.3.3
+two.three.m4 PMID: 4.4.4
+two.three.four.m5 PMID: 5.5.5
+two.three.four.m6 PMID: 6.6.6
+two.three.four.m7 PMID: 7.7.7
+five.m10 PMID: 10.10.10
+five.six.m11 PMID: 11.11.11
+
+... delete two.three.four.* ...
+one.m1 PMID: 1.1.1
+two.m2 PMID: 2.2.2
+two.three.m3 PMID: 3.3.3
+two.three.m4 PMID: 4.4.4
+five.m10 PMID: 10.10.10
+five.six.m11 PMID: 11.11.11
+
+... delete five.* ...
+one.m1 PMID: 1.1.1
+two.m2 PMID: 2.2.2
+two.three.m3 PMID: 3.3.3
+two.three.m4 PMID: 4.4.4
+
+... delete two.three.* ...
+one.m1 PMID: 1.1.1
+two.m2 PMID: 2.2.2
+
+... delete two.* ...
+one.m1 PMID: 1.1.1
diff --git a/qa/237 b/qa/237
new file mode 100755
index 0000000..7cd2485
--- /dev/null
+++ b/qa/237
@@ -0,0 +1,134 @@
+#! /bin/sh
+# PCP QA Test No. 237
+# serious pmnsmerge exerciser
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+mkdir $tmp.dir
+cd $tmp.dir
+
+echo >r1 '/*
+ * Test PMNS #1
+ */
+
+root {
+ foo
+ r111 1:1:1
+ r112 1:1:2
+}
+
+foo {
+ f121 1:2:1
+ bar
+ f122 1:2:2
+}
+
+foo.bar {
+ fb131 1:3:1
+ fb132 1:3:2
+}'
+
+echo >r2 '/*
+ * Test PMNS #2
+ */
+
+#define _DATESTAMP 961108
+
+root {
+ r118 1:1:8
+}'
+
+echo >r3 '/*
+ * Test PMNS #3
+ */
+
+#define _DATESTAMP 961106
+
+root {
+ foo
+ r111 1:1:1
+ r113 1:1:3
+ urk
+ r114 1:1:4
+ r115 1:1:5
+ r116 1:1:6
+}
+
+foo {
+ f121 1:2:1
+ bar
+ f123 1:2:3
+ eek
+}
+
+foo.bar {
+ fb131 1:3:1
+ fb133 1:3:3
+}
+
+foo.eek {
+ fe141 1:4:1
+}
+
+urk {
+ u151 1:5:1
+ u152 1:5:2
+}'
+
+rm -f out-pmns
+pmnsmerge r1 r2 r3 out-pmns
+cat out-pmns
+pminfo -n out-pmns
+
+# from man page
+rm -f r1 r2 r3 out-pmns
+echo >r1 'root {
+ mine 1:1:1
+ foo
+ yours 1:1:2
+}
+foo {
+ fumble 1:2:1
+ stumble 1:2:2
+}'
+
+echo >r2 'root {
+ surprise 1:1:3
+ mine 1:1:1
+ foo
+ yawn
+}
+foo {
+ mumble 1:2:3
+ stumble 1:2:2
+}
+yawn {
+ sleepy 1:3:1
+}'
+
+cat r1
+cat r2
+pmnsmerge r1 r2 out-pmns
+cat out-pmns
+pminfo -n out-pmns
diff --git a/qa/237.out.1 b/qa/237.out.1
new file mode 100644
index 0000000..ecd5b7f
--- /dev/null
+++ b/qa/237.out.1
@@ -0,0 +1,107 @@
+QA output created by 237
+Compiled PMNS contains
+ 7 hash table entries
+ 16 leaf nodes
+ 5 non-leaf nodes
+ 105 bytes of symbol table
+root {
+ foo
+ r111 1:1:1
+ r112 1:1:2
+ r113 1:1:3
+ r114 1:1:4
+ r115 1:1:5
+ r116 1:1:6
+ urk
+ r118 1:1:8
+}
+
+foo {
+ f121 1:2:1
+ bar
+ f122 1:2:2
+ f123 1:2:3
+ eek
+}
+
+foo.bar {
+ fb131 1:3:1
+ fb132 1:3:2
+ fb133 1:3:3
+}
+
+foo.eek {
+ fe141 1:4:1
+}
+
+urk {
+ u151 1:5:1
+ u152 1:5:2
+}
+foo.f121
+foo.bar.fb131
+foo.bar.fb132
+foo.bar.fb133
+foo.f122
+foo.f123
+foo.eek.fe141
+r111
+r112
+r113
+r114
+r115
+r116
+urk.u151
+urk.u152
+r118
+root {
+ mine 1:1:1
+ foo
+ yours 1:1:2
+}
+foo {
+ fumble 1:2:1
+ stumble 1:2:2
+}
+root {
+ surprise 1:1:3
+ mine 1:1:1
+ foo
+ yawn
+}
+foo {
+ mumble 1:2:3
+ stumble 1:2:2
+}
+yawn {
+ sleepy 1:3:1
+}
+Compiled PMNS contains
+ 7 hash table entries
+ 7 leaf nodes
+ 3 non-leaf nodes
+ 63 bytes of symbol table
+root {
+ mine 1:1:1
+ foo
+ yours 1:1:2
+ surprise 1:1:3
+ yawn
+}
+
+foo {
+ fumble 1:2:1
+ stumble 1:2:2
+ mumble 1:2:3
+}
+
+yawn {
+ sleepy 1:3:1
+}
+mine
+foo.fumble
+foo.stumble
+foo.mumble
+yours
+surprise
+yawn.sleepy
diff --git a/qa/237.out.2 b/qa/237.out.2
new file mode 100644
index 0000000..5b453e6
--- /dev/null
+++ b/qa/237.out.2
@@ -0,0 +1,97 @@
+QA output created by 237
+root {
+ foo
+ r111 1:1:1
+ r112 1:1:2
+ r113 1:1:3
+ r114 1:1:4
+ r115 1:1:5
+ r116 1:1:6
+ urk
+ r118 1:1:8
+}
+
+foo {
+ f121 1:2:1
+ bar
+ f122 1:2:2
+ f123 1:2:3
+ eek
+}
+
+foo.bar {
+ fb131 1:3:1
+ fb132 1:3:2
+ fb133 1:3:3
+}
+
+foo.eek {
+ fe141 1:4:1
+}
+
+urk {
+ u151 1:5:1
+ u152 1:5:2
+}
+foo.f121
+foo.bar.fb131
+foo.bar.fb132
+foo.bar.fb133
+foo.f122
+foo.f123
+foo.eek.fe141
+r111
+r112
+r113
+r114
+r115
+r116
+urk.u151
+urk.u152
+r118
+root {
+ mine 1:1:1
+ foo
+ yours 1:1:2
+}
+foo {
+ fumble 1:2:1
+ stumble 1:2:2
+}
+root {
+ surprise 1:1:3
+ mine 1:1:1
+ foo
+ yawn
+}
+foo {
+ mumble 1:2:3
+ stumble 1:2:2
+}
+yawn {
+ sleepy 1:3:1
+}
+root {
+ mine 1:1:1
+ foo
+ yours 1:1:2
+ surprise 1:1:3
+ yawn
+}
+
+foo {
+ fumble 1:2:1
+ stumble 1:2:2
+ mumble 1:2:3
+}
+
+yawn {
+ sleepy 1:3:1
+}
+mine
+foo.fumble
+foo.stumble
+foo.mumble
+yours
+surprise
+yawn.sleepy
diff --git a/qa/238 b/qa/238
new file mode 100755
index 0000000..015fa5b
--- /dev/null
+++ b/qa/238
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 238
+# pmnsmerge with group at deep level of PMNS and intervening
+# levels missing
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+mkdir $tmp.dir
+cd $tmp.dir
+
+echo >r1 '/*
+ * Test PMNS #1
+ */
+
+root {
+}'
+
+echo >r2 '/*
+ * Test PMNS #2
+ */
+
+#define _DATESTAMP 961108
+
+root {
+ foo
+}
+foo {
+ bar
+}
+foo.bar {
+ mumble
+}
+foo.bar.mumble {
+ fumble 1:2:3
+}'
+
+rm -f out-pmns
+pmnsmerge r1 r2 out-pmns
+cat out-pmns
+pminfo -n out-pmns
diff --git a/qa/238.out.1 b/qa/238.out.1
new file mode 100644
index 0000000..cfe6d38
--- /dev/null
+++ b/qa/238.out.1
@@ -0,0 +1,22 @@
+QA output created by 238
+Compiled PMNS contains
+ 1 hash table entries
+ 1 leaf nodes
+ 4 non-leaf nodes
+ 27 bytes of symbol table
+root {
+ foo
+}
+
+foo {
+ bar
+}
+
+foo.bar {
+ mumble
+}
+
+foo.bar.mumble {
+ fumble 1:2:3
+}
+foo.bar.mumble.fumble
diff --git a/qa/238.out.2 b/qa/238.out.2
new file mode 100644
index 0000000..7916c40
--- /dev/null
+++ b/qa/238.out.2
@@ -0,0 +1,17 @@
+QA output created by 238
+root {
+ foo
+}
+
+foo {
+ bar
+}
+
+foo.bar {
+ mumble
+}
+
+foo.bar.mumble {
+ fumble 1:2:3
+}
+foo.bar.mumble.fumble
diff --git a/qa/239 b/qa/239
new file mode 100755
index 0000000..58e42cc
--- /dev/null
+++ b/qa/239
@@ -0,0 +1,88 @@
+#! /bin/sh
+# PCP QA Test No. 239
+# pmnsmerge with embedded cpp(1) controls
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+mkdir $tmp.dir
+cd $tmp.dir
+
+echo >r1 'root {
+}'
+
+cat <<End-of-File >r2
+/*
+ * Irix pmns for Irix 6.4
+ * frozen on 21 November 1996.
+ */
+
+#define _STARTVERSION 961121
+
+root {
+#include "irix-root"
+}
+
+#include "irix-pmns"
+End-of-File
+
+cat <<End-of-File >irix-root
+ hinv
+End-of-File
+
+cat <<End-of-File >irix-pmns
+/*
+ * libirixpmda Performance Metrics Name Space Definition
+ *
+ * $Header: /plroot/eoe/pcp-1.0-melb/.RCS/PL/qa/RCS/239,v 1.6 2002/10/22 18:12:29 kenmcd Exp $
+ */
+
+hinv {
+ ncpu 1:18:2
+ cpuclock 1:26:1
+ dcache 1:26:2
+ icache 1:26:3
+ secondarycache 1:26:4
+ physmem 1:26:5
+ pmeminterleave 1:26:6
+ ndisk 1:26:7
+ nnode 1:26:8
+ nrouter 1:38:0
+ nrouterport 1:38:11
+ interconnect 1:38:13
+ map
+}
+
+hinv.map {
+ cpu 1:28:79
+ disk 1:80:13
+ node 1:39:49
+ router 1:38:1
+ routerport 1:38:12
+}
+End-of-File
+
+rm -f out-pmns
+pmnsmerge r1 r2 out-pmns
+cat out-pmns
+pminfo -n out-pmns -m | LC_COLLATE=POSIX sort
diff --git a/qa/239.out.1 b/qa/239.out.1
new file mode 100644
index 0000000..214d73a
--- /dev/null
+++ b/qa/239.out.1
@@ -0,0 +1,50 @@
+QA output created by 239
+Compiled PMNS contains
+ 7 hash table entries
+ 17 leaf nodes
+ 3 non-leaf nodes
+ 157 bytes of symbol table
+root {
+ hinv
+}
+
+hinv {
+ ncpu 1:18:2
+ cpuclock 1:26:1
+ dcache 1:26:2
+ icache 1:26:3
+ secondarycache 1:26:4
+ physmem 1:26:5
+ pmeminterleave 1:26:6
+ ndisk 1:26:7
+ nnode 1:26:8
+ nrouter 1:38:0
+ nrouterport 1:38:11
+ interconnect 1:38:13
+ map
+}
+
+hinv.map {
+ cpu 1:28:79
+ disk 1:80:13
+ node 1:39:49
+ router 1:38:1
+ routerport 1:38:12
+}
+hinv.cpuclock PMID: 1.26.1
+hinv.dcache PMID: 1.26.2
+hinv.icache PMID: 1.26.3
+hinv.interconnect PMID: 1.38.13
+hinv.map.cpu PMID: 1.28.79
+hinv.map.disk PMID: 1.80.13
+hinv.map.node PMID: 1.39.49
+hinv.map.router PMID: 1.38.1
+hinv.map.routerport PMID: 1.38.12
+hinv.ncpu PMID: 1.18.2
+hinv.ndisk PMID: 1.26.7
+hinv.nnode PMID: 1.26.8
+hinv.nrouter PMID: 1.38.0
+hinv.nrouterport PMID: 1.38.11
+hinv.physmem PMID: 1.26.5
+hinv.pmeminterleave PMID: 1.26.6
+hinv.secondarycache PMID: 1.26.4
diff --git a/qa/239.out.2 b/qa/239.out.2
new file mode 100644
index 0000000..71532df
--- /dev/null
+++ b/qa/239.out.2
@@ -0,0 +1,45 @@
+QA output created by 239
+root {
+ hinv
+}
+
+hinv {
+ ncpu 1:18:2
+ cpuclock 1:26:1
+ dcache 1:26:2
+ icache 1:26:3
+ secondarycache 1:26:4
+ physmem 1:26:5
+ pmeminterleave 1:26:6
+ ndisk 1:26:7
+ nnode 1:26:8
+ nrouter 1:38:0
+ nrouterport 1:38:11
+ interconnect 1:38:13
+ map
+}
+
+hinv.map {
+ cpu 1:28:79
+ disk 1:80:13
+ node 1:39:49
+ router 1:38:1
+ routerport 1:38:12
+}
+hinv.cpuclock PMID: 1.26.1
+hinv.dcache PMID: 1.26.2
+hinv.icache PMID: 1.26.3
+hinv.interconnect PMID: 1.38.13
+hinv.map.cpu PMID: 1.28.79
+hinv.map.disk PMID: 1.80.13
+hinv.map.node PMID: 1.39.49
+hinv.map.router PMID: 1.38.1
+hinv.map.routerport PMID: 1.38.12
+hinv.ncpu PMID: 1.18.2
+hinv.ndisk PMID: 1.26.7
+hinv.nnode PMID: 1.26.8
+hinv.nrouter PMID: 1.38.0
+hinv.nrouterport PMID: 1.38.11
+hinv.physmem PMID: 1.26.5
+hinv.pmeminterleave PMID: 1.26.6
+hinv.secondarycache PMID: 1.26.4
diff --git a/qa/240 b/qa/240
new file mode 100755
index 0000000..a5a7b87
--- /dev/null
+++ b/qa/240
@@ -0,0 +1,134 @@
+#! /bin/sh
+# PCP QA Test No. 240
+# pmnsmerge with nested cpp directives in the first arg
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+mkdir $tmp.dir
+cd $tmp.dir
+
+cat <<End-of-File >r0
+root {
+}
+End-of-File
+
+cat <<End-of-File >r1
+root {
+ foo
+ boo 1:2:3
+ eek
+}
+#include "r2"
+#include "r3"
+End-of-File
+
+cat <<End-of-File >r2
+#define FOO 1
+foo {
+ fumble FOO:2:1
+ bar
+}
+#include "r4"
+End-of-File
+
+cat <<End-of-File >r3
+eek {
+ stumble 1:2:4
+}
+End-of-File
+
+cat <<End-of-File >r4
+foo.bar {
+ mumble FOO:2:2
+}
+End-of-File
+
+cat <<End-of-File >r5
+root {
+ root_ 2:2:0
+ surprise
+ foo
+ eek
+}
+#include "r6"
+End-of-File
+
+cat <<End-of-File >r6
+#undef FOO
+#define FOO 2
+foo {
+ foo_ FOO:2:1
+ bar
+}
+foo.bar {
+ foobar_ FOO:2:2
+ xtra
+}
+eek {
+ eek_ FOO:2:3
+}
+surprise {
+ s1_ FOO:3:1
+ s2_ FOO:3:2
+}
+foo.bar.xtra {
+ x1_ FOO:4:1
+ x2_ FOO:4:2
+}
+End-of-File
+
+echo "-- null --"
+rm -f out-pmns
+pmnsmerge r0 out-pmns
+cat out-pmns
+pminfo -n out-pmns -m | sort
+
+echo
+echo "-- r1 --"
+pminfo -n r1 -m | sort
+
+echo
+echo "-- r5 --"
+pminfo -n r5 -m | sort
+
+echo
+echo "-- null + r1 --"
+rm -f out-pmns
+pmnsmerge r0 r1 out-pmns
+cat out-pmns
+pminfo -n out-pmns -m | sort
+
+echo
+echo "-- null + r1 + r5 --"
+rm -f out-pmns
+pmnsmerge r0 r1 r5 out-pmns
+cat out-pmns
+pminfo -n out-pmns -m | sort
+
+echo
+echo "-- r1 + r5 --"
+rm -f out-pmns
+pmnsmerge r1 r5 out-pmns
+cat out-pmns
+pminfo -n out-pmns -m | sort
diff --git a/qa/240.out.1 b/qa/240.out.1
new file mode 100644
index 0000000..5f81119
--- /dev/null
+++ b/qa/240.out.1
@@ -0,0 +1,161 @@
+QA output created by 240
+-- null --
+Compiled PMNS contains
+ 1 hash table entries
+ 0 leaf nodes
+ 1 non-leaf nodes
+ 5 bytes of symbol table
+root {
+}
+PMNS appears to be empty!
+
+-- r1 --
+boo PMID: 1.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.mumble PMID: 1.2.2
+foo.fumble PMID: 1.2.1
+
+-- r5 --
+eek.eek_ PMID: 2.2.3
+foo.bar.foobar_ PMID: 2.2.2
+foo.bar.xtra.x1_ PMID: 2.4.1
+foo.bar.xtra.x2_ PMID: 2.4.2
+foo.foo_ PMID: 2.2.1
+root_ PMID: 2.2.0
+surprise.s1_ PMID: 2.3.1
+surprise.s2_ PMID: 2.3.2
+
+-- null + r1 --
+Compiled PMNS contains
+ 1 hash table entries
+ 4 leaf nodes
+ 4 non-leaf nodes
+ 43 bytes of symbol table
+root {
+ boo 1:2:3
+ foo
+ eek
+}
+
+foo {
+ fumble 1:2:1
+ bar
+}
+
+foo.bar {
+ mumble 1:2:2
+}
+
+eek {
+ stumble 1:2:4
+}
+boo PMID: 1.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.mumble PMID: 1.2.2
+foo.fumble PMID: 1.2.1
+
+-- null + r1 + r5 --
+Compiled PMNS contains
+ 7 hash table entries
+ 12 leaf nodes
+ 6 non-leaf nodes
+ 97 bytes of symbol table
+root {
+ boo 1:2:3
+ foo
+ eek
+ root_ 2:2:0
+ surprise
+}
+
+foo {
+ fumble 1:2:1
+ bar
+ foo_ 2:2:1
+}
+
+foo.bar {
+ mumble 1:2:2
+ foobar_ 2:2:2
+ xtra
+}
+
+foo.bar.xtra {
+ x1_ 2:4:1
+ x2_ 2:4:2
+}
+
+eek {
+ stumble 1:2:4
+ eek_ 2:2:3
+}
+
+surprise {
+ s1_ 2:3:1
+ s2_ 2:3:2
+}
+boo PMID: 1.2.3
+eek.eek_ PMID: 2.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.foobar_ PMID: 2.2.2
+foo.bar.mumble PMID: 1.2.2
+foo.bar.xtra.x1_ PMID: 2.4.1
+foo.bar.xtra.x2_ PMID: 2.4.2
+foo.foo_ PMID: 2.2.1
+foo.fumble PMID: 1.2.1
+root_ PMID: 2.2.0
+surprise.s1_ PMID: 2.3.1
+surprise.s2_ PMID: 2.3.2
+
+-- r1 + r5 --
+Compiled PMNS contains
+ 7 hash table entries
+ 12 leaf nodes
+ 6 non-leaf nodes
+ 97 bytes of symbol table
+root {
+ foo
+ boo 1:2:3
+ eek
+ root_ 2:2:0
+ surprise
+}
+
+foo {
+ fumble 1:2:1
+ bar
+ foo_ 2:2:1
+}
+
+foo.bar {
+ mumble 1:2:2
+ foobar_ 2:2:2
+ xtra
+}
+
+foo.bar.xtra {
+ x1_ 2:4:1
+ x2_ 2:4:2
+}
+
+eek {
+ stumble 1:2:4
+ eek_ 2:2:3
+}
+
+surprise {
+ s1_ 2:3:1
+ s2_ 2:3:2
+}
+boo PMID: 1.2.3
+eek.eek_ PMID: 2.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.foobar_ PMID: 2.2.2
+foo.bar.mumble PMID: 1.2.2
+foo.bar.xtra.x1_ PMID: 2.4.1
+foo.bar.xtra.x2_ PMID: 2.4.2
+foo.foo_ PMID: 2.2.1
+foo.fumble PMID: 1.2.1
+root_ PMID: 2.2.0
+surprise.s1_ PMID: 2.3.1
+surprise.s2_ PMID: 2.3.2
diff --git a/qa/240.out.2 b/qa/240.out.2
new file mode 100644
index 0000000..609f79b
--- /dev/null
+++ b/qa/240.out.2
@@ -0,0 +1,141 @@
+QA output created by 240
+-- null --
+root {
+}
+PMNS appears to be empty!
+
+-- r1 --
+boo PMID: 1.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.mumble PMID: 1.2.2
+foo.fumble PMID: 1.2.1
+
+-- r5 --
+eek.eek_ PMID: 2.2.3
+foo.bar.foobar_ PMID: 2.2.2
+foo.bar.xtra.x1_ PMID: 2.4.1
+foo.bar.xtra.x2_ PMID: 2.4.2
+foo.foo_ PMID: 2.2.1
+root_ PMID: 2.2.0
+surprise.s1_ PMID: 2.3.1
+surprise.s2_ PMID: 2.3.2
+
+-- null + r1 --
+root {
+ boo 1:2:3
+ foo
+ eek
+}
+
+foo {
+ fumble 1:2:1
+ bar
+}
+
+foo.bar {
+ mumble 1:2:2
+}
+
+eek {
+ stumble 1:2:4
+}
+boo PMID: 1.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.mumble PMID: 1.2.2
+foo.fumble PMID: 1.2.1
+
+-- null + r1 + r5 --
+root {
+ boo 1:2:3
+ foo
+ eek
+ root_ 2:2:0
+ surprise
+}
+
+foo {
+ fumble 1:2:1
+ bar
+ foo_ 2:2:1
+}
+
+foo.bar {
+ mumble 1:2:2
+ foobar_ 2:2:2
+ xtra
+}
+
+foo.bar.xtra {
+ x1_ 2:4:1
+ x2_ 2:4:2
+}
+
+eek {
+ stumble 1:2:4
+ eek_ 2:2:3
+}
+
+surprise {
+ s1_ 2:3:1
+ s2_ 2:3:2
+}
+boo PMID: 1.2.3
+eek.eek_ PMID: 2.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.foobar_ PMID: 2.2.2
+foo.bar.mumble PMID: 1.2.2
+foo.bar.xtra.x1_ PMID: 2.4.1
+foo.bar.xtra.x2_ PMID: 2.4.2
+foo.foo_ PMID: 2.2.1
+foo.fumble PMID: 1.2.1
+root_ PMID: 2.2.0
+surprise.s1_ PMID: 2.3.1
+surprise.s2_ PMID: 2.3.2
+
+-- r1 + r5 --
+root {
+ foo
+ boo 1:2:3
+ eek
+ root_ 2:2:0
+ surprise
+}
+
+foo {
+ fumble 1:2:1
+ bar
+ foo_ 2:2:1
+}
+
+foo.bar {
+ mumble 1:2:2
+ foobar_ 2:2:2
+ xtra
+}
+
+foo.bar.xtra {
+ x1_ 2:4:1
+ x2_ 2:4:2
+}
+
+eek {
+ stumble 1:2:4
+ eek_ 2:2:3
+}
+
+surprise {
+ s1_ 2:3:1
+ s2_ 2:3:2
+}
+boo PMID: 1.2.3
+eek.eek_ PMID: 2.2.3
+eek.stumble PMID: 1.2.4
+foo.bar.foobar_ PMID: 2.2.2
+foo.bar.mumble PMID: 1.2.2
+foo.bar.xtra.x1_ PMID: 2.4.1
+foo.bar.xtra.x2_ PMID: 2.4.2
+foo.foo_ PMID: 2.2.1
+foo.fumble PMID: 1.2.1
+root_ PMID: 2.2.0
+surprise.s1_ PMID: 2.3.1
+surprise.s2_ PMID: 2.3.2
diff --git a/qa/241 b/qa/241
new file mode 100755
index 0000000..c95dc98
--- /dev/null
+++ b/qa/241
@@ -0,0 +1,147 @@
+#!/bin/sh
+# PCP QA Test No. 241
+# mmv pmda exerciser ... Martin's test case that was failing
+# mmv install/cleanup borrowed from 647
+#
+# Copyright (c) 2009 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+perl -e "use PCP::MMV" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::MMV module not installed"
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+done_clean=false
+MMV_STATS_DIR="$PCP_TMP_DIR/mmv"
+SAVE_MMV_STATS_DIR="$PCP_TMP_DIR/mmv.$seq"
+
+$sudo rm -rf $tmp.*
+
+# for QA the default install for mmv PMDA is as a dso, not a daemon
+#
+cat <<End-of-File >$tmp.input
+b
+dso
+End-of-File
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ [ -d $SAVE_MMV_STATS_DIR ] && $sudo rm -fr "$MMV_STATS_DIR"
+ [ -d $SAVE_MMV_STATS_DIR ] && $sudo mv $SAVE_MMV_STATS_DIR $MMV_STATS_DIR
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ rm -f $tmp.*
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo mmv >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+home="$PCP_PMDAS_DIR"
+iam=mmv
+if [ ! -d "$home/$iam" ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd "$home/$iam"
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH "$tmp.pmcd.conf"
+# move the MMV directory to restore contents later.
+[ -d $MMV_STATS_DIR ] && $sudo mv -f $MMV_STATS_DIR $SAVE_MMV_STATS_DIR
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+$sudo mkdir "$MMV_STATS_DIR" 2>/dev/null
+$sudo chmod 1777 "$MMV_STATS_DIR" 2>/dev/null
+
+cat <<'End-of-File' >$tmp.perl
+use strict;
+use warnings;
+use PCP::MMV;
+
+my @indoms = ();
+my @metrics = (
+ ['export_value',
+ 1, MMV_TYPE_U64, MMV_INDOM_NULL,
+ mmv_units(0,0,0,0,0,0), MMV_SEM_INSTANT,
+ 'A counter of some value', ''
+ ]
+);
+
+my $handle = mmv_stats_init('mymmv', 0, MMV_FLAG_PROCESS, \@metrics, \@indoms);
+die ("mmv_stats_init failed\n") unless (defined($handle));
+
+while (my $line = <STDIN>) {
+ print $line;
+ next if not $line =~ /^new value:/;
+
+ my $val;
+ ($val = $line) =~ s/^new value: (\d+)/$1/;
+ chomp $val;
+ mmv_stats_set($handle, 'export_value', '', $val);
+}
+End-of-File
+
+# real QA test starts here
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install -e <$tmp.input >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+
+value=5
+for i in 1 2 3 4
+do
+ echo "new value: $value"
+ value=`expr $value + 1`
+ sleep 1
+ [ "$i" = 1 ] && pmval -t 0.5sec -s 20 mmv.mymmv.export_value >$tmp.out 2>&1 &
+ sleep 1
+done \
+| perl $tmp.perl
+
+
+wait
+
+echo "Filtered pmval output ..."
+grep '^[a-z]' $tmp.out | sed -e '/^host:.*$/s/.*/HOST/'
+grep '^[^a-z]' $tmp.out | LC_COLLATE=POSIX sort -u
+
+# success, all done
+exit
diff --git a/qa/241.out.1 b/qa/241.out.1
new file mode 100644
index 0000000..2d1db4f
--- /dev/null
+++ b/qa/241.out.1
@@ -0,0 +1,40 @@
+QA output created by 241
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] b
+Install mmv as a daemon or dso agent? [daemon] dso
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+new value: 5
+new value: 6
+new value: 7
+new value: 8
+Filtered pmval output ...
+metric: mmv.mymmv.export_value
+HOST
+semantics: instantaneous value
+units: none
+samples: 20
+interval: 0.50 sec
+ 5
+ 6
+ 7
+ 8
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/241.out.2 b/qa/241.out.2
new file mode 100644
index 0000000..547c867
--- /dev/null
+++ b/qa/241.out.2
@@ -0,0 +1,35 @@
+QA output created by 241
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] b
+Install mmv as a daemon or dso agent? [daemon] dso
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+new value: 5
+new value: 6
+new value: 7
+new value: 8
+Filtered pmval output ...
+metric: mmv.mymmv.export_value
+HOST
+semantics: instantaneous value
+units: none
+samples: 20
+interval: 0.50 sec
+ 5
+ 6
+ 7
+ 8
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/242 b/qa/242
new file mode 100755
index 0000000..de860e0
--- /dev/null
+++ b/qa/242
@@ -0,0 +1,59 @@
+#! /bin/sh
+# PCP QA Test No. 242
+# pmlogger dumps core on repeated metric with explicit instance
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "sample.long.hundred ..."
+cat <<End-of-File >$tmp.config
+log advisory on 200 msec {
+sample.long.hundred
+sample.long.hundred
+}
+End-of-File
+pmlogger -c $tmp.config -T 1 -l $tmp.log $tmp >$tmp.err 2>&1
+cat $tmp.err $tmp.log | _filter_pmlogger_log
+pminfo -a $tmp | LC_COLLATE=POSIX sort
+rm -f $tmp.0 $tmp.index $tmp.meta
+
+echo
+echo "kernel.all.load ["1 minute"] ..."
+cat <<End-of-File >$tmp.config
+log advisory on 200 msec {
+kernel.all.load ["1 minute"]
+kernel.all.load ["1 minute"]
+}
+End-of-File
+pmlogger -c $tmp.config -T 1 -l $tmp.log $tmp >$tmp.err 2>&1
+cat $tmp.err $tmp.log | _filter_pmlogger_log
+pminfo -a $tmp | LC_COLLATE=POSIX sort | ./xlate_2_new_pmns
+rm -f $tmp.0 $tmp.index $tmp.meta
+
+echo
+echo "kernel.all.load ..."
+cat <<End-of-File >$tmp.config
+log advisory on 200 msec {
+kernel.all.load
+kernel.all.load
+}
+End-of-File
+pmlogger -c $tmp.config -T 1 -l $tmp.log $tmp >$tmp.err 2>&1
+cat $tmp.err $tmp.log | _filter_pmlogger_log
+pminfo -a $tmp | LC_COLLATE=POSIX sort | ./xlate_2_new_pmns
+rm -f $tmp.0 $tmp.index $tmp.meta
+
+# all done
+exit
diff --git a/qa/242.out b/qa/242.out
new file mode 100644
index 0000000..98ceff2
--- /dev/null
+++ b/qa/242.out
@@ -0,0 +1,42 @@
+QA output created by 242
+sample.long.hundred ...
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: End of run time, exiting
+
+Log finished DATE
+pmcd.pmlogger.archive
+pmcd.pmlogger.host
+pmcd.pmlogger.port
+sample.long.hundred
+
+kernel.all.load [1 minute] ...
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: End of run time, exiting
+
+Log finished DATE
+kernel.all.load
+pmcd.pmlogger.archive
+pmcd.pmlogger.host
+pmcd.pmlogger.port
+
+kernel.all.load ...
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: End of run time, exiting
+
+Log finished DATE
+kernel.all.load
+pmcd.pmlogger.archive
+pmcd.pmlogger.host
+pmcd.pmlogger.port
diff --git a/qa/243 b/qa/243
new file mode 100755
index 0000000..0a55671
--- /dev/null
+++ b/qa/243
@@ -0,0 +1,136 @@
+#! /bin/sh
+# PCP QA Test No. 243
+# Multiple PMCDs test
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+_filter_err()
+{
+ _filter_pmcd_log \
+ | sed \
+ -e 's/ __pmBind: / bind: /g' \
+ -e 's/may already be running/is already running/g' \
+ -e '/Log for pmcd/,/INADDR_ANY/c\
+... boring stuff deleted' \
+ -e '/ok FD 44321 ipv6 INADDR_ANY/d' \
+ -e '/OpenRequestSocket.*unix.*bind: Address already in use/,+1 d' \
+ -e 's/ INADDR_ANY/ 0x0/g'
+}
+
+_filter_log()
+{
+ sleep 3
+ _filter_pmcd_log <./pmcd.log \
+ | sed \
+ -e '/^DATA: from client/d' \
+ -e 's/Cannot open 000000660066: No such file or directory//' \
+ -e 's/^$//' \
+ -e '/^00[08]:/d' \
+ -e '/pmGetPDU/{
+s/\[[0-9][0-9]*]/[PID]/
+s/from=.*/from=PID/
+}' \
+ -e '/_pmHaveMoreInput/{
+s/\[[0-9][0-9]*]/[PID]/
+s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
+}' \
+ -e '/Piggy-back/{
+s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
+s/from=.*/from=PID/
+}' \
+ -e '/pmXmitPDU/s/\[[0-9][0-9]*]/[PID]/' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/value /{
+s/value [0-9][0-9]*/value INTEGER/
+}' \
+ -e 's;pcp/lib/mips_[^.]*\.;pcp/lib/ISA.;' \
+ | $PCP_AWK_PROG '
+$3 ~ /^[0-9][0-9]*$/ { $3 = "A_PID" }
+ { print }'
+
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+_needclean=true
+
+rm -rf $tmp
+mkdir $tmp
+chmod ugo+rwx $tmp
+cd $tmp
+
+cleanup()
+{
+ cd $here
+ if $_needclean
+ then
+ _needclean=false
+ $signal -s TERM $my_pmcd_pid
+ sleep 1
+ unset PMCD_SOCKET
+ echo "Restart and ping pmcd ..."
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ pmprobe pmcd.control.debug
+ fi
+ rm -rf $tmp
+}
+
+status=1
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+# Note: start pmcd with -f so that its PID stays the same (no daemon)
+#
+export PMCD_SOCKET=$tmp/pmcd.socket
+$PCP_PMCD_PROG -f -x err1 &
+my_pmcd_pid=$!
+
+_wait_for_pmcd
+
+echo "Checking for startup errors ..."
+[ -f err1 ] && _filter_err <err1
+
+# Try to start another pmcd. This should fail because the socket is already in
+# use. Make sure that there are no changes to the log file
+#
+if [ -f pmcd.log ]
+then
+ cp pmcd.log pmcd.log.$$
+else
+ echo "No pmcd.log, pmcd failed to start!"
+ exit
+fi
+
+echo
+echo "Trying to start another PMCD over the top of the first one."
+echo "Expect \"bind: Address already in use\"...:"
+$PCP_PMCD_PROG -f -x err2 2>&1 | _filter_err &
+sleep 2
+
+echo "Checking for startup errors ..."
+[ -f err2 ] && _filter_err <err2
+
+echo "Checking that log hasn't changed ..."
+diff pmcd.log pmcd.log.$$
+
+status=$?
diff --git a/qa/243.out.ipv6 b/qa/243.out.ipv6
new file mode 100644
index 0000000..a7344b9
--- /dev/null
+++ b/qa/243.out.ipv6
@@ -0,0 +1,20 @@
+QA output created by 243
+Waiting for pmcd to terminate ...
+Checking for startup errors ...
+
+Trying to start another PMCD over the top of the first one.
+Expect "bind: Address already in use"...:
+[DATE] pmcd(PID) Error: OpenRequestSocket(44321, 0x0, inet) bind: Address already in use
+[DATE] pmcd(PID) Error: pmcd is already running
+[DATE] pmcd(PID) Error: OpenRequestSocket(44321, 0x0, ipv6) bind: Address already in use
+[DATE] pmcd(PID) Error: pmcd is already running
+[DATE] pmcd(PID) Error: pmcd: can't open any request ports, exiting
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+Checking for startup errors ...
+NOTE: pmcd not started due to errors! Log file "pmcd.log" contains ...
+... boring stuff deleted
+Checking that log hasn't changed ...
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
+pmcd.control.debug 1
diff --git a/qa/243.out.nonipv6 b/qa/243.out.nonipv6
new file mode 100644
index 0000000..3528ef4
--- /dev/null
+++ b/qa/243.out.nonipv6
@@ -0,0 +1,18 @@
+QA output created by 243
+Waiting for pmcd to terminate ...
+Checking for startup errors ...
+
+Trying to start another PMCD over the top of the first one.
+Expect "bind: Address already in use"...:
+[DATE] pmcd(PID) Error: OpenRequestSocket(44321, 0x0, inet) bind: Address already in use
+[DATE] pmcd(PID) Error: pmcd is already running
+[DATE] pmcd(PID) Error: pmcd: can't open any request ports, exiting
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+Checking for startup errors ...
+NOTE: pmcd not started due to errors! Log file "pmcd.log" contains ...
+... boring stuff deleted
+Checking that log hasn't changed ...
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
+pmcd.control.debug 1
diff --git a/qa/244 b/qa/244
new file mode 100755
index 0000000..0c61fc3
--- /dev/null
+++ b/qa/244
@@ -0,0 +1,273 @@
+#! /bin/sh
+# PCP QA Test No. 244
+# PMCD SIGHUP processing tests with $PCP_PMCDCONF_PATH changes
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+rm -f $seq.out
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+_filter_log()
+{
+ sleep 3
+ _filter_pmcd_log <./pmcd.log \
+ | sed \
+ -e '/^DATA: from client/d' \
+ -e '/cmd=.*pmdasample/s//cmd=...pmdasample/' \
+ -e 's/ \[(nil)]//' \
+ -e 's/Cannot open 000000660066: No such file or directory//' \
+ -e 's/^$//' \
+ -e '/^00[08]:/d' \
+ -e '/pmGetPDU/{
+s/\[[0-9][0-9]*]/[PID]/
+s/from=.*/from=PID/
+}' \
+ -e '/_pmHaveMoreInput/{
+s/\[[0-9][0-9]*]/[PID]/
+s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
+}' \
+ -e '/Piggy-back/{
+s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
+s/from=.*/from=PID/
+}' \
+ -e '/pmXmitPDU/s/\[[0-9][0-9]*]/[PID]/' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/value /{
+s/value [0-9][0-9]*/value INTEGER/
+}' \
+ -e 's;pcp/lib/mips_[^.]*\.;pcp/lib/ISA.;' \
+ -e '/access violation from host/d' \
+ -e '/endclient client.* No permission/d' \
+ -e 's/fd=[0-9][0-9]*/fd=FD/g' \
+ -e "/sed: couldn't flush stdout: Broken pipe/d" \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ -e '/unix:/d' \
+ | $PCP_AWK_PROG '
+$3 ~ /^[0-9][0-9]*$/ { $3 = "A_PID" }
+$1 == "news" { $4 = "fd_in"; $5 = "fd_out" }
+$1 == "cisco" { $4 = "fd_in"; $5 = "fd_out"
+ for (i = 9; i <= NF; i++) {
+ # cull args like wanfoo:s0 or wanbar:e1
+ if ($i ~ /:[a-z]/) $i = ""
+ }
+ }
+/pipe cmd=/ { $4 = "FD"; $5 = "FD" }
+/Host access list:/ { localHostPrinted = 0 }
+/localhost/ { if (! localHostPrinted) {
+ localHostPrinted = 1
+ sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"MYIPADDR",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*%[0-9a-z]+$/,"MYIPADDR",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"MYIPADDR",$5)
+ sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"MYHOSTMASK",$6)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"MYHOSTMASK",$6)
+ }
+ else next
+ }
+ { print }' \
+ | _filter_optional_pmdas \
+ | sed \
+ -e 's/_o32/_SIZE/' \
+ -e 's/_n32/_SIZE/' \
+ -e 's/_64/_SIZE/' \
+ -e "s;$here/src/;;" \
+ -e '/Cleanup "fake_linux" agent (dom 60): unconfigured/q'
+}
+
+CONFIG=$PCP_PMCDCONF_PATH
+NEWCONFIG=$tmp/pmcd.conf
+CONFIGSAVE=$tmp/pmcd.conf.save
+[ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+LOGCONTROL=$PCP_PMLOGGERCONTROL_PATH
+SAVE_LOGCONTROL=$tmp/control.save
+signal="$sudo $PCP_BINADM_DIR/pmsignal"
+_needclean=true
+
+# for local PMNS to avoid conflict with pmcd tests
+#
+NAMESPACE="-n $here/src/root_irix"
+
+rm -rf $tmp $tmp.*
+mkdir $tmp
+chmod ugo+rwx $tmp
+cd $tmp
+
+$sudo chmod u+w $CONFIG
+cp $CONFIG $CONFIGSAVE
+[ -f $LOGCONTROL ] && $sudo mv $LOGCONTROL $SAVE_LOGCONTROL
+
+cleanup()
+{
+ cd $here
+ if $_needclean
+ then
+ _needclean=false
+ $signal -s TERM $pmcd
+ sleep 1
+ $sudo rm -f $CONFIG
+ $sudo cp $CONFIGSAVE $CONFIG
+ $sudo chmod u-w $CONFIG
+ [ -f $SAVE_LOGCONTROL ] && $sudo mv $SAVE_LOGCONTROL $LOGCONTROL
+ _restore_loggers
+ echo "Restart and ping pmcd ..."
+ unset PMCD_PORT
+ unset PMCD_SOCKET
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ pmprobe pmcd.control.debug
+ sleepers=`ps $PCP_PS_ALL_FLAGS | grep '[d]umb_pmda' | $PCP_AWK_PROG '$3 == 1 { print $2 }'`
+ [ ! -z "$sleepers" ] && $sudo $signal -s KILL $sleepers
+ fi
+ rm -rf $tmp $tmp.*
+}
+
+trap cleanup 0 1 2 3 15
+
+# real QA test starts here
+
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+$sudo $signal -a pmgadgets pmchart pmview >/dev/null 2>&1
+_disable_loggers
+$sudo $signal -a -s TERM pmie >/dev/null 2>&1
+
+# Make our own version of pmcd.conf with dummy agents that will time out.
+# Copy the pmcd PMDA from the original pmcd.conf so that we can check pmcd's
+# timeouts by storing into pmcd.control.timeout
+# NOTE: none of the domains should clash with the pmcd PMDA (domain 2) or the
+# sample agent (domain 254). These agents will be appended to the file.
+#
+echo "fake_irix 1 pipe binary $here/src/dumb_pmda -d 1 fake_irix" >$NEWCONFIG
+echo "fake_sampledso 30 pipe binary $here/src/dumb_pmda -d 30 fake_sampledso" >>$NEWCONFIG
+echo "fake_cisco 5 pipe binary $here/src/dumb_pmda -d 5 fake_cisco" >>$NEWCONFIG
+echo "fake_linux 60 pipe binary $here/src/dumb_pmda -d 60 fake_linux" >>$NEWCONFIG
+grep pmda_pmcd $CONFIGSAVE | sed -e 's/[ ][ ]*/ /g' -e 's/[ ]*$//' >>$NEWCONFIG
+echo "[access]" >>$NEWCONFIG
+echo "allow localhost : all;" >>$NEWCONFIG
+echo "disallow * : all;" >>$NEWCONFIG
+$sudo cp $NEWCONFIG $CONFIG
+
+echo '$PCP_PMCDCONF_PATH contains:'
+echo '<BEGIN>'
+sed <$CONFIG \
+ -e '/^pmcd/s; [^ ]*pmda_pmcd.'$DSO_SUFFIX'; ...pmda_pmcd.$DSO_SUFFIX;' \
+ -e "s;$here/src/;;"
+echo '<END>'
+
+# Use a different port to avoid interference by remote monitors
+#
+port=`_find_free_port 5432`
+export PMCD_PORT=$port
+export PMCD_SOCKET=$tmp/pmcd.socket
+
+# Note: start pmcd with -f so that its PID stays the same (no daemon)
+# Also figure out which user we will run pmcd and its pmdas as
+#
+username=`id -u -n`
+sudoopts="-u $username"
+id pcp >/dev/null 2>&1 && sudoopts="-u pcp"
+
+cat >$tmp.sh <<END
+#!/bin/sh
+export PATH=$here/src:$PATH
+$PCP_PMCD_PROG -f -t 2 &
+echo \$!
+END
+pmcd=`$sudo $sudoopts sh $tmp.sh`
+
+# complete V1 PMDA timeouts, then wait for pmcd
+#
+sleep 12
+_wait_for_pmcd
+
+# If agent not restarted then both messages will be "no agent for domain..."
+#
+echo "Expect \"IPC protocol failure\" ..."
+pminfo $NAMESPACE -d hinv.ncpu
+
+# Now remove the fake_sampledso agent and add the sample agent from the
+# original config file and restart PMCD.
+# The config file has changed and there is also a dead agent to restart.
+#
+sed <$NEWCONFIG >$tmp.tmp \
+ -e '1{
+a \
+'"`grep pmdasample $CONFIGSAVE | sed -e 's/[ ][ ]*/ /g' -e 's/[ ]*$//'`"'
+}' \
+ -e '/fake_sampledso/d'
+mv $tmp.tmp $NEWCONFIG
+$sudo cp $NEWCONFIG $CONFIG
+
+echo '$PCP_PMCDCONF_PATH now contains:'
+echo '<BEGIN>'
+sed <$CONFIG \
+ -e '/^pmcd/s; [^ ]*pmda_pmcd.'$DSO_SUFFIX'; ...pmda_pmcd.$DSO_SUFFIX;' \
+ -e '/^sample/s; [^ ]*pmdasample; ...pmdasample;' \
+ -e "s;$here/src/;;"
+echo '<END>'
+
+$signal -s HUP $pmcd
+_wait_for_pmcd
+
+echo "Expect \"Unknown or illegal metric identifier\" ..."
+pminfo $NAMESPACE -d sampledso.control
+echo "Expect \"IPC protocol failure\" ..."
+pminfo $NAMESPACE -d hinv.ncpu
+echo "Expect 9 values available ..."
+pmprobe $NAMESPACE -v sample.bin
+
+# Next, get the PID of the sample agent, copy the original config file back,
+# restart PMCD (the sample agent's config line will be unchanged) and check
+# that the sample agent has the same PID.
+# The bogus fake_sampledso agent should have been terminated because it is
+# no longer in the config file.
+# That isn't enough to terminate the sleep agent.
+#
+echo
+echo "Deleting, adding and keeping agents test"
+sample=`pminfo $NAMESPACE -f sample.daemon_pid | $PCP_AWK_PROG '
+$1 == "value" { print $2 }
+'`
+sleep 1
+ps -edf | grep dumb_pmda | grep fake_cisco >/dev/null || echo "Error: phony fake_cisco agent died prematurely"
+
+$sudo cp $CONFIGSAVE $CONFIG
+
+$signal -s HUP $pmcd
+_wait_for_pmcd
+
+ps -edf | grep dumb_pmda | grep fake_cisco >/dev/null && echo "Error: phony fake_cisco agent still lives!"
+
+# Generate a PDU into the domain where the fake_sampledso agent used to be (#30 is
+# assumed to be the sampledso PMDA)
+#
+echo "Getting a desriptor from domain 30 (fake_sampledso agent had this domain)"
+pminfo $NAMESPACE -md sampledso.control
+
+# check pmdasample has same pid (not restarted)
+#
+sample2=`pminfo $NAMESPACE -f sample.daemon_pid | $PCP_AWK_PROG '
+$1 == "value" { print $2 }
+'`
+if [ "X$sample" != "X$sample2" ]
+then
+ echo "Sample agent needlessly restarted (pid changed from $sample to $sample2)"
+fi
+
+_filter_log
+echo
+echo "..."
diff --git a/qa/244.out.ipv6 b/qa/244.out.ipv6
new file mode 100644
index 0000000..6bfa30d
--- /dev/null
+++ b/qa/244.out.ipv6
@@ -0,0 +1,112 @@
+QA output created by 244
+Waiting for pmcd to terminate ...
+$PCP_PMCDCONF_PATH contains:
+<BEGIN>
+fake_irix 1 pipe binary dumb_pmda -d 1 fake_irix
+fake_sampledso 30 pipe binary dumb_pmda -d 30 fake_sampledso
+fake_cisco 5 pipe binary dumb_pmda -d 5 fake_cisco
+fake_linux 60 pipe binary dumb_pmda -d 60 fake_linux
+pmcd 2 dso pmcd_init ...pmda_pmcd.$DSO_SUFFIX
+[access]
+allow localhost : all;
+disallow * : all;
+<END>
+Expect "IPC protocol failure" ...
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+$PCP_PMCDCONF_PATH now contains:
+<BEGIN>
+fake_irix 1 pipe binary dumb_pmda -d 1 fake_irix
+sample 29 pipe binary ...pmdasample -d 29
+fake_cisco 5 pipe binary dumb_pmda -d 5 fake_cisco
+fake_linux 60 pipe binary dumb_pmda -d 60 fake_linux
+pmcd 2 dso pmcd_init ...pmda_pmcd.$DSO_SUFFIX
+[access]
+allow localhost : all;
+disallow * : all;
+<END>
+Expect "Unknown or illegal metric identifier" ...
+sampledso.control: pmLookupDesc: Unknown or illegal metric identifier
+Expect "IPC protocol failure" ...
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+Expect 9 values available ...
+sample.bin 9 100 200 300 400 500 600 700 800 900
+
+Deleting, adding and keeping agents test
+Getting a desriptor from domain 30 (fake_sampledso agent had this domain)
+
+sampledso.control PMID: 30.0.0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_sampledso 30 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 30 fake_sampledso
+fake_linux 60 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 60 fake_linux
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y A_PID 0 MYIPADDR MYHOSTMASK 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+n n A_PID 0 :: :: 8 :*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD A_PID inet INADDR_ANY
+ok FD A_PID ipv6 INADDR_ANY
+[DATE] pmcd(PID) Warning: pduread: timeout (after 2.000 sec) while attempting to read 12 bytes out of 12 in HDR on fd=FD
+Cleanup "fake_irix" agent (dom 1): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+ == ======================================== ======= =================
+
+Cleanup "fake_sampledso" agent (dom 30): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+sample 29 A_PID FD FD 2 bin pipe cmd=...pmdasample -d 29
+fake_linux 60 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 60 fake_linux
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y A_PID 0 MYIPADDR MYHOSTMASK 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+n n A_PID 0 :: :: 8 :*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Warning: pduread: timeout (after 2.000 sec) while attempting to read 12 bytes out of 12 in HDR on fd=FD
+Cleanup "fake_irix" agent (dom 1): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+ == ======================================== ======= =================
+
+Cleanup "fake_cisco" agent (dom 5): unconfigured, exit(0)
+Cleanup "fake_linux" agent (dom 60): unconfigured, exit(0)
+
+...
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
+pmcd.control.debug 1
diff --git a/qa/244.out.nonipv6 b/qa/244.out.nonipv6
new file mode 100644
index 0000000..04e9813
--- /dev/null
+++ b/qa/244.out.nonipv6
@@ -0,0 +1,109 @@
+QA output created by 244
+Waiting for pmcd to terminate ...
+$PCP_PMCDCONF_PATH contains:
+<BEGIN>
+fake_irix 1 pipe binary dumb_pmda -d 1 fake_irix
+fake_sampledso 30 pipe binary dumb_pmda -d 30 fake_sampledso
+fake_cisco 5 pipe binary dumb_pmda -d 5 fake_cisco
+fake_linux 60 pipe binary dumb_pmda -d 60 fake_linux
+pmcd 2 dso pmcd_init ...pmda_pmcd.$DSO_SUFFIX
+[access]
+allow localhost : all;
+disallow * : all;
+<END>
+Expect "IPC protocol failure" ...
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+$PCP_PMCDCONF_PATH now contains:
+<BEGIN>
+fake_irix 1 pipe binary dumb_pmda -d 1 fake_irix
+sample 29 pipe binary ...pmdasample -d 29
+fake_cisco 5 pipe binary dumb_pmda -d 5 fake_cisco
+fake_linux 60 pipe binary dumb_pmda -d 60 fake_linux
+pmcd 2 dso pmcd_init ...pmda_pmcd.$DSO_SUFFIX
+[access]
+allow localhost : all;
+disallow * : all;
+<END>
+Expect "Unknown or illegal metric identifier" ...
+sampledso.control: pmLookupDesc: Unknown or illegal metric identifier
+Expect "IPC protocol failure" ...
+hinv.ncpu: pmLookupDesc: IPC protocol failure
+Expect 9 values available ...
+sample.bin 9 100 200 300 400 500 600 700 800 900
+
+Deleting, adding and keeping agents test
+Getting a desriptor from domain 30 (fake_sampledso agent had this domain)
+
+sampledso.control PMID: 30.0.0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+fake_sampledso 30 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 30 fake_sampledso
+fake_linux 60 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 60 fake_linux
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y A_PID 0 MYIPADDR MYHOSTMASK 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD A_PID inet INADDR_ANY
+[DATE] pmcd(PID) Warning: pduread: timeout (after 2.000 sec) while attempting to read 12 bytes out of 12 in HDR on fd=FD
+Cleanup "fake_irix" agent (dom 1): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+ == ======================================== ======= =================
+
+Cleanup "fake_sampledso" agent (dom 30): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+fake_irix 1 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 1 fake_irix
+pmcd 2 A_PID dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+fake_cisco 5 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 5 fake_cisco
+sample 29 A_PID FD FD 2 bin pipe cmd=...pmdasample -d 29
+fake_linux 60 A_PID FD FD 2 bin pipe cmd=dumb_pmda -d 60 fake_linux
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y y A_PID 0 MYIPADDR MYHOSTMASK 0 localhost
+n n A_PID 0 0.0.0.0 0.0.0.0 4 .*
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Warning: pduread: timeout (after 2.000 sec) while attempting to read 12 bytes out of 12 in HDR on fd=FD
+Cleanup "fake_irix" agent (dom 1): protocol failure for fd=FD, exit(0)
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+ == ======================================== ======= =================
+
+Cleanup "fake_cisco" agent (dom 5): unconfigured, exit(0)
+Cleanup "fake_linux" agent (dom 60): unconfigured, exit(0)
+
+...
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
+pmcd.control.debug 1
diff --git a/qa/245 b/qa/245
new file mode 100755
index 0000000..e87772a
--- /dev/null
+++ b/qa/245
@@ -0,0 +1,153 @@
+#! /bin/sh
+# PCP QA Test No. 245
+# exercise new pmnsdel
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=0
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+mkdir $tmp.dir
+cd $tmp.dir
+echo 'root {
+}' >null
+echo 'root {
+ one 1:1:1
+}' >one
+
+echo "+++ Errors +++"
+
+echo
+echo "=== no args ==="
+pmnsdel
+
+echo
+echo "=== no such PMNS file ==="
+pmnsdel -n no-such-input fumble
+
+echo
+echo "=== cannot open existing output file for writing ==="
+cp one mypmns
+chmod u-w mypmns
+pmnsdel -n mypmns one
+rm -f mypmns
+
+echo
+echo "=== cannot create output file ==="
+cp one mypmns
+chmod u-w .
+pmnsdel -n mypmns one
+chmod u+w .
+rm -f mypmns
+
+echo
+echo "=== syntax error in input ==="
+echo 'root {
+bogus - this is not correct
+}' >mypmns
+pmnsdel -n mypmns bogus
+
+echo 'root {
+ one 1:1:1
+ sub0
+ two 2:2:2
+ three 3:3:3
+ sub1
+}
+sub0 {
+ four 4:4:4
+ sub2
+ five 5:5:5
+}
+sub1 {
+ six 6:6:6
+ eight 8:8:8
+}
+sub0.sub2 {
+ seven 7:7:7
+ sub4
+}
+sub0.sub2.sub4 {
+ sub6
+}
+sub0.sub2.sub4.sub6 {
+ nine 9:9:9
+}' >foo
+
+pminfo -n foo -m | LC_COLLATE=POSIX sort >base.out
+echo
+echo "+++ Common starting PMNS for all remaing tests ..."
+cat base.out
+
+echo
+echo "=== assorted undefined metricpaths ==="
+cp foo mypmns
+pmnsdel -n mypmns leaf
+pmnsdel -n mypmns sub0.no_leaf
+pmnsdel -n mypmns sub0.sub2.no_leaf
+pmnsdel -n mypmns sub0.sub2.sub4.no_leaf
+pmnsdel -n mypmns sub0.sub2.sub4.sub6.no_leaf
+pmnsdel -n mypmns sub0.sub2.sub4.sub6.no_nonleaf.no_leaf
+
+echo
+echo "+++ Operations +++"
+
+echo
+echo "=== single metric ==="
+for metric in one sub0.sub2.sub4.sub6.nine sub0.sub2.seven
+do
+ echo $metric:
+ cp foo mypmns
+ pmnsdel -n mypmns $metric
+ echo "diffs ..."
+ pminfo -n mypmns -m | LC_COLLATE=POSIX sort | diff base.out -
+done
+
+echo
+echo "=== multiple metrics ==="
+for metric in "one sub0.sub2.sub4.sub6.nine sub0.sub2.seven"
+do
+ echo "delete: $metric"
+ cp foo mypmns
+ pmnsdel -n mypmns $metric
+ echo "diffs ..."
+ pminfo -n mypmns -m | LC_COLLATE=POSIX sort | diff base.out -
+done
+
+echo
+echo "=== non-leaves ==="
+for metric in sub0 sub1 sub0.sub2 sub0.sub2.sub4 sub0.sub2.sub4.sub6 \
+ sub0.sub2 \
+ "sub1 sub0.sub2.sub4.sub6 sub0 "
+do
+ echo "delete: $metric"
+ cp foo mypmns
+ pmnsdel -n mypmns $metric
+ echo "diffs ..."
+ pminfo -n mypmns -m | LC_COLLATE=POSIX sort | diff base.out -
+done
+
+echo
+echo "=== all leaves ==="
+cp foo mypmns
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -f -n mypmns mypmns.bin
+fi
+metric=`pminfo -n mypmns | tr '\012' ' '`
+echo "delete: $metric"
+pmnsdel -n mypmns $metric
+echo "diffs ..."
+pminfo -n mypmns -m | LC_COLLATE=POSIX sort | diff base.out -
+
+# all done
+exit
diff --git a/qa/245.out b/qa/245.out
new file mode 100644
index 0000000..2890f10
--- /dev/null
+++ b/qa/245.out
@@ -0,0 +1,127 @@
+QA output created by 245
++++ Errors +++
+
+=== no args ===
+Usage: pmnsdel [options] metricpath [...]
+
+Options:
+ -d, --duplicates duplicate PMIDs are allowed
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -?, --help show this usage message and exit
+
+=== no such PMNS file ===
+Error Parsing ASCII PMNS: Cannot open "no-such-input"
+pmnsdel: Error: pmLoadNameSpace(no-such-input): No such file or directory
+
+=== cannot open existing output file for writing ===
+
+=== cannot create output file ===
+pmnsdel: Error: cannot open PMNS file "mypmns.new" for writing: Permission denied
+
+=== syntax error in input ===
+[mypmns:2] Error Parsing ASCII PMNS: Expected NAME, PMID or }
+ bogus - this is not correct
+ ^
+pmnsdel: Error: pmLoadNameSpace(mypmns): Problems parsing PMNS definitions
+
++++ Common starting PMNS for all remaing tests ...
+one PMID: 1.1.1
+sub0.five PMID: 5.5.5
+sub0.four PMID: 4.4.4
+sub0.sub2.seven PMID: 7.7.7
+sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+sub1.eight PMID: 8.8.8
+sub1.six PMID: 6.6.6
+three PMID: 3.3.3
+two PMID: 2.2.2
+
+=== assorted undefined metricpaths ===
+pmnsdel: Error: metricpath "leaf" not defined in the PMNS
+pmnsdel: Error: metricpath "sub0.no_leaf" not defined in the PMNS
+pmnsdel: Error: metricpath "sub0.sub2.no_leaf" not defined in the PMNS
+pmnsdel: Error: metricpath "sub0.sub2.sub4.no_leaf" not defined in the PMNS
+pmnsdel: Error: metricpath "sub0.sub2.sub4.sub6.no_leaf" not defined in the PMNS
+pmnsdel: Error: metricpath "sub0.sub2.sub4.sub6.no_nonleaf.no_leaf" not defined in the PMNS
+
++++ Operations +++
+
+=== single metric ===
+one:
+diffs ...
+1d0
+< one PMID: 1.1.1
+sub0.sub2.sub4.sub6.nine:
+diffs ...
+5d4
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+sub0.sub2.seven:
+diffs ...
+4d3
+< sub0.sub2.seven PMID: 7.7.7
+
+=== multiple metrics ===
+delete: one sub0.sub2.sub4.sub6.nine sub0.sub2.seven
+diffs ...
+1d0
+< one PMID: 1.1.1
+4,5d2
+< sub0.sub2.seven PMID: 7.7.7
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+
+=== non-leaves ===
+delete: sub0
+diffs ...
+2,5d1
+< sub0.five PMID: 5.5.5
+< sub0.four PMID: 4.4.4
+< sub0.sub2.seven PMID: 7.7.7
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+delete: sub1
+diffs ...
+6,7d5
+< sub1.eight PMID: 8.8.8
+< sub1.six PMID: 6.6.6
+delete: sub0.sub2
+diffs ...
+4,5d3
+< sub0.sub2.seven PMID: 7.7.7
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+delete: sub0.sub2.sub4
+diffs ...
+5d4
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+delete: sub0.sub2.sub4.sub6
+diffs ...
+5d4
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+delete: sub0.sub2
+diffs ...
+4,5d3
+< sub0.sub2.seven PMID: 7.7.7
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+delete: sub1 sub0.sub2.sub4.sub6 sub0
+diffs ...
+2,7d1
+< sub0.five PMID: 5.5.5
+< sub0.four PMID: 4.4.4
+< sub0.sub2.seven PMID: 7.7.7
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+< sub1.eight PMID: 8.8.8
+< sub1.six PMID: 6.6.6
+
+=== all leaves ===
+delete: one sub0.four sub0.sub2.seven sub0.sub2.sub4.sub6.nine sub0.five two three sub1.six sub1.eight
+diffs ...
+1,9c1
+< one PMID: 1.1.1
+< sub0.five PMID: 5.5.5
+< sub0.four PMID: 4.4.4
+< sub0.sub2.seven PMID: 7.7.7
+< sub0.sub2.sub4.sub6.nine PMID: 9.9.9
+< sub1.eight PMID: 8.8.8
+< sub1.six PMID: 6.6.6
+< three PMID: 3.3.3
+< two PMID: 2.2.2
+---
+> PMNS appears to be empty!
diff --git a/qa/246 b/qa/246
new file mode 100755
index 0000000..b50687c
--- /dev/null
+++ b/qa/246
@@ -0,0 +1,89 @@
+#!/bin/sh
+# PCP QA Test No. 246
+#
+# Exercise derived metric memory allocation and freeing around the
+# creating and destroying of contexts.
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+unset PCP_DERIVED_CONFIG
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# Note
+# addresses from malloc are obviously dependent on the implementation
+# but if there is no memory leaks, we expect the SAME addresses to be
+# allocated over and over ... we're arbitrarily picking a pool of
+# up to the first 40 unique addresses we encounter (see the variable
+# PICK in the awk below) and this works for glibc 2.10.1 ... this
+# number may need to be increased for other malloc implementations.
+# 4 Sep 2014 Increased PICK to 50 for glibc-2.14.1 on openSuSE 12.1.
+#
+_filter()
+{
+ echo "--- stdout ---" >>$seq.full
+ cat $tmp.out >>$seq.full
+ echo "--- stderr ---" >>$seq.full
+ cat $tmp.err >>$seq.full
+ # __dmclosecontext(->ctx 8) called dm->0x9216d58 3 metrics
+ cat $tmp.err \
+ | sed \
+ -e 's/(->ctx [0-9][0-9]*)//' \
+ -e 's/->/ /' \
+ | awk >$tmp.sed '
+BEGIN { n = 0; PICK = 50 }
+$1 == "__dmclosecontext" { if (map[$4] != "") next
+ if (n >= PICK) next
+ print "s/" $4 "/<addr>/"
+ map[$4] = 1
+ n++
+ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed <$tmp.err \
+ -e '/bind metric\[[12]] myname.[bc]/d' \
+ -e '/bind metric\[0] myname.a/{
+s/bind metric... //
+s/$/ .../
+}' \
+ -e '/__dmopencontext/s/__dmopencontext:/open/' \
+ -e '/__dmclosecontext/s/__dmclosecontext(->ctx [0-9][0-9]*) called dm->/close /' \
+ -e "s;$tmp;TMP;" \
+ | sed -f $tmp.sed
+
+ cat $tmp.out
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.config
+myname.a = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million + sample.longlong.one + sample.longlong.ten + sample.longlong.hundred + sample.longlong.million
+myname.b = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million - sample.longlong.one - sample.longlong.ten - sample.longlong.hundred - sample.longlong.million
+myname.c= sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten + sample.long.hundred * sample.longlong.hundred + sample.long.million * sample.longlong.million
+End-of-File
+
+src/grind_ctx -D derive -c $tmp.config -s 100 >$tmp.out 2>$tmp.err
+_filter
+
+# success, all done
+exit
diff --git a/qa/246.out b/qa/246.out
new file mode 100644
index 0000000..a7ed2b1
--- /dev/null
+++ b/qa/246.out
@@ -0,0 +1,2105 @@
+QA output created by 246
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] myname.a = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million + sample.longlong.one + sample.longlong.ten + sample.longlong.hundred + sample.longlong.million
+pmRegisterDerived: register metric[1] myname.b = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million - sample.longlong.one - sample.longlong.ten - sample.longlong.hundred - sample.longlong.million
+pmRegisterDerived: register metric[2] myname.c = sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten + sample.long.hundred * sample.longlong.hundred + sample.long.million * sample.longlong.million
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+open myname.a ...
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+close <addr> 3 metrics
+Iteration 99
+Iteration 98
+Iteration 97
+Iteration 96
+Iteration 95
+Iteration 94
+Iteration 93
+Iteration 92
+Iteration 91
+Iteration 90
+Iteration 89
+Iteration 88
+Iteration 87
+Iteration 86
+Iteration 85
+Iteration 84
+Iteration 83
+Iteration 82
+Iteration 81
+Iteration 80
+Iteration 79
+Iteration 78
+Iteration 77
+Iteration 76
+Iteration 75
+Iteration 74
+Iteration 73
+Iteration 72
+Iteration 71
+Iteration 70
+Iteration 69
+Iteration 68
+Iteration 67
+Iteration 66
+Iteration 65
+Iteration 64
+Iteration 63
+Iteration 62
+Iteration 61
+Iteration 60
+Iteration 59
+Iteration 58
+Iteration 57
+Iteration 56
+Iteration 55
+Iteration 54
+Iteration 53
+Iteration 52
+Iteration 51
+Iteration 50
+Iteration 49
+Iteration 48
+Iteration 47
+Iteration 46
+Iteration 45
+Iteration 44
+Iteration 43
+Iteration 42
+Iteration 41
+Iteration 40
+Iteration 39
+Iteration 38
+Iteration 37
+Iteration 36
+Iteration 35
+Iteration 34
+Iteration 33
+Iteration 32
+Iteration 31
+Iteration 30
+Iteration 29
+Iteration 28
+Iteration 27
+Iteration 26
+Iteration 25
+Iteration 24
+Iteration 23
+Iteration 22
+Iteration 21
+Iteration 20
+Iteration 19
+Iteration 18
+Iteration 17
+Iteration 16
+Iteration 15
+Iteration 14
+Iteration 13
+Iteration 12
+Iteration 11
+Iteration 10
+Iteration 9
+Iteration 8
+Iteration 7
+Iteration 6
+Iteration 5
+Iteration 4
+Iteration 3
+Iteration 2
+Iteration 1
+Iteration 0
diff --git a/qa/247 b/qa/247
new file mode 100755
index 0000000..dd03160
--- /dev/null
+++ b/qa/247
@@ -0,0 +1,95 @@
+#!/bin/sh
+# PCP QA Test No. 247
+#
+# Derived metrics - exercise pmDesc processing during bind
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+unset PCP_DERIVED_CONFIG
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ sed <$tmp.out \
+ -e "s;$tmp;TMP;"
+}
+
+# real QA test starts here
+
+pminfo -d sample.pdu sample.recv_pdu sample.xmit_pdu sample.byte_ctr sample.kbyte_ctr sample.long.hundred sample.bin
+
+echo
+echo "No semantic errors here ..."
+cat <<End-of-File >$tmp.config
+myname.a = sample.kbyte_ctr
+myname.b = sample.recv_pdu + sample.xmit_pdu
+myname.c = 123
+myname.d = 123 + sample.long.hundred
+myname.e = sample.pdu / sample.long.hundred
+myname.f = 1024 * sample.byte_ctr
+myname.g = sample.bin + 100 - sample.bin - 100
+myname.h = sample.seconds + sample.milliseconds / 1000
+End-of-File
+
+pminfo -Dderive -d -c $tmp.config myname >$tmp.out 2>&1
+_filter
+
+echo
+echo "Semantic errors ..."
+cat <<End-of-File >$tmp.config
+# no-such-metric
+myname.a = no.such.metric
+# illegal metric
+myname.b = sample.bad.unknown
+# bad semantics - counters and *
+myname.c = disk.dev.read * disk.dev.write
+# bad semantics - counter and non-counter
+myname.d = sample.byte_ctr + sample.long.hundred
+# bad semantics - non-counter and counter
+myname.e = sample.long.hundred - 100 / sample.byte_ctr
+# bad semantics - non-counters ... not possible at the moment
+# bad semantics - non-arithmetic metrics
+myname.f = 3 + sample.lights
+myname.g = sample.sysinfo - 42
+# pmUnits checks and metric semantic checks
+myname.h = disk.dev.total + sample.long.hundred
+myname.i = sample.long.hundred - disk.dev.total
+myname.j = sample.mirage * sample.step_counter
+myname.k = sample.step_counter / sample.mirage_longlong
+# indom checks
+myname.l = sample.bin + sample.darkness
+# from here on down, test cases driven by gcov analysis ...
+myname.gcov.a = 42 + sample.bad.unknown
+myname.gcov.b = (disk.all.total + disk.dev.total) + 42
+myname.gcov.c = 42 - (disk.all.total + disk.dev.total)
+myname.gcov.d = (sample.bin + sample.darkness)+42
+End-of-File
+
+#debug# pminfo -D derive,appl0,appl1 -d -c $tmp.config myname >$tmp.out 2>&1
+pminfo -D derive -d -c $tmp.config myname >$tmp.out 2>&1
+_filter
+
+# success, all done
+exit
diff --git a/qa/247.out b/qa/247.out
new file mode 100644
index 0000000..c3b7e7a
--- /dev/null
+++ b/qa/247.out
@@ -0,0 +1,156 @@
+QA output created by 247
+
+sample.pdu
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+sample.recv_pdu
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+sample.xmit_pdu
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+sample.byte_ctr
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+
+sample.kbyte_ctr
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+
+sample.long.hundred
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+sample.bin
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+
+No semantic errors here ...
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] myname.a = sample.kbyte_ctr
+pmRegisterDerived: register metric[1] myname.b = sample.recv_pdu + sample.xmit_pdu
+pmRegisterDerived: register metric[2] myname.c = 123
+pmRegisterDerived: register metric[3] myname.d = 123 + sample.long.hundred
+pmRegisterDerived: register metric[4] myname.e = sample.pdu / sample.long.hundred
+pmRegisterDerived: register metric[5] myname.f = 1024 * sample.byte_ctr
+pmRegisterDerived: register metric[6] myname.g = sample.bin + 100 - sample.bin - 100
+pmRegisterDerived: register metric[7] myname.h = sample.seconds + sample.milliseconds / 1000
+__dmopencontext: bind metric[0] myname.a
+__dmopencontext: bind metric[1] myname.b
+__dmopencontext: bind metric[2] myname.c
+__dmopencontext: bind metric[3] myname.d
+__dmopencontext: bind metric[4] myname.e
+__dmopencontext: bind metric[5] myname.f
+__dmopencontext: bind metric[6] myname.g
+__dmopencontext: bind metric[7] myname.h
+__dmgetpmid: metric "myname.a" -> PMID 511.0.1
+__dmgetpmid: metric "myname.b" -> PMID 511.0.2
+__dmgetpmid: metric "myname.c" -> PMID 511.0.3
+__dmgetpmid: metric "myname.d" -> PMID 511.0.4
+__dmgetpmid: metric "myname.e" -> PMID 511.0.5
+__dmgetpmid: metric "myname.f" -> PMID 511.0.6
+__dmgetpmid: metric "myname.g" -> PMID 511.0.7
+__dmgetpmid: metric "myname.h" -> PMID 511.0.8
+
+myname.a
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+
+myname.b
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+myname.c
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+myname.d
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+myname.e
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+myname.f
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+
+myname.g
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+
+myname.h
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+
+Semantic errors ...
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] myname.a = no.such.metric
+pmRegisterDerived: register metric[1] myname.b = sample.bad.unknown
+pmRegisterDerived: register metric[2] myname.c = disk.dev.read * disk.dev.write
+pmRegisterDerived: register metric[3] myname.d = sample.byte_ctr + sample.long.hundred
+pmRegisterDerived: register metric[4] myname.e = sample.long.hundred - 100 / sample.byte_ctr
+pmRegisterDerived: register metric[5] myname.f = 3 + sample.lights
+pmRegisterDerived: register metric[6] myname.g = sample.sysinfo - 42
+pmRegisterDerived: register metric[7] myname.h = disk.dev.total + sample.long.hundred
+pmRegisterDerived: register metric[8] myname.i = sample.long.hundred - disk.dev.total
+pmRegisterDerived: register metric[9] myname.j = sample.mirage * sample.step_counter
+pmRegisterDerived: register metric[10] myname.k = sample.step_counter / sample.mirage_longlong
+pmRegisterDerived: register metric[11] myname.l = sample.bin + sample.darkness
+pmRegisterDerived: register metric[12] myname.gcov.a = 42 + sample.bad.unknown
+pmRegisterDerived: register metric[13] myname.gcov.b = (disk.all.total + disk.dev.total) + 42
+pmRegisterDerived: register metric[14] myname.gcov.c = 42 - (disk.all.total + disk.dev.total)
+pmRegisterDerived: register metric[15] myname.gcov.d = (sample.bin + sample.darkness)+42
+__dmgetpmid: metric "no.such.metric" -> Unknown metric name
+bind_expr: error: derived metric myname.a: operand: no.such.metric: Unknown metric name
+bind_expr: error: derived metric myname.b: operand (sample.bad.unknown [29.0.54]): Unknown or illegal metric identifier
+Semantic error: derived metric myname.c: disk.dev.read * disk.dev.write: Illegal operator for counters
+Semantic error: derived metric myname.d: sample.byte_ctr + sample.long.hundred: Illegal operator for counter and non-counter
+Semantic error: derived metric myname.e: 100 / sample.byte_ctr: Illegal operator for non-counter and counter
+Semantic error: derived metric myname.f: 3 + sample.lights: Non-arithmetic type for right operand
+Semantic error: derived metric myname.g: sample.sysinfo - 42: Non-arithmetic type for left operand
+Semantic error: derived metric myname.h: disk.dev.total + sample.long.hundred: Illegal operator for counter and non-counter
+Semantic error: derived metric myname.i: sample.long.hundred - disk.dev.total: Illegal operator for non-counter and counter
+Semantic error: derived metric myname.j: sample.mirage * sample.step_counter: Non-counter and not dimensionless for left operand
+Semantic error: derived metric myname.k: sample.step_counter / sample.mirage_longlong: Non-counter and not dimensionless for right operand
+Semantic error: derived metric myname.l: sample.bin + sample.darkness: Operands should have the same instance domain
+bind_expr: error: derived metric myname.gcov.a: operand (sample.bad.unknown [29.0.54]): Unknown or illegal metric identifier
+Semantic error: derived metric myname.gcov.b: <expr> + 42: Illegal operator for counter and non-counter
+Semantic error: derived metric myname.gcov.c: 42 - <expr>: Illegal operator for non-counter and counter
+Semantic error: derived metric myname.gcov.d: sample.bin + sample.darkness: Operands should have the same instance domain
+__dmgetpmid: metric "myname.a" -> PMID 511.0.1
+__dmgetpmid: metric "myname.b" -> PMID 511.0.2
+__dmgetpmid: metric "myname.c" -> PMID 511.0.3
+__dmgetpmid: metric "myname.d" -> PMID 511.0.4
+__dmgetpmid: metric "myname.e" -> PMID 511.0.5
+__dmgetpmid: metric "myname.f" -> PMID 511.0.6
+__dmgetpmid: metric "myname.g" -> PMID 511.0.7
+__dmgetpmid: metric "myname.h" -> PMID 511.0.8
+__dmgetpmid: metric "myname.i" -> PMID 511.0.9
+__dmgetpmid: metric "myname.j" -> PMID 511.0.10
+__dmgetpmid: metric "myname.k" -> PMID 511.0.11
+__dmgetpmid: metric "myname.l" -> PMID 511.0.12
+__dmgetpmid: metric "myname.gcov.a" -> PMID 511.0.13
+__dmgetpmid: metric "myname.gcov.b" -> PMID 511.0.14
+__dmgetpmid: metric "myname.gcov.c" -> PMID 511.0.15
+__dmgetpmid: metric "myname.gcov.d" -> PMID 511.0.16
+myname.a: pmLookupDesc: Unknown or illegal metric identifier
+myname.b: pmLookupDesc: Unknown or illegal metric identifier
+myname.c: pmLookupDesc: Unknown or illegal metric identifier
+myname.d: pmLookupDesc: Unknown or illegal metric identifier
+myname.e: pmLookupDesc: Unknown or illegal metric identifier
+myname.f: pmLookupDesc: Unknown or illegal metric identifier
+myname.g: pmLookupDesc: Unknown or illegal metric identifier
+myname.h: pmLookupDesc: Unknown or illegal metric identifier
+myname.i: pmLookupDesc: Unknown or illegal metric identifier
+myname.j: pmLookupDesc: Unknown or illegal metric identifier
+myname.k: pmLookupDesc: Unknown or illegal metric identifier
+myname.l: pmLookupDesc: Unknown or illegal metric identifier
+myname.gcov.a: pmLookupDesc: Unknown or illegal metric identifier
+myname.gcov.b: pmLookupDesc: Unknown or illegal metric identifier
+myname.gcov.c: pmLookupDesc: Unknown or illegal metric identifier
+myname.gcov.d: pmLookupDesc: Unknown or illegal metric identifier
diff --git a/qa/248 b/qa/248
new file mode 100755
index 0000000..80ab6df
--- /dev/null
+++ b/qa/248
@@ -0,0 +1,84 @@
+#! /bin/sh
+# PCP QA Test No. 248
+# is pmlogger tolerant of metric lookup within a group?
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out $seq.full
+if [ $PCP_VER -ge 3810 ]
+then
+ ln $seq.out.2 $seq.out
+else
+ ln $seq.out.1 $seq.out
+fi
+
+status=1 # failure by default
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_dump()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^$/d' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/value /{
+s/value [0-9][0-9]*\.[0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*\.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*e.[0-9][0-9]*/value NUMBER/
+s/value [0-9][0-9]*/value NUMBER/
+s/value \[.*]/value AGGREGATE/
+s/value ".*"/value STRING/
+}' \
+ -e "/pmcd\.pmlogger\./s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd\.pmlogger\.port/s/value .*/value PORT/' \
+ -e '/pmcd\.pmlogger\.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd\.pmlogger\.archive/s/value ".*/value "PATH"/'
+}
+
+# real QA test starts here
+
+cat <<End-of-File >$tmp.config
+log advisory on 200 msec {
+ sample.daemon_pid
+ sample.no.such.metric
+ sample.milliseconds
+ sample.bin
+}
+log advisory on 200 msec {
+ sample.bad.unknown
+ sample.milliseconds
+ sample.daemon_pid
+}
+log advisory on 200 msec {
+ sample.daemon_pid
+ sample.bad.unknown # last one in group does it?
+}
+End-of-File
+
+pmlogger -c $tmp.config -s 6 -l $tmp.log $tmp >$tmp.err 2>&1 &
+logger_pid=$!
+wait
+
+cat $tmp.err $tmp.log \
+| tee -a $seq.full \
+| _filter_pmlogger_log \
+| sed \
+ -e "s;$tmp.config;CONFIG;g" \
+ -e 's/line [34]]/line 3-or-4]/' \
+ -e 's/line [89]]/line 8-or-9]/' \
+ -e 's/line 1[45]]/line 14-or-15]/'
+
+pmdumplog $tmp | _filter_dump
+
+# all done, success
+status=0
+exit
diff --git a/qa/248.out.1 b/qa/248.out.1
new file mode 100644
index 0000000..d4c8bab
--- /dev/null
+++ b/qa/248.out.1
@@ -0,0 +1,51 @@
+QA output created by 248
+Log for pmlogger on HOST started DATE
+
+Warning [CONFIG, line 3-or-4]
+Problem with lookup for metric "sample.no.such.metric" ... logging not activated
+Reason: Unknown metric name
+Warning [CONFIG, line 8-or-9]
+Description unavailable for metric "sample.bad.unknown" ... not logged
+Reason: Unknown or illegal metric identifier
+Warning [CONFIG, line 14-or-15]
+Description unavailable for metric "sample.bad.unknown" ... not logged
+Reason: Unknown or illegal metric identifier
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.1 (sample.daemon_pid): value NUMBER
diff --git a/qa/248.out.2 b/qa/248.out.2
new file mode 100644
index 0000000..0d8547e
--- /dev/null
+++ b/qa/248.out.2
@@ -0,0 +1,93 @@
+QA output created by 248
+Log for pmlogger on HOST started DATE
+
+Warning [CONFIG, line 3-or-4]
+Problem with lookup for metric "sample.no.such.metric" ... logging not activated
+Reason: Unknown metric name
+Warning [CONFIG, line 8-or-9]
+Description unavailable for metric "sample.bad.unknown" ... not logged
+Reason: Unknown or illegal metric identifier
+Warning [CONFIG, line 14-or-15]
+Description unavailable for metric "sample.bad.unknown" ... not logged
+Reason: Unknown or illegal metric identifier
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value STRING
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+ 29.0.3 (sample.milliseconds): value NUMBER
+ 29.0.1 (sample.daemon_pid): value NUMBER
diff --git a/qa/249 b/qa/249
new file mode 100755
index 0000000..2680056
--- /dev/null
+++ b/qa/249
@@ -0,0 +1,169 @@
+#!/bin/sh
+# PCP QA Test No. 249
+#
+# Derived metrics - exercise pmFetch processing
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+unset PCP_DERIVED_CONFIG
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# Derived metric expr dump from 0x8513a48...
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+BEGIN { n = 0 }
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e "s;$tmp;TMP;"
+# -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=0
+# ...
+# [0] inst=-1, val=49794
+_filter2()
+{
+ sed <$tmp.out -e 's/val=/val /' \
+ | awk >$tmp.sed2 '
+BEGIN { n = 0 }
+/expr.*sample\./ { want=1; next }
+want == 1 && $3 == "val" { if (seen[$4] != "y") {
+ print "s/ val=" $4 "$/ val=<value-" n ">/"
+ n++
+ seen[$4] = "y"
+ }
+ }
+$1 == "expr" { want = 0 }'
+ echo "=== sed2 ===" >>$seq.full
+ cat $tmp.sed2 >>$seq.full
+ sed -f $tmp.sed2
+}
+
+# real QA test starts here
+
+echo "No errors here ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+# simple constant, no arithmetic
+myname.const = 123456
+# simple renaming to test all data types ... no arithmetic
+myname.a = sample.long.million
+myname.b = sample.longlong.million
+myname.c = sample.float.million
+myname.d = sample.double.million
+myname.e = sample.string.null
+myname.f = sample.string.hullo
+myname.g = sample.string.write_me
+# simple arithmetic
+myname.h = sample.long.million + sample.long.hundred + sample.long.ten + sample.long.one
+myname.i = sample.longlong.million - sample.longlong.hundred - sample.longlong.ten - sample.longlong.one
+myname.j = sample.float.million - sample.float.hundred * sample.float.ten / sample.float.one
+myname.k = sample.long.million - ( sample.float.hundred * sample.double.hundred * sample.longlong.hundred ) + sample.long.one
+# arithmetic over sets of values (instance domains)
+myname.l = sample.bin / 50
+myname.m = 3*sample.bin
+myname.n = sample.bin + sample.bucket*2 - (sample.bin + 100) - sample.bucket
+End-of-File
+echo
+cat $tmp.config
+
+for args in myname.const myname.a myname "myname.a sample.long" \
+ "sample.long myname.a" "sample.longlong myname.a myname.b sample.long" \
+ "sample.string myname.f sample.bin myname"
+do
+ echo | tee -a $seq.full
+ echo "=== $args ===" | tee -a $seq.full
+ pminfo -c $tmp.config -Dfetch,derive,appl2 -f $args >$tmp.out 2>&1
+ _filter
+done
+
+echo | tee -a $seq.full
+echo "All the arithmetic operators and operand types ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+arith.l = sample.load - sample.load + sample.load / sample.load * sample.load - sample.load
+arith.ul = sample.daemon_pid - sample.daemon_pid + sample.daemon_pid / sample.daemon_pid * sample.daemon_pid - sample.daemon_pid
+arith.ll = sample.longlong.hundred - sample.longlong.hundred + sample.longlong.hundred / sample.longlong.hundred * sample.longlong.hundred - sample.longlong.hundred
+arith.ull = sample.ulonglong.hundred - sample.ulonglong.hundred + sample.ulonglong.hundred / sample.ulonglong.hundred * sample.ulonglong.hundred - sample.ulonglong.hundred
+arith.f = sample.float.hundred - sample.float.hundred + sample.float.hundred / sample.float.hundred * sample.float.hundred - sample.float.hundred
+arith.d = sample.double.hundred - sample.double.hundred + sample.double.hundred / sample.double.hundred * sample.double.hundred - sample.double.hundred
+arith.promote.l_l_r_ll = sample.long.one + sample.longlong.hundred
+arith.promote.l_ll_r_l = sample.longlong.hundred + sample.long.one
+arith.promote.l_ll_r_ul = sample.longlong.hundred + sample.ulong.one
+arith.promote.l_ull_r_l = sample.ulonglong.hundred + sample.long.one
+arith.promote.l_l_r_ull = sample.long.one + sample.ulonglong.hundred
+arith.promote.l_ul_r_ull = sample.ulong.one + sample.ulonglong.hundred
+arith.promote.l_ull_r_ul = sample.ulonglong.hundred + sample.ulong.one
+arith.promote.l_l_r_f = sample.long.one + sample.float.hundred
+arith.promote.l_ul_r_f = sample.ulong.one + sample.float.hundred
+arith.promote.l_ll_r_f = sample.longlong.one + sample.float.hundred
+arith.promote.l_ull_r_f = sample.ulonglong.one + sample.float.hundred
+arith.promote.l_f_r_l = sample.float.hundred + sample.long.one
+arith.promote.l_f_r_ul = sample.float.hundred + sample.ulong.one
+arith.promote.l_f_r_ll = sample.float.hundred + sample.longlong.one
+arith.promote.l_f_r_ull = sample.float.hundred + sample.ulonglong.one
+arith.eval.mul.l_l_r_l = sample.long.ten * sample.long.hundred
+arith.eval.mul.l_ull_r_ull = sample.ulonglong.ten * sample.ulonglong.hundred
+arith.eval.div.l_f_r_f = sample.float.hundred / sample.float.ten
+arith.eval.div.l_zero_f_r_f = 0 / sample.float.ten
+arith.eval.div.l_zero_d_r_d = 0 / sample.double.ten
+arith.eval.op.l_err = sample.needprofile + 1
+arith.eval.op.r_err = 1 + sample.needprofile
+End-of-File
+echo
+cat $tmp.config
+
+pminfo -c $tmp.config -Dderive,appl2 -f arith >$tmp.out 2>&1
+_filter <$tmp.out | _filter2
+
+echo | tee -a $seq.full
+echo "Errors and empty results here ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+myname.a = sample.needprofile
+myname.b = 100 + sample.long.hundred * ( 2 - sample.needprofile )
+myname.c = sample.needprofile - sample.not_ready
+myname.d = sample.not_ready - sample.needprofile
+myname.e = sample.noinst
+myname.f = ( sample.long.hundred + sample.long.one ) * ( sample.noinst - 1 )
+End-of-File
+echo
+cat $tmp.config
+
+for args in myname
+do
+ echo | tee -a $seq.full
+ echo "=== $args ===" | tee -a $seq.full
+ pminfo -c $tmp.config -Dfetch,derive,appl0,appl2 -f $args >$tmp.out 2>&1
+ _filter
+done
+
+# success, all done
+exit
diff --git a/qa/249.out b/qa/249.out
new file mode 100644
index 0000000..627ab9e
--- /dev/null
+++ b/qa/249.out
@@ -0,0 +1,2618 @@
+QA output created by 249
+No errors here ...
+
+# simple constant, no arithmetic
+myname.const = 123456
+# simple renaming to test all data types ... no arithmetic
+myname.a = sample.long.million
+myname.b = sample.longlong.million
+myname.c = sample.float.million
+myname.d = sample.double.million
+myname.e = sample.string.null
+myname.f = sample.string.hullo
+myname.g = sample.string.write_me
+# simple arithmetic
+myname.h = sample.long.million + sample.long.hundred + sample.long.ten + sample.long.one
+myname.i = sample.longlong.million - sample.longlong.hundred - sample.longlong.ten - sample.longlong.one
+myname.j = sample.float.million - sample.float.hundred * sample.float.ten / sample.float.one
+myname.k = sample.long.million - ( sample.float.hundred * sample.double.hundred * sample.longlong.hundred ) + sample.long.one
+# arithmetic over sets of values (instance domains)
+myname.l = sample.bin / 50
+myname.m = 3*sample.bin
+myname.n = sample.bin + sample.bucket*2 - (sample.bin + 100) - sample.bucket
+
+=== myname.const ===
+__dmopencontext: bind metric[0] myname.const
+__dmopencontext: bind metric[1] myname.a
+__dmopencontext: bind metric[2] myname.b
+__dmopencontext: bind metric[3] myname.c
+__dmopencontext: bind metric[4] myname.d
+__dmopencontext: bind metric[5] myname.e
+__dmopencontext: bind metric[6] myname.f
+__dmopencontext: bind metric[7] myname.g
+__dmopencontext: bind metric[8] myname.h
+__dmopencontext: bind metric[9] myname.i
+__dmopencontext: bind metric[10] myname.j
+__dmopencontext: bind metric[11] myname.k
+__dmopencontext: bind metric[12] myname.l
+__dmopencontext: bind metric[13] myname.m
+__dmopencontext: bind metric[14] myname.n
+__dmgetpmid: metric "myname.const" -> PMID 511.0.1
+__dmpostfetch: [0] root node 511.0.1: numval=1 vset[0]: inst=-1 u=123456
+expr node <addr-0> type=NUMBER left=(nil) right=(nil) save_last=0 [123456] master=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=123456
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.1 (myname.const): numval: 1 valfmt: 0 vlist[]:
+ value 123456
+
+myname.const
+ value 123456
+
+=== myname.a ===
+__dmopencontext: bind metric[0] myname.const
+__dmopencontext: bind metric[1] myname.a
+__dmopencontext: bind metric[2] myname.b
+__dmopencontext: bind metric[3] myname.c
+__dmopencontext: bind metric[4] myname.d
+__dmopencontext: bind metric[5] myname.e
+__dmopencontext: bind metric[6] myname.f
+__dmopencontext: bind metric[7] myname.g
+__dmopencontext: bind metric[8] myname.h
+__dmopencontext: bind metric[9] myname.i
+__dmopencontext: bind metric[10] myname.j
+__dmopencontext: bind metric[11] myname.k
+__dmopencontext: bind metric[12] myname.l
+__dmopencontext: bind metric[13] myname.m
+__dmopencontext: bind metric[14] myname.n
+__dmgetpmid: metric "myname.a" -> PMID 511.0.2
+derived metrics prefetch added 1 metrics: 29.0.13
+__dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=-1 l=1000000
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.2 (myname.a): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+
+myname.a
+ value 1000000
+
+=== myname ===
+__dmopencontext: bind metric[0] myname.const
+__dmopencontext: bind metric[1] myname.a
+__dmopencontext: bind metric[2] myname.b
+__dmopencontext: bind metric[3] myname.c
+__dmopencontext: bind metric[4] myname.d
+__dmopencontext: bind metric[5] myname.e
+__dmopencontext: bind metric[6] myname.f
+__dmopencontext: bind metric[7] myname.g
+__dmopencontext: bind metric[8] myname.h
+__dmopencontext: bind metric[9] myname.i
+__dmopencontext: bind metric[10] myname.j
+__dmopencontext: bind metric[11] myname.k
+__dmopencontext: bind metric[12] myname.l
+__dmopencontext: bind metric[13] myname.m
+__dmopencontext: bind metric[14] myname.n
+__dmgetpmid: metric "myname.const" -> PMID 511.0.1
+__dmgetpmid: metric "myname.a" -> PMID 511.0.2
+__dmgetpmid: metric "myname.b" -> PMID 511.0.3
+__dmgetpmid: metric "myname.c" -> PMID 511.0.4
+__dmgetpmid: metric "myname.d" -> PMID 511.0.5
+__dmgetpmid: metric "myname.e" -> PMID 511.0.6
+__dmgetpmid: metric "myname.f" -> PMID 511.0.7
+__dmgetpmid: metric "myname.g" -> PMID 511.0.8
+__dmgetpmid: metric "myname.h" -> PMID 511.0.9
+__dmgetpmid: metric "myname.i" -> PMID 511.0.10
+__dmgetpmid: metric "myname.j" -> PMID 511.0.11
+__dmgetpmid: metric "myname.k" -> PMID 511.0.12
+__dmgetpmid: metric "myname.l" -> PMID 511.0.13
+__dmgetpmid: metric "myname.m" -> PMID 511.0.14
+__dmgetpmid: metric "myname.n" -> PMID 511.0.15
+derived metrics prefetch added 19 metrics: 29.0.13 29.0.23 29.0.18 29.0.28 29.0.30 29.0.31 29.0.32 29.0.12 29.0.11 29.0.10 29.0.22 29.0.21 29.0.20 29.0.17 29.0.16 29.0.15 29.0.27 29.0.6 29.0.48
+__dmpostfetch: [0] root node 511.0.1: numval=1 vset[0]: inst=-1 u=123456
+expr node <addr-0> type=NUMBER left=(nil) right=(nil) save_last=0 [123456] master=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=123456
+__dmpostfetch: [1] root node 511.0.2: numval=1 vset[0]: inst=-1 l=1000000
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+__dmpostfetch: [2] root node 511.0.3: numval=1 vset[0]: inst=-1 ll=1000000
+expr node <addr-2> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=0
+ PMID: 29.0.23 (511.0.3 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+__dmpostfetch: [3] root node 511.0.4: numval=1 vset[0]: inst=-1 f=1000000.000000
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.million] master=0
+ PMID: 29.0.18 (511.0.4 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+__dmpostfetch: [4] root node 511.0.5: numval=1 vset[0]: inst=-1 d=1000000.000000
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.million] master=0
+ PMID: 29.0.28 (511.0.5 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+__dmpostfetch: [5] root node 511.0.6: numval=1 vset[0]: inst=-1 cp= (len=1)
+expr node <addr-5> type=NAME left=(nil) right=(nil) save_last=0 [sample.string.null] master=0
+ PMID: 29.0.30 (511.0.6 from pmDesc) numval: 1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=
+__dmpostfetch: [6] root node 511.0.7: numval=1 vset[0]: inst=-1 cp=hullo world! (len=13)
+expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=0 [sample.string.hullo] master=0
+ PMID: 29.0.31 (511.0.7 from pmDesc) numval: 1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=hullo world!
+__dmpostfetch: [7] root node 511.0.8: numval=1 vset[0]: inst=-1 cp=13 (len=3)
+expr node <addr-7> type=NAME left=(nil) right=(nil) save_last=0 [sample.string.write_me] master=0
+ PMID: 29.0.32 (511.0.8 from pmDesc) numval: 1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=13
+__dmpostfetch: [8] root node 511.0.9: numval=1 vset[0]: inst=-1 l=1000111
+expr node <addr-8> type=PLUS left=<addr-9> right=<addr-14> save_last=0
+ PMID: PM_ID_NULL (511.0.9 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000111
+expr node <addr-9> type=PLUS left=<addr-10> right=<addr-13> save_last=0
+ PMID: PM_ID_NULL (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000110
+expr node <addr-10> type=PLUS left=<addr-11> right=<addr-12> save_last=0
+ PMID: PM_ID_NULL (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000100
+expr node <addr-11> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+expr node <addr-12> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=0
+ PMID: 29.0.12 (29.0.12 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-13> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=0
+ PMID: 29.0.11 (29.0.11 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10
+expr node <addr-14> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [9] root node 511.0.10: numval=1 vset[0]: inst=-1 ll=999889
+expr node <addr-15> type=MINUS left=<addr-16> right=<addr-21> save_last=0
+ PMID: PM_ID_NULL (511.0.10 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999889
+expr node <addr-16> type=MINUS left=<addr-17> right=<addr-20> save_last=0
+ PMID: PM_ID_NULL (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999890
+expr node <addr-17> type=MINUS left=<addr-18> right=<addr-19> save_last=0
+ PMID: PM_ID_NULL (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999900
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=0
+ PMID: 29.0.23 (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+expr node <addr-19> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-20> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.ten] master=0
+ PMID: 29.0.21 (29.0.21 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10
+expr node <addr-21> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=0
+ PMID: 29.0.20 (29.0.20 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [10] root node 511.0.11: numval=1 vset[0]: inst=-1 d=999000.000000
+expr node <addr-22> type=MINUS left=<addr-23> right=<addr-24> save_last=0
+ PMID: PM_ID_NULL (511.0.11 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999000
+expr node <addr-23> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.million] master=0
+ PMID: 29.0.18 (29.0.18 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+expr node <addr-24> type=SLASH left=<addr-25> right=<addr-28> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000
+expr node <addr-25> type=STAR left=<addr-26> right=<addr-27> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000
+expr node <addr-26> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-27> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.ten] master=0
+ PMID: 29.0.16 (29.0.16 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10
+expr node <addr-28> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.one] master=0
+ PMID: 29.0.15 (29.0.15 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [11] root node 511.0.12: numval=1 vset[0]: inst=-1 d=1.000000
+expr node <addr-29> type=PLUS left=<addr-30> right=<addr-37> save_last=0
+ PMID: PM_ID_NULL (511.0.12 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+expr node <addr-30> type=MINUS left=<addr-31> right=<addr-32> save_last=0
+ PMID: PM_ID_NULL (29.0.13 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-31> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+expr node <addr-32> type=STAR left=<addr-33> right=<addr-34> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+expr node <addr-33> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-34> type=STAR left=<addr-35> right=<addr-36> save_last=0
+ PMID: PM_ID_NULL (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10000
+expr node <addr-35> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-36> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-37> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [12] root node 511.0.13: numval=9 vset[0]: inst=100 d=2.000000 vset[1]: inst=200 d=4.000000 vset[2]: inst=300 d=6.000000 vset[3]: inst=400 d=8.000000 vset[4]: inst=500 d=10.000000 vset[5]: inst=600 d=12.000000 vset[6]: inst=700 d=14.000000 vset[7]: inst=800 d=16.000000 vset[8]: inst=900 d=18.000000
+expr node <addr-38> type=SLASH left=<addr-39> right=<addr-40> save_last=0
+ PMID: PM_ID_NULL (511.0.13 from pmDesc) numval: 9
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=2
+[1] inst=200, val=4
+[2] inst=300, val=6
+[3] inst=400, val=8
+[4] inst=500, val=10
+[5] inst=600, val=12
+[6] inst=700, val=14
+[7] inst=800, val=16
+[8] inst=900, val=18
+expr node <addr-39> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-40> type=NUMBER left=(nil) right=(nil) save_last=0 [50] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=50
+__dmpostfetch: [13] root node 511.0.14: numval=9 vset[0]: inst=100 u=300 vset[1]: inst=200 u=600 vset[2]: inst=300 u=900 vset[3]: inst=400 u=1200 vset[4]: inst=500 u=1500 vset[5]: inst=600 u=1800 vset[6]: inst=700 u=2100 vset[7]: inst=800 u=2400 vset[8]: inst=900 u=2700
+expr node <addr-41> type=STAR left=<addr-42> right=<addr-43> save_last=0
+ PMID: PM_ID_NULL (511.0.14 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=300
+[1] inst=200, val=600
+[2] inst=300, val=900
+[3] inst=400, val=1200
+[4] inst=500, val=1500
+[5] inst=600, val=1800
+[6] inst=700, val=2100
+[7] inst=800, val=2400
+[8] inst=900, val=2700
+expr node <addr-42> type=NUMBER left=(nil) right=(nil) save_last=0 [3] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=3
+expr node <addr-43> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+__dmpostfetch: [14] root node 511.0.15: numval=9 vset[0]: inst=100 u=0 vset[1]: inst=200 u=100 vset[2]: inst=300 u=200 vset[3]: inst=400 u=300 vset[4]: inst=500 u=400 vset[5]: inst=600 u=500 vset[6]: inst=700 u=600 vset[7]: inst=800 u=700 vset[8]: inst=900 u=800
+expr node <addr-44> type=MINUS left=<addr-45> right=<addr-54> save_last=0
+ PMID: PM_ID_NULL (511.0.15 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=0
+[1] inst=200, val=100
+[2] inst=300, val=200
+[3] inst=400, val=300
+[4] inst=500, val=400
+[5] inst=600, val=500
+[6] inst=700, val=600
+[7] inst=800, val=700
+[8] inst=900, val=800
+expr node <addr-45> type=MINUS left=<addr-46> right=<addr-51> save_last=0
+ PMID: PM_ID_NULL (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=300
+[2] inst=300, val=500
+[3] inst=400, val=700
+[4] inst=500, val=900
+[5] inst=600, val=1100
+[6] inst=700, val=1300
+[7] inst=800, val=1500
+[8] inst=900, val=1700
+expr node <addr-46> type=PLUS left=<addr-47> right=<addr-48> save_last=0
+ PMID: PM_ID_NULL (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=300
+[1] inst=200, val=600
+[2] inst=300, val=900
+[3] inst=400, val=1200
+[4] inst=500, val=1500
+[5] inst=600, val=1800
+[6] inst=700, val=2100
+[7] inst=800, val=2400
+[8] inst=900, val=2700
+expr node <addr-47> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-48> type=STAR left=<addr-49> right=<addr-50> save_last=0
+ PMID: PM_ID_NULL (29.0.48 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=200, val=400
+[2] inst=300, val=600
+[3] inst=400, val=800
+[4] inst=500, val=1000
+[5] inst=600, val=1200
+[6] inst=700, val=1400
+[7] inst=800, val=1600
+[8] inst=900, val=1800
+expr node <addr-49> type=NAME left=(nil) right=(nil) save_last=0 [sample.bucket] master=0
+ PMID: 29.0.48 (29.0.48 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-50> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=2
+expr node <addr-51> type=PLUS left=<addr-52> right=<addr-53> save_last=0
+ PMID: PM_ID_NULL (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=200, val=300
+[2] inst=300, val=400
+[3] inst=400, val=500
+[4] inst=500, val=600
+[5] inst=600, val=700
+[6] inst=700, val=800
+[7] inst=800, val=900
+[8] inst=900, val=1000
+expr node <addr-52> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-53> type=NUMBER left=(nil) right=(nil) save_last=0 [100] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=100
+expr node <addr-54> type=NAME left=(nil) right=(nil) save_last=0 [sample.bucket] master=0
+ PMID: 29.0.48 (29.0.48 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+pmFetch returns ...
+TIMESTAMP ... numpmid: 15
+ 511.0.1 (myname.const): numval: 1 valfmt: 0 vlist[]:
+ value 123456
+ 511.0.2 (myname.a): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+ 511.0.3 (myname.b): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 511.0.4 (myname.c): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 511.0.5 (myname.d): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 511.0.6 (myname.e): numval: 1 valfmt: 1 vlist[]:
+ value ""
+ 511.0.7 (myname.f): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!"
+ 511.0.8 (myname.g): numval: 1 valfmt: 1 vlist[]:
+ value "13"
+ 511.0.9 (myname.h): numval: 1 valfmt: 0 vlist[]:
+ value 1000111
+ 511.0.10 (myname.i): numval: 1 valfmt: 1 vlist[]:
+ value 999889
+ 511.0.11 (myname.j): numval: 1 valfmt: 1 vlist[]:
+ value 999000
+ 511.0.12 (myname.k): numval: 1 valfmt: 1 vlist[]:
+ value 1
+ 511.0.13 (myname.l): numval: 9 valfmt: 1 vlist[]:
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+ 511.0.14 (myname.m): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 300
+ inst [200 or "bin-200"] value 600
+ inst [300 or "bin-300"] value 900
+ inst [400 or "bin-400"] value 1200
+ inst [500 or "bin-500"] value 1500
+ inst [600 or "bin-600"] value 1800
+ inst [700 or "bin-700"] value 2100
+ inst [800 or "bin-800"] value 2400
+ inst [900 or "bin-900"] value 2700
+ 511.0.15 (myname.n): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 0
+ inst [200 or "bin-200"] value 100
+ inst [300 or "bin-300"] value 200
+ inst [400 or "bin-400"] value 300
+ inst [500 or "bin-500"] value 400
+ inst [600 or "bin-600"] value 500
+ inst [700 or "bin-700"] value 600
+ inst [800 or "bin-800"] value 700
+ inst [900 or "bin-900"] value 800
+
+myname.const
+ value 123456
+
+myname.a
+ value 1000000
+
+myname.b
+ value 1000000
+
+myname.c
+ value 1000000
+
+myname.d
+ value 1000000
+
+myname.e
+ value ""
+
+myname.f
+ value "hullo world!"
+
+myname.g
+ value "13"
+
+myname.h
+ value 1000111
+
+myname.i
+ value 999889
+
+myname.j
+ value 999000
+
+myname.k
+ value 1
+
+myname.l
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+
+myname.m
+ inst [100 or "bin-100"] value 300
+ inst [200 or "bin-200"] value 600
+ inst [300 or "bin-300"] value 900
+ inst [400 or "bin-400"] value 1200
+ inst [500 or "bin-500"] value 1500
+ inst [600 or "bin-600"] value 1800
+ inst [700 or "bin-700"] value 2100
+ inst [800 or "bin-800"] value 2400
+ inst [900 or "bin-900"] value 2700
+
+myname.n
+ inst [100 or "bin-100"] value 0
+ inst [200 or "bin-200"] value 100
+ inst [300 or "bin-300"] value 200
+ inst [400 or "bin-400"] value 300
+ inst [500 or "bin-500"] value 400
+ inst [600 or "bin-600"] value 500
+ inst [700 or "bin-700"] value 600
+ inst [800 or "bin-800"] value 700
+ inst [900 or "bin-900"] value 800
+
+=== myname.a sample.long ===
+__dmopencontext: bind metric[0] myname.const
+__dmopencontext: bind metric[1] myname.a
+__dmopencontext: bind metric[2] myname.b
+__dmopencontext: bind metric[3] myname.c
+__dmopencontext: bind metric[4] myname.d
+__dmopencontext: bind metric[5] myname.e
+__dmopencontext: bind metric[6] myname.f
+__dmopencontext: bind metric[7] myname.g
+__dmopencontext: bind metric[8] myname.h
+__dmopencontext: bind metric[9] myname.i
+__dmopencontext: bind metric[10] myname.j
+__dmopencontext: bind metric[11] myname.k
+__dmopencontext: bind metric[12] myname.l
+__dmopencontext: bind metric[13] myname.m
+__dmopencontext: bind metric[14] myname.n
+__dmgetpmid: metric "myname.a" -> PMID 511.0.2
+__dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=-1 l=1000000
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+pmFetch returns ...
+TIMESTAMP ... numpmid: 8
+ 511.0.2 (myname.a): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+ 29.0.10 (sample.long.one): numval: 1 valfmt: 0 vlist[]:
+ value 1
+ 29.0.11 (sample.long.ten): numval: 1 valfmt: 0 vlist[]:
+ value 10
+ 29.0.12 (sample.long.hundred): numval: 1 valfmt: 0 vlist[]:
+ value 100
+ 29.0.13 (sample.long.million): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+ 29.0.14 (sample.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value 13
+ 29.0.103 (sample.long.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 29.0.104 (sample.long.bin_ctr): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+myname.a
+ value 1000000
+
+sample.long.one
+ value 1
+
+sample.long.ten
+ value 10
+
+sample.long.hundred
+ value 100
+
+sample.long.million
+ value 1000000
+
+sample.long.write_me
+ value 13
+
+sample.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+=== sample.long myname.a ===
+__dmopencontext: bind metric[0] myname.const
+__dmopencontext: bind metric[1] myname.a
+__dmopencontext: bind metric[2] myname.b
+__dmopencontext: bind metric[3] myname.c
+__dmopencontext: bind metric[4] myname.d
+__dmopencontext: bind metric[5] myname.e
+__dmopencontext: bind metric[6] myname.f
+__dmopencontext: bind metric[7] myname.g
+__dmopencontext: bind metric[8] myname.h
+__dmopencontext: bind metric[9] myname.i
+__dmopencontext: bind metric[10] myname.j
+__dmopencontext: bind metric[11] myname.k
+__dmopencontext: bind metric[12] myname.l
+__dmopencontext: bind metric[13] myname.m
+__dmopencontext: bind metric[14] myname.n
+__dmgetpmid: metric "myname.a" -> PMID 511.0.2
+__dmpostfetch: [7] root node 511.0.2: numval=1 vset[0]: inst=-1 l=1000000
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+pmFetch returns ...
+TIMESTAMP ... numpmid: 8
+ 29.0.10 (sample.long.one): numval: 1 valfmt: 0 vlist[]:
+ value 1
+ 29.0.11 (sample.long.ten): numval: 1 valfmt: 0 vlist[]:
+ value 10
+ 29.0.12 (sample.long.hundred): numval: 1 valfmt: 0 vlist[]:
+ value 100
+ 29.0.13 (sample.long.million): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+ 29.0.14 (sample.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value 13
+ 29.0.103 (sample.long.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 29.0.104 (sample.long.bin_ctr): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 511.0.2 (myname.a): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+
+sample.long.one
+ value 1
+
+sample.long.ten
+ value 10
+
+sample.long.hundred
+ value 100
+
+sample.long.million
+ value 1000000
+
+sample.long.write_me
+ value 13
+
+sample.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+myname.a
+ value 1000000
+
+=== sample.longlong myname.a myname.b sample.long ===
+__dmopencontext: bind metric[0] myname.const
+__dmopencontext: bind metric[1] myname.a
+__dmopencontext: bind metric[2] myname.b
+__dmopencontext: bind metric[3] myname.c
+__dmopencontext: bind metric[4] myname.d
+__dmopencontext: bind metric[5] myname.e
+__dmopencontext: bind metric[6] myname.f
+__dmopencontext: bind metric[7] myname.g
+__dmopencontext: bind metric[8] myname.h
+__dmopencontext: bind metric[9] myname.i
+__dmopencontext: bind metric[10] myname.j
+__dmopencontext: bind metric[11] myname.k
+__dmopencontext: bind metric[12] myname.l
+__dmopencontext: bind metric[13] myname.m
+__dmopencontext: bind metric[14] myname.n
+__dmgetpmid: metric "myname.a" -> PMID 511.0.2
+__dmgetpmid: metric "myname.b" -> PMID 511.0.3
+__dmpostfetch: [7] root node 511.0.2: numval=1 vset[0]: inst=-1 l=1000000
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+__dmpostfetch: [8] root node 511.0.3: numval=1 vset[0]: inst=-1 ll=1000000
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=0
+ PMID: 29.0.23 (511.0.3 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+pmFetch returns ...
+TIMESTAMP ... numpmid: 16
+ 29.0.20 (sample.longlong.one): numval: 1 valfmt: 1 vlist[]:
+ value 1
+ 29.0.21 (sample.longlong.ten): numval: 1 valfmt: 1 vlist[]:
+ value 10
+ 29.0.22 (sample.longlong.hundred): numval: 1 valfmt: 1 vlist[]:
+ value 100
+ 29.0.23 (sample.longlong.million): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 29.0.24 (sample.longlong.write_me): numval: 1 valfmt: 1 vlist[]:
+ value 13
+ 29.0.109 (sample.longlong.bin): numval: 9 valfmt: 1 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 29.0.110 (sample.longlong.bin_ctr): numval: 9 valfmt: 1 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 511.0.2 (myname.a): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+ 511.0.3 (myname.b): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 29.0.10 (sample.long.one): numval: 1 valfmt: 0 vlist[]:
+ value 1
+ 29.0.11 (sample.long.ten): numval: 1 valfmt: 0 vlist[]:
+ value 10
+ 29.0.12 (sample.long.hundred): numval: 1 valfmt: 0 vlist[]:
+ value 100
+ 29.0.13 (sample.long.million): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+ 29.0.14 (sample.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value 13
+ 29.0.103 (sample.long.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 29.0.104 (sample.long.bin_ctr): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.longlong.one
+ value 1
+
+sample.longlong.ten
+ value 10
+
+sample.longlong.hundred
+ value 100
+
+sample.longlong.million
+ value 1000000
+
+sample.longlong.write_me
+ value 13
+
+sample.longlong.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.longlong.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+myname.a
+ value 1000000
+
+myname.b
+ value 1000000
+
+sample.long.one
+ value 1
+
+sample.long.ten
+ value 10
+
+sample.long.hundred
+ value 100
+
+sample.long.million
+ value 1000000
+
+sample.long.write_me
+ value 13
+
+sample.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+=== sample.string myname.f sample.bin myname ===
+__dmopencontext: bind metric[0] myname.const
+__dmopencontext: bind metric[1] myname.a
+__dmopencontext: bind metric[2] myname.b
+__dmopencontext: bind metric[3] myname.c
+__dmopencontext: bind metric[4] myname.d
+__dmopencontext: bind metric[5] myname.e
+__dmopencontext: bind metric[6] myname.f
+__dmopencontext: bind metric[7] myname.g
+__dmopencontext: bind metric[8] myname.h
+__dmopencontext: bind metric[9] myname.i
+__dmopencontext: bind metric[10] myname.j
+__dmopencontext: bind metric[11] myname.k
+__dmopencontext: bind metric[12] myname.l
+__dmopencontext: bind metric[13] myname.m
+__dmopencontext: bind metric[14] myname.n
+__dmgetpmid: metric "myname.f" -> PMID 511.0.7
+__dmgetpmid: metric "myname.const" -> PMID 511.0.1
+__dmgetpmid: metric "myname.a" -> PMID 511.0.2
+__dmgetpmid: metric "myname.b" -> PMID 511.0.3
+__dmgetpmid: metric "myname.c" -> PMID 511.0.4
+__dmgetpmid: metric "myname.d" -> PMID 511.0.5
+__dmgetpmid: metric "myname.e" -> PMID 511.0.6
+__dmgetpmid: metric "myname.f" -> PMID 511.0.7
+__dmgetpmid: metric "myname.g" -> PMID 511.0.8
+__dmgetpmid: metric "myname.h" -> PMID 511.0.9
+__dmgetpmid: metric "myname.i" -> PMID 511.0.10
+__dmgetpmid: metric "myname.j" -> PMID 511.0.11
+__dmgetpmid: metric "myname.k" -> PMID 511.0.12
+__dmgetpmid: metric "myname.l" -> PMID 511.0.13
+__dmgetpmid: metric "myname.m" -> PMID 511.0.14
+__dmgetpmid: metric "myname.n" -> PMID 511.0.15
+derived metrics prefetch added 15 metrics: 29.0.13 29.0.23 29.0.18 29.0.28 29.0.12 29.0.11 29.0.10 29.0.22 29.0.21 29.0.20 29.0.17 29.0.16 29.0.15 29.0.27 29.0.48
+__dmpostfetch: [3] root node 511.0.7: numval=1 vset[0]: inst=-1 cp=hullo world! (len=13)
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.string.hullo] master=0
+ PMID: 29.0.31 (511.0.7 from pmDesc) numval: 1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=hullo world!
+__dmpostfetch: [5] root node 511.0.1: numval=1 vset[0]: inst=-1 u=123456
+expr node <addr-1> type=NUMBER left=(nil) right=(nil) save_last=0 [123456] master=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=123456
+__dmpostfetch: [6] root node 511.0.2: numval=1 vset[0]: inst=-1 l=1000000
+expr node <addr-2> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+__dmpostfetch: [7] root node 511.0.3: numval=1 vset[0]: inst=-1 ll=1000000
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=0
+ PMID: 29.0.23 (511.0.3 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+__dmpostfetch: [8] root node 511.0.4: numval=1 vset[0]: inst=-1 f=1000000.000000
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.million] master=0
+ PMID: 29.0.18 (511.0.4 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+__dmpostfetch: [9] root node 511.0.5: numval=1 vset[0]: inst=-1 d=1000000.000000
+expr node <addr-5> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.million] master=0
+ PMID: 29.0.28 (511.0.5 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+__dmpostfetch: [10] root node 511.0.6: numval=1 vset[0]: inst=-1 cp= (len=1)
+expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=0 [sample.string.null] master=0
+ PMID: 29.0.30 (511.0.6 from pmDesc) numval: 1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=
+__dmpostfetch: [11] root node 511.0.7: numval=1 vset[0]: inst=-1 cp=hullo world! (len=13)
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.string.hullo] master=0
+ PMID: 29.0.31 (511.0.7 from pmDesc) numval: 1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=hullo world!
+__dmpostfetch: [12] root node 511.0.8: numval=1 vset[0]: inst=-1 cp=13 (len=3)
+expr node <addr-8> type=NAME left=(nil) right=(nil) save_last=0 [sample.string.write_me] master=0
+ PMID: 29.0.32 (511.0.8 from pmDesc) numval: 1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=13
+__dmpostfetch: [13] root node 511.0.9: numval=1 vset[0]: inst=-1 l=1000111
+expr node <addr-9> type=PLUS left=<addr-10> right=<addr-15> save_last=0
+ PMID: PM_ID_NULL (511.0.9 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000111
+expr node <addr-10> type=PLUS left=<addr-11> right=<addr-14> save_last=0
+ PMID: PM_ID_NULL (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000110
+expr node <addr-11> type=PLUS left=<addr-12> right=<addr-13> save_last=0
+ PMID: PM_ID_NULL (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000100
+expr node <addr-12> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+expr node <addr-13> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=0
+ PMID: 29.0.12 (29.0.12 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-14> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=0
+ PMID: 29.0.11 (29.0.11 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10
+expr node <addr-15> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [14] root node 511.0.10: numval=1 vset[0]: inst=-1 ll=999889
+expr node <addr-16> type=MINUS left=<addr-17> right=<addr-22> save_last=0
+ PMID: PM_ID_NULL (511.0.10 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999889
+expr node <addr-17> type=MINUS left=<addr-18> right=<addr-21> save_last=0
+ PMID: PM_ID_NULL (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999890
+expr node <addr-18> type=MINUS left=<addr-19> right=<addr-20> save_last=0
+ PMID: PM_ID_NULL (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999900
+expr node <addr-19> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.million] master=0
+ PMID: 29.0.23 (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+expr node <addr-20> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-21> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.ten] master=0
+ PMID: 29.0.21 (29.0.21 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10
+expr node <addr-22> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=0
+ PMID: 29.0.20 (29.0.20 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [15] root node 511.0.11: numval=1 vset[0]: inst=-1 d=999000.000000
+expr node <addr-23> type=MINUS left=<addr-24> right=<addr-25> save_last=0
+ PMID: PM_ID_NULL (511.0.11 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=999000
+expr node <addr-24> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.million] master=0
+ PMID: 29.0.18 (29.0.18 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+expr node <addr-25> type=SLASH left=<addr-26> right=<addr-29> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000
+expr node <addr-26> type=STAR left=<addr-27> right=<addr-28> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000
+expr node <addr-27> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-28> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.ten] master=0
+ PMID: 29.0.16 (29.0.16 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10
+expr node <addr-29> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.one] master=0
+ PMID: 29.0.15 (29.0.15 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [16] root node 511.0.12: numval=1 vset[0]: inst=-1 d=1.000000
+expr node <addr-30> type=PLUS left=<addr-31> right=<addr-38> save_last=0
+ PMID: PM_ID_NULL (511.0.12 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+expr node <addr-31> type=MINUS left=<addr-32> right=<addr-33> save_last=0
+ PMID: PM_ID_NULL (29.0.13 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-32> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (29.0.13 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000000
+expr node <addr-33> type=STAR left=<addr-34> right=<addr-35> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1e+06
+expr node <addr-34> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-35> type=STAR left=<addr-36> right=<addr-37> save_last=0
+ PMID: PM_ID_NULL (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=10000
+expr node <addr-36> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-37> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-38> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+__dmpostfetch: [17] root node 511.0.13: numval=9 vset[0]: inst=100 d=2.000000 vset[1]: inst=200 d=4.000000 vset[2]: inst=300 d=6.000000 vset[3]: inst=400 d=8.000000 vset[4]: inst=500 d=10.000000 vset[5]: inst=600 d=12.000000 vset[6]: inst=700 d=14.000000 vset[7]: inst=800 d=16.000000 vset[8]: inst=900 d=18.000000
+expr node <addr-39> type=SLASH left=<addr-40> right=<addr-41> save_last=0
+ PMID: PM_ID_NULL (511.0.13 from pmDesc) numval: 9
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=2
+[1] inst=200, val=4
+[2] inst=300, val=6
+[3] inst=400, val=8
+[4] inst=500, val=10
+[5] inst=600, val=12
+[6] inst=700, val=14
+[7] inst=800, val=16
+[8] inst=900, val=18
+expr node <addr-40> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-41> type=NUMBER left=(nil) right=(nil) save_last=0 [50] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=50
+__dmpostfetch: [18] root node 511.0.14: numval=9 vset[0]: inst=100 u=300 vset[1]: inst=200 u=600 vset[2]: inst=300 u=900 vset[3]: inst=400 u=1200 vset[4]: inst=500 u=1500 vset[5]: inst=600 u=1800 vset[6]: inst=700 u=2100 vset[7]: inst=800 u=2400 vset[8]: inst=900 u=2700
+expr node <addr-42> type=STAR left=<addr-43> right=<addr-44> save_last=0
+ PMID: PM_ID_NULL (511.0.14 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=300
+[1] inst=200, val=600
+[2] inst=300, val=900
+[3] inst=400, val=1200
+[4] inst=500, val=1500
+[5] inst=600, val=1800
+[6] inst=700, val=2100
+[7] inst=800, val=2400
+[8] inst=900, val=2700
+expr node <addr-43> type=NUMBER left=(nil) right=(nil) save_last=0 [3] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=3
+expr node <addr-44> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+__dmpostfetch: [19] root node 511.0.15: numval=9 vset[0]: inst=100 u=0 vset[1]: inst=200 u=100 vset[2]: inst=300 u=200 vset[3]: inst=400 u=300 vset[4]: inst=500 u=400 vset[5]: inst=600 u=500 vset[6]: inst=700 u=600 vset[7]: inst=800 u=700 vset[8]: inst=900 u=800
+expr node <addr-45> type=MINUS left=<addr-46> right=<addr-55> save_last=0
+ PMID: PM_ID_NULL (511.0.15 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=0
+[1] inst=200, val=100
+[2] inst=300, val=200
+[3] inst=400, val=300
+[4] inst=500, val=400
+[5] inst=600, val=500
+[6] inst=700, val=600
+[7] inst=800, val=700
+[8] inst=900, val=800
+expr node <addr-46> type=MINUS left=<addr-47> right=<addr-52> save_last=0
+ PMID: PM_ID_NULL (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=300
+[2] inst=300, val=500
+[3] inst=400, val=700
+[4] inst=500, val=900
+[5] inst=600, val=1100
+[6] inst=700, val=1300
+[7] inst=800, val=1500
+[8] inst=900, val=1700
+expr node <addr-47> type=PLUS left=<addr-48> right=<addr-49> save_last=0
+ PMID: PM_ID_NULL (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=300
+[1] inst=200, val=600
+[2] inst=300, val=900
+[3] inst=400, val=1200
+[4] inst=500, val=1500
+[5] inst=600, val=1800
+[6] inst=700, val=2100
+[7] inst=800, val=2400
+[8] inst=900, val=2700
+expr node <addr-48> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-49> type=STAR left=<addr-50> right=<addr-51> save_last=0
+ PMID: PM_ID_NULL (29.0.48 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=200, val=400
+[2] inst=300, val=600
+[3] inst=400, val=800
+[4] inst=500, val=1000
+[5] inst=600, val=1200
+[6] inst=700, val=1400
+[7] inst=800, val=1600
+[8] inst=900, val=1800
+expr node <addr-50> type=NAME left=(nil) right=(nil) save_last=0 [sample.bucket] master=0
+ PMID: 29.0.48 (29.0.48 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-51> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=2
+expr node <addr-52> type=PLUS left=<addr-53> right=<addr-54> save_last=0
+ PMID: PM_ID_NULL (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=200, val=300
+[2] inst=300, val=400
+[3] inst=400, val=500
+[4] inst=500, val=600
+[5] inst=600, val=700
+[6] inst=700, val=800
+[7] inst=800, val=900
+[8] inst=900, val=1000
+expr node <addr-53> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-54> type=NUMBER left=(nil) right=(nil) save_last=0 [100] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=100
+expr node <addr-55> type=NAME left=(nil) right=(nil) save_last=0 [sample.bucket] master=0
+ PMID: 29.0.48 (29.0.48 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+pmFetch returns ...
+TIMESTAMP ... numpmid: 20
+ 29.0.30 (sample.string.null): numval: 1 valfmt: 1 vlist[]:
+ value ""
+ 29.0.31 (sample.string.hullo): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!"
+ 29.0.32 (sample.string.write_me): numval: 1 valfmt: 1 vlist[]:
+ value "13"
+ 511.0.7 (myname.f): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!"
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 511.0.1 (myname.const): numval: 1 valfmt: 0 vlist[]:
+ value 123456
+ 511.0.2 (myname.a): numval: 1 valfmt: 0 vlist[]:
+ value 1000000
+ 511.0.3 (myname.b): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 511.0.4 (myname.c): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 511.0.5 (myname.d): numval: 1 valfmt: 1 vlist[]:
+ value 1000000
+ 511.0.6 (myname.e): numval: 1 valfmt: 1 vlist[]:
+ value ""
+ 511.0.7 (myname.f): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!"
+ 511.0.8 (myname.g): numval: 1 valfmt: 1 vlist[]:
+ value "13"
+ 511.0.9 (myname.h): numval: 1 valfmt: 0 vlist[]:
+ value 1000111
+ 511.0.10 (myname.i): numval: 1 valfmt: 1 vlist[]:
+ value 999889
+ 511.0.11 (myname.j): numval: 1 valfmt: 1 vlist[]:
+ value 999000
+ 511.0.12 (myname.k): numval: 1 valfmt: 1 vlist[]:
+ value 1
+ 511.0.13 (myname.l): numval: 9 valfmt: 1 vlist[]:
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+ 511.0.14 (myname.m): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 300
+ inst [200 or "bin-200"] value 600
+ inst [300 or "bin-300"] value 900
+ inst [400 or "bin-400"] value 1200
+ inst [500 or "bin-500"] value 1500
+ inst [600 or "bin-600"] value 1800
+ inst [700 or "bin-700"] value 2100
+ inst [800 or "bin-800"] value 2400
+ inst [900 or "bin-900"] value 2700
+ 511.0.15 (myname.n): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value 0
+ inst [200 or "bin-200"] value 100
+ inst [300 or "bin-300"] value 200
+ inst [400 or "bin-400"] value 300
+ inst [500 or "bin-500"] value 400
+ inst [600 or "bin-600"] value 500
+ inst [700 or "bin-700"] value 600
+ inst [800 or "bin-800"] value 700
+ inst [900 or "bin-900"] value 800
+
+sample.string.null
+ value ""
+
+sample.string.hullo
+ value "hullo world!"
+
+sample.string.write_me
+ value "13"
+
+myname.f
+ value "hullo world!"
+
+sample.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+myname.const
+ value 123456
+
+myname.a
+ value 1000000
+
+myname.b
+ value 1000000
+
+myname.c
+ value 1000000
+
+myname.d
+ value 1000000
+
+myname.e
+ value ""
+
+myname.f
+ value "hullo world!"
+
+myname.g
+ value "13"
+
+myname.h
+ value 1000111
+
+myname.i
+ value 999889
+
+myname.j
+ value 999000
+
+myname.k
+ value 1
+
+myname.l
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+
+myname.m
+ inst [100 or "bin-100"] value 300
+ inst [200 or "bin-200"] value 600
+ inst [300 or "bin-300"] value 900
+ inst [400 or "bin-400"] value 1200
+ inst [500 or "bin-500"] value 1500
+ inst [600 or "bin-600"] value 1800
+ inst [700 or "bin-700"] value 2100
+ inst [800 or "bin-800"] value 2400
+ inst [900 or "bin-900"] value 2700
+
+myname.n
+ inst [100 or "bin-100"] value 0
+ inst [200 or "bin-200"] value 100
+ inst [300 or "bin-300"] value 200
+ inst [400 or "bin-400"] value 300
+ inst [500 or "bin-500"] value 400
+ inst [600 or "bin-600"] value 500
+ inst [700 or "bin-700"] value 600
+ inst [800 or "bin-800"] value 700
+ inst [900 or "bin-900"] value 800
+
+All the arithmetic operators and operand types ...
+
+arith.l = sample.load - sample.load + sample.load / sample.load * sample.load - sample.load
+arith.ul = sample.daemon_pid - sample.daemon_pid + sample.daemon_pid / sample.daemon_pid * sample.daemon_pid - sample.daemon_pid
+arith.ll = sample.longlong.hundred - sample.longlong.hundred + sample.longlong.hundred / sample.longlong.hundred * sample.longlong.hundred - sample.longlong.hundred
+arith.ull = sample.ulonglong.hundred - sample.ulonglong.hundred + sample.ulonglong.hundred / sample.ulonglong.hundred * sample.ulonglong.hundred - sample.ulonglong.hundred
+arith.f = sample.float.hundred - sample.float.hundred + sample.float.hundred / sample.float.hundred * sample.float.hundred - sample.float.hundred
+arith.d = sample.double.hundred - sample.double.hundred + sample.double.hundred / sample.double.hundred * sample.double.hundred - sample.double.hundred
+arith.promote.l_l_r_ll = sample.long.one + sample.longlong.hundred
+arith.promote.l_ll_r_l = sample.longlong.hundred + sample.long.one
+arith.promote.l_ll_r_ul = sample.longlong.hundred + sample.ulong.one
+arith.promote.l_ull_r_l = sample.ulonglong.hundred + sample.long.one
+arith.promote.l_l_r_ull = sample.long.one + sample.ulonglong.hundred
+arith.promote.l_ul_r_ull = sample.ulong.one + sample.ulonglong.hundred
+arith.promote.l_ull_r_ul = sample.ulonglong.hundred + sample.ulong.one
+arith.promote.l_l_r_f = sample.long.one + sample.float.hundred
+arith.promote.l_ul_r_f = sample.ulong.one + sample.float.hundred
+arith.promote.l_ll_r_f = sample.longlong.one + sample.float.hundred
+arith.promote.l_ull_r_f = sample.ulonglong.one + sample.float.hundred
+arith.promote.l_f_r_l = sample.float.hundred + sample.long.one
+arith.promote.l_f_r_ul = sample.float.hundred + sample.ulong.one
+arith.promote.l_f_r_ll = sample.float.hundred + sample.longlong.one
+arith.promote.l_f_r_ull = sample.float.hundred + sample.ulonglong.one
+arith.eval.mul.l_l_r_l = sample.long.ten * sample.long.hundred
+arith.eval.mul.l_ull_r_ull = sample.ulonglong.ten * sample.ulonglong.hundred
+arith.eval.div.l_f_r_f = sample.float.hundred / sample.float.ten
+arith.eval.div.l_zero_f_r_f = 0 / sample.float.ten
+arith.eval.div.l_zero_d_r_d = 0 / sample.double.ten
+arith.eval.op.l_err = sample.needprofile + 1
+arith.eval.op.r_err = 1 + sample.needprofile
+__dmopencontext: bind metric[0] arith.l
+__dmopencontext: bind metric[1] arith.ul
+__dmopencontext: bind metric[2] arith.ll
+__dmopencontext: bind metric[3] arith.ull
+__dmopencontext: bind metric[4] arith.f
+__dmopencontext: bind metric[5] arith.d
+__dmopencontext: bind metric[6] arith.promote.l_l_r_ll
+__dmopencontext: bind metric[7] arith.promote.l_ll_r_l
+__dmopencontext: bind metric[8] arith.promote.l_ll_r_ul
+__dmopencontext: bind metric[9] arith.promote.l_ull_r_l
+__dmopencontext: bind metric[10] arith.promote.l_l_r_ull
+__dmopencontext: bind metric[11] arith.promote.l_ul_r_ull
+__dmopencontext: bind metric[12] arith.promote.l_ull_r_ul
+__dmopencontext: bind metric[13] arith.promote.l_l_r_f
+__dmopencontext: bind metric[14] arith.promote.l_ul_r_f
+__dmopencontext: bind metric[15] arith.promote.l_ll_r_f
+__dmopencontext: bind metric[16] arith.promote.l_ull_r_f
+__dmopencontext: bind metric[17] arith.promote.l_f_r_l
+__dmopencontext: bind metric[18] arith.promote.l_f_r_ul
+__dmopencontext: bind metric[19] arith.promote.l_f_r_ll
+__dmopencontext: bind metric[20] arith.promote.l_f_r_ull
+__dmopencontext: bind metric[21] arith.eval.mul.l_l_r_l
+__dmopencontext: bind metric[22] arith.eval.mul.l_ull_r_ull
+__dmopencontext: bind metric[23] arith.eval.div.l_f_r_f
+__dmopencontext: bind metric[24] arith.eval.div.l_zero_f_r_f
+__dmopencontext: bind metric[25] arith.eval.div.l_zero_d_r_d
+__dmopencontext: bind metric[26] arith.eval.op.l_err
+__dmopencontext: bind metric[27] arith.eval.op.r_err
+__dmgetpmid: metric "arith.l" -> PMID 511.0.1
+__dmgetpmid: metric "arith.ul" -> PMID 511.0.2
+__dmgetpmid: metric "arith.ll" -> PMID 511.0.3
+__dmgetpmid: metric "arith.ull" -> PMID 511.0.4
+__dmgetpmid: metric "arith.f" -> PMID 511.0.5
+__dmgetpmid: metric "arith.d" -> PMID 511.0.6
+__dmgetpmid: metric "arith.promote.l_l_r_ll" -> PMID 511.0.7
+__dmgetpmid: metric "arith.promote.l_ll_r_l" -> PMID 511.0.8
+__dmgetpmid: metric "arith.promote.l_ll_r_ul" -> PMID 511.0.9
+__dmgetpmid: metric "arith.promote.l_ull_r_l" -> PMID 511.0.10
+__dmgetpmid: metric "arith.promote.l_l_r_ull" -> PMID 511.0.11
+__dmgetpmid: metric "arith.promote.l_ul_r_ull" -> PMID 511.0.12
+__dmgetpmid: metric "arith.promote.l_ull_r_ul" -> PMID 511.0.13
+__dmgetpmid: metric "arith.promote.l_l_r_f" -> PMID 511.0.14
+__dmgetpmid: metric "arith.promote.l_ul_r_f" -> PMID 511.0.15
+__dmgetpmid: metric "arith.promote.l_ll_r_f" -> PMID 511.0.16
+__dmgetpmid: metric "arith.promote.l_ull_r_f" -> PMID 511.0.17
+__dmgetpmid: metric "arith.promote.l_f_r_l" -> PMID 511.0.18
+__dmgetpmid: metric "arith.promote.l_f_r_ul" -> PMID 511.0.19
+__dmgetpmid: metric "arith.promote.l_f_r_ll" -> PMID 511.0.20
+derived metrics prefetch added 10 metrics: 29.0.4 29.0.1 29.0.22 29.0.100 29.0.17 29.0.27 29.0.10 29.0.93 29.0.20 29.0.98
+__dmpostfetch: [0] root node 511.0.1: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-0> type=MINUS left=<addr-1> right=<addr-10> save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-1> type=PLUS left=<addr-2> right=<addr-5> save_last=0
+ PMID: PM_ID_NULL (29.0.4 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+expr node <addr-2> type=MINUS left=<addr-3> right=<addr-4> save_last=0
+ PMID: PM_ID_NULL (29.0.4 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=0 [sample.load] master=0
+ PMID: 29.0.4 (29.0.4 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [sample.load] master=0
+ PMID: 29.0.4 (29.0.4 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+expr node <addr-5> type=STAR left=<addr-6> right=<addr-9> save_last=0
+ PMID: PM_ID_NULL (29.0.4 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+expr node <addr-6> type=SLASH left=<addr-7> right=<addr-8> save_last=0
+ PMID: PM_ID_NULL (29.0.4 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-7> type=NAME left=(nil) right=(nil) save_last=0 [sample.load] master=0
+ PMID: 29.0.4 (29.0.4 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+expr node <addr-8> type=NAME left=(nil) right=(nil) save_last=0 [sample.load] master=0
+ PMID: 29.0.4 (29.0.4 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+expr node <addr-9> type=NAME left=(nil) right=(nil) save_last=0 [sample.load] master=0
+ PMID: 29.0.4 (29.0.4 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+expr node <addr-10> type=NAME left=(nil) right=(nil) save_last=0 [sample.load] master=0
+ PMID: 29.0.4 (29.0.4 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-0>
+__dmpostfetch: [1] root node 511.0.2: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-11> type=MINUS left=<addr-12> right=<addr-21> save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-12> type=PLUS left=<addr-13> right=<addr-16> save_last=0
+ PMID: PM_ID_NULL (29.0.1 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+expr node <addr-13> type=MINUS left=<addr-14> right=<addr-15> save_last=0
+ PMID: PM_ID_NULL (29.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-14> type=NAME left=(nil) right=(nil) save_last=0 [sample.daemon_pid] master=0
+ PMID: 29.0.1 (29.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+expr node <addr-15> type=NAME left=(nil) right=(nil) save_last=0 [sample.daemon_pid] master=0
+ PMID: 29.0.1 (29.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+expr node <addr-16> type=STAR left=<addr-17> right=<addr-20> save_last=0
+ PMID: PM_ID_NULL (29.0.1 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+expr node <addr-17> type=SLASH left=<addr-18> right=<addr-19> save_last=0
+ PMID: PM_ID_NULL (29.0.1 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=0 [sample.daemon_pid] master=0
+ PMID: 29.0.1 (29.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+expr node <addr-19> type=NAME left=(nil) right=(nil) save_last=0 [sample.daemon_pid] master=0
+ PMID: 29.0.1 (29.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+expr node <addr-20> type=NAME left=(nil) right=(nil) save_last=0 [sample.daemon_pid] master=0
+ PMID: 29.0.1 (29.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+expr node <addr-21> type=NAME left=(nil) right=(nil) save_last=0 [sample.daemon_pid] master=0
+ PMID: 29.0.1 (29.0.1 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-1>
+__dmpostfetch: [2] root node 511.0.3: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-22> type=MINUS left=<addr-23> right=<addr-32> save_last=0
+ PMID: PM_ID_NULL (511.0.3 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-23> type=PLUS left=<addr-24> right=<addr-27> save_last=0
+ PMID: PM_ID_NULL (29.0.22 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-24> type=MINUS left=<addr-25> right=<addr-26> save_last=0
+ PMID: PM_ID_NULL (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-25> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-26> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-27> type=STAR left=<addr-28> right=<addr-31> save_last=0
+ PMID: PM_ID_NULL (29.0.22 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-28> type=SLASH left=<addr-29> right=<addr-30> save_last=0
+ PMID: PM_ID_NULL (29.0.22 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-29> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-30> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-31> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-32> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [3] root node 511.0.4: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-33> type=MINUS left=<addr-34> right=<addr-43> save_last=0
+ PMID: PM_ID_NULL (511.0.4 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-34> type=PLUS left=<addr-35> right=<addr-38> save_last=0
+ PMID: PM_ID_NULL (29.0.100 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-35> type=MINUS left=<addr-36> right=<addr-37> save_last=0
+ PMID: PM_ID_NULL (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-36> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-37> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-38> type=STAR left=<addr-39> right=<addr-42> save_last=0
+ PMID: PM_ID_NULL (29.0.100 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-39> type=SLASH left=<addr-40> right=<addr-41> save_last=0
+ PMID: PM_ID_NULL (29.0.100 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-40> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-41> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-42> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-43> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [4] root node 511.0.5: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-44> type=MINUS left=<addr-45> right=<addr-54> save_last=0
+ PMID: PM_ID_NULL (511.0.5 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-45> type=PLUS left=<addr-46> right=<addr-49> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-46> type=MINUS left=<addr-47> right=<addr-48> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-47> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-48> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-49> type=STAR left=<addr-50> right=<addr-53> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-50> type=SLASH left=<addr-51> right=<addr-52> save_last=0
+ PMID: PM_ID_NULL (29.0.17 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-51> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-52> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-53> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-54> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [5] root node 511.0.6: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-55> type=MINUS left=<addr-56> right=<addr-65> save_last=0
+ PMID: PM_ID_NULL (511.0.6 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-56> type=PLUS left=<addr-57> right=<addr-60> save_last=0
+ PMID: PM_ID_NULL (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-57> type=MINUS left=<addr-58> right=<addr-59> save_last=0
+ PMID: PM_ID_NULL (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-58> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-59> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-60> type=STAR left=<addr-61> right=<addr-64> save_last=0
+ PMID: PM_ID_NULL (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-61> type=SLASH left=<addr-62> right=<addr-63> save_last=0
+ PMID: PM_ID_NULL (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-62> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-63> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-64> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-65> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.hundred] master=0
+ PMID: 29.0.27 (29.0.27 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [6] root node 511.0.7: numval=1 vset[0]: inst=-1 ll=101
+expr node <addr-66> type=PLUS left=<addr-67> right=<addr-68> save_last=0
+ PMID: PM_ID_NULL (511.0.7 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-67> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-68> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [7] root node 511.0.8: numval=1 vset[0]: inst=-1 ll=101
+expr node <addr-69> type=PLUS left=<addr-70> right=<addr-71> save_last=0
+ PMID: PM_ID_NULL (511.0.8 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-70> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-71> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmpostfetch: [8] root node 511.0.9: numval=1 vset[0]: inst=-1 ll=101
+expr node <addr-72> type=PLUS left=<addr-73> right=<addr-74> save_last=0
+ PMID: PM_ID_NULL (511.0.9 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-73> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-74> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.one] master=0
+ PMID: 29.0.93 (29.0.93 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmpostfetch: [9] root node 511.0.10: numval=1 vset[0]: inst=-1 ul=101
+expr node <addr-75> type=PLUS left=<addr-76> right=<addr-77> save_last=0
+ PMID: PM_ID_NULL (511.0.10 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-76> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-77> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmpostfetch: [10] root node 511.0.11: numval=1 vset[0]: inst=-1 ul=101
+expr node <addr-78> type=PLUS left=<addr-79> right=<addr-80> save_last=0
+ PMID: PM_ID_NULL (511.0.11 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-79> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-80> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [11] root node 511.0.12: numval=1 vset[0]: inst=-1 ul=101
+expr node <addr-81> type=PLUS left=<addr-82> right=<addr-83> save_last=0
+ PMID: PM_ID_NULL (511.0.12 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-82> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.one] master=0
+ PMID: 29.0.93 (29.0.93 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-83> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [12] root node 511.0.13: numval=1 vset[0]: inst=-1 ul=101
+expr node <addr-84> type=PLUS left=<addr-85> right=<addr-86> save_last=0
+ PMID: PM_ID_NULL (511.0.13 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-85> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-86> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.one] master=0
+ PMID: 29.0.93 (29.0.93 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmpostfetch: [13] root node 511.0.14: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-87> type=PLUS left=<addr-88> right=<addr-89> save_last=0
+ PMID: PM_ID_NULL (511.0.14 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-88> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-89> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [14] root node 511.0.15: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-90> type=PLUS left=<addr-91> right=<addr-92> save_last=0
+ PMID: PM_ID_NULL (511.0.15 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-91> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.one] master=0
+ PMID: 29.0.93 (29.0.93 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-92> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [15] root node 511.0.16: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-93> type=PLUS left=<addr-94> right=<addr-95> save_last=0
+ PMID: PM_ID_NULL (511.0.16 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-94> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=0
+ PMID: 29.0.20 (29.0.20 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-95> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [16] root node 511.0.17: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-96> type=PLUS left=<addr-97> right=<addr-98> save_last=0
+ PMID: PM_ID_NULL (511.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-97> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.one] master=0
+ PMID: 29.0.98 (29.0.98 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-98> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [17] root node 511.0.18: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-99> type=PLUS left=<addr-100> right=<addr-101> save_last=0
+ PMID: PM_ID_NULL (511.0.18 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-100> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-101> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmpostfetch: [18] root node 511.0.19: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-102> type=PLUS left=<addr-103> right=<addr-104> save_last=0
+ PMID: PM_ID_NULL (511.0.19 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-103> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-104> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.one] master=0
+ PMID: 29.0.93 (29.0.93 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmpostfetch: [19] root node 511.0.20: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-105> type=PLUS left=<addr-106> right=<addr-107> save_last=0
+ PMID: PM_ID_NULL (511.0.20 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-106> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-107> type=NAME left=(nil) right=(nil) save_last=0 [sample.longlong.one] master=0
+ PMID: 29.0.20 (29.0.20 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmgetpmid: metric "arith.promote.l_f_r_ull" -> PMID 511.0.21
+__dmgetpmid: metric "arith.eval.mul.l_l_r_l" -> PMID 511.0.22
+__dmgetpmid: metric "arith.eval.mul.l_ull_r_ull" -> PMID 511.0.23
+__dmgetpmid: metric "arith.eval.div.l_f_r_f" -> PMID 511.0.24
+__dmgetpmid: metric "arith.eval.div.l_zero_f_r_f" -> PMID 511.0.25
+__dmgetpmid: metric "arith.eval.div.l_zero_d_r_d" -> PMID 511.0.26
+__dmgetpmid: metric "arith.eval.op.l_err" -> PMID 511.0.27
+__dmgetpmid: metric "arith.eval.op.r_err" -> PMID 511.0.28
+derived metrics prefetch added 9 metrics: 29.0.17 29.0.98 29.0.11 29.0.12 29.0.99 29.0.100 29.0.16 29.0.26 29.0.49
+__dmpostfetch: [0] root node 511.0.21: numval=1 vset[0]: inst=-1 f=101.000000
+expr node <addr-108> type=PLUS left=<addr-109> right=<addr-110> save_last=0
+ PMID: PM_ID_NULL (511.0.21 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-109> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-110> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.one] master=0
+ PMID: 29.0.98 (29.0.98 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-3>
+__dmpostfetch: [1] root node 511.0.22: numval=1 vset[0]: inst=-1 l=1000
+expr node <addr-111> type=STAR left=<addr-112> right=<addr-113> save_last=0
+ PMID: PM_ID_NULL (511.0.22 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000
+expr node <addr-112> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=0
+ PMID: 29.0.11 (29.0.11 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-4>
+expr node <addr-113> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=0
+ PMID: 29.0.12 (29.0.12 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [2] root node 511.0.23: numval=1 vset[0]: inst=-1 ul=1000
+expr node <addr-114> type=STAR left=<addr-115> right=<addr-116> save_last=0
+ PMID: PM_ID_NULL (511.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1000
+expr node <addr-115> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.ten] master=0
+ PMID: 29.0.99 (29.0.99 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-4>
+expr node <addr-116> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulonglong.hundred] master=0
+ PMID: 29.0.100 (29.0.100 from pmDesc) numval: 1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+__dmpostfetch: [3] root node 511.0.24: numval=1 vset[0]: inst=-1 d=10.000000
+expr node <addr-117> type=SLASH left=<addr-118> right=<addr-119> save_last=0
+ PMID: PM_ID_NULL (511.0.24 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-4>
+expr node <addr-118> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.hundred] master=0
+ PMID: 29.0.17 (29.0.17 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-2>
+expr node <addr-119> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.ten] master=0
+ PMID: 29.0.16 (29.0.16 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-4>
+__dmpostfetch: [4] root node 511.0.25: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-120> type=SLASH left=<addr-121> right=<addr-122> save_last=0
+ PMID: PM_ID_NULL (511.0.25 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-121> type=NUMBER left=(nil) right=(nil) save_last=0 [0] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=0
+expr node <addr-122> type=NAME left=(nil) right=(nil) save_last=0 [sample.float.ten] master=0
+ PMID: 29.0.16 (29.0.16 from pmDesc) numval: 1
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-4>
+__dmpostfetch: [5] root node 511.0.26: numval=1 vset[0]: inst=-1 d=0.000000
+expr node <addr-123> type=SLASH left=<addr-124> right=<addr-125> save_last=0
+ PMID: PM_ID_NULL (511.0.26 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-124> type=NUMBER left=(nil) right=(nil) save_last=0 [0] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=0
+expr node <addr-125> type=NAME left=(nil) right=(nil) save_last=0 [sample.double.ten] master=0
+ PMID: 29.0.26 (29.0.26 from pmDesc) numval: 1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<value-4>
+__dmpostfetch: [6] root node 511.0.27: numval=-12365
+expr node <addr-126> type=PLUS left=<addr-127> right=<addr-128> save_last=0
+ PMID: PM_ID_NULL (511.0.27 from pmDesc) numval: 0
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+expr node <addr-127> type=NAME left=(nil) right=(nil) save_last=0 [sample.needprofile] master=0
+ PMID: 29.0.49 (29.0.49 from pmDesc) numval: -12365
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+expr node <addr-128> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+__dmpostfetch: [7] root node 511.0.28: numval=-12365
+expr node <addr-129> type=PLUS left=<addr-130> right=<addr-131> save_last=0
+ PMID: PM_ID_NULL (511.0.28 from pmDesc) numval: 0
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+expr node <addr-130> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=<value-3>
+expr node <addr-131> type=NAME left=(nil) right=(nil) save_last=0 [sample.needprofile] master=0
+ PMID: 29.0.49 (29.0.49 from pmDesc) numval: -12365
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+
+arith.l
+ value 0
+
+arith.ul
+ value 0
+
+arith.ll
+ value 0
+
+arith.ull
+ value 0
+
+arith.f
+ value 0
+
+arith.d
+ value 0
+
+arith.promote.l_l_r_ll
+ value 101
+
+arith.promote.l_ll_r_l
+ value 101
+
+arith.promote.l_ll_r_ul
+ value 101
+
+arith.promote.l_ull_r_l
+ value 101
+
+arith.promote.l_l_r_ull
+ value 101
+
+arith.promote.l_ul_r_ull
+ value 101
+
+arith.promote.l_ull_r_ul
+ value 101
+
+arith.promote.l_l_r_f
+ value 101
+
+arith.promote.l_ul_r_f
+ value 101
+
+arith.promote.l_ll_r_f
+ value 101
+
+arith.promote.l_ull_r_f
+ value 101
+
+arith.promote.l_f_r_l
+ value 101
+
+arith.promote.l_f_r_ul
+ value 101
+
+arith.promote.l_f_r_ll
+ value 101
+
+arith.promote.l_f_r_ull
+ value 101
+
+arith.eval.mul.l_l_r_l
+ value 1000
+
+arith.eval.mul.l_ull_r_ull
+ value 1000
+
+arith.eval.div.l_f_r_f
+ value 10
+
+arith.eval.div.l_zero_f_r_f
+ value 0
+
+arith.eval.div.l_zero_d_r_d
+ value 0
+
+arith.eval.op.l_err
+Error: Explicit instance identifier(s) required
+
+arith.eval.op.r_err
+Error: Explicit instance identifier(s) required
+
+Errors and empty results here ...
+
+myname.a = sample.needprofile
+myname.b = 100 + sample.long.hundred * ( 2 - sample.needprofile )
+myname.c = sample.needprofile - sample.not_ready
+myname.d = sample.not_ready - sample.needprofile
+myname.e = sample.noinst
+myname.f = ( sample.long.hundred + sample.long.one ) * ( sample.noinst - 1 )
+
+=== myname ===
+__dmopencontext: bind metric[0] myname.a
+__dmopencontext: bind metric[1] myname.b
+__dmopencontext: bind metric[2] myname.c
+__dmopencontext: bind metric[3] myname.d
+__dmopencontext: bind metric[4] myname.e
+__dmopencontext: bind metric[5] myname.f
+__dmgetpmid: metric "myname.a" -> PMID 511.0.1
+__dmgetpmid: metric "myname.b" -> PMID 511.0.2
+__dmgetpmid: metric "myname.c" -> PMID 511.0.3
+__dmgetpmid: metric "myname.d" -> PMID 511.0.4
+__dmgetpmid: metric "myname.e" -> PMID 511.0.5
+__dmgetpmid: metric "myname.f" -> PMID 511.0.6
+derived metrics prefetch added 5 metrics: 29.0.49 29.0.12 29.0.56 29.0.9 29.0.10
+__dmpostfetch: [0] root node 511.0.1: numval=-12365
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.needprofile] master=0
+ PMID: 29.0.49 (511.0.1 from pmDesc) numval: -12365
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+__dmpostfetch: [1] root node 511.0.2: numval=-12365
+expr node <addr-1> type=PLUS left=<addr-2> right=<addr-3> save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-2> type=NUMBER left=(nil) right=(nil) save_last=0 [100] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=100
+expr node <addr-3> type=STAR left=<addr-4> right=<addr-5> save_last=0
+ PMID: PM_ID_NULL (29.0.12 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=0
+ PMID: 29.0.12 (29.0.12 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-5> type=MINUS left=<addr-6> right=<addr-7> save_last=0
+ PMID: PM_ID_NULL (29.0.49 from pmDesc) numval: 0
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+expr node <addr-6> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=2
+expr node <addr-7> type=NAME left=(nil) right=(nil) save_last=0 [sample.needprofile] master=0
+ PMID: 29.0.49 (29.0.49 from pmDesc) numval: -12365
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+__dmpostfetch: [2] root node 511.0.3: numval=-12365
+expr node <addr-8> type=MINUS left=<addr-9> right=<addr-10> save_last=0
+ PMID: PM_ID_NULL (511.0.3 from pmDesc) numval: 0
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: instant Units: none
+expr node <addr-9> type=NAME left=(nil) right=(nil) save_last=0 [sample.needprofile] master=0
+ PMID: 29.0.49 (29.0.49 from pmDesc) numval: -12365
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+expr node <addr-10> type=NAME left=(nil) right=(nil) save_last=0 [sample.not_ready] master=0
+ PMID: 29.0.56 (29.0.56 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmpostfetch: [3] root node 511.0.4: numval=-12365
+expr node <addr-11> type=MINUS left=<addr-12> right=<addr-13> save_last=0
+ PMID: PM_ID_NULL (511.0.4 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-12> type=NAME left=(nil) right=(nil) save_last=0 [sample.not_ready] master=0
+ PMID: 29.0.56 (29.0.56 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=0
+expr node <addr-13> type=NAME left=(nil) right=(nil) save_last=0 [sample.needprofile] master=0
+ PMID: 29.0.49 (29.0.49 from pmDesc) numval: -12365
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+__dmpostfetch: [4] root node 511.0.5: numval=0
+expr node <addr-14> type=NAME left=(nil) right=(nil) save_last=0 [sample.noinst] master=0
+ PMID: 29.0.9 (511.0.5 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmpostfetch: [5] root node 511.0.6: numval=0
+expr node <addr-15> type=STAR left=<addr-16> right=<addr-19> save_last=0
+ PMID: PM_ID_NULL (511.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-16> type=PLUS left=<addr-17> right=<addr-18> save_last=0
+ PMID: PM_ID_NULL (29.0.12 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=101
+expr node <addr-17> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=0
+ PMID: 29.0.12 (29.0.12 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=100
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (29.0.10 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=1
+expr node <addr-19> type=MINUS left=<addr-20> right=<addr-21> save_last=0
+ PMID: PM_ID_NULL (29.0.9 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-20> type=NAME left=(nil) right=(nil) save_last=0 [sample.noinst] master=0
+ PMID: 29.0.9 (29.0.9 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-21> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=1
+pmFetch returns ...
+TIMESTAMP ... numpmid: 6
+ 511.0.1 (myname.a): Explicit instance identifier(s) required
+ 511.0.2 (myname.b): Explicit instance identifier(s) required
+ 511.0.3 (myname.c): Explicit instance identifier(s) required
+ 511.0.4 (myname.d): Explicit instance identifier(s) required
+ 511.0.5 (myname.e): No values returned!
+ 511.0.6 (myname.f): No values returned!
+
+myname.a
+Error: Explicit instance identifier(s) required
+
+myname.b
+Error: Explicit instance identifier(s) required
+
+myname.c
+Error: Explicit instance identifier(s) required
+
+myname.d
+Error: Explicit instance identifier(s) required
+
+myname.e
+No value(s) available!
+
+myname.f
+No value(s) available!
diff --git a/qa/250 b/qa/250
new file mode 100755
index 0000000..fb32df8
--- /dev/null
+++ b/qa/250
@@ -0,0 +1,163 @@
+#! /bin/sh
+# PCP QA Test No. 250
+# Rebuild -u should be idempotent in this case
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = irix ]
+then
+ ln $seq.out.irix $seq.out
+elif [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ if [ $PCP_VER -lt 3600 ]
+ then
+ ln $seq.out.linux $seq.out
+ else
+ ln $seq.out.3 $seq.out
+ fi
+else
+ _notrun "Need qualified output for $PCP_PLATFORM"
+fi
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+_copy_Rebuild()
+{
+ scr_src=$PCP_VAR_DIR/pmns/
+ cp $scr_src/Rebuild $1
+ if [ -f $scr_src/Xlate-irix-names ]
+ then
+ cp $scr_src/Xlate-irix-names $1
+ fi
+}
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g"
+}
+
+_remove_rebuild()
+{
+ rm -f $1/Rebuild
+ if [ -f $1/Xlate-irix-names ]
+ then
+ rm -f $1/Xlate-irix-names
+ fi
+}
+
+# real QA test starts here
+mkdir $tmp
+cd $tmp
+
+cat >irix-root <<End-of-File
+ irix
+End-of-File
+
+cat >irix-pmns <<End-of-File
+irix {
+ bar
+ foo
+}
+irix.foo {
+ one 1:1:1
+ two 1:1:2
+ mumble
+}
+irix.bar {
+ three 1:1:3
+}
+irix.foo.mumble {
+ four 1:1:4
+}
+End-of-File
+
+cat >root <<End-of-File
+root {
+ irix
+ snarf
+ ten 10:1:1
+}
+irix {
+ bar
+ foo
+}
+irix.bar {
+ three 1:1:3
+}
+irix.foo.mumble {
+ four 1:1:4
+}
+irix.foo {
+ one 1:1:1
+ two 1:1:2
+ mumble
+}
+snarf {
+ eleven 11:1:1
+}
+End-of-File
+
+pminfo -m -n root | LC_COLLATE=POSIX sort >ref
+
+ls -l root >before
+ls >>before
+
+echo "Initial files inventory ..."
+touch after
+ls
+
+echo
+echo "Without root.bin ..."
+
+_copy_Rebuild .
+$sudo ./Rebuild -u \
+| _filter
+_remove_rebuild .
+
+ls -l root >after
+ls | sed '/^after$/d' >>after
+
+echo "File state differences ..."
+diff before after
+
+echo "PMNS differences ..."
+pminfo -m -n root | LC_COLLATE=POSIX sort | diff ref -
+
+if [ $PCP_VER -lt 3600 ]
+then
+ echo
+ echo "With root.bin ..."
+ pmnscomp -f -n root root.bin
+
+ rm -f after
+ ls -l root root.bin >before
+ ls >>before
+
+ _copy_Rebuild .
+ $sudo ./Rebuild -u \
+ | _filter
+ _remove_rebuild .
+
+ ls -l root root.bin >after
+ ls | sed '/^after$/d' >>after
+
+ echo "File state differences ..."
+ diff before after
+
+ echo "PMNS differences ..."
+ pminfo -m -n root | LC_COLLATE=POSIX sort | diff ref -
+fi
+
+status=0
+exit
diff --git a/qa/250.out.3 b/qa/250.out.3
new file mode 100644
index 0000000..661408c
--- /dev/null
+++ b/qa/250.out.3
@@ -0,0 +1,12 @@
+QA output created by 250
+Initial files inventory ...
+after
+before
+irix-pmns
+irix-root
+ref
+root
+
+Without root.bin ...
+File state differences ...
+PMNS differences ...
diff --git a/qa/250.out.irix b/qa/250.out.irix
new file mode 100644
index 0000000..08d934b
--- /dev/null
+++ b/qa/250.out.irix
@@ -0,0 +1,24 @@
+QA output created by 250
+Initial files inventory ...
+after
+before
+irix-pmns
+irix-root
+ref
+root
+
+Without root.bin ...
+File state differences ...
+6a7,8
+> root.bin
+> root_irix
+PMNS differences ...
+
+With root.bin ...
+Compiled PMNS contains
+ 7 hash table entries
+ 6 leaf nodes
+ 6 non-leaf nodes
+ 61 bytes of symbol table
+File state differences ...
+PMNS differences ...
diff --git a/qa/250.out.linux b/qa/250.out.linux
new file mode 100644
index 0000000..db66ba5
--- /dev/null
+++ b/qa/250.out.linux
@@ -0,0 +1,23 @@
+QA output created by 250
+Initial files inventory ...
+after
+before
+irix-pmns
+irix-root
+ref
+root
+
+Without root.bin ...
+File state differences ...
+6a7
+> root.bin
+PMNS differences ...
+
+With root.bin ...
+Compiled PMNS contains
+ 7 hash table entries
+ 6 leaf nodes
+ 6 non-leaf nodes
+ 61 bytes of symbol table
+File state differences ...
+PMNS differences ...
diff --git a/qa/251 b/qa/251
new file mode 100755
index 0000000..3761707
--- /dev/null
+++ b/qa/251
@@ -0,0 +1,109 @@
+#! /bin/sh
+# PCP QA Test No. 251
+# libpcp for archives with missing volumes
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/host:/s/ [^ ].*/ HOST/' \
+ -e '/start:/s/ [^ ].*/ DATE/' \
+ -e '/end:/s/ [^ ].*/ DATE/' \
+ -e 's/^..:..:..\..../TIMESTAMP /' \
+ -e '/No values available/d'
+ if [ "`echo core*`" != "core*" ]
+ then
+ $PCP_ECHO_PROG $PCP_ECHO_N "Dumped core! ... saved in""$PCP_ECHO_C"
+ $sudo rm -f $here/core*
+ for c in core*
+ do
+ $sudo mv $c $here/$c
+ $PCP_ECHO_PROG $PCP_ECHO_N " $here/$c""$PCP_ECHO_C"
+ done
+ echo
+ touch die
+ fi
+}
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+mkdir $tmp
+cp src/mv-bar.* $tmp
+offset=`_arch_start src/mv-bar 0`
+cd $tmp
+
+for inst in "bin-100" "bin-100,bin-500,bin-900"
+do
+ echo
+ echo "All volumes present ... $inst ..."
+ pmval -O $offset -D128 -t2 -a mv-bar -i $inst sampledso.bin 2>err >out
+ egrep 'Skip|Change' err
+ _filter <out
+ [ -f die ] && exit
+
+ echo
+ echo "First volume missing ... $inst ..."
+ mv mv-bar.0 foo.0
+ pmval -O $offset -D128 -t2 -a mv-bar -i $inst sampledso.bin 2>err >out
+ egrep 'Skip|Change' err
+ _filter <out
+ [ -f die ] && exit
+ mv foo.0 mv-bar.0
+
+ echo
+ echo "Last volume missing ... $inst ..."
+ mv mv-bar.3 foo.3
+ pmval -O $offset -D128 -t2 -a mv-bar -i $inst sampledso.bin 2>err >out
+ egrep 'Skip|Change' err
+ _filter <out
+ [ -f die ] && exit
+ mv foo.3 mv-bar.3
+
+ echo
+ echo "Second volume missing ... $inst ..."
+ mv mv-bar.1 foo.1
+ pmval -O $offset -D128 -t2 -a mv-bar -i $inst sampledso.bin 2>err >out
+ egrep 'Skip|Change' err
+ _filter <out
+ [ -f die ] && exit
+ mv foo.1 mv-bar.1
+
+ echo
+ echo "Second last volume missing ... $inst ..."
+ mv mv-bar.2 foo.2
+ pmval -O $offset -D128 -t2 -a mv-bar -i $inst sampledso.bin 2>err >out
+ egrep 'Skip|Change' err
+ _filter <out
+ [ -f die ] && exit
+ mv foo.2 mv-bar.2
+
+ echo
+ echo "All volumes but second missing ... $inst ..."
+ mv mv-bar.0 foo.0
+ mv mv-bar.2 foo.2
+ mv mv-bar.3 foo.3
+ pmval -O $offset -D128 -t2 -a mv-bar -i $inst sampledso.bin 2>err >out
+ egrep 'Skip|Change' err
+ _filter <out
+ [ -f die ] && exit
+ mv foo.0 mv-bar.0
+ mv foo.2 mv-bar.2
+ mv foo.3 mv-bar.3
+
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/251.out b/qa/251.out
new file mode 100644
index 0000000..9676443
--- /dev/null
+++ b/qa/251.out
@@ -0,0 +1,227 @@
+QA output created by 251
+
+All volumes present ... bin-100 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100
+TIMESTAMP 100
+TIMESTAMP 100
+
+First volume missing ... bin-100 ...
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100
+TIMESTAMP 100
+TIMESTAMP 100
+
+Last volume missing ... bin-100 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100
+TIMESTAMP 100
+TIMESTAMP 100
+
+Second volume missing ... bin-100 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100
+TIMESTAMP 100
+TIMESTAMP 100
+
+Second last volume missing ... bin-100 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 3
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100
+TIMESTAMP 100
+TIMESTAMP 100
+
+All volumes but second missing ... bin-100 ...
+__pmLogChangeVol: change to volume 1
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 2.00 sec
+
+ bin-100
+TIMESTAMP 100
+
+All volumes present ... bin-100,bin-500,bin-900 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100 bin-500 bin-900
+TIMESTAMP 100 500 900
+TIMESTAMP 100 500 900
+
+First volume missing ... bin-100,bin-500,bin-900 ...
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100 bin-500 bin-900
+TIMESTAMP 100 500 900
+TIMESTAMP 100 500 900
+
+Last volume missing ... bin-100,bin-500,bin-900 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100 bin-500 bin-900
+TIMESTAMP 100 500 900
+TIMESTAMP 100 500 900
+
+Second volume missing ... bin-100,bin-500,bin-900 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 2
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 2
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100 bin-500 bin-900
+TIMESTAMP 100 500 900
+TIMESTAMP 100 500 900
+
+Second last volume missing ... bin-100,bin-500,bin-900 ...
+__pmLogChangeVol: change to volume 0
+__pmLogChangeVol: change to volume 1
+__pmLogChangeVol: change to volume 3
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 2.00 sec
+
+ bin-100 bin-500 bin-900
+TIMESTAMP 100 500 900
+TIMESTAMP 100 500 900
+
+All volumes but second missing ... bin-100,bin-500,bin-900 ...
+__pmLogChangeVol: change to volume 1
+
+metric: sampledso.bin
+archive: mv-bar
+host: HOST
+start: DATE
+end: DATE
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 2.00 sec
+
+ bin-100 bin-500 bin-900
+TIMESTAMP 100 500 900
diff --git a/qa/252 b/qa/252
new file mode 100755
index 0000000..cc92a8a
--- /dev/null
+++ b/qa/252
@@ -0,0 +1,219 @@
+#! /bin/sh
+# PCP QA Test No. 252
+# pmlogger with its new formats for -s and -T stopping conditions
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+pmdumplog='pmdumplog'
+pmlogger='pmlogger'
+SECS_TOL=2 # number of seconds tolerance
+BYTES_TOL=1000 # number of bytes tolerance
+#debug=1 # give extra debugging info
+
+#
+_clean_archive()
+{
+rm -f $tmp.log $tmp.0 $tmp.index $tmp.meta
+}
+
+# Is given value within tolerance of expected value
+_tolerance()
+{
+ expected=$1
+ given=$2
+ tolerance=$3
+ upper_limit=`expr $expected + $tolerance`
+ [ $expected -le $given -a $given -le $upper_limit ]
+}
+
+_num_recs()
+{
+ num_recs=`$pmdumplog $tmp | egrep -c '^[0-9][0-9]:[0-9][0-9]:'`
+ # subtract 1 for the preamble
+ num_recs=`expr $num_recs - 1`
+ [ $debug ] && echo "found $num_recs samples after the preamble"
+}
+
+_test_sample_size()
+{
+ size_arg=$1
+ $pmlogger -s $size_arg -c $tmp.config -l $tmp.log $tmp
+
+ _num_recs
+ echo "Expected log sample size: $size_arg"
+ echo "Actual log sample size: $num_recs"
+ _clean_archive
+}
+
+_test_file_size_old()
+{
+ size_arg=$1
+ num_bytes=$2 # bytes version of size_arg
+ $pmlogger -s $size_arg -c $tmp.config -l $tmp.log $tmp
+ if [ -f $tmp.0 ]
+ then
+ actual_size=`ls -l $tmp.0 | $PCP_AWK_PROG ' {print $5} '`
+ else
+ actual_size=-1
+ fi
+ echo "Expected log size of approx: $size_arg"
+ [ $debug ] && echo "Actual log size: $actual_size bytes"
+ if _tolerance $num_bytes $actual_size $BYTES_TOL
+ then
+ echo "Log size is within tolerance"
+ else
+ echo "Log size is outside tolerance ($actual_size bytes)"
+ fi
+ _clean_archive
+}
+
+# Find out number of records, n, for given size
+# Then make sure for (n-1) records that the size is smaller
+_test_file_size()
+{
+ size_arg=$1
+ num_bytes=$2 # bytes version of size_arg
+ $pmlogger -s $size_arg -c $tmp.config -l $tmp.log $tmp
+ if [ -f $tmp.0 ]
+ then
+ bigger_size=`ls -l $tmp.0 | $PCP_AWK_PROG ' {print $5} '`
+ else
+ bigger_size=-1
+ fi
+ _num_recs
+ num_recs=`expr $num_recs - 1`
+ if [ $num_recs -gt 0 ]
+ then
+ _clean_archive
+ $pmlogger -s $num_recs -c $tmp.config -l $tmp.log $tmp
+ if [ -f $tmp.0 ]
+ then
+ smaller_size=`ls -l $tmp.0 | $PCP_AWK_PROG ' {print $5} '`
+ else
+ smaller_size=-1
+ fi
+ else
+ smaller_size=-1
+ fi
+ [ $debug ] && echo "Range: $smaller_size .. $bigger_size"
+ if [ $smaller_size -le $num_bytes -a $num_bytes -le $bigger_size ]
+ then
+ echo "Log size for $size_arg is correct"
+ else
+ echo "$num_bytes is not within range $smaller_size - $bigger_size"
+ fi
+ _clean_archive
+}
+
+_time_me ()
+{
+ # return time in seconds
+ #
+ # /usr/bin/time IS bloody important - dont port-sh it. EVER!
+ /usr/bin/time $* 2>&1 >/dev/null | \
+ if [ $PCP_PLATFORM = linux ]
+ then
+ # 0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 2752maxresident)k
+ tr ' ' "\n" | $PCP_AWK_PROG '/elapsed$/ { sub("elapsed", "", $1);
+ split ($1,tt,"[:.]");
+ print (tt[1]*60)+tt[2];}'
+ elif [ $PCP_PLATFORM = darwin ]
+ then
+ # 0.00 real 0.00 user 0.00 sys
+ $PCP_AWK_PROG '{print $1}' | sed -e 's/\..*//'
+ else
+ # real 0.0
+ # user 0.0
+ # sys 0.0
+ $PCP_AWK_PROG '/^real/ {print $2}' | sed -e 's/\..*//'
+ fi
+}
+
+# Note: size arg should be given in secs for comparison with /usr/bin/time
+_test_time_size()
+{
+ size_arg=$1
+ num_secs=$2 # secs version of size_arg
+ time=`_time_me $pmlogger -s $size_arg -c $tmp.config -l $tmp.log $tmp`
+ [ -z "$time" ] && time=-1
+ echo "Expected time size of: $size_arg"
+ [ $debug ] && echo "Actual time : $time"
+ if _tolerance $num_secs $time $SECS_TOL
+ then
+ echo "Log time is within tolerance"
+ else
+ echo "Log time is outside tolerance - $time secs"
+ fi
+ _clean_archive
+}
+
+
+
+# Note: size arg should be given in secs for comparison with /usr/bin/time
+_test_time_end()
+{
+ size_arg=$1
+ num_secs=$2 # secs version of size_arg
+ time=`_time_me $pmlogger -T $size_arg -c $tmp.config -l $tmp.log $tmp`
+ [ -z "$time" ] && time=-1
+ echo "Expected time size of: $size_arg"
+ [ $debug ] && echo "Actual time : $time"
+ if _tolerance $num_secs $time $SECS_TOL
+ then
+ echo "Log time is within tolerance"
+ else
+ echo "Log time is outside tolerance - $time secs"
+ fi
+ _clean_archive
+}
+
+# real QA test starts here
+
+
+# Create a simple configuration file for testing
+cat <<EOF >$tmp.config
+# pmlogger(1) configuration file for doing QA tests
+#
+log mandatory on 100 msec {
+ sample.control
+ sample.milliseconds
+ sample.load
+ sample.colour
+ sample.bin
+ sample.bucket
+ sample.drift
+ sample.step
+ sample.write_me
+ sample.lights
+ sample.magnitude
+ sample.pdu
+ sample.recv_pdu
+ sample.xmit_pdu
+ sample.noinst
+}
+EOF
+
+# Test out -s
+_test_file_size 4000bytes 4000
+_test_file_size 4K 4096
+_test_file_size 4194B 4194
+_test_sample_size 2
+_test_time_size 3secs 3
+
+# Test out -T
+_test_time_end 3secs 3
+
+# success, all done
+status=0
+exit
diff --git a/qa/252.out b/qa/252.out
new file mode 100644
index 0000000..a4de2c2
--- /dev/null
+++ b/qa/252.out
@@ -0,0 +1,10 @@
+QA output created by 252
+Log size for 4000bytes is correct
+Log size for 4K is correct
+Log size for 4194B is correct
+Expected log sample size: 2
+Actual log sample size: 2
+Expected time size of: 3secs
+Log time is within tolerance
+Expected time size of: 3secs
+Log time is within tolerance
diff --git a/qa/253 b/qa/253
new file mode 100755
index 0000000..2ee251c
--- /dev/null
+++ b/qa/253
@@ -0,0 +1,69 @@
+#!/bin/sh
+# PCP QA Test No. 253
+#
+# Derived Metrics and archives
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+unset PCP_DERIVED_CONFIG
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ | $PCP_AWK_PROG '
+/milliseconds/ { want = 1 }
+want == 1 && $1 == "value" { $2 = "<number>" }
+NF == 0 { want = 0 }
+ { print }'
+}
+
+# real QA test starts here
+
+echo "No errors here ..."
+cat <<End-of-File >$tmp.config
+myname.const = 123456
+myname.a = sample.bin / 50
+myname.b = 3*sample.bin
+myname.c = sample.bin + sample.bucket*2 - (sample.bin + 100) - sample.bucket
+End-of-File
+echo
+cat $tmp.config
+
+for args in myname.const myname.a myname "myname.a sample.milliseconds" \
+ "sample.milliseconds myname.b" "sample.milliseconds myname.a myname.b sample.milliseconds myname.c"
+do
+ echo
+ echo "=== $args ==="
+ pminfo -c $tmp.config -a src/bigbin $args 2>&1 | _filter
+ echo "=== -d $args ==="
+ pminfo -c $tmp.config -a src/bigbin -d $args 2>&1 | _filter
+ echo "=== -f $args ==="
+ pminfo -c $tmp.config -a src/bigbin -f $args 2>&1 | _filter
+done
+
+# success, all done
+exit
+
diff --git a/qa/253.out b/qa/253.out
new file mode 100644
index 0000000..c0e217b
--- /dev/null
+++ b/qa/253.out
@@ -0,0 +1,223 @@
+QA output created by 253
+No errors here ...
+
+myname.const = 123456
+myname.a = sample.bin / 50
+myname.b = 3*sample.bin
+myname.c = sample.bin + sample.bucket*2 - (sample.bin + 100) - sample.bucket
+
+=== myname.const ===
+myname.const
+=== -d myname.const ===
+
+myname.const
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+=== -f myname.const ===
+
+myname.const
+ value 123456
+
+=== myname.a ===
+myname.a
+=== -d myname.a ===
+
+myname.a
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+=== -f myname.a ===
+
+myname.a
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+
+=== myname ===
+myname.const
+myname.a
+myname.b
+myname.c
+=== -d myname ===
+
+myname.const
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+myname.a
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+
+myname.b
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+
+myname.c
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+=== -f myname ===
+
+myname.const
+ value 123456
+
+myname.a
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+
+myname.b
+ inst [100 or "bin-100"] value 300
+ inst [200 or "bin-200"] value 600
+ inst [300 or "bin-300"] value 900
+ inst [400 or "bin-400"] value 1200
+ inst [500 or "bin-500"] value 1500
+ inst [600 or "bin-600"] value 1800
+ inst [700 or "bin-700"] value 2100
+ inst [800 or "bin-800"] value 2400
+ inst [900 or "bin-900"] value 2700
+
+myname.c
+ inst [100 or "bin-100"] value 0
+ inst [200 or "bin-200"] value 100
+ inst [300 or "bin-300"] value 200
+ inst [400 or "bin-400"] value 300
+ inst [500 or "bin-500"] value 400
+ inst [600 or "bin-600"] value 500
+ inst [700 or "bin-700"] value 600
+ inst [800 or "bin-800"] value 700
+ inst [900 or "bin-900"] value 800
+
+=== myname.a sample.milliseconds ===
+myname.a
+sample.milliseconds
+=== -d myname.a sample.milliseconds ===
+
+myname.a
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+
+sample.milliseconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+=== -f myname.a sample.milliseconds ===
+
+myname.a
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+
+sample.milliseconds
+value <number>
+
+=== sample.milliseconds myname.b ===
+sample.milliseconds
+myname.b
+=== -d sample.milliseconds myname.b ===
+
+sample.milliseconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+myname.b
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+=== -f sample.milliseconds myname.b ===
+
+sample.milliseconds
+value <number>
+
+myname.b
+ inst [100 or "bin-100"] value 300
+ inst [200 or "bin-200"] value 600
+ inst [300 or "bin-300"] value 900
+ inst [400 or "bin-400"] value 1200
+ inst [500 or "bin-500"] value 1500
+ inst [600 or "bin-600"] value 1800
+ inst [700 or "bin-700"] value 2100
+ inst [800 or "bin-800"] value 2400
+ inst [900 or "bin-900"] value 2700
+
+=== sample.milliseconds myname.a myname.b sample.milliseconds myname.c ===
+sample.milliseconds
+myname.a
+myname.b
+sample.milliseconds
+myname.c
+=== -d sample.milliseconds myname.a myname.b sample.milliseconds myname.c ===
+
+sample.milliseconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+myname.a
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+
+myname.b
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+
+sample.milliseconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+myname.c
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+=== -f sample.milliseconds myname.a myname.b sample.milliseconds myname.c ===
+
+sample.milliseconds
+value <number>
+
+myname.a
+ inst [100 or "bin-100"] value 2
+ inst [200 or "bin-200"] value 4
+ inst [300 or "bin-300"] value 6
+ inst [400 or "bin-400"] value 8
+ inst [500 or "bin-500"] value 10
+ inst [600 or "bin-600"] value 12
+ inst [700 or "bin-700"] value 14
+ inst [800 or "bin-800"] value 16
+ inst [900 or "bin-900"] value 18
+
+myname.b
+ inst [100 or "bin-100"] value 300
+ inst [200 or "bin-200"] value 600
+ inst [300 or "bin-300"] value 900
+ inst [400 or "bin-400"] value 1200
+ inst [500 or "bin-500"] value 1500
+ inst [600 or "bin-600"] value 1800
+ inst [700 or "bin-700"] value 2100
+ inst [800 or "bin-800"] value 2400
+ inst [900 or "bin-900"] value 2700
+
+sample.milliseconds
+value <number>
+
+myname.c
+ inst [100 or "bin-100"] value 0
+ inst [200 or "bin-200"] value 100
+ inst [300 or "bin-300"] value 200
+ inst [400 or "bin-400"] value 300
+ inst [500 or "bin-500"] value 400
+ inst [600 or "bin-600"] value 500
+ inst [700 or "bin-700"] value 600
+ inst [800 or "bin-800"] value 700
+ inst [900 or "bin-900"] value 800
diff --git a/qa/254 b/qa/254
new file mode 100755
index 0000000..6b56b19
--- /dev/null
+++ b/qa/254
@@ -0,0 +1,93 @@
+#! /bin/sh
+# PCP QA Test No. 254
+# exercise pmNameAll for distributed PMNS with given namespace
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+signal=$PCP_BINADM_DIR/pmsignal
+_needclean=true
+pmns="nameall.pmns"
+
+rm -rf $tmp
+mkdir $tmp
+chmod ugo+rwx $tmp
+cd $tmp
+
+cleanup()
+{
+ cd $here
+ if $_needclean
+ then
+ _needclean=false
+ $signal -s TERM $pmcd
+ sleep 1
+ unset PMCD_SOCKET
+ echo "Restart and ping pmcd ..."
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ fi
+ rm -rf $tmp
+}
+
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+cat >$pmns <<End-of-File
+root {
+ ten 29:0:11
+ another_ten 29:0:11
+ yet
+}
+
+yet {
+ another
+ again 29:0:11
+}
+
+yet.another {
+ ten 29:0:11
+}
+End-of-File
+
+if [ $PCP_VER -lt 3600 ]
+then
+ pmnscomp -df -n $pmns $pmns.bin
+fi
+
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+# Note: start pmcd with -f so that its PID stays the same (no daemon)
+#
+export PMCD_SOCKET=$tmp/pmcd.socket
+if [ $PCP_VER -lt 3600 ]
+then
+ $PCP_PMCD_PROG -f -n $pmns -l $seq.full &
+else
+ $PCP_PMCD_PROG -f -N $pmns -l $seq.full &
+fi
+pmcd=$!
+_wait_for_pmcd
+
+cd $here
+src/nameall -s 2 ""
+
+status=$?
diff --git a/qa/254.out.1 b/qa/254.out.1
new file mode 100644
index 0000000..267a73e
--- /dev/null
+++ b/qa/254.out.1
@@ -0,0 +1,22 @@
+QA output created by 254
+Compiled PMNS contains
+ 1 hash table entries
+ 4 leaf nodes
+ 3 non-leaf nodes
+ 43 bytes of symbol table
+Waiting for pmcd to terminate ...
+29.0.11 alias ten and yet.again
+29.0.11 alias ten and yet.another.ten
+29.0.11 alias ten and another_ten
+29.0.11 alias another_ten and yet.again
+29.0.11 alias another_ten and yet.another.ten
+29.0.11 alias another_ten and ten
+29.0.11 alias yet.another.ten and yet.again
+29.0.11 alias yet.another.ten and another_ten
+29.0.11 alias yet.another.ten and ten
+29.0.11 alias yet.again and yet.another.ten
+29.0.11 alias yet.again and another_ten
+29.0.11 alias yet.again and ten
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/254.out.2 b/qa/254.out.2
new file mode 100644
index 0000000..3e5c445
--- /dev/null
+++ b/qa/254.out.2
@@ -0,0 +1,17 @@
+QA output created by 254
+Waiting for pmcd to terminate ...
+29.0.11 alias ten and yet.again
+29.0.11 alias ten and yet.another.ten
+29.0.11 alias ten and another_ten
+29.0.11 alias another_ten and yet.again
+29.0.11 alias another_ten and yet.another.ten
+29.0.11 alias another_ten and ten
+29.0.11 alias yet.another.ten and yet.again
+29.0.11 alias yet.another.ten and another_ten
+29.0.11 alias yet.another.ten and ten
+29.0.11 alias yet.again and yet.another.ten
+29.0.11 alias yet.again and another_ten
+29.0.11 alias yet.again and ten
+Restart and ping pmcd ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/255 b/qa/255
new file mode 100755
index 0000000..bd12ba0
--- /dev/null
+++ b/qa/255
@@ -0,0 +1,383 @@
+#! /bin/sh
+# PCP QA Test No. 255
+# exercise pmcd <-> pmda version exchange
+# Bug #508731
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+errlist=''
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+$sudo rm -f $seq.full $tmp.*
+echo "=== I am PID $$" >>$seq.full
+echo "=== /tmp files" >>$seq.full
+$sudo ls -l /tmp/[0-9][0-9]*.* >>$seq.full 2>&1
+echo "=== config files" >>$seq.full
+ls -l $PCP_PMCDCONF_PATH $PCP_PMCDOPTIONS_PATH >>$seq.full
+
+unset ROOT MAKEFLAGS
+
+simple_domain=253
+broken_domain=249
+num_warn=0
+
+# pmcd may be quite some distance away
+#
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+_filter_ins()
+{
+ sed \
+ -e '/^Installing .mchart view*/d' \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/'
+}
+
+_filter_pmcd()
+{
+ _filter_pmcd_log \
+ | sed \
+ -e "/^simple.*bin/s/$simple_domain[ ]*[0-9]*[ ]*[0-9]*[ ]*[0-9]*/SIMPLE PID FD FD/" \
+ -e "/^simple.*dso/s/$simple_domain/SIMPLE/" \
+ -e "/^broken.*bin/s/$broken_domain[ ]*[0-9]*[ ]*[0-9]*[ ]*[0-9]*/BROKEN PID FD FD/" \
+ -e "s/[1-2][ ]dso.*irix_init/LIBIRIXPMDA DSO/" \
+ -e "s/[1-2][ ]dso.*linux_init/LINUX DSO/" \
+ -e "s;$PCP_PMDAS_DIR;PCP_PMDAS_DIR;g" \
+ -e "s/ISA\.//g" \
+ -e "s/ \[(nil)]//g" \
+ -e "s/cmd=.*pmdas\/broken./cmd=/" \
+ -e "s/ fd=[0-9]*/ fd=FD/" \
+ -e "s/\.$DSO_SUFFIX/.\$DSO_SUFFIX/g" \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ | $PCP_AWK_PROG '
+BEGIN { skip = 0 }
+/client connection from/ { print; print "..."; skip=1; next }
+skip == 1 && NF == 0 { skip = 0 }
+skip == 1 { next }
+ { print }'
+}
+
+_filter_init()
+{
+ sed \
+ -e "s/$$/PID/g" \
+ | _filter_pcp_start
+}
+
+# Remove the PMDA and restore pmcd.conf
+#
+_cleanup()
+{
+ echo ""
+ echo "=== Removing broken_pmda namespace ==="
+ cd $here/pmdas/broken
+ $sudo ./broken_Remove -N
+ cd $here
+ sleep 4
+ _wait_for_pmcd
+
+ if [ -f $tmp.conf ]
+ then
+ echo "=== Resetting pmcd.conf back to original state ==="
+ $sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+ fi
+ if [ -f $tmp.options ]
+ then
+ echo "=== Resetting pmcd.options back to original state ==="
+ echo '=== $PCP_PMCDOPTIONS_PATH before cp' >>$seq.full
+ cat $PCP_PMCDOPTIONS_PATH >>$seq.full
+ echo '=== $tmp.options before cp' >>$seq.full
+ cat $tmp.options >>$seq.full
+ $sudo cp $tmp.options $PCP_PMCDOPTIONS_PATH
+ fi
+ if [ -f $tmp.conf -o -f $tmp.options ]
+ then
+ echo "=== Restart PMCD ==="
+ echo '=== $PCP_PMCDCONF_PATH before init.d/pcp/start' >>$seq.full
+ cat $PCP_PMCDCONF_PATH >>$seq.full
+ echo '=== $PCP_PMCDOPTIONS_PATH before init.d/pcp/start' >>$seq.full
+ cat $PCP_PMCDOPTIONS_PATH >>$seq.full
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ fi
+ if [ -f $tmp.log ]
+ then
+ echo "=== Filter pmcd.log ==="
+ cat $tmp.log | _filter_pmcd
+ echo '=== pmcd log' >>$seq.full
+ cat $tmp.log >>$seq.full
+ fi
+ if [ -f $tmp.cron ]
+ then
+ echo "=== Restoring crontab ==="
+ _restore_cron $tmp.cron $sudo
+ fi
+ [ -f $PCP_PMDAS_DIR/simple/simple.conf.$seq ] && $sudo mv $PCP_PMDAS_DIR/simple/simple.conf.$seq $PCP_PMDAS_DIR/simple/simple.conf
+
+ echo "=== /tmp files" >>$seq.full
+ $sudo ls -l /tmp/[0-9][0-9]*.* >>$seq.full 2>&1
+ echo "=== config files" >>$seq.full
+ ls -l $PCP_PMCDCONF_PATH $PCP_PMCDOPTIONS_PATH >>$seq.full
+
+ $sudo rm -rf $tmp.*
+ _wait_for_pmlogger
+}
+
+# Removing cron entries that may collide
+#
+echo "=== Removing potential cron conflicts ==="
+_remove_cron $tmp.cron $sudo
+
+# Install broken pmda namespace
+#
+echo "=== Install broken namespace ==="
+cd $here/pmdas/broken
+$sudo ./broken_Install -N < /dev/null | _filter_ins 2>&1
+cd $here
+echo "=== Broken PMNS ==="
+if pminfo broken
+then
+ :
+else
+ echo "Unable to install broken namespace, exiting"
+ exit
+fi
+
+# Build simple agent
+#
+echo "=== Building simple agent ==="
+cd $PCP_PMDAS_DIR/simple
+
+# get rid of warnings from simple if no config exists
+#
+[ -f simple.conf ] && $sudo mv simple.conf simple.conf.$seq
+echo "sec,min,hour" >$tmp.simple.conf
+$sudo cp $tmp.simple.conf simple.conf
+
+# Install the simple namespace, I don't bother to remove it again
+#
+$sudo ./Install -N < /dev/null | _filter_ins 2>&1
+echo "Namespace installed"
+
+# if $sudo smake -f Makefile > $tmp.make 2>&1
+if $sudo make > $tmp.make 2>&1
+then
+ echo "PMDA built"
+else
+ echo "Unable to build the simple PMDA:"
+ cat $tmp.make
+ exit
+fi
+sed -e "/^@ SIMPLE/s/SIMPLE/$simple_domain/" < help \
+| $sudo $PCP_BINADM_DIR/newhelp -v 2 -o help
+echo "Help generated"
+cd $here
+
+# Replace pmcd.options
+#
+echo "=== Replacing pmcd.options ==="
+$sudo cp $PCP_PMCDOPTIONS_PATH $tmp.options
+cat << end-of-file > $tmp.newoptions
+# New pmcd.options file created by QA 255
+#
+-t 10
+-l $tmp.log
+-T 0
+end-of-file
+
+$sudo cp $tmp.newoptions $PCP_PMCDOPTIONS_PATH
+# Do not restart pmcd here, do it after changing pmcd.conf later
+
+_renew_pmcd()
+{
+ echo "=== Restarting PMCD with minimal PMDAs ==="
+ if [ -f $tmp.newconf ]
+ then
+ $sudo cp $tmp.newconf $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd >/dev/null 2>&1
+ sleep 4
+ _wait_for_pmcd
+ else
+ echo caller - $1 - has not created $tmp.newconf !!!
+ fi
+}
+
+# Install a standard pmda, but do not mess with the namespace
+#
+_agent_install()
+{
+ agent=$1
+ domain=$2
+ daemon=$3
+ path=$PCP_PMDAS_DIR/$agent
+
+ echo "=== Installing $agent ==="
+ cp $tmp.newconf $tmp.latest
+ if $daemon
+ then
+ cat << end-of-file >> $tmp.latest
+$agent $domain pipe binary $path/pmda$agent -d $domain
+end-of-file
+ else
+ prefix=
+ [ $PCP_PLATFORM = irix ] && prefix=`pmobjstyle`.
+ cat << end-of-file >> $tmp.latest
+$agent $domain dso ${agent}_init $path/${prefix}pmda_$agent.$DSO_SUFFIX
+end-of-file
+ fi
+
+ $sudo cp $tmp.latest $PCP_PMCDCONF_PATH
+ # after non-root pmcd changes, the log files may be owned by
+ # root.root or pcp.pcp depending on the pattern of installs and
+ # pmcd restarts ... to be sure we can write the log files, remove
+ # any old ones before signalling pmcd
+ #
+ $sudo rm -f $PCP_LOG_DIR/pmcd/simple.log* $PCP_LOG_DIR/pmcd/broken.log*
+ $sudo $signal -a -s HUP pmcd >/dev/null 2>&1
+ sleep 4
+ _wait_for_pmcd
+
+ if _check_agent $agent
+ then
+ echo "$agent is alive and well"
+ else
+ echo "Failed to install $agent"
+ exit
+ fi
+}
+
+# Remove a pmda
+#
+_agent_remove()
+{
+ agent=$1
+
+ echo "=== Removing $agent ==="
+ _renew_pmcd _agent_remove
+
+ if _check_agent $agent
+ then
+ echo "Failed to remove $agent"
+ exit
+ else
+ echo "$agent was removed"
+ fi
+}
+
+# Install broken pmda
+#
+_broken_install()
+{
+ agent=$1
+ ver=$2
+
+ echo "=== Installing $agent ==="
+ cp $tmp.newconf $tmp.latest
+ cat << end-of-file >> $tmp.latest
+broken $broken_domain pipe binary $here/pmdas/broken/$agent -d $broken_domain
+end-of-file
+
+ $sudo cp $tmp.latest $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd >/dev/null 2>&1
+ sleep 4
+ _wait_for_pmcd
+
+ if _check_agent broken
+ then
+ echo "$agent is alive and well...hang on there should be some warnings"
+ pminfo -f broken
+ exit
+ elif [ "$num_warn" -ne 5 ]
+ then
+ echo "Failed to properly install $agent, expected 4 warnings"
+ exit
+ else
+ echo "$agent is alive and as well as can be expected"
+ fi
+}
+
+# Copy and replace pmcd.conf
+#
+cp $PCP_PMCDCONF_PATH $tmp.conf
+cat << end-of-file > $tmp.newconf
+# pmcd.conf generated by QA 255
+#
+end-of-file
+
+if [ $PCP_PLATFORM = irix ]
+then
+ cat >>$tmp.newconf <<End-of-File
+# from qa/$seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+End-of-File
+elif [ $PCP_PLATFORM = linux ]
+then
+ cat >>$tmp.newconf <<End-of-File
+# from qa/$seq
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+elif [ $PCP_PLATFORM = darwin ]
+then
+ cat >>$tmp.newconf <<End-of-File
+# from qa/$seq
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+End-of-File
+elif [ $PCP_PLATFORM = solaris ]
+then
+ cat >>$tmp.newconf <<End-of-File
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+else
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+fi
+
+_renew_pmcd main
+
+# Start with a fresh pmcd log
+#
+$sudo $signal -a pmgadgets pmchart pmview >/dev/null 2>&1
+$sudo $PCP_RC_DIR/pcp restart | _filter_init 2>&1
+_wait_for_pmcd
+
+# Test 2.0 PMDA first
+#
+_agent_install simple $simple_domain true
+_agent_remove simple
+_agent_install simple $simple_domain false
+_agent_remove simple
+
+# Test 2.0 broken PMDA
+#
+_broken_install broken_pmda_2_0 2
+_agent_remove broken
+
+status=0
+exit
diff --git a/qa/255.out.ipv6 b/qa/255.out.ipv6
new file mode 100644
index 0000000..27f6c73
--- /dev/null
+++ b/qa/255.out.ipv6
@@ -0,0 +1,268 @@
+QA output created by 255
+=== Removing potential cron conflicts ===
+=== Install broken namespace ===
+You will need to choose an appropriate configuration for installation of
+the "broken" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+=== Broken PMNS ===
+broken.valid.one
+broken.valid.two
+broken.valid.three
+broken.bad.type
+broken.bad.semantics
+broken.bad.scale
+broken.bad.indom
+broken.no.fetch
+broken.no.help
+broken.no.shorthelp
+broken.no.longhelp
+broken.no.instfetch
+broken.no.instances
+broken.bogus.one
+=== Building simple agent ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+Namespace installed
+PMDA built
+Help generated
+=== Replacing pmcd.options ===
+=== Restarting PMCD with minimal PMDAs ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+=== Installing simple ===
+5 metrics and 9 values
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+5 warnings, 5 metrics and 0 values
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Installing simple ===
+5 metrics and 9 values
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+5 warnings, 5 metrics and 0 values
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Installing broken_pmda_2_0 ===
+5 warnings, 14 metrics and 14 values
+Warnings when fetching broken metrics:
+broken.bad.indom: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.type: Not Supported
+broken.bogus.one: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.fetch: Unknown or illegal metric identifier
+broken.no.instances: No value(s) available
+broken is alive and as well as can be expected
+=== Removing broken ===
+=== Restarting PMCD with minimal PMDAs ===
+14 warnings, 14 metrics and 0 values
+Warnings when fetching broken metrics:
+broken.bad.indom: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.scale: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.semantics: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.type: pmLookupDesc: Unknown or illegal metric identifier
+broken.bogus.one: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.fetch: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.help: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.instances: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.instfetch: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.longhelp: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.shorthelp: pmLookupDesc: Unknown or illegal metric identifier
+broken.valid.one: pmLookupDesc: Unknown or illegal metric identifier
+broken.valid.three: pmLookupDesc: Unknown or illegal metric identifier
+broken.valid.two: pmLookupDesc: Unknown or illegal metric identifier
+broken was removed
+
+=== Removing broken_pmda namespace ===
+Culling the Performance Metrics Name Space ...
+broken ... done
+Skipping PMDA removal and PMCD re-configuration
+=== Resetting pmcd.conf back to original state ===
+=== Resetting pmcd.options back to original state ===
+=== Restart PMCD ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+=== Filter pmcd.log ===
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+ok FD 44321 ipv6 INADDR_ANY
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+simple SIMPLE PID FD FD 2 bin pipe cmd=PCP_PMDAS_DIR/simple/pmdasimple -d 253
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Cleanup "simple" agent (dom 253): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+simple SIMPLE 2 dso i:2 lib=PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX entry=simple_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Cleanup "simple" agent (dom 253): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+broken BROKEN PID FD FD 2 bin pipe cmd=broken_pmda_2_0 -d 249
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Cleanup "broken" agent (dom 249): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Configuration file '$PCP_PMCDCONF_PATH' unchanged
+Restarting any deceased agents:
+ (no agents required restarting)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: Reloading PMNS "DEFAULT"
+[DATE] pmcd(PID) Info: pmcd caught SIGTERM from pid=N uid=N
+[DATE] pmcd(PID) Info: pmcd Shutdown
+
+Log finished DATE
+=== Restoring crontab ===
diff --git a/qa/255.out.nonipv6 b/qa/255.out.nonipv6
new file mode 100644
index 0000000..aae10ac
--- /dev/null
+++ b/qa/255.out.nonipv6
@@ -0,0 +1,267 @@
+QA output created by 255
+=== Removing potential cron conflicts ===
+=== Install broken namespace ===
+You will need to choose an appropriate configuration for installation of
+the "broken" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+=== Broken PMNS ===
+broken.valid.one
+broken.valid.two
+broken.valid.three
+broken.bad.type
+broken.bad.semantics
+broken.bad.scale
+broken.bad.indom
+broken.no.fetch
+broken.no.help
+broken.no.shorthelp
+broken.no.longhelp
+broken.no.instfetch
+broken.no.instances
+broken.bogus.one
+=== Building simple agent ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+Namespace installed
+PMDA built
+Help generated
+=== Replacing pmcd.options ===
+=== Restarting PMCD with minimal PMDAs ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+=== Installing simple ===
+5 metrics and 9 values
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+5 warnings, 5 metrics and 0 values
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Installing simple ===
+5 metrics and 9 values
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+5 warnings, 5 metrics and 0 values
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Installing broken_pmda_2_0 ===
+5 warnings, 14 metrics and 14 values
+Warnings when fetching broken metrics:
+broken.bad.indom: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.type: Not Supported
+broken.bogus.one: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.fetch: Unknown or illegal metric identifier
+broken.no.instances: No value(s) available
+broken is alive and as well as can be expected
+=== Removing broken ===
+=== Restarting PMCD with minimal PMDAs ===
+14 warnings, 14 metrics and 0 values
+Warnings when fetching broken metrics:
+broken.bad.indom: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.scale: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.semantics: pmLookupDesc: Unknown or illegal metric identifier
+broken.bad.type: pmLookupDesc: Unknown or illegal metric identifier
+broken.bogus.one: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.fetch: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.help: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.instances: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.instfetch: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.longhelp: pmLookupDesc: Unknown or illegal metric identifier
+broken.no.shorthelp: pmLookupDesc: Unknown or illegal metric identifier
+broken.valid.one: pmLookupDesc: Unknown or illegal metric identifier
+broken.valid.three: pmLookupDesc: Unknown or illegal metric identifier
+broken.valid.two: pmLookupDesc: Unknown or illegal metric identifier
+broken was removed
+
+=== Removing broken_pmda namespace ===
+Culling the Performance Metrics Name Space ...
+broken ... done
+Skipping PMDA removal and PMCD re-configuration
+=== Resetting pmcd.conf back to original state ===
+=== Resetting pmcd.options back to original state ===
+=== Restart PMCD ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+=== Filter pmcd.log ===
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+simple SIMPLE PID FD FD 2 bin pipe cmd=PCP_PMDAS_DIR/simple/pmdasimple -d 253
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Cleanup "simple" agent (dom 253): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+simple SIMPLE 2 dso i:2 lib=PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX entry=simple_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Cleanup "simple" agent (dom 253): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+broken BROKEN PID FD FD 2 bin pipe cmd=broken_pmda_2_0 -d 249
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Cleanup "broken" agent (dom 249): unconfigured, exit(0)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: PMNS file "DEFAULT" is unchanged
+[DATE] pmcd(PID) Info:
+
+pmcd RESTARTED at DATE
+
+
+Current PMCD clients ...
+ fd client connection from ipc ver operations denied
+...
+
+Configuration file '$PCP_PMCDCONF_PATH' unchanged
+Restarting any deceased agents:
+ (no agents required restarting)
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list empty: access control turned off
+
+[DATE] pmcd(PID) Info: Reloading PMNS "DEFAULT"
+[DATE] pmcd(PID) Info: pmcd caught SIGTERM from pid=N uid=N
+[DATE] pmcd(PID) Info: pmcd Shutdown
+
+Log finished DATE
+=== Restoring crontab ===
diff --git a/qa/256 b/qa/256
new file mode 100755
index 0000000..2026a4c
--- /dev/null
+++ b/qa/256
@@ -0,0 +1,197 @@
+#!/bin/sh
+# PCP QA Test No. 256
+#
+# Derived metrics and PMNS operations
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+unset PCP_DERIVED_CONFIG
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# Derived metric expr dump from 0x8513a48...
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+BEGIN { n = 0 }
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ echo "=== end sed ===" >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e "s;$tmp;TMP;"
+# -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=0
+# ...
+# [0] inst=-1, val=49794
+_filter2()
+{
+ sed <$tmp.out -e 's/val=/val /' \
+ | awk >$tmp.sed2 '
+BEGIN { n = 0 }
+/expr.*sample\./ { want=1; next }
+want == 1 && $3 == "val" { if (seen[$4] != "y") {
+ print "s/ val=" $4 "$/ val=<value-" n ">/"
+ n++
+ seen[$4] = "y"
+ }
+ }
+$1 == "expr" { want = 0 }'
+ echo "=== sed2 ===" >>$seq.full
+ cat $tmp.sed2 >>$seq.full
+ echo "=== end sed2 ===" >>$seq.full
+ sed -f $tmp.sed2 \
+ | sed \
+ -e '/pmGetChildren(name="")/s/ [0-9][0-9]* regular/ N regular/' \
+ -e '/pmGetChildren/s/returns [0-9][0-9]/returns N/'
+}
+
+# real QA test starts here
+
+echo "HOST context ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+myname.one = sample.long.one
+myname.suba.two = 2*sample.long.one
+myname.suba.three = 3*sample.long.one
+myname.suba.subb.four = 4*sample.long.one
+myname.suba.subb.subc.subd.five = 5*sample.long.one
+myname.suba.subb.subc.subd.six = 6*sample.long.one
+End-of-File
+echo | tee -a $seq.full
+cat $tmp.config | tee -a $seq.full
+
+for args in myname.suba.subb.subc.subd.six myname.suba.subb myname \
+ myname.one.bad myname.suba.subb.subc.bad
+do
+ echo | tee -a $seq.full
+ echo "=== -h localhost $args ===" | tee -a $seq.full
+ pminfo -h localhost -c $tmp.config $args >$tmp.out 2>&1
+ _filter
+ echo "=== -h localhost -f $args ===" | tee -a $seq.full
+ pminfo -h localhost -c $tmp.config -f $args >$tmp.out 2>&1
+ _filter
+done
+
+echo | tee -a $seq.full
+echo "ARCHIVE context ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+sample.one = sample.longlong.one
+sample.suba.two = 2*sample.longlong.one
+sample.suba.three = 3*sample.longlong.one
+sample.suba.subb.four = 4*sample.longlong.one
+sample.suba.subb.subc.subd.five = 5*sample.longlong.one
+sample.suba.subb.subc.subd.six = 6*sample.longlong.one
+End-of-File
+echo | tee -a $seq.full
+cat $tmp.config | tee -a $seq.full
+
+for args in sample.suba.subb.subc.subd.six sample.suba.subb sample \
+ sample.one.bad sample.suba.subb.subc.bad
+do
+ echo | tee -a $seq.full
+ echo "=== -a src/reduce-1 $args ===" | tee -a $seq.full
+ pminfo -a src/reduce-1 -c $tmp.config $args >$tmp.out 2>&1
+ _filter
+ echo "=== -a src/reduce-1 -f $args ===" | tee -a $seq.full
+ pminfo -a src/reduce-1 -c $tmp.config -f $args >$tmp.out 2>&1
+ _filter
+done
+
+echo | tee -a $seq.full
+echo "LOCAL context ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+sampledso.one = sampledso.longlong.one
+sampledso.suba.two = 2*sampledso.longlong.one
+sampledso.suba.three = 3*sampledso.longlong.one
+sampledso.suba.subb.four = 4*sampledso.longlong.one
+sampledso.suba.subb.subc.subd.five = 5*sampledso.longlong.one
+sampledso.suba.subb.subc.subd.six = 6*sampledso.longlong.one
+End-of-File
+echo | tee -a $seq.full
+cat $tmp.config | tee -a $seq.full
+export PMDA_LOCAL_SAMPLE=yes
+
+for args in sampledso.suba.subb.subc.subd.six sampledso.suba.subb sampledso \
+ sampledso.one.bad sampledso.suba.subb.subc.bad
+do
+ echo | tee -a $seq.full
+ echo "=== -L $args ===" | tee -a $seq.full
+ $sudo pminfo -L -c $tmp.config $args >$tmp.out 2>&1
+ _filter
+ echo "=== -L -f $args ===" | tee -a $seq.full
+ $sudo pminfo -L -c $tmp.config -f $args >$tmp.out 2>&1
+ _filter \
+ | $PCP_AWK_PROG '
+NF == 0 { want = 0; next }
+$1 == "sampledso.one" { print ""; want = 1 }
+$1 ~ /^sampledso\.suba\./ { print ""; want = 1 }
+want == 1 { print }'
+ echo "=== -n .../root -L ===" | tee -a $seq.full
+ $sudo pminfo -L -c $tmp.config -n $PCP_VAR_DIR/pmns/root $args >$tmp.out 2>&1
+ _filter
+ echo "=== -n .../root ===" | tee -a $seq.full
+ export PCP_DERIVED_CONFIG=$tmp.config
+ src/nameall -n $PCP_VAR_DIR/pmns/root $args >$tmp.out 2>&1
+ _filter | sed -e '/Name space load:/s/[0-9.]* msec/N.NN msec/'
+ unset PCP_DERIVED_CONFIG
+done
+
+echo | tee -a $seq.full
+echo "Splice-n-dice into existing PMNS ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+derived = sample.long.one
+derived_tree.ten = sample.long.ten
+derived_tree.hundred = sample.long.hundred
+derived_tree.sample.long.million = sample.long.million
+sample.long.derived = sample.long.one
+sample.long.foo.bar.derived = sample.long.one
+End-of-File
+echo | tee -a $seq.full
+cat $tmp.config | tee -a $seq.full
+
+for args in "" derived derived_tree sample
+do
+ echo | tee -a $seq.full
+ echo "=== $args ===" | tee -a $seq.full
+ pminfo -c $tmp.config $args 2>&1 | grep derived
+done
+
+echo | tee -a $seq.full
+echo "Check diags ..." | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+derived.tree.one = sample.long.one
+derived.tree.ten = sample.long.ten
+derived.tree.hundred = sample.long.hundred
+derived.tree.a.million = sample.long.million
+derived.tree.b.million = sample.long.million
+derived.tree.b.cmillion = sample.long.million
+sample.long.derived = sample.long.one
+sample.long.foo.bar.derived = sample.long.one
+End-of-File
+cat $tmp.config
+export PCP_DERIVED_CONFIG=$tmp.config
+#debug# src/torture_pmns -Dall -h localhost derived.tree >$tmp.out 2>&1
+src/torture_pmns -Dderive,appl1 -h localhost derived.tree >$tmp.out 2>&1
+_filter | _filter2
+
+# success, all done
+exit
diff --git a/qa/256.out b/qa/256.out
new file mode 100644
index 0000000..6fbb15d
--- /dev/null
+++ b/qa/256.out
@@ -0,0 +1,771 @@
+QA output created by 256
+HOST context ...
+
+myname.one = sample.long.one
+myname.suba.two = 2*sample.long.one
+myname.suba.three = 3*sample.long.one
+myname.suba.subb.four = 4*sample.long.one
+myname.suba.subb.subc.subd.five = 5*sample.long.one
+myname.suba.subb.subc.subd.six = 6*sample.long.one
+
+=== -h localhost myname.suba.subb.subc.subd.six ===
+myname.suba.subb.subc.subd.six
+=== -h localhost -f myname.suba.subb.subc.subd.six ===
+
+myname.suba.subb.subc.subd.six
+ value 6
+
+=== -h localhost myname.suba.subb ===
+myname.suba.subb.four
+myname.suba.subb.subc.subd.five
+myname.suba.subb.subc.subd.six
+=== -h localhost -f myname.suba.subb ===
+
+myname.suba.subb.four
+ value 4
+
+myname.suba.subb.subc.subd.five
+ value 5
+
+myname.suba.subb.subc.subd.six
+ value 6
+
+=== -h localhost myname ===
+myname.one
+myname.suba.two
+myname.suba.three
+myname.suba.subb.four
+myname.suba.subb.subc.subd.five
+myname.suba.subb.subc.subd.six
+=== -h localhost -f myname ===
+
+myname.one
+ value 1
+
+myname.suba.two
+ value 2
+
+myname.suba.three
+ value 3
+
+myname.suba.subb.four
+ value 4
+
+myname.suba.subb.subc.subd.five
+ value 5
+
+myname.suba.subb.subc.subd.six
+ value 6
+
+=== -h localhost myname.one.bad ===
+Error: myname.one.bad: Unknown metric name
+=== -h localhost -f myname.one.bad ===
+Error: myname.one.bad: Unknown metric name
+
+=== -h localhost myname.suba.subb.subc.bad ===
+Error: myname.suba.subb.subc.bad: Unknown metric name
+=== -h localhost -f myname.suba.subb.subc.bad ===
+Error: myname.suba.subb.subc.bad: Unknown metric name
+
+ARCHIVE context ...
+
+sample.one = sample.longlong.one
+sample.suba.two = 2*sample.longlong.one
+sample.suba.three = 3*sample.longlong.one
+sample.suba.subb.four = 4*sample.longlong.one
+sample.suba.subb.subc.subd.five = 5*sample.longlong.one
+sample.suba.subb.subc.subd.six = 6*sample.longlong.one
+
+=== -a src/reduce-1 sample.suba.subb.subc.subd.six ===
+sample.suba.subb.subc.subd.six
+=== -a src/reduce-1 -f sample.suba.subb.subc.subd.six ===
+
+sample.suba.subb.subc.subd.six
+ value 6
+
+=== -a src/reduce-1 sample.suba.subb ===
+sample.suba.subb.four
+sample.suba.subb.subc.subd.five
+sample.suba.subb.subc.subd.six
+=== -a src/reduce-1 -f sample.suba.subb ===
+
+sample.suba.subb.four
+ value 4
+
+sample.suba.subb.subc.subd.five
+ value 5
+
+sample.suba.subb.subc.subd.six
+ value 6
+
+=== -a src/reduce-1 sample ===
+sample.milliseconds
+sample.load
+sample.colour
+sample.drift
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+sample.wrap.ulong
+sample.wrap.longlong
+sample.step_counter
+sample.one
+sample.suba.two
+sample.suba.three
+sample.suba.subb.four
+sample.suba.subb.subc.subd.five
+sample.suba.subb.subc.subd.six
+=== -a src/reduce-1 -f sample ===
+
+sample.milliseconds
+ value 3388275.115
+
+sample.load
+ value 42
+
+sample.colour
+ inst [0 or "red"] value 181
+ inst [1 or "green"] value 282
+ inst [2 or "blue"] value 383
+
+sample.drift
+ value 515
+
+sample.float.one
+ value 1
+
+sample.float.ten
+ value 10
+
+sample.float.hundred
+ value 100
+
+sample.float.million
+ value 1000000
+
+sample.float.write_me
+ value 13
+
+sample.longlong.one
+ value 1
+
+sample.longlong.ten
+ value 10
+
+sample.longlong.hundred
+ value 100
+
+sample.longlong.million
+ value 1000000
+
+sample.longlong.write_me
+ value 13
+
+sample.double.one
+ value 1
+
+sample.double.ten
+ value 10
+
+sample.double.hundred
+ value 100
+
+sample.double.million
+ value 1000000
+
+sample.double.write_me
+ value 13
+
+sample.string.null
+ value ""
+
+sample.string.hullo
+ value "hullo world!"
+
+sample.string.write_me
+ value "13"
+
+sample.aggregate.null
+ value "" []
+
+sample.aggregate.hullo
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+sample.aggregate.write_me
+ value "13" [3133]
+
+sample.wrap.ulong
+ value 2147483526
+
+sample.wrap.longlong
+ value 4611686018427387782
+
+sample.step_counter
+ value 2260
+
+sample.one
+ value 1
+
+sample.suba.two
+ value 2
+
+sample.suba.three
+ value 3
+
+sample.suba.subb.four
+ value 4
+
+sample.suba.subb.subc.subd.five
+ value 5
+
+sample.suba.subb.subc.subd.six
+ value 6
+
+=== -a src/reduce-1 sample.one.bad ===
+Error: sample.one.bad: Unknown metric name
+=== -a src/reduce-1 -f sample.one.bad ===
+Error: sample.one.bad: Unknown metric name
+
+=== -a src/reduce-1 sample.suba.subb.subc.bad ===
+Error: sample.suba.subb.subc.bad: Unknown metric name
+=== -a src/reduce-1 -f sample.suba.subb.subc.bad ===
+Error: sample.suba.subb.subc.bad: Unknown metric name
+
+LOCAL context ...
+
+sampledso.one = sampledso.longlong.one
+sampledso.suba.two = 2*sampledso.longlong.one
+sampledso.suba.three = 3*sampledso.longlong.one
+sampledso.suba.subb.four = 4*sampledso.longlong.one
+sampledso.suba.subb.subc.subd.five = 5*sampledso.longlong.one
+sampledso.suba.subb.subc.subd.six = 6*sampledso.longlong.one
+
+=== -L sampledso.suba.subb.subc.subd.six ===
+sampledso.suba.subb.subc.subd.six
+=== -L -f sampledso.suba.subb.subc.subd.six ===
+
+sampledso.suba.subb.subc.subd.six
+ value 6
+=== -n .../root -L ===
+sampledso.suba.subb.subc.subd.six
+=== -n .../root ===
+Name space load: N.NN msec
+
+=== -L sampledso.suba.subb ===
+sampledso.suba.subb.four
+sampledso.suba.subb.subc.subd.five
+sampledso.suba.subb.subc.subd.six
+=== -L -f sampledso.suba.subb ===
+
+sampledso.suba.subb.four
+ value 4
+
+sampledso.suba.subb.subc.subd.five
+ value 5
+
+sampledso.suba.subb.subc.subd.six
+ value 6
+=== -n .../root -L ===
+sampledso.suba.subb.four
+sampledso.suba.subb.subc.subd.five
+sampledso.suba.subb.subc.subd.six
+=== -n .../root ===
+Name space load: N.NN msec
+
+=== -L sampledso ===
+sampledso.control
+sampledso.daemon_pid
+sampledso.seconds
+sampledso.milliseconds
+sampledso.load
+sampledso.colour
+sampledso.darkness
+sampledso.bin
+sampledso.bucket
+sampledso.part_bin
+sampledso.bogus_bin
+sampledso.drift
+sampledso.step
+sampledso.step_counter
+sampledso.mirage
+sampledso.mirage_longlong
+sampledso.write_me
+sampledso.lights
+sampledso.magnitude
+sampledso.sysinfo
+sampledso.pdu
+sampledso.recv_pdu
+sampledso.xmit_pdu
+sampledso.noinst
+sampledso.needprofile
+sampledso.not_ready
+sampledso.rapid
+sampledso.error_code
+sampledso.error_check
+sampledso.bigid
+sampledso.byte_ctr
+sampledso.byte_rate
+sampledso.kbyte_ctr
+sampledso.kbyte_rate
+sampledso.byte_rate_perhour
+sampledso.datasize
+sampledso.secret.foo.bar.max.redirect
+sampledso.secret.foo.bar.three
+sampledso.secret.foo.bar.four
+sampledso.secret.foo.bar.grunt.five
+sampledso.secret.foo.bar.grunt.snort.six
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+sampledso.secret.foo.one
+sampledso.secret.foo.two
+sampledso.secret.bar
+sampledso.long.one
+sampledso.long.ten
+sampledso.long.hundred
+sampledso.long.million
+sampledso.long.write_me
+sampledso.long.bin
+sampledso.long.bin_ctr
+sampledso.ulong.one
+sampledso.ulong.ten
+sampledso.ulong.hundred
+sampledso.ulong.million
+sampledso.ulong.write_me
+sampledso.ulong.bin
+sampledso.ulong.bin_ctr
+sampledso.ulong.count.base
+sampledso.ulong.count.deca
+sampledso.ulong.count.hecto
+sampledso.ulong.count.kilo
+sampledso.ulong.count.mega
+sampledso.longlong.one
+sampledso.longlong.ten
+sampledso.longlong.hundred
+sampledso.longlong.million
+sampledso.longlong.write_me
+sampledso.longlong.bin
+sampledso.longlong.bin_ctr
+sampledso.ulonglong.one
+sampledso.ulonglong.ten
+sampledso.ulonglong.hundred
+sampledso.ulonglong.million
+sampledso.ulonglong.write_me
+sampledso.ulonglong.bin
+sampledso.ulonglong.bin_ctr
+sampledso.float.one
+sampledso.float.ten
+sampledso.float.hundred
+sampledso.float.million
+sampledso.float.write_me
+sampledso.float.bin
+sampledso.float.bin_ctr
+sampledso.double.one
+sampledso.double.ten
+sampledso.double.hundred
+sampledso.double.million
+sampledso.double.write_me
+sampledso.double.bin
+sampledso.double.bin_ctr
+sampledso.string.null
+sampledso.string.hullo
+sampledso.string.write_me
+sampledso.aggregate.null
+sampledso.aggregate.hullo
+sampledso.aggregate.write_me
+sampledso.hordes.one
+sampledso.hordes.two
+sampledso.bad.unknown
+sampledso.bad.nosupport
+sampledso.bad.novalues
+sampledso.wrap.long
+sampledso.wrap.ulong
+sampledso.wrap.longlong
+sampledso.wrap.ulonglong
+sampledso.dodgey.control
+sampledso.dodgey.value
+sampledso.dynamic.counter
+sampledso.dynamic.discrete
+sampledso.dynamic.instant
+sampledso.dynamic.meta.metric
+sampledso.dynamic.meta.pmdesc.type
+sampledso.dynamic.meta.pmdesc.indom
+sampledso.dynamic.meta.pmdesc.sem
+sampledso.dynamic.meta.pmdesc.units
+sampledso.scale_step.bytes_up
+sampledso.scale_step.bytes_down
+sampledso.scale_step.count_up
+sampledso.scale_step.count_down
+sampledso.scale_step.time_up_secs
+sampledso.scale_step.time_up_nanosecs
+sampledso.scale_step.none_up
+sampledso.const_rate.value
+sampledso.const_rate.gradient
+sampledso.many.count
+sampledso.many.int
+sampledso.scramble.version
+sampledso.scramble.bin
+sampledso.percontext.pdu
+sampledso.percontext.recv_pdu
+sampledso.percontext.xmit_pdu
+sampledso.percontext.control.ctx
+sampledso.percontext.control.active
+sampledso.percontext.control.start
+sampledso.percontext.control.end
+sampledso.event.records
+sampledso.event.highres_records
+sampledso.event.no_indom_records
+sampledso.event.reset
+sampledso.event.reset_highres
+sampledso.event.type
+sampledso.event.param_32
+sampledso.event.param_u32
+sampledso.event.param_64
+sampledso.event.param_u64
+sampledso.event.param_float
+sampledso.event.param_double
+sampledso.event.param_string
+sampledso.event.param_aggregate
+sampledso.one
+sampledso.suba.two
+sampledso.suba.three
+sampledso.suba.subb.four
+sampledso.suba.subb.subc.subd.five
+sampledso.suba.subb.subc.subd.six
+=== -L -f sampledso ===
+
+sampledso.one
+ value 1
+
+sampledso.suba.two
+ value 2
+
+sampledso.suba.three
+ value 3
+
+sampledso.suba.subb.four
+ value 4
+
+sampledso.suba.subb.subc.subd.five
+ value 5
+
+sampledso.suba.subb.subc.subd.six
+ value 6
+=== -n .../root -L ===
+sampledso.control
+sampledso.daemon_pid
+sampledso.seconds
+sampledso.milliseconds
+sampledso.load
+sampledso.colour
+sampledso.darkness
+sampledso.bin
+sampledso.bucket
+sampledso.part_bin
+sampledso.bogus_bin
+sampledso.drift
+sampledso.step
+sampledso.step_counter
+sampledso.mirage
+sampledso.mirage_longlong
+sampledso.write_me
+sampledso.lights
+sampledso.magnitude
+sampledso.sysinfo
+sampledso.pdu
+sampledso.recv_pdu
+sampledso.xmit_pdu
+sampledso.noinst
+sampledso.needprofile
+sampledso.not_ready
+sampledso.rapid
+sampledso.error_code
+sampledso.error_check
+sampledso.bigid
+sampledso.byte_ctr
+sampledso.byte_rate
+sampledso.kbyte_ctr
+sampledso.kbyte_rate
+sampledso.byte_rate_perhour
+sampledso.datasize
+sampledso.secret.foo.bar.max.redirect
+sampledso.secret.foo.bar.three
+sampledso.secret.foo.bar.four
+sampledso.secret.foo.bar.grunt.five
+sampledso.secret.foo.bar.grunt.snort.six
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+sampledso.secret.foo.one
+sampledso.secret.foo.two
+sampledso.secret.bar
+sampledso.long.one
+sampledso.long.ten
+sampledso.long.hundred
+sampledso.long.million
+sampledso.long.write_me
+sampledso.long.bin
+sampledso.long.bin_ctr
+sampledso.ulong.one
+sampledso.ulong.ten
+sampledso.ulong.hundred
+sampledso.ulong.million
+sampledso.ulong.write_me
+sampledso.ulong.bin
+sampledso.ulong.bin_ctr
+sampledso.ulong.count.base
+sampledso.ulong.count.deca
+sampledso.ulong.count.hecto
+sampledso.ulong.count.kilo
+sampledso.ulong.count.mega
+sampledso.longlong.one
+sampledso.longlong.ten
+sampledso.longlong.hundred
+sampledso.longlong.million
+sampledso.longlong.write_me
+sampledso.longlong.bin
+sampledso.longlong.bin_ctr
+sampledso.ulonglong.one
+sampledso.ulonglong.ten
+sampledso.ulonglong.hundred
+sampledso.ulonglong.million
+sampledso.ulonglong.write_me
+sampledso.ulonglong.bin
+sampledso.ulonglong.bin_ctr
+sampledso.float.one
+sampledso.float.ten
+sampledso.float.hundred
+sampledso.float.million
+sampledso.float.write_me
+sampledso.float.bin
+sampledso.float.bin_ctr
+sampledso.double.one
+sampledso.double.ten
+sampledso.double.hundred
+sampledso.double.million
+sampledso.double.write_me
+sampledso.double.bin
+sampledso.double.bin_ctr
+sampledso.string.null
+sampledso.string.hullo
+sampledso.string.write_me
+sampledso.aggregate.null
+sampledso.aggregate.hullo
+sampledso.aggregate.write_me
+sampledso.hordes.one
+sampledso.hordes.two
+sampledso.bad.unknown
+sampledso.bad.nosupport
+sampledso.bad.novalues
+sampledso.wrap.long
+sampledso.wrap.ulong
+sampledso.wrap.longlong
+sampledso.wrap.ulonglong
+sampledso.dodgey.control
+sampledso.dodgey.value
+sampledso.dynamic.counter
+sampledso.dynamic.discrete
+sampledso.dynamic.instant
+sampledso.dynamic.meta.metric
+sampledso.dynamic.meta.pmdesc.type
+sampledso.dynamic.meta.pmdesc.indom
+sampledso.dynamic.meta.pmdesc.sem
+sampledso.dynamic.meta.pmdesc.units
+sampledso.scale_step.bytes_up
+sampledso.scale_step.bytes_down
+sampledso.scale_step.count_up
+sampledso.scale_step.count_down
+sampledso.scale_step.time_up_secs
+sampledso.scale_step.time_up_nanosecs
+sampledso.scale_step.none_up
+sampledso.const_rate.value
+sampledso.const_rate.gradient
+sampledso.many.count
+sampledso.many.int
+sampledso.scramble.version
+sampledso.scramble.bin
+sampledso.percontext.pdu
+sampledso.percontext.recv_pdu
+sampledso.percontext.xmit_pdu
+sampledso.percontext.control.ctx
+sampledso.percontext.control.active
+sampledso.percontext.control.start
+sampledso.percontext.control.end
+sampledso.event.records
+sampledso.event.highres_records
+sampledso.event.no_indom_records
+sampledso.event.reset
+sampledso.event.reset_highres
+sampledso.event.type
+sampledso.event.param_32
+sampledso.event.param_u32
+sampledso.event.param_64
+sampledso.event.param_u64
+sampledso.event.param_float
+sampledso.event.param_double
+sampledso.event.param_string
+sampledso.event.param_aggregate
+sampledso.one
+sampledso.suba.two
+sampledso.suba.three
+sampledso.suba.subb.four
+sampledso.suba.subb.subc.subd.five
+sampledso.suba.subb.subc.subd.six
+=== -n .../root ===
+Name space load: N.NN msec
+pmNameAll(sampledso.secret): Unknown or illegal metric identifier
+
+=== -L sampledso.one.bad ===
+Error: sampledso.one.bad: Unknown metric name
+=== -L -f sampledso.one.bad ===
+=== -n .../root -L ===
+Error: sampledso.one.bad: Unknown metric name
+=== -n .../root ===
+Name space load: N.NN msec
+
+=== -L sampledso.suba.subb.subc.bad ===
+Error: sampledso.suba.subb.subc.bad: Unknown metric name
+=== -L -f sampledso.suba.subb.subc.bad ===
+=== -n .../root -L ===
+Error: sampledso.suba.subb.subc.bad: Unknown metric name
+=== -n .../root ===
+Name space load: N.NN msec
+
+Splice-n-dice into existing PMNS ...
+
+derived = sample.long.one
+derived_tree.ten = sample.long.ten
+derived_tree.hundred = sample.long.hundred
+derived_tree.sample.long.million = sample.long.million
+sample.long.derived = sample.long.one
+sample.long.foo.bar.derived = sample.long.one
+
+=== ===
+derived
+derived_tree.ten
+derived_tree.hundred
+derived_tree.sample.long.million
+sample.long.derived
+sample.long.foo.bar.derived
+
+=== derived ===
+derived
+
+=== derived_tree ===
+derived_tree.ten
+derived_tree.hundred
+derived_tree.sample.long.million
+
+=== sample ===
+sample.long.derived
+sample.long.foo.bar.derived
+
+Check diags ...
+derived.tree.one = sample.long.one
+derived.tree.ten = sample.long.ten
+derived.tree.hundred = sample.long.hundred
+derived.tree.a.million = sample.long.million
+derived.tree.b.million = sample.long.million
+derived.tree.b.cmillion = sample.long.million
+sample.long.derived = sample.long.one
+sample.long.foo.bar.derived = sample.long.one
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] derived.tree.one = sample.long.one
+pmRegisterDerived: register metric[1] derived.tree.ten = sample.long.ten
+pmRegisterDerived: register metric[2] derived.tree.hundred = sample.long.hundred
+pmRegisterDerived: register metric[3] derived.tree.a.million = sample.long.million
+pmRegisterDerived: register metric[4] derived.tree.b.million = sample.long.million
+pmRegisterDerived: register metric[5] derived.tree.b.cmillion = sample.long.million
+pmRegisterDerived: register metric[6] sample.long.derived = sample.long.one
+pmRegisterDerived: register metric[7] sample.long.foo.bar.derived = sample.long.one
+__dmopencontext(->ctx 0) called
+__dmopencontext: bind metric[0] derived.tree.one
+Derived metric expr dump from <addr-0>...
+expr node <addr-0> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (511.0.1 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[1] derived.tree.ten
+Derived metric expr dump from <addr-1>...
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=0
+ PMID: 29.0.11 (511.0.2 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[2] derived.tree.hundred
+Derived metric expr dump from <addr-2>...
+expr node <addr-2> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.hundred] master=0
+ PMID: 29.0.12 (511.0.3 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[3] derived.tree.a.million
+Derived metric expr dump from <addr-3>...
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.4 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[4] derived.tree.b.million
+Derived metric expr dump from <addr-4>...
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.5 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[5] derived.tree.b.cmillion
+Derived metric expr dump from <addr-5>...
+expr node <addr-5> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.million] master=0
+ PMID: 29.0.13 (511.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[6] sample.long.derived
+Derived metric expr dump from <addr-6>...
+expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (511.0.7 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[7] sample.long.foo.bar.derived
+Derived metric expr dump from <addr-7>...
+expr node <addr-7> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.one] master=0
+ PMID: 29.0.10 (511.0.8 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmgetpmid: metric "derived.tree" -> Unknown metric name
+__dmchildren: offspring[0] one (status=0)
+__dmchildren: offspring[1] ten (status=0)
+__dmchildren: offspring[2] hundred (status=0)
+__dmchildren: offspring[3] a (status=1)
+__dmchildren: offspring[4] b (status=1)
+pmGetChildren(name="derived.tree") no regular children (Unknown metric name), 5 derived children
+__dmchildren: offspring[0] one (status=0)
+__dmchildren: offspring[1] ten (status=0)
+__dmchildren: offspring[2] hundred (status=0)
+__dmchildren: offspring[3] a (status=1)
+__dmchildren: offspring[4] b (status=1)
+pmGetChildren(name="derived.tree") no regular children (Unknown metric name), 5 derived children
+__dmchildren: offspring[0] derived (status=1)
+__dmchildren: offspring[1] sample (status=1)
+pmGetChildren(name="") N regular children, 2 derived children
+__dmchildren: offspring[0] derived (status=1)
+__dmchildren: offspring[1] sample (status=1)
+pmGetChildren(name="") N regular children, 2 derived children
+pmLookupName() returns -12357 (Unknown metric name)
+derived.tree: id[0] = PM_ID_NULL
+
+pmGetChildren() returns 5
+pmGetChildrenStatus() returns 5
+
+pmGetChildren() returns N
+pmGetChildrenStatus() returns N
diff --git a/qa/257 b/qa/257
new file mode 100755
index 0000000..1544bbd
--- /dev/null
+++ b/qa/257
@@ -0,0 +1,118 @@
+#! /bin/sh
+# PCP QA Test No. 257
+# Tests out the api (uses torture_api)
+# when connecting to different hosts.
+# Initial motivation was to test the distributed PMNS.
+# This test is modelled on #112 and compares with 031.out
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ os=$1
+ echo "--- os = $os, version = 2 ---" >>$seq.full
+ cat - > $tmp.1
+
+ echo "--- unfiltered output ---" >>$seq.full
+ cat $tmp.1 >> $seq.full
+
+ _filter_torture_api <$tmp.1
+}
+
+_cmp()
+{
+ echo "differences relative to 031.out ..."
+
+ diff 031.out.${PCP_PLATFORM} $1
+}
+
+_do_tests()
+{
+ style=$1
+
+ case $style
+ in
+ -s1)
+ style_str="--- style $style (local PMNS)"
+ ;;
+ -s2)
+ style_str="--- style $style (distributed PMNS)"
+ ;;
+ esac
+
+ echo ""
+ echo "=== pmapi 32 v2, local version $style_str ===" | tee -a $seq.full
+ torture_api="src/torture_api"
+ echo "torture_api = $torture_api" >> $seq.full
+ $torture_api -v $style 2>&1 | _filter `uname -r` >$tmp.out
+ _cmp $tmp.out
+
+ echo ""
+ echo "=== pmapi 32 v2, pmcd 32 v2 $style_str ===" | tee -a $seq.full
+ torture_api="src/torture_api"
+ echo "torture_api = $torture_api" >> $seq.full
+ $torture_api -v $style -h $host_32_v2 2>&1 | _filter $host_32_v2_os >$tmp.out
+ _cmp $tmp.out
+
+ echo ""
+ echo "=== pmapi 32 v2, pmcd 64 v2 $style_str ===" | tee -a $seq.full
+ torture_api="src/torture_api"
+ echo "torture_api = $torture_api" >> $seq.full
+ $torture_api -v $style -h $host_64_v2 2>&1 | _filter $host_64_v2_os >$tmp.out
+ _cmp $tmp.out
+
+}
+
+# real QA test starts here
+rm -f $tmp.*
+rm -f $seq.full
+
+# try against variously configured hosts
+#
+# Need PCP_PLATFORM b/c the torture_api output is different
+# on different platforms at the moment.
+# => different metrics and the same metrics have different pmids
+#
+host_32_v2=`./getpmcdhosts -s $PCP_PLATFORM -b 32 -m "pmcd.version>2.0" -n 1 -a sample 2>&1`
+if [ $? -eq 1 ]; then
+ echo "$host_32_v2" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit
+fi
+echo "host_32_v2 = $host_32_v2" >> $seq.full
+host_32_v2_os=`ssh -q pcpqa@$host_32_v2 uname -r`
+
+host_64_v2=`./getpmcdhosts -s $PCP_PLATFORM -b 64 -m "pmcd.version>2.0" -n 1 -a sample 2>&1`
+if [ $? -eq 1 ]; then
+ echo "$host_64_v2" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit
+fi
+echo "host_64_v2 = $host_64_v2" >> $seq.full
+host_64_v2_os=`ssh -q pcpqa@$host_64_v2 uname -r`
+
+# make sure it's got the metrics we want for torture_api
+_check_metric sample.seconds $hosts_32_v2
+_check_metric sampledso.sysinfo $hosts_32_v2
+_check_metric sample.seconds $hosts_64_v2
+_check_metric sampledso.sysinfo $hosts_64_v2
+
+# uses libpcp2 and local PMNS
+_do_tests -s1
+
+# uses libpcp2 and possibly distributed PMNS
+_do_tests -s2
+
+status=0
diff --git a/qa/257.out b/qa/257.out
new file mode 100644
index 0000000..b1c0c97
--- /dev/null
+++ b/qa/257.out
@@ -0,0 +1,31 @@
+QA output created by 257
+
+=== pmapi 32 v2, local version --- style -s1 (local PMNS) ===
+differences relative to 031.out ...
+1d0
+< QA output created by 031
+
+=== pmapi 32 v2, pmcd 32 v2 --- style -s1 (local PMNS) ===
+differences relative to 031.out ...
+1d0
+< QA output created by 031
+
+=== pmapi 32 v2, pmcd 64 v2 --- style -s1 (local PMNS) ===
+differences relative to 031.out ...
+1d0
+< QA output created by 031
+
+=== pmapi 32 v2, local version --- style -s2 (distributed PMNS) ===
+differences relative to 031.out ...
+1d0
+< QA output created by 031
+
+=== pmapi 32 v2, pmcd 32 v2 --- style -s2 (distributed PMNS) ===
+differences relative to 031.out ...
+1d0
+< QA output created by 031
+
+=== pmapi 32 v2, pmcd 64 v2 --- style -s2 (distributed PMNS) ===
+differences relative to 031.out ...
+1d0
+< QA output created by 031
diff --git a/qa/258 b/qa/258
new file mode 100755
index 0000000..47ac3bb
--- /dev/null
+++ b/qa/258
@@ -0,0 +1,122 @@
+#! /bin/sh
+# PCP QA Test No. 258
+# pmdatrace and libpcp_trace reconnect test
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1
+LOCALHOST=`hostname`
+_needclean=true
+
+_interrupt()
+{
+ status=1
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_cleanup()
+{
+ cd $here
+ if $_needclean
+ then
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+_change_config pmlogger on
+_change_config pmcd on
+
+install_on_cleanup=false
+pminfo trace >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0
+trap "_interrupt; _cleanup" 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+# real QA test starts here
+
+cd $PCP_PMDAS_DIR/trace
+$sudo ./Install -R / </dev/null >/dev/null 2>&1
+cd $here
+
+cd $PCP_DEMOS_DIR/trace
+$sudo make app2 2>&1 >$tmp.make
+if [ $? -ne 0 ]
+then
+ echo app2 programs make failed. Heres the make output ...
+ cat $tmp.make
+else
+ echo make succeeded.
+fi
+
+# Allow app2 to reconnect asap
+#
+PCP_TRACE_RECONNECT=1
+export PCP_TRACE_RECONNECT
+
+( ( $PCP_DEMOS_DIR/trace/app2 >/dev/null 2>&1 & ) )
+sleep 3
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+# time_sucker transaction sleeps for 10 secs - wait for this
+sleep 11
+vals=`pminfo -f trace.transact.count | fgrep 'No value(s) available!' | wc -l`
+if [ $vals -eq 1 ]
+then
+ echo "Error: No value(s) available!"
+else
+ echo "Reconnect succeeded."
+echo
+fi
+
+$signal -a -s KILL app2 2>&1 >/dev/null
+
+# xcheck observe problem where value of second observation of same tag
+# gives first calls value.
+echo
+echo "=== Checking observed value matches latest call ==="
+$here/src/obs
+# these values are deteministic
+pminfo -f trace.observe.count trace.observe.value
+
+# success, all done
+status=0
+exit
diff --git a/qa/258.out b/qa/258.out
new file mode 100644
index 0000000..45686dd
--- /dev/null
+++ b/qa/258.out
@@ -0,0 +1,20 @@
+QA output created by 258
+make succeeded.
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Reconnect succeeded.
+
+
+=== Checking observed value matches latest call ===
+
+trace.observe.count
+ inst [1 or "simple"] value 2
+ inst [2 or "test"] value 1
+
+trace.observe.value
+ inst [1 or "simple"] value 76
+ inst [2 or "test"] value 888888.8888
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/259 b/qa/259
new file mode 100755
index 0000000..579b1b2
--- /dev/null
+++ b/qa/259
@@ -0,0 +1,77 @@
+#!/bin/sh
+# PCP QA Test No. 259
+#
+# Derived metrics and delta() function
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+host=`hostname`
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+export PCP_DERIVED_CONFIG=$tmp.config
+
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e 's/node 0x[0-9a-f]*/node <addr>/' \
+ -e 's/left=0x[0-9a-f]*/left=<addr>/' \
+ -e 's/right=0x[0-9a-f]*/right=<addr>/' \
+ -e "s;$tmp;TMP;g" \
+ -e "s/host: $host/host: HOST/g" \
+ -e "s/ value \"$host\"/ value \"HOST\"/g" \
+ -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# real QA test starts here
+
+echo "No errors here ..."
+cat <<End-of-File >$tmp.config
+# instantaneous
+derived.inst = delta(sample.longlong.million)
+# counter
+derived.ctr = delta(pmcd.pdu_in.total)
+End-of-File
+echo
+cat $tmp.config
+
+for args in derived.inst derived.ctr
+do
+ echo
+ pmval -t 0.25 -s 4 -ZUTC -Dfetch,derive,appl2 $args 2>&1 \
+ | tee -a $seq.full \
+ | _filter
+done
+
+echo
+echo "Errors and empty results here ..."
+cat <<End-of-File >$tmp.config
+myname.a = delta(
+myname.b = delta + 3
+myname.c = delta(sample.long.one + sample.long.hundred)
+myname.d = delta(12345)
+End-of-File
+echo
+cat $tmp.config
+
+for args in myname
+do
+ echo
+ pmval -t 0.25 -s 3 -ZUTC -Dfetch,derive,appl2 $args 2>&1 | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/259.out b/qa/259.out
new file mode 100644
index 0000000..de04dfa
--- /dev/null
+++ b/qa/259.out
@@ -0,0 +1,210 @@
+QA output created by 259
+No errors here ...
+
+# instantaneous
+derived.inst = delta(sample.longlong.million)
+# counter
+derived.ctr = delta(pmcd.pdu_in.total)
+
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] derived.inst = delta(sample.longlong.million)
+pmRegisterDerived: register metric[1] derived.ctr = delta(pmcd.pdu_in.total)
+__dmopencontext: bind metric[0] derived.inst
+__dmopencontext: bind metric[1] derived.ctr
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 2.0.21 (pmcd.hostname): numval: 1 valfmt: 1 vlist[]:
+ value "HOST"
+Note: timezone set to "TZ=UTC"
+
+__dmgetpmid: metric "derived.inst" -> PMID 511.0.1
+metric: derived.inst
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 4
+interval: 0.25 sec
+derived metrics prefetch added 1 metrics: 29.0.23
+__dmpostfetch: [0] root node 511.0.1: numval=0
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.million] master=0
+ PMID: 29.0.23 (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<number>
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.1 (derived.inst): No values returned!
+No values available
+derived metrics prefetch added 1 metrics: 29.0.23
+__dmpostfetch: [0] root node 511.0.1: numval=1 vset[0]: inst=-1 ll=0
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<number>
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.million] master=0
+ PMID: 29.0.23 (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<number> (last inst=-1, val=<number>)
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.1 (derived.inst): numval: 1 valfmt: 1 vlist[]:
+ value 0
+ 0
+derived metrics prefetch added 1 metrics: 29.0.23
+__dmpostfetch: [0] root node 511.0.1: numval=1 vset[0]: inst=-1 ll=0
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<number>
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.million] master=0
+ PMID: 29.0.23 (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<number> (last inst=-1, val=<number>)
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.1 (derived.inst): numval: 1 valfmt: 1 vlist[]:
+ value 0
+ 0
+derived metrics prefetch added 1 metrics: 29.0.23
+__dmpostfetch: [0] root node 511.0.1: numval=1 vset[0]: inst=-1 ll=0
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<number>
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.million] master=0
+ PMID: 29.0.23 (29.0.23 from pmDesc) numval: 1
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+[0] inst=-1, val=<number> (last inst=-1, val=<number>)
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.1 (derived.inst): numval: 1 valfmt: 1 vlist[]:
+ value 0
+ 0
+
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] derived.inst = delta(sample.longlong.million)
+pmRegisterDerived: register metric[1] derived.ctr = delta(pmcd.pdu_in.total)
+__dmopencontext: bind metric[0] derived.inst
+__dmopencontext: bind metric[1] derived.ctr
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 2.0.21 (pmcd.hostname): numval: 1 valfmt: 1 vlist[]:
+ value "HOST"
+Note: timezone set to "TZ=UTC"
+
+__dmgetpmid: metric "derived.ctr" -> PMID 511.0.2
+metric: derived.ctr
+host: HOST
+semantics: instantaneous value
+units: count
+samples: 4
+interval: 0.25 sec
+derived metrics prefetch added 1 metrics: 2.1.16
+__dmpostfetch: [0] root node 511.0.2: numval=0
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+[0] inst=-1, val=<number>
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.2 (derived.ctr): No values returned!
+No values available
+derived metrics prefetch added 1 metrics: 2.1.16
+__dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=-1 u=2
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+[0] inst=-1, val=<number>
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+[0] inst=-1, val=<number> (last inst=-1, val=<number>)
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.2 (derived.ctr): numval: 1 valfmt: 0 vlist[]:
+ value 2
+ 2
+derived metrics prefetch added 1 metrics: 2.1.16
+__dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=-1 u=3
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+[0] inst=-1, val=<number>
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+[0] inst=-1, val=<number> (last inst=-1, val=<number>)
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.2 (derived.ctr): numval: 1 valfmt: 0 vlist[]:
+ value 3
+ 3
+derived metrics prefetch added 1 metrics: 2.1.16
+__dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=-1 u=3
+expr node <addr> type=DELTA left=<addr> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+[0] inst=-1, val=<number>
+expr node <addr> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+[0] inst=-1, val=<number> (last inst=-1, val=<number>)
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 511.0.2 (derived.ctr): numval: 1 valfmt: 0 vlist[]:
+ value 3
+ 3
+
+Errors and empty results here ...
+
+myname.a = delta(
+myname.b = delta + 3
+myname.c = delta(sample.long.one + sample.long.hundred)
+myname.d = delta(12345)
+
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+[TMP.config:1] Error: pmRegisterDerived(myname.a, ...) syntax error
+ delta(
+ ^
+End of input
+pmRegisterDerived: register metric[0] myname.b = delta + 3
+[TMP.config:3] Error: pmRegisterDerived(myname.c, ...) syntax error
+ delta(sample.long.one + sample.long.hundred)
+ ^
+[TMP.config:4] Error: pmRegisterDerived(myname.d, ...) syntax error
+ delta(12345)
+ ^
+__dmgetpmid: metric "delta" -> Unknown metric name
+bind_expr: error: derived metric myname.b: operand: delta: Unknown metric name
+pmFetch returns ...
+TIMESTAMP ... numpmid: 1
+ 2.0.21 (pmcd.hostname): numval: 1 valfmt: 1 vlist[]:
+ value "HOST"
+Note: timezone set to "TZ=UTC"
+
+__dmgetpmid: metric "myname" -> Unknown metric name
+pmval: pmLookupName(myname): Unknown metric name
diff --git a/qa/260 b/qa/260
new file mode 100755
index 0000000..438ca6b
--- /dev/null
+++ b/qa/260
@@ -0,0 +1,96 @@
+#!/bin/sh
+# PCP QA Test No. 260
+#
+# Exercise delta() for derived metrics
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+export PCP_DERIVED_CONFIG=$tmp.config
+
+# Derived metric expr dump from 0x8513a48...
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+BEGIN { n = 0 }
+# expr node 0x9edc340 type=PLUS left=0x9edc2f8 right=0x9edc370
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e "s;$tmp;TMP;"
+# -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# real QA test starts here
+
+echo "=== expression trees and pmDesc propagation ==="
+cat <<End-of-File >$tmp.config
+delta.m1 = delta(pmcd.pdu_in.total)
+delta.m2 = delta(pmcd.pdu_out.total) + sample.bigid
+delta.m3 = sample.bigid - delta(pmcd.pdu_out.total)
+delta.m4 = sample.bigid - 3 * delta(pmcd.pdu_out.total) / sample.long.ten
+delta.m5 = delta(pmcd.pdu_in.total) / ( delta(pmcd.pdu_in.total) + delta(pmcd.pdu_out.total) )
+delta.m6 = delta(pmcd.pdu_in.total) / delta(pmcd.pdu_in.total) - delta(pmcd.pdu_out.total) / delta(pmcd.pdu_in.total)
+End-of-File
+echo
+cat $tmp.config
+
+for args in delta
+do
+ echo
+ echo "=== $args ==="
+ pminfo -Dderive,appl0,appl1 -d $args >$tmp.out 2>&1
+ _filter
+done
+
+echo
+echo "=== fetch values exercises ==="
+cat <<End-of-File >$tmp.config
+d1 = delta(pmcd.pdu_in.total)
+d2 = delta(pmcd.pdu_out.total)
+ratio = delta(pmcd.pdu_in.total) / ( delta(pmcd.pdu_in.total) + delta(pmcd.pdu_out.total) )
+delta_l = delta(sample.long.hundred)
+delta_ull = delta(sample.ulonglong.hundred)
+delta_f = delta(sample.float.hundred)
+delta_d = delta(sample.double.hundred)
+End-of-File
+
+# Note: use localhost (inet) socket connection here for determinism;
+# if we do not, then there is an additional PDU sent by pmcd to the
+# sample PMDA to inform it of credentials obtained via af_unix, i.e.
+# the attribute PDUs between pmcd and pmdasample muck up the counts!
+# (pmcd.pdu_out.total includes PMDA communications).
+cat <<End-of-File \
+| pmie -h localhost -v -t 0.2 -T '+2sec' 2>&1 \
+| sed \
+ -e 's/.*Info: evaluator exiting/pmie: note - evaluator exiting/g'
+r = ratio;
+l = delta_l;
+ull = delta_ull;
+f = delta_f;
+d = delta_d;
+// in = pmcd.pdu_in.total;
+// out = pmcd.pdu_out.total;
+End-of-File
+
+# success, all done
+exit
diff --git a/qa/260.out b/qa/260.out
new file mode 100644
index 0000000..d53f890
--- /dev/null
+++ b/qa/260.out
@@ -0,0 +1,384 @@
+QA output created by 260
+=== expression trees and pmDesc propagation ===
+
+delta.m1 = delta(pmcd.pdu_in.total)
+delta.m2 = delta(pmcd.pdu_out.total) + sample.bigid
+delta.m3 = sample.bigid - delta(pmcd.pdu_out.total)
+delta.m4 = sample.bigid - 3 * delta(pmcd.pdu_out.total) / sample.long.ten
+delta.m5 = delta(pmcd.pdu_in.total) / ( delta(pmcd.pdu_in.total) + delta(pmcd.pdu_out.total) )
+delta.m6 = delta(pmcd.pdu_in.total) / delta(pmcd.pdu_in.total) - delta(pmcd.pdu_out.total) / delta(pmcd.pdu_in.total)
+
+=== delta ===
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: name="delta.m1" expr="delta(pmcd.pdu_in.total)"
+parse(1) state=P_INIT type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[0] delta.m1 = delta(pmcd.pdu_in.total)
+Derived metric expr dump from <addr-0>...
+expr node <addr-0> type=DELTA left=<addr-1> right=(nil) save_last=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=1
+pmRegisterDerived: name="delta.m2" expr="delta(pmcd.pdu_out.total) + sample.bigid"
+parse(1) state=P_INIT type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_out.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.bigid"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[1] delta.m2 = delta(pmcd.pdu_out.total) + sample.bigid
+Derived metric expr dump from <addr-2>...
+expr node <addr-2> type=PLUS left=<addr-3> right=<addr-5> save_last=0
+expr node <addr-3> type=DELTA left=<addr-4> right=(nil) save_last=0
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=1
+expr node <addr-5> type=NAME left=(nil) right=(nil) save_last=0 [sample.bigid] master=1
+pmRegisterDerived: name="delta.m3" expr="sample.bigid - delta(pmcd.pdu_out.total)"
+parse(1) state=P_INIT type=L_NAME "sample.bigid"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_out.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[2] delta.m3 = sample.bigid - delta(pmcd.pdu_out.total)
+Derived metric expr dump from <addr-6>...
+expr node <addr-6> type=MINUS left=<addr-7> right=<addr-8> save_last=0
+expr node <addr-7> type=NAME left=(nil) right=(nil) save_last=0 [sample.bigid] master=1
+expr node <addr-8> type=DELTA left=<addr-9> right=(nil) save_last=0
+expr node <addr-9> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=1
+pmRegisterDerived: name="delta.m4" expr="sample.bigid - 3 * delta(pmcd.pdu_out.total) / sample.long.ten"
+parse(1) state=P_INIT type=L_NAME "sample.bigid"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_NUMBER "3"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_out.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_NAME "sample.long.ten"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[3] delta.m4 = sample.bigid - 3 * delta(pmcd.pdu_out.total) / sample.long.ten
+Derived metric expr dump from <addr-10>...
+expr node <addr-10> type=MINUS left=<addr-11> right=<addr-12> save_last=0
+expr node <addr-11> type=NAME left=(nil) right=(nil) save_last=0 [sample.bigid] master=1
+expr node <addr-12> type=SLASH left=<addr-13> right=<addr-17> save_last=0
+expr node <addr-13> type=STAR left=<addr-14> right=<addr-15> save_last=0
+expr node <addr-14> type=NUMBER left=(nil) right=(nil) save_last=0 [3] master=1
+expr node <addr-15> type=DELTA left=<addr-16> right=(nil) save_last=0
+expr node <addr-16> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=1
+expr node <addr-17> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=1
+pmRegisterDerived: name="delta.m5" expr="delta(pmcd.pdu_in.total) / ( delta(pmcd.pdu_in.total) + delta(pmcd.pdu_out.total) )"
+parse(1) state=P_INIT type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_LPAREN "("
+parse(2) state=P_INIT type=L_DELTA "delta("
+parse(2) state=P_FUNC_OP type=L_NAME "pmcd.pdu_in.total"
+parse(2) state=P_FUNC_END type=L_RPAREN ")"
+parse(2) state=P_LEAF type=L_PLUS "+"
+parse(2) state=P_BINOP type=L_DELTA "delta("
+parse(2) state=P_FUNC_OP type=L_NAME "pmcd.pdu_out.total"
+parse(2) state=P_FUNC_END type=L_RPAREN ")"
+parse(2) state=P_LEAF type=L_RPAREN ")"
+parse(1) state=P_LEAF_PAREN type=L_EOF ""
+pmRegisterDerived: register metric[4] delta.m5 = delta(pmcd.pdu_in.total) / ( delta(pmcd.pdu_in.total) + delta(pmcd.pdu_out.total) )
+Derived metric expr dump from <addr-18>...
+expr node <addr-18> type=SLASH left=<addr-19> right=<addr-21> save_last=0
+expr node <addr-19> type=DELTA left=<addr-20> right=(nil) save_last=0
+expr node <addr-20> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=1
+expr node <addr-21> type=PLUS left=<addr-22> right=<addr-24> save_last=0
+expr node <addr-22> type=DELTA left=<addr-23> right=(nil) save_last=0
+expr node <addr-23> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=1
+expr node <addr-24> type=DELTA left=<addr-25> right=(nil) save_last=0
+expr node <addr-25> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=1
+pmRegisterDerived: name="delta.m6" expr="delta(pmcd.pdu_in.total) / delta(pmcd.pdu_in.total) - delta(pmcd.pdu_out.total) / delta(pmcd.pdu_in.total)"
+parse(1) state=P_INIT type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_out.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_DELTA "delta("
+parse(1) state=P_FUNC_OP type=L_NAME "pmcd.pdu_in.total"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[5] delta.m6 = delta(pmcd.pdu_in.total) / delta(pmcd.pdu_in.total) - delta(pmcd.pdu_out.total) / delta(pmcd.pdu_in.total)
+Derived metric expr dump from <addr-26>...
+expr node <addr-26> type=MINUS left=<addr-27> right=<addr-32> save_last=0
+expr node <addr-27> type=SLASH left=<addr-28> right=<addr-30> save_last=0
+expr node <addr-28> type=DELTA left=<addr-29> right=(nil) save_last=0
+expr node <addr-29> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=1
+expr node <addr-30> type=DELTA left=<addr-31> right=(nil) save_last=0
+expr node <addr-31> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=1
+expr node <addr-32> type=SLASH left=<addr-33> right=<addr-35> save_last=0
+expr node <addr-33> type=DELTA left=<addr-34> right=(nil) save_last=0
+expr node <addr-34> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=1
+expr node <addr-35> type=DELTA left=<addr-36> right=(nil) save_last=0
+expr node <addr-36> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=1
+__dmopencontext(->ctx 0) called
+__dmopencontext: bind metric[0] delta.m1
+Derived metric expr dump from <addr-37>...
+expr node <addr-37> type=DELTA left=<addr-38> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-38> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+__dmopencontext: bind metric[1] delta.m2
+Derived metric expr dump from <addr-39>...
+expr node <addr-39> type=PLUS left=<addr-40> right=<addr-42> save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-40> type=DELTA left=<addr-41> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-41> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=0
+ PMID: 2.2.16 (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-42> type=NAME left=(nil) right=(nil) save_last=0 [sample.bigid] master=0
+ PMID: 29.0.1023 (29.0.1023 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+__dmopencontext: bind metric[2] delta.m3
+Derived metric expr dump from <addr-43>...
+expr node <addr-43> type=MINUS left=<addr-44> right=<addr-45> save_last=0
+ PMID: PM_ID_NULL (511.0.3 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-44> type=NAME left=(nil) right=(nil) save_last=0 [sample.bigid] master=0
+ PMID: 29.0.1023 (29.0.1023 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-45> type=DELTA left=<addr-46> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-46> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=0
+ PMID: 2.2.16 (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+__dmopencontext: bind metric[3] delta.m4
+Derived metric expr dump from <addr-47>...
+expr node <addr-47> type=MINUS left=<addr-48> right=<addr-49> save_last=0
+ PMID: PM_ID_NULL (511.0.4 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-48> type=NAME left=(nil) right=(nil) save_last=0 [sample.bigid] master=0
+ PMID: 29.0.1023 (29.0.1023 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-49> type=SLASH left=<addr-50> right=<addr-54> save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-50> type=STAR left=<addr-51> right=<addr-52> save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-51> type=NUMBER left=(nil) right=(nil) save_last=0 [3] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-52> type=DELTA left=<addr-53> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-53> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=0
+ PMID: 2.2.16 (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-54> type=NAME left=(nil) right=(nil) save_last=0 [sample.long.ten] master=0
+ PMID: 29.0.11 (29.0.11 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[4] delta.m5
+Derived metric expr dump from <addr-55>...
+expr node <addr-55> type=SLASH left=<addr-56> right=<addr-58> save_last=0
+ PMID: PM_ID_NULL (511.0.5 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-56> type=DELTA left=<addr-57> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-57> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-58> type=PLUS left=<addr-59> right=<addr-61> save_last=0
+ PMID: PM_ID_NULL (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-59> type=DELTA left=<addr-60> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-60> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-61> type=DELTA left=<addr-62> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-62> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=0
+ PMID: 2.2.16 (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+__dmopencontext: bind metric[5] delta.m6
+Derived metric expr dump from <addr-63>...
+expr node <addr-63> type=MINUS left=<addr-64> right=<addr-69> save_last=0
+ PMID: PM_ID_NULL (511.0.6 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-64> type=SLASH left=<addr-65> right=<addr-67> save_last=0
+ PMID: PM_ID_NULL (2.1.16 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-65> type=DELTA left=<addr-66> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-66> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-67> type=DELTA left=<addr-68> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-68> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-69> type=SLASH left=<addr-70> right=<addr-72> save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-70> type=DELTA left=<addr-71> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-71> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_out.total] master=0
+ PMID: 2.2.16 (2.2.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-72> type=DELTA left=<addr-73> right=(nil) save_last=0
+ PMID: PM_ID_NULL (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-73> type=NAME left=(nil) right=(nil) save_last=1 [pmcd.pdu_in.total] master=0
+ PMID: 2.1.16 (2.1.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+__dmgetpmid: metric "delta.m1" -> PMID 511.0.1
+__dmgetpmid: metric "delta.m2" -> PMID 511.0.2
+__dmgetpmid: metric "delta.m3" -> PMID 511.0.3
+__dmgetpmid: metric "delta.m4" -> PMID 511.0.4
+__dmgetpmid: metric "delta.m5" -> PMID 511.0.5
+__dmgetpmid: metric "delta.m6" -> PMID 511.0.6
+
+delta.m1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+delta.m2
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+delta.m3
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+delta.m4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+delta.m5
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+delta.m6
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+=== fetch values exercises ===
+r: ?
+l: ?
+ull: ?
+f: ?
+d: ?
+
+r: 0.4
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+r: 0.50
+l: 0
+ull: 0
+f: 0
+d: 0
+
+pmie: note - evaluator exiting
diff --git a/qa/261 b/qa/261
new file mode 100755
index 0000000..154d255
--- /dev/null
+++ b/qa/261
@@ -0,0 +1,91 @@
+#! /bin/sh
+# PCP QA Test No. 261
+# pmlogextract -S updates the label record?
+# also exposed interp.c and pmval problems
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3602 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+elif [ $PCP_VER -lt 3809 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.3 $seq.out || exit 1
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/^\[[0-9]* bytes]/d'
+}
+
+echo >$seq.full
+
+# real QA test starts here
+pmdumplog -z -l src/mirage
+pmdumplog -z -a src/mirage 2>&1 >>$seq.full
+
+pmlogextract -S 5min -T 5min src/mirage $tmp
+
+echo "--- copyied archive ---" >>$seq.full
+pmdumplog -z -a $tmp | tee -a $seq.full | _filter
+
+# Note on the bizarre 4.0001m termination intervals below ...
+# Using _exactly_ 4m introduces a floating point arithmetic instability
+# where the number of pmval samples could be 8 or 9 depending on how
+# the compiler chooses to generate code (different gcc versions produce
+# different answers) ... making it _slightly_ bigger avoids this problem
+#
+echo
+echo "Check metrics using pmval ..."
+for metric in sample.mirage
+do
+ echo "$metric:"
+ pmval -z -t 30 -S @10:51:07.407 -T 4.0001min -a src/mirage -i m-00,m-21,m-22,m-23,m-24 $metric >$tmp.orig
+ pmval -z -t 30 -T 4.0001min -a $tmp -i m-00,m-21,m-22,m-23,m-24 $metric >$tmp.new
+ sed -e "s;$tmp;TMP;g" $tmp.new \
+ | diff -c $tmp.orig - \
+ | sed -e "s;$tmp;TMP;g" \
+ -e '1,2s/ .*/ TODAY/' \
+ -e 's/--- -/--- Standard Input/'
+ echo "--- $metric, src/mirage archive, instances" >>$seq.full
+ cat $tmp.orig >>$seq.full
+ echo "--- $metric, copied archive, instances" >>$seq.full
+ cat $tmp.new >>$seq.full
+done
+
+echo
+for metric in sample.bin sample.drift
+do
+ echo "$metric:"
+ pmval -z -t 30 -S @10:51:07.407 -T 4.0001min -a src/mirage $metric >$tmp.orig
+ pmval -z -t 30 -T 4.0001min -a $tmp $metric >$tmp.new
+ sed -e "s;$tmp;TMP;g" $tmp.new \
+ | diff -c $tmp.orig - \
+ | sed -e "s;$tmp;TMP;g" \
+ -e '1,2s/ .*/ TODAY/' \
+ -e 's/--- -/--- Standard Input/'
+ echo "--- $metric, src/mirage archive, NO instances" >>$seq.full
+ cat $tmp.orig >>$seq.full
+ echo "--- $metric, copied archive, NO instances" >>$seq.full
+ cat $tmp.new >>$seq.full
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/261.out.1 b/qa/261.out.1
new file mode 100644
index 0000000..0c8b271
--- /dev/null
+++ b/qa/261.out.1
@@ -0,0 +1,285 @@
+QA output created by 261
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:45:08.440 1997
+ ending Tue Feb 25 11:05:07.411 1997
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:51:07.407 1997
+ ending Tue Feb 25 10:55:07.409 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+
+Instance Domains in the Log ...
+InDom: 29.2
+10:51:07.407 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 29.3
+10:51:07.407 6 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+10:52:07.407 8 instances
+ 0 or "m-00"
+ 12 or "m-12"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 20 or "m-20"
+ 21 or "m-21"
+10:53:07.408 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+10:54:07.408 8 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+ 23 or "m-23"
+10:55:07.409 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 19 or "m-19"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+10:51:07.407 0 132 132
+10:52:07.407 0 565 316
+10:53:07.408 0 697 500
+10:54:07.408 0 816 692
+10:55:07.409 0 948 892
+10:55:07.409 0 1067 1084
+ Error: timestamp went backwards in time
+
+10:51:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 99
+ inst [15 or "m-15"] value 1598
+ inst [17 or "m-17"] value 1797
+ inst [18 or "m-18"] value 1896
+ inst [19 or "m-19"] value 1995
+ inst [21 or "m-21"] value 2194
+ 29.0.7 (sample.drift): value 74
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:52:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 93
+ inst [15 or "m-15"] value 1592
+ inst [17 or "m-17"] value 1791
+ inst [18 or "m-18"] value 1890
+ inst [19 or "m-19"] value 1989
+ inst [21 or "m-21"] value 2188
+ 29.0.7 (sample.drift): value 75
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:53:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 87
+ inst [15 or "m-15"] value 1586
+ inst [17 or "m-17"] value 1785
+ inst [18 or "m-18"] value 1884
+ inst [19 or "m-19"] value 1983
+ inst [21 or "m-21"] value 2182
+ inst [22 or "m-22"] value 2281
+ 29.0.7 (sample.drift): value 86
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:54:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 80
+ inst [15 or "m-15"] value 1579
+ inst [17 or "m-17"] value 1778
+ inst [18 or "m-18"] value 1877
+ inst [19 or "m-19"] value 1976
+ inst [21 or "m-21"] value 2175
+ inst [22 or "m-22"] value 2274
+ inst [23 or "m-23"] value 2373
+ 29.0.7 (sample.drift): value 119
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:55:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 72
+ inst [15 or "m-15"] value 1571
+ inst [17 or "m-17"] value 1770
+ inst [19 or "m-19"] value 1969
+ inst [22 or "m-22"] value 2268
+ inst [23 or "m-23"] value 2367
+ inst [24 or "m-24"] value 2466
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+Check metrics using pmval ...
+sample.mirage:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.mirage
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.mirage
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+***************
+*** 11,17 ****
+ interval: 30.00 sec
+
+ m-00 m-21 m-22 m-23 m-24
+! 10:51:07.407 7 2200 ? ? ?
+ 10:51:37.407 99 2194 ? ? ?
+ 10:52:07.407 99 2194 ? ? ?
+ 10:52:37.407 93 2188 ? ? ?
+--- 11,17 ----
+ interval: 30.00 sec
+
+ m-00 m-21 m-22 m-23 m-24
+! 10:51:07.407 99 2194 ? ? ?
+ 10:51:37.407 99 2194 ? ? ?
+ 10:52:07.407 99 2194 ? ? ?
+ 10:52:37.407 93 2188 ? ? ?
+
+sample.bin:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.bin
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.bin
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+sample.drift:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+***************
+*** 9,15 ****
+ units: none
+ samples: 9
+ interval: 30.00 sec
+! 10:51:07.407 26
+ 10:51:37.407 74
+ 10:52:07.407 74
+ 10:52:37.407 75
+--- 9,15 ----
+ units: none
+ samples: 9
+ interval: 30.00 sec
+! 10:51:07.407 74
+ 10:51:37.407 74
+ 10:52:07.407 74
+ 10:52:37.407 75
diff --git a/qa/261.out.2 b/qa/261.out.2
new file mode 100644
index 0000000..f55175f
--- /dev/null
+++ b/qa/261.out.2
@@ -0,0 +1,284 @@
+QA output created by 261
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:45:08.440 1997
+ ending Tue Feb 25 11:05:07.411 1997
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:51:07.407 1997
+ ending Tue Feb 25 10:55:07.409 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+
+Instance Domains in the Log ...
+InDom: 29.2
+10:51:07.407 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 29.3
+10:51:07.407 6 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+10:52:07.407 8 instances
+ 0 or "m-00"
+ 12 or "m-12"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 20 or "m-20"
+ 21 or "m-21"
+10:53:07.408 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+10:54:07.408 8 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+ 23 or "m-23"
+10:55:07.409 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 19 or "m-19"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+10:51:07.407 0 132 132
+10:52:07.407 0 565 316
+10:53:07.408 0 697 500
+10:54:07.408 0 816 692
+10:55:07.409 0 948 892
+10:55:07.409 0 1067 1084
+
+10:51:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 99
+ inst [15 or "m-15"] value 1598
+ inst [17 or "m-17"] value 1797
+ inst [18 or "m-18"] value 1896
+ inst [19 or "m-19"] value 1995
+ inst [21 or "m-21"] value 2194
+ 29.0.7 (sample.drift): value 74
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:52:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 93
+ inst [15 or "m-15"] value 1592
+ inst [17 or "m-17"] value 1791
+ inst [18 or "m-18"] value 1890
+ inst [19 or "m-19"] value 1989
+ inst [21 or "m-21"] value 2188
+ 29.0.7 (sample.drift): value 75
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:53:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 87
+ inst [15 or "m-15"] value 1586
+ inst [17 or "m-17"] value 1785
+ inst [18 or "m-18"] value 1884
+ inst [19 or "m-19"] value 1983
+ inst [21 or "m-21"] value 2182
+ inst [22 or "m-22"] value 2281
+ 29.0.7 (sample.drift): value 86
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:54:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 80
+ inst [15 or "m-15"] value 1579
+ inst [17 or "m-17"] value 1778
+ inst [18 or "m-18"] value 1877
+ inst [19 or "m-19"] value 1976
+ inst [21 or "m-21"] value 2175
+ inst [22 or "m-22"] value 2274
+ inst [23 or "m-23"] value 2373
+ 29.0.7 (sample.drift): value 119
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:55:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 72
+ inst [15 or "m-15"] value 1571
+ inst [17 or "m-17"] value 1770
+ inst [19 or "m-19"] value 1969
+ inst [22 or "m-22"] value 2268
+ inst [23 or "m-23"] value 2367
+ inst [24 or "m-24"] value 2466
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+Check metrics using pmval ...
+sample.mirage:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.mirage
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.mirage
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+***************
+*** 11,17 ****
+ interval: 30.00 sec
+
+ m-00 m-21 m-22 m-23 m-24
+! 10:51:07.407 7 2200 ? ? ?
+ 10:51:37.407 99 2194 ? ? ?
+ 10:52:07.407 99 2194 ? ? ?
+ 10:52:37.407 93 2188 ? ? ?
+--- 11,17 ----
+ interval: 30.00 sec
+
+ m-00 m-21 m-22 m-23 m-24
+! 10:51:07.407 99 2194 ? ? ?
+ 10:51:37.407 99 2194 ? ? ?
+ 10:52:07.407 99 2194 ? ? ?
+ 10:52:37.407 93 2188 ? ? ?
+
+sample.bin:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.bin
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.bin
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+sample.drift:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+***************
+*** 9,15 ****
+ units: none
+ samples: 9
+ interval: 30.00 sec
+! 10:51:07.407 26
+ 10:51:37.407 74
+ 10:52:07.407 74
+ 10:52:37.407 75
+--- 9,15 ----
+ units: none
+ samples: 9
+ interval: 30.00 sec
+! 10:51:07.407 74
+ 10:51:37.407 74
+ 10:52:07.407 74
+ 10:52:37.407 75
diff --git a/qa/261.out.3 b/qa/261.out.3
new file mode 100644
index 0000000..6a49999
--- /dev/null
+++ b/qa/261.out.3
@@ -0,0 +1,274 @@
+QA output created by 261
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:45:08.440 1997
+ ending Tue Feb 25 11:05:07.411 1997
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:51:07.407 1997
+ ending Tue Feb 25 10:55:07.409 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+
+Instance Domains in the Log ...
+InDom: 29.2
+10:51:07.407 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 29.3
+10:51:07.407 6 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+10:53:07.408 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+10:54:07.408 8 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+ 23 or "m-23"
+10:55:07.409 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 19 or "m-19"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+10:51:07.407 0 132 132
+10:53:07.408 0 565 500
+10:54:07.408 0 684 692
+10:55:07.409 0 816 892
+10:55:07.409 0 935 1084
+
+10:51:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 99
+ inst [15 or "m-15"] value 1598
+ inst [17 or "m-17"] value 1797
+ inst [18 or "m-18"] value 1896
+ inst [19 or "m-19"] value 1995
+ inst [21 or "m-21"] value 2194
+ 29.0.7 (sample.drift): value 74
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:52:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 93
+ inst [15 or "m-15"] value 1592
+ inst [17 or "m-17"] value 1791
+ inst [18 or "m-18"] value 1890
+ inst [19 or "m-19"] value 1989
+ inst [21 or "m-21"] value 2188
+ 29.0.7 (sample.drift): value 75
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:53:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 87
+ inst [15 or "m-15"] value 1586
+ inst [17 or "m-17"] value 1785
+ inst [18 or "m-18"] value 1884
+ inst [19 or "m-19"] value 1983
+ inst [21 or "m-21"] value 2182
+ inst [22 or "m-22"] value 2281
+ 29.0.7 (sample.drift): value 86
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:54:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 80
+ inst [15 or "m-15"] value 1579
+ inst [17 or "m-17"] value 1778
+ inst [18 or "m-18"] value 1877
+ inst [19 or "m-19"] value 1976
+ inst [21 or "m-21"] value 2175
+ inst [22 or "m-22"] value 2274
+ inst [23 or "m-23"] value 2373
+ 29.0.7 (sample.drift): value 119
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+10:55:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 72
+ inst [15 or "m-15"] value 1571
+ inst [17 or "m-17"] value 1770
+ inst [19 or "m-19"] value 1969
+ inst [22 or "m-22"] value 2268
+ inst [23 or "m-23"] value 2367
+ inst [24 or "m-24"] value 2466
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+Check metrics using pmval ...
+sample.mirage:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.mirage
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.mirage
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+***************
+*** 11,17 ****
+ interval: 30.00 sec
+
+ m-00 m-21 m-22 m-23 m-24
+! 10:51:07.407 7 2200 ? ? ?
+ 10:51:37.407 99 2194 ? ? ?
+ 10:52:07.407 99 2194 ? ? ?
+ 10:52:37.407 93 2188 ? ? ?
+--- 11,17 ----
+ interval: 30.00 sec
+
+ m-00 m-21 m-22 m-23 m-24
+! 10:51:07.407 99 2194 ? ? ?
+ 10:51:37.407 99 2194 ? ? ?
+ 10:52:07.407 99 2194 ? ? ?
+ 10:52:37.407 93 2188 ? ? ?
+
+sample.bin:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.bin
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.bin
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+sample.drift:
+*** TMP.orig TODAY
+--- Standard Input TODAY
+***************
+*** 1,7 ****
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+! archive: src/mirage
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+--- 1,7 ----
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+! archive: TMP
+ host: gonzo
+ start: Tue Feb 25 10:51:07 1997
+ end: Tue Feb 25 10:55:07 1997
+***************
+*** 9,15 ****
+ units: none
+ samples: 9
+ interval: 30.00 sec
+! 10:51:07.407 26
+ 10:51:37.407 74
+ 10:52:07.407 74
+ 10:52:37.407 75
+--- 9,15 ----
+ units: none
+ samples: 9
+ interval: 30.00 sec
+! 10:51:07.407 74
+ 10:51:37.407 74
+ 10:52:07.407 74
+ 10:52:37.407 75
diff --git a/qa/262 b/qa/262
new file mode 100755
index 0000000..68337db
--- /dev/null
+++ b/qa/262
@@ -0,0 +1,103 @@
+#! /bin/sh
+# PCP QA Test No. 262
+# assorted PM_CONTEXT_LOCAL sanity checks
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.config
+. ./localconfig
+
+if [ "`pmsocks echo ok 2>&1`" != ok ]
+then
+ _notrun "pmsocks is not installed and/or not configured"
+fi
+
+_filter_number()
+{
+ sed \
+ -e '/using .* kmem interface/d' \
+ -e 's/^/ /' \
+ -e '/^ #/s/#.*/# .../' \
+ -e 's/ *[0-9][0-9]*\.[0-9]*/ NUMBER/g' \
+ -e 's/ *[0-9][0-9]*/ NUMBER/g' \
+ -e 's/:[0-9][0-9]/:NUMBER/g' \
+ -e 's/NUMBER[kmgKMG]/NUMBER/g' \
+ -e 's/ pi po bi/ si so bi/' \
+ -e 's/^ //' \
+ -e 's/[ ][ ]*/ /g' \
+ -e 's/Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun/DAY/' \
+ -e 's/Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec/MONTH/'
+}
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+SOCKS_SERVER=$PCPQA_SOCKS_SERVER
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = irix ]
+then
+ PROG=pmkstat
+ cp $seq.irix $seq.out
+elif [ $PCP_PLATFORM = linux ]
+then
+ PROG=pmstat
+ cp $seq.linux $seq.out
+else
+ _notrun "Need qualified output for $PCP_PLATFORM"
+fi
+
+export SOCKS_SERVER PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT PROG
+
+# real QA test starts here
+
+echo
+echo "=== $PROG + PM_CONTEXT_HOST ==="
+$PROG -t1 -s1 2>&1 | _filter_number
+
+echo
+echo "=== $PROG + PM_CONTEXT_LOCAL ==="
+$sudo $PROG -L -t1 -s1 2>&1 | _filter_number | _filter_pmcd_log
+
+echo
+echo "=== $PROG + PM_CONTEXT_HOST + pmsocks ==="
+$sudo pmsocks $PROG -t1 -s1 2>&1 | _filter_number
+
+echo
+echo "=== $PROG + PM_CONTEXT_LOCAL + pmsocks ==="
+$sudo pmsocks $PROG -L -t1 -s1 2>&1 | _filter_number | _filter_pmcd_log
+
+echo
+echo "Expect no error messages or ?'s from pmie"
+
+echo
+echo "=== pmie + PM_CONTEXT_HOST ==="
+cat >$tmp.conf <<'End-of-File'
+kernel.all.load;
+hinv.ncpu
+End-of-File
+pmie -v -t1 -T2 <$tmp.conf 2>$tmp.err | _filter_number > $tmp.out
+cat $tmp.out $tmp.err | _show_pmie_errors
+
+echo
+echo "=== pmie + PM_CONTEXT_HOST + pmsocks ==="
+cat >$tmp.conf <<'End-of-File'
+kernel.all.load;
+hinv.ncpu
+End-of-File
+pmsocks pmie -v -t1 -T2 <$tmp.conf 2>$tmp.err | _filter_number > $tmp.out
+cat $tmp.out $tmp.err | _show_pmie_errors
+
+# success, all done
+status=0
+exit
diff --git a/qa/262.irix b/qa/262.irix
new file mode 100644
index 0000000..5e7820f
--- /dev/null
+++ b/qa/262.irix
@@ -0,0 +1,45 @@
+QA output created by 262
+
+=== pmkstat + PM_CONTEXT_HOST ===
+# ...
+ queue | memory | system | disks | cpu
+run swp| free page| scall ctxsw intr| rd wr|usr sys idl wt
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+=== pmkstat + PM_CONTEXT_LOCAL ===
+# ...
+ queue | memory | system | disks | cpu
+run swp| free page| scall ctxsw intr| rd wr|usr sys idl wt
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+=== pmkstat + PM_CONTEXT_HOST + pmsocks ===
+# ...
+ queue | memory | system | disks | cpu
+run swp| free page| scall ctxsw intr| rd wr|usr sys idl wt
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+=== pmkstat + PM_CONTEXT_LOCAL + pmsocks ===
+# ...
+ queue | memory | system | disks | cpu
+run swp| free page| scall ctxsw intr| rd wr|usr sys idl wt
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+Expect no error messages or ?'s from pmie
+
+=== pmie + PM_CONTEXT_HOST ===
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+pmie: note - evaluator exiting
+
+=== pmie + PM_CONTEXT_HOST + pmsocks ===
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+pmie: note - evaluator exiting
diff --git a/qa/262.linux b/qa/262.linux
new file mode 100644
index 0000000..b3af15a
--- /dev/null
+++ b/qa/262.linux
@@ -0,0 +1,45 @@
+QA output created by 262
+
+=== pmstat + PM_CONTEXT_HOST ===
+@ DAY MONTH NUMBER NUMBER:NUMBER:NUMBER NUMBER
+ loadavg memory swap io system cpu
+NUMBER min swpd free buff cache si so bi bo in cs us sy id
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+=== pmstat + PM_CONTEXT_LOCAL ===
+@ DAY MONTH NUMBER NUMBER:NUMBER:NUMBER NUMBER
+ loadavg memory swap io system cpu
+NUMBER min swpd free buff cache si so bi bo in cs us sy id
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+=== pmstat + PM_CONTEXT_HOST + pmsocks ===
+@ DAY MONTH NUMBER NUMBER:NUMBER:NUMBER NUMBER
+ loadavg memory swap io system cpu
+NUMBER min swpd free buff cache si so bi bo in cs us sy id
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+=== pmstat + PM_CONTEXT_LOCAL + pmsocks ===
+@ DAY MONTH NUMBER NUMBER:NUMBER:NUMBER NUMBER
+ loadavg memory swap io system cpu
+NUMBER min swpd free buff cache si so bi bo in cs us sy id
+NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
+
+Expect no error messages or ?'s from pmie
+
+=== pmie + PM_CONTEXT_HOST ===
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+pmie: note - evaluator exiting
+
+=== pmie + PM_CONTEXT_HOST + pmsocks ===
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+expr_1: NUMBER NUMBER NUMBER
+expr_2: NUMBER
+pmie: note - evaluator exiting
diff --git a/qa/263 b/qa/263
new file mode 100755
index 0000000..44120b4
--- /dev/null
+++ b/qa/263
@@ -0,0 +1,153 @@
+#!/bin/sh
+# PCP QA Test No. 263
+#
+# Exercise aggregate functions for derived metrics
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+export PCP_DERIVED_CONFIG=$tmp.config
+
+# Derived metric expr dump from 0x8513a48...
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+BEGIN { n = 0 }
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e "s;$tmp;TMP;"
+# -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=0
+# ...
+# [0] inst=-1, val=49794
+_filter2()
+{
+ sed <$tmp.out -e 's/val=/val /' \
+ | awk >$tmp.sed2 '
+BEGIN { n = 0 }
+/expr.*sample\./ { want=1; next }
+want == 1 && $3 == "val" { if (seen[$4] != "y") {
+ print "s/ val=" $4 "$/ val=<value-" n ">/"
+ n++
+ seen[$4] = "y"
+ }
+ }
+$1 == "expr" { want = 0 }'
+ echo "=== sed2 ===" >>$seq.full
+ cat $tmp.sed2 >>$seq.full
+ sed -f $tmp.sed2
+}
+
+# real QA test starts here
+
+echo "=== expression trees and pmDesc propagation ==="
+cat <<End-of-File >$tmp.config
+aggr.max32 = max(sample.bin)
+aggr.min32 = min(sample.long.hundred)
+aggr.maxu32_minu32 = max(sample.const_rate.value) - min(sample.const_rate.value)
+aggr.max64_min64 = max(sample.longlong.hundred) - min(sample.longlong.hundred)
+aggr.maxu64_minu64 = max(sample.pdu) - min(sample.pdu)
+aggr.maxuf_minuf = max(sample.float.million) - min(sample.float.million)
+aggr.maxud_minud = max(sample.double.million) - min(sample.double.million)
+aggr.count32 = count(sample.bin)
+aggr.avg32 = avg(sample.bin)
+aggr.max32_x = max(sample.bin)
+aggr.min32_x = min(sample.bin)
+aggr.sum32 = sum(sample.bin)
+aggr.avgu32 = avg(sample.ulong.bin_ctr)
+aggr.countu32 = count(sample.ulong.bin_ctr)
+aggr.maxu32 = max(sample.ulong.bin_ctr)
+aggr.minu32 = min(sample.ulong.bin_ctr)
+aggr.sumu32 = sum(sample.ulong.bin_ctr)
+aggr.avgf = avg(sample.float.bin)
+aggr.countf = count(sample.float.bin)
+aggr.maxf = max(sample.float.bin)
+aggr.minf = min(sample.float.bin)
+aggr.sumf = sum(sample.float.bin)
+aggr.avg64 = avg(sample.longlong.bin_ctr)
+aggr.count64 = count(sample.longlong.bin_ctr)
+aggr.max64 = max(sample.longlong.bin_ctr)
+aggr.min64 = min(sample.longlong.bin_ctr)
+aggr.sum64 = sum(sample.longlong.bin_ctr)
+aggr.avgu64 = avg(sample.ulonglong.bin_ctr)
+aggr.countu64 = count(sample.ulonglong.bin_ctr)
+aggr.maxu64 = max(sample.ulonglong.bin_ctr)
+aggr.minu64 = min(sample.ulonglong.bin_ctr)
+aggr.sumu64 = sum(sample.ulonglong.bin_ctr)
+aggr.avgd = avg(sample.double.bin)
+aggr.countd = count(sample.double.bin)
+aggr.maxd = max(sample.double.bin)
+aggr.mind = min(sample.double.bin)
+aggr.sumd = sum(sample.double.bin)
+aggr.count_err = count(sample.needprofile)
+aggr.sum_err = sum(sample.needprofile)
+aggr.countblob = count(sample.sysinfo)
+End-of-File
+echo
+cat $tmp.config
+
+echo
+pminfo -Dderive,appl0,appl1 -d aggr >$tmp.out 2>$tmp.err
+cat $tmp.err >>$tmp.out
+_filter
+
+echo
+echo "=== fetch values exercises ==="
+echo
+pminfo -f aggr >$tmp.out 2>$tmp.err
+cat $tmp.err >>$tmp.out
+_filter | _filter2 \
+| $PCP_AWK_PROG '
+$1 == "value" && $2 ~ /^[0-9.]+$/ { if ($2 >= 499.99997 && $2 <= 500.00003) {
+ $1 = " value"
+ $2 = 500
+ }
+ }
+ { print }'
+
+echo
+echo "=== semantic errors ==="
+cat <<End-of-File >$tmp.config
+aggr.non_arith = max(sample.lights)
+End-of-File
+echo
+cat $tmp.config
+
+echo
+pminfo -Dderive,appl0,appl1 -d aggr >$tmp.out 2>$tmp.err
+cat $tmp.err >>$tmp.out
+_filter
+
+# success, all done
+exit
diff --git a/qa/263.out b/qa/263.out
new file mode 100644
index 0000000..46e77d2
--- /dev/null
+++ b/qa/263.out
@@ -0,0 +1,1245 @@
+QA output created by 263
+=== expression trees and pmDesc propagation ===
+
+aggr.max32 = max(sample.bin)
+aggr.min32 = min(sample.long.hundred)
+aggr.maxu32_minu32 = max(sample.const_rate.value) - min(sample.const_rate.value)
+aggr.max64_min64 = max(sample.longlong.hundred) - min(sample.longlong.hundred)
+aggr.maxu64_minu64 = max(sample.pdu) - min(sample.pdu)
+aggr.maxuf_minuf = max(sample.float.million) - min(sample.float.million)
+aggr.maxud_minud = max(sample.double.million) - min(sample.double.million)
+aggr.count32 = count(sample.bin)
+aggr.avg32 = avg(sample.bin)
+aggr.max32_x = max(sample.bin)
+aggr.min32_x = min(sample.bin)
+aggr.sum32 = sum(sample.bin)
+aggr.avgu32 = avg(sample.ulong.bin_ctr)
+aggr.countu32 = count(sample.ulong.bin_ctr)
+aggr.maxu32 = max(sample.ulong.bin_ctr)
+aggr.minu32 = min(sample.ulong.bin_ctr)
+aggr.sumu32 = sum(sample.ulong.bin_ctr)
+aggr.avgf = avg(sample.float.bin)
+aggr.countf = count(sample.float.bin)
+aggr.maxf = max(sample.float.bin)
+aggr.minf = min(sample.float.bin)
+aggr.sumf = sum(sample.float.bin)
+aggr.avg64 = avg(sample.longlong.bin_ctr)
+aggr.count64 = count(sample.longlong.bin_ctr)
+aggr.max64 = max(sample.longlong.bin_ctr)
+aggr.min64 = min(sample.longlong.bin_ctr)
+aggr.sum64 = sum(sample.longlong.bin_ctr)
+aggr.avgu64 = avg(sample.ulonglong.bin_ctr)
+aggr.countu64 = count(sample.ulonglong.bin_ctr)
+aggr.maxu64 = max(sample.ulonglong.bin_ctr)
+aggr.minu64 = min(sample.ulonglong.bin_ctr)
+aggr.sumu64 = sum(sample.ulonglong.bin_ctr)
+aggr.avgd = avg(sample.double.bin)
+aggr.countd = count(sample.double.bin)
+aggr.maxd = max(sample.double.bin)
+aggr.mind = min(sample.double.bin)
+aggr.sumd = sum(sample.double.bin)
+aggr.count_err = count(sample.needprofile)
+aggr.sum_err = sum(sample.needprofile)
+aggr.countblob = count(sample.sysinfo)
+
+
+aggr.max32
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.min32
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.maxu32_minu32
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.max64_min64
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.maxu64_minu64
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.maxuf_minuf
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.maxud_minud
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.count32
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.avg32
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.max32_x
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.min32_x
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.sum32
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.avgu32
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.countu32
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.maxu32
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.minu32
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.sumu32
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.avgf
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.countf
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.maxf
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.minf
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.sumf
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.avg64
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.count64
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.max64
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.min64
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.sum64
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.avgu64
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.countu64
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.maxu64
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.minu64
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.sumu64
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+aggr.avgd
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.countd
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.maxd
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.mind
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.sumd
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.count_err
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+aggr.sum_err
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+aggr.countblob
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: name="aggr.max32" expr="max(sample.bin)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[0] aggr.max32 = max(sample.bin)
+Derived metric expr dump from <addr-0>...
+expr node <addr-0> type=MAX left=<addr-1> right=(nil) save_last=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=1
+pmRegisterDerived: name="aggr.min32" expr="min(sample.long.hundred)"
+parse(1) state=P_INIT type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.long.hundred"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[1] aggr.min32 = min(sample.long.hundred)
+Derived metric expr dump from <addr-2>...
+expr node <addr-2> type=MIN left=<addr-3> right=(nil) save_last=0
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=1 [sample.long.hundred] master=1
+pmRegisterDerived: name="aggr.maxu32_minu32" expr="max(sample.const_rate.value) - min(sample.const_rate.value)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.const_rate.value"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.const_rate.value"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[2] aggr.maxu32_minu32 = max(sample.const_rate.value) - min(sample.const_rate.value)
+Derived metric expr dump from <addr-4>...
+expr node <addr-4> type=MINUS left=<addr-5> right=<addr-7> save_last=0
+expr node <addr-5> type=MAX left=<addr-6> right=(nil) save_last=0
+expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=1 [sample.const_rate.value] master=1
+expr node <addr-7> type=MIN left=<addr-8> right=(nil) save_last=0
+expr node <addr-8> type=NAME left=(nil) right=(nil) save_last=1 [sample.const_rate.value] master=1
+pmRegisterDerived: name="aggr.max64_min64" expr="max(sample.longlong.hundred) - min(sample.longlong.hundred)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.longlong.hundred"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.longlong.hundred"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[3] aggr.max64_min64 = max(sample.longlong.hundred) - min(sample.longlong.hundred)
+Derived metric expr dump from <addr-9>...
+expr node <addr-9> type=MINUS left=<addr-10> right=<addr-12> save_last=0
+expr node <addr-10> type=MAX left=<addr-11> right=(nil) save_last=0
+expr node <addr-11> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.hundred] master=1
+expr node <addr-12> type=MIN left=<addr-13> right=(nil) save_last=0
+expr node <addr-13> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.hundred] master=1
+pmRegisterDerived: name="aggr.maxu64_minu64" expr="max(sample.pdu) - min(sample.pdu)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.pdu"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.pdu"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[4] aggr.maxu64_minu64 = max(sample.pdu) - min(sample.pdu)
+Derived metric expr dump from <addr-14>...
+expr node <addr-14> type=MINUS left=<addr-15> right=<addr-17> save_last=0
+expr node <addr-15> type=MAX left=<addr-16> right=(nil) save_last=0
+expr node <addr-16> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=1
+expr node <addr-17> type=MIN left=<addr-18> right=(nil) save_last=0
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=1
+pmRegisterDerived: name="aggr.maxuf_minuf" expr="max(sample.float.million) - min(sample.float.million)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.float.million"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.float.million"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[5] aggr.maxuf_minuf = max(sample.float.million) - min(sample.float.million)
+Derived metric expr dump from <addr-19>...
+expr node <addr-19> type=MINUS left=<addr-20> right=<addr-22> save_last=0
+expr node <addr-20> type=MAX left=<addr-21> right=(nil) save_last=0
+expr node <addr-21> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.million] master=1
+expr node <addr-22> type=MIN left=<addr-23> right=(nil) save_last=0
+expr node <addr-23> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.million] master=1
+pmRegisterDerived: name="aggr.maxud_minud" expr="max(sample.double.million) - min(sample.double.million)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.double.million"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.double.million"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[6] aggr.maxud_minud = max(sample.double.million) - min(sample.double.million)
+Derived metric expr dump from <addr-24>...
+expr node <addr-24> type=MINUS left=<addr-25> right=<addr-27> save_last=0
+expr node <addr-25> type=MAX left=<addr-26> right=(nil) save_last=0
+expr node <addr-26> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.million] master=1
+expr node <addr-27> type=MIN left=<addr-28> right=(nil) save_last=0
+expr node <addr-28> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.million] master=1
+pmRegisterDerived: name="aggr.count32" expr="count(sample.bin)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[7] aggr.count32 = count(sample.bin)
+Derived metric expr dump from <addr-29>...
+expr node <addr-29> type=COUNT left=<addr-30> right=(nil) save_last=0
+expr node <addr-30> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=1
+pmRegisterDerived: name="aggr.avg32" expr="avg(sample.bin)"
+parse(1) state=P_INIT type=L_AVG "avg("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[8] aggr.avg32 = avg(sample.bin)
+Derived metric expr dump from <addr-31>...
+expr node <addr-31> type=AVG left=<addr-32> right=(nil) save_last=0
+expr node <addr-32> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=1
+pmRegisterDerived: name="aggr.max32_x" expr="max(sample.bin)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[9] aggr.max32_x = max(sample.bin)
+Derived metric expr dump from <addr-33>...
+expr node <addr-33> type=MAX left=<addr-34> right=(nil) save_last=0
+expr node <addr-34> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=1
+pmRegisterDerived: name="aggr.min32_x" expr="min(sample.bin)"
+parse(1) state=P_INIT type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[10] aggr.min32_x = min(sample.bin)
+Derived metric expr dump from <addr-35>...
+expr node <addr-35> type=MIN left=<addr-36> right=(nil) save_last=0
+expr node <addr-36> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=1
+pmRegisterDerived: name="aggr.sum32" expr="sum(sample.bin)"
+parse(1) state=P_INIT type=L_SUM "sum("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[11] aggr.sum32 = sum(sample.bin)
+Derived metric expr dump from <addr-37>...
+expr node <addr-37> type=SUM left=<addr-38> right=(nil) save_last=0
+expr node <addr-38> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=1
+pmRegisterDerived: name="aggr.avgu32" expr="avg(sample.ulong.bin_ctr)"
+parse(1) state=P_INIT type=L_AVG "avg("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[12] aggr.avgu32 = avg(sample.ulong.bin_ctr)
+Derived metric expr dump from <addr-39>...
+expr node <addr-39> type=AVG left=<addr-40> right=(nil) save_last=0
+expr node <addr-40> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.countu32" expr="count(sample.ulong.bin_ctr)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[13] aggr.countu32 = count(sample.ulong.bin_ctr)
+Derived metric expr dump from <addr-41>...
+expr node <addr-41> type=COUNT left=<addr-42> right=(nil) save_last=0
+expr node <addr-42> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.maxu32" expr="max(sample.ulong.bin_ctr)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[14] aggr.maxu32 = max(sample.ulong.bin_ctr)
+Derived metric expr dump from <addr-43>...
+expr node <addr-43> type=MAX left=<addr-44> right=(nil) save_last=0
+expr node <addr-44> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.minu32" expr="min(sample.ulong.bin_ctr)"
+parse(1) state=P_INIT type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[15] aggr.minu32 = min(sample.ulong.bin_ctr)
+Derived metric expr dump from <addr-45>...
+expr node <addr-45> type=MIN left=<addr-46> right=(nil) save_last=0
+expr node <addr-46> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.sumu32" expr="sum(sample.ulong.bin_ctr)"
+parse(1) state=P_INIT type=L_SUM "sum("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[16] aggr.sumu32 = sum(sample.ulong.bin_ctr)
+Derived metric expr dump from <addr-47>...
+expr node <addr-47> type=SUM left=<addr-48> right=(nil) save_last=0
+expr node <addr-48> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.avgf" expr="avg(sample.float.bin)"
+parse(1) state=P_INIT type=L_AVG "avg("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.float.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[17] aggr.avgf = avg(sample.float.bin)
+Derived metric expr dump from <addr-49>...
+expr node <addr-49> type=AVG left=<addr-50> right=(nil) save_last=0
+expr node <addr-50> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=1
+pmRegisterDerived: name="aggr.countf" expr="count(sample.float.bin)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.float.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[18] aggr.countf = count(sample.float.bin)
+Derived metric expr dump from <addr-51>...
+expr node <addr-51> type=COUNT left=<addr-52> right=(nil) save_last=0
+expr node <addr-52> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=1
+pmRegisterDerived: name="aggr.maxf" expr="max(sample.float.bin)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.float.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[19] aggr.maxf = max(sample.float.bin)
+Derived metric expr dump from <addr-53>...
+expr node <addr-53> type=MAX left=<addr-54> right=(nil) save_last=0
+expr node <addr-54> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=1
+pmRegisterDerived: name="aggr.minf" expr="min(sample.float.bin)"
+parse(1) state=P_INIT type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.float.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[20] aggr.minf = min(sample.float.bin)
+Derived metric expr dump from <addr-55>...
+expr node <addr-55> type=MIN left=<addr-56> right=(nil) save_last=0
+expr node <addr-56> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=1
+pmRegisterDerived: name="aggr.sumf" expr="sum(sample.float.bin)"
+parse(1) state=P_INIT type=L_SUM "sum("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.float.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[21] aggr.sumf = sum(sample.float.bin)
+Derived metric expr dump from <addr-57>...
+expr node <addr-57> type=SUM left=<addr-58> right=(nil) save_last=0
+expr node <addr-58> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=1
+pmRegisterDerived: name="aggr.avg64" expr="avg(sample.longlong.bin_ctr)"
+parse(1) state=P_INIT type=L_AVG "avg("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.longlong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[22] aggr.avg64 = avg(sample.longlong.bin_ctr)
+Derived metric expr dump from <addr-59>...
+expr node <addr-59> type=AVG left=<addr-60> right=(nil) save_last=0
+expr node <addr-60> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.count64" expr="count(sample.longlong.bin_ctr)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.longlong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[23] aggr.count64 = count(sample.longlong.bin_ctr)
+Derived metric expr dump from <addr-61>...
+expr node <addr-61> type=COUNT left=<addr-62> right=(nil) save_last=0
+expr node <addr-62> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.max64" expr="max(sample.longlong.bin_ctr)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.longlong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[24] aggr.max64 = max(sample.longlong.bin_ctr)
+Derived metric expr dump from <addr-63>...
+expr node <addr-63> type=MAX left=<addr-64> right=(nil) save_last=0
+expr node <addr-64> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.min64" expr="min(sample.longlong.bin_ctr)"
+parse(1) state=P_INIT type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.longlong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[25] aggr.min64 = min(sample.longlong.bin_ctr)
+Derived metric expr dump from <addr-65>...
+expr node <addr-65> type=MIN left=<addr-66> right=(nil) save_last=0
+expr node <addr-66> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.sum64" expr="sum(sample.longlong.bin_ctr)"
+parse(1) state=P_INIT type=L_SUM "sum("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.longlong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[26] aggr.sum64 = sum(sample.longlong.bin_ctr)
+Derived metric expr dump from <addr-67>...
+expr node <addr-67> type=SUM left=<addr-68> right=(nil) save_last=0
+expr node <addr-68> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.avgu64" expr="avg(sample.ulonglong.bin_ctr)"
+parse(1) state=P_INIT type=L_AVG "avg("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulonglong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[27] aggr.avgu64 = avg(sample.ulonglong.bin_ctr)
+Derived metric expr dump from <addr-69>...
+expr node <addr-69> type=AVG left=<addr-70> right=(nil) save_last=0
+expr node <addr-70> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.countu64" expr="count(sample.ulonglong.bin_ctr)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulonglong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[28] aggr.countu64 = count(sample.ulonglong.bin_ctr)
+Derived metric expr dump from <addr-71>...
+expr node <addr-71> type=COUNT left=<addr-72> right=(nil) save_last=0
+expr node <addr-72> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.maxu64" expr="max(sample.ulonglong.bin_ctr)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulonglong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[29] aggr.maxu64 = max(sample.ulonglong.bin_ctr)
+Derived metric expr dump from <addr-73>...
+expr node <addr-73> type=MAX left=<addr-74> right=(nil) save_last=0
+expr node <addr-74> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.minu64" expr="min(sample.ulonglong.bin_ctr)"
+parse(1) state=P_INIT type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulonglong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[30] aggr.minu64 = min(sample.ulonglong.bin_ctr)
+Derived metric expr dump from <addr-75>...
+expr node <addr-75> type=MIN left=<addr-76> right=(nil) save_last=0
+expr node <addr-76> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.sumu64" expr="sum(sample.ulonglong.bin_ctr)"
+parse(1) state=P_INIT type=L_SUM "sum("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.ulonglong.bin_ctr"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[31] aggr.sumu64 = sum(sample.ulonglong.bin_ctr)
+Derived metric expr dump from <addr-77>...
+expr node <addr-77> type=SUM left=<addr-78> right=(nil) save_last=0
+expr node <addr-78> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=1
+pmRegisterDerived: name="aggr.avgd" expr="avg(sample.double.bin)"
+parse(1) state=P_INIT type=L_AVG "avg("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.double.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[32] aggr.avgd = avg(sample.double.bin)
+Derived metric expr dump from <addr-79>...
+expr node <addr-79> type=AVG left=<addr-80> right=(nil) save_last=0
+expr node <addr-80> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=1
+pmRegisterDerived: name="aggr.countd" expr="count(sample.double.bin)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.double.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[33] aggr.countd = count(sample.double.bin)
+Derived metric expr dump from <addr-81>...
+expr node <addr-81> type=COUNT left=<addr-82> right=(nil) save_last=0
+expr node <addr-82> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=1
+pmRegisterDerived: name="aggr.maxd" expr="max(sample.double.bin)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.double.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[34] aggr.maxd = max(sample.double.bin)
+Derived metric expr dump from <addr-83>...
+expr node <addr-83> type=MAX left=<addr-84> right=(nil) save_last=0
+expr node <addr-84> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=1
+pmRegisterDerived: name="aggr.mind" expr="min(sample.double.bin)"
+parse(1) state=P_INIT type=L_MIN "min("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.double.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[35] aggr.mind = min(sample.double.bin)
+Derived metric expr dump from <addr-85>...
+expr node <addr-85> type=MIN left=<addr-86> right=(nil) save_last=0
+expr node <addr-86> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=1
+pmRegisterDerived: name="aggr.sumd" expr="sum(sample.double.bin)"
+parse(1) state=P_INIT type=L_SUM "sum("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.double.bin"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[36] aggr.sumd = sum(sample.double.bin)
+Derived metric expr dump from <addr-87>...
+expr node <addr-87> type=SUM left=<addr-88> right=(nil) save_last=0
+expr node <addr-88> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=1
+pmRegisterDerived: name="aggr.count_err" expr="count(sample.needprofile)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.needprofile"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[37] aggr.count_err = count(sample.needprofile)
+Derived metric expr dump from <addr-89>...
+expr node <addr-89> type=COUNT left=<addr-90> right=(nil) save_last=0
+expr node <addr-90> type=NAME left=(nil) right=(nil) save_last=1 [sample.needprofile] master=1
+pmRegisterDerived: name="aggr.sum_err" expr="sum(sample.needprofile)"
+parse(1) state=P_INIT type=L_SUM "sum("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.needprofile"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[38] aggr.sum_err = sum(sample.needprofile)
+Derived metric expr dump from <addr-91>...
+expr node <addr-91> type=SUM left=<addr-92> right=(nil) save_last=0
+expr node <addr-92> type=NAME left=(nil) right=(nil) save_last=1 [sample.needprofile] master=1
+pmRegisterDerived: name="aggr.countblob" expr="count(sample.sysinfo)"
+parse(1) state=P_INIT type=L_COUNT "count("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.sysinfo"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[39] aggr.countblob = count(sample.sysinfo)
+Derived metric expr dump from <addr-93>...
+expr node <addr-93> type=COUNT left=<addr-94> right=(nil) save_last=0
+expr node <addr-94> type=NAME left=(nil) right=(nil) save_last=1 [sample.sysinfo] master=1
+__dmopencontext(->ctx 0) called
+__dmopencontext: bind metric[0] aggr.max32
+Derived metric expr dump from <addr-95>...
+expr node <addr-95> type=MAX left=<addr-96> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-96> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[1] aggr.min32
+Derived metric expr dump from <addr-97>...
+expr node <addr-97> type=MIN left=<addr-98> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-98> type=NAME left=(nil) right=(nil) save_last=1 [sample.long.hundred] master=0
+ PMID: 29.0.12 (29.0.12 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[2] aggr.maxu32_minu32
+Derived metric expr dump from <addr-99>...
+expr node <addr-99> type=MINUS left=<addr-100> right=<addr-102> save_last=0
+ PMID: PM_ID_NULL (511.0.3 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-100> type=MAX left=<addr-101> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.72 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-101> type=NAME left=(nil) right=(nil) save_last=1 [sample.const_rate.value] master=0
+ PMID: 29.0.72 (29.0.72 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-102> type=MIN left=<addr-103> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.72 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-103> type=NAME left=(nil) right=(nil) save_last=1 [sample.const_rate.value] master=0
+ PMID: 29.0.72 (29.0.72 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+__dmopencontext: bind metric[3] aggr.max64_min64
+Derived metric expr dump from <addr-104>...
+expr node <addr-104> type=MINUS left=<addr-105> right=<addr-107> save_last=0
+ PMID: PM_ID_NULL (511.0.4 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-105> type=MAX left=<addr-106> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.22 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-106> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-107> type=MIN left=<addr-108> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.22 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-108> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.hundred] master=0
+ PMID: 29.0.22 (29.0.22 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[4] aggr.maxu64_minu64
+Derived metric expr dump from <addr-109>...
+expr node <addr-109> type=MINUS left=<addr-110> right=<addr-112> save_last=0
+ PMID: PM_ID_NULL (511.0.5 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-110> type=MAX left=<addr-111> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.40 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-111> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=0
+ PMID: 29.0.40 (29.0.40 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+expr node <addr-112> type=MIN left=<addr-113> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.40 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-113> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=0
+ PMID: 29.0.40 (29.0.40 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+__dmopencontext: bind metric[5] aggr.maxuf_minuf
+Derived metric expr dump from <addr-114>...
+expr node <addr-114> type=MINUS left=<addr-115> right=<addr-117> save_last=0
+ PMID: PM_ID_NULL (511.0.6 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-115> type=MAX left=<addr-116> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.18 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-116> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.million] master=0
+ PMID: 29.0.18 (29.0.18 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-117> type=MIN left=<addr-118> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.18 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-118> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.million] master=0
+ PMID: 29.0.18 (29.0.18 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[6] aggr.maxud_minud
+Derived metric expr dump from <addr-119>...
+expr node <addr-119> type=MINUS left=<addr-120> right=<addr-122> save_last=0
+ PMID: PM_ID_NULL (511.0.7 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-120> type=MAX left=<addr-121> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.28 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-121> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.million] master=0
+ PMID: 29.0.28 (29.0.28 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-122> type=MIN left=<addr-123> right=(nil) save_last=0
+ PMID: PM_ID_NULL (29.0.28 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-123> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.million] master=0
+ PMID: 29.0.28 (29.0.28 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[7] aggr.count32
+Derived metric expr dump from <addr-124>...
+expr node <addr-124> type=COUNT left=<addr-125> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.8 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-125> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[8] aggr.avg32
+Derived metric expr dump from <addr-126>...
+expr node <addr-126> type=AVG left=<addr-127> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.9 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-127> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[9] aggr.max32_x
+Derived metric expr dump from <addr-128>...
+expr node <addr-128> type=MAX left=<addr-129> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.10 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-129> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[10] aggr.min32_x
+Derived metric expr dump from <addr-130>...
+expr node <addr-130> type=MIN left=<addr-131> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.11 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-131> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[11] aggr.sum32
+Derived metric expr dump from <addr-132>...
+expr node <addr-132> type=SUM left=<addr-133> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.12 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-133> type=NAME left=(nil) right=(nil) save_last=1 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[12] aggr.avgu32
+Derived metric expr dump from <addr-134>...
+expr node <addr-134> type=AVG left=<addr-135> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.13 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-135> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=0
+ PMID: 29.0.106 (29.0.106 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[13] aggr.countu32
+Derived metric expr dump from <addr-136>...
+expr node <addr-136> type=COUNT left=<addr-137> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.14 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-137> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=0
+ PMID: 29.0.106 (29.0.106 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[14] aggr.maxu32
+Derived metric expr dump from <addr-138>...
+expr node <addr-138> type=MAX left=<addr-139> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.15 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-139> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=0
+ PMID: 29.0.106 (29.0.106 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[15] aggr.minu32
+Derived metric expr dump from <addr-140>...
+expr node <addr-140> type=MIN left=<addr-141> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.16 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-141> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=0
+ PMID: 29.0.106 (29.0.106 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[16] aggr.sumu32
+Derived metric expr dump from <addr-142>...
+expr node <addr-142> type=SUM left=<addr-143> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.17 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-143> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulong.bin_ctr] master=0
+ PMID: 29.0.106 (29.0.106 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[17] aggr.avgf
+Derived metric expr dump from <addr-144>...
+expr node <addr-144> type=AVG left=<addr-145> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.18 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-145> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=0
+ PMID: 29.0.107 (29.0.107 from pmDesc) numval: 0
+ Data Type: float InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[18] aggr.countf
+Derived metric expr dump from <addr-146>...
+expr node <addr-146> type=COUNT left=<addr-147> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.19 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-147> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=0
+ PMID: 29.0.107 (29.0.107 from pmDesc) numval: 0
+ Data Type: float InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[19] aggr.maxf
+Derived metric expr dump from <addr-148>...
+expr node <addr-148> type=MAX left=<addr-149> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.20 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-149> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=0
+ PMID: 29.0.107 (29.0.107 from pmDesc) numval: 0
+ Data Type: float InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[20] aggr.minf
+Derived metric expr dump from <addr-150>...
+expr node <addr-150> type=MIN left=<addr-151> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.21 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-151> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=0
+ PMID: 29.0.107 (29.0.107 from pmDesc) numval: 0
+ Data Type: float InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[21] aggr.sumf
+Derived metric expr dump from <addr-152>...
+expr node <addr-152> type=SUM left=<addr-153> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.22 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-153> type=NAME left=(nil) right=(nil) save_last=1 [sample.float.bin] master=0
+ PMID: 29.0.107 (29.0.107 from pmDesc) numval: 0
+ Data Type: float InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[22] aggr.avg64
+Derived metric expr dump from <addr-154>...
+expr node <addr-154> type=AVG left=<addr-155> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.23 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-155> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=0
+ PMID: 29.0.110 (29.0.110 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[23] aggr.count64
+Derived metric expr dump from <addr-156>...
+expr node <addr-156> type=COUNT left=<addr-157> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.24 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-157> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=0
+ PMID: 29.0.110 (29.0.110 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[24] aggr.max64
+Derived metric expr dump from <addr-158>...
+expr node <addr-158> type=MAX left=<addr-159> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.25 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-159> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=0
+ PMID: 29.0.110 (29.0.110 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[25] aggr.min64
+Derived metric expr dump from <addr-160>...
+expr node <addr-160> type=MIN left=<addr-161> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.26 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-161> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=0
+ PMID: 29.0.110 (29.0.110 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[26] aggr.sum64
+Derived metric expr dump from <addr-162>...
+expr node <addr-162> type=SUM left=<addr-163> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.27 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-163> type=NAME left=(nil) right=(nil) save_last=1 [sample.longlong.bin_ctr] master=0
+ PMID: 29.0.110 (29.0.110 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[27] aggr.avgu64
+Derived metric expr dump from <addr-164>...
+expr node <addr-164> type=AVG left=<addr-165> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.28 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-165> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=0
+ PMID: 29.0.112 (29.0.112 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[28] aggr.countu64
+Derived metric expr dump from <addr-166>...
+expr node <addr-166> type=COUNT left=<addr-167> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.29 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-167> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=0
+ PMID: 29.0.112 (29.0.112 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[29] aggr.maxu64
+Derived metric expr dump from <addr-168>...
+expr node <addr-168> type=MAX left=<addr-169> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.30 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-169> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=0
+ PMID: 29.0.112 (29.0.112 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[30] aggr.minu64
+Derived metric expr dump from <addr-170>...
+expr node <addr-170> type=MIN left=<addr-171> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.31 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-171> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=0
+ PMID: 29.0.112 (29.0.112 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[31] aggr.sumu64
+Derived metric expr dump from <addr-172>...
+expr node <addr-172> type=SUM left=<addr-173> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.32 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+expr node <addr-173> type=NAME left=(nil) right=(nil) save_last=1 [sample.ulonglong.bin_ctr] master=0
+ PMID: 29.0.112 (29.0.112 from pmDesc) numval: 0
+ Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[32] aggr.avgd
+Derived metric expr dump from <addr-174>...
+expr node <addr-174> type=AVG left=<addr-175> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.33 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-175> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=0
+ PMID: 29.0.113 (29.0.113 from pmDesc) numval: 0
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[33] aggr.countd
+Derived metric expr dump from <addr-176>...
+expr node <addr-176> type=COUNT left=<addr-177> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.34 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-177> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=0
+ PMID: 29.0.113 (29.0.113 from pmDesc) numval: 0
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[34] aggr.maxd
+Derived metric expr dump from <addr-178>...
+expr node <addr-178> type=MAX left=<addr-179> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.35 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-179> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=0
+ PMID: 29.0.113 (29.0.113 from pmDesc) numval: 0
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[35] aggr.mind
+Derived metric expr dump from <addr-180>...
+expr node <addr-180> type=MIN left=<addr-181> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.36 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-181> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=0
+ PMID: 29.0.113 (29.0.113 from pmDesc) numval: 0
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[36] aggr.sumd
+Derived metric expr dump from <addr-182>...
+expr node <addr-182> type=SUM left=<addr-183> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.37 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-183> type=NAME left=(nil) right=(nil) save_last=1 [sample.double.bin] master=0
+ PMID: 29.0.113 (29.0.113 from pmDesc) numval: 0
+ Data Type: double InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+__dmopencontext: bind metric[37] aggr.count_err
+Derived metric expr dump from <addr-184>...
+expr node <addr-184> type=COUNT left=<addr-185> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.38 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-185> type=NAME left=(nil) right=(nil) save_last=1 [sample.needprofile] master=0
+ PMID: 29.0.49 (29.0.49 from pmDesc) numval: 0
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+__dmopencontext: bind metric[38] aggr.sum_err
+Derived metric expr dump from <addr-186>...
+expr node <addr-186> type=SUM left=<addr-187> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.39 from pmDesc) numval: 0
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-187> type=NAME left=(nil) right=(nil) save_last=1 [sample.needprofile] master=0
+ PMID: 29.0.49 (29.0.49 from pmDesc) numval: 0
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+__dmopencontext: bind metric[39] aggr.countblob
+Derived metric expr dump from <addr-188>...
+expr node <addr-188> type=COUNT left=<addr-189> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.40 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-189> type=NAME left=(nil) right=(nil) save_last=1 [sample.sysinfo] master=0
+ PMID: 29.0.39 (29.0.39 from pmDesc) numval: 0
+ Data Type: aggregate InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmgetpmid: metric "aggr.max32" -> PMID 511.0.1
+__dmgetpmid: metric "aggr.min32" -> PMID 511.0.2
+__dmgetpmid: metric "aggr.maxu32_minu32" -> PMID 511.0.3
+__dmgetpmid: metric "aggr.max64_min64" -> PMID 511.0.4
+__dmgetpmid: metric "aggr.maxu64_minu64" -> PMID 511.0.5
+__dmgetpmid: metric "aggr.maxuf_minuf" -> PMID 511.0.6
+__dmgetpmid: metric "aggr.maxud_minud" -> PMID 511.0.7
+__dmgetpmid: metric "aggr.count32" -> PMID 511.0.8
+__dmgetpmid: metric "aggr.avg32" -> PMID 511.0.9
+__dmgetpmid: metric "aggr.max32_x" -> PMID 511.0.10
+__dmgetpmid: metric "aggr.min32_x" -> PMID 511.0.11
+__dmgetpmid: metric "aggr.sum32" -> PMID 511.0.12
+__dmgetpmid: metric "aggr.avgu32" -> PMID 511.0.13
+__dmgetpmid: metric "aggr.countu32" -> PMID 511.0.14
+__dmgetpmid: metric "aggr.maxu32" -> PMID 511.0.15
+__dmgetpmid: metric "aggr.minu32" -> PMID 511.0.16
+__dmgetpmid: metric "aggr.sumu32" -> PMID 511.0.17
+__dmgetpmid: metric "aggr.avgf" -> PMID 511.0.18
+__dmgetpmid: metric "aggr.countf" -> PMID 511.0.19
+__dmgetpmid: metric "aggr.maxf" -> PMID 511.0.20
+__dmgetpmid: metric "aggr.minf" -> PMID 511.0.21
+__dmgetpmid: metric "aggr.sumf" -> PMID 511.0.22
+__dmgetpmid: metric "aggr.avg64" -> PMID 511.0.23
+__dmgetpmid: metric "aggr.count64" -> PMID 511.0.24
+__dmgetpmid: metric "aggr.max64" -> PMID 511.0.25
+__dmgetpmid: metric "aggr.min64" -> PMID 511.0.26
+__dmgetpmid: metric "aggr.sum64" -> PMID 511.0.27
+__dmgetpmid: metric "aggr.avgu64" -> PMID 511.0.28
+__dmgetpmid: metric "aggr.countu64" -> PMID 511.0.29
+__dmgetpmid: metric "aggr.maxu64" -> PMID 511.0.30
+__dmgetpmid: metric "aggr.minu64" -> PMID 511.0.31
+__dmgetpmid: metric "aggr.sumu64" -> PMID 511.0.32
+__dmgetpmid: metric "aggr.avgd" -> PMID 511.0.33
+__dmgetpmid: metric "aggr.countd" -> PMID 511.0.34
+__dmgetpmid: metric "aggr.maxd" -> PMID 511.0.35
+__dmgetpmid: metric "aggr.mind" -> PMID 511.0.36
+__dmgetpmid: metric "aggr.sumd" -> PMID 511.0.37
+__dmgetpmid: metric "aggr.count_err" -> PMID 511.0.38
+__dmgetpmid: metric "aggr.sum_err" -> PMID 511.0.39
+__dmgetpmid: metric "aggr.countblob" -> PMID 511.0.40
+
+=== fetch values exercises ===
+
+
+aggr.max32
+ value 900
+
+aggr.min32
+ value 100
+
+aggr.maxu32_minu32
+ value 0
+
+aggr.max64_min64
+ value 0
+
+aggr.maxu64_minu64
+ value 0
+
+aggr.maxuf_minuf
+ value 0
+
+aggr.maxud_minud
+ value 0
+
+aggr.count32
+ value 9
+
+aggr.avg32
+ value 500
+
+aggr.max32_x
+ value 900
+
+aggr.min32_x
+ value 100
+
+aggr.sum32
+ value 4500
+
+aggr.avgu32
+ value 500
+
+aggr.countu32
+ value 9
+
+aggr.maxu32
+ value 900
+
+aggr.minu32
+ value 100
+
+aggr.sumu32
+ value 4500
+
+aggr.avgf
+ value 500
+
+aggr.countf
+ value 9
+
+aggr.maxf
+ value 900
+
+aggr.minf
+ value 100
+
+aggr.sumf
+ value 4500
+
+aggr.avg64
+ value 500
+
+aggr.count64
+ value 9
+
+aggr.max64
+ value 900
+
+aggr.min64
+ value 100
+
+aggr.sum64
+ value 4500
+
+aggr.avgu64
+ value 500
+
+aggr.countu64
+ value 9
+
+aggr.maxu64
+ value 900
+
+aggr.minu64
+ value 100
+
+aggr.sumu64
+ value 4500
+
+aggr.avgd
+ value 500
+
+aggr.countd
+ value 9
+
+aggr.maxd
+ value 900
+
+aggr.mind
+ value 100
+
+aggr.sumd
+ value 4500
+
+aggr.count_err
+Error: Explicit instance identifier(s) required
+
+aggr.sum_err
+Error: Explicit instance identifier(s) required
+
+aggr.countblob
+ value 1
+
+=== semantic errors ===
+
+aggr.non_arith = max(sample.lights)
+
+aggr.non_arith: pmLookupDesc: Unknown or illegal metric identifier
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: name="aggr.non_arith" expr="max(sample.lights)"
+parse(1) state=P_INIT type=L_MAX "max("
+parse(1) state=P_FUNC_OP type=L_NAME "sample.lights"
+parse(1) state=P_FUNC_END type=L_RPAREN ")"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[0] aggr.non_arith = max(sample.lights)
+Derived metric expr dump from <addr-0>...
+expr node <addr-0> type=MAX left=<addr-1> right=(nil) save_last=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [sample.lights] master=1
+__dmopencontext(->ctx 0) called
+Semantic error: derived metric aggr.non_arith: MAX(sample.lights): Non-arithmetic operand for function
+__dmgetpmid: metric "aggr.non_arith" -> PMID 511.0.1
diff --git a/qa/264 b/qa/264
new file mode 100755
index 0000000..15f257e
--- /dev/null
+++ b/qa/264
@@ -0,0 +1,31 @@
+#! /bin/sh
+# PCP QA Test No. 264
+# Tests out the PMNS support routines
+# for building the PMNS in the archives.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+src/pmnsinarchives >$tmp.out 2>$tmp.err
+cat $tmp.err
+cat $tmp.out
+
+# optional stuff if your test has verbose output to help resolve problems
+#echo
+#echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
+
+# success, all done
+status=0
+exit
diff --git a/qa/264.out b/qa/264.out
new file mode 100644
index 0000000..5f2790c
--- /dev/null
+++ b/qa/264.out
@@ -0,0 +1,51 @@
+QA output created by 264
+pmnsinarchives: _pmGetChildren: Unknown metric name
+
+*** Build up the PMNS from metrics... ***
+Number of metrics = 5
+Adding node: "abc.def.ghi"[100]
+Adding node: "abc.def.jkl"[200]
+Adding node: "abc.mno"[300]
+Adding node: "pqr.rst.uvw"[400]
+Adding node: "pqr.xyz"[500]
+
+*** Check PMNS is ok ***
+
+--- Dump out PMNS ---
+ root
+ pqr
+ xyz 500 0.0.500 0x000001f4
+ rst
+ uvw 400 0.0.400 0x00000190
+ abc
+ mno 300 0.0.300 0x0000012c
+ def
+ jkl 200 0.0.200 0x000000c8
+ ghi 100 0.0.100 0x00000064
+
+--- Test out pmLookupName ---
+100 matches for name lookup
+200 matches for name lookup
+300 matches for name lookup
+400 matches for name lookup
+500 matches for name lookup
+
+--- Test out pmNameID for matches ---
+abc.def.ghi matches for id lookup
+abc.def.jkl matches for id lookup
+abc.mno matches for id lookup
+pqr.rst.uvw matches for id lookup
+pqr.xyz matches for id lookup
+
+--- Test out pmGetChildren ---
+Children of abc:
+ mno
+ def
+Children of pqr:
+ xyz
+ rst
+Children of abc.def:
+ jkl
+ ghi
+Children of def:
+Children of abc.def.ghi:
diff --git a/qa/265 b/qa/265
new file mode 100755
index 0000000..bf7cd2d
--- /dev/null
+++ b/qa/265
@@ -0,0 +1,40 @@
+#! /bin/sh
+# PCP QA Test No. 265
+# _pmPrintValue() exerciser
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== 32-bit ==="
+src/pv
+
+echo
+echo "=== 64-bit === [note, may be fake on some systems]"
+if [ -x src/pv64 ]
+then
+ src/pv64
+else
+ cat <<End-of-File
+PM_TYPE_32: -65536 correct: -65536 (0xffff0000)
+PM_TYPE_U32: 2271560481 correct: 2271560481 (0x87654321)
+PM_TYPE_FLOAT: 123456.78 correct: 123456.78
+PM_TYPE_DOUBLE: 123456.789012345 correct: 123456.789012345
+PM_TYPE_64: -65536 correct: -65536 (0xffffffffffff0000)
+PM_TYPE_U64: 9756277977086427136 correct: 9756277977086427136 (0x8765432112340000)
+End-of-File
+fi
+
+# success, all done
+status=0
+exit
diff --git a/qa/265.out b/qa/265.out
new file mode 100644
index 0000000..3a10810
--- /dev/null
+++ b/qa/265.out
@@ -0,0 +1,16 @@
+QA output created by 265
+=== 32-bit ===
+PM_TYPE_32: -65536 correct: -65536 (0xffff0000)
+PM_TYPE_U32: 2271560481 correct: 2271560481 (0x87654321)
+PM_TYPE_FLOAT: 123456.78 correct: 123456.78
+PM_TYPE_DOUBLE: 123456.789012345 correct: 123456.789012345
+PM_TYPE_64: -65536 correct: -65536 (0xffffffffffff0000)
+PM_TYPE_U64: 9756277977086427136 correct: 9756277977086427136 (0x8765432112340000)
+
+=== 64-bit === [note, may be fake on some systems]
+PM_TYPE_32: -65536 correct: -65536 (0xffff0000)
+PM_TYPE_U32: 2271560481 correct: 2271560481 (0x87654321)
+PM_TYPE_FLOAT: 123456.78 correct: 123456.78
+PM_TYPE_DOUBLE: 123456.789012345 correct: 123456.789012345
+PM_TYPE_64: -65536 correct: -65536 (0xffffffffffff0000)
+PM_TYPE_U64: 9756277977086427136 correct: 9756277977086427136 (0x8765432112340000)
diff --git a/qa/266 b/qa/266
new file mode 100755
index 0000000..674b59f
--- /dev/null
+++ b/qa/266
@@ -0,0 +1,136 @@
+#! /bin/sh
+# PCP QA Test No. 266
+#
+# pmlogextract interactions between -S and -T and the timezone
+# Bug #466346
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ ln $seq.out.1 $seq.out
+ arch=src/960624.08.17
+ pmns="-n src/root_irix"
+else
+ # no support for V1 archives
+ ln $seq.out.2 $seq.out
+ arch=src/960624.08.17_v2
+ pmns=''
+fi
+
+_merge_filter()
+{
+ sed -e "s/.tmp.$seq-$$/TMP/"
+}
+
+_dump_filter()
+{
+ # temp file name, but also this archive is V1 and hence not endian
+ # safe ... so the strange value mappings!
+ #
+ sed -e "s/.tmp.$seq-$$/TMP/" \
+ -e "s/2928894505887203328/159819048/" \
+ -e "s/8135338249615835136/159901296/" \
+ | $PCP_AWK_PROG '
+NF==0 { skip = 0 }
+skip == 1 { next }
+ { print }
+/^[0-9]/ { print "..."; skip = 1 }'
+}
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+TZ=EST-10; export TZ
+
+echo "=== input archive ==="
+pmdumplog -L $arch | ./xlate_2_new_pmns
+echo
+pmdumplog -z -L $arch | ./xlate_2_new_pmns
+
+echo
+echo "=== window before archive start, local TZ=$TZ ==="
+rm -f $tmp.*
+pmlogextract -S@08:00:00 -T@08:01:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window before archive start, timezone of archive ==="
+rm -f $tmp.*
+pmlogextract -z -S@15:00:00 -T@15:01:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window before archive start, UTC timezone ==="
+rm -f $tmp.*
+pmlogextract -Z UTC -S@22:00:00 -T@22:00:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== empty window in archive, local TZ=$TZ ==="
+rm -f $tmp.*
+pmlogextract -S@08:35:00 -T@08:35:01 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== empty window in archive, timezone of archive ==="
+rm -f $tmp.*
+pmlogextract -z -S@15:35:00 -T@15:35:01 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== empty window in archive, UTC timezone ==="
+rm -f $tmp.*
+pmlogextract -Z UTC -S@22:35:00 -T@22:35:01 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window in archive, local TZ=$TZ ==="
+rm -f $tmp.*
+pmlogextract -S@08:35:00 -T@08:36:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $pmns $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window in archive, timezone of archive ==="
+rm -f $tmp.*
+pmlogextract -z -S@15:35:00 -T@15:36:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $pmns $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window in archive, UTC timezone ==="
+rm -f $tmp.*
+pmlogextract -Z UTC -S@22:35:00 -T@22:36:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $pmns $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window after archive end, local TZ=$TZ ==="
+rm -f $tmp.*
+pmlogextract -S@09:00:00 -T@09:01:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window after archive end, timezone of archive ==="
+rm -f $tmp.*
+pmlogextract -z -S@16:00:00 -T@16:01:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+echo
+echo "=== window after archive end, UTC timezone ==="
+rm -f $tmp.*
+pmlogextract -Z UTC -S@23:00:00 -T@23:01:00 $arch $tmp 2>&1 | _merge_filter
+pmdumplog -lm $tmp 2>&1 | _dump_filter | ./xlate_2_new_pmns
+
+# success, all done
+status=0
+exit
diff --git a/qa/266.out.1 b/qa/266.out.1
new file mode 100644
index 0000000..10732d6
--- /dev/null
+++ b/qa/266.out.1
@@ -0,0 +1,105 @@
+QA output created by 266
+=== input archive ===
+Log Label (Log Format Version 1)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:23:46.349 1996
+ ending Mon Jun 24 08:43:26.742 1996
+Archive timezone: PST8PDT
+PID for pmlogger: 22213
+
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+Log Label (Log Format Version 1)
+Performance metrics from host brutus.corp
+ commencing Sun Jun 23 15:23:46.349 1996
+ ending Sun Jun 23 15:43:26.742 1996
+Archive timezone: PST8PDT
+PID for pmlogger: 22213
+
+=== window before archive start, local TZ=EST-10 ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window before archive start, timezone of archive ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window before archive start, UTC timezone ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to "TZ=UTC"
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== empty window in archive, local TZ=EST-10 ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== empty window in archive, timezone of archive ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== empty window in archive, UTC timezone ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to "TZ=UTC"
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window in archive, local TZ=EST-10 ===
+Log Label (Log Format Version 1)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:35:46.591 1996
+ ending Mon Jun 24 08:35:46.591 1996
+
+08:35:46.591 1.82.11 (disk.all.write): value 159901296
+...
+
+=== window in archive, timezone of archive ===
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+Log Label (Log Format Version 1)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:35:46.591 1996
+ ending Mon Jun 24 08:35:46.591 1996
+
+08:35:46.591 1.82.11 (disk.all.write): value 159901296
+...
+
+=== window in archive, UTC timezone ===
+Note: timezone set to "TZ=UTC"
+
+Log Label (Log Format Version 1)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:35:46.591 1996
+ ending Mon Jun 24 08:35:46.591 1996
+
+08:35:46.591 1.82.11 (disk.all.write): value 159901296
+...
+
+=== window after archive end, local TZ=EST-10 ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window after archive end, timezone of archive ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window after archive end, UTC timezone ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to "TZ=UTC"
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
diff --git a/qa/266.out.2 b/qa/266.out.2
new file mode 100644
index 0000000..9d70dc1
--- /dev/null
+++ b/qa/266.out.2
@@ -0,0 +1,105 @@
+QA output created by 266
+=== input archive ===
+Log Label (Log Format Version 2)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:23:46.349 1996
+ ending Mon Jun 24 08:43:26.742 1996
+Archive timezone: PST8PDT
+PID for pmlogger: 22213
+
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host brutus.corp
+ commencing Sun Jun 23 15:23:46.349 1996
+ ending Sun Jun 23 15:43:26.742 1996
+Archive timezone: PST8PDT
+PID for pmlogger: 22213
+
+=== window before archive start, local TZ=EST-10 ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window before archive start, timezone of archive ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window before archive start, UTC timezone ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to "TZ=UTC"
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== empty window in archive, local TZ=EST-10 ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== empty window in archive, timezone of archive ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== empty window in archive, UTC timezone ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to "TZ=UTC"
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window in archive, local TZ=EST-10 ===
+Log Label (Log Format Version 2)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:35:46.591 1996
+ ending Mon Jun 24 08:35:46.591 1996
+
+08:35:46.591 1.82.11 (disk.all.write): value 159901296
+...
+
+=== window in archive, timezone of archive ===
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:35:46.591 1996
+ ending Mon Jun 24 08:35:46.591 1996
+
+08:35:46.591 1.82.11 (disk.all.write): value 159901296
+...
+
+=== window in archive, UTC timezone ===
+Note: timezone set to "TZ=UTC"
+
+Log Label (Log Format Version 2)
+Performance metrics from host brutus.corp
+ commencing Mon Jun 24 08:35:46.591 1996
+ ending Mon Jun 24 08:35:46.591 1996
+
+08:35:46.591 1.82.11 (disk.all.write): value 159901296
+...
+
+=== window after archive end, local TZ=EST-10 ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window after archive end, timezone of archive ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
+
+=== window after archive end, UTC timezone ===
+pmlogextract: Warning: no qualifying records found.
+Archive "TMP" not created.
+Note: timezone set to "TZ=UTC"
+
+pmdumplog: Cannot open archive "TMP": No such file or directory
diff --git a/qa/267 b/qa/267
new file mode 100755
index 0000000..b01a985
--- /dev/null
+++ b/qa/267
@@ -0,0 +1,44 @@
+#!/bin/sh
+# PCP QA Test No. 267
+# this tests for memory leaks in pmNewContext->pmDestroyContext loops
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+cd src
+if [ ! -f foo.0 ]
+then
+ echo "Error: this test needs to use archive \"foo\""
+ exit 1
+fi
+
+echo "Checking host mode ..."
+./chk_memleak -i 250 -h localhost
+status1=$?
+echo "Checking archive mode ..."
+./chk_memleak -i 250 -a foo
+status2=$?
+
+if [ $status1 -eq 0 -a $status2 -eq 0 ]
+then
+ :
+else
+ echo "Error: chk_memleak failed"
+ exit $status
+fi
+
+# success, all done
+status=0
+exit
diff --git a/qa/267.out b/qa/267.out
new file mode 100644
index 0000000..dba344d
--- /dev/null
+++ b/qa/267.out
@@ -0,0 +1,3 @@
+QA output created by 267
+Checking host mode ...
+Checking archive mode ...
diff --git a/qa/268 b/qa/268
new file mode 100755
index 0000000..b7bd594
--- /dev/null
+++ b/qa/268
@@ -0,0 +1,25 @@
+#! /bin/sh
+# PCP QA Test No. 268
+# simple endian test for bit fields in exposed PCP structs
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+if src/endian
+then
+ # success
+ status=0
+fi
+
+exit
diff --git a/qa/268.out b/qa/268.out
new file mode 100644
index 0000000..7551aab
--- /dev/null
+++ b/qa/268.out
@@ -0,0 +1,7 @@
+QA output created by 268
+pmUnits: OK
+pmValueBlock (header): OK
+__pmCred: OK
+__pmID_int: OK
+__pmInDom_int: OK
+__pmPDUInfo: OK
diff --git a/qa/269 b/qa/269
new file mode 100755
index 0000000..4c9a88f
--- /dev/null
+++ b/qa/269
@@ -0,0 +1,208 @@
+#! /bin/sh
+# PCP QA Test No. 269 (formerly 269, 406)
+# To test out wrapping for pmval
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+_reset()
+{
+ pmstore sample.control -1 > /dev/null
+ $sudo $signal -a -s HUP pmcd
+ _wait_for_pmcd
+}
+
+
+_check_wrap_off()
+{
+ tee -a $seq.full |\
+ $PCP_AWK_PROG -v expected=$tmp.expected -v debug=$debug -v tolerance=$tolerance -v num_samples=$num_samples -v mismatch_limit=$mismatch_limit '
+ BEGIN {
+ if (debug == "true")
+ debug=1;
+ else
+ debug = 0;
+ }
+ NF == 1 {
+ i++;
+ sts = getline val < expected;
+ if (debug)
+ print "Read expected value:", val;
+ if (sts < 0)
+ print "Error: error in reading expected value";
+ if (sts == 0)
+ print "Error: eof encountered in reading expected value";
+
+ if (i == 1) {
+ # ignore the first one
+ next;
+ }
+
+ if (debug)
+ print "Comparing:", val, $1
+ if (val == $1) {
+ if (debug) print "match";
+ }
+ else if ((val-tolerance) <= $1 && $1 <= (val+tolerance)) {
+ if (debug) print "match";
+ }
+ else if (val < 0) {
+ if ($1 == "?" ){
+ if (debug) print "match";
+ }
+ else {
+ print "Missing wrap !";
+ print "Got ", $1, " instead";
+ mismatch++;
+ }
+ }
+ else {
+ mismatch++;
+ if (debug || mismatch_limit==0)
+ print "mismatch: ", $1, val;
+ }
+ }
+ END {
+ if (i < num_samples) {
+ print "Did not process enough samples";
+ print "Processed:", i, "expected:", num_samples;
+ }
+ if (mismatch > mismatch_limit) {
+ print "Too many mismatches";
+ print "Number of mismatches = ", mismatch;
+ }
+ else {
+ print "Enough Matched ok";
+ }
+ }
+'
+}
+
+
+
+_check_wrap_on()
+{
+ tee -a $seq.full |\
+ $PCP_AWK_PROG -v expected=$tmp.expected -v debug=$debug -v tolerance=$tolerance -v num_samples=$num_samples -v mismatch_limit=$mismatch_limit '
+ BEGIN {
+ if (debug == "true")
+ debug=1;
+ else
+ debug = 0;
+ # just use 1st value
+ sts = getline val < expected;
+ if (debug)
+ print "Read expected value:", val;
+ if (sts < 0)
+ print "Error: error in reading expected value";
+ if (sts == 0)
+ print "Error: eof encountered in reading expected value";
+ }
+ NF == 1 {
+ i++;
+ if (i == 1) {
+ # ignore the first one
+ next;
+ }
+ if (debug)
+ print "Comparing:", val, $1
+ if (val == $1) {
+ if (debug) print "match";
+ }
+ else if ((val-tolerance) <= $1 && $1 <= (val+tolerance)) {
+ if (debug) print "match";
+ }
+ else if ($1 == "?" ){
+ print "Error: no wrapping allowed";
+ mismatch++;
+ }
+ else {
+ mismatch++;
+ if (debug || mismatch_limit == 0)
+ print "mismatch: ", $1, val;
+ }
+ }
+ END {
+ if (i < num_samples) {
+ print "Did not process enough samples";
+ print "Processed:", i, "expected:", num_samples;
+ }
+ if (mismatch > mismatch_limit) {
+ print "Too many mismatches";
+ print "Number of mismatches = ", mismatch;
+ }
+ else {
+ print "Enough Matched ok";
+ }
+ }
+'
+}
+
+_test_pmval()
+{
+ _metric=$1
+ pmval -s$num_samples sample.wrap.$_metric |
+ sed -e 's/!/?/'
+}
+
+_wrap_off()
+{
+ unset PCP_COUNTER_WRAP
+ echo "--- Wrapping OFF ---"
+}
+
+_wrap_on()
+{
+ PCP_COUNTER_WRAP=
+ export PCP_COUNTER_WRAP
+ echo "--- Wrapping ON ---"
+}
+
+# real QA test starts here
+
+debug=false
+num_samples=10
+tolerance="0.15e+09" # implies error of about 0.15 second
+mismatch_limit=1 # allow 1 mismatch
+
+# src/wrap_int -n $num_samples >$tmp.expected
+cat << 'End-of-File' >$tmp.expected
+1.074e+09
+-3.221e+09
+1.074e+09
+1.074e+09
+1.074e+09
+-3.221e+09
+1.074e+09
+1.074e+09
+1.074e+09
+-3.221e+09
+End-of-File
+
+metric="long"
+echo "--- Testing pmval ---"
+echo "--- Testing pmval ---" >> $seq.full
+_reset
+_wrap_off
+_test_pmval $metric | _check_wrap_off
+_wrap_on
+echo "-----------------------" >> $seq.full
+_test_pmval $metric | _check_wrap_on
+
+# success, all done
+status=0
+exit
diff --git a/qa/269.out b/qa/269.out
new file mode 100644
index 0000000..383092c
--- /dev/null
+++ b/qa/269.out
@@ -0,0 +1,6 @@
+QA output created by 269
+--- Testing pmval ---
+--- Wrapping OFF ---
+Enough Matched ok
+--- Wrapping ON ---
+Enough Matched ok
diff --git a/qa/270 b/qa/270
new file mode 100755
index 0000000..2ef1d02
--- /dev/null
+++ b/qa/270
@@ -0,0 +1,217 @@
+#! /bin/sh
+# PCP QA Test No. 270
+# Test `pmlogextract':
+# 1. one input file, one output file, no parameters - work
+# 2. one input file, one output file, -S, -T and -z parameters - work
+# (-S and -T are within the archive)
+# 3. one input file, one output file, -S and -z parameters - work
+# (-S is out of range)
+# 4. one input file, one output file, -T and -z parameters - work
+# (-T is out of range)
+# 5. one input file, one output file, -t parameter - work
+# 6. one input file, one output file, -c parameter - work
+# 7. one input file, one output file, -c, -S, -T & -z parameter - work
+# 8. one input file, one output file, -S, -T, -w & -z parameter - work
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_check_output()
+{
+ [ $# != 1 ] && return
+ prog=$1
+
+ if [ -f $tmp.err ]
+ then
+ if [ -s $tmp.err ]
+ then
+ echo "Warning: $prog reported the following errors:"
+ cat $tmp.err | sed -e 's/tmp\/[0-9]*/tmp\/PID/'
+ echo
+ fi
+ else
+ echo "Warning: cannot find error file \"$tmp.err\"."
+ fi
+}
+
+
+# real QA test starts here
+echo "Test pmlogextract"
+
+
+# step 1
+rm -rf $tmp.arch*
+echo
+echo " --- step 1: no flags ---"
+echo "(output depends on src/mirage{0,index,meta})"
+pmlogextract src/mirage $tmp.arch >$tmp.out 2>$tmp.err
+_check_output pmlogextract
+pmdumplog -L -z $tmp.arch | sed -e '/^PID/s/: [0-9]*/: PID/'
+
+
+# step 2
+rm -rf $tmp.arch*
+echo
+echo " --- step 2: test -S, -T and -z flags ---"
+echo "(output depends on src/mirage{0,index,meta})"
+pmlogextract -S "@10:50:00" -T "@11:00:00" -z src/mirage $tmp.arch >$tmp.out 2>$tmp.err
+_check_output pmlogextract
+pmdumplog -L -z $tmp.arch | sed -e '/^PID/s/: [0-9]*/: PID/'
+
+
+# step 3
+rm -rf $tmp.arch*
+echo
+echo " --- step 3: test -S out of range ---"
+echo "(output depends on src/mirage{0,index,meta})"
+pmlogextract -S "@10:00:00" -z src/mirage $tmp.arch >$tmp.out 2>$tmp.err
+_check_output pmlogextract
+pmdumplog -L -z $tmp.arch | sed -e '/^PID/s/: [0-9]*/: PID/'
+
+
+# step 4
+rm -rf $tmp.arch*
+echo
+echo " --- step 4: test -T out of range ---"
+echo "(output depends on src/mirage{0,index,meta})"
+pmlogextract -T "@12:00:00" -z src/mirage $tmp.arch >$tmp.out 2>$tmp.err
+_check_output pmlogextract
+pmdumplog -L -z $tmp.arch | sed -e '/^PID/s/: [0-9]*/: PID/'
+
+
+# this was never implemented correctly .. skip it
+## step 5
+#rm -rf $tmp.arch*
+#echo
+#echo " --- step 5: test -t flag ---"
+#echo "(output depends on src/mirage{0,index,meta})"
+## update interval for "sample.drift" in src/mirage is 1 minute
+#pmlogextract -n src/root_irix -t "2min" src/mirage $tmp.arch >$tmp.out 2>$tmp.err1
+#cat $tmp.err1 \
+# | sed -e '/^Description unavailable/d' \
+# | sed -e '/^Reason:/d' \
+# | sed -e '/^Warning \[/d' > $tmp.err
+#_check_output pmlogextract
+#pmdumplog -m -z $tmp.arch sample.drift | sed -e '/^$/d'
+
+# step 6
+rm -rf $tmp.arch*
+rm -rf $tmp.config
+echo
+echo " --- step 6: test config file ---"
+echo "(output depends on src/mirage{0,index,meta})"
+# src/mirage contains "sample.bin", "sample.drift", & "sample.mirage"
+cat >$tmp.config <<'End-of-file'
+#
+# pmlogextract config file
+#
+sample.bin ["bin-300" "bin-700" "bin-100"] # out of order
+sample.drift
+sample.mirage ["m-00" "m-13" "m-17" "m-24"] # in order
+End-of-file
+
+pmlogextract -c $tmp.config src/mirage $tmp.arch >$tmp.out 2>$tmp.err
+_check_output pmlogextract
+# dump descriptors
+echo
+echo "--- dump descriptors ---"
+pmdumplog -d -z $tmp.arch | sed -e '/^$/d'
+
+# dump instance domain
+echo
+echo "--- dump instance domain ---"
+pmdumplog -i -z $tmp.arch | sed -e '/^$/d'
+
+# dump values for sample.bin
+echo
+echo "--- dump values for sample.bin ---"
+pmdumplog -m -z $tmp.arch sample.bin | sed -e '/^$/d'
+
+# dump values for sample.drift
+echo
+echo "--- dump values for sample.drift ---"
+pmdumplog -m -z $tmp.arch sample.drift | sed -e '/^$/d'
+
+# dump values for sample.mirage
+echo
+echo "--- dump values for sample.mirage ---"
+pmdumplog -m -z $tmp.arch sample.mirage | sed -e '/^$/d'
+
+
+# step 7
+rm -rf $tmp.arch*
+rm -rf $tmp.config
+echo
+echo " --- step 7: test config file, plus -S, -T and -z flags ---"
+echo "(output depends on src/mirage{0,index,meta})"
+# src/mirage contains "sample.drift"
+cat >$tmp.config <<'End-of-file'
+#
+# pmlogextract config file
+#
+sample.drift
+End-of-file
+
+pmlogextract -c $tmp.config -S "@10:50:00" -T "@11:00:00" -z src/mirage $tmp.arch >$tmp.out 2>$tmp.err
+_check_output pmlogextract
+
+# dump values for sample.drift
+echo "--- dump values for sample.drift ---"
+pmdumplog -m -z src/mirage sample.drift \
+ | sed -e '/^$/d' \
+ | $PCP_AWK_PROG -F":" '{ if ($1 == 10 && $2 >= 50) print $0; }' > $tmp.m
+pmdumplog -m -z $tmp.arch sample.drift \
+ | sed -e '/^$/d' \
+ | grep -v "timezone set to local" > $tmp.a
+diff $tmp.m $tmp.a
+x=$?
+if [ $x = 0 ]
+then
+ echo "sample.drift the same ... good"
+else
+ echo "sample.drift different ... BAD"
+fi
+
+
+# step 8
+rm -rf $tmp.arch*
+rm -rf $tmp.config
+echo
+echo " --- step 8: test -w flag (with -S, -T and -z) ---"
+echo "(output depends on src/rattle{0,index,meta})"
+# src/rattle contains "irix.kernel.all.load"
+
+pmlogextract -S "@00:00:00" -T "@12:00:00" -w -z src/rattle $tmp.arch >$tmp.out 2>$tmp.err
+_check_output pmlogextract
+
+# dump values for irix.kernel.all.load
+echo "--- dump values for irix.kernel.all.load ---"
+pmdumplog -m -z src/rattle irix.kernel.all.load \
+ | sed -e '/^$/d' \
+ | $PCP_AWK_PROG -F":" '{ if ($1 >= 0 && $1 < 12) print $0; }' > $tmp.m
+pmdumplog -m -z $tmp.arch irix.kernel.all.load \
+ | sed -e '/^$/d' \
+ | grep -v "timezone set to local" > $tmp.a
+diff $tmp.m $tmp.a
+x=$?
+if [ $x = 0 ]
+then
+ echo "irix.kernel.all.load the same ... good"
+else
+ echo "irix.kernel.all.load different ... BAD"
+fi
+
+
+# success, all done
+status=0
+exit
diff --git a/qa/270.out b/qa/270.out
new file mode 100644
index 0000000..671e706
--- /dev/null
+++ b/qa/270.out
@@ -0,0 +1,397 @@
+QA output created by 270
+Test pmlogextract
+
+ --- step 1: no flags ---
+(output depends on src/mirage{0,index,meta})
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:45:08.440 1997
+ ending Tue Feb 25 11:05:07.411 1997
+Archive timezone: EST-11EST-10,91/2:00,301/2:00
+PID for pmlogger: PID
+
+ --- step 2: test -S, -T and -z flags ---
+(output depends on src/mirage{0,index,meta})
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:50:07.407 1997
+ ending Tue Feb 25 10:59:07.410 1997
+Archive timezone: EST-11EST-10,91/2:00,301/2:00
+PID for pmlogger: PID
+
+ --- step 3: test -S out of range ---
+(output depends on src/mirage{0,index,meta})
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:45:08.440 1997
+ ending Tue Feb 25 11:05:07.411 1997
+Archive timezone: EST-11EST-10,91/2:00,301/2:00
+PID for pmlogger: PID
+
+ --- step 4: test -T out of range ---
+(output depends on src/mirage{0,index,meta})
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Feb 25 10:45:08.440 1997
+ ending Tue Feb 25 11:05:07.411 1997
+Archive timezone: EST-11EST-10,91/2:00,301/2:00
+PID for pmlogger: PID
+
+ --- step 6: test config file ---
+(output depends on src/mirage{0,index,meta})
+
+--- dump descriptors ---
+Note: timezone set to local timezone of host "gonzo" from archive
+Descriptions for Metrics in the Log ...
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+
+--- dump instance domain ---
+Note: timezone set to local timezone of host "gonzo" from archive
+Instance Domains in the Log ...
+InDom: 29.2
+10:46:07.406 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 29.3
+10:46:07.406 5 instances
+ 0 or "m-00"
+ 12 or "m-12"
+ 13 or "m-13"
+ 14 or "m-14"
+ 15 or "m-15"
+10:47:07.419 5 instances
+ 0 or "m-00"
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+ 16 or "m-16"
+10:48:07.406 7 instances
+ 0 or "m-00"
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+ 16 or "m-16"
+ 17 or "m-17"
+ 18 or "m-18"
+10:49:07.407 8 instances
+ 0 or "m-00"
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 20 or "m-20"
+10:50:07.407 8 instances
+ 0 or "m-00"
+ 12 or "m-12"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 20 or "m-20"
+ 21 or "m-21"
+10:51:07.407 6 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+10:53:07.408 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+10:54:07.408 8 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+ 23 or "m-23"
+10:55:07.409 7 instances
+ 0 or "m-00"
+ 15 or "m-15"
+ 17 or "m-17"
+ 19 or "m-19"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+10:56:07.409 6 instances
+ 0 or "m-00"
+ 17 or "m-17"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 25 or "m-25"
+10:57:07.409 5 instances
+ 0 or "m-00"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 25 or "m-25"
+10:58:07.409 5 instances
+ 0 or "m-00"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 26 or "m-26"
+10:59:07.410 7 instances
+ 0 or "m-00"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+11:00:07.410 6 instances
+ 0 or "m-00"
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+ 29 or "m-29"
+11:01:07.410 5 instances
+ 0 or "m-00"
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+11:02:07.411 5 instances
+ 0 or "m-00"
+ 24 or "m-24"
+ 27 or "m-27"
+ 28 or "m-28"
+ 30 or "m-30"
+11:03:07.411 6 instances
+ 0 or "m-00"
+ 24 or "m-24"
+ 27 or "m-27"
+ 28 or "m-28"
+ 30 or "m-30"
+ 31 or "m-31"
+11:04:07.411 6 instances
+ 0 or "m-00"
+ 24 or "m-24"
+ 27 or "m-27"
+ 30 or "m-30"
+ 32 or "m-32"
+ 33 or "m-33"
+11:05:07.411 5 instances
+ 0 or "m-00"
+ 24 or "m-24"
+ 27 or "m-27"
+ 30 or "m-30"
+ 33 or "m-33"
+
+--- dump values for sample.bin ---
+Note: timezone set to local timezone of host "gonzo" from archive
+10:46:07.406 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:47:07.419 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:48:07.406 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:49:07.407 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:50:07.407 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:51:07.407 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:52:07.407 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:53:07.408 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:54:07.408 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:55:07.409 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:56:07.409 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:57:07.409 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:58:07.409 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+10:59:07.410 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+11:00:07.410 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+11:01:07.410 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+11:02:07.411 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+11:03:07.411 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+11:04:07.411 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+11:05:07.411 29.0.6 (sample.bin):
+ inst [300 or "bin-300"] value 300
+ inst [700 or "bin-700"] value 700
+ inst [100 or "bin-100"] value 100
+
+--- dump values for sample.drift ---
+Note: timezone set to local timezone of host "gonzo" from archive
+10:46:07.406 29.0.7 (sample.drift): value 111
+10:47:07.419 29.0.7 (sample.drift): value 88
+10:48:07.406 29.0.7 (sample.drift): value 83
+10:49:07.407 29.0.7 (sample.drift): value 58
+10:50:07.407 29.0.7 (sample.drift): value 26
+10:51:07.407 29.0.7 (sample.drift): value 74
+10:52:07.407 29.0.7 (sample.drift): value 75
+10:53:07.408 29.0.7 (sample.drift): value 86
+10:54:07.408 29.0.7 (sample.drift): value 119
+10:55:07.409 29.0.7 (sample.drift): value 150
+10:56:07.409 29.0.7 (sample.drift): value 153
+10:57:07.409 29.0.7 (sample.drift): value 189
+10:58:07.409 29.0.7 (sample.drift): value 234
+10:59:07.410 29.0.7 (sample.drift): value 282
+11:00:07.410 29.0.7 (sample.drift): value 303
+11:01:07.410 29.0.7 (sample.drift): value 271
+11:02:07.411 29.0.7 (sample.drift): value 267
+11:03:07.411 29.0.7 (sample.drift): value 249
+11:04:07.411 29.0.7 (sample.drift): value 242
+11:05:07.411 29.0.7 (sample.drift): value 208
+
+--- dump values for sample.mirage ---
+Note: timezone set to local timezone of host "gonzo" from archive
+10:46:07.406 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 32
+ inst [13 or "m-13"] value 1330
+10:47:07.419 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 27
+ inst [13 or "m-13"] value 1325
+10:48:07.406 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 22
+ inst [13 or "m-13"] value 1320
+ inst [17 or "m-17"] value 1717
+10:49:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 15
+ inst [13 or "m-13"] value 1313
+ inst [17 or "m-17"] value 1711
+10:50:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 7
+ inst [17 or "m-17"] value 1704
+10:51:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 99
+ inst [17 or "m-17"] value 1797
+10:52:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 93
+ inst [17 or "m-17"] value 1791
+10:53:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 87
+ inst [17 or "m-17"] value 1785
+10:54:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 80
+ inst [17 or "m-17"] value 1778
+10:55:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 72
+ inst [17 or "m-17"] value 1770
+ inst [24 or "m-24"] value 2466
+10:56:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 65
+ inst [17 or "m-17"] value 1764
+ inst [24 or "m-24"] value 2461
+10:57:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 59
+ inst [24 or "m-24"] value 2456
+10:58:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 54
+ inst [24 or "m-24"] value 2451
+10:59:07.410 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 49
+ inst [24 or "m-24"] value 2446
+11:00:07.410 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 42
+ inst [24 or "m-24"] value 2441
+11:01:07.410 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 36
+ inst [24 or "m-24"] value 2435
+11:02:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 31
+ inst [24 or "m-24"] value 2430
+11:03:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 26
+ inst [24 or "m-24"] value 2425
+11:04:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 20
+ inst [24 or "m-24"] value 2419
+11:05:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 14
+ inst [24 or "m-24"] value 2413
+
+ --- step 7: test config file, plus -S, -T and -z flags ---
+(output depends on src/mirage{0,index,meta})
+--- dump values for sample.drift ---
+sample.drift the same ... good
+
+ --- step 8: test -w flag (with -S, -T and -z) ---
+(output depends on src/rattle{0,index,meta})
+--- dump values for irix.kernel.all.load ---
+irix.kernel.all.load the same ... good
diff --git a/qa/271 b/qa/271
new file mode 100755
index 0000000..0c81cb3
--- /dev/null
+++ b/qa/271
@@ -0,0 +1,79 @@
+#! /bin/sh
+# PCP QA Test No. 271
+# __pmLogOpen() failed if basename.anything was a directory
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=`hostname`
+
+status=1 # failure is the default!
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ _filter_dbg \
+ | _filter_pmdumplog \
+ | sed \
+ -e 's/__pmLogChkLabel/chkLabel/g' \
+ -e 's/TIMESTAMP (t=[0-9][0-9.]*)/TIMESTAMP/g' \
+ | grep -v "$tmp.tmp" \
+ | grep -v "$tmp.out" \
+ | $PCP_AWK_PROG '
+$1 == "chkLabel:" && /vol=0/ { if (fd1 == "") fd1 = $2
+ if (fd1 == $2) $2 = "fd=<n1>"
+ }
+$1 == "chkLabel:" && /vol=-2/ { if (fd2 == "") fd2 = $2
+ if (fd2 == $2) $2 = "fd=<n2>"
+ }
+$1 == "chkLabel:" && /vol=-1/ { if (fd3 == "") fd3 = $2
+ if (fd3 == $2) $2 = "fd=<n3>"
+ }
+$1 == "__pmLogRead:" { if (fd4 == "") fd4 = $2
+ if (fd4 == $2) $2 = "fd=<n4>"
+ }
+ { print }' \
+ | sed >$tmp.tmp \
+ -e "s;$tmp;TMP;g" \
+ -e "s/$host.*\]/HOST]/g" \
+ -e "s/$host/HOST/g" \
+ -e 's/pid=[0-9][0-9]*/pid=PID/g' \
+ -e 's/posn=[0-9][0-9]*/posn=OFFSET/g' \
+ -e 's/header+[0-9][0-9]*+trailer/header+LEN+trailer/g'
+ grep __pmLogOpen $tmp.tmp | LC_COLLATE=POSIX sort
+ grep -v __pmLogOpen $tmp.tmp
+}
+
+echo "log mandatory on once pmcd.control" \
+| pmlogger -s 1 -l $tmp.log $tmp >$tmp.out 2>&1
+
+echo === no dir ===
+pmdumplog -D128 -l $tmp >$tmp.out 2>&1
+echo "[filtered and sorted stderr]"
+_filter <$tmp.out
+
+echo
+echo === empty dir ===
+mkdir $tmp.dir
+pmdumplog -D128 -l $tmp >$tmp.out 2>&1
+echo "[filtered and sorted stderr]"
+_filter <$tmp.out
+
+echo
+echo === non-empty dir ===
+touch $tmp.dir/dummy
+pmdumplog -D128 -l $tmp >$tmp.out 2>&1
+echo "[filtered and sorted stderr]"
+_filter <$tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/271.out b/qa/271.out
new file mode 100644
index 0000000..ab35d47
--- /dev/null
+++ b/qa/271.out
@@ -0,0 +1,53 @@
+QA output created by 271
+=== no dir ===
+[filtered and sorted stderr]
+__pmLogOpen: inspect file "TMP.0"
+__pmLogOpen: inspect file "TMP.index"
+__pmLogOpen: inspect file "TMP.log"
+__pmLogOpen: inspect file "TMP.meta"
+chkLabel: fd=<n1> vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST]
+__pmLogChangeVol: change to volume 0
+chkLabel: fd=<n2> vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST]
+chkLabel: fd=<n3> vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST]
+__pmLogRead: fd=<n4> (peek) mode=back vol=0 posn=OFFSET @TIMESTAMP len=header+LEN+trailer
+__pmLogSetTime(0) TIMESTAMP delta=0 at ti[0]@TIMESTAMP vol=0 posn=OFFSET serial=1
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== empty dir ===
+[filtered and sorted stderr]
+__pmLogOpen: inspect file "TMP.0"
+__pmLogOpen: inspect file "TMP.dir"
+__pmLogOpen: inspect file "TMP.index"
+__pmLogOpen: inspect file "TMP.log"
+__pmLogOpen: inspect file "TMP.meta"
+chkLabel: fd=<n1> vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST]
+__pmLogChangeVol: change to volume 0
+chkLabel: fd=<n2> vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST]
+chkLabel: fd=<n3> vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST]
+__pmLogRead: fd=<n4> (peek) mode=back vol=0 posn=OFFSET @TIMESTAMP len=header+LEN+trailer
+__pmLogSetTime(0) TIMESTAMP delta=0 at ti[0]@TIMESTAMP vol=0 posn=OFFSET serial=1
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+=== non-empty dir ===
+[filtered and sorted stderr]
+__pmLogOpen: inspect file "TMP.0"
+__pmLogOpen: inspect file "TMP.dir"
+__pmLogOpen: inspect file "TMP.index"
+__pmLogOpen: inspect file "TMP.log"
+__pmLogOpen: inspect file "TMP.meta"
+chkLabel: fd=<n1> vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST]
+__pmLogChangeVol: change to volume 0
+chkLabel: fd=<n2> vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST]
+chkLabel: fd=<n3> vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST]
+__pmLogRead: fd=<n4> (peek) mode=back vol=0 posn=OFFSET @TIMESTAMP len=header+LEN+trailer
+__pmLogSetTime(0) TIMESTAMP delta=0 at ti[0]@TIMESTAMP vol=0 posn=OFFSET serial=1
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
diff --git a/qa/272 b/qa/272
new file mode 100755
index 0000000..a754e30
--- /dev/null
+++ b/qa/272
@@ -0,0 +1,324 @@
+#! /bin/sh
+# PCP QA Test No. 272
+# pmcd access control tests (used to be the second half of 051)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# preliminary check
+#
+./getpmcdhosts -n 2 -L -a sample -v 'pcp>=2' -s IRIX64 2>$seq.notrun >/dev/null
+if [ $? -eq 1 ]; then
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit
+fi
+rm -f $seq.notrun
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rsignal=pmsignal
+status=1 # failure is the default!
+
+# pmcd may be quite some distance away
+#
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+
+NETSTAT=netstat
+
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT NETSTAT
+
+# real QA test starts here
+
+config=$PCP_PMCDCONF_PATH
+oconfig=$tmp.config
+
+# get FQDN
+#
+host=`hostname`
+me=`_host_to_fqdn $host`
+if [ -z "$me" ]
+then
+ echo "Cannot get fully qualified domain name for $host"
+ exit
+fi
+
+_needclean=true
+
+# get standard filters
+. ./common.filter
+. ./common.check
+
+# _wait_for_pmcd_from_remote remote-host [max-wait]
+#
+_wait_for_pmcd_from_remote()
+{
+ # 20 seconds default seems like a reasonble max time to get going
+ can_wait=${2-20}
+ i=0
+ dead=true
+ while [ $i -lt $can_wait ]
+ do
+ clients=`ssh $1 -q -n -l pcpqa "sh -c 'PMCD_PORT=$port pmprobe -h $me pmcd.numclients'" 2>/dev/null | sed -e 's/.* //'`
+ if [ $i -eq 0 ]
+ then
+ echo >>$seq.full
+ echo "+ ssh $1 -q -n -l pcpqa \"sh -c 'PMCD_PORT=$port pmprobe -h $me pmcd.numclients'\"" >>$seq.full
+ ssh $1 -q -n -l pcpqa "sh -c 'PMCD_PORT=$port pmprobe -h $me pmcd.numclients'" >>$seq.full 2>&1
+ echo "clients=\"$clients\"" >>$seq.full
+ fi
+ if [ ! -z "$clients" ]
+ then
+ if [ "$clients" -gt 0 ]
+ then
+ dead=false
+ break
+ fi
+ fi
+ sleep 1
+ i=`expr $i + 1`
+ done
+ if $dead
+ then
+ echo "Arrgghhh ... pmcd failed to start after $can_wait seconds"
+ ssh $1 -q -n -l pcpqa cat $PCP_PMCDLOG_PATH
+ ps $PCP_PS_ALL_FLAGS
+ status=2
+ exit $status
+ fi
+}
+
+cleanup()
+{
+ if $_needclean
+ then
+ unset PMCD_PORT
+ [ -f $oconfig ] && $sudo cp $oconfig $config
+ # _change_config pmlogger on
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ $sudo rm -f $tmp.*
+}
+
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+touch $seq.full
+
+# real QA test starts here
+port=`_get_port tcp 6060 6070`
+if [ -z "$port" ]
+then
+ echo "Arrggh ... no free TCP port in the range 6060 ... 6070"
+ $NETSTAT -a
+ exit 1
+fi
+echo "port=$port" >>$seq.full
+
+# _change_config pmlogger off
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+$sudo cp $config $oconfig
+
+other1=bogus
+other2=bogus
+
+eval `./getpmcdhosts -n 2 -L -a sample -v 'pcp>=2' -s IRIX64 2>/dev/null \
+ | $PCP_AWK_PROG '{ if (NF >= 2) printf("other1=%s other2=%s\n",$1,$2); }'`
+
+if [ "X$other1" = Xbogus -o "X$other2" = Xbogus ]
+then
+ echo "Error: Unable to find two hosts configured with the sample PMDA"
+ echo "+ ./getpmcdhosts -D -n 2 -L -a sample -v 'pcp>=2' -s IRIX64 "
+ ./getpmcdhosts -D -n 2 -L -a sample -v 'pcp>=2' -s IRIX64
+ echo "Desperate: check all hosts in qa_hosts ..."
+ cat $tmp.hosts \
+ | while read host
+ do
+ echo "=== $host ==="
+ pminfo -b 1 -f -h $host pmcd.numagents pmcd.agent.status sample.seconds
+ done
+ exit 1
+fi
+
+list1=`_all_hostnames $other1`
+if [ -z "$list1" ]
+then
+ echo "Arrgh ... failed to expand other1=\"$other1\" to all hostnames"
+ echo "netstat reports ..."
+ ssh -q </dev/null $other1 -n -l pcpqa $NETSTAT -in
+ exit
+fi
+list2=`_all_hostnames $other2`
+if [ -z "$list2" ]
+then
+ echo "Arrgh ... failed to expand other2=\"$other2\" to all hostnames"
+ echo "netstat reports ..."
+ ssh -q </dev/null $other2 -n -l pcpqa $NETSTAT -in
+ exit
+fi
+echo "other1=$other1 list1=$list1" >>$seq.full
+echo "other2=$other2 list2=$list2" >>$seq.full
+
+cat >$tmp.access <<End-Of-File
+
+[access]
+allow $list1 : all;
+disallow $list2 : all except fetch;
+allow $list2 : maximum 1 connections;
+End-Of-File
+
+$sudo "sed -e '/\[access]/q' $oconfig | sed -e '/\[access]/d' >$config"
+$sudo "cat $tmp.access >>$config"
+
+echo >>$seq.full
+echo "=== First pmcd.conf ===" >>$seq.full
+cat $config >>$seq.full
+
+# don'use the regular port ...
+#
+PMCD_PORT=$port
+export PMCD_PORT
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+#DEBUG# pmstore pmcd.control.traceconn 1
+#DEBUG# pmstore pmcd.control.tracepdu 1
+#DEBUG# pmstore pmcd.control.tracenobuf 1
+#DEBUG# pmstore pmcd.control.debug 1
+
+echo " checking default access for this host ..."
+pminfo -f sample.long.million
+pmstore sample.write_me 111
+
+echo
+echo " checking access for OTHERHOST1 (both should succeed)"
+ssh -q $other1 -n -l pcpqa "sh -c 'PMCD_PORT=$port pminfo -h $me -f sample.long.million'"
+ssh -q $other1 -n -l pcpqa "sh -c 'PMCD_PORT=$port pmstore -h $me sample.write_me 222'"
+
+echo
+echo " checking access for OTHERHOST2 (store should fail)"
+ssh -q $other2 -n -l pcpqa "sh -c 'PMCD_PORT=$port pminfo -h $me -f sample.long.hundred'"
+ssh -q $other2 -n -l pcpqa "sh -c 'PMCD_PORT=$port pmstore -h $me sample.write_me 333'"
+
+echo
+echo " checking connection limit for OTHERHOST2 (will exceed connection limit)"
+ssh -q $other2 -n -l pcpqa "sh -c 'PMCD_PORT=$port pmval -h $me -t 666 sample.long.ten'" >/dev/null 2>&1 &
+# guess at delay
+#
+sleep `expr $PMCD_CONNECT_TIMEOUT / 2`
+# note on sed ... some systems appear to be able to deliver the socket
+# reset by peer state ahead of completing the read() on the receiver side,
+# so we never get the PCP error PDU ... there has been extensive analysis
+# of this for pmcd on a Linux host and $other2 being an IRIX host, and it
+# is _not_ a PCP protocol failure.
+#
+ssh -q $other2 -n -l pcpqa "sh -c 'PMCD_PORT=$port pminfo -h $me -f sample.long.one'" 2>&1 \
+| sed \
+ -e 's/".*"/"OTHERHOST2"/' \
+ -e 's/IPC protocol failure/PMCD connection limit for this host exceeded/'
+#DEBUG# echo "Trying connection limit pminfo again ..." >>$seq.full
+#DEBUG# ssh -q $other2 -n -l pcpqa "sh -c 'PMCD_PORT=$port par -s -SS pminfo -Dall -h $me -f sample.long.one'" >>$seq.full 2>&1
+ssh -q $other2 -n -l pcpqa $rsignal -a pmval > /dev/null 2>&1
+
+echo "pmcd.log:======="
+sed -n <$PCP_PMCDLOG_PATH -e '/endclient/{
+s/\[[0-9]*]/[M]/
+s/(fd [0-9]*)/(fd N)/
+p
+}'
+echo "================"
+
+echo "pmcd.log ..." >>$seq.full
+cat $PCP_PMCDLOG_PATH >>$seq.full
+
+iplist1=`_all_ipaddrs $other1`
+if [ -z "$iplist1" ]
+then
+ echo "QA Error: cannot generate all ip addrs from \"$other1\""
+ status=3
+ exit
+fi
+iplist2=`_all_ipaddrs $other2`
+if [ -z "$iplist2" ]
+then
+ echo "QA Error: cannot generate all ip addrs from \"$other2\""
+ status=3
+ exit
+fi
+iplist3=`_all_ipaddrs localhost`
+if [ -z "$iplist3" ]
+then
+ echo "QA Error: cannot generate all ip addrs from localhost"
+ status=3
+ exit
+fi
+echo "other1=$other1 iplist1=$iplist1" >>$seq.full
+echo "other2=$other2 iplist2=$iplist2" >>$seq.full
+echo "localhost iplist3=$iplist3" >>$seq.full
+
+netlist2=`echo $iplist2,$iplist3 | sed -e 's/$/,/' -e 's/[0-9][0-9]*\.[0-9][0-9]*,/*,/g' -e 's/,$//'`
+
+cat >$tmp.access <<End-Of-File
+
+[access]
+allow $iplist1 : all;
+disallow $netlist2 : all except fetch;
+disallow * : all;
+End-Of-File
+
+$sudo "sed -e '/\[access]/q' $oconfig | sed -e '/\[access]/d' >$config"
+$sudo "cat $tmp.access >>$config"
+
+echo >>$seq.full
+echo "=== Second pmcd.conf ===" >>$seq.full
+cat $config >>$seq.full
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd_from_remote $other1
+ssh -q $other1 -n -l pcpqa "sh -c 'PMCD_PORT=$port pmstore -h $me pmcd.control.debug 4096'"
+
+echo " checking default access for this host (store should fail) ..."
+
+pminfo -f sample.long.million
+pmstore sample.write_me 444
+
+echo
+echo " checking access for OTHERHOST1 (both should succeed)"
+ssh -q $other1 -n -l pcpqa "sh -c 'PMCD_PORT=$port pminfo -h $me -f sample.long.million'"
+ssh -q $other1 -n -l pcpqa "sh -c 'PMCD_PORT=$port pmstore -h $me sample.write_me 555'"
+
+echo
+echo " checking access for OTHERHOST2 (store should fail)"
+ssh -q $other2 -n -l pcpqa "sh -c 'PMCD_PORT=$port pminfo -h $me -f sample.long.hundred'"
+ssh -q $other2 -n -l pcpqa "sh -c 'PMCD_PORT=$port pmstore -h $me sample.write_me 666'"
+
+echo
+echo " checking default access for explicit/localhost (both should fail)"
+pmstore -h localhost sample.write_me 21
+pmstore -h $me sample.write_me 42
+
+echo "pmcd.log:======="
+sed -n <$PCP_PMCDLOG_PATH -e '/endclient/{
+s/\[[0-9]*]/[M]/
+s/(fd [0-9]*)/(fd N)/
+p
+}'
+echo "================"
+
+echo "pmcd.log ..." >>$seq.full
+cat $PCP_PMCDLOG_PATH >>$seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/272.out b/qa/272.out
new file mode 100644
index 0000000..17fd808
--- /dev/null
+++ b/qa/272.out
@@ -0,0 +1,62 @@
+QA output created by 272
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+ checking default access for this host ...
+
+sample.long.million
+ value 1000000
+sample.write_me old value=2 new value=111
+
+ checking access for OTHERHOST1 (both should succeed)
+
+sample.long.million
+ value 1000000
+sample.write_me old value=111 new value=222
+
+ checking access for OTHERHOST2 (store should fail)
+
+sample.long.hundred
+ value 100
+sample.write_me old value=222 new value=333
+sample.write_me: pmStore: No permission to perform requested operation
+
+ checking connection limit for OTHERHOST2 (will exceed connection limit)
+pminfo: Cannot connect to PMCD on host "OTHERHOST2": PMCD connection limit for this host exceeded
+pmcd.log:=======
+endclient client[M]: (fd N) PMCD connection limit for this host exceeded (-12388)
+================
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+pmcd.control.debug old value=0 new value=4096
+ checking default access for this host (store should fail) ...
+
+sample.long.million
+ value 1000000
+sample.write_me old value=2 new value=444
+sample.write_me: pmStore: No permission to perform requested operation
+
+ checking access for OTHERHOST1 (both should succeed)
+
+sample.long.million
+ value 1000000
+sample.write_me old value=2 new value=555
+
+ checking access for OTHERHOST2 (store should fail)
+
+sample.long.hundred
+ value 100
+sample.write_me old value=555 new value=666
+sample.write_me: pmStore: No permission to perform requested operation
+
+ checking default access for explicit/localhost (both should fail)
+sample.write_me old value=555 new value=21
+sample.write_me: pmStore: No permission to perform requested operation
+sample.write_me old value=555 new value=42
+sample.write_me: pmStore: No permission to perform requested operation
+pmcd.log:=======
+================
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/273 b/qa/273
new file mode 100755
index 0000000..d9f0f97
--- /dev/null
+++ b/qa/273
@@ -0,0 +1,250 @@
+#!/bin/sh
+# PCP QA Test No. 273
+# Increase testing code coverage in core parts of libpcp
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ _restore_primary_logger
+ rm -f $tmp.*
+ exit $status
+}
+
+status=1
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/0x[0-9a-f][0-9a-f]*/HEX/g'
+}
+
+_filter2()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/build_dsotab/s/parsing .*/ parsing .../' \
+ -e '/^\[[0-9][0-9]*]/d' \
+ -e '/^0x[0-9a-f][0-9a-f]* \[[0-9][0-9]*]/d' \
+ -e '/^__pmLocalPMDA/d' \
+ -e '/^Local Context PMDA Table$/d' \
+ -e '/__pmConnectLogger:/s/pid = [0-9][0-9]*/pid = PID/' \
+ -e 's/fd=[0-9][0-9]*/fd=N/g' \
+ -e '/IPC table fd/s/:.*/: .../' \
+ -e '/__pmSendCreds/s/:.*/: .../' \
+ -e '/NotifyEndLocalContext: /s/:.*/: .../' \
+ -e '/value /s/ [0-9].*/ NUMBER/' \
+ -e '/^__pmDataIPC:/d' \
+ -e '/^__pmSetDataIPC:/{
+N
+d
+}' \
+ -e 's/Permission denied/No permission to perform requested operation/' \
+ -e '/__pmConnect(fd=/d' \
+ | perl -ne '
+ # squash repeated occurrences of the following pattern
+ # (as a result of needing to do getaddrinfo list walk)
+ if (/^IPC table fd.PDU version.: ...$/) {
+ $saved[1] = $_;
+ } elsif (/^__pmSetSocketIPC: fd=N$/) {
+ $saved[0] = $_;
+ } else {
+ if ($#saved >= 0) { print $saved[0]; }
+ if ($#saved == 1) { print $saved[1]; }
+ @saved = undef;
+ print;
+ }'
+}
+
+_filter3()
+{
+ sed \
+ -e 's/Connection timed out/No route to host/'
+}
+
+# simple PMDA is using PMDA_INTERFACE_2
+#
+if [ ! -f $PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX ]
+then
+ ( cd $PCP_PMDAS_DIR/simple; $sudo make; $sudo ./Install </dev/null ) >/dev/null 2>&1
+fi
+
+# real QA test starts here
+_change_config pmcd on
+_change_config pmlogger on
+_writable_primary_logger
+$sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+_wait_for_pmlogger
+
+# help.c
+#
+$sudo pminfo -t -L sampledso
+$sudo pminfo -T -L sampledso
+pminfo -T -a src/foo sample
+$sudo pminfo -T -L -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init simple.now
+
+# instance.c
+#
+$sudo pminfo -L -f -Dfetch sampledso.bin 2>&1 | _filter_dumpresult
+pminfo -f -Dindom sample.bin 2>&1 | _filter
+$sudo pminfo -fL -Dfetch,indom -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init simple 2>&1 \
+| _filter_dumpresult | _filter
+src/indom sample.bin
+src/indom sample.long.one
+pmval -s 1 -i "bin-123" sample.bin
+$sudo src/torture_indom -L sampledso.colour
+$sudo src/torture_indom -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init -L simple.now
+
+# fetchlocal.c
+#
+$sudo pminfo -f -L -Dfetch sampledso.bad.unknown 2>&1 | _filter_dumpresult
+
+# spec.c
+#
+pminfo -f -h localhost:44321 sample.long.hundred
+pminfo -f -h localhost:1,44321 sample.long.hundred
+pminfo -f -h localhost: sample.long.hundred
+pminfo -f -h localhost:44321,1x3 sample.long.hundred
+pminfo -f -h localhost:44321@no-host sample.long.hundred 2>&1 | _filter3
+pminfo -f -h localhost:44321@no-host:44322 sample.long.hundred 2>&1 | _filter3
+pminfo -f -h localhost:44321@ sample.long.hundred
+
+# units.c
+#
+# Pbyte / hour -> 1F055000
+pmstore sample.dynamic.meta.pmdesc.units 0x1F055000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# Ebyte / sec -> 1F063000
+pmstore sample.dynamic.meta.pmdesc.units 0x1F063000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# bigger than Ebyte -> 10070000
+pmstore sample.dynamic.meta.pmdesc.units 0x10070000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# bigger than Hour -> 01006000
+pmstore sample.dynamic.meta.pmdesc.units 0x01006000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# byte^2 -> 20000000
+pmstore sample.dynamic.meta.pmdesc.units 0x20000000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# nsec / byte -> F1000000
+pmstore sample.dynamic.meta.pmdesc.units 0xF1000000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# / byte^2 -> E0000000
+pmstore sample.dynamic.meta.pmdesc.units 0xE0000000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# nsec^3 -> 03000000
+pmstore sample.dynamic.meta.pmdesc.units 0x03000000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# / nsec^3 -> 0D000000
+pmstore sample.dynamic.meta.pmdesc.units 0x0D000000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# count^2 -> 00200000
+pmstore sample.dynamic.meta.pmdesc.units 0x00200000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# / count^2 -> 00E00000
+pmstore sample.dynamic.meta.pmdesc.units 0x00E00000 >/dev/null
+pminfo -d sample.dynamic.meta.metric
+# restore to byte / sec -> 1F003000
+pmstore sample.dynamic.meta.pmdesc.units 0x1F003000 >/dev/null
+
+# units.c using grind_cov
+#
+for type in 0 1 2 3 4 5
+do
+ # space
+ src/grind_conv $type 1024 1:0:0:4:0:0 1:0:0:3:0:0
+ src/grind_conv $type 1048576 1:0:0:3:0:0 1:0:0:4:0:0
+ # space / time
+ src/grind_conv $type 4096 1:-1:0:2:3:0 1:-1:0:3:5:0
+ src/grind_conv $type 14400 1:-1:0:3:5:0 1:-1:0:2:3:0
+ # space-time / count
+ src/grind_conv $type 92160 1:1:-1:1:3:0 1:1:-1:2:4:1
+ src/grind_conv $type 15 1:1:-1:2:4:1 1:1:-1:1:3:0
+ # time / space
+ src/grind_conv $type 1024 -1:1:0:2:3:0 -1:1:0:1:2:0
+ src/grind_conv $type 1000 -1:1:0:1:2:0 -1:1:0:2:3:0
+done
+# and some odd cases and error cases
+src/grind_conv -Dvalue 3 4096 1:0:0:5:0:0 1:0:0:6:0:0
+src/grind_conv 3 4 1:0:0:6:0:0 1:0:0:5:0:0
+src/grind_conv 3 4096 1:0:0:7:0:0 1:0:0:6:0:0
+src/grind_conv 3 4096 1:0:0:5:0:0 1:0:0:7:0:0
+src/grind_conv 3 3600 0:1:0:0:6:0 0:1:0:0:4:0
+src/grind_conv -Dvalue 3 3600 0:1:0:0:4:0 0:1:0:0:6:0
+# dimensions not the same
+src/grind_conv 3 0 0:1:0:0:1:0 0:2:0:0:1:0
+# cannot convert events
+src/grind_conv 8 0 0:1:0:0:1:0 0:1:0:0:1:0
+
+# units.c using src/xval
+#
+echo
+src/xval -D 0x3fffffff 2>&1 \
+| sed -e '/pmExtract.*AGGREGATE/{
+s/feffff3f/3ffffffe/g
+s/ffffff3f/3fffffff/g
+s/00000040/40000000/g
+}'
+src/xval 0x7fffffff
+src/xval 0xffffffff
+src/xval 0x3fffffffffffffff
+src/xval 0x7fffffffffffffff
+src/xval 0xffffffffffffffff
+src/xval -u 0xffffffffffffffff
+echo
+src/xval -e
+
+# store.c
+#
+echo
+$sudo src/chknumval -L sampledso.long.write_me sampledso.ulong.write_me sampledso.longlong.write_me >$tmp.out 2>$tmp.err
+cat $tmp.err $tmp.out | _filter2
+
+echo
+$sudo src/chknumval -Dcontext -L pmcd.control.debug sampledso.long.write_me sample.colour >$tmp.out 2>$tmp.err
+cat $tmp.err $tmp.out | _filter2
+cat >$tmp.root <<End-of-File
+root {
+ pmcd
+ sample
+ sampledso
+}
+pmcd {
+ control
+}
+pmcd.control {
+ debug 2:0:0
+}
+sample {
+ colour 29:0:5
+}
+sampledso {
+ long
+}
+sampledso.long {
+ write_me 30:0:14
+}
+End-of-File
+
+echo
+$sudo src/chknumval -L -n $tmp.root pmcd.control.debug sampledso.long.write_me sample.colour >$tmp.out 2>$tmp.err
+cat $tmp.err $tmp.out | _filter2
+
+echo
+$sudo src/chknumval -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init -L simple.now simple.now simple.now >$tmp.out 2>$tmp.err
+cat $tmp.err $tmp.out | _filter2
+
+# success, all done
+status=0
+exit
diff --git a/qa/273.out b/qa/273.out
new file mode 100644
index 0000000..bec7656
--- /dev/null
+++ b/qa/273.out
@@ -0,0 +1,1750 @@
+QA output created by 273
+sampledso.control [A control variable for the "sample" PMDA]
+sampledso.daemon_pid [Process id of PMDA daemon]
+sampledso.seconds [Elapsed time (seconds)]
+sampledso.milliseconds [Elapsed time (milliseconds)]
+sampledso.load [Hypothetical load]
+sampledso.colour [Metrics with a "saw-tooth" trend over time]
+sampledso.darkness [No values available]
+sampledso.bin [Several constant instances]
+sampledso.bucket [Several constant instances]
+sampledso.part_bin [Several constant instances]
+sampledso.bogus_bin [Several constant instances]
+sampledso.drift [A random trended metric]
+sampledso.step [A step function (instantaneous)]
+sampledso.step_counter [A step function (counter)]
+sampledso.mirage [Simple saw-tooth rate, but instances come and go]
+sampledso.mirage_longlong [Simple saw-tooth rate, but instances come and go]
+sampledso.write_me [Modifiable, but otherwise constant.]
+sampledso.lights [Traffic lights.]
+sampledso.magnitude [Powers of two.]
+sampledso.sysinfo [Aggregate containing system accounting structures]
+sampledso.pdu [Total PDU count]
+sampledso.recv_pdu [Count of PDUs received]
+sampledso.xmit_pdu [Count of PDUs transmitted]
+sampledso.noinst [No instance available]
+sampledso.needprofile [Metrics that need an explicit profile]
+sampledso.not_ready [interval (in seconds) during which PMDA does not respond to PDUs]
+sampledso.rapid [count very quickly]
+sampledso.error_code [Arbitrary PMAPI error code for sample.error_check]
+sampledso.error_check [Return PMAPI error code from sample.error_code]
+sampledso.bigid [a metric with item number bigger then 2^9]
+sampledso.byte_ctr [counter byte counter]
+sampledso.byte_rate [instantaneous bytes/second ]
+sampledso.kbyte_ctr [counter Kbytes/second]
+sampledso.kbyte_rate [instantaneous Kbytes/second]
+sampledso.byte_rate_perhour [instantaneous bytes/hour]
+sampledso.datasize [Space allocated for PMDA's data segment]
+sampledso.secret.foo.bar.max.redirect One-line Help: Error: No PMCD agent for domain of request
+
+sampledso.secret.foo.bar.three [dynamic *.secret.foo.bar.three metric]
+sampledso.secret.foo.bar.four [dynamic *.secret.foo.bar.four metric]
+sampledso.secret.foo.bar.grunt.five [dynamic *.secret.foo.bar.grunt.five metric]
+sampledso.secret.foo.bar.grunt.snort.six [dynamic *.secret.foo.bar.grunt.snort.six metric]
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven [dynamic *.secret.foo.bar.grunt.snort.huff.puff.seven metric]
+sampledso.secret.foo.one [dynamic *.secret.foo.one metric]
+sampledso.secret.foo.two [dynamic *.secret.foo.two metric]
+sampledso.secret.bar [dynamic *.secret.bar metric]
+sampledso.long.one [1 as a 32-bit integer]
+sampledso.long.ten [10 as a 32-bit integer]
+sampledso.long.hundred [100 as a 32-bit integer]
+sampledso.long.million [1000000 as a 32-bit integer]
+sampledso.long.write_me [a 32-bit integer that can be modified]
+sampledso.long.bin [like sample.bin but type 32]
+sampledso.long.bin_ctr [like sample.bin but type 32, SEM_COUNTER and SPACE_KBYTE]
+sampledso.ulong.one [1 as a 32-bit unsigned integer]
+sampledso.ulong.ten [10 as a 32-bit unsigned integer]
+sampledso.ulong.hundred [100 as a 32-bit unsigned integer]
+sampledso.ulong.million [1000000 as a 32-bit unsigned integer]
+sampledso.ulong.write_me [a 32-bit unsigned integer that can be modified]
+sampledso.ulong.bin [like sample.bin but type U32]
+sampledso.ulong.bin_ctr [like sample.bin but type U32, SEM_COUNTER and SPACE_KBYTE]
+sampledso.ulong.count.base [count scale is 1, value is 42,000,000]
+sampledso.ulong.count.deca [count scale is 10, value is 4,200,000]
+sampledso.ulong.count.hecto [count scale is 10, value is 420,000]
+sampledso.ulong.count.kilo [count scale is 10, value is 42,000]
+sampledso.ulong.count.mega [count scale is 10, value is 42]
+sampledso.longlong.one [1 as a 64-bit integer]
+sampledso.longlong.ten [10 as a 64-bit integer]
+sampledso.longlong.hundred [100 as a 64-bit integer]
+sampledso.longlong.million [1000000 as a 64-bit integer]
+sampledso.longlong.write_me [a 64-bit integer that can be modified]
+sampledso.longlong.bin [like sample.bin but type 64]
+sampledso.longlong.bin_ctr [like sample.bin but type 64, SEM_COUNTER and SPACE_KBYTE]
+sampledso.ulonglong.one [1 as a 64-bit unsigned integer]
+sampledso.ulonglong.ten [10 as a 64-bit unsigned integer]
+sampledso.ulonglong.hundred [100 as a 64-bit unsigned integer]
+sampledso.ulonglong.million [1000000 as a 64-bit unsigned integer]
+sampledso.ulonglong.write_me [a 64-bit unsigned integer that can be modified]
+sampledso.ulonglong.bin [like sample.bin but type U64]
+sampledso.ulonglong.bin_ctr [like sample.bin but type U64, SEM_COUNTER and SPACE_KBYTE]
+sampledso.float.one [1 as a 32-bit floating point value]
+sampledso.float.ten [10 as a 32-bit floating point value]
+sampledso.float.hundred [100 as a 32-bit floating point value]
+sampledso.float.million [1000000 as a 32-bit floating point value]
+sampledso.float.write_me [a 32-bit floating-point value that can be modified]
+sampledso.float.bin [like sample.bin but type FLOAT]
+sampledso.float.bin_ctr [like sample.bin but type FLOAT, SEM_COUNTER and SPACE_KBYTE]
+sampledso.double.one [1 as a 64-bit floating point value]
+sampledso.double.ten [10 as a 64-bit floating point value]
+sampledso.double.hundred [100 as a 64-bit floating point value]
+sampledso.double.million [1000000 as a 64-bit floating point value]
+sampledso.double.write_me [a 64-bit floating-point value that can be modified]
+sampledso.double.bin [like sample.bin but type DOUBLE]
+sampledso.double.bin_ctr [like sample.bin but type DOUBLE, SEM_COUNTER and SPACE_KBYTE]
+sampledso.string.null [a zero length string]
+sampledso.string.hullo [K&R have a lot to answer for]
+sampledso.string.write_me [a string value that can be modified]
+sampledso.aggregate.null [a zero length aggregate]
+sampledso.aggregate.hullo [K&R have a lot to answer for]
+sampledso.aggregate.write_me [a aggregate value that can be modified]
+sampledso.hordes.one [500 instances]
+sampledso.hordes.two [500 instances]
+sampledso.bad.unknown [Not known to the PMDA]
+sampledso.bad.nosupport [Not supported in this version of the PMDA]
+sampledso.bad.novalues [Scalar with no values, ever]
+sampledso.wrap.long [long counter that wraps]
+sampledso.wrap.ulong [unsigned long counter that wraps]
+sampledso.wrap.longlong [long long counter that wraps]
+sampledso.wrap.ulonglong [unsigned long long counter that wraps]
+sampledso.dodgey.control [control values retured for sample.dodgey.value]
+sampledso.dodgey.value [5 unreliable instances]
+sampledso.dynamic.counter [counter metric with dynamic indom]
+sampledso.dynamic.discrete [discrete metric with dynamic indom]
+sampledso.dynamic.instant [instant metric with dynamic indom]
+sampledso.dynamic.meta.metric [metric with modifiable metadata]
+sampledso.dynamic.meta.pmdesc.type [pmDesc.type for sample.dynamic.meta.metric]
+sampledso.dynamic.meta.pmdesc.indom [pmDesc.indom for sample.dynamic.meta.metric]
+sampledso.dynamic.meta.pmdesc.sem [pmDesc.sem for sample.dynamic.meta.metric]
+sampledso.dynamic.meta.pmdesc.units [pmDesc.units for sample.dynamic.meta.metric]
+sampledso.scale_step.bytes_up [count up by powers of 2, wrap back to one at 10 Tbytes]
+sampledso.scale_step.bytes_down [count down by powers of 2, wrap back to 10 Tbytes at 1]
+sampledso.scale_step.count_up [count up by powers of 10, wrap back to 1 at 10e12]
+sampledso.scale_step.count_down [count down by powers of 10, wrap back to 10e12 at 1]
+sampledso.scale_step.time_up_secs [count up seconds by multiples of 10, wrap back to 1 second at 1 day]
+sampledso.scale_step.time_up_nanosecs [count up nanoseconds by multiples of 10, wrap back to 1 nanosecond at 1 day]
+sampledso.scale_step.none_up [count up dimensionless by multiples of 10, wrap back to 1 at 10 million]
+sampledso.const_rate.value [constant rate counter]
+sampledso.const_rate.gradient [rate per second to set sample.const_rate.value, writable]
+sampledso.many.count [number of instances in sample.many.int's domain]
+sampledso.many.int [variable sized instance domain]
+sampledso.scramble.version [Current state version and reset for sample.scramble.bin]
+sampledso.scramble.bin [Several constant instances, instances scrambled]
+sampledso.percontext.pdu [Total PDU count for the client context]
+sampledso.percontext.recv_pdu [Count of PDUs received from the client context]
+sampledso.percontext.xmit_pdu [Count of PDUs transmitted]
+sampledso.percontext.control.ctx [Number of PMAPI contexts seen]
+sampledso.percontext.control.active [Number of active PMAPI contexts]
+sampledso.percontext.control.start [Number of new PMAPI contexts seen]
+sampledso.percontext.control.end [Number of PMAPI contexts closed]
+sampledso.event.records [Dummy event records]
+sampledso.event.highres_records [Dummy highres timestamp event records]
+sampledso.event.no_indom_records [More dummy event records]
+sampledso.event.reset [reset event record state]
+sampledso.event.reset_highres [reset highres event record state]
+sampledso.event.type [event type parameter for event records]
+sampledso.event.param_32 [32 parameter for event records]
+sampledso.event.param_u32 [U32 parameter for event records]
+sampledso.event.param_64 [64 parameter for event records]
+sampledso.event.param_u64 [U64 parameter for event records]
+sampledso.event.param_float [FLOAT parameter for event records]
+sampledso.event.param_double [DOUBLE parameter for event records]
+sampledso.event.param_string [STRING parameter for event records]
+sampledso.event.param_aggregate [AGGREGATE parameter for event records]
+
+sampledso.control
+Help:
+This control variable may be modified using pmStore().
+The allowed values are
+ 0 disable debugging output in the PMDA
+ >0 set pmDebug to this value to enable debugging output
+ -1 force the PMDA to terminate
+
+sampledso.daemon_pid
+Help:
+The process id of PMDA daemon, -1 if the daemon is a DSO.
+
+sampledso.seconds
+Help:
+The elapsed time since the PMDA started, in seconds, i.e. as returned
+by time(2).
+
+sampledso.milliseconds
+Help:
+The elapsed time since the PMDA started, in milliseconds, i.e. as
+returned by gettimeofday(2), and then adjusted from microseconds
+to milliseconds.
+
+sampledso.load
+Help:
+The hypothetical load is always 42!
+
+sampledso.colour
+Help:
+This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range N to
+N+100, then back to N. The different instances have different N values,
+namely 100 (red), 200 (green) and 300 (blue).
+
+sampledso.darkness
+Help:
+Defined over the same instance domain as sampledso.colour, but this metric
+returns the "No values available" error for every fetch.
+
+sampledso.bin
+Help:
+9 instances labelled "bin-100" thru "bin-900", each with a constant
+value of 100 thru 900.
+
+sampledso.bucket
+Help:
+9 instances labelled "bin-100" thru "bin-900", each with a constant
+value of 100 thru 900. This is an alias for sampledso.bin, but with
+a different PMID.
+
+sampledso.part_bin
+Help:
+5 instances labelled "bin-100" thru "bin-900", each with a constant
+value of 100 thru 900. This is defined over the same domain as
+sampledso.part, but half of the instances are missing.
+
+sampledso.bogus_bin
+Help:
+9 instances labelled "bin-100" thru "bin-900", each with a constant
+value of 100 thru 900. This is defined over the same domain as
+sampledso.part, half the values are for instances not in the instance
+domain.
+
+sampledso.drift
+Help:
+This metric returns a random value (expected mean is approximately 200),
+subject to a trending pattern such that the sequence is mainly monotonic,
+with a change in direction after on average 4 consecutive sampledsos.
+
+Use pmStore() to modifiy the instantaneous value, which becomes the new
+expected mean.
+
+sampledso.step
+Help:
+This metric changes magnitude every 30 seconds, between a base value and
+3 times the base value.
+
+The metric has "instantaneous" semantics. See also sampledso.step_counter.
+
+Use pmStore() to modify the base value.
+
+sampledso.step_counter
+Help:
+This metric changes magnitude every 30 seconds, between a base value and
+3 times the base value.
+
+The metric has "counter" semantics. See also sampledso.step.
+
+Use pmStore() to modify the base value.
+
+sampledso.mirage
+Help:
+The metric is a rate (Kbytes/sec) that varies in a saw-tooth distribution
+over time. Different instances of the metric have different baselines
+for the saw-tooth, but all have an max-to-min range of 100.
+
+What makes this metric interesting is that instances come and go (not
+more often than once every 10 seconds however). Instance 0 is always
+present, but the other instances 1 thru 49 come and go in a cyclic
+pattern with a large random component influencing when each instance
+appears and disappears.
+
+sampledso.mirage_longlong
+Help:
+The metric is a rate (bytes/msec) that varies in a saw-tooth distribution
+over time. Different instances of the metric have different baselines
+for the saw-tooth, but all have an max-to-min range of 100,000,000.
+
+What makes this metric interesting is that instances come and go (not
+more often than once every 10 seconds however). Instance 0 is always
+present, but the other instances 1 thru 49 come and go in a cyclic
+pattern with a large random component influencing when each instance
+appears and disappears.
+
+sampledso.write_me
+Help:
+This metric has a 32-bit integer value of 2, unless changed via pmStore.
+The metric has semantics of rate, and units of events per second.
+
+sampledso.lights
+Help:
+A singular metric that has a discrete string value, namely "red",
+"yellow" or "green". There is some persistance in the value, so
+consecutive fetches are likely to return the same value, however over a
+long period of time all values are equally probable.
+
+sampledso.magnitude
+Help:
+A singular metric that has a discrete integer value, namely 1, 2, 4, 8,
+16, 32 or 64. There is some persistance in the value, so consecutive
+fetches are likely to return the same value, however over a long period
+of time all values are equally probable.
+
+sampledso.sysinfo
+Help:
+This metric has an aggregate value containing the following struct:
+ struct {
+ int len;
+ struct sysinfo sysinfo;
+ };
+
+The len field contains the size of the structure enclosing it.
+The sysinfo field contains various system accounting structures, summed over
+all CPUs, as returned by
+ sysmp(MP_SAGET, MPSA_SINFO, ...);
+
+See /usr/include/sys/sysinfo.h for the definition of the sysinfo struct.
+
+sampledso.pdu
+Help:
+Count of PDUs received or transmitted.
+
+Use pmStore() to reset the counter to 0, independent of the value passed
+to pmStore().
+
+sampledso.recv_pdu
+Help:
+Count of PDUs received.
+
+Use pmStore() to reset the counter to 0, independent of the value passed
+to pmStore().
+
+sampledso.xmit_pdu
+Help:
+Count of PDUs transmitted.
+
+Use pmStore() to reset the counter to 0, independent of the value passed
+to pmStore().
+
+sampledso.noinst
+Help:
+For testing, only. This metric is known, but no value is ever available
+
+sampledso.needprofile
+Help:
+Simulate behaviour similar to the "proc" PMDA where metrics values are
+only available if an explicit instance profile is provided.
+
+sampledso.not_ready
+Help:
+Store a positive number of seconds as the value of this metric. The
+following PDU received will result in the following sequence of events:
+ 1. return an error PDU with PM_ERR_PMDANOTREADY to pmcd
+ 2. sleep for the given number of seconds
+ 3. sends an error PDU with PM_ERR_PMDAREADY to pmcd
+If everything went as planned, sampledso.not_ready returns to 0, otherwise it
+has a negative error code as value.
+
+sampledso.rapid
+Help:
+Base counter increments by 8*10^7 per fetch. Result is 10 x base counter.
+
+sampledso.error_code
+Help:
+The metrics sampledso.error_code and sample.error_check are used in tandem
+as follows:
+ if sampledso.error_code is < 0, then any attempt to retrieve
+ information about sampledso.error_check will return a
+ sampledso.error_code as a PMAPI error from the PMDA.
+
+Use pmstore(1) to change sampledso.error_code.
+
+sampledso.error_check
+Help:
+The metrics sampledso.error_code and sample.error_check are used in tandem
+as follows:
+ if sampledso.error_code is < 0, then any attempt to retrieve
+ information about sampledso.error_check will return a
+ sampledso.error_code as a PMAPI error from the PMDA.
+
+Otherwise sampledso.error_check is a boring metric that always has
+the value 0.
+
+sampledso.bigid
+Help:
+a metric with item number bigger then 2^9
+
+sampledso.byte_ctr
+Help:
+value increments randomly in the range (0,1023) bytes per fetch
+
+sampledso.byte_rate
+Help:
+random value in the range (0,1023), so avg value is 512 bytes/second
+
+sampledso.kbyte_ctr
+Help:
+value increments randomly in the range (0,1023) Kbytes per fetch
+
+sampledso.kbyte_rate
+Help:
+random value in the range (0,1023), so avg value is 512 Kbytes/second
+
+sampledso.byte_rate_perhour
+Help:
+random value in the range (0,1023), so avg value is 512 bytes/hour
+
+sampledso.datasize
+Help:
+This metric returns the amount of memory in kilobytes allocated for the
+data segment of the PMDA.
+
+This is handy for tracing memory utilization (and leaks) in libpcp_pmda.
+
+sampledso.secret.foo.bar.max.redirect
+Full Help: Error: No PMCD agent for domain of request
+
+sampledso.secret.foo.bar.three
+Help:
+Value 3.
+
+sampledso.secret.foo.bar.four
+Help:
+Value 4.
+
+sampledso.secret.foo.bar.grunt.five
+Help:
+Value 5.
+
+sampledso.secret.foo.bar.grunt.snort.six
+Help:
+Value 6.
+
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+Help:
+Value 7.
+
+sampledso.secret.foo.one
+Help:
+Value 1.
+
+sampledso.secret.foo.two
+Help:
+Value 2.
+
+sampledso.secret.bar
+Help:
+Value "foo".
+
+sampledso.long.one
+Help:
+1 as a 32-bit integer
+
+sampledso.long.ten
+Help:
+10 as a 32-bit integer
+
+sampledso.long.hundred
+Help:
+100 as a 32-bit integer
+
+sampledso.long.million
+Help:
+1000000 as a 32-bit integer
+
+sampledso.long.write_me
+Help:
+a 32-bit integer that can be modified
+
+sampledso.long.bin
+Help:
+like sample.bin but type 32
+
+sampledso.long.bin_ctr
+Help:
+like sample.bin but type 32, SEM_COUNTER and SPACE_KBYTE
+
+sampledso.ulong.one
+Help:
+1 as a 32-bit unsigned integer
+
+sampledso.ulong.ten
+Help:
+10 as a 32-bit unsigned integer
+
+sampledso.ulong.hundred
+Help:
+100 as a 32-bit unsigned integer
+
+sampledso.ulong.million
+Help:
+1000000 as a 32-bit unsigned integer
+
+sampledso.ulong.write_me
+Help:
+a 32-bit unsigned integer that can be modified
+
+sampledso.ulong.bin
+Help:
+like sample.bin but type U32
+
+sampledso.ulong.bin_ctr
+Help:
+like sample.bin but type U32, SEM_COUNTER and SPACE_KBYTE
+
+sampledso.ulong.count.base
+Help:
+count scale is 1, value is 42,000,000
+
+sampledso.ulong.count.deca
+Help:
+count scale is 10, value is 4,200,000
+
+sampledso.ulong.count.hecto
+Help:
+count scale is 10, value is 420,000
+
+sampledso.ulong.count.kilo
+Help:
+count scale is 10, value is 42,000
+
+sampledso.ulong.count.mega
+Help:
+count scale is 10, value is 42
+
+sampledso.longlong.one
+Help:
+1 as a 64-bit integer
+
+sampledso.longlong.ten
+Help:
+10 as a 64-bit integer
+
+sampledso.longlong.hundred
+Help:
+100 as a 64-bit integer
+
+sampledso.longlong.million
+Help:
+1000000 as a 64-bit integer
+
+sampledso.longlong.write_me
+Help:
+a 64-bit integer that can be modified
+
+sampledso.longlong.bin
+Help:
+like sample.bin but type 64
+
+sampledso.longlong.bin_ctr
+Help:
+like sample.bin but type 64, SEM_COUNTER and SPACE_KBYTE
+
+sampledso.ulonglong.one
+Help:
+1 as a 64-bit unsigned integer
+
+sampledso.ulonglong.ten
+Help:
+10 as a 64-bit unsigned integer
+
+sampledso.ulonglong.hundred
+Help:
+100 as a 64-bit unsigned integer
+
+sampledso.ulonglong.million
+Help:
+1000000 as a 64-bit unsigned integer
+
+sampledso.ulonglong.write_me
+Help:
+a 64-bit unsigned integer that can be modified
+
+sampledso.ulonglong.bin
+Help:
+like sample.bin but type U64
+
+sampledso.ulonglong.bin_ctr
+Help:
+like sample.bin but type U64, SEM_COUNTER and SPACE_KBYTE
+
+sampledso.float.one
+Help:
+1 as a 32-bit floating point value
+
+sampledso.float.ten
+Help:
+10 as a 32-bit floating point value
+
+sampledso.float.hundred
+Help:
+100 as a 32-bit floating point value
+
+sampledso.float.million
+Help:
+1000000 as a 32-bit floating point value
+
+sampledso.float.write_me
+Help:
+a 32-bit floating-point value that can be modified
+
+sampledso.float.bin
+Help:
+like sample.bin but type FLOAT
+
+sampledso.float.bin_ctr
+Help:
+like sample.bin but type FLOAT, SEM_COUNTER and SPACE_KBYTE
+
+sampledso.double.one
+Help:
+1 as a 64-bit floating point value
+
+sampledso.double.ten
+Help:
+10 as a 64-bit floating point value
+
+sampledso.double.hundred
+Help:
+100 as a 64-bit floating point value
+
+sampledso.double.million
+Help:
+1000000 as a 64-bit floating point value
+
+sampledso.double.write_me
+Help:
+a 64-bit floating-point value that can be modified
+
+sampledso.double.bin
+Help:
+like sample.bin but type DOUBLE
+
+sampledso.double.bin_ctr
+Help:
+like sample.bin but type DOUBLE, SEM_COUNTER and SPACE_KBYTE
+
+sampledso.string.null
+Help:
+a zero length string
+
+sampledso.string.hullo
+Help:
+K&R have a lot to answer for
+
+sampledso.string.write_me
+Help:
+a string value that can be modified
+
+sampledso.aggregate.null
+Help:
+a zero length aggregate
+
+sampledso.aggregate.hullo
+Help:
+K&R have a lot to answer for
+
+sampledso.aggregate.write_me
+Help:
+a aggregate value that can be modified
+
+sampledso.hordes.one
+Help:
+Value of the metric is the instance identifier.
+
+sampledso.hordes.two
+Help:
+Value of the metric is 500 - the instance identifier.
+
+sampledso.bad.unknown
+Help:
+In the PMNS, but the sampledso agent pretends it does not know about this one.
+
+sampledso.bad.nosupport
+Help:
+Type is PM_NOSUPPORT, fetch returns PM_ERR_APPVERSION
+
+sampledso.bad.novalues
+Help:
+Scalar with no values, ever
+
+sampledso.wrap.long
+Help:
+The metric value increments by INT_MAX / 2 - 1 (from <limits.h>) every
+time it is fetched.
+
+sampledso.wrap.ulong
+Help:
+The metric value increments by UINT_MAX / 2 - 1 (from <limits.h>) every
+time it is fetched.
+
+sampledso.wrap.longlong
+Help:
+The metric value increments by LONGLONG_MAX / 2 - 1 (from <limits.h>)
+every time it is fetched.
+
+sampledso.wrap.ulonglong
+Help:
+The metric value increments by ULONGLONG_MAX / 2 - 1 (from <limits.h>)
+every time it is fetched.
+
+sampledso.dodgey.control
+Help:
+If sampledso.dodgey.control is <= 0, then this is returned as the "numval"
+component in the pmResult (0 => no values available, less than 0 =>
+various errors).
+
+If sampledso.dodgey.control is between 1 and 5 (inclusive), then this many
+of the values will be "visible". The values will be selected in order
+from the underlying 5 instances.
+
+If sampledso.dodgey.control is > 5, then at random times (between 1 and
+sampledso.dodgey.control fetches of the metric), the number of instances
+available is changed according to the following probabilities ...
+ 0.9 some number of instances in the range 0 to 5, selected at random
+ from the underlying 5 instances.
+ 0.1 error (PM_ERR_NOAGENT or PM_ERR_AGAIN or PM_ERR_APPVERSION)
+
+sampledso.dodgey.value
+Help:
+The metric is a set of 5 instantaneous values, drawn at random from the
+range 0 to 100. The number of instances "visible" is controlled by
+sampledso.dodgey.control.
+
+sampledso.dynamic.counter
+Help:
+Instances come from $PCP_PMDAS_DIR/sampledso/dynamic.indom, if it exists.
+Each line in this file is
+ internal_id external_id
+
+This metric increments each time this instance has been seen when scanning
+the dynamic.indom file, and resets to zero each time the instance appears.
+
+sampledso.dynamic.discrete
+Help:
+Instances come from $PCP_PMDAS_DIR/sampledso/dynamic.indom, if it exists.
+Each line in this file is
+ internal_id external_id
+
+This metric increments each time this instance has been seen when scanning
+the dynamic.indom file, and resets to zero each time the instance appears.
+
+sampledso.dynamic.instant
+Help:
+Instances come from $PCP_PMDAS_DIR/sampledso/dynamic.indom, if it exists.
+Each line in this file is
+ internal_id external_id
+
+This metric increments each time this instance has been seen when scanning
+the dynamic.indom file, and resets to zero each time the instance appears.
+
+sampledso.dynamic.meta.metric
+Help:
+See sampledso.dynamic.meta.pmdesc for the metrics that can be modified to
+change the metadata for this metric.
+The value of this metric is always 42.
+
+sampledso.dynamic.meta.pmdesc.type
+Help:
+One of these values:
+PM_TYPE_NOSUPPORT -1 /* not implemented in this version */
+PM_TYPE_32 0 /* 32-bit signed integer */
+PM_TYPE_U32 1 /* 32-bit unsigned integer */
+PM_TYPE_64 2 /* 64-bit signed integer */
+PM_TYPE_U64 3 /* 64-bit unsigned integer */
+PM_TYPE_FLOAT 4 /* 32-bit floating point */
+PM_TYPE_DOUBLE 5 /* 64-bit floating point */
+PM_TYPE_STRING 6 /* array of char */
+PM_TYPE_AGGREGATE 7 /* arbitrary binary data (aggregate) */
+PM_TYPE_AGGREGATE_STATIC 8 /* static pointer to aggregate */
+PM_TYPE_UNKNOWN 255 /* used in pmValueBlock, not pmDesc */
+
+Defaults to PM_TYPE_32.
+
+sampledso.dynamic.meta.pmdesc.indom
+Help:
+Defaults to PM_INDOM_NULL (0xffffffff).
+
+sampledso.dynamic.meta.pmdesc.sem
+Help:
+One of these values:
+PM_SEM_COUNTER 1 /* cumulative counter (monotonic increasing) */
+PM_SEM_INSTANT 3 /* instantaneous value, continuous domain */
+PM_SEM_DISCRETE 4 /* instantaneous value, discrete domain */
+
+Defaults to PM_SEM_DISCRETE.
+
+sampledso.dynamic.meta.pmdesc.units
+Help:
+6 x 4-bit values, from least-significant bit to most-significant bit:
+dimSpace:
+ -1, 0, 1
+dimTime:
+ -1, 0, 1
+dimCount:
+ 0, 1
+scaleSpace:
+ PM_SPACE_BYTE 0 /* bytes */
+ PM_SPACE_KBYTE 1 /* Kilobytes (1024) */
+ PM_SPACE_MBYTE 2 /* Megabytes (1024^2) */
+ PM_SPACE_GBYTE 3 /* Gigabytes (1024^3) */
+ PM_SPACE_TBYTE 4 /* Terabytes (1024^4) */
+ PM_SPACE_PBYTE 5 /* Petabytes (1024^5) */
+ PM_SPACE_EBYTE 6 /* Exabytes (1024^6) */
+scaleTime:
+ PM_TIME_NSEC 0 /* nanoseconds */
+ PM_TIME_USEC 1 /* microseconds */
+ PM_TIME_MSEC 2 /* milliseconds */
+ PM_TIME_SEC 3 /* seconds */
+ PM_TIME_MIN 4 /* minutes */
+ PM_TIME_HOUR 5 /* hours */
+scaleCount:
+ PM_COUNT_ONE 0 /* 1 */
+
+Defaults to { 1, -1, 0, PM_SPACE_BYTE, PM_TIME_SEC, 0 }
+
+sampledso.scale_step.bytes_up
+Help:
+count up by powers of 2, wrap back to one at 10 Tbytes
+
+sampledso.scale_step.bytes_down
+Help:
+count down by powers of 2, wrap back to 10 Tbytes at 1
+
+sampledso.scale_step.count_up
+Help:
+count up by powers of 10, wrap back to 1 at 10e12
+
+sampledso.scale_step.count_down
+Help:
+count down by powers of 10, wrap back to 10e12 at 1
+
+sampledso.scale_step.time_up_secs
+Help:
+count up seconds by multiples of 10, wrap back to 1 second at 1 day
+
+sampledso.scale_step.time_up_nanosecs
+Help:
+count up nanoseconds by multiples of 10, wrap back to 1 nanosecond at 1 day
+
+sampledso.scale_step.none_up
+Help:
+count up dimensionless by multiples of 10, wrap back to 1 at 10 million
+
+sampledso.const_rate.value
+Help:
+A counter that changes with constant rate between fetches.
+
+The rate is set by storing the desired rate (counts per second)
+into sampledso.const_rate.gradient
+
+sampledso.const_rate.gradient
+Help:
+rate per second to set sample.const_rate.value, writable
+
+sampledso.many.count
+Help:
+store a value in sampledso.many.count to change the number of instances
+that appear in sampledso.many.int's instance domain
+
+sampledso.many.int
+Help:
+store a value in sampledso.many.count to change the number of instances
+that appear in sampledso.many.int's instance domain
+
+sampledso.scramble.version
+Help:
+To make the order of instances seen from sampledso.scramble.bin
+deterministic, use pmstore(1) to trigger a reset.
+
+sampledso.scramble.bin
+Help:
+Like sampledso.bin, except
+1. instances are missing with probability 0.33
+2. order of the instances from pmFetch is random
+
+Designed to help testing instance matching between pmFetch calls
+for PCP clients.
+
+sampledso.percontext.pdu
+Help:
+Count of PDUs received from or transmitted to the current PMAPI client
+context.
+
+Use pmStore() to reset the counter to 0, independent of the value passed
+to pmStore().
+
+sampledso.percontext.recv_pdu
+Help:
+Count of PDUs received from the current PMAPI client context.
+
+Use pmStore() to reset the counter to 0, independent of the value passed
+to pmStore().
+
+sampledso.percontext.xmit_pdu
+Help:
+Count of PDUs transmitted to the current PMAPI client context.
+
+Use pmStore() to reset the counter to 0, independent of the value passed
+to pmStore().
+
+sampledso.percontext.control.ctx
+Help:
+One more than the highest PMAPI context number from PMCD.
+
+sampledso.percontext.control.active
+Help:
+Number of active PMAPI contexts
+
+sampledso.percontext.control.start
+Help:
+Incremented each time a new PMAPI context is seen from PMCD.
+
+sampledso.percontext.control.start - sample.percontext.control.end
+should equal sampledso.percontext.control.active.
+
+sampledso.percontext.control.end
+Help:
+Incremented each time PMCD closes a PMAPI context.
+
+sampledso.percontext.control.start - sample.percontext.control.end
+should equal sampledso.percontext.control.active.
+
+sampledso.event.records
+Help:
+Dummy event records are generated in a fixed pattern to help QA.
+
+Once all setups have been returned, the cycle is repeated.
+
+See event.reset to exert explicit control over the next batch of event
+records to be returned.
+
+sampledso.event.highres_records
+Help:
+Dummy high resolution event records generated in a fixed pattern to help QA.
+
+Once all setups have been returned, the cycle is repeated.
+
+See event.reset_highres to exert explicit control over the next batch of event
+records to be returned.
+
+sampledso.event.no_indom_records
+Help:
+Like sampledso.event.records but without the instance domain.
+
+sampledso.event.reset
+Help:
+Used for QA, should take one of the values 0, 1, 2 or 3
+to determine which of the dummy event record setups will
+be returned for the next fetch of event.records.
+
+sampledso.event.reset_highres
+Help:
+Used for QA, should take one of the values 0, 1, 2 or 3
+to determine which of the dummy event record setups will
+be returned for the next fetch of event.highres_records.
+
+sampledso.event.type
+Help:
+event type parameter for event records
+
+sampledso.event.param_32
+Help:
+32 parameter for event records
+
+sampledso.event.param_u32
+Help:
+U32 parameter for event records
+
+sampledso.event.param_64
+Help:
+64 parameter for event records
+
+sampledso.event.param_u64
+Help:
+U64 parameter for event records
+
+sampledso.event.param_float
+Help:
+FLOAT parameter for event records
+
+sampledso.event.param_double
+Help:
+DOUBLE parameter for event records
+
+sampledso.event.param_string
+Help:
+STRING parameter for event records
+
+sampledso.event.param_aggregate
+Help:
+AGGREGATE parameter for event records
+
+sample.seconds
+Full Help: Error: Operation requires context with host source of metrics
+
+sample.colour
+Full Help: Error: Operation requires context with host source of metrics
+
+sample.bin
+Full Help: Error: Operation requires context with host source of metrics
+
+sample.drift
+Full Help: Error: Operation requires context with host source of metrics
+
+sample.lights
+Full Help: Error: Operation requires context with host source of metrics
+
+simple.now
+Help:
+The value reflects the current time of day through a dynamically
+reconfigurable instance domain. On each metric value fetch request,
+the agent checks to see whether the configuration file in
+$PCP_PMDAS_DIR/simple/simple.conf has been modified - if it has then
+the file is re-parsed and the instance domain for this metric is again
+constructed according to its contents.
+
+This configuration file contains a single line of comma-separated time
+tokens from this set:
+ "sec" (seconds after the minute),
+ "min" (minutes after the hour),
+ "hour" (hour since midnight).
+
+An example configuration file could be: sec,min,hour
+and in this case the simple.now metric would export values
+for the three instances "sec", "min" and "hour" corresponding
+respectively to the components seconds, minutes and hours of the
+current time of day.
+
+The instance domain reflects each token present in the file, and the
+values reflect the time at which the PMDA processes the fetch.
+__pmFetchLocal: calling ???_profile(domain: 30), context: 0
+__pmFetchLocal: [0] PMID=30.0.6 nval=9
+pmFetch returns ...
+pmResult ... numpmid: 1
+ 30.0.6 (sampledso.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+
+sampledso.bin
+ inst [100 or "bin-100"] value NUMBER
+ inst [200 or "bin-200"] value NUMBER
+ inst [300 or "bin-300"] value NUMBER
+ inst [400 or "bin-400"] value NUMBER
+ inst [500 or "bin-500"] value NUMBER
+ inst [600 or "bin-600"] value NUMBER
+ inst [700 or "bin-700"] value NUMBER
+ inst [800 or "bin-800"] value NUMBER
+ inst [900 or "bin-900"] value NUMBER
+pmInResult dump from HEX for InDom 29.2 (HEX), numinst=9
+ [0] inst=100 name="bin-100"
+ [1] inst=200 name="bin-200"
+ [2] inst=300 name="bin-300"
+ [3] inst=400 name="bin-400"
+ [4] inst=500 name="bin-500"
+ [5] inst=600 name="bin-600"
+ [6] inst=700 name="bin-700"
+ [7] inst=800 name="bin-800"
+ [8] inst=900 name="bin-900"
+
+sample.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+__pmFetchLocal: calling ???_profile(domain: 253), context: 0
+__pmdaStartInst(indom=253.0) e_ordinal=0
+__pmdaNextInst(indom=253.0) -> 0 e_ordinal=1
+__pmdaNextInst(indom=253.0) -> 1 e_ordinal=2
+__pmdaNextInst(indom=253.0) -> 2 e_ordinal=3
+__pmdaStartInst(indom=253.0) e_ordinal=0
+__pmdaNextInst(indom=253.0) -> 0 e_ordinal=1
+__pmdaNextInst(indom=253.0) -> 1 e_ordinal=2
+__pmdaNextInst(indom=253.0) -> 2 e_ordinal=3
+__pmdaStartInst(indom=253.1) e_ordinal=0
+__pmdaNextInst(indom=253.1) -> 0 e_ordinal=1 (cache)
+__pmdaNextInst(indom=253.1) -> 1 e_ordinal=2 (cache)
+__pmdaNextInst(indom=253.1) -> 2 e_ordinal=3 (cache)
+__pmdaStartInst(indom=253.1) e_ordinal=0
+__pmdaNextInst(indom=253.1) -> 0 e_ordinal=1 (cache)
+__pmdaNextInst(indom=253.1) -> 1 e_ordinal=2 (cache)
+__pmdaNextInst(indom=253.1) -> 2 e_ordinal=3 (cache)
+__pmFetchLocal: [0] PMID=253.0.0 nval=1
+__pmFetchLocal: [1] PMID=253.0.1 nval=3
+__pmFetchLocal: [2] PMID=253.1.2 nval=1
+__pmFetchLocal: [3] PMID=253.1.3 nval=1
+__pmFetchLocal: [4] PMID=253.2.4 nval=3
+pmFetch returns ...
+pmResult ... numpmid: 5
+ 253.0.0 (simple.numfetch): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 253.0.1 (simple.color): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+ 253.1.2 (simple.time.user): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+ 253.1.3 (simple.time.sys): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+__pmdaCntInst(indom=253.0) -> 3
+__pmdaCntInst(indom=253.1) -> 3
+
+simple.numfetch
+ value NUMBER
+
+simple.color
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+
+simple.time.user
+ value NUMBER
+
+simple.time.sys
+ value NUMBER
+
+simple.now
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+sample.bin:
+pm*InDom: inst=[0] {Unknown or illegal instance identifier}
+pmGetInDom:
+sample.long.one:
+pm*InDom: inst=[0] {Unknown or illegal instance domain identifier}
+pmGetInDom: {Unknown or illegal instance domain identifier}
+Error: Unknown or illegal instance domain identifier
+
+pmval: instance bin-123 not available
+__pmFetchLocal: calling ???_profile(domain: 30), context: 0
+__pmFetchLocal: [0] PMID=30.0.54 nval=Unknown or illegal metric identifier
+pmFetch returns ...
+pmResult ... numpmid: 1
+ 30.0.54 (sampledso.bad.unknown): Unknown or illegal metric identifier
+sampledso.bad.unknown: pmLookupDesc: Unknown or illegal metric identifier
+
+sample.long.hundred
+ value 100
+
+sample.long.hundred
+ value 100
+pmNewContext: bad host specification
+localhost:
+ ^ -- missing port
+pminfo: Cannot connect to PMCD on host "localhost:": Generic error, already reported above
+pmNewContext: bad host specification
+localhost:44321,1x3
+ ^ -- non-numeric port
+pminfo: Cannot connect to PMCD on host "localhost:44321,1x3": Generic error, already reported above
+pminfo: Cannot connect to PMCD on host "localhost:44321@no-host": No route to host
+pminfo: Cannot connect to PMCD on host "localhost:44321@no-host:44322": No route to host
+pminfo: Cannot connect to PMCD on host "localhost:44321@": No route to host
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: Pbyte / hour
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: Ebyte / sec
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: space-7
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: time-6
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: byte^2
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: nanosec / byte
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: / byte^2
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: nanosec^3
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: / nanosec^3
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: count^2
+
+sample.dynamic.meta.metric
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: / count^2
+type=0 input units=Tbyte value=1024
+output units=Gbyte value=1048576
+type=0 input units=Gbyte value=1048576
+output units=Tbyte value=1024
+type=0 input units=Mbyte / sec value=4096
+output units=Gbyte / hour value=14400
+type=0 input units=Gbyte / hour value=14400
+output units=Mbyte / sec value=4096
+type=0 input units=Kbyte sec / count value=92160
+output units=Mbyte min / count x 10 value=15
+type=0 input units=Mbyte min / count x 10 value=15
+output units=Kbyte sec / count value=92160
+type=0 input units=sec / Mbyte value=1024
+output units=millisec / Kbyte value=1000
+type=0 input units=millisec / Kbyte value=1000
+output units=sec / Mbyte value=1024
+type=1 input units=Tbyte value=1024
+output units=Gbyte value=1048576
+type=1 input units=Gbyte value=1048576
+output units=Tbyte value=1024
+type=1 input units=Mbyte / sec value=4096
+output units=Gbyte / hour value=14400
+type=1 input units=Gbyte / hour value=14400
+output units=Mbyte / sec value=4096
+type=1 input units=Kbyte sec / count value=92160
+output units=Mbyte min / count x 10 value=15
+type=1 input units=Mbyte min / count x 10 value=15
+output units=Kbyte sec / count value=92160
+type=1 input units=sec / Mbyte value=1024
+output units=millisec / Kbyte value=1000
+type=1 input units=millisec / Kbyte value=1000
+output units=sec / Mbyte value=1024
+type=2 input units=Tbyte value=1024
+output units=Gbyte value=1048576
+type=2 input units=Gbyte value=1048576
+output units=Tbyte value=1024
+type=2 input units=Mbyte / sec value=4096
+output units=Gbyte / hour value=14400
+type=2 input units=Gbyte / hour value=14400
+output units=Mbyte / sec value=4096
+type=2 input units=Kbyte sec / count value=92160
+output units=Mbyte min / count x 10 value=15
+type=2 input units=Mbyte min / count x 10 value=15
+output units=Kbyte sec / count value=92160
+type=2 input units=sec / Mbyte value=1024
+output units=millisec / Kbyte value=1000
+type=2 input units=millisec / Kbyte value=1000
+output units=sec / Mbyte value=1024
+type=3 input units=Tbyte value=1024
+output units=Gbyte value=1048576
+type=3 input units=Gbyte value=1048576
+output units=Tbyte value=1024
+type=3 input units=Mbyte / sec value=4096
+output units=Gbyte / hour value=14400
+type=3 input units=Gbyte / hour value=14400
+output units=Mbyte / sec value=4096
+type=3 input units=Kbyte sec / count value=92160
+output units=Mbyte min / count x 10 value=15
+type=3 input units=Mbyte min / count x 10 value=15
+output units=Kbyte sec / count value=92160
+type=3 input units=sec / Mbyte value=1024
+output units=millisec / Kbyte value=1000
+type=3 input units=millisec / Kbyte value=1000
+output units=sec / Mbyte value=1024
+type=4 input units=Tbyte value=1.024000e+03
+output units=Gbyte value=1.048576e+06
+type=4 input units=Gbyte value=1.048576e+06
+output units=Tbyte value=1.024000e+03
+type=4 input units=Mbyte / sec value=4.096000e+03
+output units=Gbyte / hour value=1.440000e+04
+type=4 input units=Gbyte / hour value=1.440000e+04
+output units=Mbyte / sec value=4.096000e+03
+type=4 input units=Kbyte sec / count value=9.216000e+04
+output units=Mbyte min / count x 10 value=1.500000e+01
+type=4 input units=Mbyte min / count x 10 value=1.500000e+01
+output units=Kbyte sec / count value=9.216000e+04
+type=4 input units=sec / Mbyte value=1.024000e+03
+output units=millisec / Kbyte value=1.000000e+03
+type=4 input units=millisec / Kbyte value=1.000000e+03
+output units=sec / Mbyte value=1.024000e+03
+type=5 input units=Tbyte value=1.024000e+03
+output units=Gbyte value=1.048576e+06
+type=5 input units=Gbyte value=1.048576e+06
+output units=Tbyte value=1.024000e+03
+type=5 input units=Mbyte / sec value=4.096000e+03
+output units=Gbyte / hour value=1.440000e+04
+type=5 input units=Gbyte / hour value=1.440000e+04
+output units=Mbyte / sec value=4.096000e+03
+type=5 input units=Kbyte sec / count value=9.216000e+04
+output units=Mbyte min / count x 10 value=1.500000e+01
+type=5 input units=Mbyte min / count x 10 value=1.500000e+01
+output units=Kbyte sec / count value=9.216000e+04
+type=5 input units=sec / Mbyte value=1.024000e+03
+output units=millisec / Kbyte value=1.000000e+03
+type=5 input units=millisec / Kbyte value=1.000000e+03
+output units=sec / Mbyte value=1.024000e+03
+pmConvScale: 4096 [Pbyte] -> 4 [Ebyte]
+type=3 input units=Pbyte value=4096
+output units=Ebyte value=4
+type=3 input units=Ebyte value=4
+output units=Pbyte value=4096
+type=3 input units=space-7 value=4096
+pmConvScale Error: Illegal pmUnits specification
+type=3 input units=Pbyte value=4096
+pmConvScale Error: Illegal pmUnits specification
+type=3 input units=time-6 value=3600
+pmConvScale Error: Illegal pmUnits specification
+pmConvScale: 3600 [min] -> Error: Illegal pmUnits specification [time-6]
+type=3 input units=min value=3600
+pmConvScale Error: Illegal pmUnits specification
+type=3 input units=microsec value=0
+pmConvScale Error: Impossible value or scale conversion
+type=8 input units=microsec value=[type=AGGREGATE_STATIC len=1] 30
+pmConvScale Error: Impossible value or scale conversion
+
+pmExtractValue: 1073741823 [32] -> 1073741823 [32]
+pmExtractValue: 1073741823 [32] -> 1073741823 [U32]
+pmExtractValue: 1073741823 [32] -> 1073741823 [64]
+pmExtractValue: 1073741823 [32] -> 1073741823 [U64]
+pmExtractValue: 1073741823 [32] -> 1.073742e+09 [FLOAT]
+pmExtractValue: 1073741823 [32] -> 1.073742e+09 [DOUBLE]
+pmExtractValue: 1073741823 [32] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: 1073741823 [32] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: 1073741823 [32] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: 1073741823 [32] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: 1073741823 [U32] -> 1073741823 [32]
+pmExtractValue: 1073741823 [U32] -> 1073741823 [U32]
+pmExtractValue: 1073741823 [U32] -> 1073741823 [64]
+pmExtractValue: 1073741823 [U32] -> 1073741823 [U64]
+pmExtractValue: 1073741823 [U32] -> 1.073742e+09 [FLOAT]
+pmExtractValue: 1073741823 [U32] -> 1.073742e+09 [DOUBLE]
+pmExtractValue: 1073741823 [U32] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: 1073741823 [U32] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: 1073741823 [U32] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: 1073741823 [U32] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: 1073741823 [64] -> 1073741823 [32]
+pmExtractValue: 1073741823 [64] -> 1073741823 [U32]
+pmExtractValue: 1073741823 [64] -> 1073741823 [64]
+pmExtractValue: 1073741823 [64] -> 1073741823 [U64]
+pmExtractValue: 1073741823 [64] -> 1.073742e+09 [FLOAT]
+pmExtractValue: 1073741823 [64] -> 1.073742e+09 [DOUBLE]
+pmExtractValue: 1073741823 [64] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: 1073741823 [64] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: 1073741823 [64] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: 1073741823 [64] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: 1073741823 [U64] -> 1073741823 [32]
+pmExtractValue: 1073741823 [U64] -> 1073741823 [U32]
+pmExtractValue: 1073741823 [U64] -> 1073741823 [64]
+pmExtractValue: 1073741823 [U64] -> 1073741823 [U64]
+pmExtractValue: 1073741823 [U64] -> 1.073742e+09 [FLOAT]
+pmExtractValue: 1073741823 [U64] -> 1.073742e+09 [DOUBLE]
+pmExtractValue: 1073741823 [U64] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: 1073741823 [U64] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: 1073741823 [U64] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: 1073741823 [U64] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: 1.073742e+09 [FLOAT] -> 1073741824 [32]
+pmExtractValue: 1.073742e+09 [FLOAT] -> 1073741824 [U32]
+pmExtractValue: 1.073742e+09 [FLOAT] -> 1073741824 [64]
+pmExtractValue: 1.073742e+09 [FLOAT] -> 1073741824 [U64]
+pmExtractValue: 1.073742e+09 [FLOAT] -> 1.073742e+09 [FLOAT]
+pmExtractValue: 1.073742e+09 [FLOAT] -> 1.073742e+09 [DOUBLE]
+pmExtractValue: 1.073742e+09 [FLOAT] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: 1.073742e+09 [FLOAT] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: 1.073742e+09 [FLOAT] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: 1.073742e+09 [FLOAT] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> 1073741823 [32]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> 1073741823 [U32]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> 1073741823 [64]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> 1073741823 [U64]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> 1.073742e+09 [FLOAT]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> 1.073742e+09 [DOUBLE]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: 1.073742e+09 [DOUBLE] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [32]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [U32]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [64]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [U64]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [FLOAT]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [DOUBLE]
+pmExtractValue: "1073741823" [STRING] -> "1073741823" [STRING]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: "1073741823" [STRING] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [32]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [U32]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [64]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [U64]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [FLOAT]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [DOUBLE]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> [type=AGGREGATE len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: [len=12] 3ffffffe 3fffffff 40000000 [AGGREGATE] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [32]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [U32]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [64]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [U64]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [FLOAT]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [DOUBLE]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: ??? [EVENT] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [32]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [U32]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [64]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [U64]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [FLOAT]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [DOUBLE]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [STRING]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [AGGREGATE]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [EVENT]
+pmExtractValue: ??? [HIGHRES_EVENT] -> Error: Impossible value or scale conversion [HIGHRES_EVENT]
+
+Value: 1073741823 0x000000003fffffff
+
+Value: 2147483647 0x000000007fffffff
+(float) 2.147484e+09 => (long) : Truncation in value conversion
+(double) 2.147484e+09 => (long) : Truncation in value conversion
+
+Value: 4294967295 0x00000000ffffffff
+(long) -1 => (ulong) : Negative value in conversion to unsigned
+(long) -1 => (ulonglong) : Negative value in conversion to unsigned
+(ulong) 4294967295 => (long) : Truncation in value conversion
+(longlong) 4294967295 => (long) : Truncation in value conversion
+(ulonglong) 4294967295 => (long) : Truncation in value conversion
+(float) 4.294967e+09 => (long) : Truncation in value conversion
+(float) 4.294967e+09 => (ulong) : Truncation in value conversion
+(double) 4.294967e+09 => (long) : Truncation in value conversion
+(double) 4.294967e+09 => (ulong) : Truncation in value conversion
+
+Value: 4611686018427387903 0x3fffffffffffffff
+(long) -1 => (ulong) : Negative value in conversion to unsigned
+(long) -1 => (ulonglong) : Negative value in conversion to unsigned
+(ulong) 4294967295 => (long) : Truncation in value conversion
+(longlong) 4611686018427387903 => (long) : Truncation in value conversion
+(longlong) 4611686018427387903 => (ulong) : Truncation in value conversion
+(ulonglong) 4611686018427387903 => (long) : Truncation in value conversion
+(ulonglong) 4611686018427387903 => (ulong) : Truncation in value conversion
+(float) 4.611686e+18 => (long) : Truncation in value conversion
+(float) 4.611686e+18 => (ulong) : Truncation in value conversion
+(double) 4.611686e+18 => (long) : Truncation in value conversion
+(double) 4.611686e+18 => (ulong) : Truncation in value conversion
+
+Value: 9223372036854775807 0x7fffffffffffffff
+(long) -1 => (ulong) : Negative value in conversion to unsigned
+(long) -1 => (ulonglong) : Negative value in conversion to unsigned
+(ulong) 4294967295 => (long) : Truncation in value conversion
+(longlong) 9223372036854775807 => (long) : Truncation in value conversion
+(longlong) 9223372036854775807 => (ulong) : Truncation in value conversion
+(ulonglong) 9223372036854775807 => (long) : Truncation in value conversion
+(ulonglong) 9223372036854775807 => (ulong) : Truncation in value conversion
+(float) 9.223372e+18 => (long) : Truncation in value conversion
+(float) 9.223372e+18 => (ulong) : Truncation in value conversion
+(float) 9.223372e+18 => (longlong) : Truncation in value conversion
+(double) 9.223372e+18 => (long) : Truncation in value conversion
+(double) 9.223372e+18 => (ulong) : Truncation in value conversion
+(double) 9.223372e+18 => (longlong) : Truncation in value conversion
+
+Value: -1 0xffffffffffffffff
+(long) -1 => (ulong) : Negative value in conversion to unsigned
+(long) -1 => (ulonglong) : Negative value in conversion to unsigned
+(ulong) 4294967295 => (long) : Truncation in value conversion
+(longlong) -1 => (ulong) : Negative value in conversion to unsigned
+(longlong) -1 => (ulonglong) : Negative value in conversion to unsigned
+(ulonglong) 18446744073709551615 => (long) : Truncation in value conversion
+(ulonglong) 18446744073709551615 => (ulong) : Truncation in value conversion
+(ulonglong) 18446744073709551615 => (longlong) : Truncation in value conversion
+(float) -1.000000e+00 => (ulong) : Negative value in conversion to unsigned
+(float) -1.000000e+00 => (ulonglong) : Negative value in conversion to unsigned
+(double) -1.000000e+00 => (ulong) : Negative value in conversion to unsigned
+(double) -1.000000e+00 => (ulonglong) : Negative value in conversion to unsigned
+
+Value: 18446744073709551615 0xffffffffffffffff
+(long) -1 => (ulong) : Negative value in conversion to unsigned
+(long) -1 => (ulonglong) : Negative value in conversion to unsigned
+(ulong) 4294967295 => (long) : Truncation in value conversion
+(longlong) -1 => (ulong) : Negative value in conversion to unsigned
+(longlong) -1 => (ulonglong) : Negative value in conversion to unsigned
+(ulonglong) 18446744073709551615 => (long) : Truncation in value conversion
+(ulonglong) 18446744073709551615 => (ulong) : Truncation in value conversion
+(ulonglong) 18446744073709551615 => (longlong) : Truncation in value conversion
+(float) 1.844674e+19 => (long) : Truncation in value conversion
+(float) 1.844674e+19 => (ulong) : Truncation in value conversion
+(float) 1.844674e+19 => (longlong) : Truncation in value conversion
+(float) 1.844674e+19 => (ulonglong) : Truncation in value conversion
+(double) 1.844674e+19 => (long) : Truncation in value conversion
+(double) 1.844674e+19 => (ulong) : Truncation in value conversion
+(double) 1.844674e+19 => (longlong) : Truncation in value conversion
+(double) 1.844674e+19 => (ulonglong) : Truncation in value conversion
+
+old FLOAT: 123.456 -> 32: 123
+old FLOAT: 4151801600.000 -> 32: Truncation in value conversion
+old FLOAT: 123.456 -> U32: 123
+old FLOAT: 4294967296.000 -> U32: Truncation in value conversion
+old FLOAT: -123.456 -> U32: Negative value in conversion to unsigned
+old FLOAT: 123.456 -> 64: 123
+old FLOAT: 9223372036854775808.0 -> 64: Truncation in value conversion
+old FLOAT: 123.456 -> U64: 123
+old FLOAT: 18446744073709551616.0 -> U64: Truncation in value conversion
+old FLOAT: -123.456 -> U64: Negative value in conversion to unsigned
+old FLOAT: 123.45678 -> DOUBLE: 123.45678
+old FLOAT: 123.45678 -> STRING: Impossible value or scale conversion
+bad 64: 12345 -> 64: Impossible value or scale conversion
+bad U64: 12345 -> U64: Impossible value or scale conversion
+bad FLOAT: 123.456 -> FLOAT: Impossible value or scale conversion
+bad DOUBLE: 123.456 -> DOUBLE: Impossible value or scale conversion
+bad STRING: not me -> STRING: Impossible value or scale conversion
+bad AGGREGATE: len=0 -> AGGREGATE: Impossible value or scale conversion
+
+pmResult ... numpmid: 3
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.97 (sampledso.ulong.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.24 (sampledso.longlong.write_me): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+
+base store test (failures not unexpected) ...
+pmStore: OK
+
+numpmid == 0 tests (failures expected) ...
+pmResult ... numpmid: 0
+pmStore: Insufficient elements in list
+__pmControlLog: Insufficient elements in list
+
+numval == 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.97 (sampledso.ulong.write_me): No values returned!
+ 30.0.24 (sampledso.longlong.write_me): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.97 (sampledso.ulong.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.24 (sampledso.longlong.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+
+numval < 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.97 (sampledso.ulong.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.24 (sampledso.longlong.write_me): No PMCD agent for domain of request
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.97 (sampledso.ulong.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.24 (sampledso.longlong.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Quitting need at least 4 metrics for profile tests
+
+build_dsotab: parsing ...
+pmNewContext(3, localhost) -> 0
+Dump Contexts: current context = 0
+Context[0] standalone: profile=NOT_SENT
+Dump Instance Profile state=INCLUDE, 0 profiles
+__pmConnectLogger(host=localhost, pid=0, port=-2)
+__pmConnectLogger: __pmLogFindPort -> pid = PID
+__pmSetSocketIPC: fd=N
+IPC table fd(PDU version): ...
+__pmDecodeError: got error PDU (code=2, fromversion=2)
+__pmSetVersionIPC: fd=N version=2
+IPC table fd(PDU version): ...
+__pmSendCreds: ...
+__pmConnectLogger: PDU version=2 fd=N
+pmWhichContext() -> 0, cur=0
+pmWhichContext() -> 0, cur=0
+pmWhichContext() -> 0, cur=0
+NotifyEndLocalContext: ...
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): No PMCD agent for domain of request
+
+base store test (failures not unexpected) ...
+pmStore: Missing metric value(s)
+
+numpmid == 0 tests (failures expected) ...
+pmResult ... numpmid: 0
+pmStore: Insufficient elements in list
+__pmControlLog: Insufficient elements in list
+
+numval == 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
+ 30.0.14 (sampledso.long.write_me): No values returned!
+ 29.0.5 (sample.colour): No PMCD agent for domain of request
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+
+numval < 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): No PMCD agent for domain of request
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+Quitting need at least 4 metrics for profile tests
+
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): No PMCD agent for domain of request
+
+base store test (failures not unexpected) ...
+pmStore: Missing metric value(s)
+
+numpmid == 0 tests (failures expected) ...
+pmResult ... numpmid: 0
+pmStore: Insufficient elements in list
+__pmControlLog: Insufficient elements in list
+
+numval == 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
+ 30.0.14 (sampledso.long.write_me): No values returned!
+ 29.0.5 (sample.colour): No PMCD agent for domain of request
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+
+numval < 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): No PMCD agent for domain of request
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+Quitting need at least 4 metrics for profile tests
+
+pmResult ... numpmid: 3
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+
+base store test (failures not unexpected) ...
+pmStore: No permission to perform requested operation
+
+numpmid == 0 tests (failures expected) ...
+pmResult ... numpmid: 0
+pmStore: Insufficient elements in list
+__pmControlLog: Insufficient elements in list
+
+numval == 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+ 253.2.4 (simple.now): No values returned!
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+
+numval < 0 tests (failures expected) ...
+pmResult ... numpmid: 3
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+ 253.2.4 (simple.now): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ 253.2.4 (simple.now): No PMCD agent for domain of request
+pmStore: Missing metric value(s)
+__pmControlLog: OK
+pmResult ... numpmid: 3
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+ 253.2.4 (simple.now): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "sec"] value NUMBER
+ inst [1 or "min"] value NUMBER
+ inst [2 or "hour"] value NUMBER
+Quitting need at least 4 metrics for profile tests
diff --git a/qa/274 b/qa/274
new file mode 100755
index 0000000..89218be
--- /dev/null
+++ b/qa/274
@@ -0,0 +1,209 @@
+#! /bin/sh
+# PCP QA Test No. 274
+# Throw a broken PMDA at PCP 2.0 libpcp_pmda and dbpmda
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out
+else
+ ln $seq.out.2 $seq.out
+fi
+
+status=1
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ # "dbpmda> $" filter for Linux
+ sed \
+ -e '/pmResult/s/0x[^ ]*/ADDR/g' \
+ -e '/pmResult/s/amp: 0.000000 .* numpmid:/amp: EPOCH in LOCALTIME numpmid:/' \
+ -e 's/\/tmp.*/logfile/g' \
+ -e 's/\(broken_pmda_2_[0-9]\)([0-9][0-9]*)/\1(PID)/' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/ [0-9\.]*e-[0-9]* 0x/ REAL 0x/g' \
+ -e 's/ 0 0x/ REAL 0x/g' \
+ -e '/dbpmda> $/d' \
+ -e '/Error PDU:/s/One-line/Oneline/'
+
+# last sed substitution thanks to pv:937345 which changed the wording
+# ... preserving the old form so QA passes
+}
+
+_filter2()
+{
+ sed \
+ -e 's/^\[.*\] broken_pmda_2_.([0-9]*)/broken pmda/g' \
+ -e '/Info: direct map =/d' \
+ -e '/Info: metric map =/d' \
+ -e 's/^Log for.*/Log started/g' \
+ -e 's/^Log finished.*/Log finished/g'
+}
+
+_filter_ins()
+{
+ sed \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/'
+}
+
+_filterStartBrokenPMDA25 () {
+ # This filter came about as a result of a different ordering of
+ # output in both stdout and stderr from dbpmda in PCP 2.1. This
+ # filter makes it appear as it would in PCP 2.2 onwards so that
+ # the test can detect changes to the text itself rather than the
+ # position of the line "Start broken_pmda_2_5 PMDA..." in the
+ # output for the dbpmda "open" command.
+ $PCP_AWK_PROG '
+BEGIN { found = false }
+/Start broken_pmda_2_5 PMDA: / {
+ if (found = false) found = $0
+ else found = found $0
+ next
+ }
+/dbpmda> / {
+ if ( found != false ) {
+ print found
+ found = false
+ }
+ print $0
+ next
+ }
+ { print }
+'
+}
+
+
+# real QA test starts here
+unset ROOT MAKEFLAGS
+
+# Install the PMDA
+cd $here/pmdas/broken
+$sudo ./broken_Install -N < /dev/null | _filter_ins
+cd $here
+
+# Remove the PMDA
+_remove()
+{
+ cd $here/pmdas/broken
+ $sudo ./broken_Remove -N
+ cd $here
+}
+
+trap "_remove; exit \$status" 0 1 2 3 15
+
+dbpmda -ie 2>&1 <<End-of-File | _filter
+open pipe pmdas/broken/broken_pmda_2_0 -D47104 -l $tmp.log
+status
+# Test the valid metrics
+fetch broken.valid.one broken.valid.two broken.valid.three
+text broken.valid.one
+# Test for metric not defined in table but in the PMNS and fetch callback
+fetch broken.bogus.one
+# Test for metric not defined in table and PMNS but in the fetch callback
+fetch broken.bogus.two
+# Test for metric defined in table and fetch, but not the pmns
+fetch broken.no.pmns
+# Test for multiple fetch with an invalid metric between valid metrics
+fetch broken.valid.one broken.bogus.one broken.valid.two
+# Test for illegal data types
+fetch broken.bad.type
+# Test for metric with no fetch support
+fetch broken.no.fetch
+# Test for metric with no help
+fetch broken.no.help broken.no.shorthelp broken.no.longhelp
+text broken.no.help
+text broken.no.shorthelp
+text broken.no.longhelp
+# Test for handling of bad semantics
+fetch broken.bad.semantics
+# Test for handling of bad scale
+fetch broken.bad.scale
+# Test for handling of empty instance lists
+fetch broken.no.instances
+# Test for handling of missing instances in fetch
+fetch broken.no.instfetch
+close
+quit
+End-of-File
+
+sleep 1
+[ -f $tmp.log ] && cat $tmp.log | _filter2
+rm -f $tmp.log
+
+dbpmda -ie 2>&1 <<End-of-File | _filter
+open pipe pmdas/broken/broken_pmda_2_1 -D47104 -l $tmp.log
+status
+wait 5
+fetch broken.bad.indom
+close
+quit
+End-of-File
+
+sleep 1
+[ -f $tmp.log ] && cat $tmp.log | _filter2
+rm -f $tmp.log
+
+dbpmda -ie 2>&1 <<End-of-File | _filter
+open pipe pmdas/broken/broken_pmda_2_2 -D47104 -l $tmp.log
+status
+close
+quit
+End-of-File
+
+sleep 1
+[ -f $tmp.log ] && cat $tmp.log | _filter2
+rm -f $tmp.log
+
+dbpmda -ie 2>&1 <<End-of-File | _filter
+open pipe pmdas/broken/broken_pmda_2_3 -D47104 -l $tmp.log
+status
+close
+quit
+End-of-File
+
+sleep 1
+[ -f $tmp.log ] && cat $tmp.log | _filter2
+rm -f $tmp.log
+
+dbpmda -ie 2>&1 <<End-of-File | _filter
+open pipe pmdas/broken/broken_pmda_2_4 -D47104 -l $tmp.log
+status
+text broken.valid.one
+close
+quit
+End-of-File
+
+sleep 1
+[ -f $tmp.log ] && cat $tmp.log | _filter2
+rm -f $tmp.log
+
+dbpmda -ie 2>&1 <<End-of-File | _filter | _filterStartBrokenPMDA25
+open pipe pmdas/broken/broken_pmda_2_5 -D47104 -l $tmp.log
+status
+text broken.valid.one
+close
+quit
+End-of-File
+
+sleep 1
+[ -f $tmp.log ] && cat $tmp.log | _filter2
+rm -f $tmp.log
+
+# all done
+status=0
+exit
diff --git a/qa/274.out.1 b/qa/274.out.1
new file mode 100644
index 0000000..c66a66b
--- /dev/null
+++ b/qa/274.out.1
@@ -0,0 +1,309 @@
+QA output created by 274
+You will need to choose an appropriate configuration for installation of
+the "broken" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Skipping PMDA install and PMCD re-configuration
+dbpmda> open pipe pmdas/broken/broken_pmda_2_0 -D47104 -l logfile
+Start broken_pmda_2_0 PMDA: ./pmdas/broken/broken_pmda_2_0 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_0
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> # Test the valid metrics
+dbpmda> fetch broken.valid.one broken.valid.two broken.valid.three
+PMID(s): 249.0.0 249.0.1 249.0.7
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 3
+ 249.0.0 (broken.valid.one): numval: 1 valfmt: 0 vlist[]:
+ value 1 REAL 0x1
+ 249.0.1 (broken.valid.two): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 1 REAL 0x1
+ inst [1 or ???] value 2 REAL 0x2
+ inst [2 or ???] value 3 REAL 0x3
+ 249.0.7 (broken.valid.three): numval: 3 valfmt: 0 vlist[]:
+ inst [50 or ???] value 44 REAL 0x2c
+ inst [10 or ???] value 45 REAL 0x2d
+ inst [9 or ???] value 46 REAL 0x2e
+dbpmda> text broken.valid.one
+PMID: 249.0.0
+[calls to fetch callback]
+The number of calls to the PMDA-supplied fetch callback function.
+dbpmda> # Test for metric not defined in table but in the PMNS and fetch callback
+dbpmda> fetch broken.bogus.one
+PMID(s): 249.0.2
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.2 (broken.bogus.one): Unknown or illegal metric identifier
+dbpmda> # Test for metric not defined in table and PMNS but in the fetch callback
+dbpmda> fetch broken.bogus.two
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> # Test for metric defined in table and fetch, but not the pmns
+dbpmda> fetch broken.no.pmns
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> # Test for multiple fetch with an invalid metric between valid metrics
+dbpmda> fetch broken.valid.one broken.bogus.one broken.valid.two
+PMID(s): 249.0.0 249.0.2 249.0.1
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 3
+ 249.0.0 (broken.valid.one): numval: 1 valfmt: 0 vlist[]:
+ value 2 REAL 0x2
+ 249.0.2 (broken.bogus.one): Unknown or illegal metric identifier
+ 249.0.1 (broken.valid.two): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 1 REAL 0x1
+ inst [1 or ???] value 2 REAL 0x2
+ inst [2 or ???] value 3 REAL 0x3
+dbpmda> # Test for illegal data types
+dbpmda> fetch broken.bad.type
+PMID(s): 249.0.5
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.5 (broken.bad.type): Unknown or illegal metric type
+dbpmda> # Test for metric with no fetch support
+dbpmda> fetch broken.no.fetch
+PMID(s): 249.0.9
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.9 (broken.no.fetch): Unknown or illegal metric identifier
+dbpmda> # Test for metric with no help
+dbpmda> fetch broken.no.help broken.no.shorthelp broken.no.longhelp
+PMID(s): 249.0.10 249.0.11 249.0.12
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 3
+ 249.0.10 (broken.no.help): numval: 1 valfmt: 0 vlist[]:
+ value 55 REAL 0x37
+ 249.0.11 (broken.no.shorthelp): numval: 1 valfmt: 0 vlist[]:
+ value 66 REAL 0x42
+ 249.0.12 (broken.no.longhelp): numval: 1 valfmt: 0 vlist[]:
+ value 77 REAL 0x4d
+dbpmda> text broken.no.help
+PMID: 249.0.10
+Error PDU: Oneline or help text is not available
+Error PDU: Oneline or help text is not available
+dbpmda> text broken.no.shorthelp
+PMID: 249.0.11
+[<no one line help text specified>]
+There is no short help for the metric
+dbpmda> text broken.no.longhelp
+PMID: 249.0.12
+[no long help]
+<no help text specified>
+dbpmda> # Test for handling of bad semantics
+dbpmda> fetch broken.bad.semantics
+PMID(s): 249.1.1
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.1.1 (broken.bad.semantics): numval: 1 valfmt: 0 vlist[]:
+ value 333 REAL 0x14d
+dbpmda> # Test for handling of bad scale
+dbpmda> fetch broken.bad.scale
+PMID(s): 249.1.2
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.1.2 (broken.bad.scale): numval: 1 valfmt: 0 vlist[]:
+ value 12345 REAL 0x3039
+dbpmda> # Test for handling of empty instance lists
+dbpmda> fetch broken.no.instances
+PMID(s): 249.0.14
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.14 (broken.no.instances): No values returned!
+dbpmda> # Test for handling of missing instances in fetch
+dbpmda> fetch broken.no.instfetch
+PMID(s): 249.0.13
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.13 (broken.no.instfetch): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or ???] value 44 REAL 0x2c
+ inst [9 or ???] value 46 REAL 0x2e
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.1(1) matched to indom 249.0(0)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.7(3) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.13(8) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.14(12) matched to indom 249.8(2)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: help file pmdas/broken/broken_v2 opened
+broken pmda Warning: pmdaInit: PMDA broken_pmda_2_0: Direct mapping for metrics disabled @ metrics[2] 249.0.5
+broken pmda Info: name = broken_pmda_2_0
+broken pmda Info: domain = 249
+broken pmda Info: num metrics = 13
+broken pmda Info: num indom = 3
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_0: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Debug: Received PDU_PROFILE
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Requested metric 249.0.2 is not defined
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Requested metric 249.0.2 is not defined
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Descriptor type (Not Supported) for metric 249.0.5 is bad
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: PMID 249.0.9 not handled by fetch callback
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Instance 10 of PMID 249.0.13 not handled by fetch callback
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_1 -D47104 -l logfile
+Start broken_pmda_2_1 PMDA: ./pmdas/broken/broken_pmda_2_1 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_1
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> wait 5
+dbpmda> fetch broken.bad.indom
+PMID(s): 249.1.4
+Error: __pmSendProfile() failed: Broken pipe
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_1: Metric 0.0.1(1) matched to indom 249.0(0)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_1: Metric 0.0.7(3) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_1: Metric 0.0.13(8) matched to indom 249.7(1)
+broken pmda Critical: pmdaInit: PMDA broken_pmda_2_1: Undefined instance domain serial (17) specified in metric 0.1.4(12)
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_1: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Error: PMDA Initialisation Failed
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_2 -D47104 -l logfile
+Start broken_pmda_2_2 PMDA: ./pmdas/broken/broken_pmda_2_2 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_2
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Critical: pmdaInit: PMDA broken_pmda_2_2: Undefined instance domain serial (0) specified in metric 0.0.1(1)
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_2: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Error: PMDA Initialisation Failed
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_3 -D47104 -l logfile
+Start broken_pmda_2_3 PMDA: ./pmdas/broken/broken_pmda_2_3 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_3
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Critical: pmdaInit: PMDA broken_pmda_2_3: nmetrics (-1) should be non-negative
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_3: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Error: PMDA Initialisation Failed
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_4 -D47104 -l logfile
+Start broken_pmda_2_4 PMDA: ./pmdas/broken/broken_pmda_2_4 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_4
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> text broken.valid.one
+PMID: 249.0.0
+[calls to fetch callback]
+The number of calls to the PMDA-supplied fetch callback function.
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.1(1) matched to indom 249.0(0)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.7(3) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.13(8) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.14(12) matched to indom 249.8(2)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: help file pmdas/broken/broken_v2 opened
+broken pmda Warning: pmdaInit: PMDA broken_pmda_2_4: Direct mapping for metrics disabled @ metrics[2] 249.0.5
+broken pmda Info: name = broken_pmda_2_4
+broken pmda Info: domain = 249
+broken pmda Info: num metrics = 13
+broken pmda Info: num indom = 3
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_4: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_5 -D47104 -l logfile
+[DATE] broken_pmda_2_5(PID) Critical: __pmdaSetup: broken_pmda_2_5 PMDA: interface version 77 not supported (domain=249)
+pmdaDaemon() failed!
+Warning: no version exchange with PMDA ./pmdas/broken/broken_pmda_2_5: assuming PCP 1.x PMDA.
+Start broken_pmda_2_5 PMDA: ./pmdas/broken/broken_pmda_2_5 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_5
+Connection: daemon
+PMDA PMAPI Version: 1
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> text broken.valid.one
+PMID: 249.0.0
+Error: __pmSendTextReq() failed: Broken pipe
+Error: __pmSendTextReq() failed: Broken pipe
+dbpmda> close
+dbpmda> quit
+Culling the Performance Metrics Name Space ...
+broken ... done
+Skipping PMDA removal and PMCD re-configuration
diff --git a/qa/274.out.2 b/qa/274.out.2
new file mode 100644
index 0000000..c606045
--- /dev/null
+++ b/qa/274.out.2
@@ -0,0 +1,307 @@
+QA output created by 274
+You will need to choose an appropriate configuration for installation of
+the "broken" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+dbpmda> open pipe pmdas/broken/broken_pmda_2_0 -D47104 -l logfile
+Start broken_pmda_2_0 PMDA: ./pmdas/broken/broken_pmda_2_0 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_0
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> # Test the valid metrics
+dbpmda> fetch broken.valid.one broken.valid.two broken.valid.three
+PMID(s): 249.0.0 249.0.1 249.0.7
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 3
+ 249.0.0 (broken.valid.one): numval: 1 valfmt: 0 vlist[]:
+ value 1 REAL 0x1
+ 249.0.1 (broken.valid.two): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 1 REAL 0x1
+ inst [1 or ???] value 2 REAL 0x2
+ inst [2 or ???] value 3 REAL 0x3
+ 249.0.7 (broken.valid.three): numval: 3 valfmt: 0 vlist[]:
+ inst [50 or ???] value 44 REAL 0x2c
+ inst [10 or ???] value 45 REAL 0x2d
+ inst [9 or ???] value 46 REAL 0x2e
+dbpmda> text broken.valid.one
+PMID: 249.0.0
+[calls to fetch callback]
+The number of calls to the PMDA-supplied fetch callback function.
+dbpmda> # Test for metric not defined in table but in the PMNS and fetch callback
+dbpmda> fetch broken.bogus.one
+PMID(s): 249.0.2
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.2 (broken.bogus.one): Unknown or illegal metric identifier
+dbpmda> # Test for metric not defined in table and PMNS but in the fetch callback
+dbpmda> fetch broken.bogus.two
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> # Test for metric defined in table and fetch, but not the pmns
+dbpmda> fetch broken.no.pmns
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> # Test for multiple fetch with an invalid metric between valid metrics
+dbpmda> fetch broken.valid.one broken.bogus.one broken.valid.two
+PMID(s): 249.0.0 249.0.2 249.0.1
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 3
+ 249.0.0 (broken.valid.one): numval: 1 valfmt: 0 vlist[]:
+ value 2 REAL 0x2
+ 249.0.2 (broken.bogus.one): Unknown or illegal metric identifier
+ 249.0.1 (broken.valid.two): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 1 REAL 0x1
+ inst [1 or ???] value 2 REAL 0x2
+ inst [2 or ???] value 3 REAL 0x3
+dbpmda> # Test for illegal data types
+dbpmda> fetch broken.bad.type
+PMID(s): 249.0.5
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.5 (broken.bad.type): Unknown or illegal metric type
+dbpmda> # Test for metric with no fetch support
+dbpmda> fetch broken.no.fetch
+PMID(s): 249.0.9
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.9 (broken.no.fetch): Unknown or illegal metric identifier
+dbpmda> # Test for metric with no help
+dbpmda> fetch broken.no.help broken.no.shorthelp broken.no.longhelp
+PMID(s): 249.0.10 249.0.11 249.0.12
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 3
+ 249.0.10 (broken.no.help): numval: 1 valfmt: 0 vlist[]:
+ value 55 REAL 0x37
+ 249.0.11 (broken.no.shorthelp): numval: 1 valfmt: 0 vlist[]:
+ value 66 REAL 0x42
+ 249.0.12 (broken.no.longhelp): numval: 1 valfmt: 0 vlist[]:
+ value 77 REAL 0x4d
+dbpmda> text broken.no.help
+PMID: 249.0.10
+Error PDU: Oneline or help text is not available
+Error PDU: Oneline or help text is not available
+dbpmda> text broken.no.shorthelp
+PMID: 249.0.11
+[<no one line help text specified>]
+There is no short help for the metric
+dbpmda> text broken.no.longhelp
+PMID: 249.0.12
+[no long help]
+<no help text specified>
+dbpmda> # Test for handling of bad semantics
+dbpmda> fetch broken.bad.semantics
+PMID(s): 249.1.1
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.1.1 (broken.bad.semantics): numval: 1 valfmt: 0 vlist[]:
+ value 333 REAL 0x14d
+dbpmda> # Test for handling of bad scale
+dbpmda> fetch broken.bad.scale
+PMID(s): 249.1.2
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.1.2 (broken.bad.scale): numval: 1 valfmt: 0 vlist[]:
+ value 12345 REAL 0x3039
+dbpmda> # Test for handling of empty instance lists
+dbpmda> fetch broken.no.instances
+PMID(s): 249.0.14
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.14 (broken.no.instances): No values returned!
+dbpmda> # Test for handling of missing instances in fetch
+dbpmda> fetch broken.no.instfetch
+PMID(s): 249.0.13
+pmResult dump from ADDR timestamp: EPOCH in LOCALTIME numpmid: 1
+ 249.0.13 (broken.no.instfetch): numval: 2 valfmt: 0 vlist[]:
+ inst [50 or ???] value 44 REAL 0x2c
+ inst [9 or ???] value 46 REAL 0x2e
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.1(1) matched to indom 249.0(0)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.7(3) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.13(8) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: Metric 0.0.14(12) matched to indom 249.8(2)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_0: help file pmdas/broken/broken_v2 opened
+broken pmda Warning: pmdaDirect: PMDA broken_pmda_2_0: Direct mapping for metrics disabled @ metrics[2] 249.0.5
+broken pmda Info: name = broken_pmda_2_0
+broken pmda Info: domain = 249
+broken pmda Info: ext flags = 4
+broken pmda Info: num metrics = 13
+broken pmda Info: num indom = 3
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_0: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Debug: Received PDU_PROFILE
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Requested metric 249.0.2 is not defined
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Requested metric 249.0.2 is not defined
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Descriptor type (Not Supported) for metric 249.0.5 is bad
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: PMID 249.0.9 not handled by fetch callback
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_FETCH
+broken pmda Debug: Received PDU_FETCH
+broken pmda Error: pmdaFetch: Instance 10 of PMID 249.0.13 not handled by fetch callback
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_1 -D47104 -l logfile
+Start broken_pmda_2_1 PMDA: ./pmdas/broken/broken_pmda_2_1 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_1
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> wait 5
+dbpmda> fetch broken.bad.indom
+PMID(s): 249.1.4
+Error: __pmSendProfile() failed: Broken pipe
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_1: Metric 0.0.1(1) matched to indom 249.0(0)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_1: Metric 0.0.7(3) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_1: Metric 0.0.13(8) matched to indom 249.7(1)
+broken pmda Critical: pmdaInit: PMDA broken_pmda_2_1: Undefined instance domain serial (17) specified in metric 0.1.4(12)
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_1: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Error: PMDA Initialisation Failed
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_2 -D47104 -l logfile
+Start broken_pmda_2_2 PMDA: ./pmdas/broken/broken_pmda_2_2 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_2
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Critical: pmdaInit: PMDA broken_pmda_2_2: Undefined instance domain serial (0) specified in metric 0.0.1(1)
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_2: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Error: PMDA Initialisation Failed
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_3 -D47104 -l logfile
+Start broken_pmda_2_3 PMDA: ./pmdas/broken/broken_pmda_2_3 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_3
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Critical: pmdaInit: PMDA broken_pmda_2_3: nmetrics (-1) should be non-negative
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_3: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Error: PMDA Initialisation Failed
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_4 -D47104 -l logfile
+Start broken_pmda_2_4 PMDA: ./pmdas/broken/broken_pmda_2_4 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_4
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> text broken.valid.one
+PMID: 249.0.0
+[calls to fetch callback]
+The number of calls to the PMDA-supplied fetch callback function.
+dbpmda> close
+dbpmda> quit
+Log started
+
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.1(1) matched to indom 249.0(0)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.7(3) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.13(8) matched to indom 249.7(1)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: Metric 0.0.14(12) matched to indom 249.8(2)
+broken pmda Debug: pmdaInit: PMDA broken_pmda_2_4: help file pmdas/broken/broken_v2 opened
+broken pmda Warning: pmdaDirect: PMDA broken_pmda_2_4: Direct mapping for metrics disabled @ metrics[2] 249.0.5
+broken pmda Info: name = broken_pmda_2_4
+broken pmda Info: domain = 249
+broken pmda Info: ext flags = 4
+broken pmda Info: num metrics = 13
+broken pmda Info: num indom = 3
+broken pmda Debug: pmdaConnect: PMDA broken_pmda_2_4: opened pipe to pmcd, infd = 0, outfd = 1
+broken pmda Debug: Received PDU_TEXT_REQ
+broken pmda Debug: Received PDU_TEXT_REQ
+
+Log finished
+dbpmda> open pipe pmdas/broken/broken_pmda_2_5 -D47104 -l logfile
+[DATE] broken_pmda_2_5(PID) Critical: __pmdaSetup: broken_pmda_2_5 PMDA: interface version 77 not supported (domain=249)
+pmdaDaemon() failed!
+pmdaversion: expecting PDU_CREDS, got PDU type 0
+Warning: no version exchange with PMDA ./pmdas/broken/broken_pmda_2_5
+Start broken_pmda_2_5 PMDA: ./pmdas/broken/broken_pmda_2_5 -D47104 -l logfile
+dbpmda> status
+
+Namespace: (default)
+PMDA: ./pmdas/broken/broken_pmda_2_5
+Connection: daemon
+PMDA PMAPI Version: unknown!
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> text broken.valid.one
+PMID: 249.0.0
+Error: __pmSendTextReq() failed: Broken pipe
+Error: __pmSendTextReq() failed: Broken pipe
+dbpmda> close
+dbpmda> quit
+Culling the Performance Metrics Name Space ...
+broken ... done
+Skipping PMDA removal and PMCD re-configuration
diff --git a/qa/275 b/qa/275
new file mode 100755
index 0000000..c132167
--- /dev/null
+++ b/qa/275
@@ -0,0 +1,142 @@
+#!/bin/sh
+# PCP QA Test No. 275
+#
+# pmUnits handling for derived metrics
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+export PCP_DERIVED_CONFIG=$tmp.config
+
+# Derived metric expr dump from 0x8513a48...
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+BEGIN { n = 0 }
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e "s;$tmp;TMP;"
+# -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=1 [sample.pdu] master=0
+# ...
+# [0] inst=-1, val=49794
+_filter2()
+{
+ sed <$tmp.out -e 's/val=/val /' \
+ | awk >$tmp.sed2 '
+BEGIN { n = 0 }
+/expr.*sample\./ { want=1; next }
+want == 1 && $3 == "val" { if (seen[$4] != "y") {
+ print "s/ val=" $4 "$/ val=<value-" n ">/"
+ n++
+ seen[$4] = "y"
+ }
+ }
+$1 == "expr" { want = 0 }'
+ echo "=== sed2 ===" >>$seq.full
+ cat $tmp.sed2 >>$seq.full
+ sed -f $tmp.sed2
+}
+
+# real QA test starts here
+
+echo "=== expression trees and pmDesc propagation ==="
+cat <<End-of-File >$tmp.config
+my.space_over_time1 = sample.mirage + sample.mirage_longlong
+my.space_over_time2 = sample.mirage_longlong + sample.mirage
+my.space_over_time3 = sample.mirage_longlong + sample.mirage - sample.byte_rate
+my.space_over_time4 = sample.byte_rate + sample.byte_rate_perhour
+my.space = sample.byte_ctr + sample.kbyte_ctr
+my.byte1 = sample.byte_rate * sample.scale_step.time_up_secs
+my.byte2 = sample.byte_rate * sample.scale_step.time_up_nanosecs
+my.x1 = sample.scale_step.bytes_down / sample.scale_step.time_up_secs
+my.x2 = sample.scale_step.bytes_down / sample.scale_step.time_up_secs + sample.mirage
+my.x3 = sample.scale_step.count_up * sample.scale_step.count_down
+my.x4 = sample.scale_step.count_down / sample.scale_step.count_up
+# discrete and instantaneous combinations
+my.i1 = 42 + sample.scale_step.none_up
+my.i2 = sample.scale_step.none_up + 42
+my.i3 = pmcd.pmlogger.port - pmcd.pmlogger.port
+End-of-File
+echo
+cat $tmp.config
+
+echo
+pminfo -Dderive,appl0,appl1 -d my >$tmp.out 2>&1
+_filter
+
+echo
+echo "=== fetch values exercises ==="
+echo
+
+pminfo -f -a src/sample_expr
+
+# suggested by gcov analysis
+echo
+echo "=== some more scale conversion tests ==="
+
+cat <<End-of-File >$tmp.config
+gcov.a = ( 1 / sample.mirage_longlong ) / (1 / sample.mirage )
+gcov.b = ( 1 / sample.mirage ) / (1 / sample.mirage_longlong )
+gcov.c = sample.seconds + disk.all.total
+gcov.d = sample.ulong.count.base - sample.ulong.count.kilo
+gcov.e = sample.ulong.count.mega - sample.ulong.count.kilo
+gcov.f = (1/sample.ulong.count.base) - (1/sample.ulong.count.kilo)
+gcov.g = (1/sample.ulong.count.mega) - (1/sample.ulong.count.kilo)
+End-of-File
+echo
+cat $tmp.config
+
+pminfo -Dderive,appl1 -d gcov >$tmp.out 2>&1
+_filter | _filter2
+
+pminfo -f gcov.d gcov.e gcov.f gcov.g
+
+exit
+
+# don't have any semantic checking at this stage ... all done earlier
+
+echo
+echo "=== semantic errors ==="
+cat <<End-of-File >$tmp.config
+End-of-File
+echo
+cat $tmp.config
+
+echo
+pminfo -Dderive,appl0,appl1 -d my >$tmp.out 2>&1
+_filter
+
+# success, all done
+exit
diff --git a/qa/275.out b/qa/275.out
new file mode 100644
index 0000000..137fad1
--- /dev/null
+++ b/qa/275.out
@@ -0,0 +1,801 @@
+QA output created by 275
+=== expression trees and pmDesc propagation ===
+
+my.space_over_time1 = sample.mirage + sample.mirage_longlong
+my.space_over_time2 = sample.mirage_longlong + sample.mirage
+my.space_over_time3 = sample.mirage_longlong + sample.mirage - sample.byte_rate
+my.space_over_time4 = sample.byte_rate + sample.byte_rate_perhour
+my.space = sample.byte_ctr + sample.kbyte_ctr
+my.byte1 = sample.byte_rate * sample.scale_step.time_up_secs
+my.byte2 = sample.byte_rate * sample.scale_step.time_up_nanosecs
+my.x1 = sample.scale_step.bytes_down / sample.scale_step.time_up_secs
+my.x2 = sample.scale_step.bytes_down / sample.scale_step.time_up_secs + sample.mirage
+my.x3 = sample.scale_step.count_up * sample.scale_step.count_down
+my.x4 = sample.scale_step.count_down / sample.scale_step.count_up
+# discrete and instantaneous combinations
+my.i1 = 42 + sample.scale_step.none_up
+my.i2 = sample.scale_step.none_up + 42
+my.i3 = pmcd.pmlogger.port - pmcd.pmlogger.port
+
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: name="my.space_over_time1" expr="sample.mirage + sample.mirage_longlong"
+parse(1) state=P_INIT type=L_NAME "sample.mirage"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.mirage_longlong"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[0] my.space_over_time1 = sample.mirage + sample.mirage_longlong
+Derived metric expr dump from <addr-0>...
+expr node <addr-0> type=PLUS left=<addr-1> right=<addr-2> save_last=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=1
+expr node <addr-2> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=1
+pmRegisterDerived: name="my.space_over_time2" expr="sample.mirage_longlong + sample.mirage"
+parse(1) state=P_INIT type=L_NAME "sample.mirage_longlong"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.mirage"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[1] my.space_over_time2 = sample.mirage_longlong + sample.mirage
+Derived metric expr dump from <addr-3>...
+expr node <addr-3> type=PLUS left=<addr-4> right=<addr-5> save_last=0
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=1
+expr node <addr-5> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=1
+pmRegisterDerived: name="my.space_over_time3" expr="sample.mirage_longlong + sample.mirage - sample.byte_rate"
+parse(1) state=P_INIT type=L_NAME "sample.mirage_longlong"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.mirage"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_NAME "sample.byte_rate"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[2] my.space_over_time3 = sample.mirage_longlong + sample.mirage - sample.byte_rate
+Derived metric expr dump from <addr-6>...
+expr node <addr-6> type=MINUS left=<addr-7> right=<addr-10> save_last=0
+expr node <addr-7> type=PLUS left=<addr-8> right=<addr-9> save_last=0
+expr node <addr-8> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=1
+expr node <addr-9> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=1
+expr node <addr-10> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=1
+pmRegisterDerived: name="my.space_over_time4" expr="sample.byte_rate + sample.byte_rate_perhour"
+parse(1) state=P_INIT type=L_NAME "sample.byte_rate"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.byte_rate_perhour"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[3] my.space_over_time4 = sample.byte_rate + sample.byte_rate_perhour
+Derived metric expr dump from <addr-11>...
+expr node <addr-11> type=PLUS left=<addr-12> right=<addr-13> save_last=0
+expr node <addr-12> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=1
+expr node <addr-13> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate_perhour] master=1
+pmRegisterDerived: name="my.space" expr="sample.byte_ctr + sample.kbyte_ctr"
+parse(1) state=P_INIT type=L_NAME "sample.byte_ctr"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.kbyte_ctr"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[4] my.space = sample.byte_ctr + sample.kbyte_ctr
+Derived metric expr dump from <addr-14>...
+expr node <addr-14> type=PLUS left=<addr-15> right=<addr-16> save_last=0
+expr node <addr-15> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_ctr] master=1
+expr node <addr-16> type=NAME left=(nil) right=(nil) save_last=0 [sample.kbyte_ctr] master=1
+pmRegisterDerived: name="my.byte1" expr="sample.byte_rate * sample.scale_step.time_up_secs"
+parse(1) state=P_INIT type=L_NAME "sample.byte_rate"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.scale_step.time_up_secs"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[5] my.byte1 = sample.byte_rate * sample.scale_step.time_up_secs
+Derived metric expr dump from <addr-17>...
+expr node <addr-17> type=STAR left=<addr-18> right=<addr-19> save_last=0
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=1
+expr node <addr-19> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_secs] master=1
+pmRegisterDerived: name="my.byte2" expr="sample.byte_rate * sample.scale_step.time_up_nanosecs"
+parse(1) state=P_INIT type=L_NAME "sample.byte_rate"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.scale_step.time_up_nanosecs"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[6] my.byte2 = sample.byte_rate * sample.scale_step.time_up_nanosecs
+Derived metric expr dump from <addr-20>...
+expr node <addr-20> type=STAR left=<addr-21> right=<addr-22> save_last=0
+expr node <addr-21> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=1
+expr node <addr-22> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_nanosecs] master=1
+pmRegisterDerived: name="my.x1" expr="sample.scale_step.bytes_down / sample.scale_step.time_up_secs"
+parse(1) state=P_INIT type=L_NAME "sample.scale_step.bytes_down"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_NAME "sample.scale_step.time_up_secs"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[7] my.x1 = sample.scale_step.bytes_down / sample.scale_step.time_up_secs
+Derived metric expr dump from <addr-23>...
+expr node <addr-23> type=SLASH left=<addr-24> right=<addr-25> save_last=0
+expr node <addr-24> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.bytes_down] master=1
+expr node <addr-25> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_secs] master=1
+pmRegisterDerived: name="my.x2" expr="sample.scale_step.bytes_down / sample.scale_step.time_up_secs + sample.mirage"
+parse(1) state=P_INIT type=L_NAME "sample.scale_step.bytes_down"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_NAME "sample.scale_step.time_up_secs"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.mirage"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[8] my.x2 = sample.scale_step.bytes_down / sample.scale_step.time_up_secs + sample.mirage
+Derived metric expr dump from <addr-26>...
+expr node <addr-26> type=PLUS left=<addr-27> right=<addr-30> save_last=0
+expr node <addr-27> type=SLASH left=<addr-28> right=<addr-29> save_last=0
+expr node <addr-28> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.bytes_down] master=1
+expr node <addr-29> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_secs] master=1
+expr node <addr-30> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=1
+pmRegisterDerived: name="my.x3" expr="sample.scale_step.count_up * sample.scale_step.count_down"
+parse(1) state=P_INIT type=L_NAME "sample.scale_step.count_up"
+parse(1) state=P_LEAF type=L_STAR "*"
+parse(1) state=P_BINOP type=L_NAME "sample.scale_step.count_down"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[9] my.x3 = sample.scale_step.count_up * sample.scale_step.count_down
+Derived metric expr dump from <addr-31>...
+expr node <addr-31> type=STAR left=<addr-32> right=<addr-33> save_last=0
+expr node <addr-32> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_up] master=1
+expr node <addr-33> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_down] master=1
+pmRegisterDerived: name="my.x4" expr="sample.scale_step.count_down / sample.scale_step.count_up"
+parse(1) state=P_INIT type=L_NAME "sample.scale_step.count_down"
+parse(1) state=P_LEAF type=L_SLASH "/"
+parse(1) state=P_BINOP type=L_NAME "sample.scale_step.count_up"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[10] my.x4 = sample.scale_step.count_down / sample.scale_step.count_up
+Derived metric expr dump from <addr-34>...
+expr node <addr-34> type=SLASH left=<addr-35> right=<addr-36> save_last=0
+expr node <addr-35> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_down] master=1
+expr node <addr-36> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_up] master=1
+pmRegisterDerived: name="my.i1" expr="42 + sample.scale_step.none_up"
+parse(1) state=P_INIT type=L_NUMBER "42"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NAME "sample.scale_step.none_up"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[11] my.i1 = 42 + sample.scale_step.none_up
+Derived metric expr dump from <addr-37>...
+expr node <addr-37> type=PLUS left=<addr-38> right=<addr-39> save_last=0
+expr node <addr-38> type=NUMBER left=(nil) right=(nil) save_last=0 [42] master=1
+expr node <addr-39> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.none_up] master=1
+pmRegisterDerived: name="my.i2" expr="sample.scale_step.none_up + 42"
+parse(1) state=P_INIT type=L_NAME "sample.scale_step.none_up"
+parse(1) state=P_LEAF type=L_PLUS "+"
+parse(1) state=P_BINOP type=L_NUMBER "42"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[12] my.i2 = sample.scale_step.none_up + 42
+Derived metric expr dump from <addr-40>...
+expr node <addr-40> type=PLUS left=<addr-41> right=<addr-42> save_last=0
+expr node <addr-41> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.none_up] master=1
+expr node <addr-42> type=NUMBER left=(nil) right=(nil) save_last=0 [42] master=1
+pmRegisterDerived: name="my.i3" expr="pmcd.pmlogger.port - pmcd.pmlogger.port"
+parse(1) state=P_INIT type=L_NAME "pmcd.pmlogger.port"
+parse(1) state=P_LEAF type=L_MINUS "-"
+parse(1) state=P_BINOP type=L_NAME "pmcd.pmlogger.port"
+parse(1) state=P_LEAF type=L_EOF ""
+pmRegisterDerived: register metric[13] my.i3 = pmcd.pmlogger.port - pmcd.pmlogger.port
+Derived metric expr dump from <addr-43>...
+expr node <addr-43> type=MINUS left=<addr-44> right=<addr-45> save_last=0
+expr node <addr-44> type=NAME left=(nil) right=(nil) save_last=0 [pmcd.pmlogger.port] master=1
+expr node <addr-45> type=NAME left=(nil) right=(nil) save_last=0 [pmcd.pmlogger.port] master=1
+__dmopencontext(->ctx 0) called
+__dmopencontext: bind metric[0] my.space_over_time1
+Derived metric expr dump from <addr-46>...
+expr node <addr-46> type=PLUS left=<addr-47> right=<addr-48> save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-47> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=0
+ PMID: 29.0.37 (29.0.37 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-48> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=0
+ PMID: 29.0.38 (29.0.38 from pmDesc) numval: 0 div_scale: 1024 mul_scale: 1000
+ Data Type: 64-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: byte / millisec
+__dmopencontext: bind metric[1] my.space_over_time2
+Derived metric expr dump from <addr-49>...
+expr node <addr-49> type=PLUS left=<addr-50> right=<addr-51> save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-50> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=0
+ PMID: 29.0.38 (29.0.38 from pmDesc) numval: 0 div_scale: 1024 mul_scale: 1000
+ Data Type: 64-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: byte / millisec
+expr node <addr-51> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=0
+ PMID: 29.0.37 (29.0.37 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+__dmopencontext: bind metric[2] my.space_over_time3
+Derived metric expr dump from <addr-52>...
+expr node <addr-52> type=MINUS left=<addr-53> right=<addr-56> save_last=0
+ PMID: PM_ID_NULL (511.0.3 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-53> type=PLUS left=<addr-54> right=<addr-55> save_last=0
+ PMID: PM_ID_NULL (29.0.38 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-54> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=0
+ PMID: 29.0.38 (29.0.38 from pmDesc) numval: 0 div_scale: 1024 mul_scale: 1000
+ Data Type: 64-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: byte / millisec
+expr node <addr-55> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=0
+ PMID: 29.0.37 (29.0.37 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-56> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=0
+ PMID: 29.0.82 (29.0.82 from pmDesc) numval: 0 div_scale: 1024
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+__dmopencontext: bind metric[3] my.space_over_time4
+Derived metric expr dump from <addr-57>...
+expr node <addr-57> type=PLUS left=<addr-58> right=<addr-59> save_last=0
+ PMID: PM_ID_NULL (511.0.4 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / hour
+expr node <addr-58> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=0
+ PMID: 29.0.82 (29.0.82 from pmDesc) numval: 0 mul_scale: 3600
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+expr node <addr-59> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate_perhour] master=0
+ PMID: 29.0.85 (29.0.85 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / hour
+__dmopencontext: bind metric[4] my.space
+Derived metric expr dump from <addr-60>...
+expr node <addr-60> type=PLUS left=<addr-61> right=<addr-62> save_last=0
+ PMID: PM_ID_NULL (511.0.5 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+expr node <addr-61> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_ctr] master=0
+ PMID: 29.0.81 (29.0.81 from pmDesc) numval: 0 div_scale: 1024
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+expr node <addr-62> type=NAME left=(nil) right=(nil) save_last=0 [sample.kbyte_ctr] master=0
+ PMID: 29.0.83 (29.0.83 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+__dmopencontext: bind metric[5] my.byte1
+Derived metric expr dump from <addr-63>...
+expr node <addr-63> type=STAR left=<addr-64> right=<addr-65> save_last=0
+ PMID: PM_ID_NULL (511.0.6 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte
+expr node <addr-64> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=0
+ PMID: 29.0.82 (29.0.82 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+expr node <addr-65> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_secs] master=0
+ PMID: 29.0.69 (29.0.69 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+__dmopencontext: bind metric[6] my.byte2
+Derived metric expr dump from <addr-66>...
+expr node <addr-66> type=STAR left=<addr-67> right=<addr-68> save_last=0
+ PMID: PM_ID_NULL (511.0.7 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte
+expr node <addr-67> type=NAME left=(nil) right=(nil) save_last=0 [sample.byte_rate] master=0
+ PMID: 29.0.82 (29.0.82 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+expr node <addr-68> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_nanosecs] master=0
+ PMID: 29.0.70 (29.0.70 from pmDesc) numval: 0 div_scale: 1000000000
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: nanosec
+__dmopencontext: bind metric[7] my.x1
+Derived metric expr dump from <addr-69>...
+expr node <addr-69> type=SLASH left=<addr-70> right=<addr-71> save_last=0
+ PMID: PM_ID_NULL (511.0.8 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+expr node <addr-70> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.bytes_down] master=0
+ PMID: 29.0.66 (29.0.66 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte
+expr node <addr-71> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_secs] master=0
+ PMID: 29.0.69 (29.0.69 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+__dmopencontext: bind metric[8] my.x2
+Derived metric expr dump from <addr-72>...
+expr node <addr-72> type=PLUS left=<addr-73> right=<addr-76> save_last=0
+ PMID: PM_ID_NULL (511.0.9 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-73> type=SLASH left=<addr-74> right=<addr-75> save_last=0
+ PMID: PM_ID_NULL (29.0.66 from pmDesc) numval: 0 div_scale: 1024
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+expr node <addr-74> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.bytes_down] master=0
+ PMID: 29.0.66 (29.0.66 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte
+expr node <addr-75> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.time_up_secs] master=0
+ PMID: 29.0.69 (29.0.69 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+expr node <addr-76> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=0
+ PMID: 29.0.37 (29.0.37 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+__dmopencontext: bind metric[9] my.x3
+Derived metric expr dump from <addr-77>...
+expr node <addr-77> type=STAR left=<addr-78> right=<addr-79> save_last=0
+ PMID: PM_ID_NULL (511.0.10 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count^2 / sec
+expr node <addr-78> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_up] master=0
+ PMID: 29.0.67 (29.0.67 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count / sec
+expr node <addr-79> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_down] master=0
+ PMID: 29.0.68 (29.0.68 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+__dmopencontext: bind metric[10] my.x4
+Derived metric expr dump from <addr-80>...
+expr node <addr-80> type=SLASH left=<addr-81> right=<addr-82> save_last=0
+ PMID: PM_ID_NULL (511.0.11 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+expr node <addr-81> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_down] master=0
+ PMID: 29.0.68 (29.0.68 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+expr node <addr-82> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.count_up] master=0
+ PMID: 29.0.67 (29.0.67 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count / sec
+__dmopencontext: bind metric[11] my.i1
+Derived metric expr dump from <addr-83>...
+expr node <addr-83> type=PLUS left=<addr-84> right=<addr-85> save_last=0
+ PMID: PM_ID_NULL (511.0.12 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-84> type=NUMBER left=(nil) right=(nil) save_last=0 [42] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-85> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.none_up] master=0
+ PMID: 29.0.71 (29.0.71 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+__dmopencontext: bind metric[12] my.i2
+Derived metric expr dump from <addr-86>...
+expr node <addr-86> type=PLUS left=<addr-87> right=<addr-88> save_last=0
+ PMID: PM_ID_NULL (511.0.13 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-87> type=NAME left=(nil) right=(nil) save_last=0 [sample.scale_step.none_up] master=0
+ PMID: 29.0.71 (29.0.71 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+expr node <addr-88> type=NUMBER left=(nil) right=(nil) save_last=0 [42] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+__dmopencontext: bind metric[13] my.i3
+Derived metric expr dump from <addr-89>...
+expr node <addr-89> type=MINUS left=<addr-90> right=<addr-91> save_last=0
+ PMID: PM_ID_NULL (511.0.14 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+expr node <addr-90> type=NAME left=(nil) right=(nil) save_last=0 [pmcd.pmlogger.port] master=0
+ PMID: 2.3.0 (2.3.0 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+expr node <addr-91> type=NAME left=(nil) right=(nil) save_last=0 [pmcd.pmlogger.port] master=0
+ PMID: 2.3.0 (2.3.0 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+__dmgetpmid: metric "my.space_over_time1" -> PMID 511.0.1
+__dmgetpmid: metric "my.space_over_time2" -> PMID 511.0.2
+__dmgetpmid: metric "my.space_over_time3" -> PMID 511.0.3
+__dmgetpmid: metric "my.space_over_time4" -> PMID 511.0.4
+__dmgetpmid: metric "my.space" -> PMID 511.0.5
+__dmgetpmid: metric "my.byte1" -> PMID 511.0.6
+__dmgetpmid: metric "my.byte2" -> PMID 511.0.7
+__dmgetpmid: metric "my.x1" -> PMID 511.0.8
+__dmgetpmid: metric "my.x2" -> PMID 511.0.9
+__dmgetpmid: metric "my.x3" -> PMID 511.0.10
+__dmgetpmid: metric "my.x4" -> PMID 511.0.11
+__dmgetpmid: metric "my.i1" -> PMID 511.0.12
+__dmgetpmid: metric "my.i2" -> PMID 511.0.13
+__dmgetpmid: metric "my.i3" -> PMID 511.0.14
+
+my.space_over_time1
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+
+my.space_over_time2
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+
+my.space_over_time3
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+
+my.space_over_time4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / hour
+
+my.space
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+
+my.byte1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte
+
+my.byte2
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte
+
+my.x1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+
+my.x2
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte / sec
+
+my.x3
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count^2 / sec
+
+my.x4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+
+my.i1
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.i2
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.i3
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+=== fetch values exercises ===
+
+
+sample.mirage
+ inst [0 or "m-00"] value 26
+ inst [46 or "m-46"] value 4625
+ inst [47 or "m-47"] value 4724
+ inst [10 or "m-10"] value 1023
+ inst [15 or "m-15"] value 1522
+ inst [16 or "m-16"] value 1621
+ inst [17 or "m-17"] value 1720
+ inst [18 or "m-18"] value 1819
+
+sample.mirage_longlong
+ inst [0 or "m-00"] value 34000000
+ inst [46 or "m-46"] value 4633000000
+ inst [47 or "m-47"] value 4732000000
+ inst [10 or "m-10"] value 1031000000
+ inst [15 or "m-15"] value 1530000000
+ inst [16 or "m-16"] value 1629000000
+ inst [17 or "m-17"] value 1728000000
+ inst [18 or "m-18"] value 1827000000
+
+sample.scale_step.bytes_up
+ value 1
+
+sample.scale_step.bytes_down
+ value 1
+
+sample.scale_step.count_up
+ value 1
+
+sample.scale_step.count_down
+ value 1
+
+sample.scale_step.time_up_secs
+ value 1
+
+sample.scale_step.time_up_nanosecs
+ value 1
+
+sample.scale_step.none_up
+ value 1
+
+sample.byte_ctr
+ value 23833
+
+sample.byte_rate
+ value 767
+
+sample.kbyte_ctr
+ value 23132
+
+sample.byte_rate_perhour
+ value 770
+
+pmcd.pmlogger.archive
+ inst [3931 or "3931"] value "/home/kenj/src/pcpqa/src/sample_expr"
+
+pmcd.pmlogger.port
+ inst [3931 or "3931"] value 4331
+
+pmcd.pmlogger.host
+ inst [3931 or "3931"] value "bozo.localdomain"
+
+my.space_over_time1
+ inst [0 or "m-00"] value 33203151
+ inst [46 or "m-46"] value 4524418687.5
+ inst [47 or "m-47"] value 4621098474
+ inst [10 or "m-10"] value 1006836960.5
+ inst [15 or "m-15"] value 1494142147
+ inst [16 or "m-16"] value 1590821933.5
+ inst [17 or "m-17"] value 1687501720
+ inst [18 or "m-18"] value 1784181506.5
+
+my.space_over_time2
+ inst [0 or "m-00"] value 33203151
+ inst [46 or "m-46"] value 4524418687.5
+ inst [47 or "m-47"] value 4621098474
+ inst [10 or "m-10"] value 1006836960.5
+ inst [15 or "m-15"] value 1494142147
+ inst [16 or "m-16"] value 1590821933.5
+ inst [17 or "m-17"] value 1687501720
+ inst [18 or "m-18"] value 1784181506.5
+
+my.space_over_time3
+ inst [0 or "m-00"] value 33203150.25097656
+ inst [46 or "m-46"] value 4524418686.750977
+ inst [47 or "m-47"] value 4621098473.250977
+ inst [10 or "m-10"] value 1006836959.750977
+ inst [15 or "m-15"] value 1494142146.250977
+ inst [16 or "m-16"] value 1590821932.750977
+ inst [17 or "m-17"] value 1687501719.250977
+ inst [18 or "m-18"] value 1784181505.750977
+
+my.space_over_time4
+ value 2761970
+
+my.space
+ value 23155.2744140625
+
+my.byte1
+ value 767
+
+my.byte2
+ value 7.67e-07
+
+my.x1
+ value 1
+
+my.x2
+ value 26.0009765625
+ value 4625.0009765625
+ value 4724.0009765625
+ value 1023.0009765625
+ value 1522.0009765625
+ value 1621.0009765625
+ value 1720.0009765625
+ value 1819.0009765625
+
+my.x3
+ value 1
+
+my.x4
+ value 1
+
+my.i1
+ value 43
+
+my.i2
+ value 43
+
+my.i3
+ inst [3931 or "3931"] value 0
+
+=== some more scale conversion tests ===
+
+gcov.a = ( 1 / sample.mirage_longlong ) / (1 / sample.mirage )
+gcov.b = ( 1 / sample.mirage ) / (1 / sample.mirage_longlong )
+gcov.c = sample.seconds + disk.all.total
+gcov.d = sample.ulong.count.base - sample.ulong.count.kilo
+gcov.e = sample.ulong.count.mega - sample.ulong.count.kilo
+gcov.f = (1/sample.ulong.count.base) - (1/sample.ulong.count.kilo)
+gcov.g = (1/sample.ulong.count.mega) - (1/sample.ulong.count.kilo)
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] gcov.a = ( 1 / sample.mirage_longlong ) / (1 / sample.mirage )
+pmRegisterDerived: register metric[1] gcov.b = ( 1 / sample.mirage ) / (1 / sample.mirage_longlong )
+pmRegisterDerived: register metric[2] gcov.c = sample.seconds + disk.all.total
+pmRegisterDerived: register metric[3] gcov.d = sample.ulong.count.base - sample.ulong.count.kilo
+pmRegisterDerived: register metric[4] gcov.e = sample.ulong.count.mega - sample.ulong.count.kilo
+pmRegisterDerived: register metric[5] gcov.f = (1/sample.ulong.count.base) - (1/sample.ulong.count.kilo)
+pmRegisterDerived: register metric[6] gcov.g = (1/sample.ulong.count.mega) - (1/sample.ulong.count.kilo)
+__dmopencontext(->ctx 0) called
+__dmopencontext: bind metric[0] gcov.a
+Derived metric expr dump from <addr-0>...
+expr node <addr-0> type=SLASH left=<addr-1> right=<addr-4> save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: none
+expr node <addr-1> type=SLASH left=<addr-2> right=<addr-3> save_last=0
+ PMID: PM_ID_NULL (29.0.38 from pmDesc) numval: 0 div_scale: 1000 mul_scale: 1024
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: millisec / byte
+expr node <addr-2> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-3> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=0
+ PMID: 29.0.38 (29.0.38 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: byte / millisec
+expr node <addr-4> type=SLASH left=<addr-5> right=<addr-6> save_last=0
+ PMID: PM_ID_NULL (29.0.37 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: sec / Kbyte
+expr node <addr-5> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-6> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=0
+ PMID: 29.0.37 (29.0.37 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+__dmopencontext: bind metric[1] gcov.b
+Derived metric expr dump from <addr-7>...
+expr node <addr-7> type=SLASH left=<addr-8> right=<addr-11> save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: none
+expr node <addr-8> type=SLASH left=<addr-9> right=<addr-10> save_last=0
+ PMID: PM_ID_NULL (29.0.37 from pmDesc) numval: 0
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: sec / Kbyte
+expr node <addr-9> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-10> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage] master=0
+ PMID: 29.0.37 (29.0.37 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+expr node <addr-11> type=SLASH left=<addr-12> right=<addr-13> save_last=0
+ PMID: PM_ID_NULL (29.0.38 from pmDesc) numval: 0 div_scale: 1000 mul_scale: 1024
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: millisec / byte
+expr node <addr-12> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-13> type=NAME left=(nil) right=(nil) save_last=0 [sample.mirage_longlong] master=0
+ PMID: 29.0.38 (29.0.38 from pmDesc) numval: 0
+ Data Type: 64-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: byte / millisec
+Semantic error: derived metric gcov.c: sample.seconds + disk.all.total: Dimensions are not the same
+__dmopencontext: bind metric[3] gcov.d
+Derived metric expr dump from <addr-14>...
+expr node <addr-14> type=MINUS left=<addr-15> right=<addr-16> save_last=0
+ PMID: PM_ID_NULL (511.0.4 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^3 / Mbyte
+expr node <addr-15> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.base] master=0
+ PMID: 29.0.115 (29.0.115 from pmDesc) numval: 0 div_scale: 1000
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count / Mbyte
+expr node <addr-16> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.kilo] master=0
+ PMID: 29.0.118 (29.0.118 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^3 / Mbyte
+__dmopencontext: bind metric[4] gcov.e
+Derived metric expr dump from <addr-17>...
+expr node <addr-17> type=MINUS left=<addr-18> right=<addr-19> save_last=0
+ PMID: PM_ID_NULL (511.0.5 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^6 / Mbyte
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.mega] master=0
+ PMID: 29.0.119 (29.0.119 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^6 / Mbyte
+expr node <addr-19> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.kilo] master=0
+ PMID: 29.0.118 (29.0.118 from pmDesc) numval: 0 div_scale: 1000
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^3 / Mbyte
+__dmopencontext: bind metric[5] gcov.f
+Derived metric expr dump from <addr-20>...
+expr node <addr-20> type=MINUS left=<addr-21> right=<addr-24> save_last=0
+ PMID: PM_ID_NULL (511.0.6 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count x 10^3
+expr node <addr-21> type=SLASH left=<addr-22> right=<addr-23> save_last=0
+ PMID: PM_ID_NULL (29.0.115 from pmDesc) numval: 0 mul_scale: 1000
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count
+expr node <addr-22> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-23> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.base] master=0
+ PMID: 29.0.115 (29.0.115 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count / Mbyte
+expr node <addr-24> type=SLASH left=<addr-25> right=<addr-26> save_last=0
+ PMID: PM_ID_NULL (29.0.118 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count x 10^3
+expr node <addr-25> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-26> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.kilo] master=0
+ PMID: 29.0.118 (29.0.118 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^3 / Mbyte
+__dmopencontext: bind metric[6] gcov.g
+Derived metric expr dump from <addr-27>...
+expr node <addr-27> type=MINUS left=<addr-28> right=<addr-31> save_last=0
+ PMID: PM_ID_NULL (511.0.7 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count x 10^6
+expr node <addr-28> type=SLASH left=<addr-29> right=<addr-30> save_last=0
+ PMID: PM_ID_NULL (29.0.119 from pmDesc) numval: 0
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count x 10^6
+expr node <addr-29> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-30> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.mega] master=0
+ PMID: 29.0.119 (29.0.119 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^6 / Mbyte
+expr node <addr-31> type=SLASH left=<addr-32> right=<addr-33> save_last=0
+ PMID: PM_ID_NULL (29.0.118 from pmDesc) numval: 0 mul_scale: 1000
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count x 10^3
+expr node <addr-32> type=NUMBER left=(nil) right=(nil) save_last=0 [1] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+expr node <addr-33> type=NAME left=(nil) right=(nil) save_last=0 [sample.ulong.count.kilo] master=0
+ PMID: 29.0.118 (29.0.118 from pmDesc) numval: 0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^3 / Mbyte
+__dmgetpmid: metric "gcov.a" -> PMID 511.0.1
+__dmgetpmid: metric "gcov.b" -> PMID 511.0.2
+__dmgetpmid: metric "gcov.c" -> PMID 511.0.3
+__dmgetpmid: metric "gcov.d" -> PMID 511.0.4
+__dmgetpmid: metric "gcov.e" -> PMID 511.0.5
+__dmgetpmid: metric "gcov.f" -> PMID 511.0.6
+__dmgetpmid: metric "gcov.g" -> PMID 511.0.7
+
+gcov.a
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: none
+
+gcov.b
+ Data Type: double InDom: 29.3 0x7400003
+ Semantics: instant Units: none
+gcov.c: pmLookupDesc: Unknown or illegal metric identifier
+
+gcov.d
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^3 / Mbyte
+
+gcov.e
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count x 10^6 / Mbyte
+
+gcov.f
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count x 10^3
+
+gcov.g
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / count x 10^6
+Semantic error: derived metric gcov.c: sample.seconds + disk.all.total: Dimensions are not the same
+
+gcov.d
+ value 0
+
+gcov.e
+ value 0
+
+gcov.f
+ value 0
+
+gcov.g
+ value -3.469446951953614e-18
diff --git a/qa/276 b/qa/276
new file mode 100755
index 0000000..88f209a
--- /dev/null
+++ b/qa/276
@@ -0,0 +1,37 @@
+#! /bin/sh
+# PCP QA Test No. 276
+# check tools with indoms that have bizarre instance names, e.g.
+# @fcsw=asg-fcsw8:port=007
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.config
+
+rm -f $seq.out
+which pmchart >/dev/null 2>&1
+if [ $? -eq 0 ]
+then
+ _check_display
+ ln $seq.out.pcpgui $seq.out
+else
+ # pcp-gui tools not installed
+ ln $seq.out.nongui $seq.out
+fi
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+export DISPLAY=$PCPQA_CLOSE_X_SERVER
+src/grind-tools -v -a src/fcsw_indom fcsw.port.bytes_out 2>&1 | _filter_views
+status=$?
+exit
diff --git a/qa/276.out.nongui b/qa/276.out.nongui
new file mode 100644
index 0000000..93d61be
--- /dev/null
+++ b/qa/276.out.nongui
@@ -0,0 +1,8 @@
+QA output created by 276
+pmie OK
+pmval OK
+pmlogger skipped, source is an archive
+pmdumptext skipped, no binary installed
+pmchart skipped, no binary installed
+pmview skipped, no binary installed
+pmgadgets skipped, no binary installed
diff --git a/qa/276.out.pcpgui b/qa/276.out.pcpgui
new file mode 100644
index 0000000..bce9510
--- /dev/null
+++ b/qa/276.out.pcpgui
@@ -0,0 +1,9 @@
+QA output created by 276
+pmie OK
+pmval OK
+pmlogger skipped, source is an archive
+pmdumptext (simple) OK
+pmdumptext (extended) OK
+pmchart OK
+pmview skipped, no binary installed
+pmgadgets skipped, no binary installed
diff --git a/qa/277 b/qa/277
new file mode 100755
index 0000000..a56261f
--- /dev/null
+++ b/qa/277
@@ -0,0 +1,36 @@
+#!/bin/sh
+# PCP QA Test No. 277
+# checks pmValueBlock.vtype matches desc.type
+# for metrics which have non-insitu values
+# as follows:
+#
+# int64 sample.longlong.one
+# uint64 sample.pdu
+# double sample.double.one
+# float sample.float.one
+# string sample.string.hullo
+# aggregate sample.aggregate.hullo
+#
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+#
+# no output with zero exit status indicates success
+#
+src/chk_metric_types sample.longlong.one sample.pdu sample.double.one \
+ sample.float.one sample.string.hullo sample.aggregate.hullo
+
+status=$?
+exit
diff --git a/qa/277.out b/qa/277.out
new file mode 100644
index 0000000..9614b16
--- /dev/null
+++ b/qa/277.out
@@ -0,0 +1 @@
+QA output created by 277
diff --git a/qa/278 b/qa/278
new file mode 100755
index 0000000..8b31214
--- /dev/null
+++ b/qa/278
@@ -0,0 +1,151 @@
+#! /bin/sh
+# PCP QA Test No. 278
+# validate newhelp
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_bogus()
+{
+ cat >>$2 <<End-of-File
+@ $1 one line for $1
+start of entry for $1
+This is random boring text that pretends to describe
+what on earth the metric $1 is used for.
+
+There is no point to the words, just treat it as a boring diatribe.
+There is no point to the words, just treat it as a boring diatribe.
+There is no point to the words, just treat it as a boring diatribe.
+There is no point to the words, just treat it as a boring diatribe.
+There is no point to the words, just treat it as a boring diatribe.
+
+AUDIT TAG $1
+
+end of entry for $1
+End-of-File
+}
+
+# real QA test starts here
+
+for m in sample.long.one sample.long.ten sample.long.hundred sample.long.million sample.long.write_me
+do
+ _bogus $m $tmp.1
+done
+
+for m in sample.longlong.one sample.longlong.ten sample.longlong.hundred sample.longlong.million sample.longlong.write_me
+do
+ _bogus $m $tmp.2
+done
+
+for m in sample.float.one sample.float.ten sample.float.hundred sample.float.million sample.float.write_me
+do
+ _bogus $m $tmp.3
+done
+
+for m in sample.double.one sample.double.ten sample.double.hundred sample.double.million sample.double.write_me
+do
+ _bogus $m $tmp.4
+done
+
+for m in sample.string.null sample.string.hullo sample.string.write_me
+do
+ _bogus $m $tmp.5
+done
+
+for m in sample.aggregate.null sample.aggregate.hullo sample.aggregate.write_me
+do
+ _bogus $m $tmp.6
+done
+
+echo >$tmp.7
+
+bytes=`cat $tmp.? | wc -c | sed -e 's/ //g'`
+
+if [ $PCP_PLATFORM = irix ]
+then
+ . ./localconfig
+ # V1 support deprecated in PCP 2.3 and/or IRIX 6.5.19
+ #
+ if [ $PCP_VER -ge 2300 -o $PCP_EOE_VER -ge 6519 ]
+ then
+ vlist="2"
+ rm -f $seq.out && ln $seq.linux $seq.out
+ else
+ vlist="1 2"
+ rm -f $seq.out && ln $seq.irix $seq.out
+ fi
+elif [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris -o $PCP_PLATFORM = freebsd ]
+then
+ # same output for Linux and Mac OS X and Solaris and FreeBSD
+ #
+ vlist="2"
+ rm -f $seq.out && ln $seq.linux $seq.out
+else
+ echo bozo!
+ exit
+fi
+
+for version in $vlist
+do
+ for pass in 1 2
+ do
+
+ echo
+ echo "=== newhelp -v $version and pass $pass ==="
+
+ if newhelp -v $version -V -o $tmp $tmp.?
+ then
+ :
+ else
+ echo "Error: newhelp failed!"
+ exit
+ fi
+
+ size=`wc -c <$tmp.pag | sed -e 's/ //g'`
+ if [ "$size" -lt "$bytes" ]
+ then
+ echo "Error: .pag file too small ($size < $bytes)"
+ ls -l $tmp.?
+ echo
+ ls -l $tmp.pag $tmp.dir
+ exit
+ fi
+
+ echo "=== check text, expect no diff output ==="
+ for m in sample.long.hundred sample.longlong.million sample.float.one \
+ sample.double.ten sample.string.hullo sample.aggregate.null
+ do
+ echo $m:
+ echo >$tmp.check
+ _bogus $m $tmp.check
+ if chkhelp -v $version -HO $tmp $m >$tmp.out 2>&1
+ then
+ sed <$tmp.out \
+ -e '/^PMID/{
+s/PMID [^ ]* /@ /
+s/://
+}' \
+ | diff - $tmp.check
+ else
+ cat $tmp.out
+ echo "Error: chkhelp failed!"
+ exit
+ fi
+ done
+ done
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/278.irix b/qa/278.irix
new file mode 100644
index 0000000..dce7060
--- /dev/null
+++ b/qa/278.irix
@@ -0,0 +1,141 @@
+QA output created by 278
+
+=== newhelp -v 1 and pass 1 ===
+sample.long.one
+sample.long.ten
+sample.long.hundred
+sample.long.million
+sample.long.write_me
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+=== check text, expect no diff output ===
+sample.long.hundred:
+sample.longlong.million:
+sample.float.one:
+sample.double.ten:
+sample.string.hullo:
+sample.aggregate.null:
+
+=== newhelp -v 1 and pass 2 ===
+sample.long.one
+sample.long.ten
+sample.long.hundred
+sample.long.million
+sample.long.write_me
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+=== check text, expect no diff output ===
+sample.long.hundred:
+sample.longlong.million:
+sample.float.one:
+sample.double.ten:
+sample.string.hullo:
+sample.aggregate.null:
+
+=== newhelp -v 2 and pass 1 ===
+sample.long.one
+sample.long.ten
+sample.long.hundred
+sample.long.million
+sample.long.write_me
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+=== check text, expect no diff output ===
+sample.long.hundred:
+sample.longlong.million:
+sample.float.one:
+sample.double.ten:
+sample.string.hullo:
+sample.aggregate.null:
+
+=== newhelp -v 2 and pass 2 ===
+sample.long.one
+sample.long.ten
+sample.long.hundred
+sample.long.million
+sample.long.write_me
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+=== check text, expect no diff output ===
+sample.long.hundred:
+sample.longlong.million:
+sample.float.one:
+sample.double.ten:
+sample.string.hullo:
+sample.aggregate.null:
diff --git a/qa/278.linux b/qa/278.linux
new file mode 100644
index 0000000..d2814d7
--- /dev/null
+++ b/qa/278.linux
@@ -0,0 +1,71 @@
+QA output created by 278
+
+=== newhelp -v 2 and pass 1 ===
+sample.long.one
+sample.long.ten
+sample.long.hundred
+sample.long.million
+sample.long.write_me
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+=== check text, expect no diff output ===
+sample.long.hundred:
+sample.longlong.million:
+sample.float.one:
+sample.double.ten:
+sample.string.hullo:
+sample.aggregate.null:
+
+=== newhelp -v 2 and pass 2 ===
+sample.long.one
+sample.long.ten
+sample.long.hundred
+sample.long.million
+sample.long.write_me
+sample.longlong.one
+sample.longlong.ten
+sample.longlong.hundred
+sample.longlong.million
+sample.longlong.write_me
+sample.float.one
+sample.float.ten
+sample.float.hundred
+sample.float.million
+sample.float.write_me
+sample.double.one
+sample.double.ten
+sample.double.hundred
+sample.double.million
+sample.double.write_me
+sample.string.null
+sample.string.hullo
+sample.string.write_me
+sample.aggregate.null
+sample.aggregate.hullo
+sample.aggregate.write_me
+=== check text, expect no diff output ===
+sample.long.hundred:
+sample.longlong.million:
+sample.float.one:
+sample.double.ten:
+sample.string.hullo:
+sample.aggregate.null:
diff --git a/qa/279 b/qa/279
new file mode 100755
index 0000000..75bc12e
--- /dev/null
+++ b/qa/279
@@ -0,0 +1,176 @@
+#! /bin/sh
+# PCP QA Test No. 279
+# Check recovery actions when procedures in pmdaproc.sh fail to
+# restart/start PMCD
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+killer=`pwd`/src/killparent
+LOCALHOST=`hostname`
+_needclean=true
+
+rm -f $seq.full
+
+_interrupt()
+{
+ status=1
+}
+
+_cleanup()
+{
+ if $_needclean
+ then
+ echo
+ echo "Restoring real \$PCP_PMCDCONF_PATH ..."
+ [ -f $tmp.pmcd.conf.save ] && $sudo mv $tmp.pmcd.conf.save $PCP_PMCDCONF_PATH
+ _restore_loggers
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 0 }
+/Save current/ { print ""; skip = 0 }
+/Sorry, failed/ { print ""; skip = 0 }
+skip == 0 { print }
+/Here is the PMCD logfile/ { print "[logfile deleted]"; skip = 1; next }' \
+ | sed \
+ -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;g" \
+ | _filter_pcp_start \
+ | _filter_pmcd_log
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf.save
+_disable_loggers
+pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+&& $sudo sh $tmp.cmd
+
+trap "_cleanup" 0
+trap "_interrupt; _cleanup" 1 2 3 15
+
+# real QA test starts here
+
+# get to a known starting state, esp for pmcd.log
+#
+if [ $PCP_PLATFORM = irix ]
+then
+ cat <<End-of-File >$tmp.conf
+# temporary pmcd.conf for qa/$seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+End-of-File
+elif [ $PCP_PLATFORM = linux ]
+then
+ cat <<End-of-File >$tmp.conf
+# temporary pmcd.conf for qa/$seq
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+elif [ $PCP_PLATFORM = darwin ]
+then
+ cat <<End-of-File >$tmp.conf
+# temporary pmcd.conf for qa/$seq
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+End-of-File
+elif [ $PCP_PLATFORM = solaris ]
+then
+ cat <<End-of-File >$tmp.conf
+# temporary pmcd.conf for qa/$seq
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+else
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+fi
+echo "=== initial pmcd.conf ===" >>$seq.full
+cat $tmp.conf >>$seq.full
+echo "=== ===" >>$seq.full
+$sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+cat <<End-of-File >$tmp.cmd
+rm -f $PCP_PMCDCONF_PATH.prev
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+__can_wait=6
+forced_restart=false
+__pmda_add "bogus 111 pipe binary $killer"
+End-of-File
+
+echo
+echo "__pmda_add test: expect this to fail and revert to the status quo ..."
+echo "__pmda_add test: expect this to fail and revert to the status quo ..." >>$seq.full
+echo
+
+$sudo sh $tmp.cmd 2>&1 \
+| tee $tmp.out \
+| _filter
+cat $tmp.out >>$seq.full
+
+echo "=== pmcd.conf after bogus install ===" >>$seq.full
+cat $PCP_PMCDCONF_PATH >>$seq.full
+echo "=== ===" >>$seq.full
+
+echo "\$PCP_PMCDCONF_PATH should be put back the way it was ... diffs ..."
+diff $PCP_PMCDCONF_PATH $tmp.conf
+
+echo
+cat <<End-of-File >$tmp.cmd
+rm -f $PCP_PMCDCONF_PATH.prev
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+__can_wait=6
+__pmda_cull fungus 222
+End-of-File
+
+echo "bogus 111 pipe binary $killer" >>$tmp.conf
+echo "fungus 222 pipe binary $killer" >>$tmp.conf
+echo "=== next pmcd.conf ===" >>$seq.full
+cat $tmp.conf >>$seq.full
+echo "=== ===" >>$seq.full
+$sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+
+echo
+echo "__pmda_cull test: expect this to fail and restoration to fail ..."
+echo "__pmda_cull test: expect this to fail and restoration to fail ..." >>$seq.full
+echo
+
+$sudo sh $tmp.cmd 2>&1 \
+| tee $tmp.out \
+| _filter
+cat $tmp.out >>$seq.full
+
+echo "=== pmcd.conf after fungus remove ===" >>$seq.full
+cat $PCP_PMCDCONF_PATH >>$seq.full
+echo "=== ===" >>$seq.full
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/279.out b/qa/279.out
new file mode 100644
index 0000000..a9e5620
--- /dev/null
+++ b/qa/279.out
@@ -0,0 +1,37 @@
+QA output created by 279
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+__pmda_add test: expect this to fail and revert to the status quo ...
+
+Arrgghhh ... PMCD failed to start after 6 seconds
+Here is the PMCD logfile ($PCP_LOG_DIR/pmcd.log):
+[logfile deleted]
+Save current PMCD control file in $PCP_PMCDCONF_PATH.prev ...
+Restoring previous PMCD control file, and trying to restart PMCD ...
+Starting pmcd ...
+Starting pmlogger ...
+$PCP_PMCDCONF_PATH should be put back the way it was ... diffs ...
+
+
+__pmda_cull test: expect this to fail and restoration to fail ...
+
+Arrgghhh ... PMCD failed to start after 6 seconds
+Here is the PMCD logfile ($PCP_LOG_DIR/pmcd.log):
+[logfile deleted]
+Save current PMCD control file in $PCP_PMCDCONF_PATH.prev ...
+Restoring previous PMCD control file, and trying to restart PMCD ...
+Starting pmcd ...
+Starting pmlogger ...
+Arrgghhh ... PMCD failed to start after 6 seconds
+Here is the PMCD logfile ($PCP_LOG_DIR/pmcd.log):
+[logfile deleted]
+Sorry, failed to restart PMCD.
+Arrgghhh ... PMCD failed to start after 6 seconds
+Here is the PMCD logfile ($PCP_LOG_DIR/pmcd.log):
+[logfile deleted]
+
+Restoring real $PCP_PMCDCONF_PATH ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/280 b/qa/280
new file mode 100755
index 0000000..0420aa3
--- /dev/null
+++ b/qa/280
@@ -0,0 +1,149 @@
+#! /bin/sh
+# PCP QA Test No. 280
+# pmlogger_check basic sanity check
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_filter()
+{
+ [ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+ PCP_PMLOGGERCONTROL_PATH=`dirname "$PCP_PMLOGGERCONTROL_PATH"`
+ sed \
+ -e 's/\.\.\.*/[dots]/' \
+ -e 's;/usr/var;/var;g' \
+ -e "s/`hostname`/LOCALHOST/g" \
+ -e "s/$LOCALHOST/LOCALHOST/g" \
+ -e "s/localhost/LOCALHOST/g" \
+ -e "s/local:/LOCALHOST/g" \
+ -e 's/^Reconfigured: .*pmlogconf.//g' \
+ -e 's;/private/;/;g' \
+ -e "s;$LOGGING_DIR;\$PCP_LOG_DIR;" \
+ -e "s;$PCP_LOG_DIR;\$PCP_LOG_DIR;" \
+ -e "s;$PCP_PMLOGGERCONTROL_PATH;\$PCP_PMLOGGERCONTROL_PATH;" \
+ -e 's/control:[0-9][0-9]*]/control:LINE]/' \
+ -e 's/process [0-9][0-9]*/process PID/' \
+ -e 's/\.* done/. done/' \
+ -e 's/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]/CHECK/' \
+ -e 's/-rw-r--r--\./-rw-r--r--/' \
+ | _filter_cron_scripts
+}
+
+status=1 # failure is the default!
+signal=$PCP_BINADM_DIR/pmsignal
+LOCALHOST=`hostname`
+[ $PCP_VER -lt 3806 ] && LOCALHOST=`echo $LOCALHOST | sed -e 's/\..*//'`
+trap "rm -f $tmp.* $LOGGING_DIR/$LOCALHOST/lock; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+
+umask 022
+
+# start from a known state
+#
+$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger -P $LOGGING_DIR/$LOCALHOST/pmlogger.log
+
+echo
+echo "Ping primary logger ..." | tee -a $seq.full
+echo 'connect primary' | pmlc
+
+echo
+echo "Expect this should do nothing ..." | tee -a $seq.full
+$sudo $PCP_BINADM_DIR/pmlogger_check -V 2>&1 | tee -a $seq.full | _filter
+echo 'connect primary' | pmlc
+
+pid=`_get_primary_logger_pid`
+if [ -z "$pid" ]
+then
+ echo "Error: cannot find PID for primary logger"
+ LC_TIME=POSIX ls -l $PCP_TMP_DIR/pmlogger
+ pminfo -f pmcd.pmlogger
+ exit
+fi
+
+echo
+echo "Kill off primary logger ..."
+$sudo $signal -s TERM $pid
+sleep 2
+echo 'connect primary' | pmlc 2>&1 | _filter
+pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+&& $sudo sh $tmp.cmd
+
+# delay to minimize risk of name clash
+#
+sleep 10
+
+echo "Expect this to re-start the primary logger ..." | tee -a $seq.full
+$sudo $PCP_BINADM_DIR/pmlogger_check -V 2>&1 | tee -a $seq.full | _filter
+echo 'connect primary' | pmlc
+
+pid=`_get_primary_logger_pid`
+if [ -z "$pid" ]
+then
+ echo "Error: cannot find PID for primary logger"
+ LC_TIME=POSIX ls -l $PCP_TMP_DIR/pmlogger
+ pminfo -f pmcd.pmlogger
+ exit
+fi
+
+echo
+echo "Kill off primary logger ..."
+$sudo $signal -s TERM $pid
+sleep 2
+echo 'connect primary' | pmlc 2>&1 | _filter
+pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+&& $sudo sh $tmp.cmd
+
+# delay to minimize risk of name clash
+#
+sleep 10
+
+echo
+echo "Expect this to quietly re-start the primary logger ..." | tee -a $seq.full
+$sudo $PCP_BINADM_DIR/pmlogger_check 2>&1 | tee -a $seq.full | _filter
+echo 'connect primary' | pmlc
+
+echo
+echo "Expect this to get a mutex failure ..." | tee -a $seq.full
+$sudo touch $LOGGING_DIR/$LOCALHOST/lock
+$sudo $PCP_BINADM_DIR/pmlogger_check 2>&1 \
+| tee -a $seq.full | _filter \
+| $PCP_AWK_PROG '
+/-r.-r.-r.-/ { $3 = "USER"; $4 = "GROUP"; $6 = "Mmm"; $7 = "D"; $8 = "YYYY" }
+ { print }'
+
+echo
+echo "Expect this to cleanup an old lock file ..." | tee -a $seq.full
+$sudo rm -f $LOGGING_DIR/$LOCALHOST/lock
+$sudo touch -t 199701020304.00 $LOGGING_DIR/$LOCALHOST/lock
+$sudo $PCP_BINADM_DIR/pmlogger_check 2>&1 \
+| tee -a $seq.full | _filter \
+| $PCP_AWK_PROG '
+/-r.-r.-r.-/ { $3 = "USER"; $4 = "GROUP" }
+ { print }'
+$sudo rm -f $LOGGING_DIR/$LOCALHOST/lock
+
+# success, all done
+status=0
+exit
diff --git a/qa/280.out b/qa/280.out
new file mode 100644
index 0000000..64c7921
--- /dev/null
+++ b/qa/280.out
@@ -0,0 +1,28 @@
+QA output created by 280
+Starting pmcd ...
+Starting pmlogger ...
+
+Ping primary logger ...
+
+Expect this should do nothing ...
+
+Kill off primary logger ...
+Unable to connect to primary pmlogger at LOCALHOST: Connection refused
+Expect this to re-start the primary logger ...
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] . done
+Latest folio created for CHECK
+
+Kill off primary logger ...
+Unable to connect to primary pmlogger at LOCALHOST: Connection refused
+
+Expect this to quietly re-start the primary logger ...
+
+Expect this to get a mutex failure ...
+PMLOGGER.CHECK: Warning: is another PCP cron job running concurrently?
+-rw-r--r-- 1 USER GROUP 0 Mmm D YYYY $PCP_LOG_DIR/LOCALHOST/lock
+PMLOGGER.CHECK [$PCP_PMLOGGERCONTROL_PATH/control:LINE]
+Warning: failed to acquire exclusive lock ($PCP_LOG_DIR/LOCALHOST/lock) [dots]
+
+Expect this to cleanup an old lock file ...
+PMLOGGER.CHECK: Warning: removing lock file older than 30 minutes
+-rw-r--r-- 1 USER GROUP 0 Jan 2 1997 $PCP_LOG_DIR/LOCALHOST/lock
diff --git a/qa/281 b/qa/281
new file mode 100755
index 0000000..4340a0e
--- /dev/null
+++ b/qa/281
@@ -0,0 +1,45 @@
+#! /bin/sh
+# PCP QA Test No. 281
+# Exercise pmNewContext() for archives close to the NOFILE max fd limit.
+# For incident: 504616
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "cd; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+rm -rf $tmp
+mkdir $tmp
+cp src/foo.* $tmp
+
+# real QA test starts here
+cd $tmp
+
+$here/src/arch_maxfd foo \
+| tee $seq.full \
+| $PCP_AWK_PROG '
+$1 == "max" { if (maxctx == "") maxctx = $NF
+ $NF = "<max>-" maxctx-$NF
+ }
+ { print }'
+
+if [ "`echo core*`" != "core*" ]
+then
+ echo "$here/src/arch_maxfd dumped core!"
+ ls -l core*
+ unset TOOLROOT
+ echo where | dbx $here/src/arch_maxfd
+ exit
+fi
+
+# success, all done
+status=0
+exit
diff --git a/qa/281.out b/qa/281.out
new file mode 100644
index 0000000..d11332f
--- /dev/null
+++ b/qa/281.out
@@ -0,0 +1,21 @@
+QA output created by 281
+max fd: 30 max ctx#: <max>-0
+pmNewContext(): Too many open files
+max fd: 29 max ctx#: <max>-0
+pmNewContext(): Too many open files
+max fd: 28 max ctx#: <max>-0
+pmNewContext(): Too many open files
+max fd: 27 max ctx#: <max>-1
+pmNewContext(): Too many open files
+max fd: 26 max ctx#: <max>-1
+pmNewContext(): Too many open files
+max fd: 25 max ctx#: <max>-1
+pmNewContext(): Too many open files
+max fd: 24 max ctx#: <max>-2
+pmNewContext(): Too many open files
+max fd: 23 max ctx#: <max>-2
+pmNewContext(): Too many open files
+max fd: 22 max ctx#: <max>-2
+pmNewContext(): Too many open files
+max fd: 21 max ctx#: <max>-3
+pmNewContext(): Too many open files
diff --git a/qa/282 b/qa/282
new file mode 100755
index 0000000..c736d9b
--- /dev/null
+++ b/qa/282
@@ -0,0 +1,258 @@
+#! /bin/sh
+# PCP QA Test No. 282
+# Error handling in $PCP_RC_DIR/pcp
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ $PCP_PLATFORM = linux -o $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ] \
+ || _notrun "$PCP_PLATFORM is not yet supported in test $seq"
+
+status=1 # failure is the default!
+_needclean=true
+sleepy=false
+
+LOCALHOST=`hostname`
+LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+CHECK=`which pmlogger_check`
+[ -z "$CHECK" -o ! -x "$CHECK" ] && \
+ _notrun "Cannot find an executable pmlogger_check: \"$CHECK\""
+
+_poke_pmcd()
+{
+ $sudo $PCP_RC_DIR/pcp restart 2>&1 \
+ | tee -a $seq.full \
+ | sed \
+ -e '/ root .* .usr.etc.pmcd /s/.*/-- ps output line --/' \
+ -e '/UID .* PID /d' \
+ -e '/USER .* PID /d' \
+ -e "s/$LOCALHOST/HOST/g" \
+ -e 's|local:/*|HOST|g' \
+ | _filter_pcp_start \
+ | _filter_pmcd_log \
+ | _filter_cron_scripts \
+ | sed \
+ -e 's/\(install the pcp.sw.base\) .*/\1 ... PCP 2.0 or later .../' \
+ -e 's/.*\(consult PMLOGGER.CHECK(1), else\)/ ... \1/' \
+ -e '/root.*.PCP_BINADM_DIR.pmcd/s/.*/-- ps output line --/' \
+ -e '/pcp.*.PCP_BINADM_DIR.pmcd/s/.*/-- ps output line --/' \
+ -e '/^failed (status=1)/d' \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+ -e '/^$/d'
+
+ can_wait=5
+ i=0
+ while [ $i -lt $can_wait ]
+ do
+ clients=`pmprobe pmcd.numclients 2>/dev/null | sed -e 's/.* //'`
+ if [ $i -eq 0 ]
+ then
+ echo >>$seq.full
+ echo "+ pmprobe pmcd.numclients" >>$seq.full
+ pmprobe pmcd.numclients >>$seq.full 2>&1
+ echo "clients=\"$clients\"" >>$seq.full
+ fi
+ [ ! -z "$clients" ] && [ "$clients" -gt 0 ] && break
+ sleep 1
+ i=`expr $i + 1`
+ done
+
+ $PCP_ECHO_PROG $PCP_ECHO_N "=== probe pmcd: ""$PCP_ECHO_C"
+ x=`pmprobe pmcd.control.debug 2>&1 | sed -e "s/$LOCALHOST/HOST/g" -e 's|local:/*|HOST|g'`
+ if [ "$x" = "pmcd.control.debug 1" ]
+ then
+ $PCP_ECHO_PROG OK
+ else
+ $PCP_ECHO_PROG "$x"
+ fi
+}
+
+_poke_pmcd_n_logger()
+{
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ _poke_pmcd
+
+ can_wait=5
+ i=0
+ while [ $i -lt $can_wait ]
+ do
+ if pmlc -P </dev/null 2>&1 | grep "Connected to.* pmlogger" >/dev/null
+ then
+ sleep 2
+ break
+ fi
+ sleep 2
+ i=`expr $i + 1`
+ done
+
+ $PCP_ECHO_PROG $PCP_ECHO_N "=== probe pmlogger: ""$PCP_ECHO_C"
+ x=`echo connect primary | pmlc 2>&1 | sed -e "s/$LOCALHOST/HOST/g" -e 's|local:/*|HOST|g'`
+ sleep 2
+ if [ -z "$x" ]
+ then
+ $PCP_ECHO_PROG OK
+ else
+ $PCP_ECHO_PROG "$x"
+ if $sleepy
+ then
+ echo go check the logs while I wait a couple of minutes
+ sleep 240
+ fi
+ fi
+}
+
+_interrupt()
+{
+ status=1
+}
+
+_save_setup()
+{
+ for file in $PCP_PMCDCONF_PATH $SYSPMDA \
+ $CHECK $PCP_PMLOGGERCONTROL_PATH \
+ $PCP_PMLOGGEROPTIONS_PATH
+ do
+ [ -f $file.$seq ] && $sudo rm -f $file.$seq
+ [ -f $file ] && $sudo cp -p $file $file.$seq
+ done
+}
+
+_cleanup()
+{
+ trap "" 0 1 2 3 15
+ if $_needclean
+ then
+ echo
+ echo "Restore the state of the universe ..."
+ for file in $PCP_PMCDCONF_PATH $SYSPMDA \
+ $CHECK $PCP_PMLOGGERCONTROL_PATH \
+ $PCP_PMLOGGEROPTIONS_PATH
+ do
+ if [ -f $file.$seq ]
+ then
+ $sudo rm -f $file
+ $sudo cp -p $file.$seq $file
+ $sudo rm -f $file.$seq
+ fi
+ done
+ [ -f $PCP_PMCD_PROG.$seq ] && \
+ $sudo mv -f $PCP_PMCD_PROG.$seq $PCP_PMCD_PROG
+
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _needclean=false
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+trap "_cleanup" 0
+trap "_interrupt; _cleanup" 1 2 3 15
+
+rm -f $seq.full
+touch $seq.full
+
+_exercise_rc_scripts()
+{
+ echo
+ echo '=== expect error: no $PCP_PMCDCONF_PATH ==='
+ $sudo rm -f $PCP_PMCDCONF_PATH
+ _poke_pmcd
+
+ if [ $PCP_PLATFORM = linux ]
+ then
+ cat <<End-of-File >$tmp.out
+# from qa/$seq
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+ elif [ $PCP_PLATFORM = darwin ]
+ then
+ cat <<End-of-File >$tmp.out
+# from qa/$seq
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+End-of-File
+ elif [ $PCP_PLATFORM = solaris ]
+ then
+ cat <<End-of-File >$tmp.out
+# from qa/$seq
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+ else
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+ fi
+
+ $sudo cp $tmp.out $PCP_PMCDCONF_PATH
+
+ echo
+ echo "=== simple case, no frills, no errors ==="
+ _poke_pmcd_n_logger
+
+ echo
+ echo "=== expected failure: a mere mortal ==="
+ osudo="$sudo"
+ sudo=''
+ _poke_pmcd
+ sudo="$osudo"
+ echo "=== start again ==="
+ _poke_pmcd_n_logger
+
+ echo
+ echo "=== expect 2 x connect failure: pmcd is true(1), so hard for pmlogger ==="
+ $sudo mv -f $PCP_PMCD_PROG $PCP_PMCD_PROG.$seq
+ $sudo cp `which true` $PCP_PMCD_PROG
+ _poke_pmcd_n_logger
+ $sudo mv -f $PCP_PMCD_PROG.$seq $PCP_PMCD_PROG
+ echo "=== start again ==="
+ _poke_pmcd_n_logger
+
+ echo "=== expect difficulty terminating pmcd ... it has been sent a SIGSTOP ==="
+ pid=`_get_pids_by_name pmcd`
+ if [ -z "$pid" ]
+ then
+ echo "Arrgh ... cannot find PID for pmcd!"
+ ps $PCP_PS_ALL_FLAGS
+ exit
+ fi
+ #DEBUG# ps $PCP_PS_ALL_FLAGS
+
+ $sudo kill -STOP $pid
+ _poke_pmcd
+
+ echo
+ echo "=== expect warning: PMLOGGER.CHECK moved, so no pmlogger ==="
+ $sudo rm $CHECK
+ _poke_pmcd_n_logger
+ $sudo cp -p $CHECK.$seq $CHECK
+ _disable_loggers
+
+ echo
+ echo "=== expect error: pmlogger/control moved, so no pmlogger ==="
+ $sudo rm -f $PCP_PMLOGGERCONTROL_PATH
+ _poke_pmcd_n_logger
+}
+
+# real QA test starts here
+_save_setup
+_disable_loggers
+_exercise_rc_scripts
+
+# success, all done
+status=0
+exit
diff --git a/qa/282.out b/qa/282.out
new file mode 100644
index 0000000..504e668
--- /dev/null
+++ b/qa/282.out
@@ -0,0 +1,74 @@
+QA output created by 282
+
+=== expect error: no $PCP_PMCDCONF_PATH ===
+Waiting for pmcd to terminate DOTS
+$PCP_RC_DIR/pmcd:
+Warning: pmcd control file $PCP_PMCDCONF_PATH is missing, cannot identify PMDAs
+ to be terminated.
+$PCP_RC_DIR/pmcd:
+Error: pmcd control file $PCP_PMCDCONF_PATH is missing, cannot start pmcd.
+Starting pmlogger ...
+=== probe pmcd: pmprobe: Cannot connect to PMCD on host "HOST": Connection refused
+
+=== simple case, no frills, no errors ===
+Starting pmcd ...
+Starting pmlogger ...
+=== probe pmcd: OK
+=== probe pmlogger: OK
+
+=== expected failure: a mere mortal ===
+$PCP_RC_DIR/pmcd:
+Error: You must be root (uid 0) to start or stop the Performance Co-Pilot pmcd.
+$PCP_RC_DIR/pmlogger:
+Error: You must be root (uid 0) to start or stop the Performance Co-Pilot loggers.
+=== probe pmcd: OK
+=== start again ===
+Waiting for pmcd to terminate DOTS
+Starting pmcd ...
+Starting pmlogger ...
+=== probe pmcd: OK
+=== probe pmlogger: OK
+
+=== expect 2 x connect failure: pmcd is true(1), so hard for pmlogger ===
+Waiting for pmcd to terminate DOTS
+Starting pmcd ...
+Starting pmlogger ...
+=== probe pmcd: pmprobe: Cannot connect to PMCD on host "HOST": Connection refused
+=== probe pmlogger: Unable to connect to primary pmlogger at HOST: Connection refused
+=== start again ===
+Starting pmcd ...
+Starting pmlogger ...
+=== probe pmcd: OK
+=== probe pmlogger: OK
+=== expect difficulty terminating pmcd ... it has been sent a SIGSTOP ===
+Waiting for pmcd to terminate DOTS
+Process ...
+-- ps output line --
+$PCP_RC_DIR/pmcd: Warning: Forcing pmcd to terminate!
+Starting pmcd ...
+Starting pmlogger ...
+=== probe pmcd: OK
+
+=== expect warning: PMLOGGER.CHECK moved, so no pmlogger ===
+Waiting for pmcd to terminate DOTS
+Starting pmcd ...
+$PCP_RC_DIR/pmlogger:
+Warning: Performance Co-Pilot installation is incomplete (at least the
+ script "PMLOGGER.CHECK" is missing) and the PCP archive logger(s)
+ cannot be started.
+=== probe pmcd: OK
+=== probe pmlogger: Unable to connect to primary pmlogger at HOST: Connection refused
+
+=== expect error: pmlogger/control moved, so no pmlogger ===
+Waiting for pmcd to terminate DOTS
+Starting pmcd ...
+$PCP_RC_DIR/pmlogger:
+Error: PCP archive logger control file $PCP_PMLOGGERCONTROL_PATH
+ is missing! Cannot start any Performance Co-Pilot archive logger(s).
+=== probe pmcd: OK
+=== probe pmlogger: Unable to connect to primary pmlogger at HOST: Connection refused
+
+Restore the state of the universe ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/283 b/qa/283
new file mode 100755
index 0000000..0677953
--- /dev/null
+++ b/qa/283
@@ -0,0 +1,136 @@
+#! /bin/sh
+# PCP QA Test No. 283
+# Move pmcd port to iana registered 44321, and the associated multiple
+# port changes for ...
+# pmcd via -p
+# pmcd via PMCD_PORT
+# clients via PMCD_PORT
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./localconfig
+rm -f $seq.out
+if pmcd -x /dev/null -p x 2>&1 | grep '.-p requires a posi*tive numeric argument' >/dev/null
+then
+ if test $PCP_EOE_VER -ge 2704
+ then
+ ln $seq.out.2 $seq.out
+ else
+ ln $seq.out.1 $seq.out
+ fi
+else
+ echo "Need -p option support in pmcd" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal="$sudo $PCP_BINADM_DIR/pmsignal"
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+
+_cleanup()
+{
+ $sudo rm -f $tmp.*
+ [ -z "$pmcd_pid" ] || $signal -s KILL $pmcd_pid
+ unset PMCD_PORT
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -n \
+ -e '/^sample/p' \
+ -e '/^__pmConnectPMCD(/{
+s/(.*)/(HOST)/
+s/fd=[0-9][0-9]*/fd=<n>/
+p
+}'
+}
+
+
+$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
+# allow time to cleanup and close all sockets
+sleep 3
+
+rm -f $seq.full
+
+# figure out which user we will run pmcd and its pmdas as
+username=`id -u -n`
+sudoopts="-u $username"
+id pcp >/dev/null 2>&1 && sudoopts="-u pcp"
+
+# real QA test starts here
+for pmcd_o in 1 2 3
+do
+ unset PMCD_PORT
+ pmcd_opt=''
+ case $pmcd_o
+ in
+ 1) # default
+ ;;
+ 2) # PMCD_PORT is a list in the environment
+ PMCD_PORT="9876,44321,4321"
+ export PMCD_PORT
+ ;;
+ 3) # -p option to pmcd
+ pmcd_opt="-p 4321 -p 44321 -p 9876"
+ esac
+
+ echo
+ echo "=== PMCD_PORT=$PMCD_PORT pmcd_opt=$pmcd_opt ==="
+ echo "=== PMCD_PORT=$PMCD_PORT pmcd_opt=$pmcd_opt ===" >>$seq.full
+ cat >$tmp.sh <<END
+#!/bin/sh
+PATH=$PATH
+$PCP_PMCD_PROG -f -l $tmp.log $pmcd_opt &
+echo \$!
+END
+
+ # Filter the stderr of this using a temp file
+ pmcd_pid=`$sudo $sudoopts sh $tmp.sh 2>$tmp.tmp`
+ cat $tmp.tmp 1>&2
+ sleep 1
+
+ for client_o in 1 2
+ do
+ unset PMCD_PORT
+ case $client_o
+ in
+ 1) # default
+ ;;
+ 2) # PMCD_PORT is a list in the environment
+ PMCD_PORT="9876,4321,44321"
+ export PMCD_PORT
+ ;;
+ esac
+
+ echo "--- PMCD_PORT=$PMCD_PORT ---"
+ echo "--- PMCD_PORT=$PMCD_PORT ---" >>$seq.full
+ pmprobe -v -h localhost -D context sample.long.one >$tmp.tmp 2>&1
+ cat $tmp.tmp >>$seq.full
+ _filter <$tmp.tmp
+
+ done
+
+ $signal -s TERM $pmcd_pid
+ pmcd_pid=''
+ wait
+ sleep 3
+ cat $tmp.log >>$seq.full
+ # _filter_pmcd_log <$tmp.log
+
+done
+
+# success, all done
+exit
diff --git a/qa/283.out.1 b/qa/283.out.1
new file mode 100644
index 0000000..6552405
--- /dev/null
+++ b/qa/283.out.1
@@ -0,0 +1,27 @@
+QA output created by 283
+
+=== PMCD_PORT= pmcd_opt= ===
+--- PMCD_PORT= ---
+__pmConnectPMCD(HOST): pmcd connection port=44321 fd=<n> PDU version=2
+sample.long.one 1 1
+--- PMCD_PORT=9876,4321,44321 ---
+__pmConnectPMCD(HOST): pmcd connection port=4321 fd=<n> PDU version=2
+sample.long.one 1 1
+
+=== PMCD_PORT=9876,44321,4321 pmcd_opt= ===
+--- PMCD_PORT= ---
+__pmConnectPMCD(HOST): pmcd connection port=44321 fd=<n> PDU version=2
+sample.long.one 1 1
+--- PMCD_PORT=9876,4321,44321 ---
+__pmConnectPMCD(HOST): pmcd connection port=9876 fd=<n> PDU version=2
+sample.long.one 1 1
+
+=== PMCD_PORT= pmcd_opt=-p 4321 -p 44321 -p 9876 ===
+--- PMCD_PORT= ---
+__pmConnectPMCD(HOST): pmcd connection port=44321 fd=<n> PDU version=2
+sample.long.one 1 1
+--- PMCD_PORT=9876,4321,44321 ---
+__pmConnectPMCD(HOST): pmcd connection port=9876 fd=<n> PDU version=2
+sample.long.one 1 1
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/283.out.2 b/qa/283.out.2
new file mode 100644
index 0000000..7cd83fc
--- /dev/null
+++ b/qa/283.out.2
@@ -0,0 +1,27 @@
+QA output created by 283
+
+=== PMCD_PORT= pmcd_opt= ===
+--- PMCD_PORT= ---
+__pmConnectPMCD(HOST): pmcd connection port=44321 fd=<n> PDU version=2
+sample.long.one 1 1
+--- PMCD_PORT=9876,4321,44321 ---
+__pmConnectPMCD(HOST): pmcd connection port=44321 fd=<n> PDU version=2
+sample.long.one 1 1
+
+=== PMCD_PORT=9876,44321,4321 pmcd_opt= ===
+--- PMCD_PORT= ---
+__pmConnectPMCD(HOST): pmcd connection port=44321 fd=<n> PDU version=2
+sample.long.one 1 1
+--- PMCD_PORT=9876,4321,44321 ---
+__pmConnectPMCD(HOST): pmcd connection port=9876 fd=<n> PDU version=2
+sample.long.one 1 1
+
+=== PMCD_PORT= pmcd_opt=-p 4321 -p 44321 -p 9876 ===
+--- PMCD_PORT= ---
+__pmConnectPMCD(HOST): pmcd connection port=44321 fd=<n> PDU version=2
+sample.long.one 1 1
+--- PMCD_PORT=9876,4321,44321 ---
+__pmConnectPMCD(HOST): pmcd connection port=9876 fd=<n> PDU version=2
+sample.long.one 1 1
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/284 b/qa/284
new file mode 100755
index 0000000..f25e442
--- /dev/null
+++ b/qa/284
@@ -0,0 +1,28 @@
+#! /bin/sh
+# PCP QA Test No. 284
+# Run pducheck using purify (see also 386)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_purify src/pducheck
+
+status=1 # failure is the default!
+trap "cd; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_setup_purify src/pducheck
+_run_purify
+
+# all done
+status=0
+exit
diff --git a/qa/284.out b/qa/284.out
new file mode 100644
index 0000000..6811c88
--- /dev/null
+++ b/qa/284.out
@@ -0,0 +1,34 @@
+QA output created by 284
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 0 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 1 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 2 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 3 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 4 +
++++++++++++++++++++++++++++
+
+**** Purify instrumented TMP/pducheck.pure (pid PID) ****
+Current file descriptors in use: 5
+FIU: file descriptor 0: <stdin>
+FIU: file descriptor 1: <stdout>
+FIU: file descriptor 2: <stderr>
+
+**** Purify instrumented TMP/pducheck.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/pducheck.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/285 b/qa/285
new file mode 100755
index 0000000..1e66a43
--- /dev/null
+++ b/qa/285
@@ -0,0 +1,88 @@
+#! /bin/sh
+# PCP QA Test No. 285
+#
+# Plan:
+# 1. to show that the indom result for instance requests for
+# pmLookupInDom and pmNameInDom calls should NOT be different
+# for DSOs versus daemon agents.
+# 2. to verify that opening a dso and then connecting to a daemon
+# is viable.
+# Note: qa/147 tests out doing a daemon and then a dso
+#
+# Method:
+# 1. use dbpmda with the sampledso and sample daemon with appropriate
+# instance requests
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+if [ $PCP_PLATFORM = irix ]
+then
+ BINFMT=`/usr/pcp/bin/pmobjstyle`
+ sampledso=/var/pcp/lib/$BINFMT.pmda_sample.so
+else
+ sampledso=$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX
+fi
+
+status=1 # failure is the default!
+username=`id -u -n`
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/^dbpmda> $/d' \
+ -e "s/ -U $username//g" \
+ -e "s;$sampledso;SAMPLEDSO;g" \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;g"
+}
+
+pipeargs=""
+id pcp >/dev/null 2>&1 && pipeargs="-U $username"
+
+# real QA test starts here
+
+# part 1.
+#
+echo "=== dso and daemon handle indom ops the same way? ==="
+echo
+dbpmda -ie <<EOF 2>&1 | _filter | tee $tmp.dso
+open dso $sampledso sample_init 30
+instance 30.1
+instance 30.1 0
+instance 30.1 "red"
+EOF
+
+echo
+dbpmda -ie <<EOF 2>&1 | _filter | tee $tmp.daemon
+open pipe $PCP_PMDAS_DIR/sample/pmdasample $pipeargs -d 30
+instance 30.1
+instance 30.1 0
+instance 30.1 "red"
+EOF
+
+echo
+echo "Differences ... expect none after the \"open\" processing"
+diff $tmp.dso $tmp.daemon
+
+# part 2.
+#
+echo
+echo "=== IPC-PDU version botch for second PMDA? ==="
+dbpmda -ie <<EOF 2>&1 | _filter
+open dso $sampledso sample_init 30
+open pipe $PCP_PMDAS_DIR/sample/pmdasample $pipeargs -d 29
+EOF
+
+# success, all done
+status=0
+exit
diff --git a/qa/285.out b/qa/285.out
new file mode 100644
index 0000000..5a99c31
--- /dev/null
+++ b/qa/285.out
@@ -0,0 +1,41 @@
+QA output created by 285
+=== dso and daemon handle indom ops the same way? ===
+
+dbpmda> open dso SAMPLEDSO sample_init 30
+dbpmda> instance 30.1
+pmInDom: 30.1
+[ 0] inst: 0 name: "red"
+[ 1] inst: 1 name: "green"
+[ 2] inst: 2 name: "blue"
+dbpmda> instance 30.1 0
+pmInDom: 30.1
+[ 0] name: "red"
+dbpmda> instance 30.1 "red"
+pmInDom: 30.1
+[ 0] inst: 0
+
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 30
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 30
+dbpmda> instance 30.1
+pmInDom: 30.1
+[ 0] inst: 0 name: "red"
+[ 1] inst: 1 name: "green"
+[ 2] inst: 2 name: "blue"
+dbpmda> instance 30.1 0
+pmInDom: 30.1
+[ 0] name: "red"
+dbpmda> instance 30.1 "red"
+pmInDom: 30.1
+[ 0] inst: 0
+
+Differences ... expect none after the "open" processing
+1c1,2
+< dbpmda> open dso SAMPLEDSO sample_init 30
+---
+> dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 30
+> Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 30
+
+=== IPC-PDU version botch for second PMDA? ===
+dbpmda> open dso SAMPLEDSO sample_init 30
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 29
diff --git a/qa/286 b/qa/286
new file mode 100755
index 0000000..6d3c55d
--- /dev/null
+++ b/qa/286
@@ -0,0 +1,43 @@
+#!/bin/sh
+# PCP QA Test No. 286
+# exercise local context kernel pmda metrics
+# (fetch and instance PDUs). See RH BZ 858384.
+#
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+rm -f $seq.full
+
+# iterate over local context (dso) kernel pmda metrics,
+# checking each one with different PDU orderings.
+
+pminfo -L kernel hinv 2>/dev/null |
+while read metric
+do
+ echo checking metric: $metric >> $seq.full
+
+ # check fetch (eg. RH BZ 858384)
+ pmval -s 1 @:$metric >> $seq.full
+ [ $? -ne 0 ] && echo "$metric failed (pmval)"
+
+ # check instance identifiers (only, no fetch)
+ pmprobe -L -i $metric >> $seq.full
+ [ $? -ne 0 ] && echo "$metric failed (pmprobe)"
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/286.out b/qa/286.out
new file mode 100644
index 0000000..6415ad8
--- /dev/null
+++ b/qa/286.out
@@ -0,0 +1 @@
+QA output created by 286
diff --git a/qa/287 b/qa/287
new file mode 100755
index 0000000..948b531
--- /dev/null
+++ b/qa/287
@@ -0,0 +1,70 @@
+#! /bin/sh
+# PCP QA Test No. 287
+# handling of wrapping counters with pmlogreduce
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogreduce >/dev/null 2>&1 || _notrun "No pmlogreduce binary installed"
+
+rm -f $seq.out
+size=`_get_word_size`
+ln $seq.out.$size $seq.out || exit 1
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_filter()
+{
+ sed -e "s;$tmp;TMP;"
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+for interval in 2sec 5sec 15sec
+do
+ echo
+ rm -f $tmp.*
+ pmlogreduce -t $interval src/uwrap $tmp
+ echo "-- raw reduce -t $interval --"
+ pmval -z -r -w 15 -f 0 -t $interval -U $tmp sample.wrap.ulong 2>&1 \
+ | _filter
+ echo "-- rate converted, reduce -t $interval --"
+ pmval -z -w 15 -f 0 -t $interval -a $tmp sample.wrap.ulong 2>&1 \
+ | _filter
+done
+
+echo
+echo "-- raw input archive --"
+pmval -z -r -w 15 -f 0 -U src/uwrap sample.wrap.ulong
+
+echo
+echo "-- input archive, rate converted with PCP_COUNTER_WRAP set --"
+PCP_COUNTER_WRAP=on
+export PCP_COUNTER_WRAP
+pmval -z -w 15 -f 0 -a src/uwrap -t 1sec sample.wrap.ulong
+
+echo
+echo "-- input metric descriptor --"
+pminfo -d -a src/uwrap sample.wrap.ulong
+echo
+echo "-- output metric descriptor --"
+pminfo -d -a $tmp sample.wrap.ulong
+
+# success, all done
+exit
diff --git a/qa/287.out.32 b/qa/287.out.32
new file mode 100644
index 0000000..4e01d30
--- /dev/null
+++ b/qa/287.out.32
@@ -0,0 +1,557 @@
+QA output created by 287
+
+-- raw reduce -t 2sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:17.718 No values available
+18:48:19.718 4291992467
+18:48:21.718 4292656177
+18:48:23.718 4293319831
+18:48:25.718 4291816370
+18:48:27.718 4292415676
+18:48:29.718 4293115800
+18:48:31.718 4291624267
+18:48:33.718 4292278140
+18:48:35.718 4292840928
+18:48:37.718 4293590444
+18:48:39.718 4291994757
+18:48:41.718 4292746332
+18:48:43.718 4293405681
+18:48:45.718 4291895799
+18:48:47.718 4292557258
+18:48:49.718 4293197382
+18:48:51.718 4291712173
+18:48:53.718 4292381172
+18:48:55.718 4293019088
+18:48:57.718 4291431250
+18:48:59.718 4292078359
+18:49:01.718 4292823631
+18:49:03.718 4293485114
+18:49:05.718 4291910877
+18:49:07.718 4292645351
+18:49:09.718 4293291847
+18:49:11.718 4291746538
+18:49:13.718 4292432665
+18:49:15.718 4293098514
+18:49:17.718 4291617697
+18:49:19.718 4292245858
+18:49:21.718 4292915943
+18:49:23.718 4293575306
+18:49:25.718 4292069693
+18:49:27.718 4292694745
+18:49:29.718 4293373417
+18:49:31.718 4291880666
+18:49:33.718 4292497125
+18:49:35.718 4293197249
+18:49:37.718 4291694840
+18:49:39.718 4292346749
+18:49:41.718 4292988937
+18:49:43.718 4293656884
+18:49:45.718 4292153426
+18:49:47.718 4292834244
+18:49:49.718 4293454989
+18:49:51.718 4291966422
+18:49:53.718 4292623678
+18:49:55.718 4293272391
+18:49:57.718 4291022433
+18:49:59.718 4292428706
+18:50:01.718 4293066216
+18:50:03.718 4291598176
+18:50:05.718 4292247854
+18:50:07.718 4268748486
+18:50:09.718 4293543018
+18:50:11.718 4292043827
+18:50:13.718 4292679738
+18:50:15.718 4293362579
+18:50:17.718 4291745416
+
+pmval: pmFetchArchive: End of PCP archive log
+-- rate converted, reduce -t 2sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 61
+interval: 2.00 sec
+18:48:17.718 No values available
+18:48:19.718 No values available
+18:48:21.718 331855
+18:48:23.718 331827
+18:48:25.718 -751730
+18:48:27.718 299653
+18:48:29.718 350062
+18:48:31.718 -745766
+18:48:33.718 326936
+18:48:35.718 281394
+18:48:37.718 374758
+18:48:39.718 -797843
+18:48:41.718 375787
+18:48:43.718 329674
+18:48:45.718 -754941
+18:48:47.718 330729
+18:48:49.718 320062
+18:48:51.718 -742604
+18:48:53.718 334499
+18:48:55.718 318958
+18:48:57.718 -793919
+18:48:59.718 323554
+18:49:01.718 372636
+18:49:03.718 330741
+18:49:05.718 -787118
+18:49:07.718 367237
+18:49:09.718 323248
+18:49:11.718 -772654
+18:49:13.718 343063
+18:49:15.718 332924
+18:49:17.718 -740408
+18:49:19.718 314080
+18:49:21.718 335042
+18:49:23.718 329681
+18:49:25.718 -752806
+18:49:27.718 312526
+18:49:29.718 339336
+18:49:31.718 -746375
+18:49:33.718 308229
+18:49:35.718 350062
+18:49:37.718 -751204
+18:49:39.718 325954
+18:49:41.718 321094
+18:49:43.718 333973
+18:49:45.718 -751729
+18:49:47.718 340409
+18:49:49.718 310372
+18:49:51.718 -744283
+18:49:53.718 328628
+18:49:55.718 324356
+18:49:57.718 -1124979
+18:49:59.718 703136
+18:50:01.718 318755
+18:50:03.718 -734020
+18:50:05.718 324839
+18:50:07.718 -11749684
+18:50:09.718 12397266
+18:50:11.718 -749595
+18:50:13.718 317955
+18:50:15.718 341420
+18:50:17.718 -808581
+
+pmval: pmFetch: End of PCP archive log
+
+-- raw reduce -t 5sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:17.718 No values available
+18:48:22.718 2149487467
+18:48:27.718 4292415676
+18:48:32.718 2150503379
+18:48:37.718 4293590444
+18:48:42.718 2149433699
+18:48:47.718 4292557258
+18:48:52.718 2150419569
+18:48:57.718 4291431250
+18:49:02.718 2149352048
+18:49:07.718 4292645351
+18:49:12.718 2150380874
+18:49:17.718 4291617697
+18:49:22.718 2149227464
+18:49:27.718 4292694745
+18:49:32.718 2150260534
+18:49:37.718 4291694840
+18:49:42.718 2149145815
+18:49:47.718 4292834244
+18:49:52.718 2150249658
+18:49:57.718 4291022433
+18:50:02.718 2149132838
+18:50:07.718 4268748486
+18:50:12.718 2179719188
+18:50:17.718 4291745416
+
+pmval: pmFetchArchive: End of PCP archive log
+-- rate converted, reduce -t 5sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 25
+interval: 5.00 sec
+18:48:17.718 No values available
+18:48:22.718 No values available
+18:48:27.718 428585640
+18:48:32.718 -428382458
+18:48:37.718 428617411
+18:48:42.718 -428831347
+18:48:47.718 428624710
+18:48:52.718 -428427536
+18:48:57.718 428202334
+18:49:02.718 -428415839
+18:49:07.718 428658659
+18:49:12.718 -428452894
+18:49:17.718 428247363
+18:49:22.718 -428478045
+18:49:27.718 428693454
+18:49:32.718 -428486840
+18:49:37.718 428286859
+18:49:42.718 -428509803
+18:49:47.718 428737684
+18:49:52.718 -428516915
+18:49:57.718 428154553
+18:50:02.718 -428377917
+18:50:07.718 423923128
+18:50:12.718 -417805858
+18:50:17.718 422405244
+
+pmval: pmFetch: End of PCP archive log
+
+-- raw reduce -t 15sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:17.718 No values available
+18:48:32.718 2150503379
+18:48:47.718 4292557258
+18:49:02.718 2149352048
+18:49:17.718 4291617697
+18:49:32.718 2150260534
+18:49:47.718 4292834244
+18:50:02.718 2149132838
+18:50:17.718 4291745416
+
+pmval: pmFetchArchive: End of PCP archive log
+-- rate converted, reduce -t 15sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 9
+interval: 15.00 sec
+18:48:17.718 No values available
+18:48:32.718 No values available
+18:48:47.718 142803592
+18:49:02.718 -142880347
+18:49:17.718 142817710
+18:49:32.718 -142757144
+18:49:47.718 142838247
+18:50:02.718 -142913427
+18:50:17.718 142840838
+
+pmval: pmFetch: End of PCP archive log
+
+-- raw input archive --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: src/uwrap
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:18.720 2147483586
+18:48:19.720 4294967232
+18:48:20.720 2147483582
+18:48:21.719 4294967228
+18:48:22.719 2147483578
+18:48:23.719 4294967224
+18:48:24.720 2147483574
+18:48:25.720 4294967220
+18:48:26.720 2147483570
+18:48:27.719 4294967216
+18:48:28.719 2147483566
+18:48:29.719 4294967212
+18:48:30.719 2147483562
+18:48:31.720 4294967208
+18:48:32.720 2147483558
+18:48:33.720 4294967204
+18:48:34.719 2147483554
+18:48:35.719 4294967200
+18:48:36.719 2147483550
+18:48:37.719 4294967196
+18:48:38.720 2147483546
+18:48:39.720 4294967192
+18:48:40.719 2147483542
+18:48:41.719 4294967188
+18:48:42.719 2147483538
+18:48:43.719 4294967184
+18:48:44.720 2147483534
+18:48:45.720 4294967180
+18:48:46.720 2147483530
+18:48:47.719 4294967176
+18:48:48.719 2147483526
+18:48:49.719 4294967172
+18:48:50.719 2147483522
+18:48:51.720 4294967168
+18:48:52.720 2147483518
+18:48:53.720 4294967164
+18:48:54.719 2147483514
+18:48:55.719 4294967160
+18:48:56.719 2147483510
+18:48:57.720 4294967156
+18:48:58.720 2147483506
+18:48:59.720 4294967152
+18:49:00.719 2147483502
+18:49:01.719 4294967148
+18:49:02.719 2147483498
+18:49:03.719 4294967144
+18:49:04.720 2147483494
+18:49:05.720 4294967140
+18:49:06.720 2147483490
+18:49:07.719 4294967136
+18:49:08.719 2147483486
+18:49:09.719 4294967132
+18:49:10.719 2147483482
+18:49:11.720 4294967128
+18:49:12.720 2147483478
+18:49:13.719 4294967124
+18:49:14.719 2147483474
+18:49:15.719 4294967120
+18:49:16.719 2147483470
+18:49:17.720 4294967116
+18:49:18.720 2147483466
+18:49:19.720 4294967112
+18:49:20.719 2147483462
+18:49:21.719 4294967108
+18:49:22.719 2147483458
+18:49:23.719 4294967104
+18:49:24.720 2147483454
+18:49:25.720 4294967100
+18:49:26.719 2147483450
+18:49:27.719 4294967096
+18:49:28.719 2147483446
+18:49:29.719 4294967092
+18:49:30.720 2147483442
+18:49:31.720 4294967088
+18:49:32.720 2147483438
+18:49:33.719 4294967084
+18:49:34.719 2147483434
+18:49:35.719 4294967080
+18:49:36.719 2147483430
+18:49:37.720 4294967076
+18:49:38.720 2147483426
+18:49:39.720 4294967072
+18:49:40.719 2147483422
+18:49:41.719 4294967068
+18:49:42.719 2147483418
+18:49:43.719 4294967064
+18:49:44.720 2147483414
+18:49:45.720 4294967060
+18:49:46.719 2147483410
+18:49:47.719 4294967056
+18:49:48.719 2147483406
+18:49:49.719 4294967052
+18:49:50.720 2147483402
+18:49:51.720 4294967048
+18:49:52.720 2147483398
+18:49:53.719 4294967044
+18:49:54.719 2147483394
+18:49:55.719 4294967040
+18:49:56.719 2147483390
+18:49:57.720 4294967036
+18:49:58.719 2147483386
+18:49:59.719 4294967032
+18:50:00.719 2147483382
+18:50:01.719 4294967028
+18:50:02.719 2147483378
+18:50:03.720 4294967024
+18:50:04.720 2147483374
+18:50:05.720 4294967020
+18:50:06.719 2147483370
+18:50:07.731 4294967016
+18:50:08.719 2147483366
+18:50:09.719 4294967012
+18:50:10.720 2147483362
+18:50:11.720 4294967008
+18:50:12.734 2147483358
+18:50:13.719 4294967004
+18:50:14.719 2147483354
+18:50:15.719 4294967000
+18:50:16.720 2147483350
+18:50:17.720 4294966996
+
+pmval: pmFetchArchive: End of PCP archive log
+
+-- input archive, rate converted with PCP_COUNTER_WRAP set --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: src/uwrap
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 121
+interval: 1.00 sec
+18:48:17.718 No values available
+18:48:18.718 No values available
+18:48:19.718 No values available
+18:48:20.718 2147814405
+18:48:21.718 2147816509
+18:48:22.718 2147790762
+18:48:23.718 2147840096
+18:48:24.718 2145648608
+18:48:25.718 2147815135
+18:48:26.718 2147805790
+18:48:27.718 2147760720
+18:48:28.718 2147857213
+18:48:29.718 2147810115
+18:48:30.718 2147812213
+18:48:31.718 2145663458
+18:48:32.718 2147806720
+18:48:33.718 2147814357
+18:48:34.718 2147780037
+18:48:35.718 2147749955
+18:48:36.718 2147897997
+18:48:37.718 2147818723
+18:48:38.718 2145661173
+18:48:39.718 2147710344
+18:48:40.718 2147889307
+18:48:41.718 2147829472
+18:48:42.718 2147754295
+18:48:43.718 2147872258
+18:48:44.718 2145642117
+18:48:45.718 2147815205
+18:48:46.718 2147752164
+18:48:47.718 2147876499
+18:48:48.718 2147803705
+18:48:49.718 2147803623
+18:48:50.718 2147801476
+18:48:51.718 2145680519
+18:48:52.718 2147802544
+18:48:53.718 2147833659
+18:48:54.718 2147786495
+18:48:55.718 2147818625
+18:48:56.718 2147803637
+18:48:57.718 2145575729
+18:48:58.718 2147812816
+18:48:59.718 2147801497
+18:49:00.718 2147900160
+18:49:01.718 2147812316
+18:49:02.718 2147758567
+18:49:03.718 2147870120
+18:49:04.718 2145635606
+18:49:05.718 2147757361
+18:49:06.718 2147889367
+18:49:07.718 2147812311
+18:49:08.718 2147812215
+18:49:09.718 2147801485
+18:49:10.718 2147790742
+18:49:11.718 2145631153
+18:49:12.718 2147806794
+18:49:13.718 2147846537
+18:49:14.718 2147810110
+18:49:15.718 2147822943
+18:49:16.718 2147797201
+18:49:17.718 2145689186
+18:49:18.718 2147802465
+18:49:19.718 2147792900
+18:49:20.718 2147820773
+18:49:21.718 2147816516
+18:49:22.718 2147790759
+18:49:23.718 2147835808
+18:49:24.718 2145646203
+18:49:25.718 2147815388
+18:49:26.718 2147812224
+18:49:27.718 2147780032
+18:49:28.718 2147835786
+18:49:29.718 2147810090
+18:49:30.718 2145654958
+18:49:31.718 2147819495
+18:49:32.718 2147792926
+18:49:33.718 2147790737
+18:49:34.718 2147814336
+18:49:35.718 2147852992
+18:49:36.718 2147734982
+18:49:37.718 2145729813
+18:49:38.718 2147813327
+18:49:39.718 2147805786
+18:49:40.718 2147801480
+18:49:41.718 2147807912
+18:49:42.718 2147799334
+18:49:43.718 2147835817
+18:49:44.718 2145654689
+18:49:45.718 2147809057
+18:49:46.718 2147801489
+18:49:47.718 2147846533
+18:49:48.718 2147771476
+18:49:49.718 2147816473
+18:49:50.718 2145575618
+18:49:51.718 2147903019
+18:49:52.718 2147717966
+18:49:53.718 2147906494
+18:49:54.718 2147771549
+18:49:55.718 2147844368
+18:49:56.718 2147743556
+18:49:57.718 2144973690
+18:49:58.718 2150703412
+18:49:59.718 2145670065
+18:50:00.718 2147794660
+18:50:01.718 2147810054
+18:50:02.718 2147734952
+18:50:03.718 2145764212
+18:50:04.718 2147776827
+18:50:05.718 2147840055
+18:50:06.718 2147795088
+18:50:07.718 2123672748
+18:50:08.718 2171938025
+18:50:09.718 2147823710
+18:50:10.718 2145652641
+18:50:11.718 2147815372
+18:50:12.718 2118170952
+18:50:13.718 2177432162
+18:50:14.718 2147831403
+18:50:15.718 2147818642
+18:50:16.718 2145633554
+18:50:17.718 2147716487
+
+pmval: pmFetch: End of PCP archive log
+
+-- input metric descriptor --
+
+sample.wrap.ulong
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+-- output metric descriptor --
+
+sample.wrap.ulong
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
diff --git a/qa/287.out.64 b/qa/287.out.64
new file mode 100644
index 0000000..370856c
--- /dev/null
+++ b/qa/287.out.64
@@ -0,0 +1,557 @@
+QA output created by 287
+
+-- raw reduce -t 2sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:17.718 No values available
+18:48:19.718 4291992467
+18:48:21.718 4292656177
+18:48:23.718 4293319831
+18:48:25.718 4291816370
+18:48:27.718 4292415676
+18:48:29.718 4293115800
+18:48:31.718 4291624267
+18:48:33.718 4292278140
+18:48:35.718 4292840928
+18:48:37.718 4293590444
+18:48:39.718 4291994757
+18:48:41.718 4292746332
+18:48:43.718 4293405681
+18:48:45.718 4291895799
+18:48:47.718 4292557258
+18:48:49.718 4293197382
+18:48:51.718 4291712173
+18:48:53.718 4292381172
+18:48:55.718 4293019088
+18:48:57.718 4291431250
+18:48:59.718 4292078359
+18:49:01.718 4292823631
+18:49:03.718 4293485114
+18:49:05.718 4291910877
+18:49:07.718 4292645351
+18:49:09.718 4293291847
+18:49:11.718 4291746538
+18:49:13.718 4292432665
+18:49:15.718 4293098514
+18:49:17.718 4291617697
+18:49:19.718 4292245858
+18:49:21.718 4292915943
+18:49:23.718 4293575306
+18:49:25.718 4292069693
+18:49:27.718 4292694745
+18:49:29.718 4293373417
+18:49:31.718 4291880666
+18:49:33.718 4292497125
+18:49:35.718 4293197249
+18:49:37.718 4291694840
+18:49:39.718 4292346749
+18:49:41.718 4292988937
+18:49:43.718 4293656884
+18:49:45.718 4292153426
+18:49:47.718 4292834244
+18:49:49.718 4293454989
+18:49:51.718 4291966422
+18:49:53.718 4292623678
+18:49:55.718 4293272391
+18:49:57.718 4291022433
+18:49:59.718 4292428706
+18:50:01.718 4293066216
+18:50:03.718 4291598176
+18:50:05.718 4292247854
+18:50:07.718 4268748486
+18:50:09.718 4293543018
+18:50:11.718 4292043827
+18:50:13.718 4292679738
+18:50:15.718 4293362579
+18:50:17.718 4291745416
+
+pmval: pmFetchArchive: End of PCP archive log
+-- rate converted, reduce -t 2sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 61
+interval: 2.00 sec
+18:48:17.718 No values available
+18:48:19.718 No values available
+18:48:21.718 331855
+18:48:23.718 331827
+18:48:25.718 -751730
+18:48:27.718 299653
+18:48:29.718 350062
+18:48:31.718 -745766
+18:48:33.718 326936
+18:48:35.718 281394
+18:48:37.718 374758
+18:48:39.718 -797844
+18:48:41.718 375788
+18:48:43.718 329674
+18:48:45.718 -754941
+18:48:47.718 330730
+18:48:49.718 320062
+18:48:51.718 -742604
+18:48:53.718 334500
+18:48:55.718 318958
+18:48:57.718 -793919
+18:48:59.718 323554
+18:49:01.718 372636
+18:49:03.718 330742
+18:49:05.718 -787118
+18:49:07.718 367237
+18:49:09.718 323248
+18:49:11.718 -772654
+18:49:13.718 343064
+18:49:15.718 332924
+18:49:17.718 -740408
+18:49:19.718 314080
+18:49:21.718 335042
+18:49:23.718 329682
+18:49:25.718 -752806
+18:49:27.718 312526
+18:49:29.718 339336
+18:49:31.718 -746376
+18:49:33.718 308230
+18:49:35.718 350062
+18:49:37.718 -751204
+18:49:39.718 325954
+18:49:41.718 321094
+18:49:43.718 333974
+18:49:45.718 -751729
+18:49:47.718 340409
+18:49:49.718 310372
+18:49:51.718 -744284
+18:49:53.718 328628
+18:49:55.718 324356
+18:49:57.718 -1124979
+18:49:59.718 703136
+18:50:01.718 318755
+18:50:03.718 -734020
+18:50:05.718 324839
+18:50:07.718 -11749684
+18:50:09.718 12397266
+18:50:11.718 -749596
+18:50:13.718 317956
+18:50:15.718 341420
+18:50:17.718 -808582
+
+pmval: pmFetch: End of PCP archive log
+
+-- raw reduce -t 5sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:17.718 No values available
+18:48:22.718 2149487467
+18:48:27.718 4292415676
+18:48:32.718 2150503379
+18:48:37.718 4293590444
+18:48:42.718 2149433699
+18:48:47.718 4292557258
+18:48:52.718 2150419569
+18:48:57.718 4291431250
+18:49:02.718 2149352048
+18:49:07.718 4292645351
+18:49:12.718 2150380874
+18:49:17.718 4291617697
+18:49:22.718 2149227464
+18:49:27.718 4292694745
+18:49:32.718 2150260534
+18:49:37.718 4291694840
+18:49:42.718 2149145815
+18:49:47.718 4292834244
+18:49:52.718 2150249658
+18:49:57.718 4291022433
+18:50:02.718 2149132838
+18:50:07.718 4268748486
+18:50:12.718 2179719188
+18:50:17.718 4291745416
+
+pmval: pmFetchArchive: End of PCP archive log
+-- rate converted, reduce -t 5sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 25
+interval: 5.00 sec
+18:48:17.718 No values available
+18:48:22.718 No values available
+18:48:27.718 428585642
+18:48:32.718 -428382459
+18:48:37.718 428617413
+18:48:42.718 -428831349
+18:48:47.718 428624712
+18:48:52.718 -428427538
+18:48:57.718 428202336
+18:49:02.718 -428415840
+18:49:07.718 428658661
+18:49:12.718 -428452895
+18:49:17.718 428247365
+18:49:22.718 -428478047
+18:49:27.718 428693456
+18:49:32.718 -428486842
+18:49:37.718 428286861
+18:49:42.718 -428509805
+18:49:47.718 428737686
+18:49:52.718 -428516917
+18:49:57.718 428154555
+18:50:02.718 -428377919
+18:50:07.718 423923130
+18:50:12.718 -417805860
+18:50:17.718 422405246
+
+pmval: pmFetch: End of PCP archive log
+
+-- raw reduce -t 15sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:17.718 No values available
+18:48:32.718 2150503379
+18:48:47.718 4292557258
+18:49:02.718 2149352048
+18:49:17.718 4291617697
+18:49:32.718 2150260534
+18:49:47.718 4292834244
+18:50:02.718 2149132838
+18:50:17.718 4291745416
+
+pmval: pmFetchArchive: End of PCP archive log
+-- rate converted, reduce -t 15sec --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: TMP
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 9
+interval: 15.00 sec
+18:48:17.718 No values available
+18:48:32.718 No values available
+18:48:47.718 142803592
+18:49:02.718 -142880347
+18:49:17.718 142817710
+18:49:32.718 -142757144
+18:49:47.718 142838247
+18:50:02.718 -142913427
+18:50:17.718 142840839
+
+pmval: pmFetch: End of PCP archive log
+
+-- raw input archive --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: src/uwrap
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter
+units: none
+samples: all
+18:48:18.720 2147483586
+18:48:19.720 4294967232
+18:48:20.720 2147483582
+18:48:21.719 4294967228
+18:48:22.719 2147483578
+18:48:23.719 4294967224
+18:48:24.720 2147483574
+18:48:25.720 4294967220
+18:48:26.720 2147483570
+18:48:27.719 4294967216
+18:48:28.719 2147483566
+18:48:29.719 4294967212
+18:48:30.719 2147483562
+18:48:31.720 4294967208
+18:48:32.720 2147483558
+18:48:33.720 4294967204
+18:48:34.719 2147483554
+18:48:35.719 4294967200
+18:48:36.719 2147483550
+18:48:37.719 4294967196
+18:48:38.720 2147483546
+18:48:39.720 4294967192
+18:48:40.719 2147483542
+18:48:41.719 4294967188
+18:48:42.719 2147483538
+18:48:43.719 4294967184
+18:48:44.720 2147483534
+18:48:45.720 4294967180
+18:48:46.720 2147483530
+18:48:47.719 4294967176
+18:48:48.719 2147483526
+18:48:49.719 4294967172
+18:48:50.719 2147483522
+18:48:51.720 4294967168
+18:48:52.720 2147483518
+18:48:53.720 4294967164
+18:48:54.719 2147483514
+18:48:55.719 4294967160
+18:48:56.719 2147483510
+18:48:57.720 4294967156
+18:48:58.720 2147483506
+18:48:59.720 4294967152
+18:49:00.719 2147483502
+18:49:01.719 4294967148
+18:49:02.719 2147483498
+18:49:03.719 4294967144
+18:49:04.720 2147483494
+18:49:05.720 4294967140
+18:49:06.720 2147483490
+18:49:07.719 4294967136
+18:49:08.719 2147483486
+18:49:09.719 4294967132
+18:49:10.719 2147483482
+18:49:11.720 4294967128
+18:49:12.720 2147483478
+18:49:13.719 4294967124
+18:49:14.719 2147483474
+18:49:15.719 4294967120
+18:49:16.719 2147483470
+18:49:17.720 4294967116
+18:49:18.720 2147483466
+18:49:19.720 4294967112
+18:49:20.719 2147483462
+18:49:21.719 4294967108
+18:49:22.719 2147483458
+18:49:23.719 4294967104
+18:49:24.720 2147483454
+18:49:25.720 4294967100
+18:49:26.719 2147483450
+18:49:27.719 4294967096
+18:49:28.719 2147483446
+18:49:29.719 4294967092
+18:49:30.720 2147483442
+18:49:31.720 4294967088
+18:49:32.720 2147483438
+18:49:33.719 4294967084
+18:49:34.719 2147483434
+18:49:35.719 4294967080
+18:49:36.719 2147483430
+18:49:37.720 4294967076
+18:49:38.720 2147483426
+18:49:39.720 4294967072
+18:49:40.719 2147483422
+18:49:41.719 4294967068
+18:49:42.719 2147483418
+18:49:43.719 4294967064
+18:49:44.720 2147483414
+18:49:45.720 4294967060
+18:49:46.719 2147483410
+18:49:47.719 4294967056
+18:49:48.719 2147483406
+18:49:49.719 4294967052
+18:49:50.720 2147483402
+18:49:51.720 4294967048
+18:49:52.720 2147483398
+18:49:53.719 4294967044
+18:49:54.719 2147483394
+18:49:55.719 4294967040
+18:49:56.719 2147483390
+18:49:57.720 4294967036
+18:49:58.719 2147483386
+18:49:59.719 4294967032
+18:50:00.719 2147483382
+18:50:01.719 4294967028
+18:50:02.719 2147483378
+18:50:03.720 4294967024
+18:50:04.720 2147483374
+18:50:05.720 4294967020
+18:50:06.719 2147483370
+18:50:07.731 4294967016
+18:50:08.719 2147483366
+18:50:09.719 4294967012
+18:50:10.720 2147483362
+18:50:11.720 4294967008
+18:50:12.734 2147483358
+18:50:13.719 4294967004
+18:50:14.719 2147483354
+18:50:15.719 4294967000
+18:50:16.720 2147483350
+18:50:17.720 4294966996
+
+pmval: pmFetchArchive: End of PCP archive log
+
+-- input archive, rate converted with PCP_COUNTER_WRAP set --
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.wrap.ulong
+archive: src/uwrap
+host: kenj-pc
+start: Thu Jun 30 18:48:17 2005
+end: Thu Jun 30 18:50:17 2005
+semantics: cumulative counter (converting to rate)
+units: none (converting to / sec)
+samples: 121
+interval: 1.00 sec
+18:48:17.718 No values available
+18:48:18.718 No values available
+18:48:19.718 No values available
+18:48:20.718 2147814451
+18:48:21.718 2147816555
+18:48:22.718 2147790808
+18:48:23.718 2147840142
+18:48:24.718 2145648654
+18:48:25.718 2147815181
+18:48:26.718 2147805836
+18:48:27.718 2147760766
+18:48:28.718 2147857259
+18:48:29.718 2147810161
+18:48:30.718 2147812259
+18:48:31.718 2145663504
+18:48:32.718 2147806766
+18:48:33.718 2147814403
+18:48:34.718 2147780083
+18:48:35.718 2147750001
+18:48:36.718 2147898043
+18:48:37.718 2147818769
+18:48:38.718 2145661219
+18:48:39.718 2147710390
+18:48:40.718 2147889353
+18:48:41.718 2147829518
+18:48:42.718 2147754341
+18:48:43.718 2147872304
+18:48:44.718 2145642163
+18:48:45.718 2147815251
+18:48:46.718 2147752210
+18:48:47.718 2147876545
+18:48:48.718 2147803751
+18:48:49.718 2147803669
+18:48:50.718 2147801522
+18:48:51.718 2145680565
+18:48:52.718 2147802590
+18:48:53.718 2147833705
+18:48:54.718 2147786541
+18:48:55.718 2147818671
+18:48:56.718 2147803683
+18:48:57.718 2145575775
+18:48:58.718 2147812862
+18:48:59.718 2147801543
+18:49:00.718 2147900206
+18:49:01.718 2147812362
+18:49:02.718 2147758613
+18:49:03.718 2147870166
+18:49:04.718 2145635652
+18:49:05.718 2147757407
+18:49:06.718 2147889413
+18:49:07.718 2147812357
+18:49:08.718 2147812261
+18:49:09.718 2147801531
+18:49:10.718 2147790788
+18:49:11.718 2145631199
+18:49:12.718 2147806840
+18:49:13.718 2147846583
+18:49:14.718 2147810156
+18:49:15.718 2147822989
+18:49:16.718 2147797247
+18:49:17.718 2145689232
+18:49:18.718 2147802511
+18:49:19.718 2147792946
+18:49:20.718 2147820819
+18:49:21.718 2147816562
+18:49:22.718 2147790805
+18:49:23.718 2147835854
+18:49:24.718 2145646249
+18:49:25.718 2147815434
+18:49:26.718 2147812270
+18:49:27.718 2147780078
+18:49:28.718 2147835832
+18:49:29.718 2147810136
+18:49:30.718 2145655004
+18:49:31.718 2147819541
+18:49:32.718 2147792972
+18:49:33.718 2147790783
+18:49:34.718 2147814382
+18:49:35.718 2147853038
+18:49:36.718 2147735028
+18:49:37.718 2145729859
+18:49:38.718 2147813373
+18:49:39.718 2147805832
+18:49:40.718 2147801526
+18:49:41.718 2147807958
+18:49:42.718 2147799380
+18:49:43.718 2147835863
+18:49:44.718 2145654735
+18:49:45.718 2147809103
+18:49:46.718 2147801535
+18:49:47.718 2147846579
+18:49:48.718 2147771522
+18:49:49.718 2147816519
+18:49:50.718 2145575664
+18:49:51.718 2147903065
+18:49:52.718 2147718012
+18:49:53.718 2147906540
+18:49:54.718 2147771595
+18:49:55.718 2147844414
+18:49:56.718 2147743602
+18:49:57.718 2144973736
+18:49:58.718 2150703458
+18:49:59.718 2145670111
+18:50:00.718 2147794706
+18:50:01.718 2147810100
+18:50:02.718 2147734998
+18:50:03.718 2145764258
+18:50:04.718 2147776873
+18:50:05.718 2147840101
+18:50:06.718 2147795134
+18:50:07.718 2123672794
+18:50:08.718 2171938072
+18:50:09.718 2147823756
+18:50:10.718 2145652687
+18:50:11.718 2147815418
+18:50:12.718 2118170998
+18:50:13.718 2177432209
+18:50:14.718 2147831449
+18:50:15.718 2147818688
+18:50:16.718 2145633600
+18:50:17.718 2147716533
+
+pmval: pmFetch: End of PCP archive log
+
+-- input metric descriptor --
+
+sample.wrap.ulong
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+-- output metric descriptor --
+
+sample.wrap.ulong
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
diff --git a/qa/288 b/qa/288
new file mode 100755
index 0000000..1bfdb75
--- /dev/null
+++ b/qa/288
@@ -0,0 +1,41 @@
+#! /bin/sh
+# PCP QA Test No. 288
+# pv:925800 under some conditions, interpolation was taking forever!
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+for m in mem.physmem mem.freemem
+do
+ for a in "" "-A 1min"
+ do
+ echo
+ echo "=== metric $m alignment $a ==="
+ pmval -z -Dinterp -t 2min $a -a src/20041125 $m 2>$tmp.trace
+ echo
+ $PCP_AWK_PROG <$tmp.trace '
+/log reads/ { f+=$5; b+=$7; next}
+/__pmLogFetchInterp/ { next }
+/[0-9][0-9]:[0-9][0-9]:/{ c++; next }
+END { print "reported samples:",c
+ print "total log reads: forward",f,"backwards",b
+ }'
+ done
+done
+
+# success, all done
+exit
diff --git a/qa/288.out b/qa/288.out
new file mode 100644
index 0000000..d1ce956
--- /dev/null
+++ b/qa/288.out
@@ -0,0 +1,163 @@
+QA output created by 288
+
+=== metric mem.physmem alignment ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+metric: mem.physmem
+archive: src/20041125
+host: mortenb.oslo.sgi.com
+start: Thu Nov 25 00:10:06 2004
+end: Thu Nov 25 00:58:06 2004
+semantics: discrete instantaneous value
+units: Kbyte
+samples: 25
+interval: 120.00 sec
+00:10:06.248 No values available
+00:12:06.248 514216
+00:14:06.248 514216
+00:16:06.248 514216
+00:18:06.248 514216
+00:20:06.248 514216
+00:22:06.248 514216
+00:24:06.248 514216
+00:26:06.248 514216
+00:28:06.248 514216
+00:30:06.248 514216
+00:32:06.248 514216
+00:34:06.248 514216
+00:36:06.248 514216
+00:38:06.248 514216
+00:40:06.248 514216
+00:42:06.248 514216
+00:44:06.248 514216
+00:46:06.248 514216
+00:48:06.248 514216
+00:50:06.248 514216
+00:52:06.248 514216
+00:54:06.248 514216
+00:56:06.248 514216
+00:58:06.248 514216
+
+reported samples:
+total log reads: forward 51 backwards 1
+
+=== metric mem.physmem alignment -A 1min ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+metric: mem.physmem
+archive: src/20041125
+host: mortenb.oslo.sgi.com
+start: Thu Nov 25 00:11:00 2004
+end: Thu Nov 25 00:58:06 2004
+semantics: discrete instantaneous value
+units: Kbyte
+samples: 24
+interval: 120.00 sec
+00:11:00.000 514216
+00:13:00.000 514216
+00:15:00.000 514216
+00:17:00.000 514216
+00:19:00.000 514216
+00:21:00.000 514216
+00:23:00.000 514216
+00:25:00.000 514216
+00:27:00.000 514216
+00:29:00.000 514216
+00:31:00.000 514216
+00:33:00.000 514216
+00:35:00.000 514216
+00:37:00.000 514216
+00:39:00.000 514216
+00:41:00.000 514216
+00:43:00.000 514216
+00:45:00.000 514216
+00:47:00.000 514216
+00:49:00.000 514216
+00:51:00.000 514216
+00:53:00.000 514216
+00:55:00.000 514216
+00:57:00.000 514216
+
+reported samples:
+total log reads: forward 49 backwards 1
+
+=== metric mem.freemem alignment ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+metric: mem.freemem
+archive: src/20041125
+host: mortenb.oslo.sgi.com
+start: Thu Nov 25 00:10:06 2004
+end: Thu Nov 25 00:58:06 2004
+semantics: instantaneous value
+units: Kbyte
+samples: 25
+interval: 120.00 sec
+00:10:06.248 No values available
+00:12:06.248 1672
+00:14:06.248 148488
+00:16:06.248 148552
+00:18:06.248 148488
+00:20:06.248 148488
+00:22:06.248 148488
+00:24:06.248 148424
+00:26:06.248 146752
+00:28:06.248 146888
+00:30:06.248 146376
+00:32:06.248 146376
+00:34:06.248 146376
+00:36:06.248 146376
+00:38:06.248 146376
+00:40:06.248 146376
+00:42:06.248 146376
+00:44:06.248 146312
+00:46:06.248 146312
+00:48:06.248 146312
+00:50:06.248 146312
+00:52:06.248 146312
+00:54:06.248 146248
+00:56:06.248 145792
+00:58:06.248 146056
+
+reported samples:
+total log reads: forward 51 backwards 1
+
+=== metric mem.freemem alignment -A 1min ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+metric: mem.freemem
+archive: src/20041125
+host: mortenb.oslo.sgi.com
+start: Thu Nov 25 00:11:00 2004
+end: Thu Nov 25 00:58:06 2004
+semantics: instantaneous value
+units: Kbyte
+samples: 24
+interval: 120.00 sec
+00:11:00.000 No values available
+00:13:00.000 148808
+00:15:00.000 148552
+00:17:00.000 148552
+00:19:00.000 148488
+00:21:00.000 148488
+00:23:00.000 148488
+00:25:00.000 148488
+00:27:00.000 146888
+00:29:00.000 146376
+00:31:00.000 146376
+00:33:00.000 146376
+00:35:00.000 146376
+00:37:00.000 146376
+00:39:00.000 146376
+00:41:00.000 146312
+00:43:00.000 146312
+00:45:00.000 146312
+00:47:00.000 146312
+00:49:00.000 146248
+00:51:00.000 146248
+00:53:00.000 146248
+00:55:00.000 146248
+00:57:00.000 146056
+
+reported samples:
+total log reads: forward 47 backwards 3
diff --git a/qa/289 b/qa/289
new file mode 100755
index 0000000..93406c3
--- /dev/null
+++ b/qa/289
@@ -0,0 +1,33 @@
+#!/bin/sh
+# PCP QA Test No. 289
+# exposes a bug in interp when rewind across mark record
+# pv #505498
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+
+src/mark-bug -z -a src/mark-bug -s 60 -t 2
+
+# success, all done
+status=0
+exit
diff --git a/qa/289.out b/qa/289.out
new file mode 100644
index 0000000..2552472
--- /dev/null
+++ b/qa/289.out
@@ -0,0 +1,139 @@
+QA output created by 289
+Note: timezone set to local timezone of host "sandpit" from archive
+
+archive src/mark-bug
+startTime: Wed Jul 9 12:09:16 1997+933192
+endTime : Wed Jul 9 12:12:11 1997+621362
+samples=60 delta=2000ms
+forwards @ Wed Jul 9 12:09:16 1997+933192 vset[0]->numval=0
+forwards @ Wed Jul 9 12:09:16 1997+933192 vset[1]->numval=0
+fetch OK forwards @ Wed Jul 9 12:09:18 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:20 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:22 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:24 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:26 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:28 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:30 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:32 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:34 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:36 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:38 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:40 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:42 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:44 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:46 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:48 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:50 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:52 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:54 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:56 1997+933192
+fetch OK forwards @ Wed Jul 9 12:09:58 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:00 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:02 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:04 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:06 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:08 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:10 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:12 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:14 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:16 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:18 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:20 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:22 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:24 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:26 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:28 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:30 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:32 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:34 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:36 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:38 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:40 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:42 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:44 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:46 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:48 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:50 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:52 1997+933192
+fetch OK forwards @ Wed Jul 9 12:10:54 1997+933192
+forwards @ Wed Jul 9 12:10:56 1997+933192 vset[0]->numval=0
+forwards @ Wed Jul 9 12:10:56 1997+933192 vset[1]->numval=0
+forwards @ Wed Jul 9 12:10:58 1997+933192 vset[0]->numval=0
+forwards @ Wed Jul 9 12:10:58 1997+933192 vset[1]->numval=0
+forwards @ Wed Jul 9 12:11:00 1997+933192 vset[0]->numval=0
+forwards @ Wed Jul 9 12:11:00 1997+933192 vset[1]->numval=0
+forwards @ Wed Jul 9 12:11:02 1997+933192 vset[0]->numval=0
+forwards @ Wed Jul 9 12:11:02 1997+933192 vset[1]->numval=0
+forwards @ Wed Jul 9 12:11:04 1997+933192 vset[0]->numval=0
+forwards @ Wed Jul 9 12:11:04 1997+933192 vset[1]->numval=0
+fetch OK forwards @ Wed Jul 9 12:11:06 1997+933192
+fetch OK forwards @ Wed Jul 9 12:11:08 1997+933192
+fetch OK forwards @ Wed Jul 9 12:11:10 1997+933192
+fetch OK forwards @ Wed Jul 9 12:11:12 1997+933192
+fetch OK forwards @ Wed Jul 9 12:11:14 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:11:14 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:11:12 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:11:10 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:11:08 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:11:06 1997+933192
+rewinding @ Wed Jul 9 12:11:04 1997+933192 vset[0]->numval=0
+rewinding @ Wed Jul 9 12:11:04 1997+933192 vset[1]->numval=0
+rewinding @ Wed Jul 9 12:11:02 1997+933192 vset[0]->numval=0
+rewinding @ Wed Jul 9 12:11:02 1997+933192 vset[1]->numval=0
+rewinding @ Wed Jul 9 12:11:00 1997+933192 vset[0]->numval=0
+rewinding @ Wed Jul 9 12:11:00 1997+933192 vset[1]->numval=0
+rewinding @ Wed Jul 9 12:10:58 1997+933192 vset[0]->numval=0
+rewinding @ Wed Jul 9 12:10:58 1997+933192 vset[1]->numval=0
+rewinding @ Wed Jul 9 12:10:56 1997+933192 vset[0]->numval=0
+rewinding @ Wed Jul 9 12:10:56 1997+933192 vset[1]->numval=0
+fetch OK rewinding @ Wed Jul 9 12:10:54 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:52 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:50 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:48 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:46 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:44 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:42 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:40 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:38 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:36 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:34 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:32 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:30 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:28 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:26 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:24 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:22 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:20 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:18 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:16 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:14 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:12 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:10 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:08 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:06 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:04 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:02 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:10:00 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:58 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:56 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:54 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:52 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:50 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:48 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:46 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:44 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:42 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:40 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:38 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:36 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:34 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:32 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:30 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:28 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:26 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:24 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:22 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:20 1997+933192
+fetch OK rewinding @ Wed Jul 9 12:09:18 1997+933192
+rewinding @ Wed Jul 9 12:09:16 1997+933192 vset[0]->numval=0
+rewinding @ Wed Jul 9 12:09:16 1997+933192 vset[1]->numval=0
diff --git a/qa/290 b/qa/290
new file mode 100755
index 0000000..7bf7afd
--- /dev/null
+++ b/qa/290
@@ -0,0 +1,27 @@
+#! /bin/sh
+# PCP QA Test No. 290
+# Run pmnsunload using purify (see also 387)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_purify src/pmnsunload
+
+status=1 # failure is the default!
+trap "cd; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_setup_purify src/pmnsunload
+_run_purify -i 3
+
+# all done
+status=0
+exit
diff --git a/qa/290.out b/qa/290.out
new file mode 100644
index 0000000..d716c22
--- /dev/null
+++ b/qa/290.out
@@ -0,0 +1,40 @@
+QA output created by 290
+***iteration 0***
+---pre-unload---
+PMNS location = 2
+---post-unload---
+PMNS location = 2
+---post-load---
+PMNS location = 1
+***iteration 1***
+---pre-unload---
+PMNS location = 1
+---post-unload---
+PMNS location = 2
+---post-load---
+PMNS location = 1
+***iteration 2***
+---pre-unload---
+PMNS location = 1
+---post-unload---
+PMNS location = 2
+---post-load---
+PMNS location = 1
+
+**** Purify instrumented TMP/pmnsunload.pure (pid PID) ****
+Current file descriptors in use: 5
+FIU: file descriptor 0: <stdin>
+FIU: file descriptor 1: <stdout>
+FIU: file descriptor 2: <stderr>
+
+**** Purify instrumented TMP/pmnsunload.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/pmnsunload.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/291 b/qa/291
new file mode 100755
index 0000000..0fcd91d
--- /dev/null
+++ b/qa/291
@@ -0,0 +1,65 @@
+#! /bin/sh
+# PCP QA Test No. 291
+# Check the handling of the log basename alias/duplicate handling
+# in pmlogger_merge. Exercise pmlogextract in passing.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "cd; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+rm -rf $tmp
+mkdir $tmp
+cd $tmp
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+base=19970709
+
+pmlogextract -z -T "@22:30" $here/src/rattle $base.22.30-01
+pmlogextract -z -S "@22:30" -T "@23:30" $here/src/rattle $base.22.30-02
+pmlogextract -z -S "@23:30" -T "@00:30" $here/src/rattle $base.22.30
+pmlogextract -z -S "@00:30" -T "@01:30" $here/src/rattle $base.23.10
+
+echo "=== archives before ==="
+for arch in $base.22.30-01 $base.22.30-02 $base.22.30 $base.23.10
+do
+ echo
+ echo "::: $arch :::"
+ pmdumplog -lzm $arch
+done
+
+
+echo
+echo "=== cron.logmerge ==="
+pmlogger_merge -Vf '19970709.??.??' 19970709 \
+| $PCP_AWK_PROG '
+$1 ~ /^-r..r..r../ { print "... ls details ...",$NF; next }
+ { print }'
+
+echo
+echo "=== files after ==="
+ls
+
+echo
+echo "=== merged archive ==="
+pmdumplog -z 19970709
+
+# success, all done
+status=0
+exit
diff --git a/qa/291.out b/qa/291.out
new file mode 100644
index 0000000..d452b7e
--- /dev/null
+++ b/qa/291.out
@@ -0,0 +1,95 @@
+QA output created by 291
+Note: timezone set to local timezone of host "rattle" from archive
+
+Note: timezone set to local timezone of host "rattle" from archive
+
+Note: timezone set to local timezone of host "rattle" from archive
+
+Note: timezone set to local timezone of host "rattle" from archive
+
+=== archives before ===
+
+::: 19970709.22.30-01 :::
+Note: timezone set to local timezone of host "rattle" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host rattle
+ commencing Sat May 17 22:22:42.025 1997
+ ending Sat May 17 22:22:42.060 1997
+
+22:22:42.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [19856 or "19856"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+
+22:22:42.060 1.26.7 (hinv.ndisk): value 2
+ 1.18.2 (hinv.ncpu): value 1
+
+::: 19970709.22.30-02 :::
+Note: timezone set to local timezone of host "rattle" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host rattle
+ commencing Sat May 17 23:22:42.011 1997
+ ending Sat May 17 23:22:42.011 1997
+
+23:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+
+::: 19970709.22.30 :::
+Note: timezone set to local timezone of host "rattle" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host rattle
+ commencing Sun May 18 00:22:42.011 1997
+ ending Sun May 18 00:22:42.011 1997
+
+00:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+
+::: 19970709.23.10 :::
+Note: timezone set to local timezone of host "rattle" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host rattle
+ commencing Sun May 18 01:22:42.021 1997
+ ending Sun May 18 01:22:42.021 1997
+
+01:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+
+=== cron.logmerge ===
+Input archives to be merged:
+ 19970709.22.30
+ 19970709.23.10
+ 19970709.22.30-01
+ 19970709.22.30-02
+Output archive files:
+... ls details ... 19970709.meta
+... ls details ... 19970709.index
+... ls details ... 19970709.0
+Removing input archive files ... done
+
+=== files after ===
+19970709.0
+19970709.index
+19970709.meta
+
+=== merged archive ===
+Note: timezone set to local timezone of host "rattle" from archive
+
+
+22:22:42.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [19856 or "19856"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+
+22:22:42.060 1.26.7 (hinv.ndisk): value 2
+ 1.18.2 (hinv.ncpu): value 1
+
+22:22:42.061 <mark>
+
+23:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+
+23:22:42.012 <mark>
+
+00:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+
+00:22:42.012 <mark>
+
+01:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
diff --git a/qa/292 b/qa/292
new file mode 100755
index 0000000..2caaa21
--- /dev/null
+++ b/qa/292
@@ -0,0 +1,95 @@
+#! /bin/sh
+# PCP QA Test No. 292
+# duplicate/alias base name resolution by pmlogger_check
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/host:/s/ [^ ].*/ HOST/' \
+ -e '/start:/s/ [^ ].*/ DATE/' \
+ -e '/end:/s/ [^ ].*/ DATE/' \
+ -e 's/^..:..:..\..../TIMESTAMP /' \
+ -e "s/^TIMESTAMP *$debug$/TIMESTAMP DEBUG/g"
+}
+
+_cleanup()
+{
+ $signal -a -s TERM pmlogger >/dev/null 2>&1
+ cd $here
+ $sudo rm -rf $tmp
+}
+
+signal="$sudo $PCP_BINADM_DIR/pmsignal"
+status=0 # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+debug=`pmprobe -v pmcd.control.debug | $PCP_AWK_PROG '{ print $3 }'`
+
+rm -rf $tmp
+mkdir $tmp
+chmod ugo+w $tmp
+cd $tmp
+
+echo >control '# PCP archive logging configuration/control - for qa/'$seq'
+#
+$version=1.1
+LOCALHOSTNAME n n '`pwd`' -c ./config'
+
+echo "log mandatory on once pmcd.control.debug" >config
+
+touch pmcheck.log
+chmod ugo+w pmcheck.log
+
+# real QA test starts here
+echo "start pmlogger ..."
+$sudo $PCP_BINADM_DIR/pmlogger_check -V -c control >>pmcheck.log 2>&1
+
+for i in 1 2 3 4
+do
+ echo "kill and restart pmlogger ..."
+ $signal -a -s TERM pmlogger
+ $sudo $PCP_BINADM_DIR/pmlogger_check -V -c control >>pmcheck.log 2>&1
+done
+$signal -a -s TERM pmlogger
+
+echo
+echo "Checking ..."
+for seq in 00 01
+do
+ if [ "`echo *-$seq.index`" != "*-$seq.index" ]
+ then
+ echo "Found at least one \"-$seq\" suffix"
+ else
+ echo "No \"-$seq\" suffix found!"
+ status=1
+ fi
+done
+
+if [ $status = 1 ]
+then
+ echo
+ echo "Hmm ... this is what we got"
+ ls -l
+ echo "=== pmlogger.log==="
+ cat pmlogger.log
+ echo "=== pmcheck.log==="
+ cat pmcheck.log
+fi
+
+echo
+echo "merge 'em together ..."
+$sudo $PCP_BINADM_DIR/pmlogextract *.0 out
+pmval -U out pmcd.control.debug | _filter
+
+exit
diff --git a/qa/292.out b/qa/292.out
new file mode 100644
index 0000000..7343dd8
--- /dev/null
+++ b/qa/292.out
@@ -0,0 +1,32 @@
+QA output created by 292
+start pmlogger ...
+kill and restart pmlogger ...
+kill and restart pmlogger ...
+kill and restart pmlogger ...
+kill and restart pmlogger ...
+
+Checking ...
+Found at least one "-00" suffix
+Found at least one "-01" suffix
+
+merge 'em together ...
+
+pmval: pmFetchArchive: End of PCP archive log
+
+metric: pmcd.control.debug
+archive: out
+host: HOST
+start: DATE
+end: DATE
+semantics: discrete instantaneous value
+units: none
+samples: all
+TIMESTAMP DEBUG
+TIMESTAMP Archive logging suspended
+TIMESTAMP DEBUG
+TIMESTAMP Archive logging suspended
+TIMESTAMP DEBUG
+TIMESTAMP Archive logging suspended
+TIMESTAMP DEBUG
+TIMESTAMP Archive logging suspended
+TIMESTAMP DEBUG
diff --git a/qa/293 b/qa/293
new file mode 100755
index 0000000..08c90bb
--- /dev/null
+++ b/qa/293
@@ -0,0 +1,30 @@
+#! /bin/sh
+# PCP QA Test No. 293
+# pmstat field overflow from APAC => new scaling and formatting
+# pv:939275
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed -e '/Warning: using metric .* instead of /d'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmstat -z -a src/ac15 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/293.out b/qa/293.out
new file mode 100644
index 0000000..db8cd5d
--- /dev/null
+++ b/qa/293.out
@@ -0,0 +1,11 @@
+QA output created by 293
+Note: timezone set to local timezone of host "ac15" from archive
+
+@ Sat Jul 9 08:48:29 2005
+ loadavg memory swap io system cpu
+ 1 min swpd free buff cache si so bi bo in cs us sy id
+ 31.16 0 25955m 17696 3237m ? ? ? ? ? ? ? ? ?
+ 31.16 0 25955m 17696 3237m 1805 3416 3595 10K 33K 1047 96 1 3
+ 31.16 0 25955m 17696 3237m 1805 3416 3595 10K 33K 1047 96 1 3
+ 31.13 0 25926m 17696 3243m 1739 2886 3462 11K 33K 1006 96 1 3
+ pmFetch: End of PCP archive log
diff --git a/qa/294 b/qa/294
new file mode 100755
index 0000000..bb598c6
--- /dev/null
+++ b/qa/294
@@ -0,0 +1,160 @@
+#! /bin/sh
+# PCP QA Test No. 294
+# Basic pmproxy functionality
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmdumptext >/dev/null 2>&1 || _notrun "No installed pmdumptext binary"
+
+#debug# tmp=`pwd`/tmp
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+username=`id -u -n`
+$sudo rm -rf $tmp.*
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ $sudo $signal -a pmproxy >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmproxy restart >/dev/null 2>&1
+}
+
+_filter()
+{
+ sed \
+ -e '/hinv/s/ [0-9][0-9]*$/ N/' \
+ -e '/^[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/{
+# pmdumptext
+s//DATE/
+s/ [0-9][0-9.]*/ N/g
+}' \
+ -e '/^\[[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]]/{
+# pmie trailer
+s//[DATE]/
+s/([0-9][0-9]*)/(PID)/
+}' \
+ -e '/expr_1/s/ *[0-9][0-9.]*/ N/g' \
+ -e '/^@ [A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][[0-9][0-9][0-9]/{
+# pmstat header1
+s//@ DATE/
+}' \
+ -e '/^ 1 min swpd free buff cache pi po bi bo in cs us sy id/{
+# pmstat header3
+s// 1 min swpd free buff cache si so bi bo in cs us sy id/
+}' \
+ -e '/[0-9.]*[0-9Km] *[0-9.]*[0-9Km] *[0-9.]*[0-9Km] *[0-9.]*[0-9Km] *[0-9.]*[0-9Km]/{
+# pmstat data
+s/ *[0-9.]*[0-9Km]/ N/g
+}' \
+ | _filter_me
+}
+
+_filter_me()
+{
+ sed \
+ -e "s/`hostname`/MY_HOSTNAME/g" \
+ -e "s/`hostname | sed -e 's/\..*//'`/MY_HOSTNAME/" \
+ -e "s/local:/MY_HOSTNAME/" \
+ -e "s/localhost\.localdomain/MY_HOSTNAME/" \
+ -e "s/localhost/MY_HOSTNAME/" \
+ -e "s#$PCP_VAR_DIR#PCP_VAR_DIR#g" \
+ -e "s#$PCP_SYSCONF_DIR/pmlogger/config.pmstat#TMP.logger.config#g" \
+ -e "s,$tmp.config,TMP.logger.config,g" \
+ -e "s#$tmp#TMP#g"
+}
+
+_filter_pmproxy()
+{
+ sed \
+ -e '/^__pmSetSocketIPC: fd=/d' \
+ -e '/^__pmSetDataIPC:/d' \
+ -e '/^__pmDataIPC: /d' \
+ -e '/^IPC table fd/d' \
+
+}
+
+_do()
+{
+ echo
+ echo "+++ $* +++" | tee -a $seq.full | _filter_me
+ if which $1 >/dev/null 2>&1
+ then
+ eval $* 2>&1 | tee -a $seq.full | _filter
+ echo "`grep AcceptNewClient $tmp.log | wc -l | sed -e 's/ *//g'` connects"
+ echo "`grep DeleteClient $tmp.log | wc -l | sed -e 's/ *//g'` disconnects"
+ else
+ echo "Skipped, no $1 binary installed"
+ fi
+}
+
+_do_config()
+{
+ cat >$tmp.config <<End-of-File
+log advisory on default {
+ kernel.all.load
+ swap.used
+ mem.util.free
+ mem.util.bufmem
+ mem.bufmem
+ mem.util.cached
+ swap.in
+ swap.pagesin
+ swap.out
+ swap.pagesout
+ disk.all.blkread
+ disk.all.blkwrite
+ kernel.all.intr
+ kernel.all.intr.non_vme
+ kernel.all.pswitch
+ kernel.all.cpu
+}
+End-of-File
+}
+
+$sudo $PCP_RC_DIR/pmproxy stop >/dev/null 2>&1
+$sudo $signal -a pmproxy >/dev/null 2>&1
+
+proxyargs="-Dcontext"
+id pcp >/dev/null 2>&1 && proxyargs="$proxyargs -U $username"
+$PCP_BINADM_DIR/pmproxy $proxyargs -l $tmp.log 2>&1 | _filter_pmproxy
+
+PMPROXY_HOST=localhost
+export PMPROXY_HOST
+
+rm -f $seq.full
+
+# real QA test starts here
+_do pminfo -h $PMPROXY_HOST -d pmcd.agent
+_do pminfo -h $PMPROXY_HOST -f sample.hordes
+_do pmprobe -v -h localhost hinv.ncpu
+_do pmval -h `hostname` -t 0.5 -s 3 sample.bin
+
+echo "kernel.all.load;" >$tmp.in
+_do pmie -h $PMPROXY_HOST -c $tmp.in -v -t 0.5 -T 1.5
+echo "kernel.all.cpu.user :localhost;" >$tmp.in
+_do pmie -h $PMPROXY_HOST -c $tmp.in -v -t 0.5 -T 1.5
+_do pmdumptext -h `hostname` -t 0.5 -s 2 sample.string.hullo
+_do pmdumptext -t 0.5 -s 2 localhost:sample.string.hullo
+_do pmdumptext -t 0.5 -s 2 `hostname`:kernel.all.load
+
+# Note: there used to be special casing for Darwin/Solaris platforms
+# here. This is wrong, pmstat must still run on these platforms and
+# produce no values for some columns.
+
+_do pmstat -h $PMPROXY_HOST -t 0.5 -s 2
+_do_config
+_do pmlogger -h localhost -c $tmp.config -t 0.5sec -s 3 -l $tmp.logger.log $tmp.arch
+_do pmstat -S +0.25sec -t 0.5sec -a $tmp.arch -z
+
+# success, all done
+status=0
+exit
diff --git a/qa/294.out b/qa/294.out
new file mode 100644
index 0000000..b3375ee
--- /dev/null
+++ b/qa/294.out
@@ -0,0 +1,1111 @@
+QA output created by 294
+
++++ pminfo -h MY_HOSTNAME -d pmcd.agent +++
+
+pmcd.agent.type
+ Data Type: 32-bit unsigned int InDom: 2.3 0x800003
+ Semantics: discrete Units: none
+
+pmcd.agent.status
+ Data Type: 32-bit int InDom: 2.3 0x800003
+ Semantics: discrete Units: none
+1 connects
+1 disconnects
+
++++ pminfo -h MY_HOSTNAME -f sample.hordes +++
+
+sample.hordes.one
+ inst [0 or "0"] value 0
+ inst [1 or "1"] value 1
+ inst [2 or "2"] value 2
+ inst [3 or "3"] value 3
+ inst [4 or "4"] value 4
+ inst [5 or "5"] value 5
+ inst [6 or "6"] value 6
+ inst [7 or "7"] value 7
+ inst [8 or "8"] value 8
+ inst [9 or "9"] value 9
+ inst [10 or "10"] value 10
+ inst [11 or "11"] value 11
+ inst [12 or "12"] value 12
+ inst [13 or "13"] value 13
+ inst [14 or "14"] value 14
+ inst [15 or "15"] value 15
+ inst [16 or "16"] value 16
+ inst [17 or "17"] value 17
+ inst [18 or "18"] value 18
+ inst [19 or "19"] value 19
+ inst [20 or "20"] value 20
+ inst [21 or "21"] value 21
+ inst [22 or "22"] value 22
+ inst [23 or "23"] value 23
+ inst [24 or "24"] value 24
+ inst [25 or "25"] value 25
+ inst [26 or "26"] value 26
+ inst [27 or "27"] value 27
+ inst [28 or "28"] value 28
+ inst [29 or "29"] value 29
+ inst [30 or "30"] value 30
+ inst [31 or "31"] value 31
+ inst [32 or "32"] value 32
+ inst [33 or "33"] value 33
+ inst [34 or "34"] value 34
+ inst [35 or "35"] value 35
+ inst [36 or "36"] value 36
+ inst [37 or "37"] value 37
+ inst [38 or "38"] value 38
+ inst [39 or "39"] value 39
+ inst [40 or "40"] value 40
+ inst [41 or "41"] value 41
+ inst [42 or "42"] value 42
+ inst [43 or "43"] value 43
+ inst [44 or "44"] value 44
+ inst [45 or "45"] value 45
+ inst [46 or "46"] value 46
+ inst [47 or "47"] value 47
+ inst [48 or "48"] value 48
+ inst [49 or "49"] value 49
+ inst [50 or "50"] value 50
+ inst [51 or "51"] value 51
+ inst [52 or "52"] value 52
+ inst [53 or "53"] value 53
+ inst [54 or "54"] value 54
+ inst [55 or "55"] value 55
+ inst [56 or "56"] value 56
+ inst [57 or "57"] value 57
+ inst [58 or "58"] value 58
+ inst [59 or "59"] value 59
+ inst [60 or "60"] value 60
+ inst [61 or "61"] value 61
+ inst [62 or "62"] value 62
+ inst [63 or "63"] value 63
+ inst [64 or "64"] value 64
+ inst [65 or "65"] value 65
+ inst [66 or "66"] value 66
+ inst [67 or "67"] value 67
+ inst [68 or "68"] value 68
+ inst [69 or "69"] value 69
+ inst [70 or "70"] value 70
+ inst [71 or "71"] value 71
+ inst [72 or "72"] value 72
+ inst [73 or "73"] value 73
+ inst [74 or "74"] value 74
+ inst [75 or "75"] value 75
+ inst [76 or "76"] value 76
+ inst [77 or "77"] value 77
+ inst [78 or "78"] value 78
+ inst [79 or "79"] value 79
+ inst [80 or "80"] value 80
+ inst [81 or "81"] value 81
+ inst [82 or "82"] value 82
+ inst [83 or "83"] value 83
+ inst [84 or "84"] value 84
+ inst [85 or "85"] value 85
+ inst [86 or "86"] value 86
+ inst [87 or "87"] value 87
+ inst [88 or "88"] value 88
+ inst [89 or "89"] value 89
+ inst [90 or "90"] value 90
+ inst [91 or "91"] value 91
+ inst [92 or "92"] value 92
+ inst [93 or "93"] value 93
+ inst [94 or "94"] value 94
+ inst [95 or "95"] value 95
+ inst [96 or "96"] value 96
+ inst [97 or "97"] value 97
+ inst [98 or "98"] value 98
+ inst [99 or "99"] value 99
+ inst [100 or "100"] value 100
+ inst [101 or "101"] value 101
+ inst [102 or "102"] value 102
+ inst [103 or "103"] value 103
+ inst [104 or "104"] value 104
+ inst [105 or "105"] value 105
+ inst [106 or "106"] value 106
+ inst [107 or "107"] value 107
+ inst [108 or "108"] value 108
+ inst [109 or "109"] value 109
+ inst [110 or "110"] value 110
+ inst [111 or "111"] value 111
+ inst [112 or "112"] value 112
+ inst [113 or "113"] value 113
+ inst [114 or "114"] value 114
+ inst [115 or "115"] value 115
+ inst [116 or "116"] value 116
+ inst [117 or "117"] value 117
+ inst [118 or "118"] value 118
+ inst [119 or "119"] value 119
+ inst [120 or "120"] value 120
+ inst [121 or "121"] value 121
+ inst [122 or "122"] value 122
+ inst [123 or "123"] value 123
+ inst [124 or "124"] value 124
+ inst [125 or "125"] value 125
+ inst [126 or "126"] value 126
+ inst [127 or "127"] value 127
+ inst [128 or "128"] value 128
+ inst [129 or "129"] value 129
+ inst [130 or "130"] value 130
+ inst [131 or "131"] value 131
+ inst [132 or "132"] value 132
+ inst [133 or "133"] value 133
+ inst [134 or "134"] value 134
+ inst [135 or "135"] value 135
+ inst [136 or "136"] value 136
+ inst [137 or "137"] value 137
+ inst [138 or "138"] value 138
+ inst [139 or "139"] value 139
+ inst [140 or "140"] value 140
+ inst [141 or "141"] value 141
+ inst [142 or "142"] value 142
+ inst [143 or "143"] value 143
+ inst [144 or "144"] value 144
+ inst [145 or "145"] value 145
+ inst [146 or "146"] value 146
+ inst [147 or "147"] value 147
+ inst [148 or "148"] value 148
+ inst [149 or "149"] value 149
+ inst [150 or "150"] value 150
+ inst [151 or "151"] value 151
+ inst [152 or "152"] value 152
+ inst [153 or "153"] value 153
+ inst [154 or "154"] value 154
+ inst [155 or "155"] value 155
+ inst [156 or "156"] value 156
+ inst [157 or "157"] value 157
+ inst [158 or "158"] value 158
+ inst [159 or "159"] value 159
+ inst [160 or "160"] value 160
+ inst [161 or "161"] value 161
+ inst [162 or "162"] value 162
+ inst [163 or "163"] value 163
+ inst [164 or "164"] value 164
+ inst [165 or "165"] value 165
+ inst [166 or "166"] value 166
+ inst [167 or "167"] value 167
+ inst [168 or "168"] value 168
+ inst [169 or "169"] value 169
+ inst [170 or "170"] value 170
+ inst [171 or "171"] value 171
+ inst [172 or "172"] value 172
+ inst [173 or "173"] value 173
+ inst [174 or "174"] value 174
+ inst [175 or "175"] value 175
+ inst [176 or "176"] value 176
+ inst [177 or "177"] value 177
+ inst [178 or "178"] value 178
+ inst [179 or "179"] value 179
+ inst [180 or "180"] value 180
+ inst [181 or "181"] value 181
+ inst [182 or "182"] value 182
+ inst [183 or "183"] value 183
+ inst [184 or "184"] value 184
+ inst [185 or "185"] value 185
+ inst [186 or "186"] value 186
+ inst [187 or "187"] value 187
+ inst [188 or "188"] value 188
+ inst [189 or "189"] value 189
+ inst [190 or "190"] value 190
+ inst [191 or "191"] value 191
+ inst [192 or "192"] value 192
+ inst [193 or "193"] value 193
+ inst [194 or "194"] value 194
+ inst [195 or "195"] value 195
+ inst [196 or "196"] value 196
+ inst [197 or "197"] value 197
+ inst [198 or "198"] value 198
+ inst [199 or "199"] value 199
+ inst [200 or "200"] value 200
+ inst [201 or "201"] value 201
+ inst [202 or "202"] value 202
+ inst [203 or "203"] value 203
+ inst [204 or "204"] value 204
+ inst [205 or "205"] value 205
+ inst [206 or "206"] value 206
+ inst [207 or "207"] value 207
+ inst [208 or "208"] value 208
+ inst [209 or "209"] value 209
+ inst [210 or "210"] value 210
+ inst [211 or "211"] value 211
+ inst [212 or "212"] value 212
+ inst [213 or "213"] value 213
+ inst [214 or "214"] value 214
+ inst [215 or "215"] value 215
+ inst [216 or "216"] value 216
+ inst [217 or "217"] value 217
+ inst [218 or "218"] value 218
+ inst [219 or "219"] value 219
+ inst [220 or "220"] value 220
+ inst [221 or "221"] value 221
+ inst [222 or "222"] value 222
+ inst [223 or "223"] value 223
+ inst [224 or "224"] value 224
+ inst [225 or "225"] value 225
+ inst [226 or "226"] value 226
+ inst [227 or "227"] value 227
+ inst [228 or "228"] value 228
+ inst [229 or "229"] value 229
+ inst [230 or "230"] value 230
+ inst [231 or "231"] value 231
+ inst [232 or "232"] value 232
+ inst [233 or "233"] value 233
+ inst [234 or "234"] value 234
+ inst [235 or "235"] value 235
+ inst [236 or "236"] value 236
+ inst [237 or "237"] value 237
+ inst [238 or "238"] value 238
+ inst [239 or "239"] value 239
+ inst [240 or "240"] value 240
+ inst [241 or "241"] value 241
+ inst [242 or "242"] value 242
+ inst [243 or "243"] value 243
+ inst [244 or "244"] value 244
+ inst [245 or "245"] value 245
+ inst [246 or "246"] value 246
+ inst [247 or "247"] value 247
+ inst [248 or "248"] value 248
+ inst [249 or "249"] value 249
+ inst [250 or "250"] value 250
+ inst [251 or "251"] value 251
+ inst [252 or "252"] value 252
+ inst [253 or "253"] value 253
+ inst [254 or "254"] value 254
+ inst [255 or "255"] value 255
+ inst [256 or "256"] value 256
+ inst [257 or "257"] value 257
+ inst [258 or "258"] value 258
+ inst [259 or "259"] value 259
+ inst [260 or "260"] value 260
+ inst [261 or "261"] value 261
+ inst [262 or "262"] value 262
+ inst [263 or "263"] value 263
+ inst [264 or "264"] value 264
+ inst [265 or "265"] value 265
+ inst [266 or "266"] value 266
+ inst [267 or "267"] value 267
+ inst [268 or "268"] value 268
+ inst [269 or "269"] value 269
+ inst [270 or "270"] value 270
+ inst [271 or "271"] value 271
+ inst [272 or "272"] value 272
+ inst [273 or "273"] value 273
+ inst [274 or "274"] value 274
+ inst [275 or "275"] value 275
+ inst [276 or "276"] value 276
+ inst [277 or "277"] value 277
+ inst [278 or "278"] value 278
+ inst [279 or "279"] value 279
+ inst [280 or "280"] value 280
+ inst [281 or "281"] value 281
+ inst [282 or "282"] value 282
+ inst [283 or "283"] value 283
+ inst [284 or "284"] value 284
+ inst [285 or "285"] value 285
+ inst [286 or "286"] value 286
+ inst [287 or "287"] value 287
+ inst [288 or "288"] value 288
+ inst [289 or "289"] value 289
+ inst [290 or "290"] value 290
+ inst [291 or "291"] value 291
+ inst [292 or "292"] value 292
+ inst [293 or "293"] value 293
+ inst [294 or "294"] value 294
+ inst [295 or "295"] value 295
+ inst [296 or "296"] value 296
+ inst [297 or "297"] value 297
+ inst [298 or "298"] value 298
+ inst [299 or "299"] value 299
+ inst [300 or "300"] value 300
+ inst [301 or "301"] value 301
+ inst [302 or "302"] value 302
+ inst [303 or "303"] value 303
+ inst [304 or "304"] value 304
+ inst [305 or "305"] value 305
+ inst [306 or "306"] value 306
+ inst [307 or "307"] value 307
+ inst [308 or "308"] value 308
+ inst [309 or "309"] value 309
+ inst [310 or "310"] value 310
+ inst [311 or "311"] value 311
+ inst [312 or "312"] value 312
+ inst [313 or "313"] value 313
+ inst [314 or "314"] value 314
+ inst [315 or "315"] value 315
+ inst [316 or "316"] value 316
+ inst [317 or "317"] value 317
+ inst [318 or "318"] value 318
+ inst [319 or "319"] value 319
+ inst [320 or "320"] value 320
+ inst [321 or "321"] value 321
+ inst [322 or "322"] value 322
+ inst [323 or "323"] value 323
+ inst [324 or "324"] value 324
+ inst [325 or "325"] value 325
+ inst [326 or "326"] value 326
+ inst [327 or "327"] value 327
+ inst [328 or "328"] value 328
+ inst [329 or "329"] value 329
+ inst [330 or "330"] value 330
+ inst [331 or "331"] value 331
+ inst [332 or "332"] value 332
+ inst [333 or "333"] value 333
+ inst [334 or "334"] value 334
+ inst [335 or "335"] value 335
+ inst [336 or "336"] value 336
+ inst [337 or "337"] value 337
+ inst [338 or "338"] value 338
+ inst [339 or "339"] value 339
+ inst [340 or "340"] value 340
+ inst [341 or "341"] value 341
+ inst [342 or "342"] value 342
+ inst [343 or "343"] value 343
+ inst [344 or "344"] value 344
+ inst [345 or "345"] value 345
+ inst [346 or "346"] value 346
+ inst [347 or "347"] value 347
+ inst [348 or "348"] value 348
+ inst [349 or "349"] value 349
+ inst [350 or "350"] value 350
+ inst [351 or "351"] value 351
+ inst [352 or "352"] value 352
+ inst [353 or "353"] value 353
+ inst [354 or "354"] value 354
+ inst [355 or "355"] value 355
+ inst [356 or "356"] value 356
+ inst [357 or "357"] value 357
+ inst [358 or "358"] value 358
+ inst [359 or "359"] value 359
+ inst [360 or "360"] value 360
+ inst [361 or "361"] value 361
+ inst [362 or "362"] value 362
+ inst [363 or "363"] value 363
+ inst [364 or "364"] value 364
+ inst [365 or "365"] value 365
+ inst [366 or "366"] value 366
+ inst [367 or "367"] value 367
+ inst [368 or "368"] value 368
+ inst [369 or "369"] value 369
+ inst [370 or "370"] value 370
+ inst [371 or "371"] value 371
+ inst [372 or "372"] value 372
+ inst [373 or "373"] value 373
+ inst [374 or "374"] value 374
+ inst [375 or "375"] value 375
+ inst [376 or "376"] value 376
+ inst [377 or "377"] value 377
+ inst [378 or "378"] value 378
+ inst [379 or "379"] value 379
+ inst [380 or "380"] value 380
+ inst [381 or "381"] value 381
+ inst [382 or "382"] value 382
+ inst [383 or "383"] value 383
+ inst [384 or "384"] value 384
+ inst [385 or "385"] value 385
+ inst [386 or "386"] value 386
+ inst [387 or "387"] value 387
+ inst [388 or "388"] value 388
+ inst [389 or "389"] value 389
+ inst [390 or "390"] value 390
+ inst [391 or "391"] value 391
+ inst [392 or "392"] value 392
+ inst [393 or "393"] value 393
+ inst [394 or "394"] value 394
+ inst [395 or "395"] value 395
+ inst [396 or "396"] value 396
+ inst [397 or "397"] value 397
+ inst [398 or "398"] value 398
+ inst [399 or "399"] value 399
+ inst [400 or "400"] value 400
+ inst [401 or "401"] value 401
+ inst [402 or "402"] value 402
+ inst [403 or "403"] value 403
+ inst [404 or "404"] value 404
+ inst [405 or "405"] value 405
+ inst [406 or "406"] value 406
+ inst [407 or "407"] value 407
+ inst [408 or "408"] value 408
+ inst [409 or "409"] value 409
+ inst [410 or "410"] value 410
+ inst [411 or "411"] value 411
+ inst [412 or "412"] value 412
+ inst [413 or "413"] value 413
+ inst [414 or "414"] value 414
+ inst [415 or "415"] value 415
+ inst [416 or "416"] value 416
+ inst [417 or "417"] value 417
+ inst [418 or "418"] value 418
+ inst [419 or "419"] value 419
+ inst [420 or "420"] value 420
+ inst [421 or "421"] value 421
+ inst [422 or "422"] value 422
+ inst [423 or "423"] value 423
+ inst [424 or "424"] value 424
+ inst [425 or "425"] value 425
+ inst [426 or "426"] value 426
+ inst [427 or "427"] value 427
+ inst [428 or "428"] value 428
+ inst [429 or "429"] value 429
+ inst [430 or "430"] value 430
+ inst [431 or "431"] value 431
+ inst [432 or "432"] value 432
+ inst [433 or "433"] value 433
+ inst [434 or "434"] value 434
+ inst [435 or "435"] value 435
+ inst [436 or "436"] value 436
+ inst [437 or "437"] value 437
+ inst [438 or "438"] value 438
+ inst [439 or "439"] value 439
+ inst [440 or "440"] value 440
+ inst [441 or "441"] value 441
+ inst [442 or "442"] value 442
+ inst [443 or "443"] value 443
+ inst [444 or "444"] value 444
+ inst [445 or "445"] value 445
+ inst [446 or "446"] value 446
+ inst [447 or "447"] value 447
+ inst [448 or "448"] value 448
+ inst [449 or "449"] value 449
+ inst [450 or "450"] value 450
+ inst [451 or "451"] value 451
+ inst [452 or "452"] value 452
+ inst [453 or "453"] value 453
+ inst [454 or "454"] value 454
+ inst [455 or "455"] value 455
+ inst [456 or "456"] value 456
+ inst [457 or "457"] value 457
+ inst [458 or "458"] value 458
+ inst [459 or "459"] value 459
+ inst [460 or "460"] value 460
+ inst [461 or "461"] value 461
+ inst [462 or "462"] value 462
+ inst [463 or "463"] value 463
+ inst [464 or "464"] value 464
+ inst [465 or "465"] value 465
+ inst [466 or "466"] value 466
+ inst [467 or "467"] value 467
+ inst [468 or "468"] value 468
+ inst [469 or "469"] value 469
+ inst [470 or "470"] value 470
+ inst [471 or "471"] value 471
+ inst [472 or "472"] value 472
+ inst [473 or "473"] value 473
+ inst [474 or "474"] value 474
+ inst [475 or "475"] value 475
+ inst [476 or "476"] value 476
+ inst [477 or "477"] value 477
+ inst [478 or "478"] value 478
+ inst [479 or "479"] value 479
+ inst [480 or "480"] value 480
+ inst [481 or "481"] value 481
+ inst [482 or "482"] value 482
+ inst [483 or "483"] value 483
+ inst [484 or "484"] value 484
+ inst [485 or "485"] value 485
+ inst [486 or "486"] value 486
+ inst [487 or "487"] value 487
+ inst [488 or "488"] value 488
+ inst [489 or "489"] value 489
+ inst [490 or "490"] value 490
+ inst [491 or "491"] value 491
+ inst [492 or "492"] value 492
+ inst [493 or "493"] value 493
+ inst [494 or "494"] value 494
+ inst [495 or "495"] value 495
+ inst [496 or "496"] value 496
+ inst [497 or "497"] value 497
+ inst [498 or "498"] value 498
+ inst [499 or "499"] value 499
+
+sample.hordes.two
+ inst [0 or "0"] value 499
+ inst [1 or "1"] value 498
+ inst [2 or "2"] value 497
+ inst [3 or "3"] value 496
+ inst [4 or "4"] value 495
+ inst [5 or "5"] value 494
+ inst [6 or "6"] value 493
+ inst [7 or "7"] value 492
+ inst [8 or "8"] value 491
+ inst [9 or "9"] value 490
+ inst [10 or "10"] value 489
+ inst [11 or "11"] value 488
+ inst [12 or "12"] value 487
+ inst [13 or "13"] value 486
+ inst [14 or "14"] value 485
+ inst [15 or "15"] value 484
+ inst [16 or "16"] value 483
+ inst [17 or "17"] value 482
+ inst [18 or "18"] value 481
+ inst [19 or "19"] value 480
+ inst [20 or "20"] value 479
+ inst [21 or "21"] value 478
+ inst [22 or "22"] value 477
+ inst [23 or "23"] value 476
+ inst [24 or "24"] value 475
+ inst [25 or "25"] value 474
+ inst [26 or "26"] value 473
+ inst [27 or "27"] value 472
+ inst [28 or "28"] value 471
+ inst [29 or "29"] value 470
+ inst [30 or "30"] value 469
+ inst [31 or "31"] value 468
+ inst [32 or "32"] value 467
+ inst [33 or "33"] value 466
+ inst [34 or "34"] value 465
+ inst [35 or "35"] value 464
+ inst [36 or "36"] value 463
+ inst [37 or "37"] value 462
+ inst [38 or "38"] value 461
+ inst [39 or "39"] value 460
+ inst [40 or "40"] value 459
+ inst [41 or "41"] value 458
+ inst [42 or "42"] value 457
+ inst [43 or "43"] value 456
+ inst [44 or "44"] value 455
+ inst [45 or "45"] value 454
+ inst [46 or "46"] value 453
+ inst [47 or "47"] value 452
+ inst [48 or "48"] value 451
+ inst [49 or "49"] value 450
+ inst [50 or "50"] value 449
+ inst [51 or "51"] value 448
+ inst [52 or "52"] value 447
+ inst [53 or "53"] value 446
+ inst [54 or "54"] value 445
+ inst [55 or "55"] value 444
+ inst [56 or "56"] value 443
+ inst [57 or "57"] value 442
+ inst [58 or "58"] value 441
+ inst [59 or "59"] value 440
+ inst [60 or "60"] value 439
+ inst [61 or "61"] value 438
+ inst [62 or "62"] value 437
+ inst [63 or "63"] value 436
+ inst [64 or "64"] value 435
+ inst [65 or "65"] value 434
+ inst [66 or "66"] value 433
+ inst [67 or "67"] value 432
+ inst [68 or "68"] value 431
+ inst [69 or "69"] value 430
+ inst [70 or "70"] value 429
+ inst [71 or "71"] value 428
+ inst [72 or "72"] value 427
+ inst [73 or "73"] value 426
+ inst [74 or "74"] value 425
+ inst [75 or "75"] value 424
+ inst [76 or "76"] value 423
+ inst [77 or "77"] value 422
+ inst [78 or "78"] value 421
+ inst [79 or "79"] value 420
+ inst [80 or "80"] value 419
+ inst [81 or "81"] value 418
+ inst [82 or "82"] value 417
+ inst [83 or "83"] value 416
+ inst [84 or "84"] value 415
+ inst [85 or "85"] value 414
+ inst [86 or "86"] value 413
+ inst [87 or "87"] value 412
+ inst [88 or "88"] value 411
+ inst [89 or "89"] value 410
+ inst [90 or "90"] value 409
+ inst [91 or "91"] value 408
+ inst [92 or "92"] value 407
+ inst [93 or "93"] value 406
+ inst [94 or "94"] value 405
+ inst [95 or "95"] value 404
+ inst [96 or "96"] value 403
+ inst [97 or "97"] value 402
+ inst [98 or "98"] value 401
+ inst [99 or "99"] value 400
+ inst [100 or "100"] value 399
+ inst [101 or "101"] value 398
+ inst [102 or "102"] value 397
+ inst [103 or "103"] value 396
+ inst [104 or "104"] value 395
+ inst [105 or "105"] value 394
+ inst [106 or "106"] value 393
+ inst [107 or "107"] value 392
+ inst [108 or "108"] value 391
+ inst [109 or "109"] value 390
+ inst [110 or "110"] value 389
+ inst [111 or "111"] value 388
+ inst [112 or "112"] value 387
+ inst [113 or "113"] value 386
+ inst [114 or "114"] value 385
+ inst [115 or "115"] value 384
+ inst [116 or "116"] value 383
+ inst [117 or "117"] value 382
+ inst [118 or "118"] value 381
+ inst [119 or "119"] value 380
+ inst [120 or "120"] value 379
+ inst [121 or "121"] value 378
+ inst [122 or "122"] value 377
+ inst [123 or "123"] value 376
+ inst [124 or "124"] value 375
+ inst [125 or "125"] value 374
+ inst [126 or "126"] value 373
+ inst [127 or "127"] value 372
+ inst [128 or "128"] value 371
+ inst [129 or "129"] value 370
+ inst [130 or "130"] value 369
+ inst [131 or "131"] value 368
+ inst [132 or "132"] value 367
+ inst [133 or "133"] value 366
+ inst [134 or "134"] value 365
+ inst [135 or "135"] value 364
+ inst [136 or "136"] value 363
+ inst [137 or "137"] value 362
+ inst [138 or "138"] value 361
+ inst [139 or "139"] value 360
+ inst [140 or "140"] value 359
+ inst [141 or "141"] value 358
+ inst [142 or "142"] value 357
+ inst [143 or "143"] value 356
+ inst [144 or "144"] value 355
+ inst [145 or "145"] value 354
+ inst [146 or "146"] value 353
+ inst [147 or "147"] value 352
+ inst [148 or "148"] value 351
+ inst [149 or "149"] value 350
+ inst [150 or "150"] value 349
+ inst [151 or "151"] value 348
+ inst [152 or "152"] value 347
+ inst [153 or "153"] value 346
+ inst [154 or "154"] value 345
+ inst [155 or "155"] value 344
+ inst [156 or "156"] value 343
+ inst [157 or "157"] value 342
+ inst [158 or "158"] value 341
+ inst [159 or "159"] value 340
+ inst [160 or "160"] value 339
+ inst [161 or "161"] value 338
+ inst [162 or "162"] value 337
+ inst [163 or "163"] value 336
+ inst [164 or "164"] value 335
+ inst [165 or "165"] value 334
+ inst [166 or "166"] value 333
+ inst [167 or "167"] value 332
+ inst [168 or "168"] value 331
+ inst [169 or "169"] value 330
+ inst [170 or "170"] value 329
+ inst [171 or "171"] value 328
+ inst [172 or "172"] value 327
+ inst [173 or "173"] value 326
+ inst [174 or "174"] value 325
+ inst [175 or "175"] value 324
+ inst [176 or "176"] value 323
+ inst [177 or "177"] value 322
+ inst [178 or "178"] value 321
+ inst [179 or "179"] value 320
+ inst [180 or "180"] value 319
+ inst [181 or "181"] value 318
+ inst [182 or "182"] value 317
+ inst [183 or "183"] value 316
+ inst [184 or "184"] value 315
+ inst [185 or "185"] value 314
+ inst [186 or "186"] value 313
+ inst [187 or "187"] value 312
+ inst [188 or "188"] value 311
+ inst [189 or "189"] value 310
+ inst [190 or "190"] value 309
+ inst [191 or "191"] value 308
+ inst [192 or "192"] value 307
+ inst [193 or "193"] value 306
+ inst [194 or "194"] value 305
+ inst [195 or "195"] value 304
+ inst [196 or "196"] value 303
+ inst [197 or "197"] value 302
+ inst [198 or "198"] value 301
+ inst [199 or "199"] value 300
+ inst [200 or "200"] value 299
+ inst [201 or "201"] value 298
+ inst [202 or "202"] value 297
+ inst [203 or "203"] value 296
+ inst [204 or "204"] value 295
+ inst [205 or "205"] value 294
+ inst [206 or "206"] value 293
+ inst [207 or "207"] value 292
+ inst [208 or "208"] value 291
+ inst [209 or "209"] value 290
+ inst [210 or "210"] value 289
+ inst [211 or "211"] value 288
+ inst [212 or "212"] value 287
+ inst [213 or "213"] value 286
+ inst [214 or "214"] value 285
+ inst [215 or "215"] value 284
+ inst [216 or "216"] value 283
+ inst [217 or "217"] value 282
+ inst [218 or "218"] value 281
+ inst [219 or "219"] value 280
+ inst [220 or "220"] value 279
+ inst [221 or "221"] value 278
+ inst [222 or "222"] value 277
+ inst [223 or "223"] value 276
+ inst [224 or "224"] value 275
+ inst [225 or "225"] value 274
+ inst [226 or "226"] value 273
+ inst [227 or "227"] value 272
+ inst [228 or "228"] value 271
+ inst [229 or "229"] value 270
+ inst [230 or "230"] value 269
+ inst [231 or "231"] value 268
+ inst [232 or "232"] value 267
+ inst [233 or "233"] value 266
+ inst [234 or "234"] value 265
+ inst [235 or "235"] value 264
+ inst [236 or "236"] value 263
+ inst [237 or "237"] value 262
+ inst [238 or "238"] value 261
+ inst [239 or "239"] value 260
+ inst [240 or "240"] value 259
+ inst [241 or "241"] value 258
+ inst [242 or "242"] value 257
+ inst [243 or "243"] value 256
+ inst [244 or "244"] value 255
+ inst [245 or "245"] value 254
+ inst [246 or "246"] value 253
+ inst [247 or "247"] value 252
+ inst [248 or "248"] value 251
+ inst [249 or "249"] value 250
+ inst [250 or "250"] value 249
+ inst [251 or "251"] value 248
+ inst [252 or "252"] value 247
+ inst [253 or "253"] value 246
+ inst [254 or "254"] value 245
+ inst [255 or "255"] value 244
+ inst [256 or "256"] value 243
+ inst [257 or "257"] value 242
+ inst [258 or "258"] value 241
+ inst [259 or "259"] value 240
+ inst [260 or "260"] value 239
+ inst [261 or "261"] value 238
+ inst [262 or "262"] value 237
+ inst [263 or "263"] value 236
+ inst [264 or "264"] value 235
+ inst [265 or "265"] value 234
+ inst [266 or "266"] value 233
+ inst [267 or "267"] value 232
+ inst [268 or "268"] value 231
+ inst [269 or "269"] value 230
+ inst [270 or "270"] value 229
+ inst [271 or "271"] value 228
+ inst [272 or "272"] value 227
+ inst [273 or "273"] value 226
+ inst [274 or "274"] value 225
+ inst [275 or "275"] value 224
+ inst [276 or "276"] value 223
+ inst [277 or "277"] value 222
+ inst [278 or "278"] value 221
+ inst [279 or "279"] value 220
+ inst [280 or "280"] value 219
+ inst [281 or "281"] value 218
+ inst [282 or "282"] value 217
+ inst [283 or "283"] value 216
+ inst [284 or "284"] value 215
+ inst [285 or "285"] value 214
+ inst [286 or "286"] value 213
+ inst [287 or "287"] value 212
+ inst [288 or "288"] value 211
+ inst [289 or "289"] value 210
+ inst [290 or "290"] value 209
+ inst [291 or "291"] value 208
+ inst [292 or "292"] value 207
+ inst [293 or "293"] value 206
+ inst [294 or "294"] value 205
+ inst [295 or "295"] value 204
+ inst [296 or "296"] value 203
+ inst [297 or "297"] value 202
+ inst [298 or "298"] value 201
+ inst [299 or "299"] value 200
+ inst [300 or "300"] value 199
+ inst [301 or "301"] value 198
+ inst [302 or "302"] value 197
+ inst [303 or "303"] value 196
+ inst [304 or "304"] value 195
+ inst [305 or "305"] value 194
+ inst [306 or "306"] value 193
+ inst [307 or "307"] value 192
+ inst [308 or "308"] value 191
+ inst [309 or "309"] value 190
+ inst [310 or "310"] value 189
+ inst [311 or "311"] value 188
+ inst [312 or "312"] value 187
+ inst [313 or "313"] value 186
+ inst [314 or "314"] value 185
+ inst [315 or "315"] value 184
+ inst [316 or "316"] value 183
+ inst [317 or "317"] value 182
+ inst [318 or "318"] value 181
+ inst [319 or "319"] value 180
+ inst [320 or "320"] value 179
+ inst [321 or "321"] value 178
+ inst [322 or "322"] value 177
+ inst [323 or "323"] value 176
+ inst [324 or "324"] value 175
+ inst [325 or "325"] value 174
+ inst [326 or "326"] value 173
+ inst [327 or "327"] value 172
+ inst [328 or "328"] value 171
+ inst [329 or "329"] value 170
+ inst [330 or "330"] value 169
+ inst [331 or "331"] value 168
+ inst [332 or "332"] value 167
+ inst [333 or "333"] value 166
+ inst [334 or "334"] value 165
+ inst [335 or "335"] value 164
+ inst [336 or "336"] value 163
+ inst [337 or "337"] value 162
+ inst [338 or "338"] value 161
+ inst [339 or "339"] value 160
+ inst [340 or "340"] value 159
+ inst [341 or "341"] value 158
+ inst [342 or "342"] value 157
+ inst [343 or "343"] value 156
+ inst [344 or "344"] value 155
+ inst [345 or "345"] value 154
+ inst [346 or "346"] value 153
+ inst [347 or "347"] value 152
+ inst [348 or "348"] value 151
+ inst [349 or "349"] value 150
+ inst [350 or "350"] value 149
+ inst [351 or "351"] value 148
+ inst [352 or "352"] value 147
+ inst [353 or "353"] value 146
+ inst [354 or "354"] value 145
+ inst [355 or "355"] value 144
+ inst [356 or "356"] value 143
+ inst [357 or "357"] value 142
+ inst [358 or "358"] value 141
+ inst [359 or "359"] value 140
+ inst [360 or "360"] value 139
+ inst [361 or "361"] value 138
+ inst [362 or "362"] value 137
+ inst [363 or "363"] value 136
+ inst [364 or "364"] value 135
+ inst [365 or "365"] value 134
+ inst [366 or "366"] value 133
+ inst [367 or "367"] value 132
+ inst [368 or "368"] value 131
+ inst [369 or "369"] value 130
+ inst [370 or "370"] value 129
+ inst [371 or "371"] value 128
+ inst [372 or "372"] value 127
+ inst [373 or "373"] value 126
+ inst [374 or "374"] value 125
+ inst [375 or "375"] value 124
+ inst [376 or "376"] value 123
+ inst [377 or "377"] value 122
+ inst [378 or "378"] value 121
+ inst [379 or "379"] value 120
+ inst [380 or "380"] value 119
+ inst [381 or "381"] value 118
+ inst [382 or "382"] value 117
+ inst [383 or "383"] value 116
+ inst [384 or "384"] value 115
+ inst [385 or "385"] value 114
+ inst [386 or "386"] value 113
+ inst [387 or "387"] value 112
+ inst [388 or "388"] value 111
+ inst [389 or "389"] value 110
+ inst [390 or "390"] value 109
+ inst [391 or "391"] value 108
+ inst [392 or "392"] value 107
+ inst [393 or "393"] value 106
+ inst [394 or "394"] value 105
+ inst [395 or "395"] value 104
+ inst [396 or "396"] value 103
+ inst [397 or "397"] value 102
+ inst [398 or "398"] value 101
+ inst [399 or "399"] value 100
+ inst [400 or "400"] value 99
+ inst [401 or "401"] value 98
+ inst [402 or "402"] value 97
+ inst [403 or "403"] value 96
+ inst [404 or "404"] value 95
+ inst [405 or "405"] value 94
+ inst [406 or "406"] value 93
+ inst [407 or "407"] value 92
+ inst [408 or "408"] value 91
+ inst [409 or "409"] value 90
+ inst [410 or "410"] value 89
+ inst [411 or "411"] value 88
+ inst [412 or "412"] value 87
+ inst [413 or "413"] value 86
+ inst [414 or "414"] value 85
+ inst [415 or "415"] value 84
+ inst [416 or "416"] value 83
+ inst [417 or "417"] value 82
+ inst [418 or "418"] value 81
+ inst [419 or "419"] value 80
+ inst [420 or "420"] value 79
+ inst [421 or "421"] value 78
+ inst [422 or "422"] value 77
+ inst [423 or "423"] value 76
+ inst [424 or "424"] value 75
+ inst [425 or "425"] value 74
+ inst [426 or "426"] value 73
+ inst [427 or "427"] value 72
+ inst [428 or "428"] value 71
+ inst [429 or "429"] value 70
+ inst [430 or "430"] value 69
+ inst [431 or "431"] value 68
+ inst [432 or "432"] value 67
+ inst [433 or "433"] value 66
+ inst [434 or "434"] value 65
+ inst [435 or "435"] value 64
+ inst [436 or "436"] value 63
+ inst [437 or "437"] value 62
+ inst [438 or "438"] value 61
+ inst [439 or "439"] value 60
+ inst [440 or "440"] value 59
+ inst [441 or "441"] value 58
+ inst [442 or "442"] value 57
+ inst [443 or "443"] value 56
+ inst [444 or "444"] value 55
+ inst [445 or "445"] value 54
+ inst [446 or "446"] value 53
+ inst [447 or "447"] value 52
+ inst [448 or "448"] value 51
+ inst [449 or "449"] value 50
+ inst [450 or "450"] value 49
+ inst [451 or "451"] value 48
+ inst [452 or "452"] value 47
+ inst [453 or "453"] value 46
+ inst [454 or "454"] value 45
+ inst [455 or "455"] value 44
+ inst [456 or "456"] value 43
+ inst [457 or "457"] value 42
+ inst [458 or "458"] value 41
+ inst [459 or "459"] value 40
+ inst [460 or "460"] value 39
+ inst [461 or "461"] value 38
+ inst [462 or "462"] value 37
+ inst [463 or "463"] value 36
+ inst [464 or "464"] value 35
+ inst [465 or "465"] value 34
+ inst [466 or "466"] value 33
+ inst [467 or "467"] value 32
+ inst [468 or "468"] value 31
+ inst [469 or "469"] value 30
+ inst [470 or "470"] value 29
+ inst [471 or "471"] value 28
+ inst [472 or "472"] value 27
+ inst [473 or "473"] value 26
+ inst [474 or "474"] value 25
+ inst [475 or "475"] value 24
+ inst [476 or "476"] value 23
+ inst [477 or "477"] value 22
+ inst [478 or "478"] value 21
+ inst [479 or "479"] value 20
+ inst [480 or "480"] value 19
+ inst [481 or "481"] value 18
+ inst [482 or "482"] value 17
+ inst [483 or "483"] value 16
+ inst [484 or "484"] value 15
+ inst [485 or "485"] value 14
+ inst [486 or "486"] value 13
+ inst [487 or "487"] value 12
+ inst [488 or "488"] value 11
+ inst [489 or "489"] value 10
+ inst [490 or "490"] value 9
+ inst [491 or "491"] value 8
+ inst [492 or "492"] value 7
+ inst [493 or "493"] value 6
+ inst [494 or "494"] value 5
+ inst [495 or "495"] value 4
+ inst [496 or "496"] value 3
+ inst [497 or "497"] value 2
+ inst [498 or "498"] value 1
+ inst [499 or "499"] value 0
+2 connects
+2 disconnects
+
++++ pmprobe -v -h MY_HOSTNAME hinv.ncpu +++
+hinv.ncpu 1 N
+3 connects
+3 disconnects
+
++++ pmval -h MY_HOSTNAME -t 0.5 -s 3 sample.bin +++
+
+metric: sample.bin
+host: MY_HOSTNAME
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 0.50 sec
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ N N N N N N N N N
+ N N N N N N N N N
+ N N N N N N N N N
+4 connects
+4 disconnects
+
++++ pmie -h MY_HOSTNAME -c TMP.in -v -t 0.5 -T 1.5 +++
+expr_1: N N N
+
+expr_1: N N N
+
+expr_1: N N N
+
+expr_1: N N N
+
+[DATE] pmie(PID) Info: evaluator exiting
+7 connects
+7 disconnects
+
++++ pmie -h MY_HOSTNAME -c TMP.in -v -t 0.5 -T 1.5 +++
+expr_1: ?
+
+expr_1: N
+
+expr_1: N
+
+expr_1: N
+
+[DATE] pmie(PID) Info: evaluator exiting
+10 connects
+10 disconnects
+
++++ pmdumptext -h MY_HOSTNAME -t 0.5 -s 2 sample.string.hullo +++
+DATE "hullo world!"
+DATE "hullo world!"
+11 connects
+11 disconnects
+
++++ pmdumptext -t 0.5 -s 2 MY_HOSTNAME:sample.string.hullo +++
+DATE "hullo world!"
+DATE "hullo world!"
+12 connects
+12 disconnects
+
++++ pmdumptext -t 0.5 -s 2 MY_HOSTNAME:kernel.all.load +++
+DATE N N N
+DATE N N N
+13 connects
+13 disconnects
+
++++ pmstat -h MY_HOSTNAME -t 0.5 -s 2 +++
+@ DATE
+ loadavg memory swap io system cpu
+ 1 min swpd free buff cache si so bi bo in cs us sy id
+ N N N N N N N N N N N N N N
+ N N N N N N N N N N N N N N
+14 connects
+14 disconnects
+
++++ pmlogger -h MY_HOSTNAME -c TMP.logger.config -t 0.5sec -s 3 -l TMP.logger.log TMP.arch +++
+15 connects
+15 disconnects
+
++++ pmstat -S +0.25sec -t 0.5sec -a TMP.arch -z +++
+Note: timezone set to local timezone of host "MY_HOSTNAME" from archive
+
+@ DATE
+ loadavg memory swap io system cpu
+ 1 min swpd free buff cache si so bi bo in cs us sy id
+ N N N N N ? ? ? ? ? ? ? ? ?
+ N N N N N N N N N N N N N N
+ pmFetch: End of PCP archive log
+15 connects
+15 disconnects
diff --git a/qa/295 b/qa/295
new file mode 100755
index 0000000..8d398b6
--- /dev/null
+++ b/qa/295
@@ -0,0 +1,97 @@
+#! /bin/sh
+# PCP QA Test No. 295
+# verify pmproxy cleans up correctly when clients are terminated
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmproxy >/dev/null 2>&1 || _notrun "No pmproxy binary installed"
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3806 ]
+then
+ ln $seq.out.2 $seq.out
+else
+ ln $seq.out.1 $seq.out
+fi
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=0 # success is the default!
+username=`id -u -n`
+$sudo rm -rf $tmp.*
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ $sudo $signal -a pmproxy >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmproxy restart >/dev/null 2>&1
+}
+
+_filter_pmproxy()
+{
+ sed \
+ -e '/^__pmSetSocketIPC: fd=/d' \
+ -e '/^__pmSetDataIPC:/d' \
+ -e '/^__pmDataIPC: /d' \
+ -e '/^IPC table fd/d' \
+
+}
+
+_check()
+{
+ echo "`grep AcceptNewClient $tmp.log | wc -l | sed -e 's/ *//g'` connects"
+ echo "`grep DeleteClient $tmp.log | wc -l | sed -e 's/ *//g'` disconnects"
+}
+
+$sudo $PCP_RC_DIR/pmproxy stop >/dev/null 2>&1
+$sudo $signal -a pmproxy >/dev/null 2>&1
+
+proxyargs="-Dcontext"
+id pcp >/dev/null 2>&1 && proxyargs="$proxyargs -U $username"
+$PCP_BINADM_DIR/pmproxy $proxyargs -l $tmp.log 2>&1 | _filter_pmproxy
+
+PMPROXY_HOST=localhost
+export PMPROXY_HOST
+
+# real QA test starts here
+pidlist=`sh -c "pmval -h $PMPROXY_HOST hinv.ncpu >$tmp.1 2>&1 & echo \\\$!"`
+pid=`sh -c "pmstat -h $PMPROXY_HOST >$tmp.2 2>&1 & echo \\\$!"`
+pidlist="$pidlist $pid"
+echo "kernel.all.load;" >$tmp.in
+pid=`sh -c "pmie -v -h $PMPROXY_HOST -c $tmp.in >$tmp.3 2>&1 & echo \\\$!"`
+pidlist="$pidlist $pid"
+
+sleep 3
+
+echo all clients started
+echo "expect 4 connects and 1 disconnect, thanks to pmie"
+_check
+
+for pid in $pidlist
+do
+ echo
+ echo "kill off a client ..."
+ $signal -s KILL $pid
+ sleep 1
+ _check
+done
+
+echo "pmval output ..." >$seq.full
+cat $tmp.1 >>$seq.full
+echo >>$seq.full
+echo "pmstat output ..." >>$seq.full
+cat $tmp.2 >>$seq.full
+echo >>$seq.full
+echo "pmie output ..." >>$seq.full
+cat $tmp.3 >>$seq.full
+
+# success, all done
+exit
diff --git a/qa/295.out.1 b/qa/295.out.1
new file mode 100644
index 0000000..cf9ce0d
--- /dev/null
+++ b/qa/295.out.1
@@ -0,0 +1,17 @@
+QA output created by 295
+all clients started
+expect 4 connects and 1 disconnect, thanks to pmie
+4 connects
+1 disconnects
+
+kill off a client ...
+4 connects
+2 disconnects
+
+kill off a client ...
+4 connects
+3 disconnects
+
+kill off a client ...
+4 connects
+4 disconnects
diff --git a/qa/295.out.2 b/qa/295.out.2
new file mode 100644
index 0000000..6bf2012
--- /dev/null
+++ b/qa/295.out.2
@@ -0,0 +1,17 @@
+QA output created by 295
+all clients started
+expect 4 connects and 1 disconnect, thanks to pmie
+5 connects
+2 disconnects
+
+kill off a client ...
+5 connects
+3 disconnects
+
+kill off a client ...
+5 connects
+4 disconnects
+
+kill off a client ...
+5 connects
+5 disconnects
diff --git a/qa/296 b/qa/296
new file mode 100755
index 0000000..e01b1f0
--- /dev/null
+++ b/qa/296
@@ -0,0 +1,141 @@
+#! /bin/sh
+# PCP QA Test No. 296
+# daemon pmdas not exiting after unconfiguring them?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+signal=$PCP_BINADM_DIR/pmsignal
+LOCALHOST=`hostname`
+_needclean=true
+
+_interrupt()
+{
+ status=1
+}
+
+_cleanup()
+{
+ if $_needclean
+ then
+ echo
+ echo 'Restoring real pmcd.conf ...'
+ [ -f $tmp.pmcd.conf.save ] && \
+ $sudo mv $tmp.pmcd.conf.save $PCP_PMCDCONF_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf.save
+
+trap "_cleanup" 0
+trap "_interrupt; _cleanup" 1 2 3 15
+
+# real QA test starts here
+
+case $PCP_PLATFORM in
+linux|solaris)
+ cat <<End-of-File >$tmp.minconf
+# temporary pmcd.conf for qa/$seq
+#
+# Name Id IPC IPC Params File/Cmd
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+ ;;
+
+irix)
+ cat <<End-of-File >$tmp.minconf
+# temporary pmcd.conf for qa/$seq
+#
+# Name Id IPC IPC Params File/Cmd
+pmcd 2 dso pmcd_init pmda_pmcd.so
+End-of-File
+ ;;
+
+darwin)
+ cat <<End-of-File >$tmp.minconf
+# temporary pmcd.conf for qa/$seq
+#
+# Name Id IPC IPC Params File/Cmd
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+End-of-File
+ ;;
+
+*)
+ echo "Unknown platfrom $PCP_PLATFORM"
+ exit 1
+ ;;
+esac
+
+echo "start 11 daemon instances of the sample PMDA"
+cp $tmp.minconf $tmp.out
+cat <<End-of-File >>$tmp.out
+sample 9 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 9
+sample 19 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 19
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+sample 39 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 39
+sample 49 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 49
+sample 59 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 59
+sample 69 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 69
+sample 79 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 79
+sample 89 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 89
+sample 99 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 99
+sample 109 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 109
+End-of-File
+$sudo cp $tmp.out $PCP_PMCDCONF_PATH
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+ps $PCP_PS_ALL_FLAGS >$tmp.out
+num=`grep pmdasample $tmp.out | wc -l | sed -e 's/ //g'`
+if [ $num -ne 11 ]
+then
+ echo "Error: number of sample PMDAs? expect 11 got $num"
+ echo "=== ps $PCP_PS_ALL_FLAGS ==="
+ cat $tmp.out
+ echo "=== pmcd.log ==="
+ cat $PCP_PMCDLOG_PATH
+ status=1
+ exit
+else
+ echo "OK, 11 started"
+fi
+
+echo
+echo "unconfigure them all"
+$sudo cp $tmp.minconf $PCP_PMCDCONF_PATH
+$sudo $signal -a -s HUP pmcd
+sleep 5
+_wait_for_pmcd
+
+ps $PCP_PS_ALL_FLAGS >$tmp.out
+cp $tmp.out $seq.full
+num=`grep pmdasample $tmp.out | wc -l | sed -e 's/ //g'`
+if [ $num -ne 0 ]
+then
+ echo "Error: number of sample PMDAs? expect 11 got $num"
+ echo "=== ps $PCP_PS_ALL_FLAGS ==="
+ cat $tmp.out
+ echo "=== pmcd.log ==="
+ cat $PCP_PMCDLOG_PATH
+ status=1
+else
+ echo "OK, 0 remain"
+fi
+
+# all done
+exit
diff --git a/qa/296.out b/qa/296.out
new file mode 100644
index 0000000..85a51dd
--- /dev/null
+++ b/qa/296.out
@@ -0,0 +1,14 @@
+QA output created by 296
+start 11 daemon instances of the sample PMDA
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+OK, 11 started
+
+unconfigure them all
+OK, 0 remain
+
+Restoring real pmcd.conf ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/297 b/qa/297
new file mode 100755
index 0000000..a919a91
--- /dev/null
+++ b/qa/297
@@ -0,0 +1,145 @@
+#! /bin/sh
+# PCP QA Test No. 297
+# exercise pmproxy and client reconnect
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmdumptext >/dev/null 2>&1 || \
+ _notrun "No pmdumptext binary installed"
+which pmproxy >/dev/null 2>&1 || \
+ _notrun "No pmproxy binary installed"
+
+PMCDLOG=$PCP_LOG_DIR/pmcd/pmcd.log
+
+status=0 # success is the default!
+signal=$PCP_BINADM_DIR/pmsignal
+killpid=""
+username=`id -u -n`
+$sudo rm -rf $tmp.*
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ [ -n "$killpid" ] && $signal $killpid
+ $sudo $signal -a pmproxy >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmproxy restart >/dev/null 2>&1
+}
+
+realname=`hostname`
+chopname=`echo $realname | sed -e 's/\..*//'`
+
+_filter()
+{
+ sed \
+ -e '/^pmWhichContext/d' \
+ -e '/^pmUseContext/d' \
+ -e '/^pmNewZone/d' \
+ -e '/^pmUseZone/d' \
+ -e '/^__pmFdLookup/d' \
+ -e '/^__pmDecodeXtendError/d' \
+ -e '/^__pmAddIPC/d' \
+ -e '/^__pmSendCreds/d' \
+ -e '/^IPC table/d' \
+ -e '/^__pmConnectPMCD.* failed/d' \
+ -e '/^__pmConnect(fd=[0-9][0-9]*(nsprFd=/d' \
+ -e '/^__pmConnectPMCD/{
+s/'$realname'/MY_HOST/g
+s/localhost\.localdomain/MY_HOST/g
+s/localhost/MY_HOST/g
+s/'$chopname'/MY_HOST/g
+s/[0-9][0-9]*/N/g
+}' \
+ -e '/^pmReconnectContext.* failed/d' \
+ -e '/^pmReconnectContext.* too soon/d' \
+ -e '/^pmNewContext/{
+s/'$realname'/MY_HOST/g
+s/'$chopname'/MY_HOST/g
+}' \
+ -e '/^Context\[/{
+s/'$realname'/MY_HOST/g
+s/'$chopname'/MY_HOST/g
+s/[0-9][0-9]*/N/g
+}' \
+ -e '/^[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/{
+# pmdumptext
+s//DATE/
+s/ [0-9][0-9.]*/ N/g
+}' \
+ | _filter_pmproxy | uniq
+}
+
+_filter_pmproxy()
+{
+ sed -e '/^__pmSetSocketIPC: fd=/d' \
+ -e '/^__pmSetDataIPC: fd=/d' \
+ -e '/^__pmDataIPC: fd=/d' \
+ -e '/^IPC table fd/d' \
+ -e '/^__pmSetVersionIPC: fd=/d'
+}
+
+$sudo $PCP_RC_DIR/pmproxy stop >/dev/null 2>&1
+$sudo $signal -a pmproxy >/dev/null 2>&1
+
+export PMCD_RECONNECT_TIMEOUT=1
+
+proxyargs="-Dcontext"
+id pcp >/dev/null 2>&1 && proxyargs="$proxyargs -U $username"
+
+$PCP_BINADM_DIR/pmproxy $proxyargs -l $tmp.log 2>&1 | _filter_pmproxy
+
+export PMPROXY_HOST=localhost
+
+# real QA test starts here
+pmdumptext -Dcontext -t 0.5 sample.bin >$tmp.out 2>&1 &
+killpid=$!
+
+# don't need to confuse pmproxy or pmcd ...
+#
+unset PMPROXY_HOST
+
+sleep 3
+echo "killing pmproxy ..."
+$signal -a pmproxy >/dev/null 2>&1
+sleep 2
+echo "1st pmproxy log" >$seq.full
+cat $tmp.log >>$seq.full
+
+echo "re-starting pmproxy ..."
+$PCP_BINADM_DIR/pmproxy $proxyargs -l $tmp.log 2>&1 | _filter_pmproxy
+
+sleep 4
+echo "killing pmcd ..."
+$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
+sleep 2
+echo >>$seq.full
+echo "1st pmcd log" >>$seq.full
+cat $PMCDLOG >>$seq.full
+
+echo "re-starting pmcd ..."
+$sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+
+sleep 4
+echo >>$seq.full
+echo "2nd pmproxy log" >>$seq.full
+cat $tmp.log >>$seq.full
+echo >>$seq.full
+echo "2nd pmcd log" >>$seq.full
+cat $PMCDLOG >>$seq.full
+
+echo >>$seq.full
+echo "pmdumptext output" >>$seq.full
+cat $tmp.out >>$seq.full
+
+_filter <$tmp.out
+
+# success, all done
+exit
diff --git a/qa/297.out b/qa/297.out
new file mode 100644
index 0000000..f3d98ea
--- /dev/null
+++ b/qa/297.out
@@ -0,0 +1,23 @@
+QA output created by 297
+killing pmproxy ...
+re-starting pmproxy ...
+killing pmcd ...
+re-starting pmcd ...
+__pmConnectPMCD(MY_HOST): proxy connection host=MY_HOST port=N fd=N version=N
+pmNewContext(1, MY_HOST) -> 0
+Dump Contexts: current context = 0
+Context[N] host MY_HOST: pmcd=CONNECTED profile=NOT_SENT fd=N refcnt=N origin=N.N delta=N
+Dump Instance Profile state=INCLUDE, 0 profiles
+pmGetContextHostName_r context(0) -> 0
+pmGetContextHostName_r reset(0) -> 0
+DATE N N N N N N N N N
+DATE ? ? ? ? ? ? ? ? ?
+__pmConnectPMCD(MY_HOST): proxy connection host=MY_HOST port=N fd=N version=N
+pmReconnectContext(0), done
+pmReconnectContext(0) -> 0
+DATE N N N N N N N N N
+DATE ? ? ? ? ? ? ? ? ?
+__pmConnectPMCD(MY_HOST): proxy connection host=MY_HOST port=N fd=N version=N
+pmReconnectContext(0), done
+pmReconnectContext(0) -> 0
+DATE N N N N N N N N N
diff --git a/qa/298 b/qa/298
new file mode 100755
index 0000000..6f4da88
--- /dev/null
+++ b/qa/298
@@ -0,0 +1,95 @@
+#! /bin/sh
+# PCP QA Test No. 298
+# exercise pmie2col
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+if [ $PCP_PLATFORM = darwin ]
+then
+ ln $seq.out.2 $seq.out
+else
+ ln $seq.out.1 $seq.out
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<'End-of-File' >$tmp.config
+loadav = kernel.all.load #'1 minute';
+'%usr' = kernel.all.cpu.user;
+'%sys' = kernel.all.cpu.sys;
+'%wio' = kernel.all.cpu.wait.total;
+'%idle' = kernel.all.cpu.idle;
+'maxiops' = max_inst(disk.dev.total);
+End-of-File
+
+_filter()
+{
+ sed \
+ -e 's/^[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-2][0-9]:[0-5][0-9]:[0-5][0-9] [0-9][0-9][0-9][0-9] /DATE /' \
+ -e 's/ *[0-9][0-9.]*/ N/g'
+}
+
+_filter_err()
+{
+ sed \
+ -e '/not in namespace/s/for host .*/for host LOCALHOST/'
+}
+
+# real QA test starts here
+echo "=== live ===" | tee -a $seq.full
+pmie -v -t 1 -T 3 <$tmp.config >$tmp.out 2>$tmp.tmp
+cat $tmp.out >>$seq.full
+sed -e '/Info: evaluator exiting/d' <$tmp.tmp >$tmp.err
+if [ -s $tmp.err ]
+then
+ echo "pmie errors ..."
+ _filter_err <$tmp.err
+fi
+cat $tmp.out \
+| pmie2col \
+| tee -a $seq.full \
+| _filter
+
+echo | tee -a $seq.full
+echo "=== live, pmie -e ===" | tee -a $seq.full
+pmie -v -e -t 1 -T 3 <$tmp.config >$tmp.out 2>$tmp.tmp
+cat $tmp.out >>$seq.full
+sed -e '/Info: evaluator exiting/d' <$tmp.tmp >$tmp.err
+if [ -s $tmp.err ]
+then
+ echo "pmie errors ..."
+ _filter_err <$tmp.err
+fi
+cat $tmp.out \
+| pmie2col \
+| tee -a $seq.full \
+| _filter
+
+echo | tee -a $seq.full
+echo "=== archive and pmie2col -w ===" | tee -a $seq.full
+pmie -v -z -A 30m -t 30m -a src/kenj-pc-1 <$tmp.config >$tmp.out 2>$tmp.tmp
+cat $tmp.out >>$seq.full
+sed -e '/Info: evaluator exiting/d' <$tmp.tmp >$tmp.err
+if [ -s $tmp.err ]
+then
+ echo "pmie errors ..."
+ _filter_err <$tmp.err
+fi
+cat $tmp.out \
+| pmie2col -w 8 \
+| tee -a $seq.full
+
+# success, all done
+exit
diff --git a/qa/298.out.1 b/qa/298.out.1
new file mode 100644
index 0000000..0509f44
--- /dev/null
+++ b/qa/298.out.1
@@ -0,0 +1,23 @@
+QA output created by 298
+=== live ===
+ loadav %usr %sys %wio %idle maxiops
+ N ? ? ? ? ?
+ N N N N N N
+ N N N N N N
+ N N N N N N
+
+=== live, pmie -e ===
+ loadav %usr %sys %wio %idle maxiops
+DATE N ? ? ? ? ?
+DATE N N N N N N
+DATE N N N N N N
+DATE N N N N N N
+
+=== archive and pmie2col -w ===
+ loadav %usr %sys %wio %idle maxiops
+Sun Feb 8 12:30:00 2004 0.16 ? ? ? ? ?
+Sun Feb 8 13:00:00 2004 1.23 0.26 0.08 0.00 0.58 1.37
+Sun Feb 8 13:30:00 2004 1.35 0.35 0.10 0.00 0.55 19.70
+Sun Feb 8 14:00:00 2004 0.23 0.19 0.08 0.00 0.73 0.68
+Sun Feb 8 14:30:00 2004 0.56 0.00 0.08 0.00 0.92 0.63
+Sun Feb 8 15:00:00 2004 0.22 0.23 0.08 0.00 0.69 0.61
diff --git a/qa/298.out.2 b/qa/298.out.2
new file mode 100644
index 0000000..1d44577
--- /dev/null
+++ b/qa/298.out.2
@@ -0,0 +1,29 @@
+QA output created by 298
+=== live ===
+pmie errors ...
+pmie: metric kernel.all.cpu.wait.total not in namespace for host LOCALHOST
+pmLookupName failed: Unknown metric name
+ loadav %usr %sys %wio %idle maxiops
+ N ? ? ? ? ?
+ N N N ? N N
+ N N N ? N N
+ N N N ? N N
+
+=== live, pmie -e ===
+pmie errors ...
+pmie: metric kernel.all.cpu.wait.total not in namespace for host LOCALHOST
+pmLookupName failed: Unknown metric name
+ loadav %usr %sys %wio %idle maxiops
+DATE N ? ? ? ? ?
+DATE N N N ? N N
+DATE N N N ? N N
+DATE N N N ? N N
+
+=== archive and pmie2col -w ===
+ loadav %usr %sys %wio %idle maxiops
+Sun Feb 8 12:30:00 2004 0.16 ? ? ? ? ?
+Sun Feb 8 13:00:00 2004 1.23 0.26 0.08 0.00 0.58 1.37
+Sun Feb 8 13:30:00 2004 1.35 0.35 0.10 0.00 0.55 19.70
+Sun Feb 8 14:00:00 2004 0.23 0.19 0.08 0.00 0.73 0.68
+Sun Feb 8 14:30:00 2004 0.56 0.00 0.08 0.00 0.92 0.63
+Sun Feb 8 15:00:00 2004 0.22 0.23 0.08 0.00 0.69 0.61
diff --git a/qa/299 b/qa/299
new file mode 100755
index 0000000..36780fa
--- /dev/null
+++ b/qa/299
@@ -0,0 +1,119 @@
+#! /bin/sh
+# PCP QA Test No. 299
+# exercise pmParseMetricSpec
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+rm -f $seq.out
+. ./localconfig
+if [ $PCP_PLATFORM = irix -a $PCP_EOE_VER -le 6510 ]
+then
+ ln $seq.out.1 $seq.out
+elif [ $PCP_EOE_VER -lt 2704 ]
+then
+ ln $seq.out.2 $seq.out
+else
+ ln $seq.out.3 $seq.out
+fi
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_x()
+{
+ echo
+ src/parsemetricspec "sample$1" 1 default_arch
+ echo
+ src/parsemetricspec "sample$1" 0 default_host
+ echo
+ src/parsemetricspec "my_arch/sample$1" 1 default_arch
+ echo
+ src/parsemetricspec "my_host:sample$1" 0 default_host
+ echo
+ src/parsemetricspec "other_host:sample$1" 1 default_arch
+ echo
+ src/parsemetricspec "/other/arch/sample$1" 0 default_host
+ echo
+ src/parsemetricspec "@:sample$1" 0 default_host
+}
+
+# real QA test starts here
+echo "=== No instance and no error cases ==="
+_x
+
+echo
+echo "=== One instance and no error cases ==="
+_x '[singular]'
+
+echo
+echo "=== Multiple instances and no error cases ==="
+_x '[one,two,three]'
+
+echo
+echo "=== Some whitespace cases ==="
+echo
+src/parsemetricspec " my_host : sample [ one , two , three ] " 0 default_host
+echo
+src/parsemetricspec "my_arch / sample [singular]" 1 default_arch
+
+echo
+echo "=== Miscellaneous cases ==="
+echo
+src/parsemetricspec "../../relative/pathname/myarch/metric" 0 default_host
+echo
+src/parsemetricspec "metric.a.b.c.d[]" 0 default_host
+echo
+src/parsemetricspec "/full/pathname/myarch/metric[fumble mumble]" 0 default_host
+echo
+src/parsemetricspec "./myarch/metric[fumble,,mumble]" 0 default_host
+echo
+src/parsemetricspec 'foo["instance with strange chars :/,[]\""]' 0 default_host
+echo
+src/parsemetricspec '20080424:12:05/disk.dev.total["sda1"]' 0 default_host
+echo
+src/parsemetricspec '20080424:12:05/disk.all.total' 0 default_host
+
+echo
+echo "=== Some odd cases (incorrectly used to be classified as errors) ==="
+echo
+src/parsemetricspec "one/two:three" 0 default_host
+echo
+src/parsemetricspec "foo:bar/fumble[mumble]" 0 default_host
+
+echo
+echo "=== Some error cases ==="
+echo
+src/parsemetricspec "foo/bar[fumble]mumble" 0 default_host
+echo
+src/parsemetricspec foo: 0 default_host
+echo
+src/parsemetricspec :badhost 0 default_host
+echo
+src/parsemetricspec bad/arch/ 0 default_host
+echo
+src/parsemetricspec '/bad/arch/[' 0 default_host
+echo
+src/parsemetricspec 'norsqb[' 0 default_host
+echo
+src/parsemetricspec 'nolsqb-instance]' 0 default_host
+echo
+src/parsemetricspec 'metric["noclosingquote' 0 default_host
+echo
+src/parsemetricspec 'metric["noclosingquote]' 0 default_host
+echo
+src/parsemetricspec 'metric["noclosing]"' 0 default_host
+echo
+src/parsemetricspec 'metric["ends in backslash\' 0 default_host
+
+# success, all done
+status=0
+exit
diff --git a/qa/299.out.1 b/qa/299.out.1
new file mode 100644
index 0000000..ccbd517
--- /dev/null
+++ b/qa/299.out.1
@@ -0,0 +1,242 @@
+QA output created by 299
+=== No instance and no error cases ===
+
+pmParseMetricSpec("sample", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+
+pmParseMetricSpec("sample", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+
+pmParseMetricSpec("my_arch/sample", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+
+pmParseMetricSpec("my_host:sample", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+
+pmParseMetricSpec("other_host:sample", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+
+pmParseMetricSpec("/other/arch/sample", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+
+=== One instance and no error cases ===
+
+pmParseMetricSpec("sample[singular]", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("sample[singular]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("my_arch/sample[singular]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("my_host:sample[singular]", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("other_host:sample[singular]", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("/other/arch/sample[singular]", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+inst[0]: "singular"
+
+=== Multiple instances and no error cases ===
+
+pmParseMetricSpec("sample[one,two,three]", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("sample[one,two,three]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_arch/sample[one,two,three]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_host:sample[one,two,three]", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("other_host:sample[one,two,three]", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("/other/arch/sample[one,two,three]", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+=== Some whitespace cases ===
+
+pmParseMetricSpec(" my_host : sample [ one , two , three ] ", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_arch / sample [singular]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch "
+metric: "sample"
+inst[0]: "singular"
+
+=== Miscellaneous cases ===
+
+pmParseMetricSpec("../../relative/pathname/myarch/metric", 0, "default_host", ...)
+isarch: 1
+source: "../../relative/pathname/myarch"
+metric: "metric"
+
+pmParseMetricSpec("metric.a.b.c.d[]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "metric.a.b.c.d"
+
+pmParseMetricSpec("/full/pathname/myarch/metric[fumble mumble]", 0, "default_host", ...)
+isarch: 1
+source: "/full/pathname/myarch"
+metric: "metric"
+inst[0]: "fumble"
+inst[1]: "mumble"
+
+pmParseMetricSpec("./myarch/metric[fumble,,mumble]", 0, "default_host", ...)
+isarch: 1
+source: "./myarch"
+metric: "metric"
+inst[0]: "fumble"
+inst[1]: "mumble"
+
+pmParseMetricSpec("foo["instance with strange chars :/,[]\""]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo["instance with strange chars :/,[]\""]
+ ^ -- unexpected extra characters
+
+
+=== Some error cases ===
+
+pmParseMetricSpec("one:two:three", 0, "default_host", ...)
+pmParseMetricSpec Error:
+one:two:three
+ ^ -- unexpected character in metric name
+
+
+pmParseMetricSpec("foo/bar[fumble]mumble", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo/bar[fumble]mumble
+ ^ -- unexpected extra characters
+
+
+pmParseMetricSpec("foo:bar:fumble[mumble]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo:bar:fumble[mumble]
+ ^ -- unexpected character in metric name
+
+
+pmParseMetricSpec("foo:", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo:
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("bad/arch/", 0, "default_host", ...)
+pmParseMetricSpec Error:
+bad/arch/
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("/bad/arch/[", 0, "default_host", ...)
+pmParseMetricSpec Error:
+/bad/arch/[
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("norsqb[", 0, "default_host", ...)
+pmParseMetricSpec Error:
+norsqb[
+ ^ -- closing ] expected
+
+
+pmParseMetricSpec("nolsqb-instance]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+nolsqb-instance]
+ ^ -- unexpected character in metric name
+
+
+pmParseMetricSpec("metric["noclosingquote", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosingquote
+ ^ -- closing ] expected
+
+
+pmParseMetricSpec("metric["noclosingquote]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosingquote]
+ ^ -- closing " expected
+
+
+pmParseMetricSpec("metric["noclosing]"", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosing]"
+ ^ -- unexpected extra characters
+
+
+pmParseMetricSpec("metric["ends in backslash\", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["ends in backslash\
+ ^ -- closing ] expected
+
diff --git a/qa/299.out.2 b/qa/299.out.2
new file mode 100644
index 0000000..f3844c9
--- /dev/null
+++ b/qa/299.out.2
@@ -0,0 +1,242 @@
+QA output created by 299
+=== No instance and no error cases ===
+
+pmParseMetricSpec("sample", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+
+pmParseMetricSpec("sample", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+
+pmParseMetricSpec("my_arch/sample", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+
+pmParseMetricSpec("my_host:sample", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+
+pmParseMetricSpec("other_host:sample", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+
+pmParseMetricSpec("/other/arch/sample", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+
+=== One instance and no error cases ===
+
+pmParseMetricSpec("sample[singular]", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("sample[singular]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("my_arch/sample[singular]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("my_host:sample[singular]", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("other_host:sample[singular]", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("/other/arch/sample[singular]", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+inst[0]: "singular"
+
+=== Multiple instances and no error cases ===
+
+pmParseMetricSpec("sample[one,two,three]", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("sample[one,two,three]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_arch/sample[one,two,three]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_host:sample[one,two,three]", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("other_host:sample[one,two,three]", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("/other/arch/sample[one,two,three]", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+=== Some whitespace cases ===
+
+pmParseMetricSpec(" my_host : sample [ one , two , three ] ", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_arch / sample [singular]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch "
+metric: "sample"
+inst[0]: "singular"
+
+=== Miscellaneous cases ===
+
+pmParseMetricSpec("../../relative/pathname/myarch/metric", 0, "default_host", ...)
+isarch: 1
+source: "../../relative/pathname/myarch"
+metric: "metric"
+
+pmParseMetricSpec("metric.a.b.c.d[]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "metric.a.b.c.d"
+
+pmParseMetricSpec("/full/pathname/myarch/metric[fumble mumble]", 0, "default_host", ...)
+isarch: 1
+source: "/full/pathname/myarch"
+metric: "metric"
+inst[0]: "fumble"
+inst[1]: "mumble"
+
+pmParseMetricSpec("./myarch/metric[fumble,,mumble]", 0, "default_host", ...)
+isarch: 1
+source: "./myarch"
+metric: "metric"
+inst[0]: "fumble"
+inst[1]: "mumble"
+
+pmParseMetricSpec("foo["instance with strange chars :/,[]\""]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "foo"
+inst[0]: "instance with strange chars :/,[]""
+
+=== Some error cases ===
+
+pmParseMetricSpec("one:two:three", 0, "default_host", ...)
+pmParseMetricSpec Error:
+one:two:three
+ ^ -- unexpected character in metric name
+
+
+pmParseMetricSpec("foo/bar[fumble]mumble", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo/bar[fumble]mumble
+ ^ -- unexpected extra characters
+
+
+pmParseMetricSpec("foo:bar:fumble[mumble]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo:bar:fumble[mumble]
+ ^ -- unexpected character in metric name
+
+
+pmParseMetricSpec("foo:", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo:
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("bad/arch/", 0, "default_host", ...)
+pmParseMetricSpec Error:
+bad/arch/
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("/bad/arch/[", 0, "default_host", ...)
+pmParseMetricSpec Error:
+/bad/arch/[
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("norsqb[", 0, "default_host", ...)
+pmParseMetricSpec Error:
+norsqb[
+ ^ -- closing ] expected
+
+
+pmParseMetricSpec("nolsqb-instance]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+nolsqb-instance]
+ ^ -- unexpected character in metric name
+
+
+pmParseMetricSpec("metric["noclosingquote", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosingquote
+ ^ -- closing " and ] expected
+
+
+pmParseMetricSpec("metric["noclosingquote]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosingquote]
+ ^ -- closing " and ] expected
+
+
+pmParseMetricSpec("metric["noclosing]"", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosing]"
+ ^ -- closing ] expected
+
+
+pmParseMetricSpec("metric["ends in backslash\", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["ends in backslash\
+ ^ -- closing " and ] expected
+
diff --git a/qa/299.out.3 b/qa/299.out.3
new file mode 100644
index 0000000..d31916f
--- /dev/null
+++ b/qa/299.out.3
@@ -0,0 +1,279 @@
+QA output created by 299
+=== No instance and no error cases ===
+
+pmParseMetricSpec("sample", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+
+pmParseMetricSpec("sample", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+
+pmParseMetricSpec("my_arch/sample", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+
+pmParseMetricSpec("my_host:sample", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+
+pmParseMetricSpec("other_host:sample", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+
+pmParseMetricSpec("/other/arch/sample", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+
+pmParseMetricSpec("@:sample", 0, "default_host", ...)
+isarch: 2
+source: "@"
+metric: "sample"
+
+=== One instance and no error cases ===
+
+pmParseMetricSpec("sample[singular]", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("sample[singular]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("my_arch/sample[singular]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("my_host:sample[singular]", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("other_host:sample[singular]", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("/other/arch/sample[singular]", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+inst[0]: "singular"
+
+pmParseMetricSpec("@:sample[singular]", 0, "default_host", ...)
+isarch: 2
+source: "@"
+metric: "sample"
+inst[0]: "singular"
+
+=== Multiple instances and no error cases ===
+
+pmParseMetricSpec("sample[one,two,three]", 1, "default_arch", ...)
+isarch: 1
+source: "default_arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("sample[one,two,three]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_arch/sample[one,two,three]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_host:sample[one,two,three]", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("other_host:sample[one,two,three]", 1, "default_arch", ...)
+isarch: 0
+source: "other_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("/other/arch/sample[one,two,three]", 0, "default_host", ...)
+isarch: 1
+source: "/other/arch"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("@:sample[one,two,three]", 0, "default_host", ...)
+isarch: 2
+source: "@"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+=== Some whitespace cases ===
+
+pmParseMetricSpec(" my_host : sample [ one , two , three ] ", 0, "default_host", ...)
+isarch: 0
+source: "my_host"
+metric: "sample"
+inst[0]: "one"
+inst[1]: "two"
+inst[2]: "three"
+
+pmParseMetricSpec("my_arch / sample [singular]", 1, "default_arch", ...)
+isarch: 1
+source: "my_arch"
+metric: "sample"
+inst[0]: "singular"
+
+=== Miscellaneous cases ===
+
+pmParseMetricSpec("../../relative/pathname/myarch/metric", 0, "default_host", ...)
+isarch: 1
+source: "../../relative/pathname/myarch"
+metric: "metric"
+
+pmParseMetricSpec("metric.a.b.c.d[]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "metric.a.b.c.d"
+
+pmParseMetricSpec("/full/pathname/myarch/metric[fumble mumble]", 0, "default_host", ...)
+isarch: 1
+source: "/full/pathname/myarch"
+metric: "metric"
+inst[0]: "fumble"
+inst[1]: "mumble"
+
+pmParseMetricSpec("./myarch/metric[fumble,,mumble]", 0, "default_host", ...)
+isarch: 1
+source: "./myarch"
+metric: "metric"
+inst[0]: "fumble"
+inst[1]: "mumble"
+
+pmParseMetricSpec("foo["instance with strange chars :/,[]\""]", 0, "default_host", ...)
+isarch: 0
+source: "default_host"
+metric: "foo"
+inst[0]: "instance with strange chars :/,[]""
+
+pmParseMetricSpec("20080424:12:05/disk.dev.total["sda1"]", 0, "default_host", ...)
+isarch: 1
+source: "20080424:12:05"
+metric: "disk.dev.total"
+inst[0]: "sda1"
+
+pmParseMetricSpec("20080424:12:05/disk.all.total", 0, "default_host", ...)
+isarch: 1
+source: "20080424:12:05"
+metric: "disk.all.total"
+
+=== Some odd cases (incorrectly used to be classified as errors) ===
+
+pmParseMetricSpec("one/two:three", 0, "default_host", ...)
+isarch: 0
+source: "one/two"
+metric: "three"
+
+pmParseMetricSpec("foo:bar/fumble[mumble]", 0, "default_host", ...)
+isarch: 1
+source: "foo:bar"
+metric: "fumble"
+inst[0]: "mumble"
+
+=== Some error cases ===
+
+pmParseMetricSpec("foo/bar[fumble]mumble", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo/bar[fumble]mumble
+ ^ -- unexpected extra characters
+
+
+pmParseMetricSpec("foo:", 0, "default_host", ...)
+pmParseMetricSpec Error:
+foo:
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec(":badhost", 0, "default_host", ...)
+pmParseMetricSpec Error:
+:badhost
+^ -- host name expected
+
+
+pmParseMetricSpec("bad/arch/", 0, "default_host", ...)
+pmParseMetricSpec Error:
+bad/arch/
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("/bad/arch/[", 0, "default_host", ...)
+pmParseMetricSpec Error:
+/bad/arch/[
+ ^ -- performance metric name expected
+
+
+pmParseMetricSpec("norsqb[", 0, "default_host", ...)
+pmParseMetricSpec Error:
+norsqb[
+ ^ -- closing ] expected
+
+
+pmParseMetricSpec("nolsqb-instance]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+nolsqb-instance]
+ ^ -- unexpected character in metric name
+
+
+pmParseMetricSpec("metric["noclosingquote", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosingquote
+ ^ -- closing " and ] expected
+
+
+pmParseMetricSpec("metric["noclosingquote]", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosingquote]
+ ^ -- closing " and ] expected
+
+
+pmParseMetricSpec("metric["noclosing]"", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["noclosing]"
+ ^ -- closing ] expected
+
+
+pmParseMetricSpec("metric["ends in backslash\", 0, "default_host", ...)
+pmParseMetricSpec Error:
+metric["ends in backslash\
+ ^ -- closing " and ] expected
+
diff --git a/qa/300 b/qa/300
new file mode 100755
index 0000000..73eb777
--- /dev/null
+++ b/qa/300
@@ -0,0 +1,75 @@
+#! /bin/sh
+# PCP QA Test No. 300
+# Change in handling of .NeedInstall protocols
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+if [ $PCP_VER -lt 3802 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "$sudo rm -rf $tmp.* $PCP_VAR_DIR/pmdas/bozo; exit \$status" 0 1 2 3 15
+
+$sudo rm -rf $PCP_VAR_DIR/pmdas/bozo
+$sudo mkdir $PCP_VAR_DIR/pmdas/bozo
+cat <<End-of-File >$tmp.sh
+#!/bin/sh
+# from PCP QA $seq
+
+[ -f $PCP_VAR_DIR/pmdas/bozo/fail ] && exit 1
+exit 0
+End-of-File
+
+$sudo cp $tmp.sh $PCP_VAR_DIR/pmdas/bozo/Install
+$sudo chmod 755 $PCP_VAR_DIR/pmdas/bozo/Install
+$sudo touch $PCP_VAR_DIR/pmdas/bozo/.NeedInstall
+$sudo touch $PCP_VAR_DIR/pmdas/bozo/fail
+$sudo rm -f $PCP_LOG_DIR/NOTICES
+$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
+
+# real QA test starts here
+echo "Install should fail"
+$sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_start
+if [ -f $PCP_VAR_DIR/pmdas/bozo/.NeedInstall ]
+then
+ echo ".NeedInstall present"
+else
+ echo ".NeedInstall missing"
+fi
+
+echo
+echo "Install should succeed"
+$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/fail
+$sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_start
+if [ -f $PCP_VAR_DIR/pmdas/bozo/.NeedInstall ]
+then
+ echo ".NeedInstall present"
+else
+ echo ".NeedInstall missing"
+fi
+
+echo
+echo "Check pmpost messages ..."
+cat $PCP_LOG_DIR/NOTICES > $seq.full
+egrep 'bozo|pmlogger_check' $PCP_LOG_DIR/NOTICES \
+| sed \
+ -e 's/^[0-9][0-9]*:[0-9][0-9]*/TIME/' \
+ -e 's/\(check for host \).*/\1HOSTNAME/'
+
+# success, all done
+exit
diff --git a/qa/300.out.1 b/qa/300.out.1
new file mode 100644
index 0000000..0ebc1a1
--- /dev/null
+++ b/qa/300.out.1
@@ -0,0 +1,17 @@
+QA output created by 300
+Install should fail
+Starting pmcd ...
+Installing bozo PMDA ...
+Starting pmlogger ...
+.NeedInstall present
+
+Install should succeed
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Installing bozo PMDA ...
+Starting pmlogger ...
+.NeedInstall missing
+
+Check pmpost messages ...
+TIME PMDA setup: automated install FAILED (exit=1): bozo
+TIME PMDA setup: automated install: bozo
diff --git a/qa/300.out.2 b/qa/300.out.2
new file mode 100644
index 0000000..e9ff132
--- /dev/null
+++ b/qa/300.out.2
@@ -0,0 +1,19 @@
+QA output created by 300
+Install should fail
+Starting pmcd ...
+Installing bozo PMDA ...
+Starting pmlogger ...
+.NeedInstall present
+
+Install should succeed
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Installing bozo PMDA ...
+Starting pmlogger ...
+.NeedInstall missing
+
+Check pmpost messages ...
+TIME PMDA setup: automated install FAILED (exit=1): bozo
+TIME start pmlogger from pmlogger_check for host HOSTNAME
+TIME PMDA setup: automated install: bozo
+TIME start pmlogger from pmlogger_check for host HOSTNAME
diff --git a/qa/301 b/qa/301
new file mode 100755
index 0000000..bc4d9b5
--- /dev/null
+++ b/qa/301
@@ -0,0 +1,119 @@
+#!/bin/sh
+# PCP QA Test No. 301
+# Stop pmcd and check no pmdas are still running.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+
+# Useful definitions...
+DEADLIMIT=120 # seconds
+BREATHER=30 # seconds
+
+# Debugging controls...
+CMND=$seq # already done for us
+DBUG=${DBUG:-FALSE} # normally, the name of this script, $0
+DBUGLVL=${DBUGLVL:-1} # normally set to 1
+
+# Requires common.product:
+case $PCP_PLATFORM
+in
+ linux|darwin|solaris)
+ AMTIME1970PROG="date +%s"
+ ;;
+ *)
+ if [ -x /usr/etc/amtime1970 ]
+ then
+ AMTIME1970PROG=/usr/etc/amtime1970
+ else
+ echo "Unknown platfrom $PCP_PLATFORM"
+ exit 1
+ fi
+ ;;
+esac
+
+dbugEcho () {
+ if [ $# -gt 1 -a "$DBUG" != FALSE -a "$DBUG" = "$CMND" -a "$DBUGLVL" -ge "$1" ]
+ then
+ shift
+ printf " ?: " 1>&2
+ for P
+ do
+ printf "%s" "$P" 1>&2
+ done
+ printf "\n" 1>&2
+ fi
+}
+
+
+waitTilDead () {
+ NUMPROC=1
+ DEADSTART=`$AMTIME1970PROG`
+ DEADTIME=0
+ while [ "$NUMPROC" -gt 0 -a $DEADTIME -lt $DEADLIMIT ]
+ do
+ sleep 1
+ NUMPROC=`ps -eo "args pid" | $PCP_AWK_PROG '
+/^\/var\/pcp\/pmdas\/.*pmda.*/ { print $NF," ",$1 }
+' | wc -l`
+ DEADTIME=`$AMTIME1970PROG`
+ DEADTIME=`expr $DEADTIME - $DEADSTART`
+ done
+
+ echo $DEADTIME
+ return 0
+}
+
+
+dbugEcho 1 "Shutting down PCP"
+$sudo sh $PCP_RC_DIR/pcp stop >/dev/null &
+
+# Wait for PMDAs with sprocs to exit.
+dbugEcho 1 "Waiting until PCP is dead"
+SDTIME=`waitTilDead`
+if [ $? != 0 ]
+then
+ echo 1>&2 "$seq: unable to determine current time of day"
+ status=2
+else
+ if [ "$SDTIME" -ge $DEADLIMIT ]
+ then
+ echo 1>&2 "$seq: PCP could not be shut down after $DEADLIMIT seconds"
+ status=2
+ else
+ dbugEcho 1 "PMDAs took $SDTIME second(s) to shut down"
+ fi
+fi
+
+# really make sure the "$PCP_RC_DIR/pcp stop" is complete, so it does
+# not terminate the pmcd we're going to start
+#
+$sudo $signal -a pmcd >/dev/null 2>&1
+wait
+
+if [ $status -gt 1 ]
+then
+ dbugEcho 1 "Recovering after $BREATHER seconds"
+ sleep $BREATHER
+fi
+dbugEcho 1 "Starting up PCP"
+$sudo sh $PCP_RC_DIR/pcp restart >/dev/null
+_wait_for_pmcd
+
+# success or failure, we've finished
+status=`expr $status - 1`
+exit
diff --git a/qa/301.out b/qa/301.out
new file mode 100644
index 0000000..8f1e610
--- /dev/null
+++ b/qa/301.out
@@ -0,0 +1 @@
+QA output created by 301
diff --git a/qa/302 b/qa/302
new file mode 100755
index 0000000..38b34e7
--- /dev/null
+++ b/qa/302
@@ -0,0 +1,41 @@
+#!/bin/sh
+# PCP QA Test No. 302
+# merge two archives, and check that mark records are placed in the
+# correct positions!!!
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+
+rm -rf $tmp.arch*
+pmlogextract -z src/arch_a src/arch_b $tmp.arch
+
+# sed is strange to avoid printf issue between platforms
+#
+pmdumplog -a -z $tmp.arch \
+| sed \
+ -e 's/14:46:52.146/14:46:52.145/' \
+ -e '/\[[0-9][0-9]* bytes\]/d'
+
+# success, all done
+status=0
+exit
diff --git a/qa/302.out b/qa/302.out
new file mode 100644
index 0000000..8716a3f
--- /dev/null
+++ b/qa/302.out
@@ -0,0 +1,66 @@
+QA output created by 302
+Note: timezone set to local timezone of host "ha2" from archive
+
+Note: timezone set to local timezone of host "ha2" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host ha2
+ commencing Fri Jul 18 14:46:47.148 1997
+ ending Fri Jul 18 14:46:52.145 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 1.10.7 (irix.kernel.all.cpu.idle)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 2.1
+14:46:47.148 1 instances
+ 4530 or "4530"
+14:46:48.210 1 instances
+ 4534 or "4534"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+14:46:47.148 0 132 132
+14:46:48.210 0 414 328
+14:46:52.145 0 455 824
+
+14:46:47.148 2.3.3 (pmcd.pmlogger.host): inst [4530 or "4530"] value "ha2.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [4530 or "4530"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [4530 or "4530"] value "/usr/people/pcpqa/isms/pcp2.0/qa/src/arch_a"
+
+14:46:48.146 1.10.7 (irix.kernel.all.cpu.idle): value 2163518020
+
+14:46:48.210 2.3.3 (pmcd.pmlogger.host): inst [4534 or "4534"] value "ha2.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [4534 or "4534"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [4534 or "4534"] value "/usr/people/pcpqa/isms/pcp2.0/qa/src/arch_b"
+
+14:46:48.706 1.10.7 (irix.kernel.all.cpu.idle): value 2163518490
+
+14:46:49.176 1.10.7 (irix.kernel.all.cpu.idle): value 2163518840
+
+14:46:49.205 1.10.7 (irix.kernel.all.cpu.idle): value 2163518870
+
+14:46:49.715 1.10.7 (irix.kernel.all.cpu.idle): value 2163519340
+
+14:46:50.145 1.10.7 (irix.kernel.all.cpu.idle): value 2163519680
+
+14:46:50.205 1.10.7 (irix.kernel.all.cpu.idle): value 2163519740
+
+14:46:50.715 1.10.7 (irix.kernel.all.cpu.idle): value 2163520110
+
+14:46:50.716 <mark>
+
+14:46:51.146 1.10.7 (irix.kernel.all.cpu.idle): value 2163520480
+
+14:46:52.145 1.10.7 (irix.kernel.all.cpu.idle): value 2163521310
diff --git a/qa/303 b/qa/303
new file mode 100755
index 0000000..163aec4
--- /dev/null
+++ b/qa/303
@@ -0,0 +1,51 @@
+#! /bin/sh
+# PCP QA Test No. 303
+# merge two archives, and check that mark records are placed in the
+# correct positions!!!
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e '/\[[0-9][0-9]* bytes\]/d'
+}
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+
+echo "=== arch_a ==="
+pmdumplog -a -z src/arch_a | _filter
+
+echo
+echo "=== arch_b ==="
+pmdumplog -a -z src/arch_b | _filter
+
+rm -rf $tmp.arch*
+pmlogextract -z src/arch_a src/arch_b $tmp.arch
+
+echo
+echo "=== the merged archive ==="
+pmdumplog -a -z $tmp.arch | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/303.out b/qa/303.out
new file mode 100644
index 0000000..0c11965
--- /dev/null
+++ b/qa/303.out
@@ -0,0 +1,161 @@
+QA output created by 303
+=== arch_a ===
+Note: timezone set to local timezone of host "ha2" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host ha2
+ commencing Fri Jul 18 14:46:47.148 1997
+ ending Fri Jul 18 14:46:52.145 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 1.10.7 (irix.kernel.all.cpu.idle)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 2.1
+14:46:47.148 1 instances
+ 4530 or "4530"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+14:46:47.148 0 132 132
+14:46:48.146 0 350 288
+14:46:52.145 0 414 488
+
+14:46:47.148 2.3.3 (pmcd.pmlogger.host): inst [4530 or "4530"] value "ha2.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [4530 or "4530"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [4530 or "4530"] value "/usr/people/pcpqa/isms/pcp2.0/qa/src/arch_a"
+
+14:46:48.146 1.10.7 (irix.kernel.all.cpu.idle): value 2163518020
+
+14:46:49.176 1.10.7 (irix.kernel.all.cpu.idle): value 2163518840
+
+14:46:50.145 1.10.7 (irix.kernel.all.cpu.idle): value 2163519680
+
+14:46:51.146 1.10.7 (irix.kernel.all.cpu.idle): value 2163520480
+
+14:46:52.145 1.10.7 (irix.kernel.all.cpu.idle): value 2163521310
+
+=== arch_b ===
+Note: timezone set to local timezone of host "ha2" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host ha2
+ commencing Fri Jul 18 14:46:48.210 1997
+ ending Fri Jul 18 14:46:50.715 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 1.10.7 (irix.kernel.all.cpu.idle)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 2.1
+14:46:48.210 1 instances
+ 4534 or "4534"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+14:46:48.210 0 132 132
+14:46:48.706 0 350 288
+14:46:50.715 0 414 488
+
+14:46:48.210 2.3.3 (pmcd.pmlogger.host): inst [4534 or "4534"] value "ha2.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [4534 or "4534"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [4534 or "4534"] value "/usr/people/pcpqa/isms/pcp2.0/qa/src/arch_b"
+
+14:46:48.706 1.10.7 (irix.kernel.all.cpu.idle): value 2163518490
+
+14:46:49.205 1.10.7 (irix.kernel.all.cpu.idle): value 2163518870
+
+14:46:49.715 1.10.7 (irix.kernel.all.cpu.idle): value 2163519340
+
+14:46:50.205 1.10.7 (irix.kernel.all.cpu.idle): value 2163519740
+
+14:46:50.715 1.10.7 (irix.kernel.all.cpu.idle): value 2163520110
+Note: timezone set to local timezone of host "ha2" from archive
+
+
+=== the merged archive ===
+Note: timezone set to local timezone of host "ha2" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host ha2
+ commencing Fri Jul 18 14:46:47.148 1997
+ ending Fri Jul 18 14:46:52.145 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 1.10.7 (irix.kernel.all.cpu.idle)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 2.1
+14:46:47.148 1 instances
+ 4530 or "4530"
+14:46:48.210 1 instances
+ 4534 or "4534"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+14:46:47.148 0 132 132
+14:46:48.210 0 414 328
+14:46:52.145 0 455 824
+
+14:46:47.148 2.3.3 (pmcd.pmlogger.host): inst [4530 or "4530"] value "ha2.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [4530 or "4530"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [4530 or "4530"] value "/usr/people/pcpqa/isms/pcp2.0/qa/src/arch_a"
+
+14:46:48.146 1.10.7 (irix.kernel.all.cpu.idle): value 2163518020
+
+14:46:48.210 2.3.3 (pmcd.pmlogger.host): inst [4534 or "4534"] value "ha2.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [4534 or "4534"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [4534 or "4534"] value "/usr/people/pcpqa/isms/pcp2.0/qa/src/arch_b"
+
+14:46:48.706 1.10.7 (irix.kernel.all.cpu.idle): value 2163518490
+
+14:46:49.176 1.10.7 (irix.kernel.all.cpu.idle): value 2163518840
+
+14:46:49.205 1.10.7 (irix.kernel.all.cpu.idle): value 2163518870
+
+14:46:49.715 1.10.7 (irix.kernel.all.cpu.idle): value 2163519340
+
+14:46:50.145 1.10.7 (irix.kernel.all.cpu.idle): value 2163519680
+
+14:46:50.205 1.10.7 (irix.kernel.all.cpu.idle): value 2163519740
+
+14:46:50.715 1.10.7 (irix.kernel.all.cpu.idle): value 2163520110
+
+14:46:50.716 <mark>
+
+14:46:51.146 1.10.7 (irix.kernel.all.cpu.idle): value 2163520480
+
+14:46:52.145 1.10.7 (irix.kernel.all.cpu.idle): value 2163521310
diff --git a/qa/304 b/qa/304
new file mode 100755
index 0000000..1a20e17
--- /dev/null
+++ b/qa/304
@@ -0,0 +1,121 @@
+#! /bin/sh
+# PCP QA Test No. 304
+# exercise recording session control in pmlooger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+LOCALHOST=`hostname`
+
+_do()
+{
+ rm -f $tmp.0 $tmp.index $tmp.meta
+ cat $tmp.ctl \
+ | pmlogger -L -x 0 -c /dev/null -l $tmp.log -D appl2 $tmp &
+ logger_pid=$!
+ if [ -z "$logger_pid" ]
+ then
+ echo "Arrgh ... failed to start pmlogger!"
+ exit $status
+ fi
+ sleep 3
+ alive=`ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == '"$logger_pid"' { print }'`
+ if [ ! -z "$alive" ]
+ then
+ if [ $1 = "alive" ]
+ then
+ echo "As expected, pmlogger is still running ... kill it off"
+ else
+ echo "$alive"
+ echo "-----------------"
+ echo "- Error: pmlogger is still running, kill it off"
+ echo "-----------------"
+ fi
+ $signal -s TERM $!
+ sleep 2
+ else
+ if [ $1 = "alive" ]
+ then
+ echo "-----------------"
+ echo "- Error: pmlogger has died prematurely"
+ echo "-----------------"
+ fi
+ fi
+
+ sed <$tmp.log \
+ -e "s/$LOCALHOST/HOST/g" \
+ -e 's/[0-9][^ ]* [kmKM]*bytes/SOME bytes/g' \
+ -e 's/[0-9][^ ]* seconds/SOME seconds/g' \
+ -e 's/-s TERM [0-9][0-9]*/-s TERM PID/' \
+ | _filter_pmlogger_log
+
+}
+
+# NOT the default pmconfirm(1), please
+#
+cat <<'End-of-File' >$tmp.xconfirm
+#!/bin/sh
+# generate no output so pmlogger will report the message
+exit 0
+End-of-File
+chmod 755 $tmp.xconfirm
+export PCP_XCONFIRM_PROG=$tmp.xconfirm
+
+# real QA test starts here
+
+echo
+echo "=== end-of-file, launcher exited =="
+echo 'V0
+Fmyfolio' >$tmp.ctl
+_do die
+
+echo
+echo "=== Quit =="
+echo 'V0
+Fmyfolio
+Q' >$tmp.ctl
+_do die
+
+echo
+echo "=== Quit + can replay =="
+echo 'V0
+Fmyfolio
+R
+Q' >$tmp.ctl
+_do die
+
+echo
+echo "=== Detach =="
+echo 'V0
+Fmyfolio
+D' >$tmp.ctl
+_do alive
+
+echo
+echo "=== Status =="
+echo 'V0
+Fmyfolio
+?' >$tmp.ctl
+_do die
+
+echo
+echo "=== Bad control =="
+echo 'V0
+Fmyfolio
+Junk' >$tmp.ctl
+_do die
+
+# success, all done
+status=0
+exit
diff --git a/qa/304.out b/qa/304.out
new file mode 100644
index 0000000..3d5cc53
--- /dev/null
+++ b/qa/304.out
@@ -0,0 +1,146 @@
+QA output created by 304
+
+=== end-of-file, launcher exited ==
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+recording session control: "V0"
+recording session control: "Fmyfolio"
+recording session control: eof
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "myfolio" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has exited and you must decide if the PCP recording session should be terminated or continued. If recording is continued the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM PID
+
+
+Terminate this PCP recording session now?pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== Quit ==
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+recording session control: "V0"
+recording session control: "Fmyfolio"
+recording session control: "Q"
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "myfolio" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has terminated this PCP recording session.
+pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== Quit + can replay ==
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+recording session control: "V0"
+recording session control: "Fmyfolio"
+recording session control: "R"
+recording session control: "Q"
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "myfolio" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+This archive may be replayed with the following command:
+ $ pmafm myfolio replay
+
+The application that launched pmlogger has terminated this PCP recording session.
+pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== Detach ==
+As expected, pmlogger is still running ... kill it off
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+recording session control: "V0"
+recording session control: "Fmyfolio"
+recording session control: "D"
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "myfolio" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has asked pmlogger to continue independently and the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM PID
+
+Log finished DATE
+
+=== Status ==
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+recording session control: "V0"
+recording session control: "Fmyfolio"
+recording session control: "?"
+
+Warning: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "myfolio" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM PID
+recording session control: eof
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "myfolio" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has exited and you must decide if the PCP recording session should be terminated or continued. If recording is continued the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM PID
+
+
+Terminate this PCP recording session now?pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== Bad control ==
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+recording session control: "V0"
+recording session control: "Fmyfolio"
+recording session control: "Junk"
+Error: illegal recording session control message: "Junk"
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "myfolio" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has exited and you must decide if the PCP recording session should be terminated or continued. If recording is continued the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM PID
+
+
+Terminate this PCP recording session now?pmlogger: Recording session terminated, exiting
+
+Log finished DATE
diff --git a/qa/305 b/qa/305
new file mode 100755
index 0000000..b031d2f
--- /dev/null
+++ b/qa/305
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 305
+# PV 939998 affecting pmgadgets instance cache
+#
+
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+
+src/matchInstanceName "" ""
+src/matchInstanceName "" "a"
+src/matchInstanceName "" "ab"
+src/matchInstanceName "" "ab cd"
+src/matchInstanceName "" "ab de"
+
+echo
+
+src/matchInstanceName "a" ""
+src/matchInstanceName "a" "a"
+src/matchInstanceName "a" "ab"
+src/matchInstanceName "a" "ab cd"
+src/matchInstanceName "a" "ab de"
+
+echo
+
+src/matchInstanceName "ab" ""
+src/matchInstanceName "ab" "a"
+src/matchInstanceName "ab" "ab"
+src/matchInstanceName "ab" "ab cd"
+src/matchInstanceName "ab" "ab de"
+
+echo
+
+src/matchInstanceName "ab cd" ""
+src/matchInstanceName "ab cd" "a"
+src/matchInstanceName "ab cd" "ab"
+src/matchInstanceName "ab cd" "ab cd"
+src/matchInstanceName "ab cd" "ab de"
+
+echo
+
+src/matchInstanceName "ab de" ""
+src/matchInstanceName "ab de" "a"
+src/matchInstanceName "ab de" "ab"
+src/matchInstanceName "ab de" "ab cd"
+src/matchInstanceName "ab de" "ab de"
+
+# success, all done
+exit
diff --git a/qa/305.out b/qa/305.out
new file mode 100644
index 0000000..53f26b8
--- /dev/null
+++ b/qa/305.out
@@ -0,0 +1,30 @@
+QA output created by 305
+"" "" true
+"" "a" false
+"" "ab" false
+"" "ab cd" false
+"" "ab de" false
+
+"a" "" false
+"a" "a" true
+"a" "ab" false
+"a" "ab cd" false
+"a" "ab de" false
+
+"ab" "" false
+"ab" "a" false
+"ab" "ab" true
+"ab" "ab cd" true
+"ab" "ab de" true
+
+"ab cd" "" false
+"ab cd" "a" false
+"ab cd" "ab" true
+"ab cd" "ab cd" true
+"ab cd" "ab de" true
+
+"ab de" "" false
+"ab de" "a" false
+"ab de" "ab" true
+"ab de" "ab cd" true
+"ab de" "ab de" true
diff --git a/qa/306 b/qa/306
new file mode 100755
index 0000000..61f13ec
--- /dev/null
+++ b/qa/306
@@ -0,0 +1,32 @@
+#!/bin/sh
+# PCP QA Test No. 306
+# test pmpost
+# - pmpost "message"
+# - check that "message" is in $PCP_LOG_DIR/NOTICES
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_day=`date | $PCP_AWK_PROG '{ print $1 }'`
+_month=`date | $PCP_AWK_PROG '{ print $2 }'`
+_date=`date | $PCP_AWK_PROG '{ print $3 }'`
+
+$sudo $PCP_BINADM_DIR/pmpost "QA test $seq"
+tail -1 $PCP_LOG_DIR/NOTICES | sed -e 's/[0-9]*:[0-9]* //'
+
+# success, all done
+status=0
+exit
diff --git a/qa/306.out b/qa/306.out
new file mode 100644
index 0000000..67a74ce
--- /dev/null
+++ b/qa/306.out
@@ -0,0 +1,2 @@
+QA output created by 306
+QA test 306
diff --git a/qa/307 b/qa/307
new file mode 100755
index 0000000..4789c86
--- /dev/null
+++ b/qa/307
@@ -0,0 +1,73 @@
+#! /bin/sh
+# PCP QA Test No. 307
+# pv:936084 - nasflush from nasmgr causes high rate of tcp drops
+# (because it uses pmlc a lot)
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+numval=`pmprobe -v network.tcp.drops 2>/dev/null | $PCP_AWK_PROG '{print $2}'`
+if [ -z "$numval" -o "$numval" -lt 0 ]
+then
+ echo "metric network.tcp.drops is not available" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/Connected to primary pmlogger /d' \
+ -e '/Goodbye/d'
+}
+
+echo "network.tcp.drops+network.tcp.conndrops+network.tcp.timeoutdrop > 10;" \
+| pmie -v -t 1 >$tmp.trace &
+
+# real QA test starts here
+
+# quit to pmlc
+#
+i=0
+while [ $i -lt 10 ]
+do
+ echo quit | pmlc -P 2>&1 | _filter
+ i=`expr $i + 1`
+done
+
+# E-O-F to pmlc
+#
+i=0
+while [ $i -lt 10 ]
+do
+ pmlc -P </dev/null 2>&1 | _filter
+ i=`expr $i + 1`
+done
+
+# reconnect to pmlc
+#
+i=0
+while [ $i -lt 10 ]
+do
+ echo "connect primary"
+ i=`expr $i + 1`
+done \
+| pmlc -P 2>&1 | _filter
+
+sort -u $tmp.trace
+cp $tmp.trace $seq.full
+
+# success, all done
+exit
diff --git a/qa/307.out b/qa/307.out
new file mode 100644
index 0000000..258fc16
--- /dev/null
+++ b/qa/307.out
@@ -0,0 +1,4 @@
+QA output created by 307
+
+expr_1: ?
+expr_1: false
diff --git a/qa/308 b/qa/308
new file mode 100755
index 0000000..b57bc72
--- /dev/null
+++ b/qa/308
@@ -0,0 +1,288 @@
+#! /bin/sh
+# PCP QA Test No. 308
+# pmlogger and pmlc for proc metrics ... indom problems
+# pv #452417
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ # some of this is because Linux and IRIX mixes produce different
+ # PIDs for the proc metrics, and the name of the init process is
+ # different
+ # And on some Linux systems (e.g. Fedora 18), pid 1 is not init, but
+ # /usr/lib/systemd/systemd --switched-root --system --deserialize ...
+ #
+ _filter_pmdumplog \
+ | grep proc.psinfo.ppid \
+ | sed -e 's/000*/zeroes.../' \
+ -e 's/ 60\.8\.3 / PID /' \
+ -e 's/ 3\.1\.8 / PID /' \
+ -e 's/ 3\.8\.3 / PID /' \
+ -e 's/ init \[[0-9]*]/ init/' \
+ -e 's/ \/etc\/init\([ "]\)/ init\1/' \
+ -e 's/ \/sbin\/init\([ "]\)/ init\1/' \
+ -e 's/ \/usr\/lib\/systemd\/systemd\([ "]\)/ init\1/' \
+ -e 's/init .*"/init"/'
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+if [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ _notrun "No proc metrics for $PCP_PLATFORM"
+fi
+
+eval `./getpmcdhosts -L -n 2 -m 'proc.psinfo.ppid>=0' | sed -e 's/ / host2=/' -e 's/^/host1=/'`
+if [ -z "$host1" ]
+then
+ _notrun "Cannot get first remote pmcd host with proc.psinfo.ppid metrics"
+fi
+if [ -z "$host2" ]
+then
+ _notrun "Cannot get second remote pmcd host with proc.psinfo.ppid metrics"
+fi
+
+rm -f $seq.full
+echo "host1=$host1" >>$seq.full
+echo "host2=$host2" >>$seq.full
+done_clean=false
+
+install_on_cleanup=false
+pminfo proc >/dev/null 2>&1 && install_on_cleanup=true
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/proc; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/proc; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+( cd $PCP_PMDAS_DIR/proc; $sudo ./Install </dev/null >/dev/null 2>&1 )
+
+# real QA test starts here
+
+echo | tee -a $seq.full
+echo "pmlogger directly ..." | tee -a $seq.full
+inst=`pminfo -F proc.psinfo.ppid \
+ | sed -n -e '/inst \[1 /{
+s/^[^"]*"/"/
+s/] value .*//
+p
+}'`
+
+if [ -z "$inst" ]
+then
+ echo "Arrgh ... cannot find inst for local pid 1" | tee -a $seq.full
+ pminfo -F proc.psinfo.ppid >>$seq.full
+ exit
+fi
+
+echo "inst=$inst" >>$seq.full
+ps $PCP_PS_ALL_FLAGS | egrep "PID|$inst" >>$seq.full
+
+cat <<end-of-file >$tmp.conf
+log advisory on once { proc.psinfo.ppid[$inst] }
+end-of-file
+
+echo "=== pmlogger config ===" >>$seq.full
+cat $tmp.conf >>$seq.full
+
+rm -f $tmp.0 $tmp.index $tmp.meta
+pmlogger -s 1 -c $tmp.conf -l $tmp.log $tmp
+status=$?
+if [ $status -ne 0 ]
+then
+ echo "Warning: pmlogger exit status=$status"
+ cat $tmp.log
+fi
+x=`pmdumplog $tmp | _filter`
+if [ -z "$x" ]
+then
+ echo "Error: pmdumplog | filter produces nothing"
+ pmdumplog -a $tmp
+else
+ echo "$x"
+fi
+
+echo | tee -a $seq.full
+echo "pmlc for local pmlogger ..." | tee -a $seq.full
+rm -f $tmp.0 $tmp.index $tmp.meta $tmp.log
+pmlogger -L -s 1 -c /dev/null -l $tmp.log $tmp &
+pid=$!
+_wait_for_pmlogger $pid $tmp.log
+( echo "connect $!"; cat $tmp.conf ) | pmlc
+sleep 2
+x=`pmdumplog $tmp | _filter`
+if [ -z "$x" ]
+then
+ echo "Error: pmdumplog | filter produces nothing"
+ $signal -s TERM $pid
+ pmdumplog -a $tmp
+else
+ echo "$x"
+fi
+
+echo | tee -a $seq.full
+echo "pmlc local, pmcd and pmlogger remote ..." | tee -a $seq.full
+
+inst=`pminfo -F -h $host1 proc.psinfo.ppid \
+ | sed -n -e '/inst \[1 /{
+s/^[^"]*"/"/
+s/] value .*//
+p
+}'`
+if [ -z "$inst" ]
+then
+ echo "Arrgh ... cannot find inst for host $host1 pid 1" | tee -a $seq.full
+ pminfo -F -h $host1 proc.psinfo.ppid >>$seq.full
+ exit
+fi
+cat <<end-of-file >$tmp.conf
+log advisory on once { proc.psinfo.ppid[$inst] }
+end-of-file
+
+echo "inst=$inst" >>$seq.full
+ssh -q pcpqa@$host1 ps -e | egrep "PID|$inst" >>$seq.full
+echo "=== pmlogger config ===" >>$seq.full
+cat $tmp.conf >>$seq.full
+
+cat <<end-of-file >$tmp.cmd
+. \$PCP_DIR/etc/pcp.env
+rm -f /tmp/\$\$.*
+( \$PCP_BINADM_DIR/pmlogger -L -s 1 -c /dev/null -l /tmp/\$\$.log /tmp/\$\$ </dev/null >/dev/null 2>&1 ) &
+echo rem_pid=\$! rem_tmp=\$\$
+end-of-file
+
+scp -q $tmp.cmd pcpqa@$host1:$tmp.cmd
+eval `ssh -q pcpqa@$host1 /bin/sh $tmp.cmd`
+
+if [ -z "$rem_pid" ]
+then
+ echo "Arrgh ... failed to get remote pmlogger pid"
+ exit
+fi
+
+if [ -z "$rem_tmp" ]
+then
+ echo "Arrgh ... failed to get remote archive basename"
+ exit
+fi
+
+# if this fails, /hosts/$host1 may not help to diagnose the failure
+# if $host1 is not exporting filesystems via NFS and/or the local
+# host is not mounting them via NFS ... only matters if the remote
+# pmlogger does not start ...
+#
+_wait_for_pmlogger "-h $host1 $rem_pid" /hosts/$host1/tmp/$rem_tmp.log
+
+( echo "connect $rem_pid@$host1"; cat $tmp.conf ) | pmlc
+sleep 2
+rm -f $tmp.0 $tmp.meta $tmp.index
+scp -q pcpqa@$host1:/tmp/$rem_tmp.index $tmp.index
+scp -q pcpqa@$host1:/tmp/$rem_tmp.meta $tmp.meta
+scp -q pcpqa@$host1:/tmp/$rem_tmp.0 $tmp.0
+x=`pmdumplog $tmp | _filter`
+if [ -z "$x" ]
+then
+ echo "Error: pmdumplog | filter produces nothing"
+ $signal -s TERM $pid
+ pmdumplog -a $tmp
+else
+ echo "$x"
+fi
+ssh -q pcpqa@$host1 "rm -f /tmp/$rem_tmp.*"
+
+echo | tee -a $seq.full
+echo "pmlc local, pmcd remote on one host, pmlogger remote on a different host ..." | tee -a $seq.full
+# need this in the format of the pmcd that pmlogger is connected to
+#
+inst=`pminfo -F -h $host2 proc.psinfo.ppid \
+ | sed -n -e '/inst \[1 /{
+s/^[^"]*"/"/
+s/] value .*//
+p
+}'`
+if [ -z "$inst" ]
+then
+ echo "Arrgh ... cannot find inst for host $host2 pid 1" | tee -a $seq.full
+ pminfo -F -h $host2 proc.psinfo.ppid >>$seq.full
+ exit
+fi
+cat <<end-of-file >$tmp.conf
+log advisory on once { proc.psinfo.ppid[$inst] }
+end-of-file
+
+echo "inst=$inst" >>$seq.full
+ssh -q pcpqa@$host2 ps -e | egrep "PID|$inst" >>$seq.full
+echo "=== pmlogger config ===" >>$seq.full
+cat $tmp.conf >>$seq.full
+
+cat <<end-of-file >$tmp.cmd
+. \$PCP_DIR/etc/pcp.env
+rm -f /tmp/\$\$.*
+( \$PCP_BINADM_DIR/pmlogger -h $host2 -L -s 1 -c /dev/null -l /tmp/\$\$.log /tmp/\$\$ </dev/null >/dev/null 2>&1 ) &
+echo rem_pid=\$! rem_tmp=\$\$
+end-of-file
+
+scp $tmp.cmd pcpqa@$host1:$tmp.cmd
+eval `ssh -q pcpqa@$host1 /bin/sh $tmp.cmd`
+
+if [ -z "$rem_pid" ]
+then
+ echo "Arrgh ... failed to get remote pmlogger pid"
+ exit
+fi
+
+if [ -z "$rem_tmp" ]
+then
+ echo "Arrgh ... failed to get remote archive basename"
+ exit
+fi
+
+# see note above about /hosts/$host1
+#
+_wait_for_pmlogger "-h $host1 $rem_pid" /hosts/$host1/tmp/$rem_tmp.log
+
+( echo "connect $rem_pid@$host1"; cat $tmp.conf ) | pmlc
+sleep 2
+rm -f $tmp.0 $tmp.meta $tmp.index
+scp pcpqa@$host1:/tmp/$rem_tmp.index $tmp.index
+scp pcpqa@$host1:/tmp/$rem_tmp.meta $tmp.meta
+scp pcpqa@$host1:/tmp/$rem_tmp.0 $tmp.0
+x=`pmdumplog $tmp | _filter`
+if [ -z "$x" ]
+then
+ echo "Error: pmdumplog | filter produces nothing"
+ $signal -s TERM $pid
+ pmdumplog -a $tmp
+else
+ echo "$x"
+fi
+ssh -q pcpqa@$host1 "rm -f /tmp/$rem_tmp.*"
+
+# success, all done
+status=0
+exit
diff --git a/qa/308.out b/qa/308.out
new file mode 100644
index 0000000..a0f73d2
--- /dev/null
+++ b/qa/308.out
@@ -0,0 +1,13 @@
+QA output created by 308
+
+pmlogger directly ...
+TIMESTAMP PID (proc.psinfo.ppid): inst [1 or "zeroes...1 init"] value 0
+
+pmlc for local pmlogger ...
+TIMESTAMP PID (proc.psinfo.ppid): inst [1 or "zeroes...1 init"] value 0
+
+pmlc local, pmcd and pmlogger remote ...
+TIMESTAMP PID (proc.psinfo.ppid): inst [1 or "zeroes...1 init"] value 0
+
+pmlc local, pmcd remote on one host, pmlogger remote on a different host ...
+TIMESTAMP PID (proc.psinfo.ppid): inst [1 or "zeroes...1 init"] value 0
diff --git a/qa/309 b/qa/309
new file mode 100755
index 0000000..9583579
--- /dev/null
+++ b/qa/309
@@ -0,0 +1,36 @@
+#! /bin/sh
+# PCP QA Test No. 309
+# test for PV 941663 - pmdaInstance broken for name == NULL and inst != PM_IN_NULL in cached PMDAs
+#
+# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+#
+# pmcd will segfault and pmstore will return an IPC error on linux
+# systems that do not have the fix. This should not fail on IRIX
+# (other than the expected pmstore EPERM error), but on Linux the
+# disk.dev instance domain in the linux PMDA is cached, and the
+# linux PMDA is a DSO, so pmcd takes the segfault.
+#
+echo 'expect "disk.dev.read: pmStore: No permission to perform requested operation"'
+pmstore disk.dev.read 1 2>&1 \
+| fgrep 'pmStore:' \
+| sed -e 's/Permission denied/No permission to perform requested operation/'
+$sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_start
+status=0
+
+# success, all done
+exit
diff --git a/qa/309.out b/qa/309.out
new file mode 100644
index 0000000..5e1c26a
--- /dev/null
+++ b/qa/309.out
@@ -0,0 +1,6 @@
+QA output created by 309
+expect "disk.dev.read: pmStore: No permission to perform requested operation"
+disk.dev.read: pmStore: No permission to perform requested operation
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/310 b/qa/310
new file mode 100755
index 0000000..37afc3b
--- /dev/null
+++ b/qa/310
@@ -0,0 +1,36 @@
+#! /bin/sh
+# PCP QA Test No. 310
+# pmie botch in folding numeric constants used in macros
+#
+# Copyright (c) 2007 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+# bad pmie's don't report "true" for most rules and all rules by the
+# third sample ... any false or syntax error or seg fault is a botch
+# due to premature freeing of the Expr for the folded constant $spd
+
+pmie -t 1sec -T +5sec -v <<'End-of-File' 2>&1 | grep -v 'evaluator exiting'
+spd = 24 * 60 * 60;
+hinv.ncpu < 1 * $spd;
+hinv.ncpu < 2 + $spd;
+hinv.ncpu < hinv.ndisk + $spd - hinv.ndisk;
+some_sample ( hinv.ncpu@0..2 < hinv.ncpu@0..2 + 3 * $spd / 4);
+hinv.ncpu < 1 * $spd;
+End-of-File
+
+# success, all done
+exit
diff --git a/qa/310.out b/qa/310.out
new file mode 100644
index 0000000..9140d8a
--- /dev/null
+++ b/qa/310.out
@@ -0,0 +1,37 @@
+QA output created by 310
+expr_1: true
+expr_2: true
+expr_3: true
+expr_4: unknown
+expr_5: true
+
+expr_1: true
+expr_2: true
+expr_3: true
+expr_4: unknown
+expr_5: true
+
+expr_1: true
+expr_2: true
+expr_3: true
+expr_4: true
+expr_5: true
+
+expr_1: true
+expr_2: true
+expr_3: true
+expr_4: true
+expr_5: true
+
+expr_1: true
+expr_2: true
+expr_3: true
+expr_4: true
+expr_5: true
+
+expr_1: true
+expr_2: true
+expr_3: true
+expr_4: true
+expr_5: true
+
diff --git a/qa/311 b/qa/311
new file mode 100755
index 0000000..f27de92
--- /dev/null
+++ b/qa/311
@@ -0,0 +1,78 @@
+#! /bin/sh
+# PCP QA Test No. 311
+# check error code handling of 1.3 pmlogger generated archives
+# pv #509592
+#
+# Note: archive src/err_v1 has been converted from V.1 to V.2 format,
+# so this test is now somewhat different.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ :
+else
+ # no support for V1 archives
+ _notrun "no support for V1 archives"
+ # NOTREACHED
+fi
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_order()
+{
+ $PCP_AWK_PROG '
+NF == 0 { next }
+/^pmcd/ { if (NF > 1) print; else printf("%s|", $0); next }
+/^proc/ { printf("%s|", $0); next }
+/^sample/ { printf("%s|", $0); next }
+ { print }' \
+ | LC_COLLATE=POSIX sort \
+ | $PCP_AWK_PROG -F'|' '{ print $1; if (NF == 2) print $2 }'
+}
+
+_filter()
+{
+ sed \
+ -e '/^\[[0-9]* bytes]/d' \
+ -e 's/): inst/): inst/'
+}
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+echo "== pminfo preamble and no values =="
+pminfo -n src/root_irix -z -f -a src/err_v1 | _order
+
+echo
+echo "== pminfo skip preamble and errors instead of values =="
+pminfo -n src/root_irix -z -O 1sec -f -a src/err_v1 | _order
+
+echo
+echo "== pmdumplog for 1 metric (expect error) ==="
+pmdumplog -n src/root_irix -z src/err_v1 sample.bad.nosupport
+
+echo
+echo "== diffs for pmdumplog all metrics compared to PCP 1.x output (expect none) =="
+pmdumplog -n src/root_irix -z -a src/err_v1 \
+| _filter \
+| diff - src/err_v1.dump
+
+# success, all done
+exit
diff --git a/qa/311.out b/qa/311.out
new file mode 100644
index 0000000..860821d
--- /dev/null
+++ b/qa/311.out
@@ -0,0 +1,47 @@
+QA output created by 311
+== pminfo preamble and no values ==
+Note: timezone set to local timezone of host "splat"
+pmcd.pmlogger.archive
+ inst [14737 or "14737"] value "/tmp/err_v1"
+pmcd.pmlogger.host
+ inst [14737 or "14737"] value "splat.melbourne.sgi.com"
+pmcd.pmlogger.port
+ inst [14737 or "14737"] value 4332
+proc.psusage.utime
+Error: Explicit instance identifier(s) required
+sample.bad.nosupport
+Error: Metric not supported by this version of monitored application
+sample.needprofile
+Error: Explicit instance identifier(s) required
+sample.noinst
+No value(s) available!
+
+== pminfo skip preamble and errors instead of values ==
+Note: timezone set to local timezone of host "splat"
+pmcd.pmlogger.archive: pmFetch: End of PCP archive log
+pmcd.pmlogger.host: pmFetch: End of PCP archive log
+pmcd.pmlogger.port: pmFetch: End of PCP archive log
+proc.psusage.utime
+Error: Explicit instance identifier(s) required
+sample.bad.nosupport
+Error: Metric not supported by this version of monitored application
+sample.needprofile
+Error: Explicit instance identifier(s) required
+sample.noinst
+No value(s) available!
+
+== pmdumplog for 1 metric (expect error) ===
+Note: timezone set to local timezone of host "splat" from archive
+
+
+04:48:42.584 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+
+04:48:43.547 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+
+04:48:44.557 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+
+04:48:45.557 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+
+04:48:46.557 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+
+== diffs for pmdumplog all metrics compared to PCP 1.x output (expect none) ==
diff --git a/qa/312 b/qa/312
new file mode 100755
index 0000000..6f035bc
--- /dev/null
+++ b/qa/312
@@ -0,0 +1,39 @@
+#! /bin/sh
+# PCP QA Test No. 312
+# sginap use in pmie with large deltas on 32 bit platforms can
+# wrap and cause a sleep with negative size which, funnily enough,
+# also causes multiple immediate rule evaluations (which we can
+# now test for, to detect pmie brokenness).
+#
+# Copyright (c) 2007 Aconex.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo 'load = sample.load;' | pmie -v -t 1hour >$tmp.out 2>$tmp.err &
+pmie_pid=$!
+
+sleep 2
+$signal -s TERM $pmie_pid
+wait
+
+echo "pmie output ..."
+cat $tmp.out
+echo "pmie stderr ..."
+cat $tmp.err
+
+# success, all done
+status=0
+exit
diff --git a/qa/312.out b/qa/312.out
new file mode 100644
index 0000000..26bb8c3
--- /dev/null
+++ b/qa/312.out
@@ -0,0 +1,5 @@
+QA output created by 312
+pmie output ...
+load: 42
+
+pmie stderr ...
diff --git a/qa/313 b/qa/313
new file mode 100755
index 0000000..73cc742
--- /dev/null
+++ b/qa/313
@@ -0,0 +1,105 @@
+#! /bin/sh
+# PCP QA Test No. 313
+# assorted issues associated with pmval and archives with mark
+# records
+#
+## note this file edited by hand to simulate the expected output
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = irix -a \( $PCP_EOE_VER -ge 6512 -o \
+ $PCP_EOE_VER = 6200 \) ]
+then
+ ln $seq.62_6512plus $seq.out || exit 1
+elif [ $PCP_PLATFORM = irix ]
+then
+ ln $seq.6511minus $seq.out || exit 1
+elif [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ # same output for Linux, Mac OS X and OpenSolaris
+ ln $seq.62_6512plus $seq.out || exit 1
+else
+ _notrun "Need qualified output for $PCP_PLATFORM"
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+offset=`_arch_start src/changeinst -0.25`
+
+# real QA test starts here
+
+for delta in 1sec 0.5sec
+do
+
+echo
+echo "=== delta=$delta counter in each non-preamble result in all 3 sections ==="
+pmval -O $offset -t $delta -z -a src/changeinst sample.seconds 2>$tmp.err
+cat $tmp.err
+
+echo
+echo "=== delta=$delta counter in the 2nd section only ==="
+pmval -O $offset -t $delta -z -a src/changeinst sample.milliseconds 2>$tmp.err
+cat $tmp.err
+
+echo
+echo "=== delta=$delta instantaneous in 1st and 3rd sections ==="
+pmval -O $offset -t $delta -z -a src/changeinst sample.drift 2>$tmp.err
+cat $tmp.err
+
+echo
+echo "=== delta=$delta discrete and logged once in the 1st and 3rd sections ==="
+pmval -O $offset -t $delta -z -a src/changeinst hinv.ncpu 2>$tmp.err
+cat $tmp.err
+
+echo
+echo "=== delta=$delta counter and indom all over the place ==="
+echo " lo0 ec0 ec2 section"
+echo " yes yes no 1"
+echo " no no no 2"
+echo " yes no yes 3"
+pmval -O $offset -t $delta -z -a src/changeinst -i ec0,ec2,lo0 irix.network.interface.total.packets 2>$tmp.err
+cat $tmp.err
+
+echo
+echo "=== delta=$delta instantaneous and indom all over the place ==="
+echo " bin-100 bin-200 bin-300 bin-400 bin-500 section"
+echo " yes yes no yes no 1"
+echo " yes no yes yes once 2"
+echo " no yes yes yes no 3"
+pmval -O $offset -t $delta -z -a src/changeinst -i bin-100,bin-200,bin-300,bin-400,bin-500 sample.bin 2>$tmp.err
+cat $tmp.err
+
+echo
+echo "=== delta=$delta discrete logged once, different indom in each section ==="
+pmval -O $offset -t $delta -z -a src/changeinst pmcd.pmlogger.port 2>$tmp.err
+cat $tmp.err
+
+done
+
+echo
+echo "=== the whole shooting match ==="
+pmdumplog -z -a src/changeinst \
+| sed -e '/\[[0-9][0-9]* bytes\]/d'
+
+# success, all done
+status=0
+exit
diff --git a/qa/313.62_6512plus b/qa/313.62_6512plus
new file mode 100644
index 0000000..0a51e8c
--- /dev/null
+++ b/qa/313.62_6512plus
@@ -0,0 +1,871 @@
+QA output created by 313
+
+=== delta=1sec counter in each non-preamble result in all 3 sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.seconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 No values available
+07:45:43.422 1.000
+07:45:44.422 1.000
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 1.000
+07:45:52.422 1.000
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+07:45:57.422 No values available
+07:45:58.422 1.000
+07:45:59.422 1.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=1sec counter in the 2nd section only ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.milliseconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 No values available
+07:45:43.422 No values available
+07:45:44.422 No values available
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 1.000
+07:45:52.422 1.000
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+07:45:57.422 No values available
+07:45:58.422 No values available
+07:45:59.422 No values available
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=1sec instantaneous in 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.drift
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 184
+07:45:43.422 183
+07:45:44.422 183
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 No values available
+07:45:52.422 No values available
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+07:45:57.422 70
+07:45:58.422 50
+07:45:59.422 40
+
+=== delta=1sec discrete and logged once in the 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: hinv.ncpu
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 1
+07:45:43.422 1
+07:45:44.422 1
+07:45:45.422 1
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 No values available
+07:45:52.422 No values available
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 1
+07:45:57.422 1
+07:45:58.422 1
+07:45:59.422 1
+
+=== delta=1sec counter and indom all over the place ===
+ lo0 ec0 ec2 section
+ yes yes no 1
+ no no no 2
+ yes no yes 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: irix.network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:43.422 5.000 ? 48.00
+07:45:44.422 1.000 ? 8.000
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 No values available
+07:45:52.422 No values available
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+
+ ec0 ec2 lo0
+07:45:57.422 No values available
+07:45:58.422 ? 35.00 28.00
+07:45:59.422 ? 44.00 8.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=1sec instantaneous and indom all over the place ===
+ bin-100 bin-200 bin-300 bin-400 bin-500 section
+ yes yes no yes no 1
+ yes no yes yes once 2
+ no yes yes yes no 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.bin
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:42.422 100 200 ? 400 ?
+07:45:43.422 100 200 ? 400 ?
+07:45:44.422 100 200 ? 400 ?
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:50.422 100 ? 300 400 ?
+07:45:51.422 100 ? 300 400 ?
+07:45:52.422 100 ? 300 400 ?
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:57.422 ? 200 300 400 500
+07:45:58.422 ? 200 300 400 500
+07:45:59.422 ? 200 300 400 500
+
+=== delta=1sec discrete logged once, different indom in each section ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: pmcd.pmlogger.port
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+
+ 1318 1342 1368
+07:45:41.422 4331 ? ?
+07:45:42.422 4331 ? ?
+07:45:43.422 4331 ? ?
+07:45:44.422 4331 ? ?
+07:45:45.422 4331 ? ?
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+
+ 1318 1342 1368
+07:45:49.422 ? 4331 ?
+07:45:50.422 ? 4331 ?
+07:45:51.422 ? 4331 ?
+07:45:52.422 ? 4331 ?
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+
+ 1318 1342 1368
+07:45:56.422 ? ? 4331
+07:45:57.422 ? ? 4331
+07:45:58.422 ? ? 4331
+07:45:59.422 ? ? 4331
+
+=== delta=0.5sec counter in each non-preamble result in all 3 sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.seconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+07:45:42.422 No values available
+07:45:42.922 2.000
+07:45:43.422 0.0
+07:45:43.922 2.000
+07:45:44.422 0.0
+07:45:44.922 2.000
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 2.000
+07:45:50.922 0.0
+07:45:51.422 2.000
+07:45:51.922 0.0
+07:45:52.422 2.000
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+07:45:56.922 No values available
+07:45:57.422 2.000
+07:45:57.922 0.0
+07:45:58.422 2.000
+07:45:58.922 0.0
+07:45:59.422 2.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=0.5sec counter in the 2nd section only ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.milliseconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+07:45:42.422 No values available
+07:45:42.922 No values available
+07:45:43.422 No values available
+07:45:43.922 No values available
+07:45:44.422 No values available
+07:45:44.922 No values available
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 1.000
+07:45:50.922 1.000
+07:45:51.422 1.000
+07:45:51.922 1.000
+07:45:52.422 1.000
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+07:45:56.922 No values available
+07:45:57.422 No values available
+07:45:57.922 No values available
+07:45:58.422 No values available
+07:45:58.922 No values available
+07:45:59.422 No values available
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=0.5sec instantaneous in 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.drift
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+07:45:42.422 184
+07:45:42.922 184
+07:45:43.422 183
+07:45:43.922 183
+07:45:44.422 183
+07:45:44.922 166
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 No values available
+07:45:50.922 No values available
+07:45:51.422 No values available
+07:45:51.922 No values available
+07:45:52.422 No values available
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+07:45:56.922 70
+07:45:57.422 70
+07:45:57.922 50
+07:45:58.422 50
+07:45:58.922 40
+07:45:59.422 40
+
+=== delta=0.5sec discrete and logged once in the 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: hinv.ncpu
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 1
+07:45:42.422 1
+07:45:42.922 1
+07:45:43.422 1
+07:45:43.922 1
+07:45:44.422 1
+07:45:44.922 1
+07:45:45.422 1
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 No values available
+07:45:50.922 No values available
+07:45:51.422 No values available
+07:45:51.922 No values available
+07:45:52.422 No values available
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 1
+07:45:56.922 1
+07:45:57.422 1
+07:45:57.922 1
+07:45:58.422 1
+07:45:58.922 1
+07:45:59.422 1
+
+=== delta=0.5sec counter and indom all over the place ===
+ lo0 ec0 ec2 section
+ yes yes no 1
+ no no no 2
+ yes no yes 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: irix.network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:42.922 6.000 ? 48.00
+07:45:43.422 4.000 ? 48.00
+07:45:43.922 2.000 ? 8.000
+07:45:44.422 0.0 ? 8.000
+07:45:44.922 4.000 ? 8.000
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 No values available
+07:45:50.922 No values available
+07:45:51.422 No values available
+07:45:51.922 No values available
+07:45:52.422 No values available
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+
+ ec0 ec2 lo0
+07:45:56.922 No values available
+07:45:57.422 ? 32.00 48.00
+07:45:57.922 ? 30.00 48.00
+07:45:58.422 ? 40.00 8.000
+07:45:58.922 ? 40.00 8.000
+07:45:59.422 ? 48.00 8.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=0.5sec instantaneous and indom all over the place ===
+ bin-100 bin-200 bin-300 bin-400 bin-500 section
+ yes yes no yes no 1
+ yes no yes yes once 2
+ no yes yes yes no 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.bin
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:42.422 100 200 ? 400 ?
+07:45:42.922 100 200 ? 400 ?
+07:45:43.422 100 200 ? 400 ?
+07:45:43.922 100 200 ? 400 ?
+07:45:44.422 100 200 ? 400 ?
+07:45:44.922 100 200 ? 400 ?
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:49.922 100 ? 300 400 ?
+07:45:50.422 100 ? 300 400 ?
+07:45:50.922 100 ? 300 400 ?
+07:45:51.422 100 ? 300 400 ?
+07:45:51.922 100 ? 300 400 ?
+07:45:52.422 100 ? 300 400 ?
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:56.922 ? 200 300 400 500
+07:45:57.422 ? 200 300 400 500
+07:45:57.922 ? 200 300 400 500
+07:45:58.422 ? 200 300 400 500
+07:45:58.922 ? 200 300 400 500
+07:45:59.422 ? 200 300 400 500
+
+=== delta=0.5sec discrete logged once, different indom in each section ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: pmcd.pmlogger.port
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+
+ 1318 1342 1368
+07:45:41.422 4331 ? ?
+07:45:41.922 4331 ? ?
+07:45:42.422 4331 ? ?
+07:45:42.922 4331 ? ?
+07:45:43.422 4331 ? ?
+07:45:43.922 4331 ? ?
+07:45:44.422 4331 ? ?
+07:45:44.922 4331 ? ?
+07:45:45.422 4331 ? ?
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+
+ 1318 1342 1368
+07:45:48.922 ? 4331 ?
+07:45:49.422 ? 4331 ?
+07:45:49.922 ? 4331 ?
+07:45:50.422 ? 4331 ?
+07:45:50.922 ? 4331 ?
+07:45:51.422 ? 4331 ?
+07:45:51.922 ? 4331 ?
+07:45:52.422 ? 4331 ?
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+
+ 1318 1342 1368
+07:45:55.922 ? ? 4331
+07:45:56.422 ? ? 4331
+07:45:56.922 ? ? 4331
+07:45:57.422 ? ? 4331
+07:45:57.922 ? ? 4331
+07:45:58.422 ? ? 4331
+07:45:58.922 ? ? 4331
+07:45:59.422 ? ? 4331
+
+=== the whole shooting match ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Aug 5 07:45:41.422 1997
+ ending Tue Aug 5 07:45:59.912 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 1.18.2 (hinv.ncpu)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 1.25.19 (irix.network.interface.total.packets)
+ Data Type: 32-bit unsigned int InDom: 1.6 0x400006
+ Semantics: counter Units: count
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 29.0.2 (sample.seconds)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+PMID: 29.0.3 (sample.milliseconds)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 1.6
+07:45:42.422 3 instances
+ 1 or "ec0"
+ 2 or "ec2"
+ 3 or "lo0"
+07:45:56.912 3 instances
+ 1 or "ec0"
+ 2 or "ec2"
+ 3 or "lo0"
+InDom: 29.2
+07:45:42.422 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+07:45:48.657 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+07:45:56.912 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 2.1
+07:45:41.422 1 instances
+ 1318 or "1318"
+07:45:48.643 1 instances
+ 1342 or "1342"
+07:45:55.913 1 instances
+ 1368 or "1368"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+07:45:41.422 0 190 132
+07:45:41.422 0 231 256
+07:45:42.422 0 673 440
+07:45:42.422 0 867 440
+07:45:48.643 0 908 1016
+07:45:48.657 0 1080 1056
+07:45:55.913 0 1180 1632
+07:45:56.912 0 1352 1804
+07:45:56.912 0 1416 1804
+
+07:45:41.422 2.3.3 (pmcd.pmlogger.host): inst [1318 or "1318"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [1318 or "1318"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1318 or "1318"] value "/tmp/1306.A"
+
+07:45:41.435 1.18.2 (hinv.ncpu): value 1
+
+07:45:42.422 29.0.7 (sample.drift): value 184
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9993
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648807
+ inst [3 or "lo0"] value 315790
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:43.422 29.0.7 (sample.drift): value 183
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9994
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648812
+ inst [3 or "lo0"] value 315838
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:44.422 29.0.7 (sample.drift): value 166
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9995
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648813
+ inst [3 or "lo0"] value 315846
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:45.422 29.0.7 (sample.drift): value 117
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9996
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648816
+ inst [3 or "lo0"] value 315854
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:45.423 <mark>
+
+07:45:48.643 2.3.3 (pmcd.pmlogger.host): inst [1342 or "1342"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [1342 or "1342"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1342 or "1342"] value "/tmp/1306.B"
+
+07:45:48.657 29.0.6 (sample.bin): inst [500 or "bin-500"] value 500
+
+07:45:49.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10000485.487
+ 29.0.2 (sample.seconds): value 10000
+
+07:45:50.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10001485.28
+ 29.0.2 (sample.seconds): value 10001
+
+07:45:51.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10002485.518
+ 29.0.2 (sample.seconds): value 10002
+
+07:45:52.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10003485.271
+ 29.0.2 (sample.seconds): value 10003
+
+07:45:52.642 <mark>
+
+07:45:55.913 2.3.3 (pmcd.pmlogger.host): inst [1368 or "1368"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [1368 or "1368"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1368 or "1368"] value "/tmp/1306.C"
+
+07:45:55.928 1.18.2 (hinv.ncpu): value 1
+
+07:45:56.912 29.0.7 (sample.drift): value 70
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10007
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106724
+ inst [3 or "lo0"] value 316134
+
+07:45:57.912 29.0.7 (sample.drift): value 50
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10008
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106755
+ inst [3 or "lo0"] value 316182
+
+07:45:58.912 29.0.7 (sample.drift): value 40
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10009
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106795
+ inst [3 or "lo0"] value 316190
+
+07:45:59.912 29.0.7 (sample.drift): value 26
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10010
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106843
+ inst [3 or "lo0"] value 316198
diff --git a/qa/313.6511minus b/qa/313.6511minus
new file mode 100644
index 0000000..5a2f889
--- /dev/null
+++ b/qa/313.6511minus
@@ -0,0 +1,871 @@
+QA output created by 313
+
+=== delta=1sec counter in each non-preamble result in all 3 sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.seconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 No values available
+07:45:43.422 1.000
+07:45:44.422 1.000
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 1.000
+07:45:52.422 1.000
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+07:45:57.422 No values available
+07:45:58.422 1.000
+07:45:59.422 1.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=1sec counter in the 2nd section only ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.milliseconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 No values available
+07:45:43.422 No values available
+07:45:44.422 No values available
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 1.000
+07:45:52.422 1.000
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+07:45:57.422 No values available
+07:45:58.422 No values available
+07:45:59.422 No values available
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=1sec instantaneous in 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.drift
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 184
+07:45:43.422 183
+07:45:44.422 183
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 No values available
+07:45:52.422 No values available
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+07:45:57.422 70
+07:45:58.422 50
+07:45:59.422 40
+
+=== delta=1sec discrete and logged once in the 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: hinv.ncpu
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+07:45:42.422 1
+07:45:43.422 1
+07:45:44.422 1
+07:45:45.422 1
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 No values available
+07:45:52.422 No values available
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 1
+07:45:57.422 1
+07:45:58.422 1
+07:45:59.422 1
+
+=== delta=1sec counter and indom all over the place ===
+ lo0 ec0 ec2 section
+ yes yes no 1
+ no no no 2
+ yes no yes 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:43.422 5.000 ? 48.00
+07:45:44.422 1.000 ? 8.000
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+07:45:50.422 No values available
+07:45:51.422 No values available
+07:45:52.422 No values available
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+
+ ec0 ec2 lo0
+07:45:57.422 No values available
+07:45:58.422 ? 35.00 28.00
+07:45:59.422 ? 44.00 8.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=1sec instantaneous and indom all over the place ===
+ bin-100 bin-200 bin-300 bin-400 bin-500 section
+ yes yes no yes no 1
+ yes no yes yes once 2
+ no yes yes yes no 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.bin
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+07:45:41.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:42.422 100 200 ? 400 ?
+07:45:43.422 100 200 ? 400 ?
+07:45:44.422 100 200 ? 400 ?
+07:45:45.422 No values available
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+07:45:49.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:50.422 100 ? 300 400 ?
+07:45:51.422 100 ? 300 400 ?
+07:45:52.422 100 ? 300 400 ?
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+07:45:56.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:57.422 ? 200 300 400 500
+07:45:58.422 ? 200 300 400 500
+07:45:59.422 ? 200 300 400 500
+
+=== delta=1sec discrete logged once, different indom in each section ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: pmcd.pmlogger.port
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 19
+interval: 1.00 sec
+
+ 1368 1342 1318
+07:45:41.422 ? ? 4331
+07:45:42.422 ? ? 4331
+07:45:43.422 ? ? 4331
+07:45:44.422 ? ? 4331
+07:45:45.422 ? ? 4331
+07:45:46.422 No values available
+07:45:47.422 No values available
+07:45:48.422 No values available
+
+ 1368 1342 1318
+07:45:49.422 ? 4331 ?
+07:45:50.422 ? 4331 ?
+07:45:51.422 ? 4331 ?
+07:45:52.422 ? 4331 ?
+07:45:53.422 No values available
+07:45:54.422 No values available
+07:45:55.422 No values available
+
+ 1368 1342 1318
+07:45:56.422 4331 ? ?
+07:45:57.422 4331 ? ?
+07:45:58.422 4331 ? ?
+07:45:59.422 4331 ? ?
+
+=== delta=0.5sec counter in each non-preamble result in all 3 sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.seconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+07:45:42.422 No values available
+07:45:42.922 2.000
+07:45:43.422 0.0
+07:45:43.922 2.000
+07:45:44.422 0.0
+07:45:44.922 2.000
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 2.000
+07:45:50.922 0.0
+07:45:51.422 2.000
+07:45:51.922 0.0
+07:45:52.422 2.000
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+07:45:56.922 No values available
+07:45:57.422 2.000
+07:45:57.922 0.0
+07:45:58.422 2.000
+07:45:58.922 0.0
+07:45:59.422 2.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=0.5sec counter in the 2nd section only ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.milliseconds
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+07:45:42.422 No values available
+07:45:42.922 No values available
+07:45:43.422 No values available
+07:45:43.922 No values available
+07:45:44.422 No values available
+07:45:44.922 No values available
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 1.000
+07:45:50.922 1.000
+07:45:51.422 1.000
+07:45:51.922 1.000
+07:45:52.422 1.000
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+07:45:56.922 No values available
+07:45:57.422 No values available
+07:45:57.922 No values available
+07:45:58.422 No values available
+07:45:58.922 No values available
+07:45:59.422 No values available
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=0.5sec instantaneous in 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.drift
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+07:45:42.422 184
+07:45:42.922 184
+07:45:43.422 183
+07:45:43.922 183
+07:45:44.422 183
+07:45:44.922 166
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 No values available
+07:45:50.922 No values available
+07:45:51.422 No values available
+07:45:51.922 No values available
+07:45:52.422 No values available
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+07:45:56.922 70
+07:45:57.422 70
+07:45:57.922 50
+07:45:58.422 50
+07:45:58.922 40
+07:45:59.422 40
+
+=== delta=0.5sec discrete and logged once in the 1st and 3rd sections ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: hinv.ncpu
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 1
+07:45:42.422 1
+07:45:42.922 1
+07:45:43.422 1
+07:45:43.922 1
+07:45:44.422 1
+07:45:44.922 1
+07:45:45.422 1
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 No values available
+07:45:50.922 No values available
+07:45:51.422 No values available
+07:45:51.922 No values available
+07:45:52.422 No values available
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 1
+07:45:56.922 1
+07:45:57.422 1
+07:45:57.922 1
+07:45:58.422 1
+07:45:58.922 1
+07:45:59.422 1
+
+=== delta=0.5sec counter and indom all over the place ===
+ lo0 ec0 ec2 section
+ yes yes no 1
+ no no no 2
+ yes no yes 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: network.interface.total.packets
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+
+ ec0 ec2 lo0
+07:45:42.422 No values available
+07:45:42.922 6.000 ? 48.00
+07:45:43.422 4.000 ? 48.00
+07:45:43.922 2.000 ? 8.000
+07:45:44.422 0.0 ? 8.000
+07:45:44.922 4.000 ? 8.000
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+07:45:49.922 No values available
+07:45:50.422 No values available
+07:45:50.922 No values available
+07:45:51.422 No values available
+07:45:51.922 No values available
+07:45:52.422 No values available
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+
+ ec0 ec2 lo0
+07:45:56.922 No values available
+07:45:57.422 ? 32.00 48.00
+07:45:57.922 ? 30.00 48.00
+07:45:58.422 ? 40.00 8.000
+07:45:58.922 ? 40.00 8.000
+07:45:59.422 ? 48.00 8.000
+
+pmval: pmFetch: End of PCP archive log
+
+=== delta=0.5sec instantaneous and indom all over the place ===
+ bin-100 bin-200 bin-300 bin-400 bin-500 section
+ yes yes no yes no 1
+ yes no yes yes once 2
+ no yes yes yes no 3
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.bin
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+07:45:41.422 No values available
+07:45:41.922 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:42.422 100 200 ? 400 ?
+07:45:42.922 100 200 ? 400 ?
+07:45:43.422 100 200 ? 400 ?
+07:45:43.922 100 200 ? 400 ?
+07:45:44.422 100 200 ? 400 ?
+07:45:44.922 100 200 ? 400 ?
+07:45:45.422 No values available
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+07:45:48.922 No values available
+07:45:49.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:49.922 100 ? 300 400 ?
+07:45:50.422 100 ? 300 400 ?
+07:45:50.922 100 ? 300 400 ?
+07:45:51.422 100 ? 300 400 ?
+07:45:51.922 100 ? 300 400 ?
+07:45:52.422 100 ? 300 400 ?
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+07:45:55.922 No values available
+07:45:56.422 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500
+07:45:56.922 ? 200 300 400 500
+07:45:57.422 ? 200 300 400 500
+07:45:57.922 ? 200 300 400 500
+07:45:58.422 ? 200 300 400 500
+07:45:58.922 ? 200 300 400 500
+07:45:59.422 ? 200 300 400 500
+
+=== delta=0.5sec discrete logged once, different indom in each section ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: pmcd.pmlogger.port
+archive: src/changeinst
+host: gonzo
+start: Tue Aug 5 07:45:41 1997
+end: Tue Aug 5 07:45:59 1997
+semantics: discrete instantaneous value
+units: none
+samples: 37
+interval: 0.50 sec
+
+ 1368 1342 1318
+07:45:41.422 ? ? 4331
+07:45:41.922 ? ? 4331
+07:45:42.422 ? ? 4331
+07:45:42.922 ? ? 4331
+07:45:43.422 ? ? 4331
+07:45:43.922 ? ? 4331
+07:45:44.422 ? ? 4331
+07:45:44.922 ? ? 4331
+07:45:45.422 ? ? 4331
+07:45:45.922 No values available
+07:45:46.422 No values available
+07:45:46.922 No values available
+07:45:47.422 No values available
+07:45:47.922 No values available
+07:45:48.422 No values available
+
+ 1368 1342 1318
+07:45:48.922 ? 4331 ?
+07:45:49.422 ? 4331 ?
+07:45:49.922 ? 4331 ?
+07:45:50.422 ? 4331 ?
+07:45:50.922 ? 4331 ?
+07:45:51.422 ? 4331 ?
+07:45:51.922 ? 4331 ?
+07:45:52.422 ? 4331 ?
+07:45:52.922 No values available
+07:45:53.422 No values available
+07:45:53.922 No values available
+07:45:54.422 No values available
+07:45:54.922 No values available
+07:45:55.422 No values available
+
+ 1368 1342 1318
+07:45:55.922 4331 ? ?
+07:45:56.422 4331 ? ?
+07:45:56.922 4331 ? ?
+07:45:57.422 4331 ? ?
+07:45:57.922 4331 ? ?
+07:45:58.422 4331 ? ?
+07:45:58.922 4331 ? ?
+07:45:59.422 4331 ? ?
+
+=== the whole shooting match ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Aug 5 07:45:41.422 1997
+ ending Tue Aug 5 07:45:59.912 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 1.18.2 (hinv.ncpu)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 1.25.19 (irix.network.interface.total.packets)
+ Data Type: 32-bit unsigned int InDom: 1.6 0x400006
+ Semantics: counter Units: count
+PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 29.0.2 (sample.seconds)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+PMID: 29.0.3 (sample.milliseconds)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 1.6
+07:45:42.422 3 instances
+ 1 or "ec0"
+ 2 or "ec2"
+ 3 or "lo0"
+07:45:56.912 3 instances
+ 1 or "ec0"
+ 2 or "ec2"
+ 3 or "lo0"
+InDom: 29.2
+07:45:42.422 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+07:45:48.657 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+07:45:56.912 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 2.1
+07:45:41.422 1 instances
+ 1318 or "1318"
+07:45:48.643 1 instances
+ 1342 or "1342"
+07:45:55.913 1 instances
+ 1368 or "1368"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+07:45:41.422 0 190 132
+07:45:41.422 0 231 256
+07:45:42.422 0 673 440
+07:45:42.422 0 867 440
+07:45:48.643 0 908 1016
+07:45:48.657 0 1080 1056
+07:45:55.913 0 1180 1632
+07:45:56.912 0 1352 1804
+07:45:56.912 0 1416 1804
+
+07:45:41.422 2.3.3 (pmcd.pmlogger.host): inst [1318 or "1318"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [1318 or "1318"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1318 or "1318"] value "/tmp/1306.A"
+
+07:45:41.435 1.18.2 (hinv.ncpu): value 1
+
+07:45:42.422 29.0.7 (sample.drift): value 184
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9993
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648807
+ inst [3 or "lo0"] value 315790
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:43.422 29.0.7 (sample.drift): value 183
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9994
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648812
+ inst [3 or "lo0"] value 315838
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:44.422 29.0.7 (sample.drift): value 166
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9995
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648813
+ inst [3 or "lo0"] value 315846
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:45.422 29.0.7 (sample.drift): value 117
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [400 or "bin-400"] value 400
+ 29.0.2 (sample.seconds): value 9996
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [1 or "ec0"] value 6648816
+ inst [3 or "lo0"] value 315854
+ 1.18.2 (hinv.ncpu): value 1
+
+07:45:45.423 <mark>
+
+07:45:48.643 2.3.3 (pmcd.pmlogger.host): inst [1342 or "1342"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [1342 or "1342"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1342 or "1342"] value "/tmp/1306.B"
+
+07:45:48.657 29.0.6 (sample.bin): inst [500 or "bin-500"] value 500
+
+07:45:49.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10000485.487
+ 29.0.2 (sample.seconds): value 10000
+
+07:45:50.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10001485.28
+ 29.0.2 (sample.seconds): value 10001
+
+07:45:51.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10002485.518
+ 29.0.2 (sample.seconds): value 10002
+
+07:45:52.641 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ 29.0.3 (sample.milliseconds): value 10003485.271
+ 29.0.2 (sample.seconds): value 10003
+
+07:45:52.642 <mark>
+
+07:45:55.913 2.3.3 (pmcd.pmlogger.host): inst [1368 or "1368"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [1368 or "1368"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1368 or "1368"] value "/tmp/1306.C"
+
+07:45:55.928 1.18.2 (hinv.ncpu): value 1
+
+07:45:56.912 29.0.7 (sample.drift): value 70
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10007
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106724
+ inst [3 or "lo0"] value 316134
+
+07:45:57.912 29.0.7 (sample.drift): value 50
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10008
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106755
+ inst [3 or "lo0"] value 316182
+
+07:45:58.912 29.0.7 (sample.drift): value 40
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10009
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106795
+ inst [3 or "lo0"] value 316190
+
+07:45:59.912 29.0.7 (sample.drift): value 26
+ 29.0.6 (sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ 29.0.2 (sample.seconds): value 10010
+ 1.25.19 (irix.network.interface.total.packets):
+ inst [2 or "ec2"] value 4106843
+ inst [3 or "lo0"] value 316198
diff --git a/qa/314 b/qa/314
new file mode 100755
index 0000000..dcf5df2
--- /dev/null
+++ b/qa/314
@@ -0,0 +1,89 @@
+#! /bin/sh
+# PCP QA Test No. 314
+# Exercise pmie_daily functionality - log rotation
+#
+# Copyright (c) 2007 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -fr $tmp.*; $sudo rm -fr /tmp/$seq; exit \$status" 0 1 2 3 15
+
+# create a pmie config file, causing frequent output (to log)
+cat > $tmp.config << EOF1
+delta = 0.2 seconds;
+fetched = simple.numfetch;
+EOF1
+
+echo "=== pmie config ===" >$seq.full
+cat $tmp.config >>$seq.full
+
+# create pmie control files and test out various good/bad conditions
+
+cat > $tmp.control << EOF2
+\$version=1.0
+LOCALHOSTNAME n /tmp/$seq/1.good.log -v -c $tmp.config
+EOF2
+
+echo "=== pmie control ===" >>$seq.full
+cat $tmp.control >>$seq.full
+
+# real QA test starts here
+$sudo $signal -a -s TERM pmie 2>/dev/null
+$sudo rm -fr /tmp/$seq && mkdir /tmp/$seq || exit 1
+id pcp >/dev/null 2>&1 && $sudo chown -R pcp:pcp /tmp/$seq
+pmstore simple.numfetch 0 >/dev/null
+
+# fire em all up
+echo "Starting pmie process"
+echo "=== pmie_check ===" >>$seq.full
+$sudo $PCP_BINADM_DIR/pmie_check -c $tmp.control -VV >>$seq.full
+ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full
+sleep 6 # fill original log a bit
+cat /tmp/$seq/1.good.log >>$seq.full
+ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full
+
+echo "Rotate, rotate..."
+previous=`pmdate -1d %Y%m%d`
+echo "=== pmie_daily ===" >>$seq.full
+$sudo $PCP_BINADM_DIR/pmie_daily -c $tmp.control -VV >>$seq.full
+ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full
+sleep 3 # fill rotated log a bit
+
+echo "Shutdown pmie process"
+echo "=== pmie_check ===" >>$seq.full
+$sudo $PCP_BINADM_DIR/pmie_check -c $tmp.control -s -VV >>$seq.full
+ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full
+
+grep rotated /tmp/$seq/1.good.log >/dev/null \
+ || echo "First log not rotated?"
+grep rotated /tmp/$seq/1.good.log.$previous >/dev/null \
+ || echo "New log not started?"
+
+# look for data in each log file, checking rotation actually did something
+oldlines=`wc -l < /tmp/$seq/1.good.log.$previous 2>/dev/null || echo 0`
+newlines=`wc -l < /tmp/$seq/1.good.log 2>/dev/null || echo 0`
+# 5 samples / sec x ~6 sec x 2 lines per sample + 6 lines for header and footer
+# so 66
+_within_tolerance "Old logfile line count" "$oldlines" 66 %75 -v
+# 5 samples / sec x ~3 sec x 2 lines per sample + 6 lines for header and footer
+# so 36
+_within_tolerance "New logfile line count" "$newlines" 36 %75 -v
+
+echo "=== previous log ($oldlines lines) ===" >>$seq.full
+cat /tmp/$seq/1.good.log.$previous >>$seq.full
+echo "=== current log ($newlines lines) ===" >>$seq.full
+cat /tmp/$seq/1.good.log >>$seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/314.out b/qa/314.out
new file mode 100644
index 0000000..b48b5bd
--- /dev/null
+++ b/qa/314.out
@@ -0,0 +1,6 @@
+QA output created by 314
+Starting pmie process
+Rotate, rotate...
+Shutdown pmie process
+Old logfile line count is in range
+New logfile line count is in range
diff --git a/qa/315 b/qa/315
new file mode 100755
index 0000000..34faee9
--- /dev/null
+++ b/qa/315
@@ -0,0 +1,73 @@
+#! /bin/sh
+# PCP QA Test No. 315
+# exercise pmie log compression thru pmie_daily
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+# Portions Copyright (c) 2007 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+
+_cleanup()
+{
+ [ -d $tmp.distdir ] && rm -fr $tmp.distdir
+ [ -d $tmp.relaydir ] && rm -fr $tmp.relaydir
+ rm -f $tmp.*
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# create test control file, directories and populate with dummy logfiles
+cat >$tmp.ctl<<EOF
+\$version=1.1
+#Host S? logfile args
+dist.engr n $tmp.distdir/pmie.log -c config.default
+relay.engr n $tmp.relaydir/pmie.log -c config.default
+EOF
+
+mkdir -p $tmp.distdir $tmp.relaydir
+
+# some logfiles for today...
+TODAY=`pmdate %Y%m%d`
+cp $tmp.ctl $tmp.distdir/pmie.log.$TODAY
+cp $tmp.ctl $tmp.relaydir/pmie.log.$TODAY
+
+# some logfiles for five days ago...
+FIVEDAYS=`pmdate -5d %Y%m%d`
+cp $tmp.ctl $tmp.distdir/pmie.log.$FIVEDAYS
+cp $tmp.ctl $tmp.relaydir/pmie.log.$FIVEDAYS
+
+# some logfiles for five months ago...
+FIVEMONTHS=`pmdate -5m %Y%m%d`
+cp $tmp.ctl $tmp.distdir/pmie.log.$FIVEMONTHS
+cp $tmp.ctl $tmp.relaydir/pmie.log.$FIVEMONTHS
+
+# real QA test starts here
+
+# "Error: ..." and "... unchanged" lines will only appear if pmie_daily
+# thinks pmie is "chkconfig on" ... and this is not guaranteed for the
+# QA platform, so cull 'em
+# Similarly the + rm -f TMP/pmie/<pid> lines come from defunct pmie
+# processes that don't have anything to do with this QA test
+#
+pmie_daily -V -N -x 3 -X compress -c $tmp.ctl | sed \
+ -e '/Error: no pmie instance running/d' \
+ -e '/inference engine for host .* unchanged/d' \
+ -e "s/$TODAY/TODAY/g" \
+ -e "s/$FIVEDAYS/FIVEDAYS/g" \
+ -e "s/$FIVEMONTHS/FIVEMONTHS/g" \
+ -e "s,$PCP_TMP_DIR,TMP,g" \
+ -e "s/$seq-$$/SEQ-PID/g" \
+ -e "s;/private/;/;g" \
+ -e "s,/tmp,TMP,g" \
+ -e '/^+ rm -f TMP\/pmie\/[0-9][0-9]*$/d' \
+
+# success, all done
+status=0
+exit
diff --git a/qa/315.out b/qa/315.out
new file mode 100644
index 0000000..c306566
--- /dev/null
+++ b/qa/315.out
@@ -0,0 +1,23 @@
+QA output created by 315
+# $version=1.1
++ export version; version=1.1
++ cd TMP/SEQ-PID.distdir
+
+=== daily maintenance of pmie log files for host dist.engr ===
+
+Log files older than 14 days being removed ...
+ pmie.log.FIVEMONTHS
++ rm -f pmie.log.FIVEMONTHS
+Log files older than 3 days being compressed ...
+ pmie.log.FIVEMONTHS pmie.log.FIVEDAYS
++ compress pmie.log.FIVEMONTHS pmie.log.FIVEDAYS
++ cd TMP/SEQ-PID.relaydir
+
+=== daily maintenance of pmie log files for host relay.engr ===
+
+Log files older than 14 days being removed ...
+ pmie.log.FIVEMONTHS
++ rm -f pmie.log.FIVEMONTHS
+Log files older than 3 days being compressed ...
+ pmie.log.FIVEMONTHS pmie.log.FIVEDAYS
++ compress pmie.log.FIVEMONTHS pmie.log.FIVEDAYS
diff --git a/qa/316 b/qa/316
new file mode 100755
index 0000000..b519cb9
--- /dev/null
+++ b/qa/316
@@ -0,0 +1,128 @@
+#!/bin/sh
+# PCP QA Test No. 316
+# exercise pmParseInterval
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_args()
+{
+ _a=`echo "$1" | sed -e 's/ /\\\\ /g'`
+ shift
+ for s
+ do
+ arg="$arg $_a$s"
+ S=`echo "$s" | tr '[a-z]' '[A-Z]'`
+ arg="$arg $_a$S"
+ done
+}
+
+do_msec()
+{
+ arg=""
+ for a
+ do
+ _args "$a" millisecond milliseconds msec msecs
+ done
+ # sed needed for arithmetic precision and rounding differences between machines
+ #
+ eval src/parseinterval $arg \
+ | sed \
+ -e 's/0.122999 sec/0.123000 sec/' \
+ -e 's/0.009122 sec/0.009123 sec/' \
+ -e 's/0.007999 sec/0.008000 sec/'
+}
+
+do_sec()
+{
+ arg=""
+ for a
+ do
+ _args "$a" second seconds sec secs s
+ done
+ eval src/parseinterval $arg
+ for a
+ do
+ src/parseinterval "$a"
+ done
+}
+
+do_min()
+{
+ arg=""
+ for a
+ do
+ _args "$a" minute minutes min mins m
+ done
+ eval src/parseinterval $arg
+}
+
+do_hour()
+{
+ arg=""
+ for a
+ do
+ _args "$a" hour hours hr hrs h
+ done
+ eval src/parseinterval $arg
+}
+
+do_day()
+{
+ arg=""
+ for a
+ do
+ _args "$a" day d
+ done
+ eval src/parseinterval $arg
+}
+
+# real QA test starts here
+
+echo
+echo "milliseconds ..."
+do_msec 123 45.67 8. " 9.123 "
+
+echo
+echo "seconds ..."
+do_sec 123 45.67 8. " 9.123 "
+
+echo
+echo "minutes ..."
+do_min 60 1.25 2. " 0.16666667 "
+
+echo
+echo "hours ..."
+do_hour 2 1.5 10. " 0.333333333333 "
+
+echo
+echo "days ..."
+do_day 1 1.5 10. " 0.083333333333 "
+
+echo
+echo "some hybrids ..."
+src/parseinterval 1min30sec 1d1h1m1s1msec "1.5 hr 10 min 15 sec" \
+| sed \
+ -e 's/90061.000999 sec/90061.001000 sec/'
+src/parseinterval "1 2 3 4 5 6 7 8 9 10" 55seconds
+
+echo
+echo "some errors ..."
+src/parseinterval 123+sec 123.456.789min "4minutes 30secoonds" sec "123sec min" \
+| sed \
+ -e 's/170.796000/170.795999/'
+
+# success, all done
+status=0
+exit
diff --git a/qa/316.out b/qa/316.out
new file mode 100644
index 0000000..e151e2f
--- /dev/null
+++ b/qa/316.out
@@ -0,0 +1,205 @@
+QA output created by 316
+
+milliseconds ...
+"123millisecond" Time: 0.123000 sec
+"123MILLISECOND" Time: 0.123000 sec
+"123milliseconds" Time: 0.123000 sec
+"123MILLISECONDS" Time: 0.123000 sec
+"123msec" Time: 0.123000 sec
+"123MSEC" Time: 0.123000 sec
+"123msecs" Time: 0.123000 sec
+"123MSECS" Time: 0.123000 sec
+"45.67millisecond" Time: 0.045670 sec
+"45.67MILLISECOND" Time: 0.045670 sec
+"45.67milliseconds" Time: 0.045670 sec
+"45.67MILLISECONDS" Time: 0.045670 sec
+"45.67msec" Time: 0.045670 sec
+"45.67MSEC" Time: 0.045670 sec
+"45.67msecs" Time: 0.045670 sec
+"45.67MSECS" Time: 0.045670 sec
+"8.millisecond" Time: 0.008000 sec
+"8.MILLISECOND" Time: 0.008000 sec
+"8.milliseconds" Time: 0.008000 sec
+"8.MILLISECONDS" Time: 0.008000 sec
+"8.msec" Time: 0.008000 sec
+"8.MSEC" Time: 0.008000 sec
+"8.msecs" Time: 0.008000 sec
+"8.MSECS" Time: 0.008000 sec
+" 9.123 millisecond" Time: 0.009123 sec
+" 9.123 MILLISECOND" Time: 0.009123 sec
+" 9.123 milliseconds" Time: 0.009123 sec
+" 9.123 MILLISECONDS" Time: 0.009123 sec
+" 9.123 msec" Time: 0.009123 sec
+" 9.123 MSEC" Time: 0.009123 sec
+" 9.123 msecs" Time: 0.009123 sec
+" 9.123 MSECS" Time: 0.009123 sec
+
+seconds ...
+"123second" Time: 123.000000 sec
+"123SECOND" Time: 123.000000 sec
+"123seconds" Time: 123.000000 sec
+"123SECONDS" Time: 123.000000 sec
+"123sec" Time: 123.000000 sec
+"123SEC" Time: 123.000000 sec
+"123secs" Time: 123.000000 sec
+"123SECS" Time: 123.000000 sec
+"123s" Time: 123.000000 sec
+"123S" Time: 123.000000 sec
+"45.67second" Time: 45.670000 sec
+"45.67SECOND" Time: 45.670000 sec
+"45.67seconds" Time: 45.670000 sec
+"45.67SECONDS" Time: 45.670000 sec
+"45.67sec" Time: 45.670000 sec
+"45.67SEC" Time: 45.670000 sec
+"45.67secs" Time: 45.670000 sec
+"45.67SECS" Time: 45.670000 sec
+"45.67s" Time: 45.670000 sec
+"45.67S" Time: 45.670000 sec
+"8.second" Time: 8.000000 sec
+"8.SECOND" Time: 8.000000 sec
+"8.seconds" Time: 8.000000 sec
+"8.SECONDS" Time: 8.000000 sec
+"8.sec" Time: 8.000000 sec
+"8.SEC" Time: 8.000000 sec
+"8.secs" Time: 8.000000 sec
+"8.SECS" Time: 8.000000 sec
+"8.s" Time: 8.000000 sec
+"8.S" Time: 8.000000 sec
+" 9.123 second" Time: 9.122999 sec
+" 9.123 SECOND" Time: 9.122999 sec
+" 9.123 seconds" Time: 9.122999 sec
+" 9.123 SECONDS" Time: 9.122999 sec
+" 9.123 sec" Time: 9.122999 sec
+" 9.123 SEC" Time: 9.122999 sec
+" 9.123 secs" Time: 9.122999 sec
+" 9.123 SECS" Time: 9.122999 sec
+" 9.123 s" Time: 9.122999 sec
+" 9.123 S" Time: 9.122999 sec
+"123" Time: 123.000000 sec
+"45.67" Time: 45.670000 sec
+"8." Time: 8.000000 sec
+" 9.123 " Time: 9.122999 sec
+
+minutes ...
+"60minute" Time: 3600.000000 sec
+"60MINUTE" Time: 3600.000000 sec
+"60minutes" Time: 3600.000000 sec
+"60MINUTES" Time: 3600.000000 sec
+"60min" Time: 3600.000000 sec
+"60MIN" Time: 3600.000000 sec
+"60mins" Time: 3600.000000 sec
+"60MINS" Time: 3600.000000 sec
+"60m" Time: 3600.000000 sec
+"60M" Time: 3600.000000 sec
+"1.25minute" Time: 75.000000 sec
+"1.25MINUTE" Time: 75.000000 sec
+"1.25minutes" Time: 75.000000 sec
+"1.25MINUTES" Time: 75.000000 sec
+"1.25min" Time: 75.000000 sec
+"1.25MIN" Time: 75.000000 sec
+"1.25mins" Time: 75.000000 sec
+"1.25MINS" Time: 75.000000 sec
+"1.25m" Time: 75.000000 sec
+"1.25M" Time: 75.000000 sec
+"2.minute" Time: 120.000000 sec
+"2.MINUTE" Time: 120.000000 sec
+"2.minutes" Time: 120.000000 sec
+"2.MINUTES" Time: 120.000000 sec
+"2.min" Time: 120.000000 sec
+"2.MIN" Time: 120.000000 sec
+"2.mins" Time: 120.000000 sec
+"2.MINS" Time: 120.000000 sec
+"2.m" Time: 120.000000 sec
+"2.M" Time: 120.000000 sec
+" 0.16666667 minute" Time: 10.000000 sec
+" 0.16666667 MINUTE" Time: 10.000000 sec
+" 0.16666667 minutes" Time: 10.000000 sec
+" 0.16666667 MINUTES" Time: 10.000000 sec
+" 0.16666667 min" Time: 10.000000 sec
+" 0.16666667 MIN" Time: 10.000000 sec
+" 0.16666667 mins" Time: 10.000000 sec
+" 0.16666667 MINS" Time: 10.000000 sec
+" 0.16666667 m" Time: 10.000000 sec
+" 0.16666667 M" Time: 10.000000 sec
+
+hours ...
+"2hour" Time: 7200.000000 sec
+"2HOUR" Time: 7200.000000 sec
+"2hours" Time: 7200.000000 sec
+"2HOURS" Time: 7200.000000 sec
+"2hr" Time: 7200.000000 sec
+"2HR" Time: 7200.000000 sec
+"2hrs" Time: 7200.000000 sec
+"2HRS" Time: 7200.000000 sec
+"2h" Time: 7200.000000 sec
+"2H" Time: 7200.000000 sec
+"1.5hour" Time: 5400.000000 sec
+"1.5HOUR" Time: 5400.000000 sec
+"1.5hours" Time: 5400.000000 sec
+"1.5HOURS" Time: 5400.000000 sec
+"1.5hr" Time: 5400.000000 sec
+"1.5HR" Time: 5400.000000 sec
+"1.5hrs" Time: 5400.000000 sec
+"1.5HRS" Time: 5400.000000 sec
+"1.5h" Time: 5400.000000 sec
+"1.5H" Time: 5400.000000 sec
+"10.hour" Time: 36000.000000 sec
+"10.HOUR" Time: 36000.000000 sec
+"10.hours" Time: 36000.000000 sec
+"10.HOURS" Time: 36000.000000 sec
+"10.hr" Time: 36000.000000 sec
+"10.HR" Time: 36000.000000 sec
+"10.hrs" Time: 36000.000000 sec
+"10.HRS" Time: 36000.000000 sec
+"10.h" Time: 36000.000000 sec
+"10.H" Time: 36000.000000 sec
+" 0.333333333333 hour" Time: 1199.999999 sec
+" 0.333333333333 HOUR" Time: 1199.999999 sec
+" 0.333333333333 hours" Time: 1199.999999 sec
+" 0.333333333333 HOURS" Time: 1199.999999 sec
+" 0.333333333333 hr" Time: 1199.999999 sec
+" 0.333333333333 HR" Time: 1199.999999 sec
+" 0.333333333333 hrs" Time: 1199.999999 sec
+" 0.333333333333 HRS" Time: 1199.999999 sec
+" 0.333333333333 h" Time: 1199.999999 sec
+" 0.333333333333 H" Time: 1199.999999 sec
+
+days ...
+"1day" Time: 86400.000000 sec
+"1DAY" Time: 86400.000000 sec
+"1d" Time: 86400.000000 sec
+"1D" Time: 86400.000000 sec
+"1.5day" Time: 129600.000000 sec
+"1.5DAY" Time: 129600.000000 sec
+"1.5d" Time: 129600.000000 sec
+"1.5D" Time: 129600.000000 sec
+"10.day" Time: 864000.000000 sec
+"10.DAY" Time: 864000.000000 sec
+"10.d" Time: 864000.000000 sec
+"10.D" Time: 864000.000000 sec
+" 0.083333333333 day" Time: 7199.999999 sec
+" 0.083333333333 DAY" Time: 7199.999999 sec
+" 0.083333333333 d" Time: 7199.999999 sec
+" 0.083333333333 D" Time: 7199.999999 sec
+
+some hybrids ...
+"1min30sec" Time: 90.000000 sec
+"1d1h1m1s1msec" Time: 90061.001000 sec
+"1.5 hr 10 min 15 sec" Time: 6015.000000 sec
+"1 2 3 4 5 6 7 8 9 10" Time: 55.000000 sec
+"55seconds" Time: 55.000000 sec
+
+some errors ...
+"123+sec" Error:
+123+sec
+ ^ -- unexpected value
+"123.456.789min" Time: 170.795999 sec
+"4minutes 30secoonds" Error:
+4minutes 30secoonds
+ ^ -- unexpected value
+"sec" Error:
+sec
+^ -- unexpected value
+"123sec min" Error:
+123sec min
+ ^ -- unexpected value
diff --git a/qa/317 b/qa/317
new file mode 100755
index 0000000..5792f3d
--- /dev/null
+++ b/qa/317
@@ -0,0 +1,32 @@
+#! /bin/sh
+# PCP QA Test No. 317
+# exercise pmlogsummary handling of corrupt log
+# (archive with dodgey metric descriptor, caused a core dump)
+#
+# Copyright (c) 2007 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo && echo "Verify no pmlogsummary coredump..."
+pmlogsummary -v -z src/logsummary-bug >$tmp.out 2>$tmp.err
+cat $tmp.out
+cat $tmp.err
+
+echo && echo "Verify no pmlogcheck coredump..."
+pmlogcheck -z src/logsummary-bug >$tmp.out 2>$tmp.err
+cat $tmp.out
+cat $tmp.err
+
+# success, all done
+status=0
+exit
diff --git a/qa/317.out b/qa/317.out
new file mode 100644
index 0000000..fe47a01
--- /dev/null
+++ b/qa/317.out
@@ -0,0 +1,13 @@
+QA output created by 317
+
+Verify no pmlogsummary coredump...
+Note: timezone set to local timezone of host "nas1" from archive
+
+pmlogsummary: kernel.all.cpu.wait.total(60.0.35) - failed to extract value: Impossible value or scale conversion
+pmlogsummary: possibly corrupt archive?
+
+Verify no pmlogcheck coredump...
+Note: timezone set to local timezone of host "nas1" from archive
+
+[00:11:08.712] kernel.all.cpu.wait.total: pmExtractValue failed: Impossible value or scale conversion
+pmlogcheck: possibly corrupt archive?
diff --git a/qa/318 b/qa/318
new file mode 100755
index 0000000..a22433b
--- /dev/null
+++ b/qa/318
@@ -0,0 +1,28 @@
+#! /bin/sh
+# PCP QA Test No. 318
+# pmie botch in handling time macros
+#
+# Copyright (c) 2007 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat <<'End-of-File' \
+| pmie -A 1min -t 1min -z -v -a src/20041125.0 2>&1 \
+| fgrep -v "evaluator exiting"
+$minute;
+$hour;
+$minute > 34 -> print "OK1";
+pmcd.license + $minute > pmcd.license + 34 -> print "OK2";
+End-of-File
diff --git a/qa/318.out b/qa/318.out
new file mode 100644
index 0000000..b51fec4
--- /dev/null
+++ b/qa/318.out
@@ -0,0 +1,290 @@
+QA output created by 318
+pmie: timezone set to local timezone of host mortenb.oslo.sgi.com
+expr_1 (Thu Nov 25 00:11:00 2004): 11
+expr_2 (Thu Nov 25 00:11:00 2004): 0
+expr_3 (Thu Nov 25 00:11:00 2004): false
+expr_4 (Thu Nov 25 00:11:00 2004): false
+
+expr_1 (Thu Nov 25 00:12:00 2004): 12
+expr_2 (Thu Nov 25 00:12:00 2004): 0
+expr_3 (Thu Nov 25 00:12:00 2004): false
+expr_4 (Thu Nov 25 00:12:00 2004): false
+
+expr_1 (Thu Nov 25 00:13:00 2004): 13
+expr_2 (Thu Nov 25 00:13:00 2004): 0
+expr_3 (Thu Nov 25 00:13:00 2004): false
+expr_4 (Thu Nov 25 00:13:00 2004): false
+
+expr_1 (Thu Nov 25 00:14:00 2004): 14
+expr_2 (Thu Nov 25 00:14:00 2004): 0
+expr_3 (Thu Nov 25 00:14:00 2004): false
+expr_4 (Thu Nov 25 00:14:00 2004): false
+
+expr_1 (Thu Nov 25 00:15:00 2004): 15
+expr_2 (Thu Nov 25 00:15:00 2004): 0
+expr_3 (Thu Nov 25 00:15:00 2004): false
+expr_4 (Thu Nov 25 00:15:00 2004): false
+
+expr_1 (Thu Nov 25 00:16:00 2004): 16
+expr_2 (Thu Nov 25 00:16:00 2004): 0
+expr_3 (Thu Nov 25 00:16:00 2004): false
+expr_4 (Thu Nov 25 00:16:00 2004): false
+
+expr_1 (Thu Nov 25 00:17:00 2004): 17
+expr_2 (Thu Nov 25 00:17:00 2004): 0
+expr_3 (Thu Nov 25 00:17:00 2004): false
+expr_4 (Thu Nov 25 00:17:00 2004): false
+
+expr_1 (Thu Nov 25 00:18:00 2004): 18
+expr_2 (Thu Nov 25 00:18:00 2004): 0
+expr_3 (Thu Nov 25 00:18:00 2004): false
+expr_4 (Thu Nov 25 00:18:00 2004): false
+
+expr_1 (Thu Nov 25 00:19:00 2004): 19
+expr_2 (Thu Nov 25 00:19:00 2004): 0
+expr_3 (Thu Nov 25 00:19:00 2004): false
+expr_4 (Thu Nov 25 00:19:00 2004): false
+
+expr_1 (Thu Nov 25 00:20:00 2004): 20
+expr_2 (Thu Nov 25 00:20:00 2004): 0
+expr_3 (Thu Nov 25 00:20:00 2004): false
+expr_4 (Thu Nov 25 00:20:00 2004): false
+
+expr_1 (Thu Nov 25 00:21:00 2004): 21
+expr_2 (Thu Nov 25 00:21:00 2004): 0
+expr_3 (Thu Nov 25 00:21:00 2004): false
+expr_4 (Thu Nov 25 00:21:00 2004): false
+
+expr_1 (Thu Nov 25 00:22:00 2004): 22
+expr_2 (Thu Nov 25 00:22:00 2004): 0
+expr_3 (Thu Nov 25 00:22:00 2004): false
+expr_4 (Thu Nov 25 00:22:00 2004): false
+
+expr_1 (Thu Nov 25 00:23:00 2004): 23
+expr_2 (Thu Nov 25 00:23:00 2004): 0
+expr_3 (Thu Nov 25 00:23:00 2004): false
+expr_4 (Thu Nov 25 00:23:00 2004): false
+
+expr_1 (Thu Nov 25 00:24:00 2004): 24
+expr_2 (Thu Nov 25 00:24:00 2004): 0
+expr_3 (Thu Nov 25 00:24:00 2004): false
+expr_4 (Thu Nov 25 00:24:00 2004): false
+
+expr_1 (Thu Nov 25 00:25:00 2004): 25
+expr_2 (Thu Nov 25 00:25:00 2004): 0
+expr_3 (Thu Nov 25 00:25:00 2004): false
+expr_4 (Thu Nov 25 00:25:00 2004): false
+
+expr_1 (Thu Nov 25 00:26:00 2004): 26
+expr_2 (Thu Nov 25 00:26:00 2004): 0
+expr_3 (Thu Nov 25 00:26:00 2004): false
+expr_4 (Thu Nov 25 00:26:00 2004): false
+
+expr_1 (Thu Nov 25 00:27:00 2004): 27
+expr_2 (Thu Nov 25 00:27:00 2004): 0
+expr_3 (Thu Nov 25 00:27:00 2004): false
+expr_4 (Thu Nov 25 00:27:00 2004): false
+
+expr_1 (Thu Nov 25 00:28:00 2004): 28
+expr_2 (Thu Nov 25 00:28:00 2004): 0
+expr_3 (Thu Nov 25 00:28:00 2004): false
+expr_4 (Thu Nov 25 00:28:00 2004): false
+
+expr_1 (Thu Nov 25 00:29:00 2004): 29
+expr_2 (Thu Nov 25 00:29:00 2004): 0
+expr_3 (Thu Nov 25 00:29:00 2004): false
+expr_4 (Thu Nov 25 00:29:00 2004): false
+
+expr_1 (Thu Nov 25 00:30:00 2004): 30
+expr_2 (Thu Nov 25 00:30:00 2004): 0
+expr_3 (Thu Nov 25 00:30:00 2004): false
+expr_4 (Thu Nov 25 00:30:00 2004): false
+
+expr_1 (Thu Nov 25 00:31:00 2004): 31
+expr_2 (Thu Nov 25 00:31:00 2004): 0
+expr_3 (Thu Nov 25 00:31:00 2004): false
+expr_4 (Thu Nov 25 00:31:00 2004): false
+
+expr_1 (Thu Nov 25 00:32:00 2004): 32
+expr_2 (Thu Nov 25 00:32:00 2004): 0
+expr_3 (Thu Nov 25 00:32:00 2004): false
+expr_4 (Thu Nov 25 00:32:00 2004): false
+
+expr_1 (Thu Nov 25 00:33:00 2004): 33
+expr_2 (Thu Nov 25 00:33:00 2004): 0
+expr_3 (Thu Nov 25 00:33:00 2004): false
+expr_4 (Thu Nov 25 00:33:00 2004): false
+
+expr_1 (Thu Nov 25 00:34:00 2004): 34
+expr_2 (Thu Nov 25 00:34:00 2004): 0
+expr_3 (Thu Nov 25 00:34:00 2004): false
+expr_4 (Thu Nov 25 00:34:00 2004): false
+
+print Thu Nov 25 00:35:00 2004: OK1
+print Thu Nov 25 00:35:00 2004: OK2
+expr_1 (Thu Nov 25 00:35:00 2004): 35
+expr_2 (Thu Nov 25 00:35:00 2004): 0
+expr_3 (Thu Nov 25 00:35:00 2004): true
+expr_4 (Thu Nov 25 00:35:00 2004): true
+
+print Thu Nov 25 00:36:00 2004: OK1
+print Thu Nov 25 00:36:00 2004: OK2
+expr_1 (Thu Nov 25 00:36:00 2004): 36
+expr_2 (Thu Nov 25 00:36:00 2004): 0
+expr_3 (Thu Nov 25 00:36:00 2004): true
+expr_4 (Thu Nov 25 00:36:00 2004): true
+
+print Thu Nov 25 00:37:00 2004: OK1
+print Thu Nov 25 00:37:00 2004: OK2
+expr_1 (Thu Nov 25 00:37:00 2004): 37
+expr_2 (Thu Nov 25 00:37:00 2004): 0
+expr_3 (Thu Nov 25 00:37:00 2004): true
+expr_4 (Thu Nov 25 00:37:00 2004): true
+
+print Thu Nov 25 00:38:00 2004: OK1
+print Thu Nov 25 00:38:00 2004: OK2
+expr_1 (Thu Nov 25 00:38:00 2004): 38
+expr_2 (Thu Nov 25 00:38:00 2004): 0
+expr_3 (Thu Nov 25 00:38:00 2004): true
+expr_4 (Thu Nov 25 00:38:00 2004): true
+
+print Thu Nov 25 00:39:00 2004: OK1
+print Thu Nov 25 00:39:00 2004: OK2
+expr_1 (Thu Nov 25 00:39:00 2004): 39
+expr_2 (Thu Nov 25 00:39:00 2004): 0
+expr_3 (Thu Nov 25 00:39:00 2004): true
+expr_4 (Thu Nov 25 00:39:00 2004): true
+
+print Thu Nov 25 00:40:00 2004: OK1
+print Thu Nov 25 00:40:00 2004: OK2
+expr_1 (Thu Nov 25 00:40:00 2004): 40
+expr_2 (Thu Nov 25 00:40:00 2004): 0
+expr_3 (Thu Nov 25 00:40:00 2004): true
+expr_4 (Thu Nov 25 00:40:00 2004): true
+
+print Thu Nov 25 00:41:00 2004: OK1
+print Thu Nov 25 00:41:00 2004: OK2
+expr_1 (Thu Nov 25 00:41:00 2004): 41
+expr_2 (Thu Nov 25 00:41:00 2004): 0
+expr_3 (Thu Nov 25 00:41:00 2004): true
+expr_4 (Thu Nov 25 00:41:00 2004): true
+
+print Thu Nov 25 00:42:00 2004: OK1
+print Thu Nov 25 00:42:00 2004: OK2
+expr_1 (Thu Nov 25 00:42:00 2004): 42
+expr_2 (Thu Nov 25 00:42:00 2004): 0
+expr_3 (Thu Nov 25 00:42:00 2004): true
+expr_4 (Thu Nov 25 00:42:00 2004): true
+
+print Thu Nov 25 00:43:00 2004: OK1
+print Thu Nov 25 00:43:00 2004: OK2
+expr_1 (Thu Nov 25 00:43:00 2004): 43
+expr_2 (Thu Nov 25 00:43:00 2004): 0
+expr_3 (Thu Nov 25 00:43:00 2004): true
+expr_4 (Thu Nov 25 00:43:00 2004): true
+
+print Thu Nov 25 00:44:00 2004: OK1
+print Thu Nov 25 00:44:00 2004: OK2
+expr_1 (Thu Nov 25 00:44:00 2004): 44
+expr_2 (Thu Nov 25 00:44:00 2004): 0
+expr_3 (Thu Nov 25 00:44:00 2004): true
+expr_4 (Thu Nov 25 00:44:00 2004): true
+
+print Thu Nov 25 00:45:00 2004: OK1
+print Thu Nov 25 00:45:00 2004: OK2
+expr_1 (Thu Nov 25 00:45:00 2004): 45
+expr_2 (Thu Nov 25 00:45:00 2004): 0
+expr_3 (Thu Nov 25 00:45:00 2004): true
+expr_4 (Thu Nov 25 00:45:00 2004): true
+
+print Thu Nov 25 00:46:00 2004: OK1
+print Thu Nov 25 00:46:00 2004: OK2
+expr_1 (Thu Nov 25 00:46:00 2004): 46
+expr_2 (Thu Nov 25 00:46:00 2004): 0
+expr_3 (Thu Nov 25 00:46:00 2004): true
+expr_4 (Thu Nov 25 00:46:00 2004): true
+
+print Thu Nov 25 00:47:00 2004: OK1
+print Thu Nov 25 00:47:00 2004: OK2
+expr_1 (Thu Nov 25 00:47:00 2004): 47
+expr_2 (Thu Nov 25 00:47:00 2004): 0
+expr_3 (Thu Nov 25 00:47:00 2004): true
+expr_4 (Thu Nov 25 00:47:00 2004): true
+
+print Thu Nov 25 00:48:00 2004: OK1
+print Thu Nov 25 00:48:00 2004: OK2
+expr_1 (Thu Nov 25 00:48:00 2004): 48
+expr_2 (Thu Nov 25 00:48:00 2004): 0
+expr_3 (Thu Nov 25 00:48:00 2004): true
+expr_4 (Thu Nov 25 00:48:00 2004): true
+
+print Thu Nov 25 00:49:00 2004: OK1
+print Thu Nov 25 00:49:00 2004: OK2
+expr_1 (Thu Nov 25 00:49:00 2004): 49
+expr_2 (Thu Nov 25 00:49:00 2004): 0
+expr_3 (Thu Nov 25 00:49:00 2004): true
+expr_4 (Thu Nov 25 00:49:00 2004): true
+
+print Thu Nov 25 00:50:00 2004: OK1
+print Thu Nov 25 00:50:00 2004: OK2
+expr_1 (Thu Nov 25 00:50:00 2004): 50
+expr_2 (Thu Nov 25 00:50:00 2004): 0
+expr_3 (Thu Nov 25 00:50:00 2004): true
+expr_4 (Thu Nov 25 00:50:00 2004): true
+
+print Thu Nov 25 00:51:00 2004: OK1
+print Thu Nov 25 00:51:00 2004: OK2
+expr_1 (Thu Nov 25 00:51:00 2004): 51
+expr_2 (Thu Nov 25 00:51:00 2004): 0
+expr_3 (Thu Nov 25 00:51:00 2004): true
+expr_4 (Thu Nov 25 00:51:00 2004): true
+
+print Thu Nov 25 00:52:00 2004: OK1
+print Thu Nov 25 00:52:00 2004: OK2
+expr_1 (Thu Nov 25 00:52:00 2004): 52
+expr_2 (Thu Nov 25 00:52:00 2004): 0
+expr_3 (Thu Nov 25 00:52:00 2004): true
+expr_4 (Thu Nov 25 00:52:00 2004): true
+
+print Thu Nov 25 00:53:00 2004: OK1
+print Thu Nov 25 00:53:00 2004: OK2
+expr_1 (Thu Nov 25 00:53:00 2004): 53
+expr_2 (Thu Nov 25 00:53:00 2004): 0
+expr_3 (Thu Nov 25 00:53:00 2004): true
+expr_4 (Thu Nov 25 00:53:00 2004): true
+
+print Thu Nov 25 00:54:00 2004: OK1
+print Thu Nov 25 00:54:00 2004: OK2
+expr_1 (Thu Nov 25 00:54:00 2004): 54
+expr_2 (Thu Nov 25 00:54:00 2004): 0
+expr_3 (Thu Nov 25 00:54:00 2004): true
+expr_4 (Thu Nov 25 00:54:00 2004): true
+
+print Thu Nov 25 00:55:00 2004: OK1
+print Thu Nov 25 00:55:00 2004: OK2
+expr_1 (Thu Nov 25 00:55:00 2004): 55
+expr_2 (Thu Nov 25 00:55:00 2004): 0
+expr_3 (Thu Nov 25 00:55:00 2004): true
+expr_4 (Thu Nov 25 00:55:00 2004): true
+
+print Thu Nov 25 00:56:00 2004: OK1
+print Thu Nov 25 00:56:00 2004: OK2
+expr_1 (Thu Nov 25 00:56:00 2004): 56
+expr_2 (Thu Nov 25 00:56:00 2004): 0
+expr_3 (Thu Nov 25 00:56:00 2004): true
+expr_4 (Thu Nov 25 00:56:00 2004): true
+
+print Thu Nov 25 00:57:00 2004: OK1
+print Thu Nov 25 00:57:00 2004: OK2
+expr_1 (Thu Nov 25 00:57:00 2004): 57
+expr_2 (Thu Nov 25 00:57:00 2004): 0
+expr_3 (Thu Nov 25 00:57:00 2004): true
+expr_4 (Thu Nov 25 00:57:00 2004): true
+
+print Thu Nov 25 00:58:00 2004: OK1
+print Thu Nov 25 00:58:00 2004: OK2
+expr_1 (Thu Nov 25 00:58:00 2004): 58
+expr_2 (Thu Nov 25 00:58:00 2004): 0
+expr_3 (Thu Nov 25 00:58:00 2004): true
+expr_4 (Thu Nov 25 00:58:00 2004): true
+
diff --git a/qa/319 b/qa/319
new file mode 100755
index 0000000..5be73fe
--- /dev/null
+++ b/qa/319
@@ -0,0 +1,206 @@
+#! /bin/sh
+# PCP QA Test No. 319
+# reworked AND and OR logic in the presence of unavailable results
+#
+# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+DEBUG='-Dappl1,appl2'
+DEBUG=
+
+# unknown metrics
+# 1U - sample.noinst (PM_INDOM_NULL)
+# nU - sample.darkness (InDom 29.1)
+
+pmie $DEBUG -v -t 0.5sec -T 3sec <<'End-of-File' 2>$tmp.err \
+| tee $seq.full \
+| sed -e 's/.* [0-9][0-9][0-9][0-9]: \([a-z]\)/\1/' \
+| sort \
+| uniq
+prime = sample.darkness;
+e1 = some_inst (sample.noinst > 0)
+ -> print "e1: Error! should be unknown always\n";
+e2 = some_inst (sample.noinst > 0) && hinv.ncpu > 0
+ -> print "e2: Error! should be false always\n";
+
+true_1T_and_1T = hinv.ncpu > 0 && sample.load == 42
+ -> print "true_1T_and_1T: OK should always be true\n";
+false_1T_and_1F = hinv.ncpu > 0 && sample.load != 42
+ -> print "false_1T_and_1F: Error! should always be false\n";
+unknown_1T_and_1U = hinv.ncpu > 0 && sample.noinst == 42
+ -> print "unknown_1T_and_1U: Error! should always be unknown\n";
+true_1T_and_nT = some_inst (hinv.ncpu > 0 && sample.colour > 0)
+ -> print "true_1T_and_nT: OK should always be true\n";
+false_1T_and_nF = some_inst (hinv.ncpu > 0 && sample.colour < 0)
+ -> print "false_1T_and_nF: Error! should always be false\n";
+unknown_1T_and_nU = some_inst (hinv.ncpu > 0 && sample.darkness > 0)
+ -> print "unknown_1T_and_nU: Error! should always be unknown\n";
+
+false_1F_and_1T = hinv.ncpu < 0 && sample.load == 42
+ -> print "false_1F_and_1T: Error! should always be false\n";
+false_1F_and_1F = hinv.ncpu < 0 && sample.load != 42
+ -> print "false_1F_and_1F: Error! should always be false\n";
+false_1F_and_1U = hinv.ncpu < 0 && sample.noinst == 42
+ -> print "false_1F_and_1U: Error! should always be false\n";
+false_1F_and_nT = some_inst (hinv.ncpu < 0 && sample.colour > 0)
+ -> print "false_1F_and_nT: Error! should always be false\n";
+false_1F_and_nF = some_inst (hinv.ncpu < 0 && sample.colour < 0)
+ -> print "false_1F_and_nF: Error! should always be false\n";
+false_1F_and_nU = some_inst (hinv.ncpu < 0 && sample.darkness > 0)
+ -> print "false_1F_and_nU: Error! should always be false\n";
+
+unknown_1U_and_1T = sample.noinst == 42 && hinv.ncpu > 0
+ -> print "unknown_1U_and_1T: Error! should always be unknown\n";
+false_1U_and_1F = sample.noinst == 42 && hinv.ncpu < 0
+ -> print "false_1U_and_1F: Error! should always be false\n";
+unknown_1U_and_1U = sample.noinst == 42 && sample.noinst == 43
+ -> print "unknown_1U_and_1U: Error! should always be unknown\n";
+unknown_1U_and_nT = some_inst (sample.noinst == 42 && sample.colour > 0)
+ -> print "unknown_1U_and_nT: Error! should always be unknown\n";
+false_1U_and_nF = some_inst (sample.noinst == 42 && sample.colour < 0)
+ -> print "false_1U_and_nF: Error! should always be false\n";
+unknown_1U_and_nU = some_inst (sample.noinst == 42 && sample.darkness > 0)
+ -> print "unknown_1U_and_nU: Error! should always be unknown\n";
+
+true_nT_and_1T = some_inst (sample.colour > 0 && hinv.ncpu > 0)
+ -> print "true_nT_and_1T: OK should always be true\n";
+false_nT_and_1F = some_inst (sample.colour > 0 && hinv.ncpu < 0)
+ -> print "false_nT_and_1F: Error! should always be false\n";
+unknown_nT_and_1U = some_inst (sample.colour > 0 && sample.noinst == 42)
+ -> print "true_nT_and_nU: Error! should always be unknown\n";
+true_nT_and_nT = some_inst (sample.colour > 0 && sample.colour >= 1)
+ -> print "true_nT_and_nT: OK should always be true\n";
+false_nT_and_nF = some_inst (sample.colour > 0 && sample.colour < 0)
+ -> print "false_nT_and_nF: Error! should always be false\n";
+unknown_nT_and_nU = some_inst (sample.colour > 0 && sample.darkness > 0)
+ -> print "true_nT_and_nU: Error! should always be unknown\n";
+
+false_nF_and_1T= some_inst (sample.colour < 0 && hinv.ncpu > 0)
+ -> print "false_nF_and_1T: Error! should always be false\n";
+false_nF_and_1F= some_inst (sample.colour < 0 && hinv.ncpu < 0)
+ -> print "false_nF_and_1F: Error! should always be false\n";
+false_nF_and_1U= some_inst (sample.colour < 0 && sample.noinst == 42)
+ -> print "false_nF_and_1U: Error! should always be false\n";
+false_nF_and_nT = some_inst (sample.colour < 0 && sample.colour > 0)
+ -> print "false_nF_and_nT: Error! should always be false\n";
+false_nF_and_nF = some_inst (sample.colour < 0 && sample.colour < -1)
+ -> print "false_nF_and_nF: Error! should always be false\n";
+false_nF_and_nU = some_inst (sample.colour < 0 && sample.darkness > 0)
+ -> print "false_nF_and_nU: Error! should always be false\n";
+
+unknown_nU_and_1T = some_inst (sample.darkness > 0 && hinv.ncpu > 0)
+ -> print "unknown_nU_and_1T: Error! should always be unknown\n";
+unknown_nU_and_1F = some_inst (sample.darkness > 0 && hinv.ncpu < 0)
+ -> print "unknown_nU_and_1F: Error! should always be unknown\n";
+unknown_nU_and_1U = some_inst (sample.darkness > 0 && sample.noinst == 42)
+ -> print "unknown_nU_and_1U: Error! should always be unknown\n";
+unknown_nU_and_nT = some_inst (sample.darkness > 0 && sample.colour > 0)
+ -> print "unknown_nU_and_nT: Error! should always be unknown\n";
+// only odd one here, the nF provides the instance domain enumeration
+// and since all instances are false there, the conjunct is universally
+// false
+false_nU_and_nF = some_inst (sample.darkness > 0 && sample.colour < 0)
+ -> print "false_nU_and_nF: Error! should always be false\n";
+unknown_nU_and_nU = some_inst (sample.darkness > 0 && sample.darkness > 100)
+ -> print "unknown_nU_and_nU: Error! should always be unknown\n";
+
+true_1T_or_1T = hinv.ncpu > 0 || hinv.ncpu > -1
+ -> print "true_1T_or_1T: OK should always be true\n";
+true_1T_or_1F = hinv.ncpu > 0 || hinv.ncpu < 0
+ -> print "true_1T_or_1F: OK should always be true\n";
+true_1T_or_1U = hinv.ncpu > 0 || sample.noinst == 42
+ -> print "true_1T_or_1U: OK should always be true\n";
+true_1T_or_nT = some_inst (hinv.ncpu > 0 || sample.colour > 0)
+ -> print "true_1T_or_nT: OK should always be true\n";
+true_1T_or_nF = some_inst (hinv.ncpu > 0 || sample.colour < 0)
+ -> print "true_1T_or_nF: OK should always be true\n";
+true_1T_or_nU = some_inst (hinv.ncpu > 0 || sample.darkness > 0)
+ -> print "true_1T_or_nU: OK should always be true\n";
+
+true_1F_or_1T = hinv.ncpu < 0 || hinv.ncpu > 0
+ -> print "true_1F_or_1T: OK should always be true\n";
+false_1F_or_1F = hinv.ncpu < 0 || hinv.ncpu < -1
+ -> print "false_1F_or_1F: Error! should always be false\n";
+unknown_1F_or_1U = hinv.ncpu < 0 || sample.noinst == 42
+ -> print "unknown_1F_or_1U: Error! should always be unknown\n";
+true_1F_or_nT = some_inst (hinv.ncpu < 0 || sample.colour > 0)
+ -> print "true_1F_or_nT: OK should always be true\n";
+false_1F_or_nF = some_inst (hinv.ncpu < 0 || sample.colour < 0)
+ -> print "false_1F_or_nF: Error! should always be false\n";
+unknown_1F_or_nU = some_inst (hinv.ncpu < 0 || sample.darkness > 0)
+ -> print "unknown_1F_or_nU: Error! should always be unknown\n";
+
+true_1U_or_1T = sample.noinst == 42 || hinv.ncpu > 0
+ -> print "true_1U_or_1T: OK should always be true\n";
+unknown_1U_or_1F = sample.noinst == 42 || hinv.ncpu < 0
+ -> print "unknown_1U_or_1F: Error! should always be unknown\n";
+unknown_1U_or_1U = sample.noinst == 42 || sample.noinst == 43
+ -> print "unknown_1U_or_1U: Error! should always be unknown\n";
+true_1U_or_nT = some_inst (sample.noinst == 42 || sample.colour > 0)
+ -> print "true_1U_or_nT: OK should always be true\n";
+unknown_1U_or_nF = some_inst (sample.noinst == 42 || sample.colour < 0)
+ -> print "unknown_1U_or_nF: Error! should always be unknown\n";
+unknown_1U_or_nU = some_inst (sample.noinst == 42 || sample.darkness > 0)
+ -> print "unknown_1U_or_nU: Error! should always be unknown\n";
+
+true_nT_or_1T = some_inst (sample.colour > 0 || hinv.ncpu > 0)
+ -> print "true_nT_or_1T: OK should always be true\n";
+true_nT_or_1F = some_inst (sample.colour > 0 || hinv.ncpu < 0)
+ -> print "true_nT_or_1F: OK should always be true\n";
+true_nT_or_1U = some_inst (sample.colour > 0 || sample.noinst == 42)
+ -> print "true_nT_or_1U: OK should always be true\n";
+true_nT_or_nT = some_inst (sample.colour > 0 || sample.colour >= 1)
+ -> print "true_nT_or_nT: OK should always be true\n";
+true_nT_or_nF = some_inst (sample.colour > 0 || sample.colour < 0)
+ -> print "true_nT_or_nF: OK should always be true\n";
+true_nT_or_nU = some_inst (sample.colour > 0 || sample.darkness > 0)
+ -> print "true_nT_or_nU: OK should always be true\n";
+
+true_nF_or_1T= some_inst (sample.colour < 0 || hinv.ncpu > 0)
+ -> print "true_nF_or_1T: OK should always be true\n";
+false_nF_or_1F= some_inst (sample.colour < 0 || hinv.ncpu < 0)
+ -> print "false_nF_or_1F: Error! should always be false\n";
+unknown_nF_or_1U= some_inst (sample.colour < 0 || sample.noinst == 42)
+ -> print "unknown_nF_or_1U: Error! should always be unknown\n";
+true_nF_or_nT = some_inst (sample.colour < 0 || sample.colour > 0)
+ -> print "true_nF_or_nT: OK should always be true\n";
+false_nF_or_nF = some_inst (sample.colour < 0 || sample.colour < -1)
+ -> print "false_nF_or_nF: Error! should always be false\n";
+unknown_nF_or_nU = some_inst (sample.colour < 0 || sample.darkness > 0)
+ -> print "unknown_nF_or_nU: Error! should always be unknown\n";
+
+// this one is going to be unknown, because there are an unknown number
+// of instances in the first predicate, so some_inst is universally unknown
+unknown_nU_or_1T = some_inst (sample.darkness > 0 || hinv.ncpu > 0)
+ -> print "unknown_nU_or_1T: Error! should always be unknown\n";
+unknown_nU_or_1F = some_inst (sample.darkness > 0 || hinv.ncpu < 0)
+ -> print "unknown_nU_or_1F: Error! should always be unknown\n";
+unknown_nU_or_1U = some_inst (sample.darkness > 0 || sample.noinst == 42)
+ -> print "unknown_nU_or_1U: Error! should always be unknown\n";
+true_nU_or_nT = some_inst (sample.darkness > 0 || sample.colour > 0)
+ -> print "true_nU_or_nT: OK should always be true\n";
+unknown_nU_or_nF = some_inst (sample.darkness > 0 || sample.colour < 0)
+ -> print "unknown_nU_or_nF: Error! should always be unknown\n";
+unknown_nU_or_nU = some_inst (sample.darkness > 0 || sample.darkness > 100)
+ -> print "unknown_nU_or_nU: Error! should always be unknown\n";
+
+End-of-File
+
+echo >>$seq.full
+echo "=== stderr ==" >>$seq.full
+cat $tmp.err >>$seq.full
+
+exit
diff --git a/qa/319.out b/qa/319.out
new file mode 100644
index 0000000..783aa9a
--- /dev/null
+++ b/qa/319.out
@@ -0,0 +1,100 @@
+QA output created by 319
+
+e1: unknown
+e2: unknown
+false_1F_and_1F: false
+false_1F_and_1T: false
+false_1F_and_1U: false
+false_1F_and_nF: false
+false_1F_and_nT: false
+false_1F_and_nU: false
+false_1F_or_1F: false
+false_1F_or_nF: false
+false_1T_and_1F: false
+false_1T_and_nF: false
+false_1U_and_1F: false
+false_1U_and_nF: false
+false_nF_and_1F: false
+false_nF_and_1T: false
+false_nF_and_1U: false
+false_nF_and_nF: false
+false_nF_and_nT: false
+false_nF_and_nU: false
+false_nF_or_1F: false
+false_nF_or_nF: false
+false_nT_and_1F: false
+false_nT_and_nF: false
+false_nU_and_nF: false
+prime: ?
+true_1F_or_1T: OK should always be true
+true_1F_or_1T: true
+true_1F_or_nT: OK should always be true
+true_1F_or_nT: true
+true_1T_and_1T: OK should always be true
+true_1T_and_1T: true
+true_1T_and_nT: OK should always be true
+true_1T_and_nT: true
+true_1T_or_1F: OK should always be true
+true_1T_or_1F: true
+true_1T_or_1T: OK should always be true
+true_1T_or_1T: true
+true_1T_or_1U: OK should always be true
+true_1T_or_1U: true
+true_1T_or_nF: OK should always be true
+true_1T_or_nF: true
+true_1T_or_nT: OK should always be true
+true_1T_or_nT: true
+true_1T_or_nU: OK should always be true
+true_1T_or_nU: true
+true_1U_or_1T: OK should always be true
+true_1U_or_1T: true
+true_1U_or_nT: OK should always be true
+true_1U_or_nT: true
+true_nF_or_1T: OK should always be true
+true_nF_or_1T: true
+true_nF_or_nT: OK should always be true
+true_nF_or_nT: true
+true_nT_and_1T: OK should always be true
+true_nT_and_1T: true
+true_nT_and_nT: OK should always be true
+true_nT_and_nT: true
+true_nT_or_1F: OK should always be true
+true_nT_or_1F: true
+true_nT_or_1T: OK should always be true
+true_nT_or_1T: true
+true_nT_or_1U: OK should always be true
+true_nT_or_1U: true
+true_nT_or_nF: OK should always be true
+true_nT_or_nF: true
+true_nT_or_nT: OK should always be true
+true_nT_or_nT: true
+true_nT_or_nU: OK should always be true
+true_nT_or_nU: true
+true_nU_or_nT: OK should always be true
+true_nU_or_nT: true
+unknown_1F_or_1U: unknown
+unknown_1F_or_nU: unknown
+unknown_1T_and_1U: unknown
+unknown_1T_and_nU: unknown
+unknown_1U_and_1T: unknown
+unknown_1U_and_1U: unknown
+unknown_1U_and_nT: unknown
+unknown_1U_and_nU: unknown
+unknown_1U_or_1F: unknown
+unknown_1U_or_1U: unknown
+unknown_1U_or_nF: unknown
+unknown_1U_or_nU: unknown
+unknown_nF_or_1U: unknown
+unknown_nF_or_nU: unknown
+unknown_nT_and_1U: unknown
+unknown_nT_and_nU: unknown
+unknown_nU_and_1F: unknown
+unknown_nU_and_1T: unknown
+unknown_nU_and_1U: unknown
+unknown_nU_and_nT: unknown
+unknown_nU_and_nU: unknown
+unknown_nU_or_1F: unknown
+unknown_nU_or_1T: unknown
+unknown_nU_or_1U: unknown
+unknown_nU_or_nF: unknown
+unknown_nU_or_nU: unknown
diff --git a/qa/320 b/qa/320
new file mode 100755
index 0000000..4d5ed45
--- /dev/null
+++ b/qa/320
@@ -0,0 +1,77 @@
+#! /bin/sh
+# PCP QA Test No. 320
+# check out user-added pmafm control files
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/951127.23.01
+ ln $seq.out.1 $seq.out
+else
+ # no support for V1 archives
+ arch=src/951127.23.01_v2
+ ln $seq.out.2 $seq.out
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+HOME=`cd $HOME; pwd`
+
+_filter()
+{
+ sed -e "s;`pwd`;HERE;g" \
+ | $PCP_AWK_PROG '
+$1 == "Host:" { $2 = "HOST" }
+ { print }' \
+ | ./xlate_2_new_pmns
+}
+
+if [ ! -d $HOME/.pcp/pmafm ]
+then
+ mkdir -p $HOME/.pcp/pmafm
+ if [ ! -d $HOME/.pcp/pmafm ]
+ then
+ echo "Arrgh ... cannot make directory \"$HOME/.pcp/pmafm\""
+ exit
+ fi
+fi
+
+rm -f $HOME/.pcp/pmafm/qa.$seq
+if [ -f $HOME/.pcp/pmafm/qa.$seq ]
+then
+ echo "Arrgh ... cannot remove \"$HOME/.pcp/pmafm/qa.$seq\""
+ exit
+fi
+
+echo 'SINGLE="pmclient pmlogcheck"' >$HOME/.pcp/pmafm/qa.$seq
+echo "SPECIAL=pmlogcheck" >>$HOME/.pcp/pmafm/qa.$seq
+
+# real QA test starts here
+
+echo "Running pmlogcheck ... expect no errors"
+mkaf `pwd`/src/foo.* >$tmp
+pmafm $tmp run pmlogcheck 2>&1 | _filter
+rm -f $tmp
+
+echo
+echo "Running pmclient ... expect error from pmclient once pmafm starts it"
+mkaf `pwd`/$arch.* >$tmp
+pmafm $tmp run pmclient -n src/root_irix 2>&1 | _filter
+rm -f $tmp
+
+# success, all done
+status=0
+exit
diff --git a/qa/320.out.1 b/qa/320.out.1
new file mode 100644
index 0000000..5f94cec
--- /dev/null
+++ b/qa/320.out.1
@@ -0,0 +1,8 @@
+QA output created by 320
+Running pmlogcheck ... expect no errors
+Host: HOST Archive: HERE/src/foo
+
+Running pmclient ... expect error from pmclient once pmafm starts it
+Host: HOST Archive: HERE/src/951127.23.01
+pmclient: cannot retrieve description for metric "kernel.all.load" (PMID: 1.18.3)
+Reason: Metric not defined in the PCP archive log
diff --git a/qa/320.out.2 b/qa/320.out.2
new file mode 100644
index 0000000..b1e7fe2
--- /dev/null
+++ b/qa/320.out.2
@@ -0,0 +1,8 @@
+QA output created by 320
+Running pmlogcheck ... expect no errors
+Host: HOST Archive: HERE/src/foo
+
+Running pmclient ... expect error from pmclient once pmafm starts it
+Host: HOST Archive: HERE/src/951127.23.01_v2
+pmclient: cannot retrieve description for metric "kernel.all.load" (PMID: 1.18.3)
+Reason: Metric not defined in the PCP archive log
diff --git a/qa/321 b/qa/321
new file mode 100755
index 0000000..848947f
--- /dev/null
+++ b/qa/321
@@ -0,0 +1,70 @@
+#! /bin/sh
+# PCP QA Test No. 317
+# pmie failure with 80%_time rule and imprecision in double arithmetic
+# when integer arithmetic would workd just fine
+#
+# Copyright (c) 2007 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmie -z -a src/conn20070309 -S @17:00 -T @17:10 <<'End-of-File' 2>&1 \
+| fgrep -v "evaluator exiting"
+service_name_cn = "CON_USE";
+sample_count = "@0..4";
+acx_filter = "echo";
+
+conn_critical = 80;
+conn_warning = 70;
+conn_used = "aconex.connections.inuse $sample_count";
+
+some_inst ( (80 %_sample ($conn_used >= $conn_critical)) )
+ -> shell "$acx_filter %h %i $service_name_cn CRITICAL %v Ctns\n";
+
+some_inst ( (80 %_sample ($conn_used >= $conn_warning)) &&
+ !(80 %_sample ($conn_used >= $conn_critical)) )
+ -> shell "$acx_filter %h %i $service_name_cn WARNING %v Ctns\n";
+
+some_inst ( !(80 %_sample ($conn_used >= $conn_warning)) )
+ -> shell "$acx_filter %h %i $service_name_cn OK %v Ctns\n";
+
+some_inst (count_sample ($conn_used >= $conn_critical) >= 4)
+ -> shell "$acx_filter %h %i $'service_name_cn'_COUNT CRITICAL %v Ctns\n";
+End-of-File
+
+pmie -v -T 2sec <<'End-of-File' 2>&1 \
+| fgrep -v "evaluator exiting" \
+| sed -e '/warning cannot create stats file dir/d' \
+| _filter_pmie_log
+delta=3sec;
+some_inst sample.hordes.one > 249
+ -> print "HORDES > 249\n" "[%i] %v\n";
+
+count_inst (sample.hordes.one > 249) > 0
+ -> print "COUNT HORDES > 249\n" "%v\n";
+
+50 %_inst (sample.hordes.one > 249)
+ -> print "50% HORDES > 249: %v Ctns\n";
+
+some_inst sample.hordes.one <= 249
+ -> print "HORDES <= 249\n" "[%i] %v\n";
+
+count_inst (sample.hordes.one <= 249) > 0
+ -> print "COUNT HORDES <= 249\n" "%v\n";
+
+50 %_inst (sample.hordes.one <= 249)
+ -> print "50% HORDES <= 249: %v Ctns\n";
+End-of-File
+
+
diff --git a/qa/321.out b/qa/321.out
new file mode 100644
index 0000000..b6700d6
--- /dev/null
+++ b/qa/321.out
@@ -0,0 +1,1179 @@
+QA output created by 321
+pmie: timezone set to local timezone of host app1
+shell Fri Mar 9 17:00:40 2007: echo app1 mel CON_USE OK 64 100 100 100 45 Ctns
+
+shell Fri Mar 9 17:00:50 2007: echo app1 mel CON_USE OK 30 64 100 100 100 Ctns
+
+shell Fri Mar 9 17:01:00 2007: echo app1 mel CON_USE OK 30 30 64 100 100 Ctns
+
+shell Fri Mar 9 17:01:10 2007: echo app1 mel CON_USE OK 97 30 30 64 100 Ctns
+
+shell Fri Mar 9 17:01:20 2007: echo app1 mel CON_USE OK 100 97 30 30 64 Ctns
+
+shell Fri Mar 9 17:01:30 2007: echo app1 mel CON_USE OK 100 100 97 30 30 Ctns
+
+shell Fri Mar 9 17:01:40 2007: echo app1 mel CON_USE CRITICAL 100 100 100 97 30 Ctns
+
+shell Fri Mar 9 17:01:40 2007: echo app1 mel CON_USE_COUNT CRITICAL 4 Ctns
+
+shell Fri Mar 9 17:01:50 2007: echo app1 mel CON_USE CRITICAL 60 100 100 100 97 Ctns
+
+shell Fri Mar 9 17:01:50 2007: echo app1 mel CON_USE_COUNT CRITICAL 4 Ctns
+
+shell Fri Mar 9 17:02:00 2007: echo app1 mel CON_USE OK 60 60 100 100 100 Ctns
+
+shell Fri Mar 9 17:02:10 2007: echo app1 mel CON_USE OK 100 60 60 100 100 Ctns
+
+shell Fri Mar 9 17:02:20 2007: echo app1 mel CON_USE OK 58 100 60 60 100 Ctns
+
+shell Fri Mar 9 17:02:30 2007: echo app1 mel CON_USE OK 58 58 100 60 60 Ctns
+
+shell Fri Mar 9 17:02:40 2007: echo app1 mel CON_USE OK 100 58 58 100 60 Ctns
+
+shell Fri Mar 9 17:02:50 2007: echo app1 mel CON_USE OK 93 100 58 58 100 Ctns
+
+shell Fri Mar 9 17:03:00 2007: echo app1 mel CON_USE OK 93 93 100 58 58 Ctns
+
+shell Fri Mar 9 17:03:10 2007: echo app1 mel CON_USE WARNING 73 93 93 100 58 Ctns
+
+shell Fri Mar 9 17:03:20 2007: echo app1 mel CON_USE CRITICAL 100 73 93 93 100 Ctns
+
+shell Fri Mar 9 17:03:20 2007: echo app1 mel CON_USE_COUNT CRITICAL 4 Ctns
+
+shell Fri Mar 9 17:03:30 2007: echo app1 mel CON_USE CRITICAL 100 100 73 93 93 Ctns
+
+shell Fri Mar 9 17:03:30 2007: echo app1 mel CON_USE_COUNT CRITICAL 4 Ctns
+
+shell Fri Mar 9 17:03:40 2007: echo app1 mel CON_USE CRITICAL 100 100 100 73 93 Ctns
+
+shell Fri Mar 9 17:03:40 2007: echo app1 mel CON_USE_COUNT CRITICAL 4 Ctns
+
+shell Fri Mar 9 17:03:50 2007: echo app1 mel CON_USE WARNING 55 100 100 100 73 Ctns
+
+shell Fri Mar 9 17:04:00 2007: echo app1 mel CON_USE OK 55 55 100 100 100 Ctns
+
+shell Fri Mar 9 17:04:10 2007: echo app1 mel CON_USE OK 88 55 55 100 100 Ctns
+
+shell Fri Mar 9 17:04:20 2007: echo app1 mel CON_USE OK 86 88 55 55 100 Ctns
+
+shell Fri Mar 9 17:04:30 2007: echo app1 mel CON_USE OK 86 86 88 55 55 Ctns
+
+shell Fri Mar 9 17:04:40 2007: echo app1 mel CON_USE CRITICAL 100 86 86 88 55 Ctns
+
+shell Fri Mar 9 17:04:40 2007: echo app1 mel CON_USE_COUNT CRITICAL 4 Ctns
+
+shell Fri Mar 9 17:04:50 2007: echo app1 mel CON_USE CRITICAL 100 100 86 86 88 Ctns
+
+shell Fri Mar 9 17:04:50 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:05:00 2007: echo app1 mel CON_USE CRITICAL 100 100 100 86 86 Ctns
+
+shell Fri Mar 9 17:05:00 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:05:10 2007: echo app1 mel CON_USE CRITICAL 99 100 100 100 86 Ctns
+
+shell Fri Mar 9 17:05:10 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:05:20 2007: echo app1 mel CON_USE CRITICAL 100 99 100 100 100 Ctns
+
+shell Fri Mar 9 17:05:20 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:05:30 2007: echo app1 mel CON_USE CRITICAL 100 100 99 100 100 Ctns
+
+shell Fri Mar 9 17:05:30 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:05:40 2007: echo app1 mel CON_USE CRITICAL 100 100 100 99 100 Ctns
+
+shell Fri Mar 9 17:05:40 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:05:50 2007: echo app1 mel CON_USE CRITICAL 100 100 100 100 99 Ctns
+
+shell Fri Mar 9 17:05:50 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:06:00 2007: echo app1 mel CON_USE CRITICAL 100 100 100 100 100 Ctns
+
+shell Fri Mar 9 17:06:00 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:06:10 2007: echo app1 mel CON_USE CRITICAL 100 100 100 100 100 Ctns
+
+shell Fri Mar 9 17:06:10 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:06:20 2007: echo app1 mel CON_USE CRITICAL 86 100 100 100 100 Ctns
+
+shell Fri Mar 9 17:06:20 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:06:30 2007: echo app1 mel CON_USE CRITICAL 86 86 100 100 100 Ctns
+
+shell Fri Mar 9 17:06:30 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:06:40 2007: echo app1 mel CON_USE CRITICAL 98 86 86 100 100 Ctns
+
+shell Fri Mar 9 17:06:40 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:06:50 2007: echo app1 mel CON_USE CRITICAL 99 98 86 86 100 Ctns
+
+shell Fri Mar 9 17:06:50 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:07:00 2007: echo app1 mel CON_USE CRITICAL 99 99 98 86 86 Ctns
+
+shell Fri Mar 9 17:07:00 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:07:10 2007: echo app1 mel CON_USE CRITICAL 98 99 99 98 86 Ctns
+
+shell Fri Mar 9 17:07:10 2007: echo app1 mel CON_USE_COUNT CRITICAL 5 Ctns
+
+shell Fri Mar 9 17:07:20 2007: echo app1 mel CON_USE CRITICAL 44 98 99 99 98 Ctns
+
+shell Fri Mar 9 17:07:20 2007: echo app1 mel CON_USE_COUNT CRITICAL 4 Ctns
+
+shell Fri Mar 9 17:07:30 2007: echo app1 mel CON_USE OK 44 44 98 99 99 Ctns
+
+shell Fri Mar 9 17:07:40 2007: echo app1 mel CON_USE OK 52 44 44 98 99 Ctns
+
+shell Fri Mar 9 17:07:50 2007: echo app1 mel CON_USE OK 41 52 44 44 98 Ctns
+
+shell Fri Mar 9 17:08:00 2007: echo app1 mel CON_USE OK 41 41 52 44 44 Ctns
+
+shell Fri Mar 9 17:08:10 2007: echo app1 mel CON_USE OK 28 41 41 52 44 Ctns
+
+shell Fri Mar 9 17:08:20 2007: echo app1 mel CON_USE OK 51 28 41 41 52 Ctns
+
+shell Fri Mar 9 17:08:30 2007: echo app1 mel CON_USE OK 51 51 28 41 41 Ctns
+
+shell Fri Mar 9 17:08:40 2007: echo app1 mel CON_USE OK 37 51 51 28 41 Ctns
+
+shell Fri Mar 9 17:08:50 2007: echo app1 mel CON_USE OK 100 37 51 51 28 Ctns
+
+shell Fri Mar 9 17:09:00 2007: echo app1 mel CON_USE OK 100 100 37 51 51 Ctns
+
+shell Fri Mar 9 17:09:10 2007: echo app1 mel CON_USE OK 46 100 100 37 51 Ctns
+
+shell Fri Mar 9 17:09:20 2007: echo app1 mel CON_USE OK 42 46 100 100 37 Ctns
+
+shell Fri Mar 9 17:09:30 2007: echo app1 mel CON_USE OK 42 42 46 100 100 Ctns
+
+shell Fri Mar 9 17:09:40 2007: echo app1 mel CON_USE OK 14 42 42 46 100 Ctns
+
+shell Fri Mar 9 17:09:50 2007: echo app1 mel CON_USE OK 19 14 42 42 46 Ctns
+
+shell Fri Mar 9 17:10:00 2007: echo app1 mel CON_USE OK 19 19 14 42 42 Ctns
+
+DATE: HORDES > 249
+[250] 250
+[251] 251
+[252] 252
+[253] 253
+[254] 254
+[255] 255
+[256] 256
+[257] 257
+[258] 258
+[259] 259
+[260] 260
+[261] 261
+[262] 262
+[263] 263
+[264] 264
+[265] 265
+[266] 266
+[267] 267
+[268] 268
+[269] 269
+[270] 270
+[271] 271
+[272] 272
+[273] 273
+[274] 274
+[275] 275
+[276] 276
+[277] 277
+[278] 278
+[279] 279
+[280] 280
+[281] 281
+[282] 282
+[283] 283
+[284] 284
+[285] 285
+[286] 286
+[287] 287
+[288] 288
+[289] 289
+[290] 290
+[291] 291
+[292] 292
+[293] 293
+[294] 294
+[295] 295
+[296] 296
+[297] 297
+[298] 298
+[299] 299
+[300] 300
+[301] 301
+[302] 302
+[303] 303
+[304] 304
+[305] 305
+[306] 306
+[307] 307
+[308] 308
+[309] 309
+[310] 310
+[311] 311
+[312] 312
+[313] 313
+[314] 314
+[315] 315
+[316] 316
+[317] 317
+[318] 318
+[319] 319
+[320] 320
+[321] 321
+[322] 322
+[323] 323
+[324] 324
+[325] 325
+[326] 326
+[327] 327
+[328] 328
+[329] 329
+[330] 330
+[331] 331
+[332] 332
+[333] 333
+[334] 334
+[335] 335
+[336] 336
+[337] 337
+[338] 338
+[339] 339
+[340] 340
+[341] 341
+[342] 342
+[343] 343
+[344] 344
+[345] 345
+[346] 346
+[347] 347
+[348] 348
+[349] 349
+[350] 350
+[351] 351
+[352] 352
+[353] 353
+[354] 354
+[355] 355
+[356] 356
+[357] 357
+[358] 358
+[359] 359
+[360] 360
+[361] 361
+[362] 362
+[363] 363
+[364] 364
+[365] 365
+[366] 366
+[367] 367
+[368] 368
+[369] 369
+[370] 370
+[371] 371
+[372] 372
+[373] 373
+[374] 374
+[375] 375
+[376] 376
+[377] 377
+[378] 378
+[379] 379
+[380] 380
+[381] 381
+[382] 382
+[383] 383
+[384] 384
+[385] 385
+[386] 386
+[387] 387
+[388] 388
+[389] 389
+[390] 390
+[391] 391
+[392] 392
+[393] 393
+[394] 394
+[395] 395
+[396] 396
+[397] 397
+[398] 398
+[399] 399
+[400] 400
+[401] 401
+[402] 402
+[403] 403
+[404] 404
+[405] 405
+[406] 406
+[407] 407
+[408] 408
+[409] 409
+[410] 410
+[411] 411
+[412] 412
+[413] 413
+[414] 414
+[415] 415
+[416] 416
+[417] 417
+[418] 418
+[419] 419
+[420] 420
+[421] 421
+[422] 422
+[423] 423
+[424] 424
+[425] 425
+[426] 426
+[427] 427
+[428] 428
+[429] 429
+[430] 430
+[431] 431
+[432] 432
+[433] 433
+[434] 434
+[435] 435
+[436] 436
+[437] 437
+[438] 438
+[439] 439
+[440] 440
+[441] 441
+[442] 442
+[443] 443
+[444] 444
+[445] 445
+[446] 446
+[447] 447
+[448] 448
+[449] 449
+[450] 450
+[451] 451
+[452] 452
+[453] 453
+[454] 454
+[455] 455
+[456] 456
+[457] 457
+[458] 458
+[459] 459
+[460] 460
+[461] 461
+[462] 462
+[463] 463
+[464] 464
+[465] 465
+[466] 466
+[467] 467
+[468] 468
+[469] 469
+[470] 470
+[471] 471
+[472] 472
+[473] 473
+[474] 474
+[475] 475
+[476] 476
+[477] 477
+[478] 478
+[479] 479
+[480] 480
+[481] 481
+[482] 482
+[483] 483
+[484] 484
+[485] 485
+[486] 486
+[487] 487
+[488] 488
+[489] 489
+[490] 490
+[491] 491
+[492] 492
+[493] 493
+[494] 494
+[495] 495
+[496] 496
+[497] 497
+[498] 498
+[499] 499
+
+DATE: COUNT HORDES > 249
+250
+
+DATE: 50% HORDES > 249: 250 Ctns
+50% HORDES > 249: 251 Ctns
+50% HORDES > 249: 252 Ctns
+50% HORDES > 249: 253 Ctns
+50% HORDES > 249: 254 Ctns
+50% HORDES > 249: 255 Ctns
+50% HORDES > 249: 256 Ctns
+50% HORDES > 249: 257 Ctns
+50% HORDES > 249: 258 Ctns
+50% HORDES > 249: 259 Ctns
+50% HORDES > 249: 260 Ctns
+50% HORDES > 249: 261 Ctns
+50% HORDES > 249: 262 Ctns
+50% HORDES > 249: 263 Ctns
+50% HORDES > 249: 264 Ctns
+50% HORDES > 249: 265 Ctns
+50% HORDES > 249: 266 Ctns
+50% HORDES > 249: 267 Ctns
+50% HORDES > 249: 268 Ctns
+50% HORDES > 249: 269 Ctns
+50% HORDES > 249: 270 Ctns
+50% HORDES > 249: 271 Ctns
+50% HORDES > 249: 272 Ctns
+50% HORDES > 249: 273 Ctns
+50% HORDES > 249: 274 Ctns
+50% HORDES > 249: 275 Ctns
+50% HORDES > 249: 276 Ctns
+50% HORDES > 249: 277 Ctns
+50% HORDES > 249: 278 Ctns
+50% HORDES > 249: 279 Ctns
+50% HORDES > 249: 280 Ctns
+50% HORDES > 249: 281 Ctns
+50% HORDES > 249: 282 Ctns
+50% HORDES > 249: 283 Ctns
+50% HORDES > 249: 284 Ctns
+50% HORDES > 249: 285 Ctns
+50% HORDES > 249: 286 Ctns
+50% HORDES > 249: 287 Ctns
+50% HORDES > 249: 288 Ctns
+50% HORDES > 249: 289 Ctns
+50% HORDES > 249: 290 Ctns
+50% HORDES > 249: 291 Ctns
+50% HORDES > 249: 292 Ctns
+50% HORDES > 249: 293 Ctns
+50% HORDES > 249: 294 Ctns
+50% HORDES > 249: 295 Ctns
+50% HORDES > 249: 296 Ctns
+50% HORDES > 249: 297 Ctns
+50% HORDES > 249: 298 Ctns
+50% HORDES > 249: 299 Ctns
+50% HORDES > 249: 300 Ctns
+50% HORDES > 249: 301 Ctns
+50% HORDES > 249: 302 Ctns
+50% HORDES > 249: 303 Ctns
+50% HORDES > 249: 304 Ctns
+50% HORDES > 249: 305 Ctns
+50% HORDES > 249: 306 Ctns
+50% HORDES > 249: 307 Ctns
+50% HORDES > 249: 308 Ctns
+50% HORDES > 249: 309 Ctns
+50% HORDES > 249: 310 Ctns
+50% HORDES > 249: 311 Ctns
+50% HORDES > 249: 312 Ctns
+50% HORDES > 249: 313 Ctns
+50% HORDES > 249: 314 Ctns
+50% HORDES > 249: 315 Ctns
+50% HORDES > 249: 316 Ctns
+50% HORDES > 249: 317 Ctns
+50% HORDES > 249: 318 Ctns
+50% HORDES > 249: 319 Ctns
+50% HORDES > 249: 320 Ctns
+50% HORDES > 249: 321 Ctns
+50% HORDES > 249: 322 Ctns
+50% HORDES > 249: 323 Ctns
+50% HORDES > 249: 324 Ctns
+50% HORDES > 249: 325 Ctns
+50% HORDES > 249: 326 Ctns
+50% HORDES > 249: 327 Ctns
+50% HORDES > 249: 328 Ctns
+50% HORDES > 249: 329 Ctns
+50% HORDES > 249: 330 Ctns
+50% HORDES > 249: 331 Ctns
+50% HORDES > 249: 332 Ctns
+50% HORDES > 249: 333 Ctns
+50% HORDES > 249: 334 Ctns
+50% HORDES > 249: 335 Ctns
+50% HORDES > 249: 336 Ctns
+50% HORDES > 249: 337 Ctns
+50% HORDES > 249: 338 Ctns
+50% HORDES > 249: 339 Ctns
+50% HORDES > 249: 340 Ctns
+50% HORDES > 249: 341 Ctns
+50% HORDES > 249: 342 Ctns
+50% HORDES > 249: 343 Ctns
+50% HORDES > 249: 344 Ctns
+50% HORDES > 249: 345 Ctns
+50% HORDES > 249: 346 Ctns
+50% HORDES > 249: 347 Ctns
+50% HORDES > 249: 348 Ctns
+50% HORDES > 249: 349 Ctns
+50% HORDES > 249: 350 Ctns
+50% HORDES > 249: 351 Ctns
+50% HORDES > 249: 352 Ctns
+50% HORDES > 249: 353 Ctns
+50% HORDES > 249: 354 Ctns
+50% HORDES > 249: 355 Ctns
+50% HORDES > 249: 356 Ctns
+50% HORDES > 249: 357 Ctns
+50% HORDES > 249: 358 Ctns
+50% HORDES > 249: 359 Ctns
+50% HORDES > 249: 360 Ctns
+50% HORDES > 249: 361 Ctns
+50% HORDES > 249: 362 Ctns
+50% HORDES > 249: 363 Ctns
+50% HORDES > 249: 364 Ctns
+50% HORDES > 249: 365 Ctns
+50% HORDES > 249: 366 Ctns
+50% HORDES > 249: 367 Ctns
+50% HORDES > 249: 368 Ctns
+50% HORDES > 249: 369 Ctns
+50% HORDES > 249: 370 Ctns
+50% HORDES > 249: 371 Ctns
+50% HORDES > 249: 372 Ctns
+50% HORDES > 249: 373 Ctns
+50% HORDES > 249: 374 Ctns
+50% HORDES > 249: 375 Ctns
+50% HORDES > 249: 376 Ctns
+50% HORDES > 249: 377 Ctns
+50% HORDES > 249: 378 Ctns
+50% HORDES > 249: 379 Ctns
+50% HORDES > 249: 380 Ctns
+50% HORDES > 249: 381 Ctns
+50% HORDES > 249: 382 Ctns
+50% HORDES > 249: 383 Ctns
+50% HORDES > 249: 384 Ctns
+50% HORDES > 249: 385 Ctns
+50% HORDES > 249: 386 Ctns
+50% HORDES > 249: 387 Ctns
+50% HORDES > 249: 388 Ctns
+50% HORDES > 249: 389 Ctns
+50% HORDES > 249: 390 Ctns
+50% HORDES > 249: 391 Ctns
+50% HORDES > 249: 392 Ctns
+50% HORDES > 249: 393 Ctns
+50% HORDES > 249: 394 Ctns
+50% HORDES > 249: 395 Ctns
+50% HORDES > 249: 396 Ctns
+50% HORDES > 249: 397 Ctns
+50% HORDES > 249: 398 Ctns
+50% HORDES > 249: 399 Ctns
+50% HORDES > 249: 400 Ctns
+50% HORDES > 249: 401 Ctns
+50% HORDES > 249: 402 Ctns
+50% HORDES > 249: 403 Ctns
+50% HORDES > 249: 404 Ctns
+50% HORDES > 249: 405 Ctns
+50% HORDES > 249: 406 Ctns
+50% HORDES > 249: 407 Ctns
+50% HORDES > 249: 408 Ctns
+50% HORDES > 249: 409 Ctns
+50% HORDES > 249: 410 Ctns
+50% HORDES > 249: 411 Ctns
+50% HORDES > 249: 412 Ctns
+50% HORDES > 249: 413 Ctns
+50% HORDES > 249: 414 Ctns
+50% HORDES > 249: 415 Ctns
+50% HORDES > 249: 416 Ctns
+50% HORDES > 249: 417 Ctns
+50% HORDES > 249: 418 Ctns
+50% HORDES > 249: 419 Ctns
+50% HORDES > 249: 420 Ctns
+50% HORDES > 249: 421 Ctns
+50% HORDES > 249: 422 Ctns
+50% HORDES > 249: 423 Ctns
+50% HORDES > 249: 424 Ctns
+50% HORDES > 249: 425 Ctns
+50% HORDES > 249: 426 Ctns
+50% HORDES > 249: 427 Ctns
+50% HORDES > 249: 428 Ctns
+50% HORDES > 249: 429 Ctns
+50% HORDES > 249: 430 Ctns
+50% HORDES > 249: 431 Ctns
+50% HORDES > 249: 432 Ctns
+50% HORDES > 249: 433 Ctns
+50% HORDES > 249: 434 Ctns
+50% HORDES > 249: 435 Ctns
+50% HORDES > 249: 436 Ctns
+50% HORDES > 249: 437 Ctns
+50% HORDES > 249: 438 Ctns
+50% HORDES > 249: 439 Ctns
+50% HORDES > 249: 440 Ctns
+50% HORDES > 249: 441 Ctns
+50% HORDES > 249: 442 Ctns
+50% HORDES > 249: 443 Ctns
+50% HORDES > 249: 444 Ctns
+50% HORDES > 249: 445 Ctns
+50% HORDES > 249: 446 Ctns
+50% HORDES > 249: 447 Ctns
+50% HORDES > 249: 448 Ctns
+50% HORDES > 249: 449 Ctns
+50% HORDES > 249: 450 Ctns
+50% HORDES > 249: 451 Ctns
+50% HORDES > 249: 452 Ctns
+50% HORDES > 249: 453 Ctns
+50% HORDES > 249: 454 Ctns
+50% HORDES > 249: 455 Ctns
+50% HORDES > 249: 456 Ctns
+50% HORDES > 249: 457 Ctns
+50% HORDES > 249: 458 Ctns
+50% HORDES > 249: 459 Ctns
+50% HORDES > 249: 460 Ctns
+50% HORDES > 249: 461 Ctns
+50% HORDES > 249: 462 Ctns
+50% HORDES > 249: 463 Ctns
+50% HORDES > 249: 464 Ctns
+50% HORDES > 249: 465 Ctns
+50% HORDES > 249: 466 Ctns
+50% HORDES > 249: 467 Ctns
+50% HORDES > 249: 468 Ctns
+50% HORDES > 249: 469 Ctns
+50% HORDES > 249: 470 Ctns
+50% HORDES > 249: 471 Ctns
+50% HORDES > 249: 472 Ctns
+50% HORDES > 249: 473 Ctns
+50% HORDES > 249: 474 Ctns
+50% HORDES > 249: 475 Ctns
+50% HORDES > 249: 476 Ctns
+50% HORDES > 249: 477 Ctns
+50% HORDES > 249: 478 Ctns
+50% HORDES > 249: 479 Ctns
+50% HORDES > 249: 480 Ctns
+50% HORDES > 249: 481 Ctns
+50% HORDES > 249: 482 Ctns
+50% HORDES > 249: 483 Ctns
+50% HORDES > 249: 484 Ctns
+50% HORDES > 249: 485 Ctns
+50% HORDES > 249: 486 Ctns
+50% HORDES > 249: 487 Ctns
+50% HORDES > 249: 488 Ctns
+50% HORDES > 249: 489 Ctns
+50% HORDES > 249: 490 Ctns
+50% HORDES > 249: 491 Ctns
+50% HORDES > 249: 492 Ctns
+50% HORDES > 249: 493 Ctns
+50% HORDES > 249: 494 Ctns
+50% HORDES > 249: 495 Ctns
+50% HORDES > 249: 496 Ctns
+50% HORDES > 249: 497 Ctns
+50% HORDES > 249: 498 Ctns
+50% HORDES > 249: 499 Ctns
+
+DATE: HORDES <= 249
+[0] 0
+[1] 1
+[2] 2
+[3] 3
+[4] 4
+[5] 5
+[6] 6
+[7] 7
+[8] 8
+[9] 9
+[10] 10
+[11] 11
+[12] 12
+[13] 13
+[14] 14
+[15] 15
+[16] 16
+[17] 17
+[18] 18
+[19] 19
+[20] 20
+[21] 21
+[22] 22
+[23] 23
+[24] 24
+[25] 25
+[26] 26
+[27] 27
+[28] 28
+[29] 29
+[30] 30
+[31] 31
+[32] 32
+[33] 33
+[34] 34
+[35] 35
+[36] 36
+[37] 37
+[38] 38
+[39] 39
+[40] 40
+[41] 41
+[42] 42
+[43] 43
+[44] 44
+[45] 45
+[46] 46
+[47] 47
+[48] 48
+[49] 49
+[50] 50
+[51] 51
+[52] 52
+[53] 53
+[54] 54
+[55] 55
+[56] 56
+[57] 57
+[58] 58
+[59] 59
+[60] 60
+[61] 61
+[62] 62
+[63] 63
+[64] 64
+[65] 65
+[66] 66
+[67] 67
+[68] 68
+[69] 69
+[70] 70
+[71] 71
+[72] 72
+[73] 73
+[74] 74
+[75] 75
+[76] 76
+[77] 77
+[78] 78
+[79] 79
+[80] 80
+[81] 81
+[82] 82
+[83] 83
+[84] 84
+[85] 85
+[86] 86
+[87] 87
+[88] 88
+[89] 89
+[90] 90
+[91] 91
+[92] 92
+[93] 93
+[94] 94
+[95] 95
+[96] 96
+[97] 97
+[98] 98
+[99] 99
+[100] 100
+[101] 101
+[102] 102
+[103] 103
+[104] 104
+[105] 105
+[106] 106
+[107] 107
+[108] 108
+[109] 109
+[110] 110
+[111] 111
+[112] 112
+[113] 113
+[114] 114
+[115] 115
+[116] 116
+[117] 117
+[118] 118
+[119] 119
+[120] 120
+[121] 121
+[122] 122
+[123] 123
+[124] 124
+[125] 125
+[126] 126
+[127] 127
+[128] 128
+[129] 129
+[130] 130
+[131] 131
+[132] 132
+[133] 133
+[134] 134
+[135] 135
+[136] 136
+[137] 137
+[138] 138
+[139] 139
+[140] 140
+[141] 141
+[142] 142
+[143] 143
+[144] 144
+[145] 145
+[146] 146
+[147] 147
+[148] 148
+[149] 149
+[150] 150
+[151] 151
+[152] 152
+[153] 153
+[154] 154
+[155] 155
+[156] 156
+[157] 157
+[158] 158
+[159] 159
+[160] 160
+[161] 161
+[162] 162
+[163] 163
+[164] 164
+[165] 165
+[166] 166
+[167] 167
+[168] 168
+[169] 169
+[170] 170
+[171] 171
+[172] 172
+[173] 173
+[174] 174
+[175] 175
+[176] 176
+[177] 177
+[178] 178
+[179] 179
+[180] 180
+[181] 181
+[182] 182
+[183] 183
+[184] 184
+[185] 185
+[186] 186
+[187] 187
+[188] 188
+[189] 189
+[190] 190
+[191] 191
+[192] 192
+[193] 193
+[194] 194
+[195] 195
+[196] 196
+[197] 197
+[198] 198
+[199] 199
+[200] 200
+[201] 201
+[202] 202
+[203] 203
+[204] 204
+[205] 205
+[206] 206
+[207] 207
+[208] 208
+[209] 209
+[210] 210
+[211] 211
+[212] 212
+[213] 213
+[214] 214
+[215] 215
+[216] 216
+[217] 217
+[218] 218
+[219] 219
+[220] 220
+[221] 221
+[222] 222
+[223] 223
+[224] 224
+[225] 225
+[226] 226
+[227] 227
+[228] 228
+[229] 229
+[230] 230
+[231] 231
+[232] 232
+[233] 233
+[234] 234
+[235] 235
+[236] 236
+[237] 237
+[238] 238
+[239] 239
+[240] 240
+[241] 241
+[242] 242
+[243] 243
+[244] 244
+[245] 245
+[246] 246
+[247] 247
+[248] 248
+[249] 249
+
+DATE: COUNT HORDES <= 249
+250
+
+DATE: 50% HORDES <= 249: 0 Ctns
+50% HORDES <= 249: 1 Ctns
+50% HORDES <= 249: 2 Ctns
+50% HORDES <= 249: 3 Ctns
+50% HORDES <= 249: 4 Ctns
+50% HORDES <= 249: 5 Ctns
+50% HORDES <= 249: 6 Ctns
+50% HORDES <= 249: 7 Ctns
+50% HORDES <= 249: 8 Ctns
+50% HORDES <= 249: 9 Ctns
+50% HORDES <= 249: 10 Ctns
+50% HORDES <= 249: 11 Ctns
+50% HORDES <= 249: 12 Ctns
+50% HORDES <= 249: 13 Ctns
+50% HORDES <= 249: 14 Ctns
+50% HORDES <= 249: 15 Ctns
+50% HORDES <= 249: 16 Ctns
+50% HORDES <= 249: 17 Ctns
+50% HORDES <= 249: 18 Ctns
+50% HORDES <= 249: 19 Ctns
+50% HORDES <= 249: 20 Ctns
+50% HORDES <= 249: 21 Ctns
+50% HORDES <= 249: 22 Ctns
+50% HORDES <= 249: 23 Ctns
+50% HORDES <= 249: 24 Ctns
+50% HORDES <= 249: 25 Ctns
+50% HORDES <= 249: 26 Ctns
+50% HORDES <= 249: 27 Ctns
+50% HORDES <= 249: 28 Ctns
+50% HORDES <= 249: 29 Ctns
+50% HORDES <= 249: 30 Ctns
+50% HORDES <= 249: 31 Ctns
+50% HORDES <= 249: 32 Ctns
+50% HORDES <= 249: 33 Ctns
+50% HORDES <= 249: 34 Ctns
+50% HORDES <= 249: 35 Ctns
+50% HORDES <= 249: 36 Ctns
+50% HORDES <= 249: 37 Ctns
+50% HORDES <= 249: 38 Ctns
+50% HORDES <= 249: 39 Ctns
+50% HORDES <= 249: 40 Ctns
+50% HORDES <= 249: 41 Ctns
+50% HORDES <= 249: 42 Ctns
+50% HORDES <= 249: 43 Ctns
+50% HORDES <= 249: 44 Ctns
+50% HORDES <= 249: 45 Ctns
+50% HORDES <= 249: 46 Ctns
+50% HORDES <= 249: 47 Ctns
+50% HORDES <= 249: 48 Ctns
+50% HORDES <= 249: 49 Ctns
+50% HORDES <= 249: 50 Ctns
+50% HORDES <= 249: 51 Ctns
+50% HORDES <= 249: 52 Ctns
+50% HORDES <= 249: 53 Ctns
+50% HORDES <= 249: 54 Ctns
+50% HORDES <= 249: 55 Ctns
+50% HORDES <= 249: 56 Ctns
+50% HORDES <= 249: 57 Ctns
+50% HORDES <= 249: 58 Ctns
+50% HORDES <= 249: 59 Ctns
+50% HORDES <= 249: 60 Ctns
+50% HORDES <= 249: 61 Ctns
+50% HORDES <= 249: 62 Ctns
+50% HORDES <= 249: 63 Ctns
+50% HORDES <= 249: 64 Ctns
+50% HORDES <= 249: 65 Ctns
+50% HORDES <= 249: 66 Ctns
+50% HORDES <= 249: 67 Ctns
+50% HORDES <= 249: 68 Ctns
+50% HORDES <= 249: 69 Ctns
+50% HORDES <= 249: 70 Ctns
+50% HORDES <= 249: 71 Ctns
+50% HORDES <= 249: 72 Ctns
+50% HORDES <= 249: 73 Ctns
+50% HORDES <= 249: 74 Ctns
+50% HORDES <= 249: 75 Ctns
+50% HORDES <= 249: 76 Ctns
+50% HORDES <= 249: 77 Ctns
+50% HORDES <= 249: 78 Ctns
+50% HORDES <= 249: 79 Ctns
+50% HORDES <= 249: 80 Ctns
+50% HORDES <= 249: 81 Ctns
+50% HORDES <= 249: 82 Ctns
+50% HORDES <= 249: 83 Ctns
+50% HORDES <= 249: 84 Ctns
+50% HORDES <= 249: 85 Ctns
+50% HORDES <= 249: 86 Ctns
+50% HORDES <= 249: 87 Ctns
+50% HORDES <= 249: 88 Ctns
+50% HORDES <= 249: 89 Ctns
+50% HORDES <= 249: 90 Ctns
+50% HORDES <= 249: 91 Ctns
+50% HORDES <= 249: 92 Ctns
+50% HORDES <= 249: 93 Ctns
+50% HORDES <= 249: 94 Ctns
+50% HORDES <= 249: 95 Ctns
+50% HORDES <= 249: 96 Ctns
+50% HORDES <= 249: 97 Ctns
+50% HORDES <= 249: 98 Ctns
+50% HORDES <= 249: 99 Ctns
+50% HORDES <= 249: 100 Ctns
+50% HORDES <= 249: 101 Ctns
+50% HORDES <= 249: 102 Ctns
+50% HORDES <= 249: 103 Ctns
+50% HORDES <= 249: 104 Ctns
+50% HORDES <= 249: 105 Ctns
+50% HORDES <= 249: 106 Ctns
+50% HORDES <= 249: 107 Ctns
+50% HORDES <= 249: 108 Ctns
+50% HORDES <= 249: 109 Ctns
+50% HORDES <= 249: 110 Ctns
+50% HORDES <= 249: 111 Ctns
+50% HORDES <= 249: 112 Ctns
+50% HORDES <= 249: 113 Ctns
+50% HORDES <= 249: 114 Ctns
+50% HORDES <= 249: 115 Ctns
+50% HORDES <= 249: 116 Ctns
+50% HORDES <= 249: 117 Ctns
+50% HORDES <= 249: 118 Ctns
+50% HORDES <= 249: 119 Ctns
+50% HORDES <= 249: 120 Ctns
+50% HORDES <= 249: 121 Ctns
+50% HORDES <= 249: 122 Ctns
+50% HORDES <= 249: 123 Ctns
+50% HORDES <= 249: 124 Ctns
+50% HORDES <= 249: 125 Ctns
+50% HORDES <= 249: 126 Ctns
+50% HORDES <= 249: 127 Ctns
+50% HORDES <= 249: 128 Ctns
+50% HORDES <= 249: 129 Ctns
+50% HORDES <= 249: 130 Ctns
+50% HORDES <= 249: 131 Ctns
+50% HORDES <= 249: 132 Ctns
+50% HORDES <= 249: 133 Ctns
+50% HORDES <= 249: 134 Ctns
+50% HORDES <= 249: 135 Ctns
+50% HORDES <= 249: 136 Ctns
+50% HORDES <= 249: 137 Ctns
+50% HORDES <= 249: 138 Ctns
+50% HORDES <= 249: 139 Ctns
+50% HORDES <= 249: 140 Ctns
+50% HORDES <= 249: 141 Ctns
+50% HORDES <= 249: 142 Ctns
+50% HORDES <= 249: 143 Ctns
+50% HORDES <= 249: 144 Ctns
+50% HORDES <= 249: 145 Ctns
+50% HORDES <= 249: 146 Ctns
+50% HORDES <= 249: 147 Ctns
+50% HORDES <= 249: 148 Ctns
+50% HORDES <= 249: 149 Ctns
+50% HORDES <= 249: 150 Ctns
+50% HORDES <= 249: 151 Ctns
+50% HORDES <= 249: 152 Ctns
+50% HORDES <= 249: 153 Ctns
+50% HORDES <= 249: 154 Ctns
+50% HORDES <= 249: 155 Ctns
+50% HORDES <= 249: 156 Ctns
+50% HORDES <= 249: 157 Ctns
+50% HORDES <= 249: 158 Ctns
+50% HORDES <= 249: 159 Ctns
+50% HORDES <= 249: 160 Ctns
+50% HORDES <= 249: 161 Ctns
+50% HORDES <= 249: 162 Ctns
+50% HORDES <= 249: 163 Ctns
+50% HORDES <= 249: 164 Ctns
+50% HORDES <= 249: 165 Ctns
+50% HORDES <= 249: 166 Ctns
+50% HORDES <= 249: 167 Ctns
+50% HORDES <= 249: 168 Ctns
+50% HORDES <= 249: 169 Ctns
+50% HORDES <= 249: 170 Ctns
+50% HORDES <= 249: 171 Ctns
+50% HORDES <= 249: 172 Ctns
+50% HORDES <= 249: 173 Ctns
+50% HORDES <= 249: 174 Ctns
+50% HORDES <= 249: 175 Ctns
+50% HORDES <= 249: 176 Ctns
+50% HORDES <= 249: 177 Ctns
+50% HORDES <= 249: 178 Ctns
+50% HORDES <= 249: 179 Ctns
+50% HORDES <= 249: 180 Ctns
+50% HORDES <= 249: 181 Ctns
+50% HORDES <= 249: 182 Ctns
+50% HORDES <= 249: 183 Ctns
+50% HORDES <= 249: 184 Ctns
+50% HORDES <= 249: 185 Ctns
+50% HORDES <= 249: 186 Ctns
+50% HORDES <= 249: 187 Ctns
+50% HORDES <= 249: 188 Ctns
+50% HORDES <= 249: 189 Ctns
+50% HORDES <= 249: 190 Ctns
+50% HORDES <= 249: 191 Ctns
+50% HORDES <= 249: 192 Ctns
+50% HORDES <= 249: 193 Ctns
+50% HORDES <= 249: 194 Ctns
+50% HORDES <= 249: 195 Ctns
+50% HORDES <= 249: 196 Ctns
+50% HORDES <= 249: 197 Ctns
+50% HORDES <= 249: 198 Ctns
+50% HORDES <= 249: 199 Ctns
+50% HORDES <= 249: 200 Ctns
+50% HORDES <= 249: 201 Ctns
+50% HORDES <= 249: 202 Ctns
+50% HORDES <= 249: 203 Ctns
+50% HORDES <= 249: 204 Ctns
+50% HORDES <= 249: 205 Ctns
+50% HORDES <= 249: 206 Ctns
+50% HORDES <= 249: 207 Ctns
+50% HORDES <= 249: 208 Ctns
+50% HORDES <= 249: 209 Ctns
+50% HORDES <= 249: 210 Ctns
+50% HORDES <= 249: 211 Ctns
+50% HORDES <= 249: 212 Ctns
+50% HORDES <= 249: 213 Ctns
+50% HORDES <= 249: 214 Ctns
+50% HORDES <= 249: 215 Ctns
+50% HORDES <= 249: 216 Ctns
+50% HORDES <= 249: 217 Ctns
+50% HORDES <= 249: 218 Ctns
+50% HORDES <= 249: 219 Ctns
+50% HORDES <= 249: 220 Ctns
+50% HORDES <= 249: 221 Ctns
+50% HORDES <= 249: 222 Ctns
+50% HORDES <= 249: 223 Ctns
+50% HORDES <= 249: 224 Ctns
+50% HORDES <= 249: 225 Ctns
+50% HORDES <= 249: 226 Ctns
+50% HORDES <= 249: 227 Ctns
+50% HORDES <= 249: 228 Ctns
+50% HORDES <= 249: 229 Ctns
+50% HORDES <= 249: 230 Ctns
+50% HORDES <= 249: 231 Ctns
+50% HORDES <= 249: 232 Ctns
+50% HORDES <= 249: 233 Ctns
+50% HORDES <= 249: 234 Ctns
+50% HORDES <= 249: 235 Ctns
+50% HORDES <= 249: 236 Ctns
+50% HORDES <= 249: 237 Ctns
+50% HORDES <= 249: 238 Ctns
+50% HORDES <= 249: 239 Ctns
+50% HORDES <= 249: 240 Ctns
+50% HORDES <= 249: 241 Ctns
+50% HORDES <= 249: 242 Ctns
+50% HORDES <= 249: 243 Ctns
+50% HORDES <= 249: 244 Ctns
+50% HORDES <= 249: 245 Ctns
+50% HORDES <= 249: 246 Ctns
+50% HORDES <= 249: 247 Ctns
+50% HORDES <= 249: 248 Ctns
+50% HORDES <= 249: 249 Ctns
+
+expr_1: true
+expr_2: true
+expr_3: true
+expr_4: true
+expr_5: true
+expr_6: true
+
diff --git a/qa/322 b/qa/322
new file mode 100755
index 0000000..bf19c28
--- /dev/null
+++ b/qa/322
@@ -0,0 +1,220 @@
+#! /bin/sh
+# PCP QA Test No. 322
+# pmlogger (assorted) and pmlc (PCP 2.0) version compatibility
+# any host version ... see 374 for 64-bit host version
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.full
+
+_filter()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^pmlogger .* on host .* is logging metrics from host .*/d' \
+ -e '/^PMCD host/d' \
+ -e '/^TIMESTAMP started/d' \
+ | $PCP_AWK_PROG '
+/datax/ { skip = 3 }
+skip > 0 { skip--; next }
+$1 == "log" && $2 == "size" { if ($3 > 100 && $3 <= 200) $3 = "more than 100"
+ else if ($3 > 200 && $3 <= 300) $3 = "more than 200"
+ }
+ { print }'
+}
+
+_remote_signal()
+{
+ host="$1"
+ pid="$2"
+ base="$3"
+
+ cat <<end-of-file >$tmp.cmd
+. \$PCP_DIR/etc/pcp.env
+\$PCP_BINADM_DIR/pmsignal -s TERM $pid
+sleep 1
+\$PCP_BINADM_DIR/pmsignal -s KILL $pid
+test -k \$PCP_TMP_DIR/pmlogger || sudo chmod o-w \$PCP_TMP_DIR/pmlogger
+rm -f /tmp/$base.*
+end-of-file
+ scp -q $tmp.cmd pcpqa@$host:$tmp.cmd
+ ssh -q pcpqa@$host /bin/sh $tmp.cmd >/dev/null 2>&1
+ ssh -q pcpqa@$host "rm -f $tmp.cmd"
+}
+
+_speak_to_me()
+{
+ host=$1
+ pid=''
+ base=''
+ cat <<'End-of-File' | ssh -q pcpqa@$host sh >$tmp.tmp 2>$tmp.err
+if [ -r $PCP_DIR/etc/pcp.env ]
+then
+ . $PCP_DIR/etc/pcp.env
+else
+ echo "Error: unable to read $PCP_DIR/etc/pcp.env!" >&2
+ exit 1
+fi
+rm -f /tmp/$$.*
+echo "log mandatory on once { hinv.ncpu }" >/tmp/$$.config
+echo >>/tmp/$$.config
+echo "[access]" >>/tmp/$$.config
+echo "allow * : all;" >>/tmp/$$.config
+test -k $PCP_TMP_DIR/pmlogger || sudo chmod o+w $PCP_TMP_DIR/pmlogger
+( pmlogger -L -c /tmp/$$.config -l /tmp/$$.log /tmp/$$ </dev/null >/dev/null 2>&1 ) &
+echo pid=$! base=$$
+End-of-File
+
+ echo >>$seq.full
+ echo "stdout from ssh to $host ..." >>$seq.full
+ cat $tmp.tmp >>$seq.full
+ echo >>$seq.full
+ echo "stderr from ssh to $host ..." >>$seq.full
+ cat $tmp.err >>$seq.full
+
+ eval `cat $tmp.tmp`
+
+ if [ -z "$pid" ]
+ then
+ echo "Arrgh ... failed to get remote pmlogger pid for host $host"
+ exit
+ fi
+
+ if [ -z "$base" ]
+ then
+ echo "Arrgh ... failed to get remote archive basename for host $host"
+ exit
+ fi
+
+ for i in 1 2 3 4 5 6 7 8 9 10
+ do
+ ( echo ; echo "iteration $i" ) >>$seq.full
+ if echo quit | pmlc -h $host $pid 2>&1 | tee -a $seq.full | grep 'Connected to' >/dev/null
+ then
+ break
+ else
+ if [ $i = 10 ]
+ then
+ echo "Arrgh ... pmlogger (pid=$pid) on host $host failed to start after 20 seconds"
+ exit 1
+ fi
+ fi
+ sleep 2
+ done
+
+ # the success cases
+ #
+ cat <<End-of-File | pmlc 2>&1 | _filter
+connect $pid@$host
+status
+new volume
+status
+flush
+# singular, all instances
+query { pmcd.simabi pmcd.control.register }
+# some instances
+query pmcd.agent.type ["sample" "pmcd" "sampledso"]
+# non-leaf
+query pmcd.pdu_in
+# logging
+log mandatory on once pmcd.agent.type ["sample" "pmcd"]
+End-of-File
+
+ # stopping and starting again should be enough to allow pmlogger
+ # to have logged the metrics from the last request ... except the
+ # pmlc control port socket may not have been ripped down, so
+ # sleep some
+ #
+ sleep 2
+
+ cat <<End-of-File | pmlc 2>&1 | _filter
+connect $pid@$host
+log mandatory off pmcd.agent.type ["sampledso"]
+query pmcd.agent.type ["sample" "pmcd" "sampledso"]
+End-of-File
+
+ # the failures
+ #
+ # echo "log mandatory on once proc" | pmlc -h $host $pid -D1
+ echo "connect 0@$host" | pmlc 2>&1 | _filter
+
+ # cleanup
+ #
+ if [ ! -z "$host" ]
+ then
+ _remote_signal $host $pid $base
+ pid=''
+ base=''
+ fi
+}
+
+_cleanup()
+{
+ if $need_clean
+ then
+ if [ ! -z "$pid" -a ! -z "$base" -a ! -z "$host" ]
+ then
+ _remote_signal $host $pid $base
+ pid=''
+ base=''
+ fi
+ need_clean=false
+ fi
+ rm -f $tmp.*
+}
+
+need_clean=true
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+host=''
+pid=''
+base=''
+
+# the v1 host may be on the other side of the planet
+#
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+# real QA test starts here
+
+type="-v pcp>=2"
+echo
+echo "=== pmlogger host type: $type ==="
+host=`./getpmcdhosts -L -n 1 $type`
+if [ -z "$host" ]
+then
+ echo "./getpmcdhosts failed to find a suitable host" >$seq.notrun
+ exit
+else
+ echo "$type => $host" >>$seq.full
+ _speak_to_me $host
+fi
+
+# output version depends on the PCP version at the _remote_ host
+# not the local host as is normally the case
+#
+rm -f $seq.out
+REMOTE_VER=`pmprobe -v -h $host pmcd.version \
+ | sed -e 's/"$//' -e 's/.*"//' -e 's/\.//g' -e 's/^\(..\)\(.\)$/\10\2/'`
+echo "host=$host REMOTE_VER=$REMOTE_VER" >>$seq.full
+if [ $REMOTE_VER -lt 3800 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+# success, all done
+status=0
+exit
diff --git a/qa/322.out.1 b/qa/322.out.1
new file mode 100644
index 0000000..1b722e3
--- /dev/null
+++ b/qa/322.out.1
@@ -0,0 +1,94 @@
+QA output created by 322
+
+=== pmlogger host type: -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [29 or "sample"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [30 or "sampledso"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [29 or "sample"]
+ mand on once [2 or "pmcd"]
+ mand off nl [30 or "sampledso"]
+
diff --git a/qa/322.out.2 b/qa/322.out.2
new file mode 100644
index 0000000..1907773
--- /dev/null
+++ b/qa/322.out.2
@@ -0,0 +1,97 @@
+QA output created by 322
+
+=== pmlogger host type: -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [29 or "sample"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [30 or "sampledso"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [29 or "sample"]
+ mand on once [2 or "pmcd"]
+ mand off nl [30 or "sampledso"]
+
diff --git a/qa/323 b/qa/323
new file mode 100755
index 0000000..0df9db7
--- /dev/null
+++ b/qa/323
@@ -0,0 +1,99 @@
+#!/bin/sh
+# PCP QA Test No. 323
+# validate some values for pmdashping
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+_cleanup()
+{
+ _restore_pmda_install $iam
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+iam=shping
+status=1
+trap "_cleanup" 0 1 2 3 15
+rm -f $seq.full
+here=`pwd`
+
+_filter_info()
+{
+ sed \
+ -e 's/value -[0-9][0-9]*\.[0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value -[0-9][0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value [0-9][0-9]*\.[0-9]*/value NUMBER/' \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+# real QA test starts here
+_prepare_pmda_install $iam
+
+# make sure no old config file is hanging about, otherwise the "3" answer
+# below would need to be "4" !
+#
+$sudo rm -f $PCP_VAR_DIR/config/$iam/$iam.conf
+
+# timing is real tricky here ...
+echo
+echo "=== install $iam agent ===" | tee -a $here/$seq.full
+echo 'b
+3
+y
+null exit 0
+slow sleep 3
+timeout sleep 10
+
+60
+6' \
+| $sudo ./Install >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+cat $tmp.out >>$here/$seq.full
+
+if pminfo -v $iam
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== check values ==="
+pminfo -f shping.status shping.error shping.cmd
+pminfo -f shping.control.cycletime shping.control.timeout
+pminfo -f shping.time.real shping.time.cpu_usr shping.time.cpu_sys 2>&1 \
+| _filter_info
+
+echo | tee -a $here/$seq.full
+echo "=== remove $iam agent ===" | tee -a $here/$seq.full
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+cat $tmp.out >>$here/$seq.full
+
+echo >>$here/$seq.full
+ls -l $PCP_LOG_DIR/pmcd/shping.log >>$here/$seq.full
+cat $PCP_LOG_DIR/pmcd/shping.log >>$here/$seq.full
+echo >>$here/$seq.full
+ls -l $PCP_LOG_DIR/pmcd/pmcd.log >>$here/$seq.full
+cat $PCP_LOG_DIR/pmcd/pmcd.log >>$here/$seq.full
+
+status=0
+exit
diff --git a/qa/323.out.1 b/qa/323.out.1
new file mode 100644
index 0000000..8a760dd
--- /dev/null
+++ b/qa/323.out.1
@@ -0,0 +1,88 @@
+QA output created by 323
+
+=== install shping agent ===
+You will need to choose an appropriate configuration for installation of
+the "shping" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Possible configuration files to choose from:
+[1] ./sample.conf
+[2] Specify your own configuration file.
+[3] None of the above (abandon configuration file selection).
+Which configuration file do you want to use ? [1] Abandoning configuration file selection.
+Do you wish to enter commands to create a new configuration file? [y]
+Enter one ping specification per line, in the format
+
+tag command line details
+
+where the "tag" is a single unique word (no spaces) and the "command line
+details" are the corresponding sh(1) command. For example
+
+dns-self nslookup `hostname`
+
+An empty line terminates the specification process and there must be at
+least one specification.
+
+Tag Command: Tag Command: Tag Command: Tag Command:
+All commands are run one after another as a group and the group is run
+once per "cycle" time. Enter the cycle time in seconds [120]
+Each command must complete within a timeout period, or it will be aborted
+by the "shping" PMDA. Enter the timeout period (in seconds) [20] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Wait 10 seconds for the shping agent to initialize ...
+Check shping metrics have appeared ... 11 metrics and 23 values
+
+=== check values ===
+
+shping.status
+ inst [0 or "null"] value 0
+ inst [1 or "slow"] value 0
+ inst [2 or "timeout"] value 3
+
+shping.error
+ inst [0 or "null"] value 0
+ inst [1 or "slow"] value 0
+ inst [2 or "timeout"] value -12353
+
+shping.cmd
+ inst [0 or "null"] value "exit 0"
+ inst [1 or "slow"] value "sleep 3"
+ inst [2 or "timeout"] value "sleep 10"
+
+shping.control.cycletime
+ value 60
+
+shping.control.timeout
+ value 6
+
+shping.time.real
+ inst [0 or "null"] value NUMBER
+ inst [1 or "slow"] value NUMBER
+ inst [2 or "timeout"] value NEGATIVE NUMBER
+
+shping.time.cpu_usr
+ inst [0 or "null"] value NUMBER
+ inst [1 or "slow"] value NUMBER
+ inst [2 or "timeout"] value NEGATIVE NUMBER
+
+shping.time.cpu_sys
+ inst [0 or "null"] value NUMBER
+ inst [1 or "slow"] value NUMBER
+ inst [2 or "timeout"] value NEGATIVE NUMBER
+
+=== remove shping agent ===
+Culling the Performance Metrics Name Space ...
+shping ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check shping metrics have gone away ... OK
diff --git a/qa/323.out.2 b/qa/323.out.2
new file mode 100644
index 0000000..0b14eeb
--- /dev/null
+++ b/qa/323.out.2
@@ -0,0 +1,83 @@
+QA output created by 323
+
+=== install shping agent ===
+You will need to choose an appropriate configuration for installation of
+the "shping" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Possible configuration files to choose from:
+[1] ./sample.conf
+[2] Specify your own configuration file.
+[3] None of the above (abandon configuration file selection).
+Which configuration file do you want to use ? [1] Abandoning configuration file selection.
+Do you wish to enter commands to create a new configuration file? [y]
+Enter one ping specification per line, in the format
+
+tag command line details
+
+where the "tag" is a single unique word (no spaces) and the "command line
+details" are the corresponding sh(1) command. For example
+
+dns-self nslookup `hostname`
+
+An empty line terminates the specification process and there must be at
+least one specification.
+
+Tag Command: Tag Command: Tag Command: Tag Command:
+All commands are run one after another as a group and the group is run
+once per "cycle" time. Enter the cycle time in seconds [120]
+Each command must complete within a timeout period, or it will be aborted
+by the "shping" PMDA. Enter the timeout period (in seconds) [20] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Wait 10 seconds for the shping agent to initialize ...
+Check shping metrics have appeared ... 11 metrics and 23 values
+
+=== check values ===
+
+shping.status
+ inst [0 or "null"] value 0
+ inst [1 or "slow"] value 0
+ inst [2 or "timeout"] value 3
+
+shping.error
+ inst [0 or "null"] value 0
+ inst [1 or "slow"] value 0
+ inst [2 or "timeout"] value -12353
+
+shping.cmd
+ inst [0 or "null"] value "exit 0"
+ inst [1 or "slow"] value "sleep 3"
+ inst [2 or "timeout"] value "sleep 10"
+
+shping.control.cycletime
+ value 60
+
+shping.control.timeout
+ value 6
+
+shping.time.real
+ inst [0 or "null"] value NUMBER
+ inst [1 or "slow"] value NUMBER
+ inst [2 or "timeout"] value NEGATIVE NUMBER
+
+shping.time.cpu_usr
+ inst [0 or "null"] value NUMBER
+ inst [1 or "slow"] value NUMBER
+ inst [2 or "timeout"] value NEGATIVE NUMBER
+
+shping.time.cpu_sys
+ inst [0 or "null"] value NUMBER
+ inst [1 or "slow"] value NUMBER
+ inst [2 or "timeout"] value NEGATIVE NUMBER
+
+=== remove shping agent ===
+Culling the Performance Metrics Name Space ...
+shping ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check shping metrics have gone away ... OK
diff --git a/qa/324 b/qa/324
new file mode 100755
index 0000000..6b2ca08
--- /dev/null
+++ b/qa/324
@@ -0,0 +1,136 @@
+#! /bin/sh
+# PCP QA Test No. 324
+# Install/Remove for txmon pmda
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo >$tmp.input 'b
+pigs
+can
+fly
+'
+
+status=1
+done_clean=false
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/txmon; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/txmon; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ rm -f $tmp.*
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo txmon >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmda_install
+}
+
+_filter_info()
+{
+ sed \
+ -e 's/value -[0-9][0-9]*\.[0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value -[0-9][0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value [0-9][0-9]*\.[0-9]*/value NUMBER/' \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=txmon
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+if $sudo make clobber >$tmp.out 2>&1
+then
+ :
+else
+ cat $tmp.out
+ echo "Arrgh, make clobber failed"
+ exit
+fi
+
+if $sudo make >$tmp.out 2>&1
+then
+ :
+else
+ cat $tmp.out
+ echo "Arrgh, make failed"
+ exit
+fi
+
+echo
+echo "=== default $iam agent installation ==="
+$sudo ./Remove >$tmp.out 2>&1
+$sudo ./Install <$tmp.input -e >>$tmp.out 2>&1
+
+_filter <$tmp.out
+
+if pminfo -v $iam
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== validate values ==="
+$sudo make txrecord >/dev/null 2>&1
+./genload -n 20 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*/NUMBER/'
+pminfo -f $iam | _filter_info
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter <$tmp.out
+
+status=0
+exit
diff --git a/qa/324.out.1 b/qa/324.out.1
new file mode 100644
index 0000000..2033948
--- /dev/null
+++ b/qa/324.out.1
@@ -0,0 +1,76 @@
+QA output created by 324
+
+=== default txmon agent installation ===
+Culling the Performance Metrics Name Space ...
+txmon ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check txmon metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "txmon" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] b
+Welcome to the Install script for the demonstration "txmon" PMDA.
+This PMDA will establish a shared memory segment with one statistics
+structure per transaction type.
+
+You must define the names of the transaction types (the names are
+arbitrary strings with no embedded white space, e.g. mytx#1).
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check txmon metrics have appeared ... 6 metrics and 14 values
+
+=== validate values ===
+Mean service time for pigs tx: NUMBER
+Mean service time for can tx: NUMBER
+Mean service time for fly tx: NUMBER
+
+txmon.count
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.ave_time
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.max_time
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.reset_count
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.control.level
+ value NUMBER
+
+txmon.control.reset
+ value NUMBER
+
+=== remove txmon agent ===
+Culling the Performance Metrics Name Space ...
+txmon ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check txmon metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/324.out.2 b/qa/324.out.2
new file mode 100644
index 0000000..d073dfa
--- /dev/null
+++ b/qa/324.out.2
@@ -0,0 +1,71 @@
+QA output created by 324
+
+=== default txmon agent installation ===
+Culling the Performance Metrics Name Space ...
+txmon ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check txmon metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "txmon" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] b
+Welcome to the Install script for the demonstration "txmon" PMDA.
+This PMDA will establish a shared memory segment with one statistics
+structure per transaction type.
+
+You must define the names of the transaction types (the names are
+arbitrary strings with no embedded white space, e.g. mytx#1).
+
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check txmon metrics have appeared ... 6 metrics and 14 values
+
+=== validate values ===
+Mean service time for pigs tx: NUMBER
+Mean service time for can tx: NUMBER
+Mean service time for fly tx: NUMBER
+
+txmon.count
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.ave_time
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.max_time
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.reset_count
+ inst [0 or "pigs"] value NUMBER
+ inst [1 or "can"] value NUMBER
+ inst [2 or "fly"] value NUMBER
+
+txmon.control.level
+ value NUMBER
+
+txmon.control.reset
+ value NUMBER
+
+=== remove txmon agent ===
+Culling the Performance Metrics Name Space ...
+txmon ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check txmon metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/325 b/qa/325
new file mode 100755
index 0000000..a155a2c
--- /dev/null
+++ b/qa/325
@@ -0,0 +1,96 @@
+#! /bin/sh
+# PCP QA Test No. 325
+# pmprintf checks
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.product
+. ./common.check
+. ./common.config
+
+_check_display
+which pmconfirm >/dev/null 2>&1 || _notrun pmconfirm not installed
+
+_cleanup()
+{
+ echo "at end ..." >>$seq.full
+ pid=`ps $PCP_PS_ALL_FLAGS | egrep '[p]mconfirm' | tee -a $seq.full | $PCP_AWK_PROG '{print $2}'`
+ echo "[p]mconfirm pid: $pid" >>$seq.full
+ [ -n "$pid" ] && $signal -s KILL $pid >/dev/null 2>&1
+ pid=`ps $PCP_PS_ALL_FLAGS | egrep '[p]mprintf' | tee -a $seq.full | $PCP_AWK_PROG '{print $2}'`
+ echo "[p]mprintf pid: $pid" >>$seq.full
+ [ -n "$pid" ] && $signal -s KILL $pid >/dev/null 2>&1
+ pid=`ps $PCP_PS_ALL_FLAGS | egrep '[p]mquery' | tee -a $seq.full | $PCP_AWK_PROG '{print $2}'`
+ echo "[p]mquery pid: $pid" >>$seq.full >/dev/null 2>&1
+ [ -n "$pid" ] && $signal -s KILL $pid
+ rm -f $tmp.*
+}
+
+_countem()
+{
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS \
+ | grep $PCP_XCONFIRM_PROG | grep -v grep \
+ | tee -a $seq.full \
+ > $tmp.count
+ cat $tmp.count | wc -l | tr -d ' '
+}
+
+tmp=/tmp/$$
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+# real QA test starts here
+
+echo "initially ..." >$seq.full
+OLDXCONFIRMCNT=`_countem`
+
+# Expect something on stderr
+unset PCP_STDERR
+src/pmprintf foo bee doo
+
+# Expect something in an xconfirm
+export DISPLAY=$PCPQA_CLOSE_X_SERVER
+echo "DISPLAY=$DISPLAY" >>$seq.full
+export PCP_STDERR=DISPLAY
+if [ -z "$PCP_XCONFIRM_PROG" ]
+then
+ echo 'Error: $PCP_XCONFIRM_PROG not set'
+ exit $status
+fi
+
+(src/pmprintf some invisible text &)2>$tmp.err
+# wait for dialog to fire up
+sleep 3
+rm -f $tmp.out
+echo "after start up ..." >>$seq.full
+XCONFIRMCNT=`_countem`
+
+if [ $XCONFIRMCNT -gt $OLDXCONFIRMCNT ]
+then
+ echo '=== $PCP_XCONFIRM_PROG started OK ==='
+else
+ echo "=== Urk, no change in number of $PCP_XCONFIRM_PROG - $XCONFIRMCNT ==="
+ cat $tmp.count
+ echo
+ echo "Errors from src/pmprintf?"
+ cat $tmp.err
+fi
+
+# Expect something in file
+[ -f $tmp.pmprintf ] && rm -f $tmp.pmprintf
+PCP_STDERR=$tmp.pmprintf
+export PCP_STDERR
+src/pmprintf sent all this text to a file
+src/pmprintf and this too
+cat $tmp.pmprintf
+rm -f $tmp.pmprintf
+
+# success, all done
+status=0
+exit
diff --git a/qa/325.out b/qa/325.out
new file mode 100644
index 0000000..946c9c7
--- /dev/null
+++ b/qa/325.out
@@ -0,0 +1,5 @@
+QA output created by 325
+foo bee doo
+=== $PCP_XCONFIRM_PROG started OK ===
+sent all this text to a file
+and this too
diff --git a/qa/326 b/qa/326
new file mode 100755
index 0000000..e460efd
--- /dev/null
+++ b/qa/326
@@ -0,0 +1,184 @@
+#! /bin/sh
+# PCP QA Test No. 326
+# Check PMCD state change notification, aka PMCD reset
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1
+done_clean=false
+LOCALHOST=`hostname`
+[ $PCP_VER -lt 3806 ] && LOCALHOST=`echo $LOCALHOST | sed -e 's/\..*//'`
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ echo
+ echo "Restore pmcd.conf and restart PMCD ..."
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ _restore_primary_logger
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ rm -f $tmp.*
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ done_clean=true
+ fi
+ exit $status
+}
+
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup" 0 1 2 3 15
+timezone=`pmprobe -v pmcd.timezone | $PCP_AWK_PROG '{print $3}'`
+
+_filter_host()
+{
+ # filter this, as we now fetch pmcd.hostname, sneakily
+ sed \
+ -e "/ value \"$REALHOST\"/d" \
+ -e "/ value \"$LOCALHOST\"/d"
+}
+
+_filter_pmval()
+{
+ sed \
+ -e '1,/^interval:/d' \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ | $PCP_AWK_PROG '
+/No values available/ { print; next }
+0 <= $2 && $2 < 1.1 { $2 = "non-negative number, less than 1.1" }
+ { print }' \
+ | uniq
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+PMDA_PMCD_PATH=$PCP_PMDAS_DIR/pmcd/pmda_pmcd.$DSO_SUFFIX
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
+
+cat <<End-of-File >$tmp.tmp
+# temporary for qa/$seq
+pmcd 2 dso pmcd_init $PMDA_PMCD_PATH
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+End-of-File
+$sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
+
+_writable_primary_logger
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+_wait_for_pmlogger -P $LOGGING_DIR/$LOCALHOST/pmlogger.log
+
+echo 'connect primary
+log mandatory on 500 msec { pmcd.numagents sample.milliseconds }' \
+| pmlc
+
+# run for 20 seconds
+pmval -s 40 -t 0.5 -Z "$timezone" -D fetch pmcd.numagents >$tmp.pmval 2>&1 &
+
+sleep 3
+
+echo "=== kill sample PMDA process ==="
+$sudo $signal -a -s TERM pmdasample
+pminfo -v sample >/dev/null 2>&1
+sleep 3
+
+echo "=== SIGHUP PMCD ==="
+$sudo $signal -a -s HUP pmcd
+sleep 3
+
+echo "=== drop sample PMDA, like Remove ==="
+cat <<End-of-File >$tmp.tmp
+# temporary for qa/$seq
+pmcd 2 dso pmcd_init $PMDA_PMCD_PATH
+End-of-File
+$sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
+$sudo $signal -a -s HUP pmcd
+sleep 3
+
+echo "=== add sample PMDA, like Install ==="
+cat <<End-of-File >$tmp.tmp
+# temporary for qa/$seq
+pmcd 2 dso pmcd_init $PMDA_PMCD_PATH
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+End-of-File
+$sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
+$sudo $signal -a -s HUP pmcd
+sleep 3
+
+wait
+
+# if desperate!
+#echo >>$seq.full
+#cat $PCP_PMCDLOG_PATH >>$seq.full
+
+echo
+echo "Trace of observed state changes and PMDA count ..."
+egrep '(state changes)|( value )' $tmp.pmval \
+| _filter_host \
+| uniq
+
+echo
+echo "primary logger ..."
+echo 'connect primary
+log mandatory off { pmcd.numagents sample.milliseconds }
+flush' \
+| pmlc
+sleep 2
+
+# if desperate!
+#echo >>$seq.full
+#echo "pmlogger log ..." >>$seq.full
+#_filter_pmlogger_log <$LOGGING_DIR/$LOCALHOST/pmlogger.log >>$seq.full
+
+echo "archive contents ..."
+pmafm $LOGGING_DIR/$LOCALHOST/Latest pmdumplog >$tmp.out 2>&1
+egrep '(<mark>)|(pmcd.numagents)' $tmp.out \
+| _filter_pmdumplog \
+| uniq
+
+# note clip after 4 filtered lines to avoid extra values that sometimes
+# appear due to non-determinism in pmlogger fetch samples
+#
+echo
+echo "sanity check with pmval | filter ..."
+pmafm $LOGGING_DIR/$LOCALHOST/Latest pmval -t 1 sample.milliseconds 2>&1 \
+| _filter_pmval \
+| sed -e 4q
+
+# if desperate!
+#echo >>$seq.full
+#echo "unfiltered pmval live output" >>$seq.full
+#cat $tmp.pmval >>$seq.full
+
+# if desperate!
+#echo >>$seq.full
+#echo "unfiltered pmval archive output" >>$seq.full
+#pmafm $LOGGING_DIR/$LOCALHOST/Latest pmval -t 1 sample.milliseconds >>$seq.full 2>&1
+
+status=0
+exit
diff --git a/qa/326.out b/qa/326.out
new file mode 100644
index 0000000..31da33c
--- /dev/null
+++ b/qa/326.out
@@ -0,0 +1,39 @@
+QA output created by 326
+Starting pmcd ...
+Starting pmlogger ...
+=== kill sample PMDA process ===
+=== SIGHUP PMCD ===
+=== drop sample PMDA, like Remove ===
+=== add sample PMDA, like Install ===
+
+Trace of observed state changes and PMDA count ...
+ value 2
+PMCD state changes: agent(s) dropped
+ value 1
+PMCD state changes: agent(s) added restarted
+ value 2
+PMCD state changes: agent(s) dropped
+ value 1
+PMCD state changes: agent(s) added
+ value 2
+
+primary logger ...
+archive contents ...
+ 2.0.2 (pmcd.numagents): value 2
+ 2.0.2 (pmcd.numagents): value 1
+TIMESTAMP <mark>
+ 2.0.2 (pmcd.numagents): value 2
+ 2.0.2 (pmcd.numagents): value 1
+TIMESTAMP <mark>
+ 2.0.2 (pmcd.numagents): value 2
+
+sanity check with pmval | filter ...
+TIMESTAMP No values available
+TIMESTAMP non-negative number, less than 1.1
+TIMESTAMP No values available
+TIMESTAMP non-negative number, less than 1.1
+
+Restore pmcd.conf and restart PMCD ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/327 b/qa/327
new file mode 100755
index 0000000..164e049
--- /dev/null
+++ b/qa/327
@@ -0,0 +1,84 @@
+#! /bin/sh
+# PCP QA Test No. 327
+# Check pmloglabel detects and repairs all forms of log label corruption
+#
+# Copyright (c) 2008 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1
+trap "rm -fr $tmp; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+filter_paths()
+{
+ sed -e "s,$tmp,<TMPPATH>,g"
+}
+
+test_and_repair()
+{
+ opts="$@"
+ archive="$tmp/ok-mv-foo"
+
+ pmdumplog -z -L $archive 2>&1 | filter_paths # test
+ pmloglabel $archive # check
+ pmloglabel $opts $archive # repair
+ pmdumplog -z -L $archive # test
+}
+
+# real QA test starts here
+mkdir $tmp
+
+if [ $PCP_PLATFORM = darwin ]
+then
+ convert="conv=notrunc"
+else
+ convert="conv=nocreat,notrunc"
+fi
+
+for suffix in 0 1 meta index
+do
+ echo "=== checking corrupt ok-mv-foo.$suffix label ==="
+ cp -f $here/src/ok-mv-foo.* $tmp
+ of=$tmp/ok-mv-foo.$suffix
+
+ # Offsets: 4+20+64+40+4 (prefix+5*int+hostname+timezone+suffix)
+
+ echo "*** bad prefix length ***"
+ echo 12 | dd of=$of $convert ibs=1 obs=1 seek=0 count=4 >>$here/$seq.full 2>&1
+ test_and_repair -s
+
+ echo "*** bad magic/version length ***"
+ echo 42 | dd of=$of $convert ibs=1 obs=1 seek=4 count=2 >>$here/$seq.full 2>&1
+ test_and_repair -V 2
+
+ echo "*** mismatched pid ***"
+ echo 01 | dd of=$of $convert ibs=1 obs=1 seek=8 count=2 >>$here/$seq.full 2>&1
+ test_and_repair -p 12345
+
+ echo "*** bad volume number ***"
+ echo 05 | dd of=$of $convert ibs=1 obs=1 seek=20 count=2 >>$here/$seq.full 2>&1
+ test_and_repair -s
+
+ echo "*** mismatched hostname ***"
+ echo HNAME | dd of=$of $convert ibs=1 obs=1 seek=24 count=5 >>$here/$seq.full 2>&1
+ test_and_repair -h gonzo.com
+
+ echo "*** mismatched timezone ***"
+ echo BADTZ | dd of=$of $convert ibs=1 obs=1 seek=88 count=5 >>$here/$seq.full 2>&1
+ test_and_repair -Z GMT
+
+ echo "*** bad suffix length ***"
+ echo 21 | dd of=$of $convert ibs=1 obs=1 seek=128 count=4 >>$here/$seq.full 2>&1
+ test_and_repair -s
+done
+
+status=0
+exit
diff --git a/qa/327.out b/qa/327.out
new file mode 100644
index 0000000..a159a94
--- /dev/null
+++ b/qa/327.out
@@ -0,0 +1,401 @@
+QA output created by 327
+=== checking corrupt ok-mv-foo.0 label ===
+*** bad prefix length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad data volume 0 label: Illegal label record at start of a PCP archive log file
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** bad magic/version length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad data volume 0 label: Illegal label record at start of a PCP archive log file
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** mismatched pid ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Mismatched PID (5407/808523039) between data volume 1 and data volume 0
+Mismatched PID (5407/808523039) between data volume 2 and data volume 0
+Mismatched PID (5407/808523039) between temporal index and data volume 0
+Mismatched PID (5407/808523039) between metadata volume and data volume 0
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** bad volume number ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad data volume 0 label: Illegal label record at start of a PCP archive log file
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched hostname ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Mismatched hostname (gonzo/HNAME) between data volume 1 and data volume 0
+Mismatched hostname (gonzo/HNAME) between data volume 2 and data volume 0
+Mismatched hostname (gonzo/HNAME) between temporal index and data volume 0
+Mismatched hostname (gonzo/HNAME) between metadata volume and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched timezone ***
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: BADTZ1EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+Mismatched timezone (EST-11EST-10,87/2:00,297/2:00/BADTZ1EST-10,87/2:00,297/2:00) between data volume 1 and data volume 0
+Mismatched timezone (EST-11EST-10,87/2:00,297/2:00/BADTZ1EST-10,87/2:00,297/2:00) between data volume 2 and data volume 0
+Mismatched timezone (EST-11EST-10,87/2:00,297/2:00/BADTZ1EST-10,87/2:00,297/2:00) between temporal index and data volume 0
+Mismatched timezone (EST-11EST-10,87/2:00,297/2:00/BADTZ1EST-10,87/2:00,297/2:00) between metadata volume and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+*** bad suffix length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad data volume 0 label: Illegal label record at start of a PCP archive log file
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+=== checking corrupt ok-mv-foo.1 label ===
+*** bad prefix length ***
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+Bad data volume 1 label: Illegal label record at start of a PCP archive log file
+Bad prefix sentinel value for data volume 1: 825363076 (132 expected)
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** bad magic/version length ***
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+Bad data volume 1 label: Illegal label record at start of a PCP archive log file
+Bad magic (34322600) in data volume 1
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** mismatched pid ***
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+Mismatched PID (808523039/5407) between data volume 1 and data volume 0
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** bad volume number ***
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+Bad data volume 1 label: Illegal label record at start of a PCP archive log file
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched hostname ***
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+Mismatched hostname (HNAME/gonzo) between data volume 1 and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched timezone ***
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+Mismatched timezone (BADTZ1EST-10,87/2:00,297/2:00/EST-11EST-10,87/2:00,297/2:00) between data volume 1 and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+*** bad suffix length ***
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+Bad data volume 1 label: Illegal label record at start of a PCP archive log file
+Bad suffix sentinel value for data volume 1: 842074756 (132 expected)
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+=== checking corrupt ok-mv-foo.meta label ===
+*** bad prefix length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad metadata volume label: Illegal label record at start of a PCP archive log file
+Bad prefix sentinel value for metadata volume: 825363076 (132 expected)
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** bad magic/version length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad metadata volume label: Illegal label record at start of a PCP archive log file
+Bad magic (34322600) in metadata volume
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** mismatched pid ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Mismatched PID (808523039/5407) between metadata volume and data volume 0
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** bad volume number ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad metadata volume label: Illegal label record at start of a PCP archive log file
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched hostname ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Mismatched hostname (HNAME/gonzo) between metadata volume and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched timezone ***
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+Mismatched timezone (BADTZ1EST-10,87/2:00,297/2:00/EST-11EST-10,87/2:00,297/2:00) between metadata volume and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+*** bad suffix length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad metadata volume label: Illegal label record at start of a PCP archive log file
+Bad suffix sentinel value for metadata volume: 842074756 (132 expected)
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+=== checking corrupt ok-mv-foo.index label ===
+*** bad prefix length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad temporal index label: Illegal label record at start of a PCP archive log file
+Bad prefix sentinel value for temporal index: 825363076 (132 expected)
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** bad magic/version length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad temporal index label: Illegal label record at start of a PCP archive log file
+Bad magic (34322600) in temporal index
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 5407
+*** mismatched pid ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Mismatched PID (808523039/5407) between temporal index and data volume 0
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** bad volume number ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad temporal index label: Illegal label record at start of a PCP archive log file
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched hostname ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Mismatched hostname (HNAME/gonzo) between temporal index and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+*** mismatched timezone ***
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Fri Aug 7 04:34:40.368 1998
+ ending Fri Aug 7 04:34:48.368 1998
+Archive timezone: EST-11EST-10,87/2:00,297/2:00
+PID for pmlogger: 12345
+Mismatched timezone (BADTZ1EST-10,87/2:00,297/2:00/EST-11EST-10,87/2:00,297/2:00) between temporal index and data volume 0
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
+*** bad suffix length ***
+pmdumplog: Cannot open archive "<TMPPATH>/ok-mv-foo": Illegal label record at start of a PCP archive log file
+Bad temporal index label: Illegal label record at start of a PCP archive log file
+Bad suffix sentinel value for temporal index: 842074756 (132 expected)
+Note: timezone set to local timezone of host "gonzo.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo.com
+ commencing Thu Aug 6 18:34:40.368 1998
+ ending Thu Aug 6 18:34:48.368 1998
+Archive timezone: GMT
+PID for pmlogger: 12345
diff --git a/qa/328 b/qa/328
new file mode 100755
index 0000000..f81cead
--- /dev/null
+++ b/qa/328
@@ -0,0 +1,63 @@
+#! /bin/sh
+# PCP QA Test No. 328
+# pmlogextract grok new archives with embedded <mark>s
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_check()
+{
+ echo
+ pmdumplog -z $tmp 2>&1 | grep '<mark>' >$tmp.merge
+ cat $tmp.one $tmp.other \
+ | diff -c - $tmp.merge \
+ | sed \
+ -e 's/^\*\*\* Standard .*/*** concatenated from input archives/' \
+ -e 's/^\*\*\* -.*/*** concatenated from input archives/' \
+ -e 's/^--- \/.*/--- merged archive/'
+}
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+
+echo
+echo 'marks in one archive ...'
+pmdumplog -z src/19970807.09.54 2>&1 | grep '<mark>' >$tmp.one
+cat $tmp.one
+
+echo
+echo 'marks in other archive ...'
+pmdumplog -z src/19970807.09.59 2>&1 | grep '<mark>' >$tmp.other
+cat $tmp.other
+
+echo
+echo 'pmlogextract ... and marks ... and diffs (expect an extra one in the middle)'
+pmlogextract src/19970807.09.54 src/19970807.09.59 $tmp
+_check
+
+echo
+echo 'pmlogextract ... and marks ... and diffs (expect an extra one in the middle)'
+rm -f $tmp.0 $tmp.meta $tmp.index
+pmlogextract src/19970807.09.54 src/19970807.09.59 $tmp
+_check
+
+# success, all done
+status=0
+exit
diff --git a/qa/328.out b/qa/328.out
new file mode 100644
index 0000000..b1c5ffb
--- /dev/null
+++ b/qa/328.out
@@ -0,0 +1,35 @@
+QA output created by 328
+
+marks in one archive ...
+09:54:54.682 <mark>
+09:54:59.171 <mark>
+
+marks in other archive ...
+09:59:49.007 <mark>
+09:59:53.523 <mark>
+
+pmlogextract ... and marks ... and diffs (expect an extra one in the middle)
+
+*** concatenated from input archives
+--- merged archive
+***************
+*** 1,4 ****
+--- 1,5 ----
+ 09:54:54.682 <mark>
+ 09:54:59.171 <mark>
++ 09:55:01.679 <mark>
+ 09:59:49.007 <mark>
+ 09:59:53.523 <mark>
+
+pmlogextract ... and marks ... and diffs (expect an extra one in the middle)
+
+*** concatenated from input archives
+--- merged archive
+***************
+*** 1,4 ****
+--- 1,5 ----
+ 09:54:54.682 <mark>
+ 09:54:59.171 <mark>
++ 09:55:01.679 <mark>
+ 09:59:49.007 <mark>
+ 09:59:53.523 <mark>
diff --git a/qa/329 b/qa/329
new file mode 100755
index 0000000..77edde8
--- /dev/null
+++ b/qa/329
@@ -0,0 +1,46 @@
+#! /bin/sh
+# PCP QA Test No. 329
+# Interp mode (similar to qa/090, but with purify) (see also 388)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/ Purify / { skip = 0 }
+/^FIU/ { skip = 2; next }
+/^[^ ]/ && skip == 2 { skip = 0 }
+skip == 0 { print }'
+}
+
+_check_purify src/interp0
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_setup_purify src/interp0
+
+for delta in 1 4 5 8 10
+do
+ samples=`expr 80 / $delta`
+ [ $samples -gt 50 ] && samples=50
+ echo
+ echo "interpolate $samples, $delta seconds appart"
+ _run_purify -a $here/src/interp -t 1 -s 50 \
+ | _filter
+done
+
+# all done
+status=0
+exit
diff --git a/qa/329.out b/qa/329.out
new file mode 100644
index 0000000..d1caf1e
--- /dev/null
+++ b/qa/329.out
@@ -0,0 +1,76 @@
+QA output created by 329
+
+interpolate 50, 1 seconds appart
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+interpolate 20, 4 seconds appart
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+interpolate 16, 5 seconds appart
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+interpolate 10, 8 seconds appart
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+interpolate 8, 10 seconds appart
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp0.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/330 b/qa/330
new file mode 100755
index 0000000..ee4194e
--- /dev/null
+++ b/qa/330
@@ -0,0 +1,62 @@
+#! /bin/sh
+# PCP QA Test No. 330
+# Interp mode (similar to qa/091, but with purify) (see also 391)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/ Purify / { skip = 0 }
+/^FIU/ { skip = 2; next }
+/^[^ ]/ && skip == 2 { skip = 0 }
+skip == 0 { print }'
+}
+
+_check_purify src/interp1
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_setup_purify src/interp1
+
+for arch in src/foo src/mv-foo src/noti-foo
+do
+ echo
+ echo "=== archive $arch ==="
+ echo
+ echo "metric: sample.seconds"
+ _run_purify -s 6 -a $here/$arch sample.seconds | _filter
+
+ echo
+ echo "metric: sample.bin"
+ _run_purify -s 6 -a $here/$arch sample.bin | _filter
+
+ echo
+ echo "metric: sample.colour"
+ _run_purify -s 6 -a $here/$arch sample.colour | _filter
+
+ echo
+ echo "metric: sample.drift"
+ _run_purify -s 6 -a $here/$arch sample.drift | _filter
+
+ echo
+ echo "metric: sample.lights"
+ _run_purify -s 6 -a $here/$arch sample.lights | _filter
+done
+
+# all done
+status=0
+exit
+
diff --git a/qa/330.out b/qa/330.out
new file mode 100644
index 0000000..4081a53
--- /dev/null
+++ b/qa/330.out
@@ -0,0 +1,232 @@
+QA output created by 330
+
+=== archive src/foo ===
+
+metric: sample.seconds
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.bin
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.colour
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.drift
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.lights
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== archive src/mv-foo ===
+
+metric: sample.seconds
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.bin
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.colour
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.drift
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.lights
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== archive src/noti-foo ===
+
+metric: sample.seconds
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.bin
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.colour
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.drift
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+metric: sample.lights
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp1.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/331 b/qa/331
new file mode 100755
index 0000000..2116694
--- /dev/null
+++ b/qa/331
@@ -0,0 +1,43 @@
+#! /bin/sh
+# PCP QA Test No. 331
+# Interp mode (similar to qa/093, but with purify)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/ Purify / { skip = 0 }
+/^FIU/ { skip = 2; next }
+/^[^ ]/ && skip == 2 { skip = 0 }
+skip == 0 { print }'
+}
+
+_check_purify src/interp2
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_setup_purify src/interp2
+
+for arch in src/bigbin src/mv-bigbin src/noti-foo
+do
+ echo
+ echo "=== $arch ==="
+ _run_purify -a $here/$arch | _filter
+done
+
+# all done
+status=0
+exit
diff --git a/qa/331.out b/qa/331.out
new file mode 100644
index 0000000..0580af6
--- /dev/null
+++ b/qa/331.out
@@ -0,0 +1,46 @@
+QA output created by 331
+
+=== src/bigbin ===
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/mv-bigbin ===
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/noti-foo ===
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp2.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/332 b/qa/332
new file mode 100755
index 0000000..a6a8338
--- /dev/null
+++ b/qa/332
@@ -0,0 +1,63 @@
+#!/bin/sh
+# PCP QA Test No. 332
+# Interp mode (similar to qa/095, but with purify) (see also 394)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/^===/ { print; next }
+/ Purify / { skip = 0 }
+/^FIU/ { skip = 2; next }
+/^[^ ]/ && skip == 2 { skip = 0 }
+skip == 0 { print }' \
+ | sed \
+ -e '/MLK/s/0x.*/ADDR/' \
+ -e 's/\[.*\]/[...]/' \
+ -e 's/__start/START /' \
+ -e 's/__istart/START /' \
+ -e '/Memory leaked:/s/([0-9][0-9.]*%)/(PERCENT)/g'
+}
+
+_check_purify src/interp3
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_setup_purify src/interp3
+
+for arch in src/bigbin
+do
+ for delta in 2 0.012
+ do
+ echo
+ echo "=== $arch delta=$delta ==="
+ _run_purify -a $here/$arch -t $delta | _filter
+ done
+done
+
+for arch in src/noti-foo
+do
+ for delta in 0.5 1.0 2.0
+ do
+ echo
+ echo "=== $arch delta=$delta ==="
+ _run_purify -a $here/$arch -t $delta | _filter
+ done
+done
+
+# all done
+status=0
+exit
diff --git a/qa/332.out b/qa/332.out
new file mode 100644
index 0000000..1e5b13e
--- /dev/null
+++ b/qa/332.out
@@ -0,0 +1,116 @@
+QA output created by 332
+
+=== src/bigbin delta=2 ===
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 28 bytes (PERCENT); potentially leaked: 0 bytes (PERCENT)
+
+MLK: 28 bytes leaked at ADDR
+ * This memory was allocated from:
+ _malloc [...]
+ pmNewContext [...]
+ pmDupContext [...]
+ main [...]
+ START [...]
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/bigbin delta=0.012 ===
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 28 bytes (PERCENT); potentially leaked: 0 bytes (PERCENT)
+
+MLK: 28 bytes leaked at ADDR
+ * This memory was allocated from:
+ _malloc [...]
+ pmNewContext [...]
+ pmDupContext [...]
+ main [...]
+ START [...]
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/noti-foo delta=0.5 ===
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 28 bytes (PERCENT); potentially leaked: 0 bytes (PERCENT)
+
+MLK: 28 bytes leaked at ADDR
+ * This memory was allocated from:
+ _malloc [...]
+ pmNewContext [...]
+ pmDupContext [...]
+ main [...]
+ START [...]
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/noti-foo delta=1.0 ===
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 28 bytes (PERCENT); potentially leaked: 0 bytes (PERCENT)
+
+MLK: 28 bytes leaked at ADDR
+ * This memory was allocated from:
+ _malloc [...]
+ pmNewContext [...]
+ pmDupContext [...]
+ main [...]
+ START [...]
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/noti-foo delta=2.0 ===
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 28 bytes (PERCENT); potentially leaked: 0 bytes (PERCENT)
+
+MLK: 28 bytes leaked at ADDR
+ * This memory was allocated from:
+ _malloc [...]
+ pmNewContext [...]
+ pmDupContext [...]
+ main [...]
+ START [...]
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp3.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/333 b/qa/333
new file mode 100755
index 0000000..bca56dc
--- /dev/null
+++ b/qa/333
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 333
+# Interp mode (similar to qa/097, but with purify) (see also 395)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/^===/ { print; next }
+/ Purify / { skip = 0 }
+/^FIU/ { skip = 2; next }
+/^[^ ]/ && skip == 2 { skip = 0 }
+skip == 0 { print }'
+}
+
+_check_purify src/interp4
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_setup_purify src/interp4
+
+for arch in src/bigbin src/mv-bigbin src/noti-foo
+do
+ echo
+ echo "=== $arch ==="
+ _run_purify -a $here/$arch | _filter
+done
+
+# all done
+status=0
+exit
diff --git a/qa/333.out b/qa/333.out
new file mode 100644
index 0000000..6a7a091
--- /dev/null
+++ b/qa/333.out
@@ -0,0 +1,46 @@
+QA output created by 333
+
+=== src/bigbin ===
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/mv-bigbin ===
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+Current file descriptors in use: 8
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
+
+=== src/noti-foo ===
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+Current file descriptors in use: 7
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/interp4.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/334 b/qa/334
new file mode 100755
index 0000000..78974fa
--- /dev/null
+++ b/qa/334
@@ -0,0 +1,68 @@
+#!/bin/sh
+# PCP QA Test No. 334
+#
+# check instance matching for derived metrics
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+export PCP_DERIVED_CONFIG=$tmp.config
+
+# Derived metric expr dump from 0x8513a48...
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+BEGIN { n = 0 }
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e "s;$tmp;TMP;"
+# -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# real QA test starts here
+
+cat <<End-of-File >$tmp.config
+my.x1 = sample.bin + sample.part_bin
+my.x2 = sample.part_bin + sample.bin
+my.x3 = 2 * sample.part_bin
+my.x4 = sample.part_bin * 2
+my.x5 = (sample.bin + sample.part_bin) - (sample.part_bin + sample.bin)
+End-of-File
+echo
+cat $tmp.config
+
+echo
+pminfo -Dderive,appl2 -df my >$tmp.out 2>&1
+_filter
+
+# success, all done
+exit
diff --git a/qa/334.out b/qa/334.out
new file mode 100644
index 0000000..ea7e5be
--- /dev/null
+++ b/qa/334.out
@@ -0,0 +1,295 @@
+QA output created by 334
+
+my.x1 = sample.bin + sample.part_bin
+my.x2 = sample.part_bin + sample.bin
+my.x3 = 2 * sample.part_bin
+my.x4 = sample.part_bin * 2
+my.x5 = (sample.bin + sample.part_bin) - (sample.part_bin + sample.bin)
+
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] my.x1 = sample.bin + sample.part_bin
+pmRegisterDerived: register metric[1] my.x2 = sample.part_bin + sample.bin
+pmRegisterDerived: register metric[2] my.x3 = 2 * sample.part_bin
+pmRegisterDerived: register metric[3] my.x4 = sample.part_bin * 2
+pmRegisterDerived: register metric[4] my.x5 = (sample.bin + sample.part_bin) - (sample.part_bin + sample.bin)
+__dmopencontext: bind metric[0] my.x1
+__dmopencontext: bind metric[1] my.x2
+__dmopencontext: bind metric[2] my.x3
+__dmopencontext: bind metric[3] my.x4
+__dmopencontext: bind metric[4] my.x5
+__dmgetpmid: metric "my.x1" -> PMID 511.0.1
+__dmgetpmid: metric "my.x2" -> PMID 511.0.2
+__dmgetpmid: metric "my.x3" -> PMID 511.0.3
+__dmgetpmid: metric "my.x4" -> PMID 511.0.4
+__dmgetpmid: metric "my.x5" -> PMID 511.0.5
+derived metrics prefetch added 2 metrics: 29.0.6 29.0.50
+eval_expr: inst[1] mismatch left [1]=200 right [1]=300
+eval_expr: inst[1] mismatch left [2]=300 right [0]=100
+eval_expr: recover @ right [1]=300
+eval_expr: inst[2] mismatch left [3]=400 right [2]=500
+eval_expr: inst[2] mismatch left [4]=500 right [0]=100
+eval_expr: recover @ right [2]=500
+eval_expr: inst[3] mismatch left [5]=600 right [3]=700
+eval_expr: inst[3] mismatch left [6]=700 right [0]=100
+eval_expr: recover @ right [3]=700
+eval_expr: inst[4] mismatch left [7]=800 right [4]=900
+eval_expr: inst[4] mismatch left [8]=900 right [0]=100
+eval_expr: recover @ right [4]=900
+__dmpostfetch: [0] root node 511.0.1: numval=5 vset[0]: inst=100 l=200 vset[1]: inst=300 l=600 vset[2]: inst=500 l=1000 vset[3]: inst=700 l=1400 vset[4]: inst=900 l=1800
+expr node <addr-0> type=PLUS left=<addr-1> right=<addr-2> save_last=0
+ PMID: PM_ID_NULL (511.0.1 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=300, val=600
+[2] inst=500, val=1000
+[3] inst=700, val=1400
+[4] inst=900, val=1800
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-2> type=NAME left=(nil) right=(nil) save_last=0 [sample.part_bin] master=0
+ PMID: 29.0.50 (29.0.50 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=300, val=300
+[2] inst=500, val=500
+[3] inst=700, val=700
+[4] inst=900, val=900
+eval_expr: inst[1] mismatch left [1]=300 right [1]=200
+eval_expr: recover @ right [2]=300
+eval_expr: inst[2] mismatch left [2]=500 right [3]=400
+eval_expr: recover @ right [4]=500
+eval_expr: inst[3] mismatch left [3]=700 right [5]=600
+eval_expr: recover @ right [6]=700
+eval_expr: inst[4] mismatch left [4]=900 right [7]=800
+eval_expr: recover @ right [8]=900
+__dmpostfetch: [1] root node 511.0.2: numval=5 vset[0]: inst=100 l=200 vset[1]: inst=300 l=600 vset[2]: inst=500 l=1000 vset[3]: inst=700 l=1400 vset[4]: inst=900 l=1800
+expr node <addr-3> type=PLUS left=<addr-4> right=<addr-5> save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=300, val=600
+[2] inst=500, val=1000
+[3] inst=700, val=1400
+[4] inst=900, val=1800
+expr node <addr-4> type=NAME left=(nil) right=(nil) save_last=0 [sample.part_bin] master=0
+ PMID: 29.0.50 (29.0.50 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=300, val=300
+[2] inst=500, val=500
+[3] inst=700, val=700
+[4] inst=900, val=900
+expr node <addr-5> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+__dmpostfetch: [2] root node 511.0.3: numval=5 vset[0]: inst=100 u=200 vset[1]: inst=300 u=600 vset[2]: inst=500 u=1000 vset[3]: inst=700 u=1400 vset[4]: inst=900 u=1800
+expr node <addr-6> type=STAR left=<addr-7> right=<addr-8> save_last=0
+ PMID: PM_ID_NULL (511.0.3 from pmDesc) numval: 5
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=300, val=600
+[2] inst=500, val=1000
+[3] inst=700, val=1400
+[4] inst=900, val=1800
+expr node <addr-7> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=2
+expr node <addr-8> type=NAME left=(nil) right=(nil) save_last=0 [sample.part_bin] master=0
+ PMID: 29.0.50 (29.0.50 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=300, val=300
+[2] inst=500, val=500
+[3] inst=700, val=700
+[4] inst=900, val=900
+__dmpostfetch: [3] root node 511.0.4: numval=5 vset[0]: inst=100 u=200 vset[1]: inst=300 u=600 vset[2]: inst=500 u=1000 vset[3]: inst=700 u=1400 vset[4]: inst=900 u=1800
+expr node <addr-9> type=STAR left=<addr-10> right=<addr-11> save_last=0
+ PMID: PM_ID_NULL (511.0.4 from pmDesc) numval: 5
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=300, val=600
+[2] inst=500, val=1000
+[3] inst=700, val=1400
+[4] inst=900, val=1800
+expr node <addr-10> type=NAME left=(nil) right=(nil) save_last=0 [sample.part_bin] master=0
+ PMID: 29.0.50 (29.0.50 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=300, val=300
+[2] inst=500, val=500
+[3] inst=700, val=700
+[4] inst=900, val=900
+expr node <addr-11> type=NUMBER left=(nil) right=(nil) save_last=0 [2] master=0
+ PMID: PM_ID_NULL (PM_ID_NULL from pmDesc) numval: 1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+[0] inst=-1, val=2
+eval_expr: inst[1] mismatch left [1]=200 right [1]=300
+eval_expr: inst[1] mismatch left [2]=300 right [0]=100
+eval_expr: recover @ right [1]=300
+eval_expr: inst[2] mismatch left [3]=400 right [2]=500
+eval_expr: inst[2] mismatch left [4]=500 right [0]=100
+eval_expr: recover @ right [2]=500
+eval_expr: inst[3] mismatch left [5]=600 right [3]=700
+eval_expr: inst[3] mismatch left [6]=700 right [0]=100
+eval_expr: recover @ right [3]=700
+eval_expr: inst[4] mismatch left [7]=800 right [4]=900
+eval_expr: inst[4] mismatch left [8]=900 right [0]=100
+eval_expr: recover @ right [4]=900
+eval_expr: inst[1] mismatch left [1]=300 right [1]=200
+eval_expr: recover @ right [2]=300
+eval_expr: inst[2] mismatch left [2]=500 right [3]=400
+eval_expr: recover @ right [4]=500
+eval_expr: inst[3] mismatch left [3]=700 right [5]=600
+eval_expr: recover @ right [6]=700
+eval_expr: inst[4] mismatch left [4]=900 right [7]=800
+eval_expr: recover @ right [8]=900
+__dmpostfetch: [4] root node 511.0.5: numval=5 vset[0]: inst=100 l=0 vset[1]: inst=300 l=0 vset[2]: inst=500 l=0 vset[3]: inst=700 l=0 vset[4]: inst=900 l=0
+expr node <addr-12> type=MINUS left=<addr-13> right=<addr-16> save_last=0
+ PMID: PM_ID_NULL (511.0.5 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=0
+[1] inst=300, val=0
+[2] inst=500, val=0
+[3] inst=700, val=0
+[4] inst=900, val=0
+expr node <addr-13> type=PLUS left=<addr-14> right=<addr-15> save_last=0
+ PMID: PM_ID_NULL (29.0.6 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=300, val=600
+[2] inst=500, val=1000
+[3] inst=700, val=1400
+[4] inst=900, val=1800
+expr node <addr-14> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+expr node <addr-15> type=NAME left=(nil) right=(nil) save_last=0 [sample.part_bin] master=0
+ PMID: 29.0.50 (29.0.50 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=300, val=300
+[2] inst=500, val=500
+[3] inst=700, val=700
+[4] inst=900, val=900
+expr node <addr-16> type=PLUS left=<addr-17> right=<addr-18> save_last=0
+ PMID: PM_ID_NULL (29.0.50 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=200
+[1] inst=300, val=600
+[2] inst=500, val=1000
+[3] inst=700, val=1400
+[4] inst=900, val=1800
+expr node <addr-17> type=NAME left=(nil) right=(nil) save_last=0 [sample.part_bin] master=0
+ PMID: 29.0.50 (29.0.50 from pmDesc) numval: 5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=300, val=300
+[2] inst=500, val=500
+[3] inst=700, val=700
+[4] inst=900, val=900
+expr node <addr-18> type=NAME left=(nil) right=(nil) save_last=0 [sample.bin] master=0
+ PMID: 29.0.6 (29.0.6 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+[0] inst=100, val=100
+[1] inst=200, val=200
+[2] inst=300, val=300
+[3] inst=400, val=400
+[4] inst=500, val=500
+[5] inst=600, val=600
+[6] inst=700, val=700
+[7] inst=800, val=800
+[8] inst=900, val=900
+
+my.x1
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ inst [100 or "bin-100"] value 200
+ inst [300 or "bin-300"] value 600
+ inst [500 or "bin-500"] value 1000
+ inst [700 or "bin-700"] value 1400
+ inst [900 or "bin-900"] value 1800
+
+my.x2
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ inst [100 or "bin-100"] value 200
+ inst [300 or "bin-300"] value 600
+ inst [500 or "bin-500"] value 1000
+ inst [700 or "bin-700"] value 1400
+ inst [900 or "bin-900"] value 1800
+
+my.x3
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ inst [100 or "bin-100"] value 200
+ inst [300 or "bin-300"] value 600
+ inst [500 or "bin-500"] value 1000
+ inst [700 or "bin-700"] value 1400
+ inst [900 or "bin-900"] value 1800
+
+my.x4
+ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ inst [100 or "bin-100"] value 200
+ inst [300 or "bin-300"] value 600
+ inst [500 or "bin-500"] value 1000
+ inst [700 or "bin-700"] value 1400
+ inst [900 or "bin-900"] value 1800
+
+my.x5
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ inst [100 or "bin-100"] value 0
+ inst [300 or "bin-300"] value 0
+ inst [500 or "bin-500"] value 0
+ inst [700 or "bin-700"] value 0
+ inst [900 or "bin-900"] value 0
diff --git a/qa/335 b/qa/335
new file mode 100755
index 0000000..6610365
--- /dev/null
+++ b/qa/335
@@ -0,0 +1,93 @@
+#!/bin/sh
+# PCP QA Test No. 335
+#
+# Checkout derived metrics with whacky instance domain changes
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
+then
+ :
+else
+ echo "No derived metric support" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_store()
+{
+ sed -e 's/old value=[0-9][0-9]*/old value=N/'
+}
+
+# Derived metric expr dump from 0x8513a48...
+# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
+_filter()
+{
+ cat $tmp.out >>$seq.full
+ awk <$tmp.out >$tmp.sed '
+BEGIN { n = 0 }
+$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
+ { next }'
+ echo "=== sed ===" >>$seq.full
+ cat $tmp.sed >>$seq.full
+ sed -f $tmp.sed <$tmp.out \
+ | sed \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
+ -e 's/=0x0 /=(nil) /g' \
+ -e '/^host:.*$/s/.*/HOST/' \
+ -e "s;$tmp;TMP;"
+# -e 's/ val=[0-9][0-9]*/ val=<number>/g'
+}
+
+# real QA test starts here
+pmstore sample.scramble.version 0 | _filter_store
+for i in 1 2 3 4 5 6
+do
+ pminfo -f sample.scramble.bin
+done >$tmp.orig
+
+echo "=== original ===" >>$seq.full
+cat $tmp.orig >>$seq.full
+
+cat <<End-of-File >$tmp.config
+my.scramble.bin = sample.scramble.bin
+my.scramble.delta = delta(sample.scramble.bin)
+End-of-File
+export PCP_DERIVED_CONFIG=$tmp.config
+pmstore sample.scramble.version 0 | _filter_store
+for i in 1 2 3 4 5 6
+do
+ pminfo -f my.scramble.bin
+done >$tmp.new
+
+echo >>$seq.full
+echo "=== derived ===" >>$seq.full
+cat $tmp.new >>$seq.full
+
+echo "diffs ... expect only names to be different"
+diff $tmp.orig $tmp.new
+
+echo
+echo "delta() check ..."
+pmstore sample.scramble.version 0 | _filter_store
+#debug# pmval -Dderive,appl2,pdu,fetch -s 5 -t 0.25 my.scramble.delta
+pmval -Dderive,appl2 -s 5 -t 0.25 my.scramble.delta >$tmp.out 2>$tmp.err
+cat $tmp.out >>$tmp.err
+mv $tmp.err $tmp.out
+_filter
+
+# success, all done
+exit
diff --git a/qa/335.out b/qa/335.out
new file mode 100644
index 0000000..96aa965
--- /dev/null
+++ b/qa/335.out
@@ -0,0 +1,173 @@
+QA output created by 335
+sample.scramble.version old value=N new value=0
+sample.scramble.version old value=N new value=0
+diffs ... expect only names to be different
+2c2
+< sample.scramble.bin
+---
+> my.scramble.bin
+10c10
+< sample.scramble.bin
+---
+> my.scramble.bin
+21c21
+< sample.scramble.bin
+---
+> my.scramble.bin
+27c27
+< sample.scramble.bin
+---
+> my.scramble.bin
+31c31
+< sample.scramble.bin
+---
+> my.scramble.bin
+37c37
+< sample.scramble.bin
+---
+> my.scramble.bin
+
+delta() check ...
+sample.scramble.version old value=N new value=0
+Derived metric initialization from $PCP_DERIVED_CONFIG
+pmLoadDerivedConfig("TMP.config")
+pmRegisterDerived: register metric[0] my.scramble.bin = sample.scramble.bin
+pmRegisterDerived: register metric[1] my.scramble.delta = delta(sample.scramble.bin)
+__dmopencontext: bind metric[0] my.scramble.bin
+__dmopencontext: bind metric[1] my.scramble.delta
+__dmgetpmid: metric "my.scramble.delta" -> PMID 511.0.2
+derived metrics prefetch added 1 metrics: 29.0.121
+__dmpostfetch: [0] root node 511.0.2: numval=0
+expr node <addr-0> type=DELTA left=<addr-1> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 0
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [sample.scramble.bin] master=0
+ PMID: 29.0.121 (29.0.121 from pmDesc) numval: 6
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=700, val=700
+[1] inst=800, val=800
+[2] inst=900, val=900
+[3] inst=500, val=500
+[4] inst=300, val=300
+[5] inst=600, val=600
+derived metrics prefetch added 1 metrics: 29.0.121
+eval_expr: inst[0] mismatch left [0]=500 last [0]=700
+eval_expr: recover @ last [3]=500
+eval_expr: inst[1] mismatch left [1]=100 last [1]=800
+eval_expr: inst[2] mismatch left [3]=300 last [3]=500
+eval_expr: recover @ last [4]=300
+eval_expr: inst[3] mismatch left [4]=600 last [4]=300
+eval_expr: recover @ last [5]=600
+eval_expr: inst[4] mismatch left [5]=400 last [5]=600
+eval_expr: inst[5] mismatch left [7]=200 last [0]=700
+eval_expr: inst[5] mismatch left [8]=800 last [0]=700
+eval_expr: recover @ last [1]=800
+__dmpostfetch: [0] root node 511.0.2: numval=6 vset[0]: inst=500 l=0 vset[1]: inst=900 l=0 vset[2]: inst=300 l=0 vset[3]: inst=600 l=0 vset[4]: inst=700 l=0 vset[5]: inst=800 l=0
+expr node <addr-0> type=DELTA left=<addr-1> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 6
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=500, val=0
+[1] inst=900, val=0
+[2] inst=300, val=0
+[3] inst=600, val=0
+[4] inst=700, val=0
+[5] inst=800, val=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [sample.scramble.bin] master=0
+ PMID: 29.0.121 (29.0.121 from pmDesc) numval: 9
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=500, val=500 (last inst=700, val=700)
+[1] inst=100, val=100 (last inst=800, val=800)
+[2] inst=900, val=900 (last inst=900, val=900)
+[3] inst=300, val=300 (last inst=500, val=500)
+[4] inst=600, val=600 (last inst=300, val=300)
+[5] inst=400, val=400 (last inst=600, val=600)
+[6] inst=700, val=700
+[7] inst=200, val=200
+[8] inst=800, val=800
+derived metrics prefetch added 1 metrics: 29.0.121
+eval_expr: inst[0] mismatch left [0]=200 last [0]=500
+eval_expr: recover @ last [7]=200
+eval_expr: inst[1] mismatch left [1]=400 last [1]=100
+eval_expr: recover @ last [5]=400
+eval_expr: inst[2] mismatch left [2]=700 last [2]=900
+eval_expr: recover @ last [6]=700
+eval_expr: inst[3] mismatch left [3]=600 last [3]=300
+eval_expr: recover @ last [4]=600
+__dmpostfetch: [0] root node 511.0.2: numval=4 vset[0]: inst=200 l=0 vset[1]: inst=400 l=0 vset[2]: inst=700 l=0 vset[3]: inst=600 l=0
+expr node <addr-0> type=DELTA left=<addr-1> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 4
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=200, val=0
+[1] inst=400, val=0
+[2] inst=700, val=0
+[3] inst=600, val=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [sample.scramble.bin] master=0
+ PMID: 29.0.121 (29.0.121 from pmDesc) numval: 4
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=200, val=200 (last inst=500, val=500)
+[1] inst=400, val=400 (last inst=100, val=100)
+[2] inst=700, val=700 (last inst=900, val=900)
+[3] inst=600, val=600 (last inst=300, val=300)
+[4] (last inst=600, val=600)
+[5] (last inst=400, val=400)
+[6] (last inst=700, val=700)
+[7] (last inst=200, val=200)
+[8] (last inst=800, val=800)
+derived metrics prefetch added 1 metrics: 29.0.121
+eval_expr: inst[0] mismatch left [0]=600 last [0]=200
+eval_expr: recover @ last [3]=600
+eval_expr: inst[1] mismatch left [1]=100 last [1]=400
+__dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=600 l=0
+expr node <addr-0> type=DELTA left=<addr-1> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=600, val=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [sample.scramble.bin] master=0
+ PMID: 29.0.121 (29.0.121 from pmDesc) numval: 2
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=600, val=600 (last inst=200, val=200)
+[1] inst=100, val=100 (last inst=400, val=400)
+[2] (last inst=700, val=700)
+[3] (last inst=600, val=600)
+derived metrics prefetch added 1 metrics: 29.0.121
+eval_expr: inst[0] mismatch left [0]=900 last [0]=600
+eval_expr: inst[0] mismatch left [1]=700 last [1]=100
+eval_expr: inst[0] mismatch left [2]=300 last [0]=600
+eval_expr: inst[0] mismatch left [3]=100 last [0]=600
+eval_expr: recover @ last [1]=100
+__dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=100 l=0
+expr node <addr-0> type=DELTA left=<addr-1> right=(nil) save_last=0
+ PMID: PM_ID_NULL (511.0.2 from pmDesc) numval: 1
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=100, val=0
+expr node <addr-1> type=NAME left=(nil) right=(nil) save_last=1 [sample.scramble.bin] master=0
+ PMID: 29.0.121 (29.0.121 from pmDesc) numval: 4
+ Data Type: 32-bit int InDom: 29.9 0x7400009
+ Semantics: instant Units: none
+[0] inst=900, val=900 (last inst=600, val=600)
+[1] inst=700, val=700 (last inst=100, val=100)
+[2] inst=300, val=300
+[3] inst=100, val=100
+
+metric: my.scramble.delta
+HOST
+semantics: instantaneous value
+units: none
+samples: 5
+interval: 0.25 sec
+No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ ? ? 0 ? 0 0 0 0 0
+ ? 0 ? 0 ? 0 0 ? ?
+ ? ? ? ? ? 0 ? ? ?
+ 0 ? ? ? ? ? ? ? ?
diff --git a/qa/336 b/qa/336
new file mode 100755
index 0000000..d794f7c
--- /dev/null
+++ b/qa/336
@@ -0,0 +1,93 @@
+#! /bin/sh
+# PCP QA Test No. 336
+# exercise a libpcp_trace problem
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+LOCALHOST=`hostname`
+_needclean=true
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+_interrupt()
+{
+ status=1
+}
+
+if [ -d $PCP_LOG_DIR/pmlogger ]
+then
+ LOGGING_DIR=$PCP_LOG_DIR/pmlogger
+else
+ LOGGING_DIR=$PCP_LOG_DIR
+fi
+
+_cleanup()
+{
+ cd $here
+ if $_needclean
+ then
+ pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
+ && $sudo sh $tmp.cmd
+ _change_config pmlogger on
+ $sudo cp /tmp/$seq.dir/pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo cp /tmp/$seq.dir/root $PCP_VAR_DIR/pmns/root
+ rm -rf /tmp/$seq.dir
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _needclean=false
+ fi
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+# save pcp setup
+mkdir /tmp/$seq.dir
+cp $PCP_PMCDCONF_PATH /tmp/$seq.dir
+cp $PCP_VAR_DIR/pmns/root /tmp/$seq.dir
+
+_change_config pmlogger off
+
+trap "_cleanup" 0
+trap "_interrupt; _cleanup" 1 2 3 15
+
+pminfo trace >/dev/null 2>&1
+remove=$?
+
+# real QA test starts here
+
+echo "=== Checking pmtrace without a PMDA listening ==="
+cd $PCP_PMDAS_DIR/trace
+$sudo ./Remove >/dev/null 2>&1
+# use a bigger hammer
+$sudo $signal -a -s KILL pmdatrace > /dev/null 2>&1
+
+# Should produce a PMDA connect error ...
+pmtrace -h $LOCALHOST -q -v 1.1 foo
+
+if [ $remove -ne 1 ]
+then
+ $sudo $PCP_PMDAS_DIR/trace/Install < /dev/null > /dev/null 2>&1
+fi
+
+# success, all done
+status=0
+exit
diff --git a/qa/336.out b/qa/336.out
new file mode 100644
index 0000000..c34643b
--- /dev/null
+++ b/qa/336.out
@@ -0,0 +1,6 @@
+QA output created by 336
+=== Checking pmtrace without a PMDA listening ===
+pmtrace: observation error: Connection refused
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/337 b/qa/337
new file mode 100755
index 0000000..f8773dc
--- /dev/null
+++ b/qa/337
@@ -0,0 +1,52 @@
+#! /bin/sh
+# PCP QA Test No. 337
+# pmlogextract with temporally overlapping archives
+#
+# Copyright (c) 2008 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e "s;$tmp;TMP;g"
+}
+
+# real QA test starts here
+echo "=== mirage-1 ==="
+pmdumplog -z -d src/mirage-1
+pmdumplog -z -i src/mirage-1
+pmdumplog -z src/mirage-1
+pmval -z -U src/mirage-1 sample.mirage
+pmval -z -U src/mirage-1 sample.many.int
+
+echo
+echo "=== mirage-2 ==="
+pmdumplog -z -d src/mirage-2
+pmdumplog -z -i src/mirage-2
+pmdumplog -z src/mirage-2
+pmval -z -U src/mirage-2 sample.mirage
+pmval -z -U src/mirage-2 sample.many.int
+
+pmlogextract src/mirage-1 src/mirage-2 $tmp
+
+echo
+echo "=== merged archive ==="
+pmdumplog -z -d $tmp
+pmdumplog -z -i $tmp
+pmdumplog -z $tmp
+pmval -z -U $tmp sample.mirage 2>&1 | _filter
+pmval -z -U $tmp sample.many.int 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/337.out b/qa/337.out
new file mode 100644
index 0000000..68c28cb
--- /dev/null
+++ b/qa/337.out
@@ -0,0 +1,1968 @@
+QA output created by 337
+=== mirage-1 ===
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: count
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+Instance Domains in the Log ...
+InDom: 29.2
+13:33:47.240 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 29.3
+13:33:47.240 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 11 or "m-11"
+13:33:59.246 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 12 or "m-12"
+13:34:20.240 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 12 or "m-12"
+ 13 or "m-13"
+ 14 or "m-14"
+InDom: 29.8
+13:33:47.240 5 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+13:33:53.239 8 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+13:33:56.240 11 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+ 9 or "i-9"
+ 10 or "i-10"
+InDom: 2.1
+13:33:44.278 1 instances
+ 32221 or "32221"
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 99
+ inst [4 or "m-04"] value 498
+ inst [9 or "m-09"] value 997
+ inst [10 or "m-10"] value 1096
+ inst [11 or "m-11"] value 1195
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 94
+ inst [4 or "m-04"] value 493
+ inst [9 or "m-09"] value 992
+ inst [10 or "m-10"] value 1091
+ inst [11 or "m-11"] value 1190
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:53.239 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 74
+ inst [4 or "m-04"] value 473
+ inst [9 or "m-09"] value 972
+ inst [10 or "m-10"] value 1071
+ inst [11 or "m-11"] value 1170
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:56.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 54
+ inst [4 or "m-04"] value 453
+ inst [9 or "m-09"] value 952
+ inst [10 or "m-10"] value 1051
+ inst [11 or "m-11"] value 1150
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:59.246 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 34
+ inst [4 or "m-04"] value 433
+ inst [9 or "m-09"] value 932
+ inst [10 or "m-10"] value 1031
+ inst [12 or "m-12"] value 1230
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:02.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 24
+ inst [4 or "m-04"] value 423
+ inst [9 or "m-09"] value 922
+ inst [10 or "m-10"] value 1021
+ inst [12 or "m-12"] value 1220
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:05.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 19
+ inst [4 or "m-04"] value 418
+ inst [9 or "m-09"] value 917
+ inst [10 or "m-10"] value 1016
+ inst [12 or "m-12"] value 1215
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:08.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 14
+ inst [4 or "m-04"] value 413
+ inst [10 or "m-10"] value 1012
+ inst [12 or "m-12"] value 1211
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:11.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 10
+ inst [4 or "m-04"] value 409
+ inst [10 or "m-10"] value 1008
+ inst [12 or "m-12"] value 1207
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:14.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 6
+ inst [4 or "m-04"] value 405
+ inst [10 or "m-10"] value 1004
+ inst [12 or "m-12"] value 1203
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:17.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 2
+ inst [4 or "m-04"] value 401
+ inst [10 or "m-10"] value 1100
+ inst [12 or "m-12"] value 1299
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:20.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 98
+ inst [4 or "m-04"] value 497
+ inst [12 or "m-12"] value 1296
+ inst [13 or "m-13"] value 1395
+ inst [14 or "m-14"] value 1494
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:23.239 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 93
+ inst [4 or "m-04"] value 492
+ inst [12 or "m-12"] value 1291
+ inst [13 or "m-13"] value 1390
+ inst [14 or "m-14"] value 1489
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:26.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 88
+ inst [4 or "m-04"] value 487
+ inst [12 or "m-12"] value 1286
+ inst [13 or "m-13"] value 1385
+ inst [14 or "m-14"] value 1484
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:29.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 83
+ inst [4 or "m-04"] value 482
+ inst [12 or "m-12"] value 1281
+ inst [13 or "m-13"] value 1380
+ inst [14 or "m-14"] value 1479
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+metric: sample.mirage
+archive: src/mirage-1
+host: ken.engr.acx
+start: Sat May 17 13:33:44 2008
+end: Sat May 17 13:34:29 2008
+semantics: instantaneous value
+units: Kbyte / sec
+samples: all
+
+ m-00 m-04 m-09 m-10 m-11 m-12 m-13 m-14
+13:33:47.240 99 498 997 1096 1195 ? ? ?
+13:33:50.240 94 493 992 1091 1190 ? ? ?
+13:33:53.239 74 473 972 1071 1170 ? ? ?
+13:33:56.240 54 453 952 1051 1150 ? ? ?
+13:33:59.246 34 433 932 1031 ? 1230 ? ?
+13:34:02.240 24 423 922 1021 ? 1220 ? ?
+13:34:05.240 19 418 917 1016 ? 1215 ? ?
+13:34:08.240 14 413 ? 1012 ? 1211 ? ?
+13:34:11.240 10 409 ? 1008 ? 1207 ? ?
+13:34:14.240 6 405 ? 1004 ? 1203 ? ?
+13:34:17.240 2 401 ? 1100 ? 1299 ? ?
+13:34:20.240 98 497 ? ? ? 1296 1395 1494
+13:34:23.239 93 492 ? ? ? 1291 1390 1489
+13:34:26.240 88 487 ? ? ? 1286 1385 1484
+13:34:29.240 83 482 ? ? ? 1281 1380 1479
+
+pmval: pmFetchArchive: End of PCP archive log
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+metric: sample.many.int
+archive: src/mirage-1
+host: ken.engr.acx
+start: Sat May 17 13:33:44 2008
+end: Sat May 17 13:34:29 2008
+semantics: instantaneous value
+units: count
+samples: all
+
+ i-0 i-1 i-2 i-3 i-4 i-5 i-6 i-7 i-8 i-9 i-10
+13:33:47.240 0 1 2 3 4 ? ? ? ? ? ?
+13:33:50.240 0 1 2 3 4 ? ? ? ? ? ?
+13:33:53.239 0 1 2 3 4 5 6 7 ? ? ?
+13:33:56.240 0 1 2 3 4 5 6 7 8 9 10
+13:33:59.246 0 1 2 3 4 5 6 7 8 9 10
+13:34:02.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:05.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:08.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:11.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:14.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:17.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:20.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:23.239 0 1 2 3 4 5 6 7 8 9 10
+13:34:26.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:29.240 0 1 2 3 4 5 6 7 8 9 10
+
+pmval: pmFetchArchive: End of PCP archive log
+
+=== mirage-2 ===
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: count
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+Instance Domains in the Log ...
+InDom: 29.2
+13:33:50.622 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 29.3
+13:33:50.622 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 11 or "m-11"
+13:33:57.622 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 12 or "m-12"
+InDom: 29.8
+13:33:50.622 5 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+13:33:51.622 6 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+13:33:52.622 7 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+13:33:53.622 8 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+13:33:54.622 9 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+13:33:55.622 10 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+ 9 or "i-9"
+13:33:56.622 11 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+ 9 or "i-9"
+ 10 or "i-10"
+InDom: 2.1
+13:33:49.623 1 instances
+ 32224 or "32224"
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+13:33:49.623 2.3.3 (pmcd.pmlogger.host): inst [32224 or "32224"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32224 or "32224"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [32224 or "32224"] value "/home/kmcdonell/src/pcpqa/src/mirage-2"
+
+13:33:50.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 89
+ inst [4 or "m-04"] value 488
+ inst [9 or "m-09"] value 987
+ inst [10 or "m-10"] value 1086
+ inst [11 or "m-11"] value 1185
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:51.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 84
+ inst [4 or "m-04"] value 483
+ inst [9 or "m-09"] value 982
+ inst [10 or "m-10"] value 1081
+ inst [11 or "m-11"] value 1180
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:52.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 79
+ inst [4 or "m-04"] value 478
+ inst [9 or "m-09"] value 977
+ inst [10 or "m-10"] value 1076
+ inst [11 or "m-11"] value 1175
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:53.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 69
+ inst [4 or "m-04"] value 468
+ inst [9 or "m-09"] value 967
+ inst [10 or "m-10"] value 1066
+ inst [11 or "m-11"] value 1165
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:54.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 64
+ inst [4 or "m-04"] value 463
+ inst [9 or "m-09"] value 962
+ inst [10 or "m-10"] value 1061
+ inst [11 or "m-11"] value 1160
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:55.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 59
+ inst [4 or "m-04"] value 458
+ inst [9 or "m-09"] value 957
+ inst [10 or "m-10"] value 1056
+ inst [11 or "m-11"] value 1155
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:56.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 49
+ inst [4 or "m-04"] value 448
+ inst [9 or "m-09"] value 947
+ inst [10 or "m-10"] value 1046
+ inst [11 or "m-11"] value 1145
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:57.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 44
+ inst [4 or "m-04"] value 443
+ inst [9 or "m-09"] value 942
+ inst [10 or "m-10"] value 1041
+ inst [12 or "m-12"] value 1240
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:58.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 39
+ inst [4 or "m-04"] value 438
+ inst [9 or "m-09"] value 937
+ inst [10 or "m-10"] value 1036
+ inst [12 or "m-12"] value 1235
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:59.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 29
+ inst [4 or "m-04"] value 428
+ inst [9 or "m-09"] value 927
+ inst [10 or "m-10"] value 1026
+ inst [12 or "m-12"] value 1225
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+metric: sample.mirage
+archive: src/mirage-2
+host: ken.engr.acx
+start: Sat May 17 13:33:49 2008
+end: Sat May 17 13:33:59 2008
+semantics: instantaneous value
+units: Kbyte / sec
+samples: all
+
+ m-00 m-04 m-09 m-10 m-11 m-12
+13:33:50.622 89 488 987 1086 1185 ?
+13:33:51.622 84 483 982 1081 1180 ?
+13:33:52.622 79 478 977 1076 1175 ?
+13:33:53.622 69 468 967 1066 1165 ?
+13:33:54.622 64 463 962 1061 1160 ?
+13:33:55.622 59 458 957 1056 1155 ?
+13:33:56.622 49 448 947 1046 1145 ?
+13:33:57.622 44 443 942 1041 ? 1240
+13:33:58.622 39 438 937 1036 ? 1235
+13:33:59.622 29 428 927 1026 ? 1225
+
+pmval: pmFetchArchive: End of PCP archive log
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+metric: sample.many.int
+archive: src/mirage-2
+host: ken.engr.acx
+start: Sat May 17 13:33:49 2008
+end: Sat May 17 13:33:59 2008
+semantics: instantaneous value
+units: count
+samples: all
+
+ i-0 i-1 i-2 i-3 i-4 i-5 i-6 i-7 i-8 i-9 i-10
+13:33:50.622 0 1 2 3 4 ? ? ? ? ? ?
+13:33:51.622 0 1 2 3 4 5 ? ? ? ? ?
+13:33:52.622 0 1 2 3 4 5 6 ? ? ? ?
+13:33:53.622 0 1 2 3 4 5 6 7 ? ? ?
+13:33:54.622 0 1 2 3 4 5 6 7 8 ? ?
+13:33:55.622 0 1 2 3 4 5 6 7 8 9 ?
+13:33:56.622 0 1 2 3 4 5 6 7 8 9 10
+13:33:57.622 0 1 2 3 4 5 6 7 8 9 10
+13:33:58.622 0 1 2 3 4 5 6 7 8 9 10
+13:33:59.622 0 1 2 3 4 5 6 7 8 9 10
+
+pmval: pmFetchArchive: End of PCP archive log
+
+=== merged archive ===
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+Descriptions for Metrics in the Log ...
+PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+ Semantics: instant Units: Kbyte / sec
+PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: count
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+Instance Domains in the Log ...
+InDom: 29.2
+13:33:47.240 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+13:33:50.622 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+InDom: 29.3
+13:33:47.240 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 11 or "m-11"
+13:33:50.622 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 11 or "m-11"
+13:33:57.622 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 12 or "m-12"
+13:33:59.246 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 9 or "m-09"
+ 10 or "m-10"
+ 12 or "m-12"
+13:34:20.240 5 instances
+ 0 or "m-00"
+ 4 or "m-04"
+ 12 or "m-12"
+ 13 or "m-13"
+ 14 or "m-14"
+InDom: 29.8
+13:33:47.240 5 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+13:33:50.622 5 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+13:33:51.622 6 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+13:33:52.622 7 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+13:33:53.239 8 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+13:33:53.622 8 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+13:33:54.622 9 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+13:33:55.622 10 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+ 9 or "i-9"
+13:33:56.240 11 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+ 9 or "i-9"
+ 10 or "i-10"
+13:33:56.622 11 instances
+ 0 or "i-0"
+ 1 or "i-1"
+ 2 or "i-2"
+ 3 or "i-3"
+ 4 or "i-4"
+ 5 or "i-5"
+ 6 or "i-6"
+ 7 or "i-7"
+ 8 or "i-8"
+ 9 or "i-9"
+ 10 or "i-10"
+InDom: 2.1
+13:33:44.278 1 instances
+ 32221 or "32221"
+13:33:49.623 1 instances
+ 32224 or "32224"
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+
+13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 99
+ inst [4 or "m-04"] value 498
+ inst [9 or "m-09"] value 997
+ inst [10 or "m-10"] value 1096
+ inst [11 or "m-11"] value 1195
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:49.623 2.3.3 (pmcd.pmlogger.host): inst [32224 or "32224"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32224 or "32224"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [32224 or "32224"] value "/home/kmcdonell/src/pcpqa/src/mirage-2"
+
+13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 94
+ inst [4 or "m-04"] value 493
+ inst [9 or "m-09"] value 992
+ inst [10 or "m-10"] value 1091
+ inst [11 or "m-11"] value 1190
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:50.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 89
+ inst [4 or "m-04"] value 488
+ inst [9 or "m-09"] value 987
+ inst [10 or "m-10"] value 1086
+ inst [11 or "m-11"] value 1185
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:51.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 84
+ inst [4 or "m-04"] value 483
+ inst [9 or "m-09"] value 982
+ inst [10 or "m-10"] value 1081
+ inst [11 or "m-11"] value 1180
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:52.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 79
+ inst [4 or "m-04"] value 478
+ inst [9 or "m-09"] value 977
+ inst [10 or "m-10"] value 1076
+ inst [11 or "m-11"] value 1175
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:53.239 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 74
+ inst [4 or "m-04"] value 473
+ inst [9 or "m-09"] value 972
+ inst [10 or "m-10"] value 1071
+ inst [11 or "m-11"] value 1170
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:53.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 69
+ inst [4 or "m-04"] value 468
+ inst [9 or "m-09"] value 967
+ inst [10 or "m-10"] value 1066
+ inst [11 or "m-11"] value 1165
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:54.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 64
+ inst [4 or "m-04"] value 463
+ inst [9 or "m-09"] value 962
+ inst [10 or "m-10"] value 1061
+ inst [11 or "m-11"] value 1160
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:55.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 59
+ inst [4 or "m-04"] value 458
+ inst [9 or "m-09"] value 957
+ inst [10 or "m-10"] value 1056
+ inst [11 or "m-11"] value 1155
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:56.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 54
+ inst [4 or "m-04"] value 453
+ inst [9 or "m-09"] value 952
+ inst [10 or "m-10"] value 1051
+ inst [11 or "m-11"] value 1150
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:56.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 49
+ inst [4 or "m-04"] value 448
+ inst [9 or "m-09"] value 947
+ inst [10 or "m-10"] value 1046
+ inst [11 or "m-11"] value 1145
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:57.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 44
+ inst [4 or "m-04"] value 443
+ inst [9 or "m-09"] value 942
+ inst [10 or "m-10"] value 1041
+ inst [12 or "m-12"] value 1240
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:58.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 39
+ inst [4 or "m-04"] value 438
+ inst [9 or "m-09"] value 937
+ inst [10 or "m-10"] value 1036
+ inst [12 or "m-12"] value 1235
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:59.246 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 34
+ inst [4 or "m-04"] value 433
+ inst [9 or "m-09"] value 932
+ inst [10 or "m-10"] value 1031
+ inst [12 or "m-12"] value 1230
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:59.622 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 29
+ inst [4 or "m-04"] value 428
+ inst [9 or "m-09"] value 927
+ inst [10 or "m-10"] value 1026
+ inst [12 or "m-12"] value 1225
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:33:59.623 <mark>
+
+13:34:02.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 24
+ inst [4 or "m-04"] value 423
+ inst [9 or "m-09"] value 922
+ inst [10 or "m-10"] value 1021
+ inst [12 or "m-12"] value 1220
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:05.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 19
+ inst [4 or "m-04"] value 418
+ inst [9 or "m-09"] value 917
+ inst [10 or "m-10"] value 1016
+ inst [12 or "m-12"] value 1215
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:08.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 14
+ inst [4 or "m-04"] value 413
+ inst [10 or "m-10"] value 1012
+ inst [12 or "m-12"] value 1211
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:11.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 10
+ inst [4 or "m-04"] value 409
+ inst [10 or "m-10"] value 1008
+ inst [12 or "m-12"] value 1207
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:14.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 6
+ inst [4 or "m-04"] value 405
+ inst [10 or "m-10"] value 1004
+ inst [12 or "m-12"] value 1203
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:17.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 2
+ inst [4 or "m-04"] value 401
+ inst [10 or "m-10"] value 1100
+ inst [12 or "m-12"] value 1299
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:20.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 98
+ inst [4 or "m-04"] value 497
+ inst [12 or "m-12"] value 1296
+ inst [13 or "m-13"] value 1395
+ inst [14 or "m-14"] value 1494
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:23.239 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 93
+ inst [4 or "m-04"] value 492
+ inst [12 or "m-12"] value 1291
+ inst [13 or "m-13"] value 1390
+ inst [14 or "m-14"] value 1489
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:26.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 88
+ inst [4 or "m-04"] value 487
+ inst [12 or "m-12"] value 1286
+ inst [13 or "m-13"] value 1385
+ inst [14 or "m-14"] value 1484
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+13:34:29.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 83
+ inst [4 or "m-04"] value 482
+ inst [12 or "m-12"] value 1281
+ inst [13 or "m-13"] value 1380
+ inst [14 or "m-14"] value 1479
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+metric: sample.mirage
+archive: TMP
+host: ken.engr.acx
+start: Sat May 17 13:33:44 2008
+end: Sat May 17 13:34:29 2008
+semantics: instantaneous value
+units: Kbyte / sec
+samples: all
+
+ m-00 m-04 m-09 m-10 m-11 m-12 m-13 m-14
+13:33:47.240 99 498 997 1096 1195 ? ? ?
+13:33:50.240 94 493 992 1091 1190 ? ? ?
+13:33:50.622 89 488 987 1086 1185 ? ? ?
+13:33:51.622 84 483 982 1081 1180 ? ? ?
+13:33:52.622 79 478 977 1076 1175 ? ? ?
+13:33:53.239 74 473 972 1071 1170 ? ? ?
+13:33:53.622 69 468 967 1066 1165 ? ? ?
+13:33:54.622 64 463 962 1061 1160 ? ? ?
+13:33:55.622 59 458 957 1056 1155 ? ? ?
+13:33:56.240 54 453 952 1051 1150 ? ? ?
+13:33:56.622 49 448 947 1046 1145 ? ? ?
+13:33:57.622 44 443 942 1041 ? 1240 ? ?
+13:33:58.622 39 438 937 1036 ? 1235 ? ?
+13:33:59.246 34 433 932 1031 ? 1230 ? ?
+13:33:59.622 29 428 927 1026 ? 1225 ? ?
+13:33:59.623 Archive logging suspended
+
+ m-00 m-04 m-09 m-10 m-11 m-12 m-13 m-14
+13:34:02.240 24 423 922 1021 ? 1220 ? ?
+13:34:05.240 19 418 917 1016 ? 1215 ? ?
+13:34:08.240 14 413 ? 1012 ? 1211 ? ?
+13:34:11.240 10 409 ? 1008 ? 1207 ? ?
+13:34:14.240 6 405 ? 1004 ? 1203 ? ?
+13:34:17.240 2 401 ? 1100 ? 1299 ? ?
+13:34:20.240 98 497 ? ? ? 1296 1395 1494
+13:34:23.239 93 492 ? ? ? 1291 1390 1489
+13:34:26.240 88 487 ? ? ? 1286 1385 1484
+13:34:29.240 83 482 ? ? ? 1281 1380 1479
+
+pmval: pmFetchArchive: End of PCP archive log
+Note: timezone set to local timezone of host "ken.engr.acx" from archive
+
+metric: sample.many.int
+archive: TMP
+host: ken.engr.acx
+start: Sat May 17 13:33:44 2008
+end: Sat May 17 13:34:29 2008
+semantics: instantaneous value
+units: count
+samples: all
+
+ i-0 i-1 i-2 i-3 i-4 i-5 i-6 i-7 i-8 i-9 i-10
+13:33:47.240 0 1 2 3 4 ? ? ? ? ? ?
+13:33:50.240 0 1 2 3 4 ? ? ? ? ? ?
+13:33:50.622 0 1 2 3 4 ? ? ? ? ? ?
+13:33:51.622 0 1 2 3 4 5 ? ? ? ? ?
+13:33:52.622 0 1 2 3 4 5 6 ? ? ? ?
+13:33:53.239 0 1 2 3 4 5 6 7 ? ? ?
+13:33:53.622 0 1 2 3 4 5 6 7 ? ? ?
+13:33:54.622 0 1 2 3 4 5 6 7 8 ? ?
+13:33:55.622 0 1 2 3 4 5 6 7 8 9 ?
+13:33:56.240 0 1 2 3 4 5 6 7 8 9 10
+13:33:56.622 0 1 2 3 4 5 6 7 8 9 10
+13:33:57.622 0 1 2 3 4 5 6 7 8 9 10
+13:33:58.622 0 1 2 3 4 5 6 7 8 9 10
+13:33:59.246 0 1 2 3 4 5 6 7 8 9 10
+13:33:59.622 0 1 2 3 4 5 6 7 8 9 10
+13:33:59.623 Archive logging suspended
+
+ i-0 i-1 i-2 i-3 i-4 i-5 i-6 i-7 i-8 i-9 i-10
+13:34:02.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:05.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:08.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:11.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:14.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:17.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:20.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:23.239 0 1 2 3 4 5 6 7 8 9 10
+13:34:26.240 0 1 2 3 4 5 6 7 8 9 10
+13:34:29.240 0 1 2 3 4 5 6 7 8 9 10
+
+pmval: pmFetchArchive: End of PCP archive log
diff --git a/qa/338 b/qa/338
new file mode 100755
index 0000000..14b73bf
--- /dev/null
+++ b/qa/338
@@ -0,0 +1,157 @@
+#! /bin/sh
+# PCP QA Test No. 338
+# pmlogger_daily ... do you work at all?
+#
+# NEW VERSION for YYYYDDMM style naming convention (see also 530)
+#
+# NOTE - THIS TEST WILL FAIL IF RUN IN THE FIRST 5 MINUTES AFTER
+# MIDNIGHT - c'est la vie, I'm afraid.
+#
+# Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ tee -a $seq.full \
+ | $PCP_AWK_PROG '
+/^Archive files older than/ { eatlines=1; longone=" "; print; next; }
+eatlines { if ( match ($0, "^ ") ) {
+ for ( i=1; i <=NF; i++ ) {
+ longone = sprintf ("%s %s",longone,$i);
+ }
+ } else {
+ print longone | "fmt -76";
+ close ("fmt -76");
+ longone = ""; eatlines = 0;
+ print;
+ }
+ next;
+ }
+END { if ( eatlines ) {
+ print longone | "fmt -76";
+ close ("fmt -76");
+ }
+ }
+ { print }' \
+ | sed -f $tmp/sed \
+ | sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/`hostname`/HOST/g" \
+ -e "s/localhost/HOST/g" \
+ -e "s/local:/HOST/g" \
+ -e "s/`hostname | sed -e 's/\..*//'`/HOST/g" \
+ -e '/\/var\/adm\/pcplog\/NOTICES/d' \
+ -e 's/-rw-r--r--\./-rw-r--r--/' \
+ | $PCP_AWK_PROG '
+/-rw-r--r--/ { print $1,"...",$5,"...",$9; next }
+ { print }' \
+ | _filter_cron_scripts
+}
+
+status=1 # failure is the default!
+trap "cd $here; $sudo rm -rf $tmp; $sudo mv $PCP_LOG_DIR/NOTICES.$$ $PCP_LOG_DIR/NOTICES; exit \$status" 0 1 2 3 15
+$sudo rm -rf $tmp
+
+# real QA test starts here
+
+# take explicit control of the umask
+#
+umask 022
+
+$sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.$$
+rm -f $seq.full
+mkdir $tmp
+
+# real QA test starts here
+unset verbose
+for loop in 1 2
+do
+ echo >$tmp/sed
+ for day in 0 1 2 3 4 5
+ do
+ fmt=%Y%m%d
+ # aiming for the time to be 00:02 and 00:04 on each day,
+ # even if that is ahead of NOW for today
+ #
+ now_hr=`pmdate %H`
+ hour=-$now_hr
+ now_min=`pmdate %M`
+ min2=`expr 2 - $now_min`
+ [ "$min2" -ge 0 ] && min2="+$min2"
+ min4=`expr 4 - $now_min`
+ [ "$min4" -ge 0 ] && min4="+$min4"
+ namea=`pmdate -${day}d ${hour}H ${min2}M $fmt.%H.%M`
+ nameb=`pmdate -${day}d ${hour}H ${min4}M $fmt.%H.%M`
+ yesterday=`pmdate -1d ${hour}H ${min2}M $fmt`
+ stampa=`echo $namea | sed -e 's/\.//g'`
+ stampb=`echo $nameb | sed -e 's/\.//g'`
+ echo "s/$namea/NOW-$day.00.02/g" >>$tmp/sed
+ echo "s/$nameb/NOW-$day.00.04/g" >>$tmp/sed
+
+ for ext in 0 index meta
+ do
+ cp src/arch_a.$ext $tmp/$namea.$ext
+ touch -t $stampa $tmp/$namea.$ext
+ cp src/arch_b.$ext $tmp/$nameb.$ext
+ touch -t $stampb $tmp/$nameb.$ext
+ done
+ done
+ echo "s/NOW-0/TODAY/g" >>$tmp/sed
+ echo "s/NOW-1/YESTERDAY/g" >>$tmp/sed
+ echo "s/`pmdate %Y%m%d`/TODAY/g" >>$tmp/sed
+ echo "s/$yesterday/YESTERDAY/g" >>$tmp/sed
+
+ echo >$tmp/control '$version=1.1
+LOCALHOSTNAME n n '"$tmp"' ./config'
+
+ cat $tmp/sed >>$seq.full
+ echo >>$seq.full
+
+ echo
+ echo "=== [${verbose+verbose}] regular show ==="
+ echo "=== [${verbose+verbose}] regular show ===" >>$seq.full
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -o -c $tmp/control -k 3 $verbose 2>&1 \
+ | _filter
+ ls -lt $tmp >>$seq.full
+ ls $tmp | sed -f $tmp/sed | tee -a $seq.full | LC_COLLATE=POSIX sort
+
+ echo
+ echo "=== [${verbose+verbose}] nothing to do but cull some more ==="
+ echo "=== [${verbose+verbose}] nothing to do but cull some more ===" >>$seq.full
+ for ext in 0 index meta
+ do
+ mv $tmp/$yesterday.$ext $tmp/save.$ext
+ done
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -o -c $tmp/control -k 2 $verbose 2>&1 \
+ | _filter
+ ls -lt $tmp >>$seq.full
+ ls $tmp | sed -f $tmp/sed | tee -a $seq.full | LC_COLLATE=POSIX sort
+
+ echo
+ echo "=== [${verbose+verbose}] error, output already exists ==="
+ echo "=== [${verbose+verbose}] error, output already exists ===" >>$seq.full
+ for ext in 0 index meta
+ do
+ cp src/arch_a.$ext $tmp/$yesterday.17.18.$ext
+ mv $tmp/save.$ext $tmp/$yesterday.$ext
+ done
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -o -c $tmp/control -k 2 $verbose 2>&1 \
+ | _filter
+ ls -lt $tmp >>$seq.full
+ ls $tmp | sed -f $tmp/sed | tee -a $seq.full | LC_COLLATE=POSIX sort
+
+ verbose=-V
+ rm -f $tmp/*
+done
+
+# all done
+status=0
+exit
diff --git a/qa/338.out b/qa/338.out
new file mode 100644
index 0000000..dbb32e8
--- /dev/null
+++ b/qa/338.out
@@ -0,0 +1,178 @@
+QA output created by 338
+
+=== [] regular show ===
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+NOW-3.00.02.0
+NOW-3.00.02.index
+NOW-3.00.02.meta
+NOW-3.00.04.0
+NOW-3.00.04.index
+NOW-3.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
+
+=== [] nothing to do but cull some more ===
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+control
+save.0
+save.index
+save.meta
+sed
+
+=== [] error, output already exists ===
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+PMLOGGER.DAILY: Warning: output archive (YESTERDAY) already exists
+[TMP/control:2] ... skip log merging, culling and compressing for host "HOST"
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.17.18.0
+YESTERDAY.17.18.index
+YESTERDAY.17.18.meta
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
+
+=== [verbose] regular show ===
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+Input archives to be merged:
+ YESTERDAY.00.02
+ YESTERDAY.00.04
+Output archive files:
+-rw-r--r-- ... 455 ... YESTERDAY.meta
+-rw-r--r-- ... 192 ... YESTERDAY.index
+-rw-r--r-- ... 864 ... YESTERDAY.0
+Removing input archive files ... done
+Archive files older than 3 days being removed ...
+ NOW-5.00.02.0 NOW-5.00.02.index NOW-5.00.02.meta
+ NOW-5.00.04.0 NOW-5.00.04.index NOW-5.00.04.meta
+ NOW-4.00.02.0 NOW-4.00.02.index NOW-4.00.02.meta
+ NOW-4.00.04.0 NOW-4.00.04.index NOW-4.00.04.meta
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+NOW-3.00.02.0
+NOW-3.00.02.index
+NOW-3.00.02.meta
+NOW-3.00.04.0
+NOW-3.00.04.index
+NOW-3.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
+
+=== [verbose] nothing to do but cull some more ===
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+PMLOGGER.DAILY: Warning: no archives found to merge
+Archive files older than 2 days being removed ...
+ NOW-3.00.02.0 NOW-3.00.02.index NOW-3.00.02.meta
+ NOW-3.00.04.0 NOW-3.00.04.index NOW-3.00.04.meta
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+control
+save.0
+save.index
+save.meta
+sed
+
+=== [verbose] error, output already exists ===
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+PMLOGGER.DAILY: Warning: output archive (YESTERDAY) already exists
+[TMP/control:2] ... skip log merging, culling and compressing for host "HOST"
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.17.18.0
+YESTERDAY.17.18.index
+YESTERDAY.17.18.meta
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
diff --git a/qa/339 b/qa/339
new file mode 100755
index 0000000..9538943
--- /dev/null
+++ b/qa/339
@@ -0,0 +1,49 @@
+#! /bin/sh
+# PCP QA Test No. 339
+# pmie failure to deal with aggregate operators bound to %v expressions
+#
+# Copyright (c) 2009 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmie_log \
+ | sed \
+ -e 's/v=[0-9][0-9.]*/v=NUMBER/' \
+ | LC_COLLATE=POSIX sort -u
+}
+
+# real QA test starts here
+cat <<'End-of-File' | pmie -t 1sec -T 4sec >$tmp.out 2>&1
+test1 = (kernel.all.load #'1 minute') < sum_inst(kernel.all.load)
+-> print "TEST1: Left-most single value: v=%v";
+test2 = sum_inst(kernel.all.load) >= (kernel.all.load #'1 minute')
+-> print "TEST2: Left-most sum_inst: v=%v";
+test3 = max_inst(kernel.all.load) >= kernel.all.load #'1 minute'
+-> print "TEST3: Left-most max_inst: v=%v";
+test4 = min_inst(kernel.all.load) <= (kernel.all.load #'1 minute')
+-> print "TEST4: Left-most min_inst: v=%v";
+test5 = avg_inst(kernel.all.load) >= 0
+-> print "TEST5: Left-most avg_inst: v=%v";
+test6 = max_sample(kernel.all.load #'1 minute' @0..1) >= kernel.all.load #'1 minute'
+-> print "TEST6: Left-most max_sample: v=%v";
+test7 = min_sample(kernel.all.load #'1 minute' @0..1) <= (kernel.all.load #'1 minute')
+-> print "TEST7: Left-most min_sample: v=%v";
+End-of-File
+
+_filter <$tmp.out
+
+# success, all done
+exit
diff --git a/qa/339.out b/qa/339.out
new file mode 100644
index 0000000..282f271
--- /dev/null
+++ b/qa/339.out
@@ -0,0 +1,9 @@
+QA output created by 339
+DATE: TEST1: Left-most single value: v=NUMBER
+DATE: TEST2: Left-most sum_inst: v=NUMBER
+DATE: TEST3: Left-most max_inst: v=NUMBER
+DATE: TEST4: Left-most min_inst: v=NUMBER
+DATE: TEST5: Left-most avg_inst: v=NUMBER
+DATE: TEST6: Left-most max_sample: v=NUMBER
+DATE: TEST7: Left-most min_sample: v=NUMBER
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
diff --git a/qa/340 b/qa/340
new file mode 100755
index 0000000..4c3501e
--- /dev/null
+++ b/qa/340
@@ -0,0 +1,270 @@
+#! /bin/sh
+# PCP QA Test No. 340
+# PMCD denies all access?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.filter
+. ./common.product
+. ./common.check
+
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+test $? -eq 0 || _notrun "PCP::PMDA perl module is not installed"
+
+status=1 # failure is the default!
+
+[ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+
+_filter_pminfo()
+{
+ sed \
+ -e 's/Connection reset by peer/No permission to perform requested operation/'
+}
+
+# real QA test starts here
+
+config=$PCP_PMCDCONF_PATH
+oconfig=$tmp.oconfig
+me=`_get_fqdn`
+_needclean=true
+
+cleanup()
+{
+ if $_needclean
+ then
+ _needclean=false
+ [ -f $oconfig ] && $sudo cp $oconfig $config
+ _change_config pmlogger on
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ fi
+
+ if $_chkconfig_pmlogger_on
+ then
+ [ -f $tmp.control ] && \
+ $sudo cp $tmp.control $PCP_PMLOGGERCONTROL_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ _chkconfig_pmlogger_on=false
+ fi
+
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+# real QA test starts here
+dov1hosts=true
+
+# disable all pmloggers ...
+_chkconfig_pmlogger_on=true
+$sudo cp $PCP_PMLOGGERCONTROL_PATH $tmp.control
+cat <<End-of-File >$tmp.tmp
+# dummy file created by qa/$seq on `date`
+# the goal here is to have a controlled primary logger that does
+# not make requests to pmcd!
+\$version=1.1
+LOCALHOSTNAME y n $PCP_LOG_DIR/pmlogger/LOCALHOSTNAME -c /dev/null
+End-of-File
+$sudo cp $tmp.tmp $PCP_PMLOGGERCONTROL_PATH
+#_change_config pmlogger off
+
+$sudo cp $config $oconfig
+
+other1=bogus
+other2=bogus
+
+other1=`./getpmcdhosts -n 1 -L -v 'pcp=1' 2>$tmp.err`
+if [ -z "$other1" ]
+then
+ echo "[test configuration only for v2 hosts]"
+ dov1hosts=false
+ rm -f $seq.out ; ln $seq-v2.out $seq.out
+else
+ rm -f $seq.out ; ln $seq-v1v2.out $seq.out
+fi
+
+other2=`./getpmcdhosts -n 1 -L -v 'pcp>=2' 2>$tmp.err`
+if [ -z "$other2" ]
+then
+ # Unable to find remote PCP 2.x host
+ cat $tmp.err >$seq.notrun
+ exit
+fi
+
+echo "other1=$other1" >>$seq.full
+echo "other2=$other2" >>$seq.full
+
+list1=
+if $dov1hosts
+then
+ list1=`_all_hostnames $other1`
+ if [ -z "$list1" ]
+ then
+ echo "Error: failed to expand hostnames for other1=\"$other1\""
+ exit
+ fi
+ echo "V1 list1=$list1" >>$seq.full
+ list2=`_all_hostnames $other2`
+ if [ -z "$list2" ]
+ then
+ echo "Error: failed to expand hostnames for other2=\"$other2\""
+ exit
+ fi
+ echo "V1 list2=$list2" >>$seq.full
+
+ cat >$tmp.access <<End-Of-File
+
+[access]
+disallow $list1 : all;
+disallow $list2 : all;
+allow * : all;
+End-Of-File
+else
+ list2=`_all_hostnames $other2`
+ if [ -z "$list2" ]
+ then
+ echo "Error: failed to expand hostnames for other2=\"$other2\""
+ exit
+ fi
+ echo "V2 list2=$list2" >>$seq.full
+
+ cat >$tmp.access <<End-Of-File
+
+[access]
+disallow $list2 : all;
+allow * : all;
+End-Of-File
+fi
+sed -e '/\[access]/q' $oconfig \
+| sed -e '/\[access]/d' >$tmp.config
+cat $tmp.access >>$tmp.config
+$sudo cp $tmp.config $config
+
+echo >>$seq.full
+echo "---- start pmcd.conf ----" >>$seq.full
+cat $config >>$seq.full
+echo "---- end pmcd.conf ----" >>$seq.full
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+echo " checking default access for this host ..."
+pminfo -f sample.long.million \
+| _filter_pminfo
+pmstore sample.write_me 111
+
+if $dov1hosts
+then
+ echo
+ echo " checking access for list1 (should fail)"
+ ssh -q pcpqa@$other1 pminfo -h $me -f pmcd.numclients 2>&1 \
+ | sed -e 's/"'$me'"/"HOST"/g'
+fi
+echo
+echo " checking access for list2 (should fail)"
+ssh -q pcpqa@$other2 pminfo -h $me -f pmcd.numclients 2>&1 \
+ | sed -e 's/"'$me'"/"HOST"/g'
+
+echo "pmcd.log:======="
+sed -n <$PCP_PMCDLOG_PATH -e '/endclient/{
+s/\[[0-9]*]/[M]/
+s/(fd [0-9]*)/(fd N)/
+p
+}'
+echo "================"
+
+iplist1=
+if $dov1hosts
+then
+ iplist1=`_all_ipaddrs $other1`
+ if [ -z "$iplist1" ]
+ then
+ echo "Error: failed to expand ip addrs for other1=\"$other1\""
+ exit
+ fi
+ echo "V1 iplist1=$iplist1" >>$seq.full
+ iplist2=`_all_ipaddrs $other2`
+ if [ -z "$iplist2" ]
+ then
+ echo "Error: failed to expand ip addrs for other2=\"$other2\""
+ exit
+ fi
+ echo "V1 iplist2=$iplist2" >>$seq.full
+
+ cat >$tmp.access <<End-Of-File
+
+[access]
+disallow $iplist1 : all;
+disallow $iplist2 : all;
+allow * : all;
+End-Of-File
+else
+ iplist2=`_all_ipaddrs $other2`
+ if [ -z "$iplist2" ]
+ then
+ echo "Error: failed to expand ip addrs for other2=\"$other2\""
+ exit
+ fi
+ echo "V2 iplist2=$iplist2" >>$seq.full
+
+ cat >$tmp.access <<End-Of-File
+
+[access]
+disallow $iplist2 : all;
+allow * : all;
+End-Of-File
+fi
+
+sed -e '/\[access]/q' $oconfig \
+| sed -e '/\[access]/d' >$tmp.config
+cat $tmp.access >>$tmp.config
+$sudo cp $tmp.config $config
+
+echo >>$seq.full
+echo "---- start pmcd.conf ----" >>$seq.full
+cat $config >>$seq.full
+echo "---- end pmcd.conf ----" >>$seq.full
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+echo " checking default access for this host ..."
+pminfo -f sample.long.million
+pmstore sample.write_me 444
+
+if $dov1hosts
+then
+ echo
+ echo " checking access for iplist1 (should fail)"
+ ssh -q pcpqa@$other1 pminfo -h $me -f pmcd.numclients 2>&1 \
+ | sed -e 's/"'$me'"/"HOST"/g'
+fi
+
+echo
+echo " checking access for iplist2 (should fail)"
+ssh -q pcpqa@$other2 pminfo -h $me -f pmcd.numclients 2>&1 \
+ | sed -e 's/"'$me'"/"HOST"/g'
+
+echo "pmcd.log:======="
+sed -n <$PCP_PMCDLOG_PATH -e '/endclient/{
+s/\[[0-9]*]/[M]/
+s/(fd [0-9]*)/(fd N)/
+p
+}'
+echo "================"
+
+# success, all done
+status=0
+exit
diff --git a/qa/340-v1v2.out b/qa/340-v1v2.out
new file mode 100644
index 0000000..9dcb07d
--- /dev/null
+++ b/qa/340-v1v2.out
@@ -0,0 +1,10 @@
+[no test results provided yet...]
+
+Please do the following:
+
+ % rm 340.out
+ % remake 340
+ % mv 340.out 340-v1v2.out
+ % p_fetal 340-v1v2.out
+ % p_finalize 340-v1v2.out
+
diff --git a/qa/340-v2.out b/qa/340-v2.out
new file mode 100644
index 0000000..3f1d1bb
--- /dev/null
+++ b/qa/340-v2.out
@@ -0,0 +1,36 @@
+QA output created by 340
+[test configuration only for v2 hosts]
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+ checking default access for this host ...
+
+sample.long.million
+ value 1000000
+sample.write_me old value=2 new value=111
+
+ checking access for list2 (should fail)
+pminfo: Cannot connect to PMCD on host "HOST": No permission to perform requested operation
+pmcd.log:=======
+endclient client[M]: (fd N) No permission to perform requested operation (-12387)
+================
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+ checking default access for this host ...
+
+sample.long.million
+ value 1000000
+sample.write_me old value=2 new value=444
+
+ checking access for iplist2 (should fail)
+pminfo: Cannot connect to PMCD on host "HOST": No permission to perform requested operation
+pmcd.log:=======
+endclient client[M]: (fd N) No permission to perform requested operation (-12387)
+================
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/341 b/qa/341
new file mode 100755
index 0000000..b06c692
--- /dev/null
+++ b/qa/341
@@ -0,0 +1,59 @@
+#!/bin/sh
+# PCP QA Test No. 341
+#
+# exercise corner cases for pmdaCacheOp(...LOAD...)
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# [Tue Jan 26 09:10:16] pmdacache(22270) Warning: pmdaCacheOp: /var/lib/pcp/config/pmda/0.123: loading instance 0 ("eek") ignored, already in cache as 0 ("urk")
+_filter()
+{
+ sed \
+ -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATE]/' \
+ -e 's/cache([0-9][0-9]*)/cache(PID)/' \
+ -e 's/ 0x0 / (nil) /g' \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;"
+}
+
+# note - need to do everything as sudo because $PCP_VAR_DIR/config/pmda
+# is not world writeable
+#
+
+$sudo rm -f $PCP_VAR_DIR/config/pmda/0.123
+
+# real QA test starts here
+
+echo "load without save, store a couple and save ..." | tee -a $seq.full
+$sudo src/pmdacache -D indom -L -s eek -s urk -S 2>&1 | _filter
+$sudo cat $PCP_VAR_DIR/config/pmda/0.123 >>$seq.full
+
+echo
+echo "store one, load, store another couple and save ..." | tee -a $seq.full
+$sudo src/pmdacache -D indom -s eek -L -s urk -s foo -S -d 2>&1 | _filter
+$sudo cat $PCP_VAR_DIR/config/pmda/0.123 >>$seq.full
+
+echo
+echo "store some, hide some, load ..." | tee -a $seq.full
+$sudo src/pmdacache -D indom -s eek -s urk -s foo -s 'fumble mumble' -h eek -h foo -s bar -L -d 2>&1 | _filter
+$sudo cat $PCP_VAR_DIR/config/pmda/0.123 >>$seq.full
+
+echo
+echo "error case ..." | tee -a $seq.full
+$sudo src/pmdacache -D indom -s 'urk a bit tricky' -s foo -L -d 2>&1 | _filter
+$sudo cat $PCP_VAR_DIR/config/pmda/0.123 >>$seq.full
+
+# success, all done
+exit
diff --git a/qa/341.out b/qa/341.out
new file mode 100644
index 0000000..eb1952b
--- /dev/null
+++ b/qa/341.out
@@ -0,0 +1,173 @@
+QA output created by 341
+load without save, store a couple and save ...
+load() -> -2 No such file or directory
+store(eek) -> 0
+store(urk) -> 1
+After cache_save hstate={DIRTY_INSTANCE}
+pmdaCacheDump: indom 0.123: nentry=2 ins_mode=0 hstate=0 hsize=16
+ 0 active (nil) eek
+ 1 active (nil) urk
+save() -> 2
+
+store one, load, store another couple and save ...
+store(eek) -> 0
+After PMDA_CACHE_LOAD
+pmdaCacheDump: indom 0.123: nentry=2 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) eek
+ 1 inactive (nil) urk
+load() -> 2
+store(urk) -> 1
+store(foo) -> 2
+After cache_save hstate={DIRTY_INSTANCE}
+pmdaCacheDump: indom 0.123: nentry=3 ins_mode=0 hstate=0 hsize=16
+ 0 active (nil) eek
+ 1 active (nil) urk
+ 2 active (nil) foo
+save() -> 3
+pmdaCacheDump: indom 0.123: nentry=3 ins_mode=0 hstate=0 hsize=16
+ 0 active (nil) eek
+ 1 active (nil) urk
+ 2 active (nil) foo
+inst hash
+ [000] -> 0
+ [001] -> 1
+ [002] -> 2
+ [003]
+ [004]
+ [005]
+ [006]
+ [007]
+ [008]
+ [009]
+ [010]
+ [011]
+ [012]
+ [013]
+ [014]
+ [015]
+name hash
+ [000]
+ [001]
+ [002]
+ [003]
+ [004]
+ [005]
+ [006] -> 2
+ [007] -> 1
+ [008] -> 0
+ [009]
+ [010]
+ [011]
+ [012]
+ [013]
+ [014]
+ [015]
+
+store some, hide some, load ...
+store(eek) -> 0
+store(urk) -> 1
+store(foo) -> 2
+store(fumble mumble) -> 3
+hide(eek) -> 0
+hide(foo) -> 2
+store(bar) -> 4
+After PMDA_CACHE_LOAD
+pmdaCacheDump: indom 0.123: nentry=5 ins_mode=0 hstate=3 hsize=16
+ 0 inactive (nil) eek
+ 1 active (nil) urk
+ 2 inactive (nil) foo
+ 3 active (nil) fumble mumble [match len=6]
+ 4 active (nil) bar
+load() -> 3
+pmdaCacheDump: indom 0.123: nentry=5 ins_mode=0 hstate=3 hsize=16
+ 0 inactive (nil) eek
+ 1 active (nil) urk
+ 2 inactive (nil) foo
+ 3 active (nil) fumble mumble [match len=6]
+ 4 active (nil) bar
+inst hash
+ [000] -> 0I
+ [001] -> 1
+ [002] -> 2I
+ [003] -> 3
+ [004] -> 4
+ [005]
+ [006]
+ [007]
+ [008]
+ [009]
+ [010]
+ [011]
+ [012]
+ [013]
+ [014]
+ [015]
+name hash
+ [000]
+ [001]
+ [002]
+ [003]
+ [004]
+ [005] -> 3
+ [006] -> 2I
+ [007] -> 1
+ [008] -> 0I
+ [009]
+ [010]
+ [011] -> 4
+ [012]
+ [013]
+ [014]
+ [015]
+
+error case ...
+store(urk a bit tricky) -> 0
+store(foo) -> 1
+pmdaCache: store: indom 0.123: instance 0 in cache, name "urk a bit tricky" does not match new entry "eek"
+[DATE] pmdacache(PID) Warning: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/0.123: loading instance 0 ("eek") ignored, already in cache as 0 ("urk a bit tricky")
+pmdaCache: store: indom 0.123: instance 1 in cache, name "foo" does not match new entry "urk"
+[DATE] pmdacache(PID) Warning: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/0.123: loading instance 1 ("urk") ignored, already in cache as 1 ("foo")
+pmdaCacheStoreKey: indom 0.123: instance "foo" in cache, id 1 does not match new entry 2
+[DATE] pmdacache(PID) Warning: pmdaCacheOp: $PCP_VAR_DIR/config/pmda/0.123: loading instance 2 ("foo") ignored, already in cache as 1 ("foo")
+After PMDA_CACHE_LOAD
+pmdaCacheDump: indom 0.123: nentry=2 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) urk a bit tricky [match len=3]
+ 1 active (nil) foo
+load() -> 3
+pmdaCacheDump: indom 0.123: nentry=2 ins_mode=0 hstate=3 hsize=16
+ 0 active (nil) urk a bit tricky [match len=3]
+ 1 active (nil) foo
+inst hash
+ [000] -> 0
+ [001] -> 1
+ [002]
+ [003]
+ [004]
+ [005]
+ [006]
+ [007]
+ [008]
+ [009]
+ [010]
+ [011]
+ [012]
+ [013]
+ [014]
+ [015]
+name hash
+ [000]
+ [001]
+ [002]
+ [003]
+ [004]
+ [005]
+ [006] -> 1
+ [007] -> 0
+ [008]
+ [009]
+ [010]
+ [011]
+ [012]
+ [013]
+ [014]
+ [015]
diff --git a/qa/342 b/qa/342
new file mode 100755
index 0000000..4a9c8b7
--- /dev/null
+++ b/qa/342
@@ -0,0 +1,59 @@
+#!/bin/sh
+# PCP QA Test No. 342
+# dbpmda with new open socket command
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+username=`id -u -n`
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_await_file()
+{
+ file=$1
+ done=0
+
+ for t in 0.01 0.02 0.05 0.1 0.5 1 2
+ do
+ pmsleep $t
+ [ -e "$file" ] && return
+ done
+ echo "Giving up waiting for file $file to appear"
+ exit 1
+}
+
+_filter()
+{
+ _filter_dumpresult \
+ | sed -e "s;$tmp.socket;MYSOCKET;"
+}
+
+pmdaargs="-d 29 -l $tmp.log -u $tmp.socket"
+id pcp >/dev/null 2>&1 && pmdaargs="$pmdaargs -U $username"
+
+# real QA test starts here
+$PCP_PMDAS_DIR/sample/pmdasample $pmdaargs &
+_await_file $tmp.socket
+
+cat <<End-of-File | dbpmda -ie 2>&1 | _filter
+open socket $tmp.socket
+getdesc on
+fetch sample.colour
+desc sample.colour
+profile 29.1 none
+profile 29.1 add 2
+fetch sample.colour
+End-of-File
+
+# success, all done
+exit
diff --git a/qa/342.out b/qa/342.out
new file mode 100644
index 0000000..31a2a30
--- /dev/null
+++ b/qa/342.out
@@ -0,0 +1,23 @@
+QA output created by 342
+dbpmda> open socket MYSOCKET
+Connect to PMDA on socket MYSOCKET
+dbpmda> getdesc on
+dbpmda> fetch sample.colour
+PMID(s): 29.0.5
+pmResult ... numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> desc sample.colour
+PMID: 29.0.5
+ Data Type: 32-bit int InDom: 29.1 0x7400001
+ Semantics: instant Units: none
+dbpmda> profile 29.1 none
+dbpmda> profile 29.1 add 2
+dbpmda> fetch sample.colour
+PMID(s): 29.0.5
+pmResult ... numpmid: 1
+ 29.0.5 (sample.colour): numval: 1 valfmt: 0 vlist[]:
+ inst [2 or ???] value NUMBER
+dbpmda>
diff --git a/qa/343 b/qa/343
new file mode 100755
index 0000000..d9a28ce
--- /dev/null
+++ b/qa/343
@@ -0,0 +1,72 @@
+#!/bin/sh
+# PCP QA Test No. 343
+#
+# pmlogreduce command line arguments
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogreduce >/dev/null 2>&1 || _notrun "No pmlogreduce binary installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# indom 129.0 -> (0x9461d70)
+_filter()
+{
+ sed -e '/indom .* ->/s/0x[0-9a-f][0-9a-f]*/ADDR/'
+}
+
+# real QA test starts here
+
+# pmdumplog -z -L src/conn20070309.0 reports ...
+#
+# commencing Fri Mar 9 00:10:47.856 2007
+# ending Sat Mar 10 00:10:17.859 2007
+#
+
+echo "=============================================="
+echo "-S +8h -T +3h -t 20min ... expect 10 results"
+echo "=============================================="
+$sudo rm -f $tmp.*
+pmlogreduce -D appl0 -z -S +8h -T+3h -t 20min src/conn20070309.0 $tmp 2>&1 \
+| _filter
+pmdumplog -z $tmp
+
+echo
+echo "=============================================="
+echo "-A 15m -S +8h -T +2h -t 15min ... expect 9 results"
+echo "=============================================="
+$sudo rm -f $tmp.*
+pmlogreduce -D appl0 -z -A 15m -S +8h -T+2h -t 15min src/conn20070309.0 $tmp 2>&1 \
+| _filter
+pmdumplog -z $tmp
+
+echo
+echo "=============================================="
+echo "-Z UTC -S @16:00:00 -T +2h -t 15min ... expect 9 results"
+echo "=============================================="
+$sudo rm -f $tmp.*
+pmlogreduce -D appl0 -Z UTC -S @16:00:00 -T+2h -t 15min src/conn20070309.0 $tmp 2>&1 \
+| _filter
+pmdumplog -Z GMT $tmp
+
+echo
+echo "=============================================="
+echo "-s 6 ... expect 6 results"
+echo "=============================================="
+$sudo rm -f $tmp.*
+pmlogreduce -s 6 src/conn20070309.0 $tmp
+pmdumplog -z $tmp
+
+# success, all done
+exit
diff --git a/qa/343.out b/qa/343.out
new file mode 100644
index 0000000..f762f12
--- /dev/null
+++ b/qa/343.out
@@ -0,0 +1,131 @@
+QA output created by 343
+==============================================
+-S +8h -T +3h -t 20min ... expect 10 results
+==============================================
+Start time: Fri Mar 9 08:10:47 2007
+End time: Fri Mar 9 11:10:47 2007
+metric: "aconex.connections.inuse" (129.0.12)
+input descriptor:
+ Data Type: 64-bit int InDom: 129.0 0x20400000
+ Semantics: instant Units: count
+output descriptor (added to archive):
+ Data Type: 64-bit int InDom: 129.0 0x20400000
+ Semantics: instant Units: count
+ indom 129.0 -> (ADDR)
+Add metadata: indom 129.0 for metric 129.0.12
+Note: timezone set to local timezone of host "app1" from archive
+
+Note: timezone set to local timezone of host "app1" from archive
+
+
+08:10:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+08:30:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 3
+
+08:50:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 4
+
+09:10:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 1
+
+09:30:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 3
+
+09:50:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 1
+
+10:10:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 6
+
+10:30:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 3
+
+10:50:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 4
+
+11:10:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 7
+
+==============================================
+-A 15m -S +8h -T +2h -t 15min ... expect 9 results
+==============================================
+Start time: Fri Mar 9 08:15:00 2007
+End time: Fri Mar 9 10:15:00 2007
+metric: "aconex.connections.inuse" (129.0.12)
+input descriptor:
+ Data Type: 64-bit int InDom: 129.0 0x20400000
+ Semantics: instant Units: count
+output descriptor (added to archive):
+ Data Type: 64-bit int InDom: 129.0 0x20400000
+ Semantics: instant Units: count
+ indom 129.0 -> (ADDR)
+Add metadata: indom 129.0 for metric 129.0.12
+Note: timezone set to local timezone of host "app1" from archive
+
+Note: timezone set to local timezone of host "app1" from archive
+
+
+08:15:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 1
+
+08:30:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 2
+
+08:45:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 1
+
+09:00:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 7
+
+09:15:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 3
+
+09:30:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 2
+
+09:45:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 7
+
+10:00:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 6
+
+10:15:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 3
+
+==============================================
+-Z UTC -S @16:00:00 -T +2h -t 15min ... expect 9 results
+==============================================
+Start time: Thu Mar 8 16:00:00 2007
+End time: Thu Mar 8 18:00:00 2007
+metric: "aconex.connections.inuse" (129.0.12)
+input descriptor:
+ Data Type: 64-bit int InDom: 129.0 0x20400000
+ Semantics: instant Units: count
+output descriptor (added to archive):
+ Data Type: 64-bit int InDom: 129.0 0x20400000
+ Semantics: instant Units: count
+ indom 129.0 -> (ADDR)
+Add metadata: indom 129.0 for metric 129.0.12
+Note: timezone set to "TZ=UTC"
+
+Note: timezone set to "TZ=GMT"
+
+
+16:00:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+16:15:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+16:30:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+16:45:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+17:00:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+17:15:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+17:30:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+17:45:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+18:00:00.000 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+==============================================
+-s 6 ... expect 6 results
+==============================================
+Note: timezone set to local timezone of host "app1" from archive
+
+
+00:10:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
+
+00:20:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 1
+
+00:30:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 2
+
+00:40:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 1
+
+00:50:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 1
+
+01:00:47.856 129.0.12 (aconex.connections.inuse): inst [0 or "mel"] value 0
diff --git a/qa/344 b/qa/344
new file mode 100755
index 0000000..78ea04a
--- /dev/null
+++ b/qa/344
@@ -0,0 +1,151 @@
+#!/bin/sh
+# PCP QA Test No. 344
+#
+# exercise __pmLocalPMDA functionality
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+host=`hostname`
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.pmns
+root {
+ qa
+ sample
+ tmpsample
+}
+
+qa {
+ pid 400:0:1
+ colour 400:0:5
+ bin 400:0:6
+ string
+}
+
+qa.string {
+ write_me 400:0:29
+}
+
+sample {
+ colour 30:0:5
+ bin 30:0:6
+ string
+}
+
+sample.string {
+ write_me 30:0:29
+}
+
+tmpsample {
+ colour 130:0:5
+ bin 130:0:6
+ string
+}
+
+tmpsample.string {
+ write_me 130:0:29
+}
+End-of-File
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed \
+ -e "/^pmWhichContext/d" \
+ -e "/^pmNewContext/d" \
+ -e "/^Dump /d" \
+ -e "/^Context\[/d" \
+ -e "/^Local Context PMDA Table/d" \
+ -e "s;$tmp;TMP;g" \
+ -e "s/host: @/host: HOST/g" \
+ -e "s/host: $host/host: HOST/g" \
+ -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;" \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;" \
+ -e "s/\.$DSO_SUFFIX/.\$DSO_SUFFIX/g" \
+ -e '/^0*x*[0-9a-f][0-9a-f]* /d' \
+ -e '/^\[[0-9][0-9]*]/d' \
+ -e '/^__pmLocalPMDA(/d'
+}
+
+# -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+# -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;g" \
+
+# real QA test starts here
+pminfo -fL -n $tmp.pmns -K clear -K add,400,$PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX,sample_init qa.colour
+
+echo
+pminfo -fL -n $tmp.pmns -K clear -K add,400,$PCP_VAR_DIR/pmdas/sample/pmda_sample,sample_init qa.pid >$tmp.out &
+expect=$!
+wait
+got=`sed -n -e '/value/s/.*value //p' $tmp.out`
+if [ "$got" != "$expect" ]
+then
+ echo "Error: expecting pid $expect, got $got from"
+ cat $tmp.out
+else
+ echo "PID check passes"
+fi
+
+echo
+echo "=== expect no sample metrics ==="
+pminfo -fmL -n $tmp.pmns -K clear -K add,400,sample/pmda_sample.$DSO_SUFFIX,sample_init qa.colour sample.colour
+
+echo
+echo "=== sample metrics this time ==="
+# need to copy DSO so running sample_init() only once per DSO
+cp $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX $tmp.$DSO_SUFFIX
+export PMDA_LOCAL_SAMPLE=yes
+$sudo pminfo -fmL -n $tmp.pmns -K add,400,$tmp.$DSO_SUFFIX,sample_init qa.colour sample.colour
+
+echo
+echo "=== -K spec parsing in pminfo ==="
+for spec in \
+ clear clear, clear,400 clear,400, clear,400,$tmp.$DSO_SUFFIX clear,400,$tmp.$DSO_SUFFIX, \
+ clear,400,$tmp.$DSO_SUFFIX,sample_init clear,,$tmp.$DSO_SUFFIX,sample_init clear,,,sample_init \
+ clear,,$tmp.$DSO_SUFFIX,sample_init clear,400,,sample_init \
+ add add, add,400 add,400, add,400,$tmp.$DSO_SUFFIX add,400,$tmp.$DSO_SUFFIX, \
+ add,400,$tmp.$DSO_SUFFIX,sample_init \
+ del del, del,30 del,30, del,,sample/pmda_sample.$DSO_SUFFIX \
+ del,30,sample/pmda_sample.$DSO_SUFFIX, \
+ del,30,sample/pmda_sample.$DSO_SUFFIX,sample_init \
+ del,, del,,, del,,,sample_init
+do
+ echo "+++ -K $spec +++" | _filter
+ $sudo pminfo -Dcontext -fmL -n $tmp.pmns -K $spec \
+ sample.string.write_me qa.string.write_me 2>&1 \
+ | _filter
+done
+
+echo
+echo "=== some __pmLocalPMDA() exercises ==="
+pminfo -Dcontext -fmL -n $tmp.pmns -K clear \
+ -K add,30,$PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX,sample_init \
+ -K add,400,$tmp.$DSO_SUFFIX,sample_init \
+ -K del,30,0,0 \
+ -K clear \
+ -K add,30,$PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX,sample_init \
+ -K del,0,$PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX,0 \
+ -K add,130,$PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX,sample_init \
+ -K add,400,$tmp.$DSO_SUFFIX,sample_init \
+ tmpsample.bin 2>&1 \
+| _filter
+
+echo
+echo "=== other tools than know about -K ..."
+pmval -s 3 -t 0.1 -K clear -K add,30,$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX,sample_init '@:sampledso.bin["bin-100","bin-900"]' | _filter
+echo
+pmprobe -K clear -K add,30,$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX,sample_init -I sampledso.bin
+
+# success, all done
+exit
diff --git a/qa/344.out b/qa/344.out
new file mode 100644
index 0000000..f87496b
--- /dev/null
+++ b/qa/344.out
@@ -0,0 +1,884 @@
+QA output created by 344
+
+qa.colour
+ inst [0 or "red"] value 101
+ inst [1 or "green"] value 202
+ inst [2 or "blue"] value 303
+
+PID check passes
+
+=== expect no sample metrics ===
+
+qa.colour PMID: 400.0.5
+ inst [0 or "red"] value 101
+ inst [1 or "green"] value 202
+ inst [2 or "blue"] value 303
+sample.colour: pmLookupDesc: No PMCD agent for domain of request
+
+=== sample metrics this time ===
+
+qa.colour PMID: 400.0.5
+ inst [0 or "red"] value 101
+ inst [1 or "green"] value 202
+ inst [2 or "blue"] value 303
+
+sample.colour PMID: 30.0.5
+ inst [0 or "red"] value 101
+ inst [1 or "green"] value 202
+ inst [2 or "blue"] value 303
+
+=== -K spec parsing in pminfo ===
++++ -K clear +++
+sample.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+qa.string.write_me: pmLookupDesc: No PMCD agent for domain of request
++++ -K clear, +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,400 +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,400, +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,400,TMP.$DSO_SUFFIX +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,400,TMP.$DSO_SUFFIX, +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,400,TMP.$DSO_SUFFIX,sample_init +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,,TMP.$DSO_SUFFIX,sample_init +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,,,sample_init +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,,TMP.$DSO_SUFFIX,sample_init +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K clear,400,,sample_init +++
+pminfo: __pmSpecLocalPMDA failed: unexpected text after clear op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K add +++
+pminfo: __pmSpecLocalPMDA failed: expected , after op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K add, +++
+pminfo: __pmSpecLocalPMDA failed: missing domain in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K add,400 +++
+pminfo: __pmSpecLocalPMDA failed: missing dso-path in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K add,400, +++
+pminfo: __pmSpecLocalPMDA failed: missing dso-path in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K add,400,TMP.$DSO_SUFFIX +++
+pminfo: __pmSpecLocalPMDA failed: missing init-routine in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K add,400,TMP.$DSO_SUFFIX, +++
+pminfo: __pmSpecLocalPMDA failed: missing init-routine in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K add,400,TMP.$DSO_SUFFIX,sample_init +++
+build_dsotab: parsing $PCP_PMCDCONF_PATH
+NotifyEndLocalContext: DSO PMDA $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX (30) notified of context 0 close
+NotifyEndLocalContext: DSO PMDA TMP.$DSO_SUFFIX (400) notified of context 0 close
+
+sample.string.write_me PMID: 30.0.29
+ value 13
+
+qa.string.write_me PMID: 400.0.29
+ value 13
++++ -K del +++
+pminfo: __pmSpecLocalPMDA failed: expected , after op in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K del, +++
+pminfo: __pmSpecLocalPMDA failed: missing domain in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K del,30 +++
+build_dsotab: parsing $PCP_PMCDCONF_PATH
+sample.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+qa.string.write_me: pmLookupDesc: No PMCD agent for domain of request
++++ -K del,30, +++
+build_dsotab: parsing $PCP_PMCDCONF_PATH
+sample.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+qa.string.write_me: pmLookupDesc: No PMCD agent for domain of request
++++ -K del,,sample/pmda_sample.$DSO_SUFFIX +++
+build_dsotab: parsing $PCP_PMCDCONF_PATH
+__pmLocalPMDA -> Unknown or illegal instance domain identifier
+pminfo: __pmSpecLocalPMDA failed: __pmLocalPMDA: Unknown or illegal instance domain identifier
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K del,30,sample/pmda_sample.$DSO_SUFFIX, +++
+build_dsotab: parsing $PCP_PMCDCONF_PATH
+sample.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+qa.string.write_me: pmLookupDesc: No PMCD agent for domain of request
++++ -K del,30,sample/pmda_sample.$DSO_SUFFIX,sample_init +++
+build_dsotab: parsing $PCP_PMCDCONF_PATH
+sample.string.write_me: pmLookupDesc: No PMCD agent for domain of request
+qa.string.write_me: pmLookupDesc: No PMCD agent for domain of request
++++ -K del,, +++
+pminfo: __pmSpecLocalPMDA failed: missing domain and dso-path in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K del,,, +++
+pminfo: __pmSpecLocalPMDA failed: missing domain and dso-path in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
++++ -K del,,,sample_init +++
+pminfo: __pmSpecLocalPMDA failed: missing domain and dso-path in spec
+Usage: pminfo [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -N FILE, --dupnames=FILE
+ use an alternative PMNS (duplicate names allowed)
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Protocol options:
+ -b N, --batch=N fetch N metrics at a time for -f and -v [20]
+ -d, --desc get and print metric description
+ -f, --fetch fetch and print values for all instances
+ -F, --fetchall fetch and print values for non-enumerable indoms
+ -m, --pmid print PMID
+ -M, --fullpmid print PMID in verbose format
+ -t, --oneline get and display (terse) oneline text
+ -T, --helptext get and display (verbose) help text
+
+Metrics options:
+ -c FILE, --derived=FILE
+ load derived metric definitions from FILE
+ -x, --events unpack and report on any fetched event records
+ -v, --verify verify mode, be quiet and only report errors
+
+=== some __pmLocalPMDA() exercises ===
+NotifyEndLocalContext: DSO PMDA $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX (130) notified of context 0 close
+NotifyEndLocalContext: DSO PMDA TMP.$DSO_SUFFIX (400) notified of context 0 close
+
+tmpsample.bin PMID: 130.0.6
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+=== other tools than know about -K ...
+
+metric: sampledso.bin
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 3
+interval: 0.10 sec
+
+ bin-100 bin-900
+ 100 900
+ 100 900
+ 100 900
+
+sampledso.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
diff --git a/qa/345 b/qa/345
new file mode 100755
index 0000000..da07d3f
--- /dev/null
+++ b/qa/345
@@ -0,0 +1,84 @@
+#!/bin/sh
+# PCP QA Test No. 345
+#
+# PM_CONTEXT_LOCAL and PMNS operations involving derived and dynamic
+# metrics
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+grep 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h >/dev/null ||
+ _notrun "No derived metric support"
+grep __pmLocalPMDA $PCP_DIR/usr/include/pcp/impl.h >/dev/null ||
+ _notrun "No libpcp support for __pmLocalPMDA"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.derive
+sampledso.secret.derived.eek.eight = 2 * sampledso.secret.foo.bar.four
+End-of-File
+
+# with -f need to remove "inst" lines for the metric
+# sampledso.secret.foo.bar.max.redirect as we will never find these
+# aliased pmcd metrics with -L
+# also strip blank lines to reduce "diff noise" later
+#
+_filter()
+{
+ $PCP_AWK_PROG '
+$1 == "sampledso.secret.foo.bar.max.redirect" { print; skip = 1; next }
+NF == 0 { skip = 0; next }
+skip == 1 && $1 == "inst" { next }
+ { print }'
+}
+
+# real QA test starts here
+for metric_args in \
+ "sampledso.secret.foo.bar.grunt.five sampledso.secret.derived.eek.eight sampledso.secret.foo.bar.grunt" \
+ sampledso.secret.foo \
+ sampledso.secret \
+ sampledso
+do
+ for margs in '' -m -f
+ do
+ # -f for all of sampledso will never match ...
+ [ "$metric_args" = sampledso -a -n "$margs" ] && continue
+ for hargs in '' '-h localhost' '-L'
+ do
+ args="$hargs $margs"
+ if [ -z "$hargs" ]
+ then
+ echo | tee -a $seq.full
+ echo "=== $args $metric_args ===" | tee -a $seq.full
+ pminfo -c $tmp.derive $args $metric_args >$tmp.raw
+ cat $tmp.raw >>$seq.full
+ _filter <$tmp.raw \
+ | LC_COLLATE=POSIX sort >$tmp.base
+ else
+ $sudo pminfo -c $tmp.derive $args $metric_args >$tmp.raw
+ echo "=== $args $metric_args" >>$seq.full
+ cat $tmp.raw >>$seq.full
+ _filter <$tmp.raw \
+ | LC_COLLATE=POSIX sort >$tmp.tmp
+ echo "--- $args diffs against baseline ---" | tee -a $seq.full
+ diff -u $tmp.base $tmp.tmp \
+ | sed -e "/---/s/.*/- baseline output/" \
+ -e "/+++/s/.*/+ $args output/" \
+ | tee -a $seq.full
+ fi
+ done
+ done
+done
+
+# success, all done
+exit
diff --git a/qa/345.out b/qa/345.out
new file mode 100644
index 0000000..19ad370
--- /dev/null
+++ b/qa/345.out
@@ -0,0 +1,63 @@
+QA output created by 345
+
+=== sampledso.secret.foo.bar.grunt.five sampledso.secret.derived.eek.eight sampledso.secret.foo.bar.grunt ===
+--- -h localhost diffs against baseline ---
+--- -L diffs against baseline ---
+
+=== -m sampledso.secret.foo.bar.grunt.five sampledso.secret.derived.eek.eight sampledso.secret.foo.bar.grunt ===
+--- -h localhost -m diffs against baseline ---
+--- -L -m diffs against baseline ---
+
+=== -f sampledso.secret.foo.bar.grunt.five sampledso.secret.derived.eek.eight sampledso.secret.foo.bar.grunt ===
+--- -h localhost -f diffs against baseline ---
+--- -L -f diffs against baseline ---
+
+=== sampledso.secret.foo ===
+--- -h localhost diffs against baseline ---
+--- -L diffs against baseline ---
+
+=== -m sampledso.secret.foo ===
+--- -h localhost -m diffs against baseline ---
+--- -L -m diffs against baseline ---
+
+=== -f sampledso.secret.foo ===
+--- -h localhost -f diffs against baseline ---
+--- -L -f diffs against baseline ---
+- baseline output
++ -L -f output
+@@ -9,7 +9,7 @@
+ sampledso.secret.foo.bar.grunt.five
+ sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+ sampledso.secret.foo.bar.grunt.snort.six
+-sampledso.secret.foo.bar.max.redirect
++sampledso.secret.foo.bar.max.redirect: pmLookupDesc: No PMCD agent for domain of request
+ sampledso.secret.foo.bar.three
+ sampledso.secret.foo.one
+ sampledso.secret.foo.two
+
+=== sampledso.secret ===
+--- -h localhost diffs against baseline ---
+--- -L diffs against baseline ---
+
+=== -m sampledso.secret ===
+--- -h localhost -m diffs against baseline ---
+--- -L -m diffs against baseline ---
+
+=== -f sampledso.secret ===
+--- -h localhost -f diffs against baseline ---
+--- -L -f diffs against baseline ---
+- baseline output
++ -L -f output
+@@ -13,7 +13,7 @@
+ sampledso.secret.foo.bar.grunt.five
+ sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+ sampledso.secret.foo.bar.grunt.snort.six
+-sampledso.secret.foo.bar.max.redirect
++sampledso.secret.foo.bar.max.redirect: pmLookupDesc: No PMCD agent for domain of request
+ sampledso.secret.foo.bar.three
+ sampledso.secret.foo.one
+ sampledso.secret.foo.two
+
+=== sampledso ===
+--- -h localhost diffs against baseline ---
+--- -L diffs against baseline ---
diff --git a/qa/346 b/qa/346
new file mode 100755
index 0000000..bb569ee
--- /dev/null
+++ b/qa/346
@@ -0,0 +1,113 @@
+#! /bin/sh
+# PCP QA Test No. 346
+# Install/Remove for mailq pmda
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+done_clean=false
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/mailq; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/mailq; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo mailq >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmda_install | \
+ sed \
+ -e '/Mail queue directory/d' \
+ -e '/Mail basename regex/d'
+}
+
+_filter_info()
+{
+ sed \
+ -e 's/value -[0-9][0-9]*\.[0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value -[0-9][0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value [0-9][0-9]*\.[0-9]*/value NUMBER/' \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=mailq
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+echo
+echo "=== default $iam agent installation ==="
+$sudo ./Remove >$tmp.out 2>&1
+$sudo ./Install </dev/null >>$tmp.out 2>&1
+
+_filter <$tmp.out
+
+if pminfo -v $iam
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== validate values ==="
+pminfo -f $iam | _filter_info
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter <$tmp.out
+
+status=0
+exit
diff --git a/qa/346.out.1 b/qa/346.out.1
new file mode 100644
index 0000000..db703ce
--- /dev/null
+++ b/qa/346.out.1
@@ -0,0 +1,51 @@
+QA output created by 346
+
+=== default mailq agent installation ===
+Culling the Performance Metrics Name Space ...
+mailq ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check mailq metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "mailq" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+The default delay thresholds for grouping the pending mail items are:
+ 1 hour, 4 hours, 8 hours, 1 day, 3 days and 7 days
+
+Do you wish to use the default delay thresholds [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mailq metrics have appeared ... 2 metrics and 8 values
+
+=== validate values ===
+
+mailq.length
+ value NUMBER
+
+mailq.deferred
+ inst [604800 or "7-days"] value NUMBER
+ inst [259200 or "3-days"] value NUMBER
+ inst [86400 or "1-day"] value NUMBER
+ inst [28800 or "8-hours"] value NUMBER
+ inst [14400 or "4-hours"] value NUMBER
+ inst [3600 or "1-hour"] value NUMBER
+ inst [0 or "recent"] value NUMBER
+
+=== remove mailq agent ===
+Culling the Performance Metrics Name Space ...
+mailq ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check mailq metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/346.out.2 b/qa/346.out.2
new file mode 100644
index 0000000..a8bc27b
--- /dev/null
+++ b/qa/346.out.2
@@ -0,0 +1,46 @@
+QA output created by 346
+
+=== default mailq agent installation ===
+Culling the Performance Metrics Name Space ...
+mailq ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check mailq metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "mailq" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+The default delay thresholds for grouping the pending mail items are:
+ 1 hour, 4 hours, 8 hours, 1 day, 3 days and 7 days
+
+Do you wish to use the default delay thresholds [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mailq metrics have appeared ... 2 metrics and 8 values
+
+=== validate values ===
+
+mailq.length
+ value NUMBER
+
+mailq.deferred
+ inst [604800 or "7-days"] value NUMBER
+ inst [259200 or "3-days"] value NUMBER
+ inst [86400 or "1-day"] value NUMBER
+ inst [28800 or "8-hours"] value NUMBER
+ inst [14400 or "4-hours"] value NUMBER
+ inst [3600 or "1-hour"] value NUMBER
+ inst [0 or "recent"] value NUMBER
+
+=== remove mailq agent ===
+Culling the Performance Metrics Name Space ...
+mailq ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check mailq metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/347 b/qa/347
new file mode 100755
index 0000000..bd0032c
--- /dev/null
+++ b/qa/347
@@ -0,0 +1,143 @@
+#! /bin/sh
+# PCP QA Test No. 347
+# Exercise the Install/Remove for the news PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+test $? -eq 0 || _notrun "PCP::PMDA perl module is not installed"
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+done_clean=false
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/news; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/news; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo news >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmda_install | \
+ sed -e 's/^Install news as a daemon or perl agent? \[daemon] //'
+}
+
+_filter_info()
+{
+ sed \
+ -e 's/value -[0-9][0-9]*\.[0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value -[0-9][0-9]*/value NEGATIVE NUMBER/' \
+ -e 's/value [0-9][0-9]*\.[0-9]*/value NUMBER/' \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=news
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+# now that pmcd is also known to be alive, give the news PMDA
+# a bit more breathing space to respond
+#
+pmstore pmcd.control.timeout 20 >/dev/null 2>&1
+PMCD_REQUEST_TIMEOUT=25
+export PMCD_REQUEST_TIMEOUT
+
+echo
+echo "=== default $iam agent installation ==="
+$sudo ./Remove >$tmp.out 2>&1
+
+$sudo ./Install </dev/null >>$tmp.out 2>&1
+_filter <$tmp.out
+
+if pminfo -v $iam
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== validate values ==="
+pminfo -f `pminfo $iam | LC_COLLATE=POSIX sort` >$tmp.out
+_filter_info <$tmp.out
+
+if fgrep -s "No PMCD agent" $tmp.out >/dev/null 2>&1
+then
+ echo
+ echo "Looks bad ..."
+ echo
+ echo "pmcd.log ..."
+ cat $PCP_PMCDLOG_PATH
+ echo
+ echo "news.log ..."
+ if [ -d $PCP_LOG_DIR/pmcd ]
+ then
+ cat $PCP_LOG_DIR/pmcd/news.log
+ else
+ cat $PCP_LOG_DIR/news.log
+ fi
+fi
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter <$tmp.out
+
+# be a good citizen
+#
+pmstore pmcd.control.timeout 5 >/dev/null 2>&1
+
+status=0
+exit
diff --git a/qa/347.out.1 b/qa/347.out.1
new file mode 100644
index 0000000..45668de
--- /dev/null
+++ b/qa/347.out.1
@@ -0,0 +1,67 @@
+QA output created by 347
+
+=== default news agent installation ===
+Culling the Performance Metrics Name Space ...
+news ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check news metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "news" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check news metrics have appeared ... 8 metrics and 16 values
+
+=== validate values ===
+
+news.articles.count
+ inst [1 or "comp.sys.sgi"] value NUMBER
+ inst [2 or "comp.sys.sgi.graphics"] value NUMBER
+ inst [3 or "comp.sys.sgi.hardware"] value NUMBER
+ inst [4 or "sgi.bad-attitude"] value NUMBER
+ inst [5 or "sgi.engr.all"] value NUMBER
+
+news.articles.last
+ inst [1 or "comp.sys.sgi"] value NUMBER
+ inst [2 or "comp.sys.sgi.graphics"] value NUMBER
+ inst [3 or "comp.sys.sgi.hardware"] value NUMBER
+ inst [4 or "sgi.bad-attitude"] value NUMBER
+ inst [5 or "sgi.engr.all"] value NUMBER
+
+news.articles.total
+ value NUMBER
+
+news.readers.nnrpd
+ value NUMBER
+
+news.readers.rn
+ value NUMBER
+
+news.readers.trn
+ value NUMBER
+
+news.readers.vn
+ value NUMBER
+
+news.readers.xrn
+ value NUMBER
+
+=== remove news agent ===
+Culling the Performance Metrics Name Space ...
+news ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check news metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/347.out.2 b/qa/347.out.2
new file mode 100644
index 0000000..2603014
--- /dev/null
+++ b/qa/347.out.2
@@ -0,0 +1,62 @@
+QA output created by 347
+
+=== default news agent installation ===
+Culling the Performance Metrics Name Space ...
+news ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check news metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "news" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check news metrics have appeared ... 8 metrics and 16 values
+
+=== validate values ===
+
+news.articles.count
+ inst [1 or "comp.sys.sgi"] value NUMBER
+ inst [2 or "comp.sys.sgi.graphics"] value NUMBER
+ inst [3 or "comp.sys.sgi.hardware"] value NUMBER
+ inst [4 or "sgi.bad-attitude"] value NUMBER
+ inst [5 or "sgi.engr.all"] value NUMBER
+
+news.articles.last
+ inst [1 or "comp.sys.sgi"] value NUMBER
+ inst [2 or "comp.sys.sgi.graphics"] value NUMBER
+ inst [3 or "comp.sys.sgi.hardware"] value NUMBER
+ inst [4 or "sgi.bad-attitude"] value NUMBER
+ inst [5 or "sgi.engr.all"] value NUMBER
+
+news.articles.total
+ value NUMBER
+
+news.readers.nnrpd
+ value NUMBER
+
+news.readers.rn
+ value NUMBER
+
+news.readers.trn
+ value NUMBER
+
+news.readers.vn
+ value NUMBER
+
+news.readers.xrn
+ value NUMBER
+
+=== remove news agent ===
+Culling the Performance Metrics Name Space ...
+news ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check news metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/348 b/qa/348
new file mode 100755
index 0000000..bd74284
--- /dev/null
+++ b/qa/348
@@ -0,0 +1,137 @@
+#! /bin/sh
+# PCP QA Test No. 348
+# Install/Remove for Linux KVM pmda
+#
+# Copyright (c) 2008 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = linux ] || _notrun "KVM only exists on Linux"
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::PMDA module not installed"
+kvm_stats_path=/sys/kernel/debug/kvm
+$sudo [ -d $kvm_stats_path ] || _notrun "KVM sysfs interface not available"
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+done_clean=false
+rm -f $seq.full
+
+install_on_cleanup=false
+pminfo kvm >/dev/null 2>&1 && install_on_cleanup=true
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/kvm; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/kvm; $sudo ./Remove >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+ exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=kvm
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+$sudo rm -f pmns domain.h
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >$tmp.out 2>&1
+# Check kvm metrics have appeared ... X metrics and Y values
+_filter_pmda_install <$tmp.out \
+| sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+| $PCP_AWK_PROG '
+/Check kvm metrics have appeared/ { if ($7 >= 30 && $7 <= 40) $7 = "X"
+ if ($10 >= 30 && $10 <= 40) $10 = "Y"
+ }
+ { print }'
+
+if pminfo -v $iam
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== validate values ==="
+rm -f $tmp.stats $tmp.values $tmp.probe $tmp.diff
+pmprobe -v $iam | LC_COLLATE=POSIX sort > $tmp.probe
+echo "from pmprobe ..." >>$here/$seq.full
+cat $tmp.probe >>$here/$seq.full
+for stat in `$sudo find $kvm_stats_path -mindepth 1`
+do
+ value=`$sudo cat $stat`
+ echo $stat 1 $value | sed -e "s,$kvm_stats_path/,kvm.,g" >> $tmp.stats
+done
+LC_COLLATE=POSIX sort $tmp.stats > $tmp.values
+echo "from /sys/kernel/debug/kvm ..." >>$here/$seq.full
+cat $tmp.values >>$here/$seq.full
+LC_COLLATE=POSIX join $tmp.probe $tmp.values >$tmp.all
+echo >>$here/$seq.full
+cat $tmp.all >>$here/$seq.full
+
+echo
+echo "=== check values ==="
+cat $tmp.all \
+| while read metric n1 vpcp n2 vsys
+do
+ if [ "$n1" = 1 -a "$n2" = 1 ]
+ then
+ _within_tolerance $metric $vpcp $vsys 2% -v
+ else
+ echo "$metric: number of values not 1 as expected: pcp $n1 /sys $n2"
+ fi
+done | tee -a $here/$seq.full
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+status=0
+exit
diff --git a/qa/348.out.1 b/qa/348.out.1
new file mode 100644
index 0000000..ef1aa01
--- /dev/null
+++ b/qa/348.out.1
@@ -0,0 +1,66 @@
+QA output created by 348
+
+=== kvm agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "kvm" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check kvm metrics have appeared ... X metrics and Y values
+
+=== validate values ===
+
+=== check values ===
+kvm.efer_reload is in range
+kvm.exits is in range
+kvm.fpu_reload is in range
+kvm.halt_exits is in range
+kvm.halt_wakeup is in range
+kvm.host_state_reload is in range
+kvm.hypercalls is in range
+kvm.insn_emulation is in range
+kvm.insn_emulation_fail is in range
+kvm.invlpg is in range
+kvm.io_exits is in range
+kvm.irq_exits is in range
+kvm.irq_injections is in range
+kvm.irq_window is in range
+kvm.largepages is in range
+kvm.mmio_exits is in range
+kvm.mmu_cache_miss is in range
+kvm.mmu_flooded is in range
+kvm.mmu_pde_zapped is in range
+kvm.mmu_pte_updated is in range
+kvm.mmu_pte_write is in range
+kvm.mmu_recycled is in range
+kvm.mmu_shadow_zapped is in range
+kvm.mmu_unsync is in range
+kvm.nmi_injections is in range
+kvm.nmi_window is in range
+kvm.pf_fixed is in range
+kvm.pf_guest is in range
+kvm.remote_tlb_flush is in range
+kvm.request_irq is in range
+kvm.signal_exits is in range
+kvm.tlb_flush is in range
+
+=== remove kvm agent ===
+Culling the Performance Metrics Name Space ...
+kvm ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check kvm metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/348.out.2 b/qa/348.out.2
new file mode 100644
index 0000000..e0d439f
--- /dev/null
+++ b/qa/348.out.2
@@ -0,0 +1,64 @@
+QA output created by 348
+
+=== kvm agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "kvm" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Waiting for pmcd to terminate DOTS
+Starting pmcd ...
+Starting pmlogger ...
+Check kvm metrics have appeared ... X metrics and Y values
+
+=== validate values ===
+
+=== check values ===
+kvm.efer_reload is in range
+kvm.exits is in range
+kvm.fpu_reload is in range
+kvm.halt_exits is in range
+kvm.halt_wakeup is in range
+kvm.host_state_reload is in range
+kvm.hypercalls is in range
+kvm.insn_emulation is in range
+kvm.insn_emulation_fail is in range
+kvm.invlpg is in range
+kvm.io_exits is in range
+kvm.irq_exits is in range
+kvm.irq_injections is in range
+kvm.irq_window is in range
+kvm.largepages is in range
+kvm.mmio_exits is in range
+kvm.mmu_cache_miss is in range
+kvm.mmu_flooded is in range
+kvm.mmu_pde_zapped is in range
+kvm.mmu_pte_updated is in range
+kvm.mmu_pte_write is in range
+kvm.mmu_recycled is in range
+kvm.mmu_shadow_zapped is in range
+kvm.mmu_unsync is in range
+kvm.nmi_injections is in range
+kvm.nmi_window is in range
+kvm.pf_fixed is in range
+kvm.pf_guest is in range
+kvm.remote_tlb_flush is in range
+kvm.request_irq is in range
+kvm.signal_exits is in range
+kvm.tlb_flush is in range
+
+=== remove kvm agent ===
+Culling the Performance Metrics Name Space ...
+kvm ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check kvm metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/349 b/qa/349
new file mode 100755
index 0000000..e29def9
--- /dev/null
+++ b/qa/349
@@ -0,0 +1,90 @@
+#! /bin/sh
+# PCP QA Test No. 348
+# Install/Remove for summary pmda
+#
+# Copyright (c) 2008 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+done_clean=false
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/summary; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/summary; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo summary >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=summary
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >>$tmp.out 2>&1
+
+_filter_pmda_install <$tmp.out
+
+if pminfo -v $iam
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove
+
+status=0
+exit
diff --git a/qa/349.out.1 b/qa/349.out.1
new file mode 100644
index 0000000..8fc5507
--- /dev/null
+++ b/qa/349.out.1
@@ -0,0 +1,30 @@
+QA output created by 349
+
+=== summary agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "summary" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Interval between summary expression evaluation (seconds)? [10] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Wait 15 seconds for the summary agent to initialize ...
+Check summary metrics have appeared ... 6 metrics and 6 values
+
+=== remove summary agent ===
+Culling the Performance Metrics Name Space ...
+summary ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check summary metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/349.out.2 b/qa/349.out.2
new file mode 100644
index 0000000..282286d
--- /dev/null
+++ b/qa/349.out.2
@@ -0,0 +1,25 @@
+QA output created by 349
+
+=== summary agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "summary" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Interval between summary expression evaluation (seconds)? [10] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Wait 15 seconds for the summary agent to initialize ...
+Check summary metrics have appeared ... 6 metrics and 6 values
+
+=== remove summary agent ===
+Culling the Performance Metrics Name Space ...
+summary ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check summary metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/350 b/qa/350
new file mode 100755
index 0000000..db7a8ae
--- /dev/null
+++ b/qa/350
@@ -0,0 +1,34 @@
+#!/bin/sh
+# PCP QA Test No. 350
+#
+# help text malloc/free snarfoo ... found prior to 3.2 release
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e 's/ value [0-9][0-9\.]*/ value N/'
+}
+
+# real QA test starts here
+metrics=`pminfo simple | LC_COLLATE=POSIX sort`
+pminfo -f $metrics | _filter
+pminfo -T $metrics | _filter
+pminfo -f $metrics | _filter
+pminfo -t $metrics | _filter
+
+# success, all done
+exit
diff --git a/qa/350.out b/qa/350.out
new file mode 100644
index 0000000..8f181e9
--- /dev/null
+++ b/qa/350.out
@@ -0,0 +1,95 @@
+QA output created by 350
+
+simple.color
+ inst [0 or "red"] value N
+ inst [1 or "green"] value N
+ inst [2 or "blue"] value N
+
+simple.now
+ inst [0 or "sec"] value N
+ inst [1 or "min"] value N
+ inst [2 or "hour"] value N
+
+simple.numfetch
+ value N
+
+simple.time.sys
+ value N
+
+simple.time.user
+ value N
+
+simple.color
+Help:
+This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range 0 to
+255, then back to 0. The different instances have different starting
+values, namely 0 (red), 100 (green) and 200 (blue).
+
+The metric values my be altered using pmstore(1).
+
+simple.now
+Help:
+The value reflects the current time of day through a dynamically
+reconfigurable instance domain. On each metric value fetch request,
+the agent checks to see whether the configuration file in
+$PCP_PMDAS_DIR/simple/simple.conf has been modified - if it has then
+the file is re-parsed and the instance domain for this metric is again
+constructed according to its contents.
+
+This configuration file contains a single line of comma-separated time
+tokens from this set:
+ "sec" (seconds after the minute),
+ "min" (minutes after the hour),
+ "hour" (hour since midnight).
+
+An example configuration file could be: sec,min,hour
+and in this case the simple.now metric would export values
+for the three instances "sec", "min" and "hour" corresponding
+respectively to the components seconds, minutes and hours of the
+current time of day.
+
+The instance domain reflects each token present in the file, and the
+values reflect the time at which the PMDA processes the fetch.
+
+simple.numfetch
+Help:
+The cumulative number of pmFetch operations directed to the "simple"
+PMDA.
+
+This counter may be modified with pmstore(1).
+
+simple.time.sys
+Help:
+The time in seconds that the CPU has spent executing system code for
+the agent.
+
+simple.time.user
+Help:
+The time in seconds that the CPU has spent executing user code for the
+agent.
+
+simple.color
+ inst [0 or "red"] value N
+ inst [1 or "green"] value N
+ inst [2 or "blue"] value N
+
+simple.now
+ inst [0 or "sec"] value N
+ inst [1 or "min"] value N
+ inst [2 or "hour"] value N
+
+simple.numfetch
+ value N
+
+simple.time.sys
+ value N
+
+simple.time.user
+ value N
+simple.color [Metrics which increment with each fetch]
+simple.now [Time of day with a configurable instance domain]
+simple.numfetch [Number of pmFetch operations.]
+simple.time.sys [Time agent has spent executing system code]
+simple.time.user [Time agent has spent executing user code]
diff --git a/qa/351 b/qa/351
new file mode 100755
index 0000000..9ecb89a
--- /dev/null
+++ b/qa/351
@@ -0,0 +1,39 @@
+#!/bin/sh
+# PCP QA Test No. 351
+#
+# used to segv on the metric with the bad operand
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.config
+sample.long.nine = sample.long.ten - sample.long.one
+sample.long.ninety_nine = sample.long.hundred - sample.long.one
+# this is the bad one!
+sample.long.lots = sample.million - sample.long.hundred
+End-of-File
+
+unset PCP_DERIVED_CONFIG
+
+# real QA test starts here
+
+pminfo -f sample.long
+
+echo
+echo "Now with the derived metrics ..."
+pminfo -c $tmp.config -f sample.long
+
+# success, all done
+exit
diff --git a/qa/351.out b/qa/351.out
new file mode 100644
index 0000000..3587f69
--- /dev/null
+++ b/qa/351.out
@@ -0,0 +1,84 @@
+QA output created by 351
+
+sample.long.one
+ value 1
+
+sample.long.ten
+ value 10
+
+sample.long.hundred
+ value 100
+
+sample.long.million
+ value 1000000
+
+sample.long.write_me
+ value 13
+
+sample.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+Now with the derived metrics ...
+
+sample.long.one
+ value 1
+
+sample.long.ten
+ value 10
+
+sample.long.hundred
+ value 100
+
+sample.long.million
+ value 1000000
+
+sample.long.write_me
+ value 13
+
+sample.long.bin
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.long.bin_ctr
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.long.nine
+ value 9
+
+sample.long.ninety_nine
+ value 99
+sample.long.lots: pmLookupDesc: Unknown or illegal metric identifier
diff --git a/qa/352 b/qa/352
new file mode 100755
index 0000000..1cea319
--- /dev/null
+++ b/qa/352
@@ -0,0 +1,69 @@
+#!/bin/sh
+# PCP QA Test No. 352
+#
+# derived metrics and pmlogger ...
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.derive
+sample.long.nine = sample.long.ten - sample.long.one
+sample.long.ninety_nine = sample.long.hundred - sample.long.one
+sample.long.lots = sample.long.million - sample.long.hundred
+End-of-File
+
+cat <<End-of-File >$tmp.config
+log mandatory on 100msec {
+ sample.long.one
+ sample.long.ten
+ sample.long.nine
+ sample.long.ninety_nine
+ sample.long.lots
+}
+End-of-File
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e '/pmcd\.pmlogger\./s/.*/ .../'
+}
+
+unset PCP_DERIVED_CONFIG
+
+# real QA test starts here
+echo "Expect this to fail as derived metrics not defined ..."
+rm -f $tmp.0 $tmp.meta $tmp.index $tmp.log
+pmlogger -c $tmp.config -l $tmp.log -s 2 $tmp
+cat $tmp.log >$seq.full
+_filter_pmlogger_log <$tmp.log | _filter
+pmdumplog $tmp | tee -a $seq.full | _filter_pmdumplog | _filter
+
+echo | tee -a $seq.full
+echo "Now with derived metrics defined ..." | tee -a $seq.full
+export PCP_DERIVED_CONFIG=$tmp.derive
+pminfo -f `grep sample $tmp.config`
+rm -f $tmp.0 $tmp.meta $tmp.index $tmp.log
+pmlogger -c $tmp.config -l $tmp.log -s 3 $tmp
+cat $tmp.log >>$seq.full
+_filter_pmlogger_log <$tmp.log | _filter
+unset PCP_DERIVED_CONFIG
+pmdumplog $tmp | tee -a $seq.full | _filter_pmdumplog | _filter
+
+# pmval -a $tmp -t 0.1sec sample.long.nine
+pminfo -f -a $tmp -O 0.24sec sample.long
+
+# success, all done
+exit
diff --git a/qa/352.out b/qa/352.out
new file mode 100644
index 0000000..037bd9b
--- /dev/null
+++ b/qa/352.out
@@ -0,0 +1,91 @@
+QA output created by 352
+Expect this to fail as derived metrics not defined ...
+Log for pmlogger on HOST started DATE
+
+Warning [TMP.config, line 5]
+Problem with lookup for metric "sample.long.nine" ... logging not activated
+Reason: Unknown metric name
+Warning [TMP.config, line 6]
+Problem with lookup for metric "sample.long.ninety_nine" ... logging not activated
+Reason: Unknown metric name
+Warning [TMP.config, line 7]
+Problem with lookup for metric "sample.long.lots" ... logging not activated
+Reason: Unknown metric name
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+ ...
+ ...
+ ...
+
+TIMESTAMP 29.0.11 (sample.long.ten): value 10
+ 29.0.10 (sample.long.one): value 1
+
+TIMESTAMP 29.0.11 (sample.long.ten): value 10
+ 29.0.10 (sample.long.one): value 1
+
+Now with derived metrics defined ...
+
+sample.long.one
+ value 1
+
+sample.long.ten
+ value 10
+
+sample.long.nine
+ value 9
+
+sample.long.ninety_nine
+ value 99
+
+sample.long.lots
+ value 999900
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+ ...
+ ...
+ ...
+
+TIMESTAMP 511.0.3 (sample.long.lots): value 999900
+ 511.0.2 (sample.long.ninety_nine): value 99
+ 511.0.1 (sample.long.nine): value 9
+ 29.0.11 (sample.long.ten): value 10
+ 29.0.10 (sample.long.one): value 1
+
+TIMESTAMP 511.0.3 (sample.long.lots): value 999900
+ 511.0.2 (sample.long.ninety_nine): value 99
+ 511.0.1 (sample.long.nine): value 9
+ 29.0.11 (sample.long.ten): value 10
+ 29.0.10 (sample.long.one): value 1
+
+TIMESTAMP 511.0.3 (sample.long.lots): value 999900
+ 511.0.2 (sample.long.ninety_nine): value 99
+ 511.0.1 (sample.long.nine): value 9
+ 29.0.11 (sample.long.ten): value 10
+ 29.0.10 (sample.long.one): value 1
+
+sample.long.one
+ value 1
+
+sample.long.ten
+ value 10
+
+sample.long.nine
+ value 9
+
+sample.long.ninety_nine
+ value 99
+
+sample.long.lots
+ value 999900
diff --git a/qa/353 b/qa/353
new file mode 100755
index 0000000..6d4520f
--- /dev/null
+++ b/qa/353
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 353
+# check pmsocks for IRIX o32, n32, 64 object styles
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.config
+
+if [ "`pmsocks echo ok 2>&1`" != ok ]
+then
+ _notrun "pmsocks is not installed and/or not configured"
+fi
+if [ "$PCPQA_SOCKS_SERVER" = my_socks_server ]
+then
+ _notrun "\$PCPQA_SOCKS_SERVER is not configured"
+fi
+
+_filter() {
+ sed -e '/not QAing/d'
+}
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "expect no output"
+
+EXTERNAL_HOST=estore.sgi.com
+SOCKS_SERVER=$PCPQA_SOCKS_SERVER
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT SOCKS_SERVER
+pmsocks src/pmsocks_objstyle -h $EXTERNAL_HOST | _filter
+if [ "$PCP_PLATFORM" = "irix" ]
+then
+ pmsocks src/pmsocks_objstyle_32 -h $EXTERNAL_HOST | _filter
+ pmsocks src/pmsocks_objstyle_n32 -h $EXTERNAL_HOST | _filter
+ pmsocks src/pmsocks_objstyle_64 -h $EXTERNAL_HOST | _filter
+fi
+
+exit
diff --git a/qa/353.out b/qa/353.out
new file mode 100644
index 0000000..2748482
--- /dev/null
+++ b/qa/353.out
@@ -0,0 +1,2 @@
+QA output created by 353
+expect no output
diff --git a/qa/354 b/qa/354
new file mode 100755
index 0000000..67b86f5
--- /dev/null
+++ b/qa/354
@@ -0,0 +1,272 @@
+#! /bin/sh
+# PCP QA Test No. 354
+# more serious exercising of record mode in libpcp_gui
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+host=`hostname`
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+rm -rf $tmp
+mkdir $tmp
+if [ ! -d $tmp ]
+then
+ echo "Arrgh, failed to mkdir \"$tmp\""
+ ls -ld $tmp
+fi
+cd $tmp
+
+_build_sed()
+{
+ echo "s/$host/HOST/g" >$tmp.sed
+ $PCP_AWK_PROG <$1 >>$tmp.sed '
+BEGIN { numpid = 0; pid[""] = 1 }
+/pid:/ { if ($6 == 0) next
+ for (i in pid) {
+ if ($6 == pid[i]) next
+ }
+ numpid++
+ pid[numpid] = $6
+ print "s/ " $6 " / pmlogger-pid-" numpid " /g"
+ }'
+}
+
+_filter()
+{
+ sed <$1 \
+ -e 's/$/ /' \
+ -e 's/^/ /' \
+ | sed -f $tmp.sed \
+ | sed \
+ -e 's/ $//' \
+ -e 's/^ //' \
+ -e "s/$MKTEMP/MKTEMP/" \
+ -e "s/$host/HOST/" \
+ -e 's/[0-9][^ ]* [kmKM]*bytes/SOME bytes/g' \
+ -e 's/[0-9][^ ]* seconds/SOME seconds/g' \
+ -e "s/$seq-$$/SEQ-PID/g" \
+ -e '/xconfirm: Not found/d' \
+ -e '/pmRecordControl/s/Bad file descriptor/Invalid argument/' \
+ | _filter_pmlogger_log \
+ | sed \
+ -e 's/\/[A-Z]*\/tmp/\/tmp/' \
+ -e 's/\/[a-z]*\/tmp/\/tmp/'
+}
+
+_filter_ps()
+{
+$PCP_AWK_PROG '
+NR == 1 { if ($2 != "PID") {
+ print "PID not in field 2 of ps output!"
+ print
+ exit(1)
+ }
+ if ($8 == "CMD")
+ # Linux
+ cmd = 8
+ else if ($11 == "COMMAND")
+ # Darwin
+ cmd = 11
+ else {
+ print "CMD (or COMMAND) not in field 8 (or 11) of ps output!"
+ print
+ exit(1)
+ }
+ next
+ }
+ { print "ps:",$2,$cmd,$(cmd+1),$(cmd+2),$(cmd+3),$(cmd+4) }'
+}
+
+rm -f $here/$seq.full
+
+# NOT the default pmconfirm(1), please
+#
+cat <<'End-of-File' >$tmp.xconfirm
+#!/bin/sh
+# generate no output so pmlogger will report the message
+exit 0
+End-of-File
+chmod 755 $tmp.xconfirm
+export PCP_XCONFIRM_PROG=$tmp.xconfirm
+
+# real QA test starts here
+
+echo
+echo "=== folio name relative to cwd ==="
+echo "=== folio name relative to cwd ===" >>$here/$seq.full
+echo
+
+$here/src/record foo no-1 1 $host localhost $host localhost 2>&1 >$tmp.out &
+sleep 10
+
+# We used to have the temp basename created and left over (this was a bug).
+# In fixing the bug we've made this test much harder ...
+# typical output from ls looks like
+# lZYiOHa.localhost.0
+# lZYiOH.localhost.0
+# and we need to extract lZYiOH not lZYiOHa
+#
+MKTEMP=`ls *.localhost.0 \
+ | tee -a $here/$seq.full \
+ | awk '{ print length($0),$0 }' \
+ | sort -n \
+ | sed -e 's/^[0-9][0-9]* //' -e 's/\.localhost\.0//' -e 1q`
+echo "MKTEMP=$MKTEMP" >>$here/$seq.full
+_build_sed $tmp.out
+_filter $tmp.out
+cat $tmp.out >>$here/$seq.full
+echo
+echo "pmlogger processes:"
+echo "pmlogger processes:" >>$here/$seq.full
+ps $PCP_PS_ALL_FLAGS 2>&1 \
+| tee -a $here/$seq.full \
+| sed -n -e 1p -e '/[p]mlogger.*-x/p' \
+| _filter_ps \
+| tee $tmp.tmp \
+| sed -f $tmp.sed \
+| LC_COLLATE=POSIX sort
+pid=`$PCP_AWK_PROG '{ print $2 }' <$tmp.tmp`
+if [ -z "$pid" ]
+then
+ # oops!
+ #
+ echo "Arrgh, no pmlogger process found ... see $seq.full"
+ exit
+else
+ echo "pmlogger pid: $pid" >>$here/$seq.full
+ npmlogger=`echo "$pid" | wc -w | sed -e 's/ //g'`
+ if [ "$npmlogger" -ne 1 ]
+ then
+ echo "Arrgh, expecting 1 pmlogger process found $npmlogger processes ... see $seq.full"
+ exit
+ fi
+ $signal -s TERM $pid
+fi
+
+for i in 1 2 3 4 5
+do
+ if pmlc $pid </dev/null 2>&1 | egrep "Connection refused|Transport endpoint is not connected" >/dev/null
+ then
+ # pmlogger has gone away, continue
+ #
+ break
+ else
+ # pmlogger still present
+ #
+ if [ $i = 5 ]
+ then
+ echo "Arrgh, pmlogger process ($pid) will not die ... see $seq.full"
+ exit
+ else
+ sleep 2
+ fi
+ fi
+done
+
+echo
+echo "files:"
+for file in *
+do
+ new=`echo $file | sed -e "s/$MKTEMP/MKTEMP/" -e "s/$host/HOST/"`
+ [ "$new" != "$file" ] && mv $file $new
+done
+LC_COLLATE=POSIX ls
+for log in `LC_COLLATE=POSIX ls *.log`
+do
+ echo
+ echo "=== $log ==="
+ echo "=== $log ===" >>$here/$seq.full
+ _filter $log
+ cat $log >>$here/$seq.full
+done
+
+rm -rf *
+echo
+echo "=== absolute folio name ==="
+echo "=== absolute folio name ===" >>$here/$seq.full
+echo
+
+$here/src/record `pwd`/foo no-2 0 $host localhost $host localhost 2>&1 >$tmp.out &
+sleep 10
+# see note above
+MKTEMP=`ls *.localhost.0 \
+ | tee -a $here/$seq.full \
+ | awk '{ print length($0),$0 }' \
+ | sort -n \
+ | sed -e 's/^[0-9][0-9]* //' -e 's/\.localhost\.0//' -e 1q`
+echo "MKTEMP=$MKTEMP" >>$here/$seq.full
+_build_sed $tmp.out
+cat $tmp.out >>$here/$seq.full
+_filter $tmp.out
+echo
+echo "pmlogger processes:"
+echo "pmlogger processes:" >>$here/$seq.full
+ps $PCP_PS_ALL_FLAGS 2>&1 \
+| tee -a $here/$seq.full \
+| sed -n -e 1p -e '/[p]mlogger.*-x/p' \
+| _filter_ps \
+| tee $tmp.tmp \
+| sed -f $tmp.sed \
+| LC_COLLATE=POSIX sort
+pid=`$PCP_AWK_PROG '{ print $2 }' <$tmp.tmp`
+if [ -z "$pid" ]
+then
+ # oops!
+ #
+ echo "Arrgh, no pmlogger process found ... see $seq.full"
+ exit
+else
+ echo "pmlogger pid: $pid" >>$here/$seq.full
+ $signal -s TERM $pid
+fi
+
+for i in 1 2 3 4 5
+do
+ if pmlc $pid </dev/null 2>&1 | egrep "Connection refused|Transport endpoint is not connected" >/dev/null
+ then
+ # pmlogger has gone away, continue
+ #
+ break
+ else
+ # pmlogger still present
+ #
+ if [ $i = 5 ]
+ then
+ echo "Arrgh, pmlogger process ($pid) will not die ... see $seq.full"
+ exit
+ else
+ sleep 2
+ fi
+ fi
+done
+
+echo
+echo "files:"
+for file in *
+do
+ new=`echo $file | sed -e "s/$MKTEMP/MKTEMP/" -e "s/$host/HOST/"`
+ [ "$new" != "$file" ] && mv $file $new
+done
+LC_COLLATE=POSIX ls
+for log in `LC_COLLATE=POSIX ls *.log`
+do
+ echo
+ echo "=== $log ==="
+ echo "=== $log ===" >>$here/$seq.full
+ _filter $log
+ cat $log >>$here/$seq.full
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/354.out b/qa/354.out
new file mode 100644
index 0000000..5f974e1
--- /dev/null
+++ b/qa/354.out
@@ -0,0 +1,360 @@
+QA output created by 354
+
+=== folio name relative to cwd ===
+
+host: HOST
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.HOST.log
+host: localhost
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.localhost.log
+host: HOST
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.HOST.log
+host: localhost
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.localhost.log
+
+sleeping ...
+
+host: HOST
+f_config: NULL f_ipc: 6 pid: pmlogger-pid-1 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.HOST.log
+host: localhost
+f_config: NULL f_ipc: 7 pid: pmlogger-pid-2 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.localhost.log
+host: HOST
+f_config: NULL f_ipc: 8 pid: pmlogger-pid-3 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.HOST.log
+host: localhost
+f_config: NULL f_ipc: 9 pid: pmlogger-pid-4 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.localhost.log
+
+send some control requests ...
+host: HOST
+ OFF
+host: localhost
+ DETACH
+host: HOST
+ STATUS
+host: localhost
+ close(fd_ipc)
+
+now stop 'em all ...
+host: HOST
+pmRecordControl(... OFF ...): Invalid argument
+host: localhost
+pmRecordControl(... OFF ...): Invalid argument
+host: HOST
+host: localhost
+pmRecordControl(... OFF ...): IPC protocol failure
+
+and again to get any exit status ...
+pmRecordControl( ... OFF ...): Invalid argument
+
+
+discover what's happened ...
+
+host: HOST
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-1 status: 0
+logfile: /tmp/SEQ-PID/MKTEMP.HOST.log
+host: localhost
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-2 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.localhost.log
+host: HOST
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-3 status: 0
+logfile: /tmp/SEQ-PID/MKTEMPa.HOST.log
+host: localhost
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-4 status: 0
+logfile: /tmp/SEQ-PID/MKTEMPa.localhost.log
+
+pmlogger processes:
+ps: pmlogger-pid-2 pmlogger -x 6 -h localhost
+
+files:
+MKTEMP.HOST.0
+MKTEMP.HOST.config
+MKTEMP.HOST.index
+MKTEMP.HOST.log
+MKTEMP.HOST.meta
+MKTEMP.localhost.0
+MKTEMP.localhost.config
+MKTEMP.localhost.index
+MKTEMP.localhost.log
+MKTEMP.localhost.meta
+MKTEMPa.HOST.0
+MKTEMPa.HOST.config
+MKTEMPa.HOST.index
+MKTEMPa.HOST.log
+MKTEMPa.HOST.meta
+MKTEMPa.localhost.0
+MKTEMPa.localhost.config
+MKTEMPa.localhost.index
+MKTEMPa.localhost.log
+MKTEMPa.localhost.meta
+foo
+
+=== MKTEMP.HOST.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+This archive may be replayed with the following command:
+ $ pmafm foo replay
+
+The application that launched pmlogger has terminated this PCP recording session.
+pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== MKTEMP.localhost.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+This archive may be replayed with the following command:
+ $ pmafm foo replay
+
+The application that launched pmlogger has asked pmlogger to continue independently and the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM pmlogger-pid-2
+
+Log finished DATE
+
+=== MKTEMPa.HOST.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Warning: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+This archive may be replayed with the following command:
+ $ pmafm foo replay
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM pmlogger-pid-3
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+This archive may be replayed with the following command:
+ $ pmafm foo replay
+
+The application that launched pmlogger has terminated this PCP recording session.
+pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== MKTEMPa.localhost.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+This archive may be replayed with the following command:
+ $ pmafm foo replay
+
+The application that launched pmlogger has exited and you must decide if the PCP recording session should be terminated or continued. If recording is continued the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM pmlogger-pid-4
+
+
+Terminate this PCP recording session now?pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== absolute folio name ===
+
+host: HOST
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.HOST.log
+host: localhost
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.localhost.log
+host: HOST
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.HOST.log
+host: localhost
+f_config: OK f_ipc: -1 pid: 0 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.localhost.log
+
+sleeping ...
+
+host: HOST
+f_config: NULL f_ipc: 7 pid: pmlogger-pid-1 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.HOST.log
+host: localhost
+f_config: NULL f_ipc: 8 pid: pmlogger-pid-2 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.localhost.log
+host: HOST
+f_config: NULL f_ipc: 9 pid: pmlogger-pid-3 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.HOST.log
+host: localhost
+f_config: NULL f_ipc: 10 pid: pmlogger-pid-4 status: -1
+logfile: /tmp/SEQ-PID/MKTEMPa.localhost.log
+
+send some control requests ...
+host: HOST
+ OFF
+host: localhost
+ DETACH
+host: HOST
+ STATUS
+host: localhost
+ close(fd_ipc)
+
+now stop 'em all ...
+host: HOST
+pmRecordControl(... OFF ...): Invalid argument
+host: localhost
+pmRecordControl(... OFF ...): Invalid argument
+host: HOST
+host: localhost
+pmRecordControl(... OFF ...): IPC protocol failure
+
+and again to get any exit status ...
+pmRecordControl( ... OFF ...): Invalid argument
+
+
+discover what's happened ...
+
+host: HOST
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-1 status: 0
+logfile: /tmp/SEQ-PID/MKTEMP.HOST.log
+host: localhost
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-2 status: -1
+logfile: /tmp/SEQ-PID/MKTEMP.localhost.log
+host: HOST
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-3 status: 0
+logfile: /tmp/SEQ-PID/MKTEMPa.HOST.log
+host: localhost
+f_config: NULL f_ipc: -1 pid: pmlogger-pid-4 status: 0
+logfile: /tmp/SEQ-PID/MKTEMPa.localhost.log
+
+pmlogger processes:
+ps: pmlogger-pid-2 pmlogger -x 7 -h localhost
+
+files:
+MKTEMP.HOST.0
+MKTEMP.HOST.config
+MKTEMP.HOST.index
+MKTEMP.HOST.log
+MKTEMP.HOST.meta
+MKTEMP.localhost.0
+MKTEMP.localhost.config
+MKTEMP.localhost.index
+MKTEMP.localhost.log
+MKTEMP.localhost.meta
+MKTEMPa.HOST.0
+MKTEMPa.HOST.config
+MKTEMPa.HOST.index
+MKTEMPa.HOST.log
+MKTEMPa.HOST.meta
+MKTEMPa.localhost.0
+MKTEMPa.localhost.config
+MKTEMPa.localhost.index
+MKTEMPa.localhost.log
+MKTEMPa.localhost.meta
+foo
+
+=== MKTEMP.HOST.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "/tmp/SEQ-PID/foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has terminated this PCP recording session.
+pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== MKTEMP.localhost.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "/tmp/SEQ-PID/foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has asked pmlogger to continue independently and the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM pmlogger-pid-2
+
+Log finished DATE
+
+=== MKTEMPa.HOST.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Warning: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "/tmp/SEQ-PID/foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM pmlogger-pid-3
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "/tmp/SEQ-PID/foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has terminated this PCP recording session.
+pmlogger: Recording session terminated, exiting
+
+Log finished DATE
+
+=== MKTEMPa.localhost.log ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Error: pmconfirm(1) failed for recording session dialog
+Dialog:
+PCP recording for the archive folio "/tmp/SEQ-PID/foo" and the host "HOST" has been in progress for SOME seconds and in that time the pmlogger process has created an archive of SOME bytes.
+
+The application that launched pmlogger has exited and you must decide if the PCP recording session should be terminated or continued. If recording is continued the PCP archive will grow at the rate of SOME bytes per hour or SOME bytes per day.
+
+At any time this pmlogger process may be terminated with the following command:
+ $ pmsignal -s TERM pmlogger-pid-4
+
+
+Terminate this PCP recording session now?pmlogger: Recording session terminated, exiting
+
+Log finished DATE
diff --git a/qa/355 b/qa/355
new file mode 100755
index 0000000..79eddad
--- /dev/null
+++ b/qa/355
@@ -0,0 +1,76 @@
+#! /bin/sh
+# PCP QA Test No. 355
+# try to reproduce bug #517713
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ cd $here
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+status=1 # failure is the default!
+trap "_cleanup" 0 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+_countinst()
+{
+ fgrep ' value ' | sed -e 's/.* value //g' | $PCP_AWK_PROG '
+BEGIN { sum = 0 }
+ { if (NF == 1) sum = sum + $1 }
+END { printf "%d\n",sum }'
+}
+
+pminfo trace >/dev/null 2>&1
+remove=$?
+
+_filter_trace_install()
+{
+ # some warnings are *expected* - no trace values yet
+ _filter_pmda_install | sed \
+ -e 's/ *[0-9]+ warnings,//g'
+}
+
+cd $PCP_PMDAS_DIR/trace
+$sudo ./Install -R / </dev/null 2>&1 | _filter_trace_install
+_wait_for_pmcd
+
+# real QA test starts here
+$here/src/torture_trace
+
+sleep 2
+
+echo "QA test counters:"
+$PCP_ECHO_PROG $PCP_ECHO_N " pmtraceobs ""$PCP_ECHO_C"
+pminfo -f trace.observe.count | _countinst
+
+$PCP_ECHO_PROG $PCP_ECHO_N " pmtracepoint ""$PCP_ECHO_C"
+pminfo -f trace.point.count | _countinst
+
+$PCP_ECHO_PROG $PCP_ECHO_N " pmtracetransact ""$PCP_ECHO_C"
+pminfo -f trace.transact.count | _countinst
+
+[ $remove -eq 1 ] && $sudo $PCP_PMDAS_DIR/trace/Remove >/dev/null 2>&1
+
+# success, all done
+status=0
+exit
diff --git a/qa/355.out b/qa/355.out
new file mode 100644
index 0000000..5ff2873
--- /dev/null
+++ b/qa/355.out
@@ -0,0 +1,22 @@
+QA output created by 355
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+reaped sproc #0
+reaped sproc #1
+reaped sproc #2
+torture_trace counters:
+ pmtraceobs 1001
+ pmtracepoint 2000
+ pmtracetransact 2000
+QA test counters:
+ pmtraceobs 2001
+ pmtracepoint 2000
+ pmtracetransact 2000
diff --git a/qa/356 b/qa/356
new file mode 100755
index 0000000..b9720d4
--- /dev/null
+++ b/qa/356
@@ -0,0 +1,58 @@
+#!/bin/sh
+# PCP QA Test No. 356
+#
+# segv with derived metrics
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.config
+bad_in_pkts = network.interface.in.errors + network.interface.in.drops
+End-of-File
+
+_filter()
+{
+ _filter_pmie_log \
+ | sed \
+ -e '/^\[TIMESTAMP]/'"s/ `hostname`/ HOST/" \
+ -e '/^\[TIMESTAMP]/'"s/ local:/ HOST/" \
+ -e '/expr_1:.*?/d' \
+ -e '/expr_1: [0-9. ]*/s/ .*/ value(s)/' \
+ -e 's/Connection reset by peer/IPC protocol failure/' \
+ | $PCP_AWK_PROG '
+skip == 0 && /expr_1/ { print; print "..."; print ""; skip = 1; next }
+skip == 1 && /expr_1/ { next }
+skip == 1 && NF == 0 { next }
+ { print; skip = 0 }'
+}
+
+# real QA test starts here
+
+export PCP_DERIVED_CONFIG=$tmp.config
+echo "bad_in_pkts;" | pmie -t 1 -T+12 -v >$tmp.out 2>&1 &
+
+sleep 3
+
+unset PCP_DERIVED_CONFIG
+$sudo $PCP_RC_DIR/pcp restart \
+| _filter_pcp_start
+
+wait
+
+cat $tmp.out >$seq.full
+_filter <$tmp.out
+
+# success, all done
+exit
diff --git a/qa/356.out b/qa/356.out
new file mode 100644
index 0000000..fc8e002
--- /dev/null
+++ b/qa/356.out
@@ -0,0 +1,22 @@
+QA output created by 356
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+expr_1: value(s)
+...
+
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST failed: IPC protocol failure
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST
+
+
+
+
+
+
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST
+
+expr_1: value(s)
+...
+
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
diff --git a/qa/357 b/qa/357
new file mode 100755
index 0000000..6ba6ba9
--- /dev/null
+++ b/qa/357
@@ -0,0 +1,57 @@
+#! /bin/sh
+# PCP QA Test No. 357
+# Exercise __pmNumberStr()
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+for i in \
+ 0.4321 4.321 43.21 432.1 4321 43210 \
+ 0 \
+ 0.00001 0.0001 0.001 0.01 0.1 1.0 10.0 100.0 1000.0 10000.0 \
+ 1000000.0 10000000.0 100000000.0 1000000000.0 10000000000.0 \
+ 100000000000.0 1000000000000.0 10000000000000.0 \
+ 0.005 0.0051 \
+ 9.995 9.9951 \
+ 99.995 99.9951 \
+ 999.95 999.951 \
+ 999995 9999951 \
+ 9999500 99995100 \
+ 99995000 999951000 \
+ 999950000 9999510000 \
+ 9999500000 99995100000 \
+ 99995000000 999951000000 \
+ 999950000000 9999510000000 \
+ 9999500000000 99995100000000 \
+ 99995000000000 999951000000000 \
+ 999950000000000 9999510000000000 \
+ 9999500000000000 99995100000000000
+do
+ echo $i | $PCP_AWK_PROG '{printf("%18s = ", $1); }'
+ src/numberstr $i
+ echo -$i | $PCP_AWK_PROG '{printf("%18s = ", $1); }'
+ src/numberstr -$i
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/357.out.1 b/qa/357.out.1
new file mode 100644
index 0000000..d725d6d
--- /dev/null
+++ b/qa/357.out.1
@@ -0,0 +1,111 @@
+QA output created by 357
+ 0.4321 = 0.43
+ -0.4321 = -0.43
+ 4.321 = 4.32
+ -4.321 = -4.32
+ 43.21 = 43.21
+ -43.21 = -43.21
+ 432.1 = 432.10
+ -432.1 = -0.43K
+ 4321 = 4.32K
+ -4321 = -4.32K
+ 43210 = 43.21K
+ -43210 = -43.21K
+ 0 = 0.00
+ -0 = 0.00
+ 0.00001 = 0.00
+ -0.00001 = 0.00
+ 0.0001 = 0.00
+ -0.0001 = 0.00
+ 0.001 = 0.00
+ -0.001 = 0.00
+ 0.01 = 0.01
+ -0.01 = -0.01
+ 0.1 = 0.10
+ -0.1 = -0.10
+ 1.0 = 1.00
+ -1.0 = -1.00
+ 10.0 = 10.00
+ -10.0 = -10.00
+ 100.0 = 100.00
+ -100.0 = -0.10K
+ 1000.0 = 1.00K
+ -1000.0 = -1.00K
+ 10000.0 = 10.00K
+ -10000.0 = -10.00K
+ 1000000.0 = 1.00M
+ -1000000.0 = -1.00M
+ 10000000.0 = 10.00M
+ -10000000.0 = -10.00M
+ 100000000.0 = 100.00M
+ -100000000.0 = -0.10G
+ 1000000000.0 = 1.00G
+ -1000000000.0 = -1.00G
+ 10000000000.0 = 10.00G
+ -10000000000.0 = -10.00G
+ 100000000000.0 = 100.00G
+ -100000000000.0 = -0.10T
+ 1000000000000.0 = 1.00T
+ -1000000000000.0 = -1.00T
+ 10000000000000.0 = 10.00T
+ -10000000000000.0 = -10.00T
+ 0.005 = 0.01
+ -0.005 = -0.01
+ 0.0051 = 0.01
+ -0.0051 = -0.01
+ 9.995 = 9.99
+ -9.995 = -9.99
+ 9.9951 = 10.00
+ -9.9951 = -10.00
+ 99.995 = 100.00
+ -99.995 = -0.10K
+ 99.9951 = 100.00
+ -99.9951 = -0.10K
+ 999.95 = 999.95
+ -999.95 = -1.00K
+ 999.951 = 999.95
+ -999.951 = -1.00K
+ 999995 = 1.00M
+ -999995 = -1.00M
+ 9999951 = 10.00M
+ -9999951 = -10.00M
+ 9999500 = 10.00M
+ -9999500 = -10.00M
+ 99995100 = 100.00M
+ -99995100 = -0.10G
+ 99995000 = 100.00M
+ -99995000 = -0.10G
+ 999951000 = 999.95M
+ -999951000 = -1.00G
+ 999950000 = 999.95M
+ -999950000 = -1.00G
+ 9999510000 = 10.00G
+ -9999510000 = -10.00G
+ 9999500000 = 10.00G
+ -9999500000 = -10.00G
+ 99995100000 = 100.00G
+ -99995100000 = -0.10T
+ 99995000000 = 100.00G
+ -99995000000 = -0.10T
+ 999951000000 = 999.95G
+ -999951000000 = -1.00T
+ 999950000000 = 999.95G
+ -999950000000 = -1.00T
+ 9999510000000 = 10.00T
+ -9999510000000 = -10.00T
+ 9999500000000 = 10.00T
+ -9999500000000 = -10.00T
+ 99995100000000 = 100.00T
+ -99995100000000 = -inf?
+ 99995000000000 = 100.00T
+ -99995000000000 = -inf?
+ 999951000000000 = 999.95T
+ -999951000000000 = -inf?
+ 999950000000000 = 999.95T
+ -999950000000000 = -inf?
+ 9999510000000000 = inf?
+ -9999510000000000 = -inf?
+ 9999500000000000 = inf?
+ -9999500000000000 = -inf?
+ 99995100000000000 = inf?
+-99995100000000000 = -inf?
diff --git a/qa/357.out.2 b/qa/357.out.2
new file mode 100644
index 0000000..6d35323
--- /dev/null
+++ b/qa/357.out.2
@@ -0,0 +1,111 @@
+QA output created by 357
+ 0.4321 = 0.43
+ -0.4321 = -0.43
+ 4.321 = 4.32
+ -4.321 = -4.32
+ 43.21 = 43.21
+ -43.21 = -43.21
+ 432.1 = 432.10
+ -432.1 = -0.43K
+ 4321 = 4.32K
+ -4321 = -4.32K
+ 43210 = 43.21K
+ -43210 = -43.21K
+ 0 = 0.00
+ -0 = 0.00
+ 0.00001 = 0.00
+ -0.00001 = 0.00
+ 0.0001 = 0.00
+ -0.0001 = 0.00
+ 0.001 = 0.00
+ -0.001 = 0.00
+ 0.01 = 0.01
+ -0.01 = -0.01
+ 0.1 = 0.10
+ -0.1 = -0.10
+ 1.0 = 1.00
+ -1.0 = -1.00
+ 10.0 = 10.00
+ -10.0 = -10.00
+ 100.0 = 100.00
+ -100.0 = -0.10K
+ 1000.0 = 1.00K
+ -1000.0 = -1.00K
+ 10000.0 = 10.00K
+ -10000.0 = -10.00K
+ 1000000.0 = 1.00M
+ -1000000.0 = -1.00M
+ 10000000.0 = 10.00M
+ -10000000.0 = -10.00M
+ 100000000.0 = 100.00M
+ -100000000.0 = -0.10G
+ 1000000000.0 = 1.00G
+ -1000000000.0 = -1.00G
+ 10000000000.0 = 10.00G
+ -10000000000.0 = -10.00G
+ 100000000000.0 = 100.00G
+ -100000000000.0 = -0.10T
+ 1000000000000.0 = 1.00T
+ -1000000000000.0 = -1.00T
+ 10000000000000.0 = 10.00T
+ -10000000000000.0 = -10.00T
+ 0.005 = 0.01
+ -0.005 = -0.01
+ 0.0051 = 0.01
+ -0.0051 = -0.01
+ 9.995 = 9.99
+ -9.995 = -9.99
+ 9.9951 = 10.00
+ -9.9951 = -10.00
+ 99.995 = 100.00
+ -99.995 = -0.10K
+ 99.9951 = 100.00
+ -99.9951 = -0.10K
+ 999.95 = 999.95
+ -999.95 = -1.00K
+ 999.951 = 999.95
+ -999.951 = -1.00K
+ 999995 = 1.00M
+ -999995 = -1.00M
+ 9999951 = 10.00M
+ -9999951 = -10.00M
+ 9999500 = 10.00M
+ -9999500 = -10.00M
+ 99995100 = 100.00M
+ -99995100 = -0.10G
+ 99995000 = 100.00M
+ -99995000 = -0.10G
+ 999951000 = 999.95M
+ -999951000 = -1.00G
+ 999950000 = 999.95M
+ -999950000 = -1.00G
+ 9999510000 = 10.00G
+ -9999510000 = -10.00G
+ 9999500000 = 10.00G
+ -9999500000 = -10.00G
+ 99995100000 = 100.00G
+ -99995100000 = -0.10T
+ 99995000000 = 100.00G
+ -99995000000 = -0.10T
+ 999951000000 = 999.95G
+ -999951000000 = -1.00T
+ 999950000000 = 999.95G
+ -999950000000 = -1.00T
+ 9999510000000 = 10.00T
+ -9999510000000 = -10.00T
+ 9999500000000 = 10.00T
+ -9999500000000 = -10.00T
+ 99995100000000 = 100.00T
+ -99995100000000 = -inf?
+ 99995000000000 = 100.00T
+ -99995000000000 = -inf?
+ 999951000000000 = 999.95T
+ -999951000000000 = -inf?
+ 999950000000000 = 999.95T
+ -999950000000000 = -inf?
+ 9999510000000000 = inf?
+ -9999510000000000 = -inf?
+ 9999500000000000 = inf?
+ -9999500000000000 = -inf?
+ 99995100000000000 = inf?
+-99995100000000000 = -inf?
diff --git a/qa/358 b/qa/358
new file mode 100755
index 0000000..e7340ee
--- /dev/null
+++ b/qa/358
@@ -0,0 +1,50 @@
+#!/bin/sh
+# PCP QA Test No. 358
+#
+# pmie fails for metric with instance domain containing one instance
+# ... also some string constant exercises for embedded escapes
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat >$tmp.pmie <<'End-of-File'
+some_inst ( match_inst "d" sample.dodgey.value > 0) -> print "short match ..." " [%i] %v";
+some_inst ( match_inst "^d[12345]\$" sample.dodgey.value > 0) -> print "long match ..." " [%i] %v" "\t\"\\\$\\\" A\BC\(\)[]\78\9";
+End-of-File
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed -e 's/.* Info: evaluator exiting/pmie: note - evaluator exiting/g' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]/DATE/' \
+ -e 's/ [0-9][0-9]*/ NN/g' \
+ | LC_COLLATE=POSIX sort \
+ | uniq
+}
+
+# real QA test starts here
+# for i in 5 2 1
+for i in 1 2 5
+do
+ echo "=== $i values for sample.dodgey.value ==="
+ pmstore sample.dodgey.control $i >/dev/null
+ pminfo -f sample.dodgey.value >>$seq.full
+ pmie -t 0.5 -T 2.3 <$tmp.pmie 2>&1 | _filter
+done
+
+pmstore sample.dodgey.control 5 >/dev/null
+
+# success, all done
+exit
diff --git a/qa/358.out b/qa/358.out
new file mode 100644
index 0000000..5907dd5
--- /dev/null
+++ b/qa/358.out
@@ -0,0 +1,13 @@
+QA output created by 358
+=== 1 values for sample.dodgey.value ===
+DATE: long match ... [d1] NN "\$\" ABC()[]789
+DATE: short match ... [d1] NN
+pmie: note - evaluator exiting
+=== 2 values for sample.dodgey.value ===
+DATE: long match ... [d1] NN [d2] NN "\$\" ABC()[]789
+DATE: short match ... [d1] NN [d2] NN
+pmie: note - evaluator exiting
+=== 5 values for sample.dodgey.value ===
+DATE: long match ... [d1] NN [d2] NN [d3] NN [d4] NN [d5] NN "\$\" ABC()[]789
+DATE: short match ... [d1] NN [d2] NN [d3] NN [d4] NN [d5] NN
+pmie: note - evaluator exiting
diff --git a/qa/359 b/qa/359
new file mode 100755
index 0000000..50e7078
--- /dev/null
+++ b/qa/359
@@ -0,0 +1,56 @@
+#!/bin/sh
+# PCP QA Test No. 359
+# Simple sanity check that we can get through validation of all
+# of the metrics without any surprises
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/No value(s) available/d' \
+ -e '/Metric not supported by this version of monitored application/d' \
+ -e '/cgroup.groups: pmLookupName: Unknown metric name/d' \
+ -e '/^sample.needprofile:/d' \
+ -e '/^sample.bad.unknown:/d' \
+ -e '/^sample.bad.nosupport:/d' \
+ -e '/^sampledso.needprofile:/d' \
+ -e '/^sampledso.bad.unknown:/d' \
+ -e '/^sampledso.bad.nosupport:/d' \
+ -e '/^proc.schedstat.*: Unknown or .*/d' \
+ -e '/^proc.schedstat.*: No permission/d' \
+ -e '/^proc.psinfo.*: No permission/d' \
+ -e '/^proc.psinfo.cgroups: Unknown or illegal instance identifier/d' \
+ -e '/^proc.psinfo.labels: Unknown or illegal instance identifier/d' \
+ -e '/^proc.memory.*: No permission/d' \
+ -e '/^proc.id.*: No permission/d' \
+ -e '/^proc.fd.*: No permission/d' \
+ -e '/^proc.io.*: /d' \
+ -e '/^papi.*: No permission/d' \
+ -e '/^logger.perfile.reg.records: No permission/d' \
+ -e '/^logger.perfile.fifo.records: Try again./d' \
+ -e '/^logger.perfile.reg.records: Try again./d'
+}
+
+# real QA test starts here
+
+echo "First attempt ... expect nothing"
+pminfo -v | _filter
+echo "Second attempt ... expect nothing"
+pminfo -v | _filter
+
+# success, all done
+exit
diff --git a/qa/359.out b/qa/359.out
new file mode 100644
index 0000000..61a0899
--- /dev/null
+++ b/qa/359.out
@@ -0,0 +1,3 @@
+QA output created by 359
+First attempt ... expect nothing
+Second attempt ... expect nothing
diff --git a/qa/360 b/qa/360
new file mode 100755
index 0000000..c710088
--- /dev/null
+++ b/qa/360
@@ -0,0 +1,63 @@
+#!/bin/sh
+# PCP QA Test No. 360
+# Remote host tests split off from 055
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+./getpmcdhosts -L -v 'pcp>=2' -n 2 -a sample 2>$tmp.err \
+| sed >$tmp.config \
+ -e 's/^/ /' \
+ -e "s/ \([^ ][^ ]*\)/ :'\1'/g" \
+ -e 's/^ /hosts = "/' \
+ -e 's/$/";/'
+[ -s $tmp.err ] && _notrun `cat $tmp.err`
+
+# here are the exercises
+cat >>$tmp.config << \EOF
+delta = 2 sec;
+
+// host domain exercises
+host_fetch = sample.long.ten $hosts;
+host_neg = -sample.long.ten $hosts;
+host_sum = sum_host sample.long.ten $hosts;
+host_avg = avg_host sample.long.ten $hosts;
+host_max = max_host sample.long.ten $hosts;
+host_min = min_host sample.long.ten $hosts;
+host_count = count_host sample.long.ten $hosts >= 10;
+host_add1 = sample.long.ten $hosts + sample.long.ten $hosts;
+host_add2 = sample.long.ten $hosts + 1;
+host_add3 = 1 + sample.long.ten $hosts;
+host_gt1 = sample.long.ten $hosts + 1 > sample.long.ten $hosts;
+host_gt2 = sample.long.ten $hosts > 11;
+
+// multiple domains
+multi3 = max_sample sum_host avg_inst sample.bin $hosts @0..2;
+multi4 = sum_host max_sample avg_inst sample.bin $hosts @0..2;
+multi5 = avg_host min_sample count_inst sample.bin $hosts @0..2 > 400;
+
+EOF
+
+cat $tmp.config >>$seq.full
+
+# real QA test starts here
+pmie -T 10 -v $tmp.config >$tmp.out 2>$tmp.err
+( echo; echo "=== err ==="; cat $tmp.err ) >>$seq.full
+cat $tmp.err | _show_pmie_exit
+( echo; echo "=== out ==="; cat $tmp.out ) >>$seq.full
+cat $tmp.out | LC_COLLATE=POSIX sort
+
+# success, all done
+exit
diff --git a/qa/360.out b/qa/360.out
new file mode 100644
index 0000000..23c9033
--- /dev/null
+++ b/qa/360.out
@@ -0,0 +1,98 @@
+QA output created by 360
+pmie: note - evaluator exiting
+
+
+
+
+
+
+host_add1: 20 20
+host_add1: 20 20
+host_add1: 20 20
+host_add1: 20 20
+host_add1: 20 20
+host_add1: 20 20
+host_add2: 11 11
+host_add2: 11 11
+host_add2: 11 11
+host_add2: 11 11
+host_add2: 11 11
+host_add2: 11 11
+host_add3: 11 11
+host_add3: 11 11
+host_add3: 11 11
+host_add3: 11 11
+host_add3: 11 11
+host_add3: 11 11
+host_avg: 10
+host_avg: 10
+host_avg: 10
+host_avg: 10
+host_avg: 10
+host_avg: 10
+host_count: 2
+host_count: 2
+host_count: 2
+host_count: 2
+host_count: 2
+host_count: 2
+host_fetch: 10 10
+host_fetch: 10 10
+host_fetch: 10 10
+host_fetch: 10 10
+host_fetch: 10 10
+host_fetch: 10 10
+host_gt1: true true
+host_gt1: true true
+host_gt1: true true
+host_gt1: true true
+host_gt1: true true
+host_gt1: true true
+host_gt2: false false
+host_gt2: false false
+host_gt2: false false
+host_gt2: false false
+host_gt2: false false
+host_gt2: false false
+host_max: 10
+host_max: 10
+host_max: 10
+host_max: 10
+host_max: 10
+host_max: 10
+host_min: 10
+host_min: 10
+host_min: 10
+host_min: 10
+host_min: 10
+host_min: 10
+host_neg: -10 -10
+host_neg: -10 -10
+host_neg: -10 -10
+host_neg: -10 -10
+host_neg: -10 -10
+host_neg: -10 -10
+host_sum: 20
+host_sum: 20
+host_sum: 20
+host_sum: 20
+host_sum: 20
+host_sum: 20
+multi3: 1000
+multi3: 1000
+multi3: 1000
+multi3: 1000
+multi3: ?
+multi3: ?
+multi4: 1000
+multi4: 1000
+multi4: 1000
+multi4: 1000
+multi4: ?
+multi4: ?
+multi5: 5
+multi5: 5
+multi5: 5
+multi5: 5
+multi5: ?
+multi5: ?
diff --git a/qa/361 b/qa/361
new file mode 100755
index 0000000..780831a
--- /dev/null
+++ b/qa/361
@@ -0,0 +1,95 @@
+#! /bin/sh
+# PCP QA Test No. 361
+# Exercise cgroup metrics in the Linux PMDA
+#
+# Copyright (c) 2010 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./localconfig
+
+[ $PCP_PLATFORM = linux ] || _notrun "tests pmdalinux functionality on Linux only"
+
+rm -f $seq.out
+# cgroup metrics may not be available
+#
+if pminfo cgroup >/dev/null 2>&1
+then
+ prefix=cgroup
+ ln $seq.out.2 $seq.out
+else
+ if pminfo proc.cgroup >/dev/null 2>&1
+ then
+ prefix=proc.cgroup
+ ln $seq.out.1 $seq.out
+ else
+ _notrun cgroup metrics not available
+ fi
+fi
+
+_cleanup()
+{
+ rm -f $tmp.*
+ $sudo umount $grp 2>/dev/null
+ rmdir $grp 2>/dev/null
+}
+
+grp=/tmp/cgroup_$seq
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+[ -f /proc/cgroups ] || _notrun "No support for cgroups in the running kernel"
+grep -q cgroup /proc/mounts && _notrun "One or more cgroups already in use"
+grep -q cpuacct /proc/cgroups || _notrun "No cpuacct cgroup support"
+grep -q cpuset /proc/cgroups || _notrun "No cpuset cgroup support"
+grep -q cpu /proc/cgroups || _notrun "No cpusched cgroup support"
+
+rmdir $grp 2>/dev/null
+mkdir $grp || _fail "Cannot create cgroup mount point"
+
+# since the proc PMDA was split from the Linux PMDA, the proc PMDA may
+# not be installed (caught by the notrun cases above) or installed as
+# a daemon, in which case the standard processing of pmcd.conf for
+# a local PMAPI context connection will not find it, so may have to
+# be specific about the proc PMDA DSO location
+#
+pmda="-Kclear -Kadd,3,$PCP_PMDAS_DIR/proc/pmda_proc.so,proc_init"
+
+# real test starts here
+echo "initial fetch, starting with a clean slate"
+pmprobe -L $pmda -v $prefix.mounts \
+| LC_COLLATE=POSIX sort
+
+echo "cpuset metrics fetch, no user groups defined, single controller"
+$sudo mount -t cgroup -o cpuset none $grp || _fail "cpuset mount"
+pminfo -L $pmda -m $prefix.mounts $prefix.groups \
+| LC_COLLATE=POSIX sort
+$sudo umount $grp || _fail "cpuset umount"
+
+echo "cpuacct and cpuset fetch, no user groups defined, dual controllers"
+$sudo mount -t cgroup -o cpuacct,cpuset none $grp || _fail "cpu,cpuacct mount"
+pminfo -L $pmda -m $prefix.mounts $prefix.groups \
+| LC_COLLATE=POSIX sort
+$sudo umount $grp || _fail "cpu,cpuacct cgroup umount"
+
+echo "cpuacct and cpuset fetch, one user group defined, dual controllers"
+$sudo mount -t cgroup -o cpuacct,cpuset none $grp || _fail "cpu,cpuacct mount"
+$sudo mkdir $grp/pcpqa
+pminfo -L $pmda $prefix.mounts $prefix.groups \
+| LC_COLLATE=POSIX sort \
+| xargs pminfo -L -d $pmda -m
+$sudo rmdir $grp/pcpqa
+echo "cpuacct and cpuset fetch, one user group removed, dual controllers"
+pminfo -L $pmda $prefix.mounts $prefix.groups \
+| LC_COLLATE=POSIX sort \
+| xargs pminfo -L -d $pmda -m
+$sudo umount $grp || _fail "cpu,cpuacct cgroup umount"
+
+# success, all done
+status=0
+exit
diff --git a/qa/361.out.1 b/qa/361.out.1
new file mode 100644
index 0000000..47fcc10
--- /dev/null
+++ b/qa/361.out.1
@@ -0,0 +1,108 @@
+QA output created by 361
+initial fetch, starting with a clean slate
+cgroup.mounts.count 1 0
+cgroup.mounts.subsys 0
+cpuset metrics fetch, no user groups defined, single controller
+cgroup.groups.cpuset.cpus PMID: 60.39.0
+cgroup.groups.cpuset.mems PMID: 60.39.1
+cgroup.mounts.count PMID: 60.38.1
+cgroup.mounts.subsys PMID: 60.38.0
+cpuacct and cpuset fetch, no user groups defined, dual controllers
+cgroup.groups.cpuacct.stat.system PMID: 60.41.1
+cgroup.groups.cpuacct.stat.user PMID: 60.41.0
+cgroup.groups.cpuacct.usage PMID: 60.41.2
+cgroup.groups.cpuacct.usage_percpu PMID: 60.41.3
+cgroup.groups.cpuset.cpus PMID: 60.39.0
+cgroup.groups.cpuset.mems PMID: 60.39.1
+cgroup.mounts.count PMID: 60.38.1
+cgroup.mounts.subsys PMID: 60.38.0
+cpuacct and cpuset fetch, one user group defined, dual controllers
+
+cgroup.groups.cpuacct.pcpqa.stat.system PMID: 60.41.33
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.pcpqa.stat.user PMID: 60.41.32
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.pcpqa.usage PMID: 60.41.34
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.pcpqa.usage_percpu PMID: 60.41.35
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.stat.system PMID: 60.41.1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.stat.user PMID: 60.41.0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.usage PMID: 60.41.2
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.usage_percpu PMID: 60.41.3
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuset.cpus PMID: 60.39.0
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.mems PMID: 60.39.1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.pcpqa.cpus PMID: 60.39.32
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.pcpqa.mems PMID: 60.39.33
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.mounts.count PMID: 60.38.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+cgroup.mounts.subsys PMID: 60.38.0
+ Data Type: string InDom: 60.21 0xf000015
+ Semantics: instant Units: none
+cpuacct and cpuset fetch, one user group removed, dual controllers
+
+cgroup.groups.cpuacct.stat.system PMID: 60.41.1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.stat.user PMID: 60.41.0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.usage PMID: 60.41.2
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.usage_percpu PMID: 60.41.3
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuset.cpus PMID: 60.39.0
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.mems PMID: 60.39.1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.mounts.count PMID: 60.38.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+cgroup.mounts.subsys PMID: 60.38.0
+ Data Type: string InDom: 60.21 0xf000015
+ Semantics: instant Units: none
diff --git a/qa/361.out.2 b/qa/361.out.2
new file mode 100644
index 0000000..d7d6dbe
--- /dev/null
+++ b/qa/361.out.2
@@ -0,0 +1,108 @@
+QA output created by 361
+initial fetch, starting with a clean slate
+cgroup.mounts.count 1 0
+cgroup.mounts.subsys 0
+cpuset metrics fetch, no user groups defined, single controller
+cgroup.groups.cpuset.cpus PMID: 3.39.0
+cgroup.groups.cpuset.mems PMID: 3.39.1
+cgroup.mounts.count PMID: 3.38.1
+cgroup.mounts.subsys PMID: 3.38.0
+cpuacct and cpuset fetch, no user groups defined, dual controllers
+cgroup.groups.cpuacct.stat.system PMID: 3.41.1
+cgroup.groups.cpuacct.stat.user PMID: 3.41.0
+cgroup.groups.cpuacct.usage PMID: 3.41.2
+cgroup.groups.cpuacct.usage_percpu PMID: 3.41.3
+cgroup.groups.cpuset.cpus PMID: 3.39.0
+cgroup.groups.cpuset.mems PMID: 3.39.1
+cgroup.mounts.count PMID: 3.38.1
+cgroup.mounts.subsys PMID: 3.38.0
+cpuacct and cpuset fetch, one user group defined, dual controllers
+
+cgroup.groups.cpuacct.pcpqa.stat.system PMID: 3.41.33
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.pcpqa.stat.user PMID: 3.41.32
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.pcpqa.usage PMID: 3.41.34
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.pcpqa.usage_percpu PMID: 3.41.35
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.stat.system PMID: 3.41.1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.stat.user PMID: 3.41.0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.usage PMID: 3.41.2
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.usage_percpu PMID: 3.41.3
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuset.cpus PMID: 3.39.0
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.mems PMID: 3.39.1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.pcpqa.cpus PMID: 3.39.32
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.pcpqa.mems PMID: 3.39.33
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.mounts.count PMID: 3.38.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+cgroup.mounts.subsys PMID: 3.38.0
+ Data Type: string InDom: 3.21 0xc00015
+ Semantics: instant Units: none
+cpuacct and cpuset fetch, one user group removed, dual controllers
+
+cgroup.groups.cpuacct.stat.system PMID: 3.41.1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.stat.user PMID: 3.41.0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+cgroup.groups.cpuacct.usage PMID: 3.41.2
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuacct.usage_percpu PMID: 3.41.3
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+
+cgroup.groups.cpuset.cpus PMID: 3.39.0
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.groups.cpuset.mems PMID: 3.39.1
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+cgroup.mounts.count PMID: 3.38.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+cgroup.mounts.subsys PMID: 3.38.0
+ Data Type: string InDom: 3.21 0xc00015
+ Semantics: instant Units: none
diff --git a/qa/362 b/qa/362
new file mode 100755
index 0000000..9cfedef
--- /dev/null
+++ b/qa/362
@@ -0,0 +1,236 @@
+#!/bin/sh
+# PCP QA Test No. 362
+#
+# pmlogconf-setup exerciser
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ -f $PCP_BINADM_DIR/pmlogconf-setup ]
+then
+ :
+else
+ echo "pmlogconf-setup not installed" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_doit()
+{
+ echo
+ echo "--- group file ---"
+ cat $tmp.grp
+ $PCP_BINADM_DIR/pmlogconf-setup $tmp.grp 2>$tmp.err >$tmp.out
+ xsts=$?
+ echo "--- pmlogconf-setup stdout ---"
+ sed -e "s;$tmp;TMP;" <$tmp.out
+ echo "--- exit status=$xsts ---"
+ if [ -s $tmp.err ]
+ then
+ echo "--- pmlogconf-setup stderr ---"
+ sed -e "s;$tmp;TMP;" <$tmp.err
+ fi
+}
+
+# real QA test starts here
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad metric name
+probe no.such.metric
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good metric name - default everything
+probe sample.secret.foo.bar.three
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good metric name - no values
+probe sample.noinst values
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good metric name - has values
+probe sample.secret.foo.bar.three values
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good metric name - exists and non-default rules
+probe sample.secret.foo.bar.three exists ? available : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good metric name - exists and explicit default rules
+probe sample.secret.foo.bar.three values ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good metric name - exists and regex
+probe sample.secret.foo.bar.three ~ 3
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good metric name - exists and regex and non-default rules
+probe sample.secret.foo.bar.three ~ 3 ? available : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad: metric name exists and regex - missing operand
+probe sample.secret.foo.bar.three ~
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad: metric exists - not ? as expected
+probe hinv.ncpu exists foobar
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule missing an argument
+probe hinv.ncpu exists ? include :
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule extra arguments
+probe hinv.ncpu exists ? include : exclude foo
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule not : where expected
+probe hinv.ncpu exists ? include foo exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule illegal success state
+probe hinv.ncpu exists ? foo : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule illegal failure state
+probe hinv.ncpu exists ? available : foo
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - force available
+force available
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - regex match and include
+probe sample.string.hullo ~ ^h[eu]llo.world!$
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - notregex nomatch and exclude
+probe sample.bin !~ [1-9]00 ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - if bazillions of CPUs include, else available
+probe hinv.ncpu > 1000 ? include : available
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin < 101 ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin <= 100 ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin == 400 ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin != 100 ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin >= 900 ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin > 899 ? include : exclude
+End-of-File
+_doit
+
+cat <<'End-of-File' >$tmp.grp
+#pmlogconf-setup 2.0
+ident Example from pmlogconf(1) man page
+ident ... more descripton
+delta 1 minute
+probe sample.secret.foo.one values ? include : exclude
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+End-of-File
+_doit
+
+# success, all done
+exit
diff --git a/qa/362.out b/qa/362.out
new file mode 100644
index 0000000..dcf5839
--- /dev/null
+++ b/qa/362.out
@@ -0,0 +1,221 @@
+QA output created by 362
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad metric name
+probe no.such.metric
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:x::
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good metric name - default everything
+probe sample.secret.foo.bar.three
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good metric name - no values
+probe sample.noinst values
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:x::
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good metric name - has values
+probe sample.secret.foo.bar.three values
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good metric name - exists and non-default rules
+probe sample.secret.foo.bar.three exists ? available : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good metric name - exists and explicit default rules
+probe sample.secret.foo.bar.three values ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good metric name - exists and regex
+probe sample.secret.foo.bar.three ~ 3
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good metric name - exists and regex and non-default rules
+probe sample.secret.foo.bar.three ~ 3 ? available : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad: metric name exists and regex - missing operand
+probe sample.secret.foo.bar.three ~
+--- pmlogconf-setup stdout ---
+--- exit status=1 ---
+--- pmlogconf-setup stderr ---
+TMP.grp: Error: missing condition operand after ~ operator
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad: metric exists - not ? as expected
+probe hinv.ncpu exists foobar
+--- pmlogconf-setup stdout ---
+--- exit status=1 ---
+--- pmlogconf-setup stderr ---
+TMP.grp: Error: expected "?" after condition, found "foobar"
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule missing an argument
+probe hinv.ncpu exists ? include :
+--- pmlogconf-setup stdout ---
+--- exit status=1 ---
+--- pmlogconf-setup stderr ---
+TMP.grp: Error: missing state rule components: "? include :"
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule extra arguments
+probe hinv.ncpu exists ? include : exclude foo
+--- pmlogconf-setup stdout ---
+--- exit status=1 ---
+--- pmlogconf-setup stderr ---
+TMP.grp: Error: extra state rule components: "? include : exclude foo"
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule not : where expected
+probe hinv.ncpu exists ? include foo exclude
+--- pmlogconf-setup stdout ---
+--- exit status=1 ---
+--- pmlogconf-setup stderr ---
+TMP.grp: Error: expected ":" in state rule, found "foo"
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule illegal success state
+probe hinv.ncpu exists ? foo : exclude
+--- pmlogconf-setup stdout ---
+--- exit status=1 ---
+--- pmlogconf-setup stderr ---
+TMP.grp: Error: sucess state "foo" not recognized
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Bad: metric exists - state rule illegal failure state
+probe hinv.ncpu exists ? available : foo
+--- pmlogconf-setup stdout ---
+--- exit status=1 ---
+--- pmlogconf-setup stderr ---
+TMP.grp: Error: failure state "foo" not recognized
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - force available
+force available
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - regex match and include
+probe sample.string.hullo ~ ^h[eu]llo.world!$
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - notregex nomatch and exclude
+probe sample.bin !~ [1-9]00 ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:x::
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - if bazillions of CPUs include, else available
+probe hinv.ncpu > 1000 ? include : available
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:n:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin < 101 ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin <= 100 ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin == 400 ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin != 100 ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin >= 900 ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Good - include
+probe sample.bin > 899 ? include : exclude
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:default:
+--- exit status=0 ---
+
+--- group file ---
+#pmlogconf-setup 2.0
+ident Example from pmlogconf(1) man page
+ident ... more descripton
+delta 1 minute
+probe sample.secret.foo.one values ? include : exclude
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+--- pmlogconf-setup stdout ---
+#+ TMP.grp:y:1 minute:
+--- exit status=0 ---
diff --git a/qa/363 b/qa/363
new file mode 100755
index 0000000..bdb3082
--- /dev/null
+++ b/qa/363
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 363
+# checks pmlogsummary error reporting
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+# use V2 archives only
+arch=src/ace_v2
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# strip marks from archives
+src/stripmark src/changeinst.0 $tmp.changeinst.0 > /dev/null 2>&1
+cp src/changeinst.index $tmp.changeinst.index
+cp src/changeinst.meta $tmp.changeinst.meta
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+echo
+echo "=== Sanity checks ==="
+pmlogsummary -z -n src/root_irix -bmMy $arch \
+ | LC_COLLATE=POSIX sort -f | ./xlate_2_new_pmns
+echo
+echo "=== Down-rev error check ==="
+pmlogsummary -v -z -n src/root_irix -a src/err_v1
+echo
+echo "=== Changing inst check ==="
+pmlogsummary -z -a $tmp.changeinst
+echo
+echo "=== Bogus archive check ==="
+
+_filter()
+{
+ sed -e 's/sample.*colour .*none/sample.colour (masked out)/g' \
+ -e 's/pmcd.pmlogger.port .* none/pmcd.pmlogger.port [PID] PORT none/g' \
+ -e 's/ 1.001 none/ 1.000 none/g'
+ # sample[dso].milliseconds is a fickle mistress
+}
+
+pmlogsummary src/truncbin | _filter
+pmlogsummary src/null
+
+
+# success, all done
+status=0
+exit
diff --git a/qa/363.out b/qa/363.out
new file mode 100644
index 0000000..88509bb
--- /dev/null
+++ b/qa/363.out
@@ -0,0 +1,134 @@
+QA output created by 363
+
+=== Sanity checks ===
+
+disk.dev.read ["dks1d1"] 0.083 0.090 0.000 0.498 6 count / sec
+disk.dev.read ["dks1d2"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.read ["dks1d3"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.read ["dks3d1"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.read ["dks3d2"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.read ["dks3d3"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.read ["dks3d4"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.read ["dks4d1"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.read ["dks4d2"] 49.645 50.478 11.952 93.907 6 count / sec
+disk.dev.total ["dks1d1"] 0.416 0.449 0.000 1.992 6 count / sec
+disk.dev.total ["dks1d2"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.total ["dks1d3"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.total ["dks3d1"] 0.416 0.449 0.000 1.499 6 count / sec
+disk.dev.total ["dks3d2"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.total ["dks3d3"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.total ["dks3d4"] 0.752 0.808 0.000 1.519 6 count / sec
+disk.dev.total ["dks4d1"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.total ["dks4d2"] 63.287 63.681 38.345 95.406 6 count / sec
+disk.dev.write ["dks1d1"] 0.333 0.359 0.000 1.494 6 count / sec
+disk.dev.write ["dks1d2"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.write ["dks1d3"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.write ["dks3d1"] 0.416 0.449 0.000 1.499 6 count / sec
+disk.dev.write ["dks3d2"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.write ["dks3d3"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.write ["dks3d4"] 0.752 0.808 0.000 1.519 6 count / sec
+disk.dev.write ["dks4d1"] 0.000 0.000 0.000 0.000 6 count / sec
+disk.dev.write ["dks4d2"] 13.642 13.203 0.000 26.394 6 count / sec
+kernel.all.cpu.idle 1.737 1.515 0.380 4.700 6 none
+kernel.all.cpu.intr 0.052 0.053 0.030 0.095 6 none
+kernel.all.cpu.sxbrk 0.000 0.000 0.000 0.000 6 none
+kernel.all.cpu.sys 0.693 0.695 0.518 0.805 6 none
+kernel.all.cpu.user 0.297 0.296 0.194 0.375 6 none
+kernel.all.cpu.wait.total 1.718 1.754 1.120 2.508 6 none
+kernel.all.ipc.msg 0.000 0.000 0.000 0.000 6 count / sec
+kernel.all.ipc.sema 0.000 0.000 0.000 0.000 6 count / sec
+kernel.all.load ["1 minute"] 0.360 0.352 0.207 0.470 7 none
+kernel.all.load ["15 minute"] 0.059 0.058 0.047 0.068 7 none
+kernel.all.load ["5 minute"] 0.174 0.172 0.139 0.199 7 none
+kernel.all.pswitch 331.975 311.847 231.886 597.243 6 count / sec
+kernel.all.readch 120634.709 117620.705 36702.036 195571.844 6 byte / sec
+kernel.all.runocc 0.896 0.898 0.498 1.013 6 / sec
+kernel.all.runque 0.896 0.898 0.498 1.013 6 / sec
+kernel.all.syscall 12014.115 11956.885 7749.259 14049.148 6 count / sec
+kernel.all.writech 31096.325 30067.537 1104.102 58530.036 6 byte / sec
+network.interface.in.bytes ["et0"] 2184.880 1936.379 0.000 5551.761 6 count / sec
+network.interface.in.bytes ["lo0"] 3950.859 3663.033 1115.900 7774.543 6 count / sec
+network.interface.in.bytes ["sl0"] 10.079 9.161 0.000 25.974 6 count / sec
+network.interface.out.bytes ["et0"] 456.969 429.957 43.165 1560.210 6 count / sec
+network.interface.out.bytes ["lo0"] 3950.859 3663.033 1115.900 7774.543 6 count / sec
+network.interface.out.bytes ["sl0"] 834.937 807.640 0.000 2802.711 6 count / sec
+Note: timezone set to local timezone of host "moomba" from archive
+
+=== Down-rev error check ===
+pmlogsummary: Cannot open archive "src/err_v1": Illegal label record at start of a PCP archive log file
+
+=== Changing inst check ===
+Note: timezone set to local timezone of host "gonzo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host gonzo
+ commencing Tue Aug 5 07:45:41.422 1997
+ ending Tue Aug 5 07:45:59.912 1997
+irix.network.interface.total.packets ["ec0"] 3.000 3.000 1.000 5.000 3 count / sec
+irix.network.interface.total.packets ["lo0"] 21.766 23.327 7.995 48.003 7 count / sec
+irix.network.interface.total.packets ["ec2"] 39.657 39.659 30.997 47.972 3 count / sec
+sample.milliseconds 1.000 1.000 1.000 1.000 3 none
+sample.seconds 0.989 0.972 0.937 1.000 11 none
+sample.bin ["bin-100"] 100.000 100.000 100.000 100.000 8 none
+sample.bin ["bin-200"] 200.000 200.000 200.000 200.000 8 none
+sample.bin ["bin-400"] 400.000 400.000 400.000 400.000 12 none
+sample.bin ["bin-500"] 500.000 500.000 500.000 500.000 5 none
+sample.bin ["bin-300"] 300.000 300.000 300.000 300.000 8 none
+sample.drift 104.500 116.483 26.000 184.000 8 none
+hinv.ncpu 1.000 1.000 1.000 1.000 6 none
+pmcd.pmlogger.port [1318] 4331.000 4331.000 4331.000 4331.000 1 none
+pmcd.pmlogger.port [1342] 4331.000 4331.000 4331.000 4331.000 1 none
+pmcd.pmlogger.port ["1368"] 4331.000 4331.000 4331.000 4331.000 1 none
+
+=== Bogus archive check ===
+pmlogsummary: fetch failed: Corrupted record in a PCP archive log
+sample.milliseconds 1.000 none
+sample.colour (masked out)
+sample.colour (masked out)
+sample.colour (masked out)
+sample.bin ["bin-100"] 100.000 none
+sample.bin ["bin-200"] 200.000 none
+sample.bin ["bin-300"] 300.000 none
+sample.bin ["bin-400"] 400.000 none
+sample.bin ["bin-500"] 500.000 none
+sample.bin ["bin-600"] 600.000 none
+sample.bin ["bin-700"] 700.000 none
+sample.bin ["bin-800"] 800.000 none
+sample.bin ["bin-900"] 900.000 none
+sample.bucket ["bin-100"] 100.000 none
+sample.bucket ["bin-200"] 200.000 none
+sample.bucket ["bin-300"] 300.000 none
+sample.bucket ["bin-400"] 400.000 none
+sample.bucket ["bin-500"] 500.000 none
+sample.bucket ["bin-600"] 600.000 none
+sample.bucket ["bin-700"] 700.000 none
+sample.bucket ["bin-800"] 800.000 none
+sample.bucket ["bin-900"] 900.000 none
+sampledso.milliseconds 1.000 none
+sample.colour (masked out)
+sample.colour (masked out)
+sample.colour (masked out)
+sampledso.bin ["bin-100"] 100.000 none
+sampledso.bin ["bin-200"] 200.000 none
+sampledso.bin ["bin-300"] 300.000 none
+sampledso.bin ["bin-400"] 400.000 none
+sampledso.bin ["bin-500"] 500.000 none
+sampledso.bin ["bin-600"] 600.000 none
+sampledso.bin ["bin-700"] 700.000 none
+sampledso.bin ["bin-800"] 800.000 none
+sampledso.bin ["bin-900"] 900.000 none
+sampledso.bucket ["bin-100"] 100.000 none
+sampledso.bucket ["bin-200"] 200.000 none
+sampledso.bucket ["bin-300"] 300.000 none
+sampledso.bucket ["bin-400"] 400.000 none
+sampledso.bucket ["bin-500"] 500.000 none
+sampledso.bucket ["bin-600"] 600.000 none
+sampledso.bucket ["bin-700"] 700.000 none
+sampledso.bucket ["bin-800"] 800.000 none
+sampledso.bucket ["bin-900"] 900.000 none
+pmcd.pmlogger.port [PID] PORT none
+pmlogsummary: Cannot locate end of archive src/null: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
diff --git a/qa/364 b/qa/364
new file mode 100755
index 0000000..14f780b
--- /dev/null
+++ b/qa/364
@@ -0,0 +1,122 @@
+#!/bin/sh
+# PCP QA Test No. 364
+# pmlogconf metric accessibility
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# see if unix domain sockets are available (permissions)
+_get_libpcp_config
+target="-h localhost"
+$unix_domain_sockets && target="-h unix:"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_solaris()
+{
+ if [ $PCP_PLATFORM != solaris ]
+ then
+ cat
+ else
+ sed \
+ -e '/disk.dev.avactive .* Unknown metric name/d' \
+ -e '/network.icmp.* Unknown metric name/d' \
+ -e '/network.igmp.* Unknown metric name/d' \
+ -e '/network.ip.* Unknown metric name/d' \
+ -e '/network.tcp.* Unknown metric name/d' \
+ -e '/network.udp.* Unknown metric name/d' \
+ -e '/filesys.* Unknown metric name/d' \
+ -e '/nfs.* Unknown metric name/d' \
+ -e '/rpc.* Unknown metric name/d' \
+ -e '/swap .* Unknown metric name/d' \
+ -e '/swap.pages.* Unknown metric name/d' \
+ -e '/swapdev .* Unknown metric name/d' \
+ # solaris
+ fi
+}
+
+_filter_darwin()
+{
+ if [ $PCP_PLATFORM != darwin ]
+ then
+ cat
+ else
+ sed \
+ -e '/disk.dev.avactive .* Unknown metric name/d' \
+ -e '/network.icmp.* Unknown metric name/d' \
+ -e '/network.igmp.* Unknown metric name/d' \
+ -e '/network.ip.* Unknown metric name/d' \
+ -e '/network.tcp.* Unknown metric name/d' \
+ -e '/network.udp.* Unknown metric name/d' \
+ -e '/nfs.* Unknown metric name/d' \
+ -e '/swap .* Unknown metric name/d' \
+ -e '/swap.pages.* Unknown metric name/d' \
+ -e '/swapdev .* Unknown metric name/d' \
+ # darwin
+ fi
+}
+
+_filter_irix()
+{
+ # these are always-on in older oss versions of pcp
+ sed \
+ -e '/disk.dev.avg_disk.active .* metric name/d' \
+ -e '/disk.all.avg_disk.active .* metric name/d' \
+ -e '/disk.dev.bytes .* Unknown metric name/d' \
+ -e '/disk.all.bytes .* Unknown metric name/d' \
+ -e '/network.igmp .* Unknown metric name/d' \
+ -e '/swap.in .* Metric not supported/d' \
+ -e '/swap.out .* Metric not supported/d'
+}
+
+# remove all known platform-dependencies from output
+# (ideally leaving any genuine failures behind)
+#
+_filter()
+{
+ _filter_irix | _filter_solaris | _filter_darwin
+}
+
+# real QA test starts here
+pmlogconf $tmp.conf >$tmp.out 2>&1
+cat $tmp.out >$seq.full
+
+sed -e 's/:n:/:y:/' <$tmp.conf >$tmp.tmp
+mv $tmp.tmp $tmp.conf
+
+yes '' | pmlogconf $tmp.conf >$tmp.out
+( echo && echo "== TMP.OUT" ) >>$seq.full
+cat $tmp.out >>$seq.full
+( echo && echo "== TMP.CONF") >>$seq.full
+cat $tmp.conf >>$seq.full
+( echo && echo "== FILTERED") >>$seq.full
+
+sed -n <$tmp.conf \
+ -e '/^[ ]/{
+s/^[ ]*//
+s/[ ].*//
+/^#/d
+p
+}' \
+| LC_COLLATE=POSIX sort \
+| uniq \
+| tee -a $seq.full \
+| xargs pmprobe $target \
+| _filter \
+| $PCP_AWK_PROG '
+$2 >= 0 { next }
+ { print }'
+
+echo Silence is golden
+# success, all done
+exit
diff --git a/qa/364.out b/qa/364.out
new file mode 100644
index 0000000..6bc54ae
--- /dev/null
+++ b/qa/364.out
@@ -0,0 +1,2 @@
+QA output created by 364
+Silence is golden
diff --git a/qa/365 b/qa/365
new file mode 100755
index 0000000..7400dc0
--- /dev/null
+++ b/qa/365
@@ -0,0 +1,170 @@
+#!/bin/sh
+# PCP QA Test No. 365
+# Errors in pmcd.conf [acccess] that should not prevent pmcd starting
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+. ./localconfig
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+qahost=`hostname`
+eval `./getpmcdhosts -L -n 2 2>$tmp.out | sed -e 's/^/other1=/' -e 's/ / other2=/'`
+echo "other1=$other1" >$seq.full
+echo "other2=$other2" >>$seq.full
+echo "qahost=$qahost" >>$seq.full
+[ -z "$other1" ] && _notrun "Cannot find first remote host running pmcd"
+[ -z "$other2" ] && _notrun "Cannot find second remote host running pmcd"
+
+status=1
+done_clean=false
+rm -f $seq.full
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ done_clean=true
+ fi
+ exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+if [ $PCP_PLATFORM = linux ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+
+End-of-File
+elif [ $PCP_PLATFORM = irix ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+
+End-of-File
+elif [ $PCP_PLATFORM = darwin ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+
+End-of-File
+elif [ $PCP_PLATFORM = solaris ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+
+End-of-File
+else
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+fi
+
+cat <<End-of-File >>$tmp.tmp
+
+[access]
+allow not.a.real.host : all;
+allow nohost.engr.sgi.com, $qahost : all;
+allow $other1, not.a.real.host, localhost : fetch;
+allow localhost, $other2, nohost.melbourne.sgi.com : store;
+allow "local:" , "unix:" : all;
+End-of-File
+
+echo >> $tmp.tmp
+echo "# from qa/$seq" >> $tmp.tmp
+
+$sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
+echo >>$seq.full
+echo "=== pmcd.conf ===" >>$seq.full
+cat $PCP_PMCDCONF_PATH >>$seq.full
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+cat $PCP_PMCDLOG_PATH >>$seq.full
+echo >>$seq.full
+echo "=== pmcd.log ===" >>$seq.full
+_filter_pmcd_log <$PCP_PMCDLOG_PATH \
+| sed \
+ -e '/^linux/{
+s/ [12] dso/1-or-2 dso/
+s/lib=\/usr\//lib=\/usr-or-var\//
+s/lib=\/var\//lib=\/usr-or-var\//
+}' \
+ -e 's/__pmGetAddrInfo/gethostbyname/g' \
+ -e 's/__pmGetHostByName/gethostbyname/g' \
+ -e '/gethostbyname(/s/ Unknown host/ No address associated with name/' \
+ -e '/gethostbyname(/s/ Host name lookup failure/ No address associated with name/' \
+ -e '/gethostbyname(/s/ Resolver Error 0 (no error)/ No address associated with name/' \
+ -e "/$qahost\$/"'{
+s/ [0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* / LOCALIP /
+s/ */ /g
+}' \
+ -e "/$other1\$/"'{
+s/ [0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* / OTHERIP1 /
+s/ */ /g
+}' \
+ -e "/$other2\$/"'{
+s/ [0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* / OTHERIP2 /
+s/ */ /g
+}' \
+ -e "s/$qahost\$/LOCALHOST/g" \
+ -e "s/$other1\$/OTHERHOST1/g" \
+ -e "s/$other2\$/OTHERHOST2/g" \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ -e '/1 unix:$/d' \
+ -e '/error sending Conn ACK PDU/d' \
+ -e "s/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]/<hexnum>/" \
+ | $PCP_AWK_PROG '
+$8 ~ /^[A-Z]+HOST[12]*$/ && $5 ~ /^[0-9a-f]/ {
+ sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"<ipaddr>",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*%[0-9a-z]+$/,"<ipaddr>",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"<ipaddr>",$5)
+ }
+ { print }'
+
+echo "check pmcd is up and we can get local access" >> $seq.full
+pmprobe hinv.ncpu >>$seq.full 2>&1 || echo "ACCESS DENIED"
+
+status=0
+exit
diff --git a/qa/365.out.ipv6 b/qa/365.out.ipv6
new file mode 100644
index 0000000..3ea54aa
--- /dev/null
+++ b/qa/365.out.ipv6
@@ -0,0 +1,41 @@
+QA output created by 365
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: gethostbyname(not.a.real.host), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 8]: Warning: access control error for host 'not.a.real.host': No route to host
+[DATE] pmcd(PID) Error: gethostbyname(nohost.engr.sgi.com), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 9]: Warning: access control error for host 'nohost.engr.sgi.com': No route to host
+[DATE] pmcd(PID) Error: gethostbyname(not.a.real.host), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 10]: Warning: access control error for host 'not.a.real.host': No route to host
+[DATE] pmcd(PID) Error: gethostbyname(nohost.melbourne.sgi.com), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 11]: Warning: access control error for host 'nohost.melbourne.sgi.com': No route to host
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+ y y 0 0 LOCALIP 255.255.255.255 0 LOCALHOST
+ y 0 0 OTHERIP1 255.255.255.255 0 OTHERHOST1
+ y 0 0 OTHERIP2 255.255.255.255 0 OTHERHOST2
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+ok FD 44321 ipv6 INADDR_ANY
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/365.out.nonipv6 b/qa/365.out.nonipv6
new file mode 100644
index 0000000..5cc15ad
--- /dev/null
+++ b/qa/365.out.nonipv6
@@ -0,0 +1,40 @@
+QA output created by 365
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Log for pmcd on HOST started DATE
+
+[DATE] pmcd(PID) Error: gethostbyname(not.a.real.host), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 8]: Warning: access control error for host 'not.a.real.host': No route to host
+[DATE] pmcd(PID) Error: gethostbyname(nohost.engr.sgi.com), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 9]: Warning: access control error for host 'nohost.engr.sgi.com': No route to host
+[DATE] pmcd(PID) Error: gethostbyname(not.a.real.host), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 10]: Warning: access control error for host 'not.a.real.host': No route to host
+[DATE] pmcd(PID) Error: gethostbyname(nohost.melbourne.sgi.com), No address associated with name
+Warning: the following access control specification will be ignored
+pmcd config[line 11]: Warning: access control error for host 'nohost.melbourne.sgi.com': No route to host
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+[OS] ?? 2 dso i:? lib=[OS]pmda.$DSO_SUFFIX entry=[OS]_init
+pmcd 2 2 dso i:5 lib=...pmda_pmcd.$DSO_SUFFIX entry=pmcd_init
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+ y y 0 0 LOCALIP 255.255.255.255 0 LOCALHOST
+ y 0 0 OTHERIP1 255.255.255.255 0 OTHERHOST1
+ y 0 0 OTHERIP2 255.255.255.255 0 OTHERHOST2
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD 44321 inet INADDR_ANY
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/366 b/qa/366
new file mode 100755
index 0000000..761b2a2
--- /dev/null
+++ b/qa/366
@@ -0,0 +1,332 @@
+#!/bin/sh
+# PCP QA Test No. 366
+# pmlogconf - migrate from version 1.0 to 2.0
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+# Maintenance notes.
+# As pmlogconf usage grows, the generated pmlogconf files are going
+# to become more complicated and more variable across platforms and
+# in particular groups will change from not being expanded by default
+# to be expanded by default, and new groups will be added.
+#
+# Where this test _expects_ a control line to be expanded to a group
+# of metrics, we use platform/version variants of the *.out files.
+#
+# But where a control line is expanded on some platforms, but not
+# on others, we should just cull the control line from the $tmp.conf
+# file and the block of related changes in all the *.out files ...
+# as long as some expansion is done, the test remains valid.
+#
+# Newly added groups should be handled by adding to the $tmp.cull-list
+# file below, using the pmlogconf "tag", e.g. networking/nfs2-client, and
+# possibly removing the block of related changes in all the *.out files
+#
+# Newly added metrics within a group we care about should be culled
+# in _filter().
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ -f $PCP_BINADM_DIR/pmlogconf-setup ] || _notrun "pmlogconf version 2.0 not installed"
+
+_filter()
+{
+ sed \
+ -e '/network.interface.out.fifo/d' \
+ -e '/network.interface.in.fifo/d' \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;g" \
+ -e '/^[0-9]/d'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.cull-list
+networking/nfs2-client
+networking/nfs2-server
+networking/nfs3-client
+networking/nfs3-server
+networking/nfs4-client
+networking/nfs4-server
+tools/atop
+tools/collectl
+tools/dmcache
+tools/mpstat
+tools/vmstat
+tools/iostat
+tools/sar
+shping/summary
+postgresql/summary
+sqlserver/summary
+mysql/summary
+memory/proc-linux
+disk/perpartition
+End-of-File
+
+# turn $tmp.cull-list into an awk program to cull groups like
+#+ networking/nfs2-client:n:default:
+## NFS v2 client stats
+#----
+#
+echo "BEGIN { i=0; skip=0" >$tmp.awk
+sed -e 's/.*/ cull[i++] = "&"/' <$tmp.cull-list >>$tmp.awk
+cat <<'End-of-File' >>$tmp.awk
+}
+$1 == "#+" { for (tag in cull) {
+ split($2, word, /:/)
+ if (word[1] == cull[tag]) {
+ skip = 1
+ next
+ }
+ }
+ skip = 0
+}
+skip == 0 { print }
+End-of-File
+
+cat <<'End-of-File' >$tmp.conf
+#pmlogconf 1.0
+# pmlogconf.sh control file version
+#
+# pmlogger(1) config file created and updated by
+# pmlogconf.sh(1).
+#
+# DO NOT UPDATE THE INTITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf.sh is used
+# on this file.
+#
+
+# System configuration
+#
+#+ I0:n:once:
+## hardware configuration [nodevis, osvis, oview, routervis,
+## pmchart:Overview]
+#----
+
+# Disk activity
+#
+#+ D0:n:default:
+## activity (IOPs and bytes for both reads and writes) over all disks
+## [osvis, pmstat, pmchart:Disk, pmchart:Overview]
+#----
+#+ D1:n:default:
+## per controller disk activity [pmchart:DiskCntrls]
+#----
+#+ D2:n:default:
+## per spindle disk activity [dkvis, pmie:per_disk]
+#----
+#+ D3:n:default:
+## all available data per disk spindle
+#----
+
+# CPU activity
+#
+#+ C0:n:default:
+## utilization (usr, sys, idle, ...) over all CPUs [osvis, pmstat,
+## pmchart:CPU, pmchart:Overview, pmie:cpu]
+#----
+#+ C2:n:default:
+## contributions to CPU wait time
+#----
+#+ C1:n:default:
+## utilization per CPU [clustervis, mpvis, nodevis, oview, pmie:cpu,
+## pmie:per_cpu]
+#----
+#+ C3:n:default:
+## per CPU contributions to wait time
+#----
+
+# Kernel activity
+#
+#+ K0:n:default:
+## load average and number of logins [osvis, pmstat, pmchart:LoadAvg,
+## pmchart:Overview, pmie:cpu]
+#----
+#+ Ka:n:default:
+## run and swap queues [pmkstat]
+#----
+#+ K1:n:default:
+## context switches, total syscalls and counts for selected calls (e.g. read,
+## write, fork, exec, select) over all CPUs [pmstat, pmchart:Syscalls,
+## pmie:cpu]
+#----
+#+ K2:n:default:
+## per CPU context switches, total syscalls and counts for selected calls
+## [pmie:per_cpu]
+#----
+#+ K3:n:default:
+## bytes across the read() and write() syscall interfaces
+#----
+#+ K4:n:default:
+## interrupts [pmkstat]
+#----
+#+ K5:n:default:
+## buffer cache reads, writes, hits and misses [pmchart:BufferCache,
+## pmie:filesys]
+#----
+#+ K6:n:default:
+## all available buffer cache data
+#----
+#+ K7:n:default:
+## vnode activity
+#----
+#+ K8:n:default:
+## name cache (namei, iget, etc) activity [pmchart:DNLC, pmie:filesys]
+#----
+#+ K9:n:default:
+## asynchronous I/O activity
+#----
+
+# Memory
+#
+#+ M0:n:default:
+## pages in and out (severe VM demand) [pmstat, pmchart:Paging]
+#----
+#+ M1:n:default:
+## address translation (faults and TLB activity)
+#----
+#+ M2:n:default:
+## kernel memory allocation [osvis, pmstat, pmchart:Memory, pmchart:Overview]
+#----
+#+ M3:n:default:
+## current swap allocation and all swap activity [pmchart:Swap, pmie:memory]
+#----
+#+ M4:n:default:
+## swap configuration
+#----
+#+ M5:n:default:
+## "large" page and Origin node-based allocations and activity [nodevis,
+## oview]
+#----
+#+ M7:n:default:
+## NUMA migration stats [nodevis, oview]
+#----
+#+ M6:n:default:
+## all NUMA stats
+#----
+
+# Network
+#
+#+ N0:n:default:
+## bytes and packets (in and out) and bandwidth per network interface
+## [clustervis, osvis, pmchart:NetBytes, pmchart:Overview, pmie:per_netif]
+#----
+#+ N1:n:default:
+## all available data per network interface
+#----
+#+ N2:n:default:
+## TCP bytes and packets (in and out), connects, accepts, drops and closes
+## [pmchart:NetConnDrop, pmchart:NetPackets, pmie:network]
+#----
+#+ N3:n:default:
+## all available TCP data [pmchart:NetTCPCongestion]
+#----
+#+ N4:n:default:
+## UDP packets in and out [pmchart:NetPackets]
+#----
+#+ N5:n:default:
+## all available UDP data
+#----
+#+ N6:n:default:
+## socket stats (counts by type and state)
+#----
+#+ N7:n:default:
+## all available data for other protocols (IP, ICMP, IGMP)
+#----
+#+ N8:n:default:
+## mbuf stats (alloc, failed, waited, etc) [pmie:network]
+#----
+#+ N9:n:default:
+## multicast routing stats
+#----
+#+ Na:n:default:
+## SVR5 streams activity
+#----
+
+# Services
+#
+#+ S2:n:default:
+## RPC stats [pmie:rpc]
+#----
+
+# Filesystems and Volumes
+#
+#+ F0:n:default:
+## Filesystem fullness [pmchart:FileSystem, pmie:filesys]
+#----
+#+ F1:n:default:
+## XFS data and log traffic
+#----
+#+ F2:n:default:
+## all available XFS data
+#----
+#+ F3:n:default:
+## XLV operations and bytes per volume [xlv_vis]
+#----
+#+ F4:n:default:
+## XLV striped volume stats [xlv_vis]
+#----
+#+ F6:n:default:
+## XVM operations and bytes per volume
+#----
+#+ F7:n:default:
+## XVM stripe, mirror and concat volume stats [pmie:xvm]
+#----
+#+ F8:n:default:
+## all available XVM data
+#----
+#+ F5:n:default:
+## EFS activity
+#----
+
+# Hardware event counters
+#
+#+ H0:n:default:
+## NUMALink routers [nodevis, oview, routervis, pmchart:NUMALinks,
+## pmie:craylink]
+#----
+#+ H1:n:default:
+## Origin hubs [pmie:craylink]
+#----
+#+ H2:n:default:
+## global MIPS CPU event counters (enable first with ecadmin(1))
+#----
+#+ H3:n:default:
+## XBOW activity [xbowvis]
+#----
+
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf.sh is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+End-of-File
+cp $tmp.conf $tmp.orig
+
+# real QA test starts here
+echo q \
+| $PCP_BINADM_DIR/pmlogconf $tmp.conf >/dev/null
+
+cat $tmp.conf >$seq.full
+echo >>$seq.full
+cat $tmp.awk >>$seq.full
+$PCP_AWK_PROG -f $tmp.awk <$tmp.conf >$tmp.tmp
+echo >>$seq.full
+echo "after awking ..." >>$seq.full
+cat $tmp.tmp >>$seq.full
+
+diff $tmp.orig $tmp.tmp | _filter
+
+# success, all done
+exit
diff --git a/qa/366.out b/qa/366.out
new file mode 100644
index 0000000..decc957
--- /dev/null
+++ b/qa/366.out
@@ -0,0 +1,470 @@
+QA output created by 366
+< #pmlogconf 1.0
+---
+> #pmlogconf 2.0
+> #+ groupdir $PCP_VAR_DIR/config/pmlogconf
+> #
+< #+ I0:n:once:
+< ## hardware configuration [nodevis, osvis, oview, routervis,
+< ## pmchart:Overview]
+---
+> #+ platform/hinv:y:once:
+> ## platform, filesystem and hardware configuration
+> log advisory on once {
+> hinv
+> kernel.uname
+> filesys.mountdir
+> filesys.blocksize
+> filesys.capacity
+> }
+< #+ D0:n:default:
+< ## activity (IOPs and bytes for both reads and writes) over all disks
+< ## [osvis, pmstat, pmchart:Disk, pmchart:Overview]
+---
+> #+ disk/summary:y:default:
+> ## summary disk activity (IOPs and bytes for both reads and writes over
+> ## all disks).
+> log advisory on default {
+> disk.all.read
+> disk.all.write
+> disk.all.total
+> disk.all.read_bytes
+> disk.all.write_bytes
+> disk.all.total_bytes
+> disk.all.avactive
+> }
+< #+ D1:n:default:
+< ## per controller disk activity [pmchart:DiskCntrls]
+---
+> #+ disk/percontroller:x::
+< #+ D2:n:default:
+< ## per spindle disk activity [dkvis, pmie:per_disk]
+---
+> #+ disk/perdisk:n:default:
+> ## per spindle disk activity
+< #+ D3:n:default:
+---
+> #+ v1.0/D3:n:default:
+< #+ C0:n:default:
+< ## utilization (usr, sys, idle, ...) over all CPUs [osvis, pmstat,
+< ## pmchart:CPU, pmchart:Overview, pmie:cpu]
+---
+> #+ cpu/summary:y:default:
+> ## utilization (usr, sys, idle, ...) over all CPUs
+> log advisory on default {
+> kernel.all.cpu
+> }
+< #+ C2:n:default:
+---
+> #+ v1.0/C2:n:default:
+< #+ C1:n:default:
+< ## utilization per CPU [clustervis, mpvis, nodevis, oview, pmie:cpu,
+< ## pmie:per_cpu]
+---
+> #+ cpu/percpu:n:default:
+> ## utilization per CPU
+< #+ C3:n:default:
+---
+> #+ v1.0/C3:n:default:
+< #+ K0:n:default:
+< ## load average and number of logins [osvis, pmstat, pmchart:LoadAvg,
+< ## pmchart:Overview, pmie:cpu]
+---
+> #+ v1.0/K0:y:default:
+> ## load average and number of logins
+> log advisory on default {
+> kernel.all.load
+> kernel.all.users
+> }
+< #+ Ka:n:default:
+< ## run and swap queues [pmkstat]
+---
+> #+ kernel/queues-irix:x::
+< #+ K1:n:default:
+< ## context switches, total syscalls and counts for selected calls (e.g. read,
+< ## write, fork, exec, select) over all CPUs [pmstat, pmchart:Syscalls,
+< ## pmie:cpu]
+---
+> #+ kernel/syscalls-irix:x::
+< #+ K2:n:default:
+< ## per CPU context switches, total syscalls and counts for selected calls
+< ## [pmie:per_cpu]
+---
+> #+ kernel/syscalls-percpu-irix:x::
+< #+ K3:n:default:
+< ## bytes across the read() and write() syscall interfaces
+---
+> #+ kernel/read-write-data:x::
+< #+ K4:n:default:
+< ## interrupts [pmkstat]
+---
+> #+ kernel/interrupts-irix:x::
+< #+ K5:n:default:
+< ## buffer cache reads, writes, hits and misses [pmchart:BufferCache,
+< ## pmie:filesys]
+---
+> #+ kernel/bufcache-activity:x::
+< #+ K6:n:default:
+< ## all available buffer cache data
+---
+> #+ kernel/bufcache-all:x::
+< #+ K7:n:default:
+< ## vnode activity
+---
+> #+ kernel/vnodes:x::
+< #+ K8:n:default:
+< ## name cache (namei, iget, etc) activity [pmchart:DNLC, pmie:filesys]
+---
+> #+ kernel/inode-cache:x::
+< #+ K9:n:default:
+< ## asynchronous I/O activity
+---
+> #+ sgi/kaio:x::
+< #+ M0:n:default:
+< ## pages in and out (severe VM demand) [pmstat, pmchart:Paging]
+---
+> #+ memory/swap-activity:n:default:
+> ## pages in and out (severe VM demand)
+< #+ M1:n:default:
+< ## address translation (faults and TLB activity)
+---
+> #+ memory/tlb-irix:x::
+< #+ M2:n:default:
+< ## kernel memory allocation [osvis, pmstat, pmchart:Memory, pmchart:Overview]
+---
+> #+ kernel/memory-irix:x::
+< #+ M3:n:default:
+< ## current swap allocation and all swap activity [pmchart:Swap, pmie:memory]
+---
+> #+ memory/swap-all:n:default:
+> ## current swap allocation and all swap activity
+< #+ M4:n:default:
+---
+> #+ memory/swap-config:n:default:
+< #+ M5:n:default:
+< ## "large" page and Origin node-based allocations and activity [nodevis,
+< ## oview]
+---
+> #+ sgi/node-memory:x::
+< #+ M7:n:default:
+< ## NUMA migration stats [nodevis, oview]
+---
+> #+ sgi/numa-summary:x::
+< #+ M6:n:default:
+< ## all NUMA stats
+---
+> #+ sgi/numa:x::
+< #+ N0:n:default:
+< ## bytes and packets (in and out) and bandwidth per network interface
+< ## [clustervis, osvis, pmchart:NetBytes, pmchart:Overview, pmie:per_netif]
+---
+> #+ networking/interface-summary:y:default:
+> ## bytes, packets and errors (in and out) per network interface
+> log advisory on default {
+> network.interface.in.bytes
+> network.interface.in.packets
+> network.interface.in.errors
+> network.interface.out.bytes
+> network.interface.out.packets
+> network.interface.out.errors
+> network.interface.collisions
+> }
+< #+ N1:n:default:
+---
+> #+ networking/interface-all:n:default:
+< #+ N2:n:default:
+< ## TCP bytes and packets (in and out), connects, accepts, drops and closes
+< ## [pmchart:NetConnDrop, pmchart:NetPackets, pmie:network]
+---
+> #+ networking/tcp-activity-irix:x::
+< #+ N3:n:default:
+< ## all available TCP data [pmchart:NetTCPCongestion]
+---
+> #+ networking/tcp-all:n:default:
+> ## all available TCP data
+< #+ N4:n:default:
+< ## UDP packets in and out [pmchart:NetPackets]
+---
+> #+ networking/udp-packets-irix:x::
+< #+ N5:n:default:
+---
+> #+ networking/udp-all:n:default:
+< #+ N6:n:default:
+< ## socket stats (counts by type and state)
+---
+> #+ networking/socket-irix:x::
+< #+ N7:n:default:
+< ## all available data for other protocols (IP, ICMP, IGMP)
+---
+> #+ networking/other-protocols:n:default:
+> ## all available data for other protocols (ip, icmp, igmp, udplite)
+< #+ N8:n:default:
+< ## mbuf stats (alloc, failed, waited, etc) [pmie:network]
+---
+> #+ networking/mbufs:x::
+< #+ N9:n:default:
+< ## multicast routing stats
+---
+> #+ networking/multicast:x::
+< #+ Na:n:default:
+< ## SVR5 streams activity
+---
+> #+ networking/streams:x::
+< #+ S2:n:default:
+< ## RPC stats [pmie:rpc]
+---
+> #+ networking/rpc:n:default:
+> ## RPC stats
+< #+ F0:n:default:
+< ## Filesystem fullness [pmchart:FileSystem, pmie:filesys]
+---
+> #+ filesystem/all:n:default:
+> ## generic filesystem size, fullness and mount information
+< #+ F1:n:default:
+< ## XFS data and log traffic
+---
+> #+ filesystem/xfs-io-irix:x::
+< #+ F2:n:default:
+< ## all available XFS data
+---
+> #+ filesystem/xfs-all:n:default:
+> ## all available XFS information
+< #+ F3:n:default:
+< ## XLV operations and bytes per volume [xlv_vis]
+---
+> #+ sgi/xlv-activity:x::
+< #+ F4:n:default:
+< ## XLV striped volume stats [xlv_vis]
+---
+> #+ sgi/xlv-stripe-io:x::
+< #+ F6:n:default:
+< ## XVM operations and bytes per volume
+---
+> #+ sgi/xvm-ops:x::
+< #+ F7:n:default:
+< ## XVM stripe, mirror and concat volume stats [pmie:xvm]
+---
+> #+ sgi/xvm-stats:x::
+< #+ F8:n:default:
+< ## all available XVM data
+---
+> #+ sgi/xvm-all:x::
+< #+ F5:n:default:
+< ## EFS activity
+---
+> #+ sgi/efs:x::
+< #+ H0:n:default:
+< ## NUMALink routers [nodevis, oview, routervis, pmchart:NUMALinks,
+< ## pmie:craylink]
+---
+> #+ sgi/craylink:x::
+< #+ H1:n:default:
+< ## Origin hubs [pmie:craylink]
+---
+> #+ sgi/hub:x::
+< #+ H2:n:default:
+< ## global MIPS CPU event counters (enable first with ecadmin(1))
+---
+> #+ sgi/cpu-evctr:x::
+< #+ H3:n:default:
+< ## XBOW activity [xbowvis]
+---
+> #+ sgi/xbow:x::
+> #+ apache/processes:x::
+> #----
+> #+ apache/summary:x::
+> #----
+> #+ apache/uptime:x::
+> #----
+> #+ filesystem/summary:n:default:
+> ## filesystem size and fullness
+> #----
+> #+ filesystem/xfs-io-linux:n:default:
+> ## XFS data and log I/O traffic [Linux]
+> #----
+> #+ kernel/load:n:default:
+> ## load average
+> #----
+> #+ kernel/memory-linux:n:default:
+> ## kernel memory allocation [Linux]
+> #----
+> #+ kernel/summary-linux:y:default:
+> ## summary kernel performance data [Linux]
+> log advisory on default {
+> mem.util
+> swap.pagesin
+> swap.pagesout
+> swap.free
+> swap.used
+> kernel.all.pswitch
+> kernel.all.intr
+> kernel.all.load
+> kernel.all.runnable
+> network.interface.collisions
+> network.interface.in.drops
+> network.interface.out.drops
+> disk.dev.avactive
+> filesys.full
+> }
+> #----
+> #+ kernel/summary-windows:x::
+> #----
+> #+ kernel/syscalls-linux:n:default:
+> ## context switches and fork system calls over all CPUs [Linux]
+> #----
+> #+ mailq/summary:x::
+> #----
+> #+ netfilter/config:x::
+> #----
+> #+ netfilter/summary:x::
+> #----
+> #+ networking/socket-linux:n:default:
+> ## socket stats (in use, high-water mark, etc.) [Linux]
+> #----
+> #+ networking/tcp-activity-linux:n:default:
+> ## TCP packets (in and out), errors and retransmits [Linux]
+> #----
+> #+ networking/udp-packets-linux:n:default:
+> ## UDP packets in and out [Linux]
+> #----
+> #+ platform/linux:y:once:
+> ## Linux swap, cache and networking configuration
+> log advisory on once {
+> swap.length
+> mem.slabinfo.objects.size
+> network.interface.mtu
+> network.interface.speed
+> network.interface.duplex
+> network.interface.inet_addr
+> }
+> #----
+> #+ tools/atop-proc:n:120 seconds:
+> ## per-process metrics used by the atop command
+> #----
+> #+ tools/atop-summary:y:once:
+> ## metrics sampled once by the atop command
+> log advisory on once {
+> hinv.cpu.clock
+> hinv.ncpu
+> mem.physmem
+> }
+> #----
+> #+ tools/collectl-summary:y:once:
+> ## metrics sampled once by the collectl command
+> log advisory on once {
+> hinv.ncpu
+> mem.physmem
+> }
+> #----
+> #+ tools/free:y:default:
+> ## metrics used by the pcp-free(1) command
+> log advisory on default {
+> mem.util.free
+> mem.util.shared
+> mem.util.bufmem
+> mem.util.cached
+> mem.util.highFree
+> mem.util.highTotal
+> mem.util.lowFree
+> mem.util.lowTotal
+> mem.util.swapFree
+> mem.util.swapTotal
+> }
+> #----
+> #+ tools/free-summary:y:once:
+> ## metrics sampled once by the pcp-free(1) command
+> log advisory on once {
+> mem.physmem
+> }
+> #----
+> #+ tools/ip:y:default:
+> ## metrics used by the ip(1) command
+> log advisory on default {
+> network.interface.mtu
+> network.interface.out.bytes
+> network.interface.out.packets
+> network.interface.out.errors
+> network.interface.out.drops
+> network.interface.out.carrier
+> network.interface.collisions
+> network.interface.in.bytes
+> network.interface.in.packets
+> network.interface.in.errors
+> network.interface.in.drops
+> network.interface.total.mcasts
+> }
+> #----
+> #+ tools/numastat:y:default:
+> ## metrics used by the pcp-numastat(1) command
+> log advisory on default {
+> mem.numa.alloc
+> }
+> #----
+> #+ tools/pcp-summary:y:once:
+> ## metrics used by the pcp(1) command
+> log advisory on once {
+> hinv.ncpu
+> hinv.ndisk
+> hinv.nnode
+> hinv.physmem
+> pmda.uname
+> pmcd.numagents
+> pmcd.numclients
+> pmcd.services
+> pmcd.version
+> pmcd.build
+> pmcd.agent.status
+> pmcd.pmlogger
+> pmcd.pmie
+> }
+> #----
+> #+ tools/pmclient:n:5 second:
+> ## metrics sampled frequently by the pmclient(1) command
+> #----
+> #+ tools/pmclient-summary:n:once:
+> ## metrics sampled once by the pmclient(1) command
+> #----
+> #+ tools/pmieconf:n:default:
+> ## metrics used by pmie(1) rules from the pmieconf(1) command
+> #----
+> #+ tools/pmstat:y:default:
+> ## metrics used by the pmstat(1) command
+> log advisory on default {
+> kernel.all.load
+> swap.used
+> mem.util.free
+> mem.util.bufmem
+> mem.util.cached
+> swap.in
+> swap.pagesin
+> swap.out
+> swap.pagesout
+> disk.all.blkread
+> disk.all.blkwrite
+> kernel.all.intr
+> kernel.all.pswitch
+> kernel.all.cpu
+> }
+> #----
+> #+ tools/sar-summary:y:once:
+> ## metrics sampled once by the sar(1) command
+> log advisory on once {
+> hinv.ncpu
+> }
+> #----
+> #+ tools/uptime:y:default:
+> ## metrics used by the pcp-uptime(1) command
+> log advisory on default {
+> kernel.all.load
+> kernel.all.nusers
+> kernel.all.uptime
+> }
+> #----
+> #+ tools/vmstat-summary:y:once:
+> ## metrics sampled once by the vmstat(1) command
+> log advisory on once {
+> mem.physmem # K total memory
+> }
+> #----
+> #+ zimbra/all:x::
+> #----
diff --git a/qa/367 b/qa/367
new file mode 100755
index 0000000..106c85c
--- /dev/null
+++ b/qa/367
@@ -0,0 +1,241 @@
+#! /bin/sh
+# PCP QA Test No. 367
+# pdu encode-decode
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+endian=`_get_endian`
+if [ $PCP_VER -ge 3800 ]; then
+ ln $seq.out.$endian.2 $seq.out
+else
+ ln $seq.out.1 $seq.out
+fi
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$signal -a -s KILL pdu-server >/dev/null 2>&1
+sleep 1
+
+port=`_get_port tcp 6666 6676`
+if [ -z "$port" ]
+then
+ netstat -an | grep '66.6'
+ echo "Argh ... no free tcp port in the range 6666 ... 6676"
+ exit 1
+fi
+
+src/pdu-server -p $port -D pdu,appl0 -Z UTC >$tmp.out 2>&1 &
+server_pid=$!
+
+sleep 1
+
+src/pducheck -p $port -i 1 localhost
+
+sleep 1
+
+$signal -s TERM $server_pid
+
+cp $tmp.out $seq.full
+
+eval `sed -n <$tmp.out -e '/MYPID/{
+s/.*MYPID /server=/
+s/ / server_x=/p
+q
+}'`
+
+echo >>$seq.full
+echo "================" >>$seq.full
+echo "server=$server" >>$seq.full
+echo "server_x=$server_x" >>$seq.full
+
+if [ -z "$server" -o -z "$server_x" ]
+then
+ cat $tmp.out
+ echo "Error: arrgh, cannot get server PID from output ..."
+ exit
+fi
+
+eval `sed -n <$tmp.out -e '/CLIENTPID/{
+s/.*CLIENTPID /client=/
+s/ / client_x=/p
+q
+}'`
+echo "client=$client" >>$seq.full
+echo "client_x=$client_x" >>$seq.full
+
+if [ -z "$client" -o -z "$client_x" ]
+then
+ cat $tmp.out
+ echo "Error: arrgh, cannot get client PID from output ..."
+ exit
+fi
+
+sed <$tmp.out \
+ -e '/MYPID/d' \
+ -e '/CLIENTPID/d' \
+ -e '/ name\[/s/ ="/: "/' \
+ -e '/ status\[/s/ ="\(.*\)"/: \1/' \
+ -e 's/ fd=[0-9][0-9]*/ fd=<n>/' \
+ -e '/ id\[/{
+s/ id/ PMID/
+s/ =/:/
+s/0.0.0/0x00000000 &/
+s/123.456.789/0x1ec72315 &/
+s/255.0.0/0x3fc00000 &/
+s/0.4095.0/0x003ffc00 &/
+s/0.0.1023/0x000003ff &/
+s/PM_ID_NULL/0xffffffff &/
+}' \
+ -e '/pmGetPDU:/{
+s/\['$server'\]/[SERVER]/
+s/from='$client'/from=CLIENT/
+}' \
+ -e '/pmXmitPDU:/s/\['$server'\]/[SERVER]/' \
+ -e '/__pmtracexmitPDU:/s/\['$server'\]/[SERVER]/' \
+ -e '/PDU_CREDS:/s/sender='$client' /sender=CLIENT /' \
+ -e '/pmResult dump/s/0x[^ ]*/ADDR/' \
+ -e '/pmInResult dump/s/0x[^ ]*/ADDR/' \
+ -e '/value/s/[0-9]\.[0-9]*e-42/0/' \
+ -e '/value/s/[0-9]\.[0-9]*e-31[12]/0/' \
+ -e '/noname/s/Not privileged/Operation not permitted/' \
+ -e '/noname/s/Not owner/Operation not permitted/' \
+ -e '/^000:/{
+s/^\(...: ........ ........ \) *'$server_x' /\1 SERVER /
+s/^\(...: ........ ........ \) *'$client_x' /\1 CLIENT /
+s/e0a50100 40e20100 7000000 adde0000 1000000/ 1a5e0 1e240 7 dead 1/
+s/2a000000 1000000 2000000 0 fecaadde/ 2a 1 2 0 deadcafe/
+s/2b000000 0 0 6000000 0/ 2b 0 0 6 0/
+s/efbeadde 2000000 cefa0000 1000000 10f5200/deadbeef 2 face 1 1f025000/
+s/62000000 0 b000000 5000000 68706c61/ 62 0 b 5 616c7068/
+s/62000000 b000000 b000000 fbffffff 5000000/ 62 b b fffffffb 5/
+s/ 1000000 d000000 626d756d 662e656c 6c626d75/ 1 d 6d756d62 6c652e66 756d626c/
+s/cefa0000 c04b0300 f1fb0900 adde0000 0/ face 34bc0 9fbf1 dead 0/
+s/cefa0000 c04b0300 f1fb0900 adde0000 5000000/ face 34bc0 9fbf1 dead 5/
+s/cefa0000 c04b0300 f1fb0900 0 5000000/ face 34bc0 9fbf1 0 5/
+s/34120000 b000000 1000000 5000000 68706c61/ 1234 b 1 5 616c7068/
+s/34120000 b000000 1000000 0 2000000/ 1234 b 1 0 2/
+s/34120000 b000000 ffffffff 5000000 68706c61/ 1234 b ffffffff 5 616c7068/
+s/34120000 b000000 ffffffff 5000000 68706c61/ 1234 b ffffffff 5 616c7068/
+s/2b000000 6000000 0 1523c71e c03f/ 2b 6 0 1ec72315 3fc00000/
+s/80030601 2955385e 402f6a7a 622b3162 7e7e0032/ 1060380 402f6a7a 2955385e 62312b62 32007e7e/
+s/80030601 7a6a2f40 5e385529 622b3162 7e7e0032/ 1060380 402f6a7a 2955385e 62312b62 32007e7e/
+s/80030501 54442d18 402921fb 622b3162 7e7e7e00/ 1050380 402921fb 54442d18 62312b62 7e7e7e/
+s/80030501 fb212940 182d4454 622b3162 7e7e7e00/ 1050380 402921fb 54442d18 62312b62 7e7e7e/
+s/ b000000 1000000 e8030000 2000000 adde0000/ b 1 3e8 2 dead/
+s/d0b60000 39300000 dab60000 a05b0000/ b6d0 3039 b6da 5ba0/
+s/34000000 7972616d 64616820 6c206120/ 34 6d617279 20686164 2061206c/
+s/ d000000 2e6f6f66 2e726162 726f6e73/ d 666f6f2e 6261722e 736e6f72/
+s/80030401 7f3321d2 4022d97c 2b3162/ 1040380 4022d97c 7f3321d2 62312b00/
+s/80030401 7cd92240 d221337f 2b3162/ 1040380 4022d97c 7f3321d2 62312b00/
+s/80030301 54442d18 401921fb 7e003162/ 1030380 401921fb 54442d18 6231007e/
+s/80030301 fb211940 182d4454 7e003162/ 1030380 401921fb 54442d18 6231007e/
+s/80030201 54442d18 400921fb 7e7e0062/ 1020380 400921fb 54442d18 62007e7e/
+s/80030201 fb210940 182d4454 7e7e0062/ 1020380 400921fb 54442d18 62007e7e/
+s/cefa0000 c04b0300 f1fb0900/ face 34bc0 9fbf1/
+s/ 2000000 b0a0201 16151402/ 2 1020a0b 2141516/
+s/34123412 5000000/12341234 5/
+s/ 8001 0 ......../ 8001 0 ?? pad ?/
+s/ 8001 0 ......../ 8001 0 ?? pad ?/
+s/ 8002 0 3000000/ 8002 0 3/
+s/SERVER 3000000/SERVER 3/
+s/CLIENT 41000000/CLIENT 41/
+s/SERVER 39300000/SERVER 3039/
+s/CLIENT 39300000/CLIENT 3039/
+s/SERVER c7cfffff/SERVER ffffcfc7/
+s/CLIENT c7cfffff/CLIENT ffffcfc7/
+s/SERVER efbeadde/SERVER deadbeef/
+s/CLIENT efbeadde/CLIENT deadbeef/
+s/CLIENT 80030601 7a6a2f40 5e385529 622b3162 7e7e0032/CLIENT 1060380 402f6a7a 2955385e 62312b62 32007e7e/
+s/CLIENT 80030501 fb212940 182d4454 622b3162 7e7e7e00/CLIENT 1050380 402921fb 54442d18 62312b62 7e7e7e/
+s/CLIENT 80030401 7cd92240 d221337f 2b3162/CLIENT 1040380 4022d97c 7f3321d2 62312b00/
+s/CLIENT 80030301 fb211940 182d4454 7e003162/CLIENT 1030380 401921fb 54442d18 6231007e/
+s/CLIENT 80030201 fb210940 182d4454 7e7e0062/CLIENT 1020380 400921fb 54442d18 62007e7e/
+}' \
+ -e '/^008:/{
+s/68706c61 7e7e7e61 fcffffff 4000000 61746562 fdffffff 5000000 6d6d6167/616c7068 617e7e7e fffffffc 4 62657461 fffffffd 5 67616d6d/
+s/7e7e7e61 4000000 61746562 5000000 6d6d6167 7e7e7e61 28000000 676e6f6c/617e7e7e 4 62657461 5 67616d6d 617e7e7e 28 6c6f6e67/
+s/6c747469 616c2065 690a626d 66207374 6365656c 61772065 68772073 20657469/6974746c 65206c61 6d620a69 74732066 6c656563 65207761 73207768 69746520/
+s/ 1000000 ffffffff d2040000 efbe0000 3000000 2000000 29090000 4000000/ 1 ffffffff 4d2 beef 3 2 929 4/
+s/7e7e7e61 2000000 4000000 61746562 4000000 5000000 6d6d6167 7e7e7e61/617e7e7e 2 4 62657461 4 5 67616d6d 617e7e7e/
+s/7e7e7e61 ffffffff 4000000 61746562 ffffffff 5000000 6d6d6167 7e7e7e61/617e7e7e ffffffff 4 62657461 ffffffff 5 67616d6d 617e7e7e/
+s/efbe0000 3000000 2000000 29090000 4000000 800d0000 8000000/ beef 3 2 929 4 d80 8/
+s/e4b60000 7870000 1000000 1000000 0 80000 6f6f66/ b6e4 8707 1 1 0 800 666f6f00/
+s/ 4000000 0 8000000 0 10000000 0 20000000/ 4 0 8 0 10 0 20/
+s/ 2000000 0 cefa0000 1000000 1000000 0 1000000/ 2 0 face 1 1 0 1/
+s/d2040000 efbe0000 3000000 0 2000000 29090000/ 4d2 beef 3 0 2 929/
+s/1523c71e c03f fc3f00 ff030000 ffffffff/1ec72315 3fc00000 3ffc00 3ff ffffffff/
+s/ c03f fc3f00 ff030000 ffffffff/3fc00000 3ffc00 3ff ffffffff/
+s/68736966 7e7e7e6f/66697368 6f7e7e7e/
+s/008: fc3f00 ff030000 ffffffff/008: 3ffc00 3ff ffffffff/
+s/008: 7e7e7e74/008: 747e7e7e/
+s/008: 7e7e7e65/008: 657e7e7e/
+}' \
+ -e '/^016:/{
+s/7e7e7e61 feffffff 28000000 676e6f6c 6e6f6e2d 6572672d 6c2d6b65 65747465/617e7e7e fffffffe 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465/
+s/6e6f6e2d 6572672d 6c2d6b65 65747465 616e2d72 692d656d 68742d6e 696d2d65/2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61 6d652d69 6e2d7468 652d6d69/
+s/ffffffff 28000000 676e6f6c 6e6f6e2d 6572672d 6c2d6b65 65747465 616e2d72/ffffffff 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61/
+s/ 8000000 28000000 676e6f6c 6e6f6e2d 6572672d 6c2d6b65 65747465 616e2d72/ 8 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61/
+s/40000000 0 80000000 0 10000 0 20000/ 40 0 80 0 100 0 200/
+s/ 4000000 800d0000 8000000 d7110000 0 1000000 1000000/ 4 d80 8 11d7 0 1 1/
+s/800d0000 8000000 d7110000/ d80 8 11d7/
+s/ 2000000 40000/ 2 400/
+s/016: 73207361 a776f6e/016: 61732073 6e6f770a/
+s/016: d7110000/016: 11d7/
+}' \
+ -e '/^024:/{
+s/616e2d72 692d656d 68742d6e 696d2d65 656c6464 ffffffff 5000000 746c6564/722d6e61 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74/
+s/656c6464 5000000 746c6564 7e7e7e61 7000000 69737065 7e6e6f6c 3000000/64646c65 5 64656c74 617e7e7e 7 65707369 6c6f6e7e 3/
+s/692d656d 68742d6e 696d2d65 656c6464 ffffffff 5000000 746c6564 7e7e7e61/6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74 617e7e7e/
+s/692d656d 68742d6e 696d2d65 656c6464 10000000 5000000 746c6564 7e7e7e61/6d652d69 6e2d7468 652d6d69 64646c65 10 5 64656c74 617e7e7e/
+s/2a000000 1523c71e 1000000 1000000 ffffffff 2c000000 c03f 1000000/ 2a 1ec72315 1 1 ffffffff 2c 3fc00000 1/
+s/024: 0 40000 0/024: 0 400 0/
+s/2e6f6f66 2e726162/666f6f2e 6261722e/
+}' \
+ -e '/^032:/{
+s/7e7e7e61 0 7000000 69737065 7e6e6f6c 1000000 3000000 7e696870/617e7e7e 0 7 65707369 6c6f6e7e 1 3 7068697e/
+s/7e696870 2000000 7e7e756d 6000000 626d616c 7e7e6164 5000000 67656d6f/7068697e 2 6d757e7e 6 6c616d62 64617e7e 5 6f6d6567/
+s/ffffffff 7000000 69737065 7e6e6f6c ffffffff 3000000 7e696870 ffffffff/ffffffff 7 65707369 6c6f6e7e ffffffff 3 7068697e ffffffff/
+s/ 1000000 ffffffff 2f000000 fc3f00 1000000 1000000 ffffffff 31000000/ 1 ffffffff 2f 3ffc00 1 1 ffffffff 31/
+s/20000000 7000000 69737065 7e6e6f6c 40000000 3000000 7e696870 80000000/ 20 7 65707369 6c6f6e7e 40 3 7068697e 80/
+s/032: 6d6f63/032: 636f6d00/
+}' \
+ -e '/^040:/{
+s/ 2000000 2000000 7e7e756d 3000000 6000000 626d616c 7e7e6164 4000000/ 2 2 6d757e7e 3 6 6c616d62 64617e7e 4/
+s/ 2000000 7e7e756d ffffffff 6000000 626d616c 7e7e6164 ffffffff 5000000/ 2 6d757e7e ffffffff 6 6c616d62 64617e7e ffffffff 5/
+s/fecaadde c7cfffff 6000006 7e7e0030 c000003 21436587 78563412 8000004/deadcafe ffffcfc7 6000006 30007e7e 300000c 87654321 12345678 4000008/
+s/ 2000000 7e7e756d 10000 6000000 626d616c 7e7e6164 20000 5000000/ 2 6d757e7e 100 6 6c616d62 64617e7e 200 5/
+s/542d5a54 45524548/545a2d54 48455245/
+s/7e7e7e61 5000000 74656874 7e7e7e61/617e7e7e 5 74686574 617e7e7e/
+}' \
+ -e '/^048:/{
+s/ 5000000 67656d6f 7e7e7e61 5000000 5000000 74656874 7e7e7e61/ 5 6f6d6567 617e7e7e 5 5 74686574 617e7e7e/
+s/67656d6f 7e7e7e61 40000 5000000 74656874 7e7e7e61/6f6d6567 617e7e7e 400 5 74686574 617e7e7e/
+s/67656d6f 7e7e7e61 ffffffff 5000000 74656874 7e7e7e61/6f6d6567 617e7e7e ffffffff 5 74686574 617e7e7e/
+s/7d1a6963 c000005 9b979b59 135a208f/63691a7d 500000c 599b979b 8f205a13/
+}' \
+ -e '/^056:/{
+s/482d5a54 455245/545a2d48 45524500/
+}' \
+ -e '/_pmSendRequest/s/type=50331648/type=3/' \
+ -e '/Semantics: counter/s/count x 10\^-1\^5/Mbyte \/ hour/' \
+| $PCP_AWK_PROG '
+/PDU_LOG_CONTROL/ { fix = 2 }
+/pmResult/ && fix > 0 { fix--; $6 = "NOW"; $7 = "TODAY" }
+ { print }'
+
+# success, all done
+status=0
+exit
diff --git a/qa/367.out.1 b/qa/367.out.1
new file mode 100644
index 0000000..6cd1b88
--- /dev/null
+++ b/qa/367.out.1
@@ -0,0 +1,507 @@
+QA output created by 367
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 0 +
++++++++++++++++++++++++++++
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: ERROR fd=<n> len=16 from=CLIENT
+000: 10 7000 CLIENT 3039
+
+
++ PDU_ERROR: code=12345
+[SERVER]pmXmitPDU: ERROR fd=<n> len=16
+000: 10 7000 SERVER 3039
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: ERROR fd=<n> len=16 from=CLIENT
+000: 10 7000 CLIENT ffffcfc7
++ PDU_ERROR: code=-12345
+[SERVER]pmXmitPDU: ERROR fd=<n> len=16
+000: 10 7000 SERVER ffffcfc7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: RESULT fd=<n> len=208 from=CLIENT
+000: d0 7001 CLIENT 1a5e0 1e240 7 dead 1
+008: 0 ffffffff 4d2 beef 3 0 2 929
+016: 4 d80 8 11d7 0 1 1 ffffffff
+024: 2a 1ec72315 1 1 ffffffff 2c 3fc00000 1
+032: 1 ffffffff 2f 3ffc00 1 1 ffffffff 31
+040: deadcafe ffffcfc7 6000006 30007e7e 300000c 87654321 12345678 4000008
+048: 63691a7d 500000c 599b979b 8f205a13
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
++ PDU_RESULT:
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
+[SERVER]pmXmitPDU: RESULT fd=<n> len=208
+000: d0 7001 SERVER 1a5e0 1e240 7 dead 1
+008: 0 ffffffff 4d2 beef 3 0 2 929
+016: 4 d80 8 11d7 0 1 1 ffffffff
+024: 2a 1ec72315 1 1 ffffffff 2c 3fc00000 1
+032: 1 ffffffff 2f 3ffc00 1 1 ffffffff 31
+040: deadcafe ffffcfc7 6000006 30007e7e 300000c 87654321 12345678 4000008
+048: 63691a7d 500000c 599b979b 8f205a13
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PROFILE fd=<n> len=72 from=CLIENT
+000: 48 7002 CLIENT 2a 1 2 0 deadcafe
+008: 0 2 0 face 1 1 0 1
+016: 2 400
++ PDU_PROFILE: ctxnum=42
+Dump Instance Profile state=EXCLUDE, 2 profiles
+ Profile [0] indom=-559035650 [378.3001086] state=INCLUDE 2 instances
+ Instances: [1] [2]
+ Profile [1] indom=64206 [0.64206] state=EXCLUDE 1 instances
+ Instances: [1024]
+[SERVER]pmXmitPDU: PROFILE fd=<n> len=72
+000: 48 7002 SERVER 2a 1 2 0 deadcafe
+008: 0 2 0 face 1 1 0 1
+016: 2 400
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: FETCH fd=<n> len=52 from=CLIENT
+000: 34 7003 CLIENT 2b 0 0 6 0
+008: 1ec72315 3fc00000 3ffc00 3ff ffffffff
++ PDU_FETCH: ctxnum=43 now=0.000000 00:00:00.000 numpmid=6
++ PMIDs: 0.0.0 123.456.789 255.0.0 0.4095.0 0.0.1023 PM_ID_NULL
+[SERVER]pmXmitPDU: FETCH fd=<n> len=52
+000: 34 7003 SERVER 2b 0 0 6 0
+008: 1ec72315 3fc00000 3ffc00 3ff ffffffff
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: DESC_REQ fd=<n> len=16 from=CLIENT
+000: 10 7004 CLIENT deadbeef
++ PDU_DESC_REQ: pmid=378.2927.751
+[SERVER]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 SERVER deadbeef
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: DESC fd=<n> len=32 from=CLIENT
+000: 20 7005 CLIENT deadbeef 2 face 1 1f025000
++ PDU_DESC: Data Type: 64-bit int InDom: 0.64206 0xface
+ Semantics: counter Units: Mbyte / hour
+[SERVER]pmXmitPDU: DESC fd=<n> len=32
+000: 20 7005 SERVER deadbeef 2 face 1 1f025000
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=32 from=CLIENT
+000: 20 7006 CLIENT face 34bc0 9fbf1 dead 0
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=57005 name=NULL
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=32
+000: 20 7006 SERVER face 34bc0 9fbf1 dead 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=40 from=CLIENT
+000: 28 7006 CLIENT face 34bc0 9fbf1 0 5
+008: 66697368 6f7e7e7e
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=0 name="fisho"
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=40
+000: 28 7006 SERVER face 34bc0 9fbf1 0 5
+008: 66697368 6f7e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=32 from=CLIENT
+000: 20 7006 CLIENT face 34bc0 9fbf1 0 0
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=0 name=NULL
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=32
+000: 20 7006 SERVER face 34bc0 9fbf1 0 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=216 from=CLIENT
+000: d8 7007 CLIENT 1234 b 1 5 616c7068
+008: 617e7e7e 2 4 62657461 4 5 67616d6d 617e7e7e
+016: 8 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 10 5 64656c74 617e7e7e
+032: 20 7 65707369 6c6f6e7e 40 3 7068697e 80
+040: 2 6d757e7e 100 6 6c616d62 64617e7e 200 5
+048: 6f6d6567 617e7e7e 400 5 74686574 617e7e7e
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=1 name="alpha"
+ [1] inst=2 name="beta"
+ [2] inst=4 name="gamma"
+ [3] inst=8 name="long-non-greek-letter-name-in-the-middle"
+ [4] inst=16 name="delta"
+ [5] inst=32 name="epsilon"
+ [6] inst=64 name="phi"
+ [7] inst=128 name="mu"
+ [8] inst=256 name="lambda"
+ [9] inst=512 name="omega"
+ [10] inst=1024 name="theta"
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=216
+000: d8 7007 SERVER 1234 b 1 5 616c7068
+008: 617e7e7e 2 4 62657461 4 5 67616d6d 617e7e7e
+016: 8 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 10 5 64656c74 617e7e7e
+032: 20 7 65707369 6c6f6e7e 40 3 7068697e 80
+040: 2 6d757e7e 100 6 6c616d62 64617e7e 200 5
+048: 6f6d6567 617e7e7e 400 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=216 from=CLIENT
+000: d8 7007 CLIENT 1234 b ffffffff 5 616c7068
+008: 617e7e7e ffffffff 4 62657461 ffffffff 5 67616d6d 617e7e7e
+016: ffffffff 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74 617e7e7e
+032: ffffffff 7 65707369 6c6f6e7e ffffffff 3 7068697e ffffffff
+040: 2 6d757e7e ffffffff 6 6c616d62 64617e7e ffffffff 5
+048: 6f6d6567 617e7e7e ffffffff 5 74686574 617e7e7e
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=-1 name="alpha"
+ [1] inst=-1 name="beta"
+ [2] inst=-1 name="gamma"
+ [3] inst=-1 name="long-non-greek-letter-name-in-the-middle"
+ [4] inst=-1 name="delta"
+ [5] inst=-1 name="epsilon"
+ [6] inst=-1 name="phi"
+ [7] inst=-1 name="mu"
+ [8] inst=-1 name="lambda"
+ [9] inst=-1 name="omega"
+ [10] inst=-1 name="theta"
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=216
+000: d8 7007 SERVER 1234 b ffffffff 5 616c7068
+008: 617e7e7e ffffffff 4 62657461 ffffffff 5 67616d6d 617e7e7e
+016: ffffffff 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74 617e7e7e
+032: ffffffff 7 65707369 6c6f6e7e ffffffff 3 7068697e ffffffff
+040: 2 6d757e7e ffffffff 6 6c616d62 64617e7e ffffffff 5
+048: 6f6d6567 617e7e7e ffffffff 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=108 from=CLIENT
+000: 6c 7007 CLIENT 1234 b 1 0 2
+008: 0 4 0 8 0 10 0 20
+016: 0 40 0 80 0 100 0 200
+024: 0 400 0
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=1 name=""
+ [1] inst=2 name=""
+ [2] inst=4 name=""
+ [3] inst=8 name=""
+ [4] inst=16 name=""
+ [5] inst=32 name=""
+ [6] inst=64 name=""
+ [7] inst=128 name=""
+ [8] inst=256 name=""
+ [9] inst=512 name=""
+ [10] inst=1024 name=""
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=108
+000: 6c 7007 SERVER 1234 b 1 0 2
+008: 0 4 0 8 0 10 0 20
+016: 0 40 0 80 0 100 0 200
+024: 0 400 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TEXT_REQ fd=<n> len=20 from=CLIENT
+000: 14 7008 CLIENT 12341234 5
++ PDU_TEXT_REQ: ident=305402420 PMID 72.3332.564 txtype=5
+[SERVER]pmXmitPDU: TEXT_REQ fd=<n> len=20
+000: 14 7008 SERVER 12341234 5
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TEXT fd=<n> len=72 from=CLIENT
+000: 48 7009 CLIENT 43214321 34 6d617279 20686164 2061206c
+008: 6974746c 65206c61 6d620a69 74732066 6c656563 65207761 73207768 69746520
+016: 61732073 6e6f770a
++ PDU_TEXT: ident=1126253345 text="mary had a l ... was white as snow"
+[SERVER]pmXmitPDU: TEXT fd=<n> len=72
+000: 48 7009 SERVER 43214321 34 6d617279 20686164 2061206c
+008: 6974746c 65206c61 6d620a69 74732066 6c656563 65207761 73207768 69746520
+016: 61732073 6e6f770a
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: CREDS fd=<n> len=20 from=CLIENT
+000: 14 700c CLIENT 1000000 b0a0201
++ PDU_CREDS: sender=CLIENT count=1
++ [0] type=1 a=2 b=10 c=11
+[SERVER]pmXmitPDU: CREDS fd=<n> len=20
+000: 14 700c SERVER 1000000 b0a0201
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_IDS fd=<n> len=44 from=CLIENT
+000: 2c 700d CLIENT 2b 6 0 1ec72315 3fc00000
+008: 3ffc00 3ff ffffffff
++ PDU_PMNS_IDS: sts arg=43
+IDlist dump: numids = 6
+ PMID[0]: 0x00000000 0.0.0
+ PMID[1]: 0x1ec72315 123.456.789
+ PMID[2]: 0x3fc00000 255.0.0
+ PMID[3]: 0x003ffc00 0.4095.0
+ PMID[4]: 0x000003ff 0.0.1023
+ PMID[5]: 0xffffffff PM_ID_NULL
+[SERVER]pmXmitPDU: PMNS_IDS fd=<n> len=44
+000: 2c 700d SERVER 2b 6 0 1ec72315 3fc00000
+008: 3ffc00 3ff ffffffff
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_NAMES fd=<n> len=220 from=CLIENT
+000: dc 700e CLIENT 62 b b fffffffb 5
+008: 616c7068 617e7e7e fffffffc 4 62657461 fffffffd 5 67616d6d
+016: 617e7e7e fffffffe 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465
+024: 722d6e61 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74
+032: 617e7e7e 0 7 65707369 6c6f6e7e 1 3 7068697e
+040: 2 2 6d757e7e 3 6 6c616d62 64617e7e 4
+048: 5 6f6d6567 617e7e7e 5 5 74686574 617e7e7e
++ PDU_PMNS_NAMES:
+namelist dump: numnames = 11
+ name[0]: "alpha"
+ name[1]: "beta"
+ name[2]: "gamma"
+ name[3]: "long-non-greek-letter-name-in-the-middle"
+ name[4]: "delta"
+ name[5]: "epsilon"
+ name[6]: "phi"
+ name[7]: "mu"
+ name[8]: "lambda"
+ name[9]: "omega"
+ name[10]: "theta"
+statuslist dump: numstatus = 11
+ status[0]: -5
+ status[1]: -4
+ status[2]: -3
+ status[3]: -2
+ status[4]: -1
+ status[5]: 0
+ status[6]: 1
+ status[7]: 2
+ status[8]: 3
+ status[9]: 4
+ status[10]: 5
+[SERVER]pmXmitPDU: PMNS_NAMES fd=<n> len=220
+000: dc 700e SERVER 62 b b fffffffb 5
+008: 616c7068 617e7e7e fffffffc 4 62657461 fffffffd 5 67616d6d
+016: 617e7e7e fffffffe 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465
+024: 722d6e61 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74
+032: 617e7e7e 0 7 65707369 6c6f6e7e 1 3 7068697e
+040: 2 2 6d757e7e 3 6 6c616d62 64617e7e 4
+048: 5 6f6d6567 617e7e7e 5 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_NAMES fd=<n> len=176 from=CLIENT
+000: b0 700e CLIENT 62 0 b 5 616c7068
+008: 617e7e7e 4 62657461 5 67616d6d 617e7e7e 28 6c6f6e67
+016: 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61 6d652d69 6e2d7468 652d6d69
+024: 64646c65 5 64656c74 617e7e7e 7 65707369 6c6f6e7e 3
+032: 7068697e 2 6d757e7e 6 6c616d62 64617e7e 5 6f6d6567
+040: 617e7e7e 5 74686574 617e7e7e
++ PDU_PMNS_NAMES:
+namelist dump: numnames = 11
+ name[0]: "alpha"
+ name[1]: "beta"
+ name[2]: "gamma"
+ name[3]: "long-non-greek-letter-name-in-the-middle"
+ name[4]: "delta"
+ name[5]: "epsilon"
+ name[6]: "phi"
+ name[7]: "mu"
+ name[8]: "lambda"
+ name[9]: "omega"
+ name[10]: "theta"
+[SERVER]pmXmitPDU: PMNS_NAMES fd=<n> len=176
+000: b0 700e SERVER 62 0 b 5 616c7068
+008: 617e7e7e 4 62657461 5 67616d6d 617e7e7e 28 6c6f6e67
+016: 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61 6d652d69 6e2d7468 652d6d69
+024: 64646c65 5 64656c74 617e7e7e 7 65707369 6c6f6e7e 3
+032: 7068697e 2 6d757e7e 6 6c616d62 64617e7e 5 6f6d6567
+040: 617e7e7e 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_CHILD fd=<n> len=36 from=CLIENT
+000: 24 700f CLIENT 1 d 6d756d62 6c652e66 756d626c
+008: 657e7e7e
++ PDU_PMNS_CHILD: name="mumble.fumble" code=1
+[SERVER]pmXmitPDU: PMNS_CHILD fd=<n> len=36
+000: 24 700f SERVER 1 d 6d756d62 6c652e66 756d626c
+008: 657e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_TRAVERSE fd=<n> len=36 from=CLIENT
+000: 24 7010 CLIENT 0 d 666f6f2e 6261722e 736e6f72
+008: 747e7e7e
++ PDU_PMNS_TRAVERSE: name="foo.bar.snort"
+[SERVER]pmXmitPDU: PMNS_TRAVERSE fd=<n> len=36
+000: 24 7010 SERVER 0 d 666f6f2e 6261722e 736e6f72
+008: 747e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=68 from=0
+000: 44 8000 0 b 1 3e8 2 dead
+008: ffffffff beef 3 2 929 4 d80 8
+016: 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): Operation not permitted
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): Operation not permitted
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=68
+000: 44 8000 0 b 1 3e8 2 dead
+008: ffffffff beef 3 2 929 4 d80 8
+016: 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=68 from=0
+000: 44 8000 0 b 1 3e8 2 dead
+008: 0 beef 3 2 929 4 d80 8
+016: 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): No values returned!
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): No values returned!
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=68
+000: 44 8000 0 b 1 3e8 2 dead
+008: 0 beef 3 2 929 4 d80 8
+016: 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=76 from=0
+000: 4c 8000 0 b 1 3e8 2 dead
+008: 1 ffffffff 4d2 beef 3 2 929 4
+016: d80 8 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=76
+000: 4c 8000 0 b 1 3e8 2 dead
+008: 1 ffffffff 4d2 beef 3 2 929 4
+016: d80 8 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_STATUS fd=<n> len=264 from=0
+000: 108 8001 0 ?? pad ? b6d0 3039 b6da 5ba0
+008: b6e4 8707 1 1 0 800 666f6f00 0
+016: 0 0 0 0 0 0 0 0
+024: 0 0 0 0 0 0 666f6f2e 6261722e
+032: 636f6d00 0 0 0 0 0 0 0
+040: 0 0 0 0 0 0 545a2d54 48455245
+048: 0 0 0 0 0 0 0 0
+056: 545a2d48 45524500 0 0 0 0 0 0
+064: 0 0
+__pmDecodeLogStatus: got PDU (fromversion=2)
++ PDU_LOG_STATUS: start=46800.012345 13:00:00.012
+last=46810.023456 13:00:10.023 now=46820.034567 13:00:20.034
+state=1 vol=1 size=2048 host=foo tz="TZ-THERE" tzlogger="TZ-HERE"
+__pmSendLogStatus: sending PDU (toversion=2)
+[SERVER]pmXmitPDU: LOG_STATUS fd=<n> len=264
+000: 108 8001 0 ?? pad ? b6d0 3039 b6da 5ba0
+008: b6e4 8707 1 1 0 800 666f6f00 0
+016: 0 0 0 0 0 0 0 0
+024: 0 0 0 0 0 0 666f6f2e 6261722e
+032: 636f6d00 0 0 0 0 0 0 0
+040: 0 0 0 0 0 0 545a2d54 48455245
+048: 0 0 0 0 0 0 0 0
+056: 545a2d48 45524500 0 0 0 0 0 0
+064: 0 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_REQUEST fd=<n> len=16 from=0
+000: 10 8002 0 3
+__pmDecodeLogRequest: got PDU (type=3, version=2)
++ PDU_LOG_REQUEST: request=sync
+_pmSendRequest: sending PDU (type=3, version=2)
+[SERVER]pmXmitPDU: LOG_REQUEST fd=<n> len=16
+000: 10 8002 0 3
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28752? fd=<n> len=16 from=CLIENT
+000: 10 7050 CLIENT 41
++ TRACE_PDU_ACK: ack=65
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=32 from=CLIENT
+000: 20 7051 CLIENT 1060380 402f6a7a 2955385e 62312b62 32007e7e
++ TRACE_PDU_DATA: tag="b1+b2" taglen=6 type=observe value=15.708
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=32 from=CLIENT
+000: 20 7051 CLIENT 1050380 402921fb 54442d18 62312b62 7e7e7e
++ TRACE_PDU_DATA: tag="b1+b" taglen=5 type=observe value=12.5664
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1040380 4022d97c 7f3321d2 62312b00
++ TRACE_PDU_DATA: tag="b1+" taglen=4 type=observe value=9.42478
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1030380 401921fb 54442d18 6231007e
++ TRACE_PDU_DATA: tag="b1" taglen=3 type=observe value=6.28319
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1020380 400921fb 54442d18 62007e7e
++ TRACE_PDU_DATA: tag="b" taglen=2 type=observe value=3.14159
+
+pdu-server: waiting ...
+pdu-server: end-of-file
diff --git a/qa/367.out.be.2 b/qa/367.out.be.2
new file mode 100644
index 0000000..f9f8a07
--- /dev/null
+++ b/qa/367.out.be.2
@@ -0,0 +1,514 @@
+QA output created by 367
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 0 +
++++++++++++++++++++++++++++
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: ERROR fd=<n> len=16 from=CLIENT
+000: 10 7000 CLIENT 3039
+
+
++ PDU_ERROR: code=12345
+[SERVER]pmXmitPDU: ERROR fd=<n> len=16
+000: 10 7000 SERVER 3039
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: ERROR fd=<n> len=16 from=CLIENT
+000: 10 7000 CLIENT ffffcfc7
++ PDU_ERROR: code=-12345
+[SERVER]pmXmitPDU: ERROR fd=<n> len=16
+000: 10 7000 SERVER ffffcfc7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: RESULT fd=<n> len=208 from=CLIENT
+000: d0 7001 CLIENT 1a5e0 1e240 7 dead 1
+008: 0 ffffffff 4d2 beef 3 0 2 929
+016: 4 d80 8 11d7 0 1 1 ffffffff
+024: 2a 1ec72315 1 1 ffffffff 2c 3fc00000 1
+032: 1 ffffffff 2f 3ffc00 1 1 ffffffff 31
+040: deadcafe ffffcfc7 6000006 30007e7e 300000c 87654321 12345678 4000008
+048: 63691a7d 500000c 599b979b 8f205a13
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
++ PDU_RESULT:
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
+[SERVER]pmXmitPDU: RESULT fd=<n> len=208
+000: d0 7001 SERVER 1a5e0 1e240 7 dead 1
+008: 0 ffffffff 4d2 beef 3 0 2 929
+016: 4 d80 8 11d7 0 1 1 ffffffff
+024: 2a 1ec72315 1 1 ffffffff 2c 3fc00000 1
+032: 1 ffffffff 2f 3ffc00 1 1 ffffffff 31
+040: deadcafe ffffcfc7 6000006 30007e7e 300000c 87654321 12345678 4000008
+048: 63691a7d 500000c 599b979b 8f205a13
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PROFILE fd=<n> len=72 from=CLIENT
+000: 48 7002 CLIENT 2a 1 2 0 deadcafe
+008: 0 2 0 face 1 1 0 1
+016: 2 400
++ PDU_PROFILE: ctxnum=42
+Dump Instance Profile state=EXCLUDE, 2 profiles
+ Profile [0] indom=-559035650 [378.3001086] state=INCLUDE 2 instances
+ Instances: [1] [2]
+ Profile [1] indom=64206 [0.64206] state=EXCLUDE 1 instances
+ Instances: [1024]
+[SERVER]pmXmitPDU: PROFILE fd=<n> len=72
+000: 48 7002 SERVER 2a 1 2 0 deadcafe
+008: 0 2 0 face 1 1 0 1
+016: 2 400
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: FETCH fd=<n> len=52 from=CLIENT
+000: 34 7003 CLIENT 2b 0 0 6 0
+008: 1ec72315 3fc00000 3ffc00 3ff ffffffff
++ PDU_FETCH: ctxnum=43 now=0.000000 00:00:00.000 numpmid=6
++ PMIDs: 0.0.0 123.456.789 255.0.0 0.4095.0 0.0.1023 PM_ID_NULL
+[SERVER]pmXmitPDU: FETCH fd=<n> len=52
+000: 34 7003 SERVER 2b 0 0 6 0
+008: 1ec72315 3fc00000 3ffc00 3ff ffffffff
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: DESC_REQ fd=<n> len=16 from=CLIENT
+000: 10 7004 CLIENT deadbeef
++ PDU_DESC_REQ: pmid=378.2927.751
+[SERVER]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 SERVER deadbeef
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: DESC fd=<n> len=32 from=CLIENT
+000: 20 7005 CLIENT deadbeef 2 face 1 1f025000
++ PDU_DESC: Data Type: 64-bit int InDom: 0.64206 0xface
+ Semantics: counter Units: Mbyte / hour
+[SERVER]pmXmitPDU: DESC fd=<n> len=32
+000: 20 7005 SERVER deadbeef 2 face 1 1f025000
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=32 from=CLIENT
+000: 20 7006 CLIENT face 34bc0 9fbf1 dead 0
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=57005 name=NULL
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=32
+000: 20 7006 SERVER face 34bc0 9fbf1 dead 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=40 from=CLIENT
+000: 28 7006 CLIENT face 34bc0 9fbf1 0 5
+008: 66697368 6f7e7e7e
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=0 name="fisho"
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=40
+000: 28 7006 SERVER face 34bc0 9fbf1 0 5
+008: 66697368 6f7e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=32 from=CLIENT
+000: 20 7006 CLIENT face 34bc0 9fbf1 0 0
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=0 name=NULL
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=32
+000: 20 7006 SERVER face 34bc0 9fbf1 0 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=216 from=CLIENT
+000: d8 7007 CLIENT 1234 b 1 5 616c7068
+008: 617e7e7e 2 4 62657461 4 5 67616d6d 617e7e7e
+016: 8 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 10 5 64656c74 617e7e7e
+032: 20 7 65707369 6c6f6e7e 40 3 7068697e 80
+040: 2 6d757e7e 100 6 6c616d62 64617e7e 200 5
+048: 6f6d6567 617e7e7e 400 5 74686574 617e7e7e
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=1 name="alpha"
+ [1] inst=2 name="beta"
+ [2] inst=4 name="gamma"
+ [3] inst=8 name="long-non-greek-letter-name-in-the-middle"
+ [4] inst=16 name="delta"
+ [5] inst=32 name="epsilon"
+ [6] inst=64 name="phi"
+ [7] inst=128 name="mu"
+ [8] inst=256 name="lambda"
+ [9] inst=512 name="omega"
+ [10] inst=1024 name="theta"
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=216
+000: d8 7007 SERVER 1234 b 1 5 616c7068
+008: 617e7e7e 2 4 62657461 4 5 67616d6d 617e7e7e
+016: 8 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 10 5 64656c74 617e7e7e
+032: 20 7 65707369 6c6f6e7e 40 3 7068697e 80
+040: 2 6d757e7e 100 6 6c616d62 64617e7e 200 5
+048: 6f6d6567 617e7e7e 400 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=216 from=CLIENT
+000: d8 7007 CLIENT 1234 b ffffffff 5 616c7068
+008: 617e7e7e ffffffff 4 62657461 ffffffff 5 67616d6d 617e7e7e
+016: ffffffff 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74 617e7e7e
+032: ffffffff 7 65707369 6c6f6e7e ffffffff 3 7068697e ffffffff
+040: 2 6d757e7e ffffffff 6 6c616d62 64617e7e ffffffff 5
+048: 6f6d6567 617e7e7e ffffffff 5 74686574 617e7e7e
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=-1 name="alpha"
+ [1] inst=-1 name="beta"
+ [2] inst=-1 name="gamma"
+ [3] inst=-1 name="long-non-greek-letter-name-in-the-middle"
+ [4] inst=-1 name="delta"
+ [5] inst=-1 name="epsilon"
+ [6] inst=-1 name="phi"
+ [7] inst=-1 name="mu"
+ [8] inst=-1 name="lambda"
+ [9] inst=-1 name="omega"
+ [10] inst=-1 name="theta"
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=216
+000: d8 7007 SERVER 1234 b ffffffff 5 616c7068
+008: 617e7e7e ffffffff 4 62657461 ffffffff 5 67616d6d 617e7e7e
+016: ffffffff 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74 617e7e7e
+032: ffffffff 7 65707369 6c6f6e7e ffffffff 3 7068697e ffffffff
+040: 2 6d757e7e ffffffff 6 6c616d62 64617e7e ffffffff 5
+048: 6f6d6567 617e7e7e ffffffff 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=108 from=CLIENT
+000: 6c 7007 CLIENT 1234 b 1 0 2
+008: 0 4 0 8 0 10 0 20
+016: 0 40 0 80 0 100 0 200
+024: 0 400 0
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=1 name=""
+ [1] inst=2 name=""
+ [2] inst=4 name=""
+ [3] inst=8 name=""
+ [4] inst=16 name=""
+ [5] inst=32 name=""
+ [6] inst=64 name=""
+ [7] inst=128 name=""
+ [8] inst=256 name=""
+ [9] inst=512 name=""
+ [10] inst=1024 name=""
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=108
+000: 6c 7007 SERVER 1234 b 1 0 2
+008: 0 4 0 8 0 10 0 20
+016: 0 40 0 80 0 100 0 200
+024: 0 400 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TEXT_REQ fd=<n> len=20 from=CLIENT
+000: 14 7008 CLIENT 12341234 5
++ PDU_TEXT_REQ: ident=305402420 PMID 72.3332.564 txtype=5
+[SERVER]pmXmitPDU: TEXT_REQ fd=<n> len=20
+000: 14 7008 SERVER 12341234 5
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TEXT fd=<n> len=72 from=CLIENT
+000: 48 7009 CLIENT 43214321 34 6d617279 20686164 2061206c
+008: 6974746c 65206c61 6d620a69 74732066 6c656563 65207761 73207768 69746520
+016: 61732073 6e6f770a
++ PDU_TEXT: ident=1126253345 text="mary had a l ... was white as snow"
+[SERVER]pmXmitPDU: TEXT fd=<n> len=72
+000: 48 7009 SERVER 43214321 34 6d617279 20686164 2061206c
+008: 6974746c 65206c61 6d620a69 74732066 6c656563 65207761 73207768 69746520
+016: 61732073 6e6f770a
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: AUTH fd=<n> len=22 from=CLIENT
+000: 16 7011 CLIENT 5 70637071 61007e7e
++ PDU_AUTH: attr=5 length=6 value="pcpqa"
+[SERVER]pmXmitPDU: AUTH fd=<n> len=22
+000: 16 7011 SERVER 5 70637071 61007e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: CREDS fd=<n> len=20 from=CLIENT
+000: 14 700c CLIENT 1 1020a0b
++ PDU_CREDS: sender=CLIENT count=1
++ [0] type=1 a=2 b=10 c=11
+[SERVER]pmXmitPDU: CREDS fd=<n> len=20
+000: 14 700c SERVER 1 1020a0b
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_IDS fd=<n> len=44 from=CLIENT
+000: 2c 700d CLIENT 2b 6 0 1ec72315 3fc00000
+008: 3ffc00 3ff ffffffff
++ PDU_PMNS_IDS: sts arg=43
+IDlist dump: numids = 6
+ PMID[0]: 0x00000000 0.0.0
+ PMID[1]: 0x1ec72315 123.456.789
+ PMID[2]: 0x3fc00000 255.0.0
+ PMID[3]: 0x003ffc00 0.4095.0
+ PMID[4]: 0x000003ff 0.0.1023
+ PMID[5]: 0xffffffff PM_ID_NULL
+[SERVER]pmXmitPDU: PMNS_IDS fd=<n> len=44
+000: 2c 700d SERVER 2b 6 0 1ec72315 3fc00000
+008: 3ffc00 3ff ffffffff
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_NAMES fd=<n> len=220 from=CLIENT
+000: dc 700e CLIENT 62 b b fffffffb 5
+008: 616c7068 617e7e7e fffffffc 4 62657461 fffffffd 5 67616d6d
+016: 617e7e7e fffffffe 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465
+024: 722d6e61 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74
+032: 617e7e7e 0 7 65707369 6c6f6e7e 1 3 7068697e
+040: 2 2 6d757e7e 3 6 6c616d62 64617e7e 4
+048: 5 6f6d6567 617e7e7e 5 5 74686574 617e7e7e
++ PDU_PMNS_NAMES:
+namelist dump: numnames = 11
+ name[0]: "alpha"
+ name[1]: "beta"
+ name[2]: "gamma"
+ name[3]: "long-non-greek-letter-name-in-the-middle"
+ name[4]: "delta"
+ name[5]: "epsilon"
+ name[6]: "phi"
+ name[7]: "mu"
+ name[8]: "lambda"
+ name[9]: "omega"
+ name[10]: "theta"
+statuslist dump: numstatus = 11
+ status[0]: -5
+ status[1]: -4
+ status[2]: -3
+ status[3]: -2
+ status[4]: -1
+ status[5]: 0
+ status[6]: 1
+ status[7]: 2
+ status[8]: 3
+ status[9]: 4
+ status[10]: 5
+[SERVER]pmXmitPDU: PMNS_NAMES fd=<n> len=220
+000: dc 700e SERVER 62 b b fffffffb 5
+008: 616c7068 617e7e7e fffffffc 4 62657461 fffffffd 5 67616d6d
+016: 617e7e7e fffffffe 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465
+024: 722d6e61 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74
+032: 617e7e7e 0 7 65707369 6c6f6e7e 1 3 7068697e
+040: 2 2 6d757e7e 3 6 6c616d62 64617e7e 4
+048: 5 6f6d6567 617e7e7e 5 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_NAMES fd=<n> len=176 from=CLIENT
+000: b0 700e CLIENT 62 0 b 5 616c7068
+008: 617e7e7e 4 62657461 5 67616d6d 617e7e7e 28 6c6f6e67
+016: 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61 6d652d69 6e2d7468 652d6d69
+024: 64646c65 5 64656c74 617e7e7e 7 65707369 6c6f6e7e 3
+032: 7068697e 2 6d757e7e 6 6c616d62 64617e7e 5 6f6d6567
+040: 617e7e7e 5 74686574 617e7e7e
++ PDU_PMNS_NAMES:
+namelist dump: numnames = 11
+ name[0]: "alpha"
+ name[1]: "beta"
+ name[2]: "gamma"
+ name[3]: "long-non-greek-letter-name-in-the-middle"
+ name[4]: "delta"
+ name[5]: "epsilon"
+ name[6]: "phi"
+ name[7]: "mu"
+ name[8]: "lambda"
+ name[9]: "omega"
+ name[10]: "theta"
+[SERVER]pmXmitPDU: PMNS_NAMES fd=<n> len=176
+000: b0 700e SERVER 62 0 b 5 616c7068
+008: 617e7e7e 4 62657461 5 67616d6d 617e7e7e 28 6c6f6e67
+016: 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61 6d652d69 6e2d7468 652d6d69
+024: 64646c65 5 64656c74 617e7e7e 7 65707369 6c6f6e7e 3
+032: 7068697e 2 6d757e7e 6 6c616d62 64617e7e 5 6f6d6567
+040: 617e7e7e 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_CHILD fd=<n> len=36 from=CLIENT
+000: 24 700f CLIENT 1 d 6d756d62 6c652e66 756d626c
+008: 657e7e7e
++ PDU_PMNS_CHILD: name="mumble.fumble" code=1
+[SERVER]pmXmitPDU: PMNS_CHILD fd=<n> len=36
+000: 24 700f SERVER 1 d 6d756d62 6c652e66 756d626c
+008: 657e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_TRAVERSE fd=<n> len=36 from=CLIENT
+000: 24 7010 CLIENT 0 d 666f6f2e 6261722e 736e6f72
+008: 747e7e7e
++ PDU_PMNS_TRAVERSE: name="foo.bar.snort"
+[SERVER]pmXmitPDU: PMNS_TRAVERSE fd=<n> len=36
+000: 24 7010 SERVER 0 d 666f6f2e 6261722e 736e6f72
+008: 747e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=68 from=0
+000: 44 8000 0 b 1 3e8 2 dead
+008: ffffffff beef 3 2 929 4 d80 8
+016: 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): Operation not permitted
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): Operation not permitted
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=68
+000: 44 8000 0 b 1 3e8 2 dead
+008: ffffffff beef 3 2 929 4 d80 8
+016: 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=68 from=0
+000: 44 8000 0 b 1 3e8 2 dead
+008: 0 beef 3 2 929 4 d80 8
+016: 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): No values returned!
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): No values returned!
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=68
+000: 44 8000 0 b 1 3e8 2 dead
+008: 0 beef 3 2 929 4 d80 8
+016: 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=76 from=0
+000: 4c 8000 0 b 1 3e8 2 dead
+008: 1 ffffffff 4d2 beef 3 2 929 4
+016: d80 8 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=76
+000: 4c 8000 0 b 1 3e8 2 dead
+008: 1 ffffffff 4d2 beef 3 2 929 4
+016: d80 8 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_STATUS fd=<n> len=264 from=0
+000: 108 8001 0 ?? pad ? b6d0 3039 b6da 5ba0
+008: b6e4 8707 1 1 0 800 666f6f00 0
+016: 0 0 0 0 0 0 0 0
+024: 0 0 0 0 0 0 666f6f2e 6261722e
+032: 636f6d00 0 0 0 0 0 0 0
+040: 0 0 0 0 0 0 545a2d54 48455245
+048: 0 0 0 0 0 0 0 0
+056: 545a2d48 45524500 0 0 0 0 0 0
+064: 0 0
+__pmDecodeLogStatus: got PDU (fromversion=2)
++ PDU_LOG_STATUS: start=46800.012345 13:00:00.012
+last=46810.023456 13:00:10.023 now=46820.034567 13:00:20.034
+state=1 vol=1 size=2048 host=foo tz="TZ-THERE" tzlogger="TZ-HERE"
+__pmSendLogStatus: sending PDU (toversion=2)
+[SERVER]pmXmitPDU: LOG_STATUS fd=<n> len=264
+000: 108 8001 0 ?? pad ? b6d0 3039 b6da 5ba0
+008: b6e4 8707 1 1 0 800 666f6f00 0
+016: 0 0 0 0 0 0 0 0
+024: 0 0 0 0 0 0 666f6f2e 6261722e
+032: 636f6d00 0 0 0 0 0 0 0
+040: 0 0 0 0 0 0 545a2d54 48455245
+048: 0 0 0 0 0 0 0 0
+056: 545a2d48 45524500 0 0 0 0 0 0
+064: 0 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_REQUEST fd=<n> len=16 from=0
+000: 10 8002 0 3
+__pmDecodeLogRequest: got PDU (type=3, version=2)
++ PDU_LOG_REQUEST: request=sync
+_pmSendRequest: sending PDU (type=3, version=2)
+[SERVER]pmXmitPDU: LOG_REQUEST fd=<n> len=16
+000: 10 8002 0 3
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28752? fd=<n> len=16 from=CLIENT
+000: 10 7050 CLIENT 41
++ TRACE_PDU_ACK: ack=65
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=32 from=CLIENT
+000: 20 7051 CLIENT 1060380 402f6a7a 2955385e 62312b62 32007e7e
++ TRACE_PDU_DATA: tag="b1+b2" taglen=6 type=observe value=15.708
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=32 from=CLIENT
+000: 20 7051 CLIENT 1050380 402921fb 54442d18 62312b62 7e7e7e
++ TRACE_PDU_DATA: tag="b1+b" taglen=5 type=observe value=12.5664
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1040380 4022d97c 7f3321d2 62312b00
++ TRACE_PDU_DATA: tag="b1+" taglen=4 type=observe value=9.42478
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1030380 401921fb 54442d18 6231007e
++ TRACE_PDU_DATA: tag="b1" taglen=3 type=observe value=6.28319
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1020380 400921fb 54442d18 62007e7e
++ TRACE_PDU_DATA: tag="b" taglen=2 type=observe value=3.14159
+
+pdu-server: waiting ...
+pdu-server: end-of-file
diff --git a/qa/367.out.le.2 b/qa/367.out.le.2
new file mode 100644
index 0000000..91c6c50
--- /dev/null
+++ b/qa/367.out.le.2
@@ -0,0 +1,514 @@
+QA output created by 367
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 0 +
++++++++++++++++++++++++++++
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: ERROR fd=<n> len=16 from=CLIENT
+000: 10 7000 CLIENT 3039
+
+
++ PDU_ERROR: code=12345
+[SERVER]pmXmitPDU: ERROR fd=<n> len=16
+000: 10 7000 SERVER 3039
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: ERROR fd=<n> len=16 from=CLIENT
+000: 10 7000 CLIENT ffffcfc7
++ PDU_ERROR: code=-12345
+[SERVER]pmXmitPDU: ERROR fd=<n> len=16
+000: 10 7000 SERVER ffffcfc7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: RESULT fd=<n> len=208 from=CLIENT
+000: d0 7001 CLIENT 1a5e0 1e240 7 dead 1
+008: 0 ffffffff 4d2 beef 3 0 2 929
+016: 4 d80 8 11d7 0 1 1 ffffffff
+024: 2a 1ec72315 1 1 ffffffff 2c 3fc00000 1
+032: 1 ffffffff 2f 3ffc00 1 1 ffffffff 31
+040: deadcafe ffffcfc7 6000006 30007e7e 300000c 87654321 12345678 4000008
+048: 63691a7d 500000c 599b979b 8f205a13
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
++ PDU_RESULT:
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
+pmResult dump from ADDR timestamp: 108000.123456 06:00:00.123 numpmid: 7
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+ 0.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "0"
+ 123.456.789 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 9756277977086449272
+ 255.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.3000001e+21
+ 0.4095.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 4.56e+123
+ 378.2930.766 (<noname>): Generic error, already reported above
+[SERVER]pmXmitPDU: RESULT fd=<n> len=208
+000: d0 7001 SERVER 1a5e0 1e240 7 dead 1
+008: 0 ffffffff 4d2 beef 3 0 2 929
+016: 4 d80 8 11d7 0 1 1 ffffffff
+024: 2a 1ec72315 1 1 ffffffff 2c 3fc00000 1
+032: 1 ffffffff 2f 3ffc00 1 1 ffffffff 31
+040: deadcafe ffffcfc7 6000006 30007e7e 300000c 87654321 12345678 4000008
+048: 63691a7d 500000c 599b979b 8f205a13
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PROFILE fd=<n> len=72 from=CLIENT
+000: 48 7002 CLIENT 2a 1 2 0 deadcafe
+008: 0 2 0 face 1 1 0 1
+016: 2 400
++ PDU_PROFILE: ctxnum=42
+Dump Instance Profile state=EXCLUDE, 2 profiles
+ Profile [0] indom=-559035650 [378.3001086] state=INCLUDE 2 instances
+ Instances: [1] [2]
+ Profile [1] indom=64206 [0.64206] state=EXCLUDE 1 instances
+ Instances: [1024]
+[SERVER]pmXmitPDU: PROFILE fd=<n> len=72
+000: 48 7002 SERVER 2a 1 2 0 deadcafe
+008: 0 2 0 face 1 1 0 1
+016: 2 400
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: FETCH fd=<n> len=52 from=CLIENT
+000: 34 7003 CLIENT 2b 0 0 6 0
+008: 1ec72315 3fc00000 3ffc00 3ff ffffffff
++ PDU_FETCH: ctxnum=43 now=0.000000 00:00:00.000 numpmid=6
++ PMIDs: 0.0.0 123.456.789 255.0.0 0.4095.0 0.0.1023 PM_ID_NULL
+[SERVER]pmXmitPDU: FETCH fd=<n> len=52
+000: 34 7003 SERVER 2b 0 0 6 0
+008: 1ec72315 3fc00000 3ffc00 3ff ffffffff
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: DESC_REQ fd=<n> len=16 from=CLIENT
+000: 10 7004 CLIENT deadbeef
++ PDU_DESC_REQ: pmid=378.2927.751
+[SERVER]pmXmitPDU: DESC_REQ fd=<n> len=16
+000: 10 7004 SERVER deadbeef
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: DESC fd=<n> len=32 from=CLIENT
+000: 20 7005 CLIENT deadbeef 2 face 1 1f025000
++ PDU_DESC: Data Type: 64-bit int InDom: 0.64206 0xface
+ Semantics: counter Units: Mbyte / hour
+[SERVER]pmXmitPDU: DESC fd=<n> len=32
+000: 20 7005 SERVER deadbeef 2 face 1 1f025000
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=32 from=CLIENT
+000: 20 7006 CLIENT face 34bc0 9fbf1 dead 0
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=57005 name=NULL
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=32
+000: 20 7006 SERVER face 34bc0 9fbf1 dead 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=40 from=CLIENT
+000: 28 7006 CLIENT face 34bc0 9fbf1 0 5
+008: 66697368 6f7e7e7e
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=0 name="fisho"
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=40
+000: 28 7006 SERVER face 34bc0 9fbf1 0 5
+008: 66697368 6f7e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE_REQ fd=<n> len=32 from=CLIENT
+000: 20 7006 CLIENT face 34bc0 9fbf1 0 0
++ PDU_INSTANCE_REQ: now=216000.654321 12:00:00.654 indom=0.64206 inst=0 name=NULL
+[SERVER]pmXmitPDU: INSTANCE_REQ fd=<n> len=32
+000: 20 7006 SERVER face 34bc0 9fbf1 0 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=216 from=CLIENT
+000: d8 7007 CLIENT 1234 b 1 5 616c7068
+008: 617e7e7e 2 4 62657461 4 5 67616d6d 617e7e7e
+016: 8 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 10 5 64656c74 617e7e7e
+032: 20 7 65707369 6c6f6e7e 40 3 7068697e 80
+040: 2 6d757e7e 100 6 6c616d62 64617e7e 200 5
+048: 6f6d6567 617e7e7e 400 5 74686574 617e7e7e
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=1 name="alpha"
+ [1] inst=2 name="beta"
+ [2] inst=4 name="gamma"
+ [3] inst=8 name="long-non-greek-letter-name-in-the-middle"
+ [4] inst=16 name="delta"
+ [5] inst=32 name="epsilon"
+ [6] inst=64 name="phi"
+ [7] inst=128 name="mu"
+ [8] inst=256 name="lambda"
+ [9] inst=512 name="omega"
+ [10] inst=1024 name="theta"
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=216
+000: d8 7007 SERVER 1234 b 1 5 616c7068
+008: 617e7e7e 2 4 62657461 4 5 67616d6d 617e7e7e
+016: 8 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 10 5 64656c74 617e7e7e
+032: 20 7 65707369 6c6f6e7e 40 3 7068697e 80
+040: 2 6d757e7e 100 6 6c616d62 64617e7e 200 5
+048: 6f6d6567 617e7e7e 400 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=216 from=CLIENT
+000: d8 7007 CLIENT 1234 b ffffffff 5 616c7068
+008: 617e7e7e ffffffff 4 62657461 ffffffff 5 67616d6d 617e7e7e
+016: ffffffff 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74 617e7e7e
+032: ffffffff 7 65707369 6c6f6e7e ffffffff 3 7068697e ffffffff
+040: 2 6d757e7e ffffffff 6 6c616d62 64617e7e ffffffff 5
+048: 6f6d6567 617e7e7e ffffffff 5 74686574 617e7e7e
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=-1 name="alpha"
+ [1] inst=-1 name="beta"
+ [2] inst=-1 name="gamma"
+ [3] inst=-1 name="long-non-greek-letter-name-in-the-middle"
+ [4] inst=-1 name="delta"
+ [5] inst=-1 name="epsilon"
+ [6] inst=-1 name="phi"
+ [7] inst=-1 name="mu"
+ [8] inst=-1 name="lambda"
+ [9] inst=-1 name="omega"
+ [10] inst=-1 name="theta"
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=216
+000: d8 7007 SERVER 1234 b ffffffff 5 616c7068
+008: 617e7e7e ffffffff 4 62657461 ffffffff 5 67616d6d 617e7e7e
+016: ffffffff 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61
+024: 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74 617e7e7e
+032: ffffffff 7 65707369 6c6f6e7e ffffffff 3 7068697e ffffffff
+040: 2 6d757e7e ffffffff 6 6c616d62 64617e7e ffffffff 5
+048: 6f6d6567 617e7e7e ffffffff 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: INSTANCE fd=<n> len=108 from=CLIENT
+000: 6c 7007 CLIENT 1234 b 1 0 2
+008: 0 4 0 8 0 10 0 20
+016: 0 40 0 80 0 100 0 200
+024: 0 400 0
++ PDU_INSTANCE: pmInResult dump from ADDR for InDom 0.4660 (0x1234), numinst=11
+ [0] inst=1 name=""
+ [1] inst=2 name=""
+ [2] inst=4 name=""
+ [3] inst=8 name=""
+ [4] inst=16 name=""
+ [5] inst=32 name=""
+ [6] inst=64 name=""
+ [7] inst=128 name=""
+ [8] inst=256 name=""
+ [9] inst=512 name=""
+ [10] inst=1024 name=""
+[SERVER]pmXmitPDU: INSTANCE fd=<n> len=108
+000: 6c 7007 SERVER 1234 b 1 0 2
+008: 0 4 0 8 0 10 0 20
+016: 0 40 0 80 0 100 0 200
+024: 0 400 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TEXT_REQ fd=<n> len=20 from=CLIENT
+000: 14 7008 CLIENT 12341234 5
++ PDU_TEXT_REQ: ident=305402420 PMID 72.3332.564 txtype=5
+[SERVER]pmXmitPDU: TEXT_REQ fd=<n> len=20
+000: 14 7008 SERVER 12341234 5
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TEXT fd=<n> len=72 from=CLIENT
+000: 48 7009 CLIENT 43214321 34 6d617279 20686164 2061206c
+008: 6974746c 65206c61 6d620a69 74732066 6c656563 65207761 73207768 69746520
+016: 61732073 6e6f770a
++ PDU_TEXT: ident=1126253345 text="mary had a l ... was white as snow"
+[SERVER]pmXmitPDU: TEXT fd=<n> len=72
+000: 48 7009 SERVER 43214321 34 6d617279 20686164 2061206c
+008: 6974746c 65206c61 6d620a69 74732066 6c656563 65207761 73207768 69746520
+016: 61732073 6e6f770a
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: AUTH fd=<n> len=22 from=CLIENT
+000: 16 7011 CLIENT 5000000 71706370 7e7e0061
++ PDU_AUTH: attr=5 length=6 value="pcpqa"
+[SERVER]pmXmitPDU: AUTH fd=<n> len=22
+000: 16 7011 SERVER 5000000 71706370 7e7e0061
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: CREDS fd=<n> len=20 from=CLIENT
+000: 14 700c CLIENT 1000000 b0a0201
++ PDU_CREDS: sender=CLIENT count=1
++ [0] type=1 a=2 b=10 c=11
+[SERVER]pmXmitPDU: CREDS fd=<n> len=20
+000: 14 700c SERVER 1000000 b0a0201
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_IDS fd=<n> len=44 from=CLIENT
+000: 2c 700d CLIENT 2b 6 0 1ec72315 3fc00000
+008: 3ffc00 3ff ffffffff
++ PDU_PMNS_IDS: sts arg=43
+IDlist dump: numids = 6
+ PMID[0]: 0x00000000 0.0.0
+ PMID[1]: 0x1ec72315 123.456.789
+ PMID[2]: 0x3fc00000 255.0.0
+ PMID[3]: 0x003ffc00 0.4095.0
+ PMID[4]: 0x000003ff 0.0.1023
+ PMID[5]: 0xffffffff PM_ID_NULL
+[SERVER]pmXmitPDU: PMNS_IDS fd=<n> len=44
+000: 2c 700d SERVER 2b 6 0 1ec72315 3fc00000
+008: 3ffc00 3ff ffffffff
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_NAMES fd=<n> len=220 from=CLIENT
+000: dc 700e CLIENT 62 b b fffffffb 5
+008: 616c7068 617e7e7e fffffffc 4 62657461 fffffffd 5 67616d6d
+016: 617e7e7e fffffffe 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465
+024: 722d6e61 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74
+032: 617e7e7e 0 7 65707369 6c6f6e7e 1 3 7068697e
+040: 2 2 6d757e7e 3 6 6c616d62 64617e7e 4
+048: 5 6f6d6567 617e7e7e 5 5 74686574 617e7e7e
++ PDU_PMNS_NAMES:
+namelist dump: numnames = 11
+ name[0]: "alpha"
+ name[1]: "beta"
+ name[2]: "gamma"
+ name[3]: "long-non-greek-letter-name-in-the-middle"
+ name[4]: "delta"
+ name[5]: "epsilon"
+ name[6]: "phi"
+ name[7]: "mu"
+ name[8]: "lambda"
+ name[9]: "omega"
+ name[10]: "theta"
+statuslist dump: numstatus = 11
+ status[0]: -5
+ status[1]: -4
+ status[2]: -3
+ status[3]: -2
+ status[4]: -1
+ status[5]: 0
+ status[6]: 1
+ status[7]: 2
+ status[8]: 3
+ status[9]: 4
+ status[10]: 5
+[SERVER]pmXmitPDU: PMNS_NAMES fd=<n> len=220
+000: dc 700e SERVER 62 b b fffffffb 5
+008: 616c7068 617e7e7e fffffffc 4 62657461 fffffffd 5 67616d6d
+016: 617e7e7e fffffffe 28 6c6f6e67 2d6e6f6e 2d677265 656b2d6c 65747465
+024: 722d6e61 6d652d69 6e2d7468 652d6d69 64646c65 ffffffff 5 64656c74
+032: 617e7e7e 0 7 65707369 6c6f6e7e 1 3 7068697e
+040: 2 2 6d757e7e 3 6 6c616d62 64617e7e 4
+048: 5 6f6d6567 617e7e7e 5 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_NAMES fd=<n> len=176 from=CLIENT
+000: b0 700e CLIENT 62 0 b 5 616c7068
+008: 617e7e7e 4 62657461 5 67616d6d 617e7e7e 28 6c6f6e67
+016: 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61 6d652d69 6e2d7468 652d6d69
+024: 64646c65 5 64656c74 617e7e7e 7 65707369 6c6f6e7e 3
+032: 7068697e 2 6d757e7e 6 6c616d62 64617e7e 5 6f6d6567
+040: 617e7e7e 5 74686574 617e7e7e
++ PDU_PMNS_NAMES:
+namelist dump: numnames = 11
+ name[0]: "alpha"
+ name[1]: "beta"
+ name[2]: "gamma"
+ name[3]: "long-non-greek-letter-name-in-the-middle"
+ name[4]: "delta"
+ name[5]: "epsilon"
+ name[6]: "phi"
+ name[7]: "mu"
+ name[8]: "lambda"
+ name[9]: "omega"
+ name[10]: "theta"
+[SERVER]pmXmitPDU: PMNS_NAMES fd=<n> len=176
+000: b0 700e SERVER 62 0 b 5 616c7068
+008: 617e7e7e 4 62657461 5 67616d6d 617e7e7e 28 6c6f6e67
+016: 2d6e6f6e 2d677265 656b2d6c 65747465 722d6e61 6d652d69 6e2d7468 652d6d69
+024: 64646c65 5 64656c74 617e7e7e 7 65707369 6c6f6e7e 3
+032: 7068697e 2 6d757e7e 6 6c616d62 64617e7e 5 6f6d6567
+040: 617e7e7e 5 74686574 617e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_CHILD fd=<n> len=36 from=CLIENT
+000: 24 700f CLIENT 1 d 6d756d62 6c652e66 756d626c
+008: 657e7e7e
++ PDU_PMNS_CHILD: name="mumble.fumble" code=1
+[SERVER]pmXmitPDU: PMNS_CHILD fd=<n> len=36
+000: 24 700f SERVER 1 d 6d756d62 6c652e66 756d626c
+008: 657e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: PMNS_TRAVERSE fd=<n> len=36 from=CLIENT
+000: 24 7010 CLIENT 0 d 666f6f2e 6261722e 736e6f72
+008: 747e7e7e
++ PDU_PMNS_TRAVERSE: name="foo.bar.snort"
+[SERVER]pmXmitPDU: PMNS_TRAVERSE fd=<n> len=36
+000: 24 7010 SERVER 0 d 666f6f2e 6261722e 736e6f72
+008: 747e7e7e
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=68 from=0
+000: 44 8000 0 b 1 3e8 2 dead
+008: ffffffff beef 3 2 929 4 d80 8
+016: 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): Operation not permitted
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): Operation not permitted
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=68
+000: 44 8000 0 b 1 3e8 2 dead
+008: ffffffff beef 3 2 929 4 d80 8
+016: 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=68 from=0
+000: 44 8000 0 b 1 3e8 2 dead
+008: 0 beef 3 2 929 4 d80 8
+016: 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): No values returned!
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): No values returned!
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=68
+000: 44 8000 0 b 1 3e8 2 dead
+008: 0 beef 3 2 929 4 d80 8
+016: 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_CONTROL fd=<n> len=76 from=0
+000: 4c 8000 0 b 1 3e8 2 dead
+008: 1 ffffffff 4d2 beef 3 2 929 4
+016: d80 8 11d7
++ PDU_LOG_CONTROL: control=11 state=1 rate=1000
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+pmResult dump from ADDR timestamp: NOW TODAY numpmid: 2
+ 0.55.685 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1234 0 0x4d2
+ 0.47.751 (<noname>): numval: 3 valfmt: 0 vlist[]:
+ inst [2 or ???] value 2345 0 0x929
+ inst [4 or ???] value 3456 0 0xd80
+ inst [8 or ???] value 4567 0 0x11d7
+[SERVER]pmXmitPDU: LOG_CONTROL fd=<n> len=76
+000: 4c 8000 0 b 1 3e8 2 dead
+008: 1 ffffffff 4d2 beef 3 2 929 4
+016: d80 8 11d7
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_STATUS fd=<n> len=264 from=0
+000: 108 8001 0 ?? pad ? b6d0 3039 b6da 5ba0
+008: b6e4 8707 1 1 0 800 666f6f00 0
+016: 0 0 0 0 0 0 0 0
+024: 0 0 0 0 0 0 666f6f2e 6261722e
+032: 636f6d00 0 0 0 0 0 0 0
+040: 0 0 0 0 0 0 545a2d54 48455245
+048: 0 0 0 0 0 0 0 0
+056: 545a2d48 45524500 0 0 0 0 0 0
+064: 0 0
+__pmDecodeLogStatus: got PDU (fromversion=2)
++ PDU_LOG_STATUS: start=46800.012345 13:00:00.012
+last=46810.023456 13:00:10.023 now=46820.034567 13:00:20.034
+state=1 vol=1 size=2048 host=foo tz="TZ-THERE" tzlogger="TZ-HERE"
+__pmSendLogStatus: sending PDU (toversion=2)
+[SERVER]pmXmitPDU: LOG_STATUS fd=<n> len=264
+000: 108 8001 0 ?? pad ? b6d0 3039 b6da 5ba0
+008: b6e4 8707 1 1 0 800 666f6f00 0
+016: 0 0 0 0 0 0 0 0
+024: 0 0 0 0 0 0 666f6f2e 6261722e
+032: 636f6d00 0 0 0 0 0 0 0
+040: 0 0 0 0 0 0 545a2d54 48455245
+048: 0 0 0 0 0 0 0 0
+056: 545a2d48 45524500 0 0 0 0 0 0
+064: 0 0
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: LOG_REQUEST fd=<n> len=16 from=0
+000: 10 8002 0 3
+__pmDecodeLogRequest: got PDU (type=3, version=2)
++ PDU_LOG_REQUEST: request=sync
+_pmSendRequest: sending PDU (type=3, version=2)
+[SERVER]pmXmitPDU: LOG_REQUEST fd=<n> len=16
+000: 10 8002 0 3
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28752? fd=<n> len=16 from=CLIENT
+000: 10 7050 CLIENT 41
++ TRACE_PDU_ACK: ack=65
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=32 from=CLIENT
+000: 20 7051 CLIENT 1060380 402f6a7a 2955385e 62312b62 32007e7e
++ TRACE_PDU_DATA: tag="b1+b2" taglen=6 type=observe value=15.708
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=32 from=CLIENT
+000: 20 7051 CLIENT 1050380 402921fb 54442d18 62312b62 7e7e7e
++ TRACE_PDU_DATA: tag="b1+b" taglen=5 type=observe value=12.5664
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1040380 4022d97c 7f3321d2 62312b00
++ TRACE_PDU_DATA: tag="b1+" taglen=4 type=observe value=9.42478
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1030380 401921fb 54442d18 6231007e
++ TRACE_PDU_DATA: tag="b1" taglen=3 type=observe value=6.28319
+
+pdu-server: waiting ...
+[SERVER]pmGetPDU: TYPE-28753? fd=<n> len=28 from=CLIENT
+000: 1c 7051 CLIENT 1020380 400921fb 54442d18 62007e7e
++ TRACE_PDU_DATA: tag="b" taglen=2 type=observe value=3.14159
+
+pdu-server: waiting ...
+pdu-server: end-of-file
diff --git a/qa/368 b/qa/368
new file mode 100755
index 0000000..24646d5
--- /dev/null
+++ b/qa/368
@@ -0,0 +1,184 @@
+#!/bin/sh
+# PCP QA Test No. 368
+#
+# pmlogconf - handle changes in installed group files
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ -f $PCP_BINADM_DIR/pmlogconf-setup ] || _notrun "pmlogconf v2.0 is not installed"
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3901 ]
+then
+ suffix=3
+elif [ $PCP_VER -ge 3802 ]
+then
+ suffix=2
+else
+ suffix=1
+fi
+if [ $PCP_PLATFORM = darwin ]
+then
+ ln $seq.darwin.$suffix $seq.out || exit 1
+else
+ ln $seq.other.$suffix $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+mkdir $tmp
+
+# need to handle diff-c lines like this
+# *** TMP.conf 2010-06-17 06:36:00.000000000 +1000
+# --- /var/tmp/pcp.[a0Sg619P4/]ctl 2012-11-16 13:37:29.000000000 +0000
+#
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e '/^\*\*\* TMP\.conf/s/\.conf.*/.orig .../' \
+ -e '/^--- .*\/ctl/s/ .*/ TMP.new .../' \
+ -e '/^--- .*\.ctl/s/ .*/ TMP.new .../'
+}
+
+cat <<End-of-File >$tmp/01
+#pmlogconf-setup 2.0
+probe sample.long.ten == 10 ? include : exclude
+ident qa group one
+ sample.long.ten
+ sample.long.hundred
+ sample.long.million
+End-of-File
+
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten != 10 ? include : exclude
+ident qa group two
+ sample.ulong.ten
+End-of-File
+
+cat <<End-of-File >$tmp/03
+#pmlogconf-setup 2.0
+probe sample.longlong.ten >= 10 ? include : available
+ident qa group three
+ sample.longlong.ten
+End-of-File
+
+cat <<End-of-File >$tmp/04
+#pmlogconf-setup 2.0
+probe sample.ulonglong.ten < 10 ? include : available
+ident qa group four
+ sample.ulonglong.ten
+End-of-File
+
+# real QA test starts here
+
+pmlogconf -d $tmp $tmp.conf \
+| _filter
+
+echo "--- start initial config file ---"
+cat $tmp.conf | _filter
+echo "--- end initial config file ---"
+
+cat <<End-of-File >$tmp/00
+#pmlogconf-setup 2.0
+force include
+ident qa group zero
+ sample.float.ten
+End-of-File
+
+cat <<End-of-File >$tmp/05
+#pmlogconf-setup 2.0
+force available
+ident qa group five
+ sample.double.ten
+End-of-File
+
+rm $tmp/03
+
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+# reverse the condition
+#
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten <= 10 ? include : exclude
+ident qa group two
+ sample.ulong.ten
+End-of-File
+
+# reverse the condition
+#
+cat <<End-of-File >$tmp/03
+#pmlogconf-setup 2.0
+probe sample.longlong.ten > 10 ? include : available
+ident qa group three
+ sample.longlong.ten
+End-of-File
+
+( echo q ; echo '') | pmlogconf -r -d $tmp $tmp.conf \
+| _filter
+
+# drop a metric
+#
+cat <<End-of-File >$tmp/01
+#pmlogconf-setup 2.0
+probe sample.long.ten ~ ^10$ ? include : exclude
+ident qa group one
+ sample.long.ten
+ sample.long.million
+End-of-File
+
+# add a metric
+#
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten ~ 10 ? include : exclude
+ident qa group two
+ sample.ulong.ten
+ sample.ulong.million
+End-of-File
+
+cat <<'End-of-File' >$tmp/98
+#pmlogconf-setup 2.0
+ident postgresql summary information
+probe postgresql.stat.all_tables.seq_scan ? include : available
+ postgresql.stat.database
+ postgresql.stat.all_tables
+ postgresql.stat.all_indexes
+ postgresql.statio.all_tables
+ postgresql.statio.all_indexes
+End-of-File
+
+cat <<'End-of-File' >$tmp/99
+#pmlogconf-setup 2.0
+ident Example from pmlogconf(1) man page
+ident ... more descripton
+delta 1 minute
+probe sample.secret.foo.one values ? include : exclude
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+End-of-File
+
+( echo q ; echo '') | pmlogconf -d $tmp $tmp.conf \
+| _filter
+
+echo "--- start final config file ---"
+cat $tmp.conf | _filter
+echo "--- end final config file ---"
+
+# success, all done
+exit
diff --git a/qa/368.darwin.1 b/qa/368.darwin.1
new file mode 100644
index 0000000..775444f
--- /dev/null
+++ b/qa/368.darwin.1
@@ -0,0 +1,210 @@
+QA output created by 368
+Creating config file "TMP.conf" using default settings ...
+...
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.hundred
+ sample.long.million
+}
+#----
+#+ 02:x::
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+--- end initial config file ---
+need to add new group tag=00
+TMP/00:
+force include -> probe=success action=include
+need to add new group tag=05
+TMP/05:
+force available -> probe=success action=available
+
+Group: qa group one
+Log this group? [y] Warning: cannot find group file (03) ... no change is possible
+...
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 27,32 ****
+--- 27,41 ----
+ #+ 04:n:default:
+ ## qa group four
+ #----
++ #+ 00:y:default:
++ ## qa group zero
++ log advisory on default {
++ sample.float.ten
++ }
++ #----
++ #+ 05:n:default:
++ ## qa group five
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+
+Group: qa group one
+Log this group? [y] .....
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 16,22 ****
+ sample.long.million
+ }
+ #----
+! #+ 02:x::
+ #----
+ #+ 03:y:default:
+ ## qa group three
+--- 16,26 ----
+ sample.long.million
+ }
+ #----
+! #+ 02:y:default:
+! ## qa group two
+! log advisory on default {
+! sample.ulong.ten
+! }
+ #----
+ #+ 03:y:default:
+ ## qa group three
+Keep changes? [y]
+
+Group: qa group one
+Log this group? [y] .......
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 12,18 ****
+ ## qa group one
+ log advisory on default {
+ sample.long.ten
+- sample.long.hundred
+ sample.long.million
+ }
+ #----
+--- 12,17 ----
+***************
+*** 20,25 ****
+--- 19,25 ----
+ ## qa group two
+ log advisory on default {
+ sample.ulong.ten
++ sample.ulong.million
+ }
+ #----
+ #+ 03:y:default:
+***************
+*** 40,45 ****
+--- 40,56 ----
+ #+ 05:n:default:
+ ## qa group five
+ #----
++ #+ 98:n:default:
++ ## postgresql summary information
++ #----
++ #+ 99:y:1 minute:
++ ## Example from pmlogconf(1) man page ... more descripton
++ log advisory on 1 minute {
++ sample.secret.foo.one
++ sample.secret.foo.bar # non-leaf in the PMNS
++ sample.colour [ red green ]
++ }
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+--- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.million
+}
+#----
+#+ 02:y:default:
+## qa group two
+log advisory on default {
+ sample.ulong.ten
+ sample.ulong.million
+}
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+#+ 00:y:default:
+## qa group zero
+log advisory on default {
+ sample.float.ten
+}
+#----
+#+ 05:n:default:
+## qa group five
+#----
+#+ 98:n:default:
+## postgresql summary information
+#----
+#+ 99:y:1 minute:
+## Example from pmlogconf(1) man page ... more descripton
+log advisory on 1 minute {
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+--- end final config file ---
diff --git a/qa/368.darwin.2 b/qa/368.darwin.2
new file mode 100644
index 0000000..56859d7
--- /dev/null
+++ b/qa/368.darwin.2
@@ -0,0 +1,216 @@
+QA output created by 368
+Creating config file "TMP.conf" using default settings ...
+...
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.hundred
+ sample.long.million
+}
+#----
+#+ 02:x::
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow * : all;
+allow localhost : enquire;
+--- end initial config file ---
+need to add new group tag=00
+TMP/00:
+force include -> probe=success action=include
+need to add new group tag=05
+TMP/05:
+force available -> probe=success action=available
+
+Group: qa group one
+Log this group? [y] Warning: cannot find group file (03) ... no change is possible
+...
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 27,32 ****
+--- 27,41 ----
+ #+ 04:n:default:
+ ## qa group four
+ #----
++ #+ 00:y:default:
++ ## qa group zero
++ log advisory on default {
++ sample.float.ten
++ }
++ #----
++ #+ 05:n:default:
++ ## qa group five
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+
+Group: qa group one
+Log this group? [y] .....
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 16,22 ****
+ sample.long.million
+ }
+ #----
+! #+ 02:x::
+ #----
+ #+ 03:y:default:
+ ## qa group three
+--- 16,26 ----
+ sample.long.million
+ }
+ #----
+! #+ 02:y:default:
+! ## qa group two
+! log advisory on default {
+! sample.ulong.ten
+! }
+ #----
+ #+ 03:y:default:
+ ## qa group three
+Keep changes? [y]
+
+Group: qa group one
+Log this group? [y] .......
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 12,18 ****
+ ## qa group one
+ log advisory on default {
+ sample.long.ten
+- sample.long.hundred
+ sample.long.million
+ }
+ #----
+--- 12,17 ----
+***************
+*** 20,25 ****
+--- 19,25 ----
+ ## qa group two
+ log advisory on default {
+ sample.ulong.ten
++ sample.ulong.million
+ }
+ #----
+ #+ 03:y:default:
+***************
+*** 40,45 ****
+--- 40,56 ----
+ #+ 05:n:default:
+ ## qa group five
+ #----
++ #+ 98:n:default:
++ ## postgresql summary information
++ #----
++ #+ 99:y:1 minute:
++ ## Example from pmlogconf(1) man page ... more descripton
++ log advisory on 1 minute {
++ sample.secret.foo.one
++ sample.secret.foo.bar # non-leaf in the PMNS
++ sample.colour [ red green ]
++ }
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+--- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.million
+}
+#----
+#+ 02:y:default:
+## qa group two
+log advisory on default {
+ sample.ulong.ten
+ sample.ulong.million
+}
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+#+ 00:y:default:
+## qa group zero
+log advisory on default {
+ sample.float.ten
+}
+#----
+#+ 05:n:default:
+## qa group five
+#----
+#+ 98:n:default:
+## postgresql summary information
+#----
+#+ 99:y:1 minute:
+## Example from pmlogconf(1) man page ... more descripton
+log advisory on 1 minute {
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow * : all;
+allow localhost : enquire;
+--- end final config file ---
diff --git a/qa/368.darwin.3 b/qa/368.darwin.3
new file mode 100644
index 0000000..1de049d
--- /dev/null
+++ b/qa/368.darwin.3
@@ -0,0 +1,218 @@
+QA output created by 368
+Creating config file "TMP.conf" using default settings ...
+...
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.hundred
+ sample.long.million
+}
+#----
+#+ 02:x::
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow .* : all;
+disallow :* : all;
+allow local:* : enquire;
+--- end initial config file ---
+need to add new group tag=00
+TMP/00:
+force include -> probe=success action=include
+need to add new group tag=05
+TMP/05:
+force available -> probe=success action=available
+
+Group: qa group one
+Log this group? [y] Warning: cannot find group file (03) ... no change is possible
+...
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 27,32 ****
+--- 27,41 ----
+ #+ 04:n:default:
+ ## qa group four
+ #----
++ #+ 00:y:default:
++ ## qa group zero
++ log advisory on default {
++ sample.float.ten
++ }
++ #----
++ #+ 05:n:default:
++ ## qa group five
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+
+Group: qa group one
+Log this group? [y] .....
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 16,22 ****
+ sample.long.million
+ }
+ #----
+! #+ 02:x::
+ #----
+ #+ 03:y:default:
+ ## qa group three
+--- 16,26 ----
+ sample.long.million
+ }
+ #----
+! #+ 02:y:default:
+! ## qa group two
+! log advisory on default {
+! sample.ulong.ten
+! }
+ #----
+ #+ 03:y:default:
+ ## qa group three
+Keep changes? [y]
+
+Group: qa group one
+Log this group? [y] .......
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 12,18 ****
+ ## qa group one
+ log advisory on default {
+ sample.long.ten
+- sample.long.hundred
+ sample.long.million
+ }
+ #----
+--- 12,17 ----
+***************
+*** 20,25 ****
+--- 19,25 ----
+ ## qa group two
+ log advisory on default {
+ sample.ulong.ten
++ sample.ulong.million
+ }
+ #----
+ #+ 03:y:default:
+***************
+*** 40,45 ****
+--- 40,56 ----
+ #+ 05:n:default:
+ ## qa group five
+ #----
++ #+ 98:n:default:
++ ## postgresql summary information
++ #----
++ #+ 99:y:1 minute:
++ ## Example from pmlogconf(1) man page ... more descripton
++ log advisory on 1 minute {
++ sample.secret.foo.one
++ sample.secret.foo.bar # non-leaf in the PMNS
++ sample.colour [ red green ]
++ }
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+--- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.million
+}
+#----
+#+ 02:y:default:
+## qa group two
+log advisory on default {
+ sample.ulong.ten
+ sample.ulong.million
+}
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+#+ 00:y:default:
+## qa group zero
+log advisory on default {
+ sample.float.ten
+}
+#----
+#+ 05:n:default:
+## qa group five
+#----
+#+ 98:n:default:
+## postgresql summary information
+#----
+#+ 99:y:1 minute:
+## Example from pmlogconf(1) man page ... more descripton
+log advisory on 1 minute {
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow .* : all;
+disallow :* : all;
+allow local:* : enquire;
+--- end final config file ---
diff --git a/qa/368.other.1 b/qa/368.other.1
new file mode 100644
index 0000000..18eff66
--- /dev/null
+++ b/qa/368.other.1
@@ -0,0 +1,207 @@
+QA output created by 368
+Creating config file "TMP.conf" using default settings ...
+...
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.hundred
+ sample.long.million
+}
+#----
+#+ 02:x::
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+--- end initial config file ---
+need to add new group tag=00
+TMP/00:
+force include -> probe=success action=include
+need to add new group tag=05
+TMP/05:
+force available -> probe=success action=available
+
+Group: qa group one
+Log this group? [y] Warning: cannot find group file (03) ... no change is possible
+...
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 27,32 ****
+--- 27,41 ----
+ #+ 04:n:default:
+ ## qa group four
+ #----
++ #+ 00:y:default:
++ ## qa group zero
++ log advisory on default {
++ sample.float.ten
++ }
++ #----
++ #+ 05:n:default:
++ ## qa group five
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+Group: qa group one
+Log this group? [y] .....
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 16,22 ****
+ sample.long.million
+ }
+ #----
+! #+ 02:x::
+ #----
+ #+ 03:y:default:
+ ## qa group three
+--- 16,26 ----
+ sample.long.million
+ }
+ #----
+! #+ 02:y:default:
+! ## qa group two
+! log advisory on default {
+! sample.ulong.ten
+! }
+ #----
+ #+ 03:y:default:
+ ## qa group three
+Keep changes? [y]
+Group: qa group one
+Log this group? [y] .......
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 12,18 ****
+ ## qa group one
+ log advisory on default {
+ sample.long.ten
+- sample.long.hundred
+ sample.long.million
+ }
+ #----
+--- 12,17 ----
+***************
+*** 20,25 ****
+--- 19,25 ----
+ ## qa group two
+ log advisory on default {
+ sample.ulong.ten
++ sample.ulong.million
+ }
+ #----
+ #+ 03:y:default:
+***************
+*** 40,45 ****
+--- 40,56 ----
+ #+ 05:n:default:
+ ## qa group five
+ #----
++ #+ 98:n:default:
++ ## postgresql summary information
++ #----
++ #+ 99:y:1 minute:
++ ## Example from pmlogconf(1) man page ... more descripton
++ log advisory on 1 minute {
++ sample.secret.foo.one
++ sample.secret.foo.bar # non-leaf in the PMNS
++ sample.colour [ red green ]
++ }
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y] --- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.million
+}
+#----
+#+ 02:y:default:
+## qa group two
+log advisory on default {
+ sample.ulong.ten
+ sample.ulong.million
+}
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+#+ 00:y:default:
+## qa group zero
+log advisory on default {
+ sample.float.ten
+}
+#----
+#+ 05:n:default:
+## qa group five
+#----
+#+ 98:n:default:
+## postgresql summary information
+#----
+#+ 99:y:1 minute:
+## Example from pmlogconf(1) man page ... more descripton
+log advisory on 1 minute {
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+--- end final config file ---
diff --git a/qa/368.other.2 b/qa/368.other.2
new file mode 100644
index 0000000..33db87b
--- /dev/null
+++ b/qa/368.other.2
@@ -0,0 +1,213 @@
+QA output created by 368
+Creating config file "TMP.conf" using default settings ...
+...
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.hundred
+ sample.long.million
+}
+#----
+#+ 02:x::
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow * : all;
+allow localhost : enquire;
+--- end initial config file ---
+need to add new group tag=00
+TMP/00:
+force include -> probe=success action=include
+need to add new group tag=05
+TMP/05:
+force available -> probe=success action=available
+
+Group: qa group one
+Log this group? [y] Warning: cannot find group file (03) ... no change is possible
+...
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 27,32 ****
+--- 27,41 ----
+ #+ 04:n:default:
+ ## qa group four
+ #----
++ #+ 00:y:default:
++ ## qa group zero
++ log advisory on default {
++ sample.float.ten
++ }
++ #----
++ #+ 05:n:default:
++ ## qa group five
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+Group: qa group one
+Log this group? [y] .....
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 16,22 ****
+ sample.long.million
+ }
+ #----
+! #+ 02:x::
+ #----
+ #+ 03:y:default:
+ ## qa group three
+--- 16,26 ----
+ sample.long.million
+ }
+ #----
+! #+ 02:y:default:
+! ## qa group two
+! log advisory on default {
+! sample.ulong.ten
+! }
+ #----
+ #+ 03:y:default:
+ ## qa group three
+Keep changes? [y]
+Group: qa group one
+Log this group? [y] .......
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 12,18 ****
+ ## qa group one
+ log advisory on default {
+ sample.long.ten
+- sample.long.hundred
+ sample.long.million
+ }
+ #----
+--- 12,17 ----
+***************
+*** 20,25 ****
+--- 19,25 ----
+ ## qa group two
+ log advisory on default {
+ sample.ulong.ten
++ sample.ulong.million
+ }
+ #----
+ #+ 03:y:default:
+***************
+*** 40,45 ****
+--- 40,56 ----
+ #+ 05:n:default:
+ ## qa group five
+ #----
++ #+ 98:n:default:
++ ## postgresql summary information
++ #----
++ #+ 99:y:1 minute:
++ ## Example from pmlogconf(1) man page ... more descripton
++ log advisory on 1 minute {
++ sample.secret.foo.one
++ sample.secret.foo.bar # non-leaf in the PMNS
++ sample.colour [ red green ]
++ }
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y] --- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.million
+}
+#----
+#+ 02:y:default:
+## qa group two
+log advisory on default {
+ sample.ulong.ten
+ sample.ulong.million
+}
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+#+ 00:y:default:
+## qa group zero
+log advisory on default {
+ sample.float.ten
+}
+#----
+#+ 05:n:default:
+## qa group five
+#----
+#+ 98:n:default:
+## postgresql summary information
+#----
+#+ 99:y:1 minute:
+## Example from pmlogconf(1) man page ... more descripton
+log advisory on 1 minute {
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow * : all;
+allow localhost : enquire;
+--- end final config file ---
diff --git a/qa/368.other.3 b/qa/368.other.3
new file mode 100644
index 0000000..ec8aa60
--- /dev/null
+++ b/qa/368.other.3
@@ -0,0 +1,215 @@
+QA output created by 368
+Creating config file "TMP.conf" using default settings ...
+...
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.hundred
+ sample.long.million
+}
+#----
+#+ 02:x::
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow .* : all;
+disallow :* : all;
+allow local:* : enquire;
+--- end initial config file ---
+need to add new group tag=00
+TMP/00:
+force include -> probe=success action=include
+need to add new group tag=05
+TMP/05:
+force available -> probe=success action=available
+
+Group: qa group one
+Log this group? [y] Warning: cannot find group file (03) ... no change is possible
+...
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 27,32 ****
+--- 27,41 ----
+ #+ 04:n:default:
+ ## qa group four
+ #----
++ #+ 00:y:default:
++ ## qa group zero
++ log advisory on default {
++ sample.float.ten
++ }
++ #----
++ #+ 05:n:default:
++ ## qa group five
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y]
+Group: qa group one
+Log this group? [y] .....
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 16,22 ****
+ sample.long.million
+ }
+ #----
+! #+ 02:x::
+ #----
+ #+ 03:y:default:
+ ## qa group three
+--- 16,26 ----
+ sample.long.million
+ }
+ #----
+! #+ 02:y:default:
+! ## qa group two
+! log advisory on default {
+! sample.ulong.ten
+! }
+ #----
+ #+ 03:y:default:
+ ## qa group three
+Keep changes? [y]
+Group: qa group one
+Log this group? [y] .......
+Differences ...
+*** TMP.orig ...
+--- TMP.new ...
+***************
+*** 12,18 ****
+ ## qa group one
+ log advisory on default {
+ sample.long.ten
+- sample.long.hundred
+ sample.long.million
+ }
+ #----
+--- 12,17 ----
+***************
+*** 20,25 ****
+--- 19,25 ----
+ ## qa group two
+ log advisory on default {
+ sample.ulong.ten
++ sample.ulong.million
+ }
+ #----
+ #+ 03:y:default:
+***************
+*** 40,45 ****
+--- 40,56 ----
+ #+ 05:n:default:
+ ## qa group five
+ #----
++ #+ 98:n:default:
++ ## postgresql summary information
++ #----
++ #+ 99:y:1 minute:
++ ## Example from pmlogconf(1) man page ... more descripton
++ log advisory on 1 minute {
++ sample.secret.foo.one
++ sample.secret.foo.bar # non-leaf in the PMNS
++ sample.colour [ red green ]
++ }
++ #----
+ # DO NOT UPDATE THE FILE ABOVE THIS LINE
+ # Otherwise any changes may be lost the next time pmlogconf is
+ # used on this file.
+Keep changes? [y] --- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one
+log advisory on default {
+ sample.long.ten
+ sample.long.million
+}
+#----
+#+ 02:y:default:
+## qa group two
+log advisory on default {
+ sample.ulong.ten
+ sample.ulong.million
+}
+#----
+#+ 03:y:default:
+## qa group three
+log advisory on default {
+ sample.longlong.ten
+}
+#----
+#+ 04:n:default:
+## qa group four
+#----
+#+ 00:y:default:
+## qa group zero
+log advisory on default {
+ sample.float.ten
+}
+#----
+#+ 05:n:default:
+## qa group five
+#----
+#+ 98:n:default:
+## postgresql summary information
+#----
+#+ 99:y:1 minute:
+## Example from pmlogconf(1) man page ... more descripton
+log advisory on 1 minute {
+ sample.secret.foo.one
+ sample.secret.foo.bar # non-leaf in the PMNS
+ sample.colour [ red green ]
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow .* : all;
+disallow :* : all;
+allow local:* : enquire;
+--- end final config file ---
diff --git a/qa/369 b/qa/369
new file mode 100755
index 0000000..b22ae46
--- /dev/null
+++ b/qa/369
@@ -0,0 +1,88 @@
+#!/bin/sh
+# PCP QA Test No. 369
+# Check out libpcp_import
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ -f ${PCP_LIB_DIR}/libpcp_import.${DSO_SUFFIX} ] || \
+ _notrun "No support for libpcp_import"
+perl -e "use PCP::LogImport" 2>/dev/null || \
+ _notrun "Perl PCP::LogImport module is not installed"
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3801 ]
+then
+ ln $seq.out.4 $seq.out || exit 1
+elif [ $PCP_VER -ge 3800 ]
+then
+ ln $seq.out.3 $seq.out || exit 1
+elif [ $PCP_VER -ge 3609 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+_filter1()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+ -e '/^EXPORT_FAIL$/d' \
+ -e '/::EXPORT_FAIL$/d'
+}
+
+_filter2()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/PID for pmlogger:/s/[0-9][0-9]*/PID/'
+}
+
+_filter3()
+{
+ $PCP_AWK_PROG '
+BEGIN { part = "part1" }
+NF == 0 { part = "part2" }
+ { print >part }'
+ if [ -f part1 ]
+ then
+ # first part of output is in non-deterministic order, so sort it
+ #
+ _filter1 <part1 | LC_COLLATE=POSIX sort
+ fi
+ [ -f part2 ] && _filter1 <part2
+}
+
+mkdir $tmp
+cd $tmp
+
+# real QA test starts here
+echo "C version ..." | tee -a $here/$seq.full
+$here/src/check_import 2>&1 | tee -a $here/$seq.full | _filter1
+pminfo -dm -a myarchive
+pmdumplog -a myarchive 2>&1 | _filter2
+
+echo
+echo "Perl wrapper version ..." | tee -a $here/$seq.full
+rm -f myarchive.*
+perl $here/src/check_import.perl 2>&1 | tee -a $here/$seq.full | _filter3
+pminfo -dm -a myarchive
+pmdumplog -a myarchive 2>&1 | _filter2
+
+# success, all done
+exit
diff --git a/qa/369.out.1 b/qa/369.out.1
new file mode 100644
index 0000000..6e21413
--- /dev/null
+++ b/qa/369.out.1
@@ -0,0 +1,500 @@
+QA output created by 369
+C version ...
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: External instance name already defined
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [1 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: OK
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] blah (3)
+ instance[2] other (2)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=1
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [1 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 2 instances
+ 1 or "eek really"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 519 132
+TIMESTAMP 0 519 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [1 or "eek really"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
+
+Perl wrapper version ...
+*PCP::LogImport::BEGIN
+*PCP::LogImport::EXPORT
+*PCP::LogImport::EXPORT_OK
+*PCP::LogImport::EXPORT_TAGS
+*PCP::LogImport::ISA
+*PCP::LogImport::PMI_DOMAIN
+*PCP::LogImport::PM_COUNT_ONE
+*PCP::LogImport::PM_ID_NULL
+*PCP::LogImport::PM_INDOM_NULL
+*PCP::LogImport::PM_IN_NULL
+*PCP::LogImport::PM_SEM_COUNTER
+*PCP::LogImport::PM_SEM_DISCRETE
+*PCP::LogImport::PM_SEM_INSTANT
+*PCP::LogImport::PM_SPACE_BYTE
+*PCP::LogImport::PM_SPACE_GBYTE
+*PCP::LogImport::PM_SPACE_KBYTE
+*PCP::LogImport::PM_SPACE_MBYTE
+*PCP::LogImport::PM_SPACE_TBYTE
+*PCP::LogImport::PM_TIME_HOUR
+*PCP::LogImport::PM_TIME_MIN
+*PCP::LogImport::PM_TIME_MSEC
+*PCP::LogImport::PM_TIME_NSEC
+*PCP::LogImport::PM_TIME_SEC
+*PCP::LogImport::PM_TIME_USEC
+*PCP::LogImport::PM_TYPE_32
+*PCP::LogImport::PM_TYPE_64
+*PCP::LogImport::PM_TYPE_DOUBLE
+*PCP::LogImport::PM_TYPE_FLOAT
+*PCP::LogImport::PM_TYPE_NOSUPPORT
+*PCP::LogImport::PM_TYPE_STRING
+*PCP::LogImport::PM_TYPE_U32
+*PCP::LogImport::PM_TYPE_U64
+*PCP::LogImport::VERSION
+*PCP::LogImport::bootstrap
+*PCP::LogImport::dl_load_flags
+*PCP::LogImport::import
+*PCP::LogImport::pmInDom_build
+*PCP::LogImport::pmiAddInstance
+*PCP::LogImport::pmiAddMetric
+*PCP::LogImport::pmiDump
+*PCP::LogImport::pmiEnd
+*PCP::LogImport::pmiErrStr
+*PCP::LogImport::pmiGetHandle
+*PCP::LogImport::pmiPutValue
+*PCP::LogImport::pmiPutValueHandle
+*PCP::LogImport::pmiSetHostname
+*PCP::LogImport::pmiSetTimezone
+*PCP::LogImport::pmiStart
+*PCP::LogImport::pmiUnits
+*PCP::LogImport::pmiUseContext
+*PCP::LogImport::pmiWrite
+*PCP::LogImport::pmid_build
+BEGIN
+EXPORT
+EXPORT_OK
+EXPORT_TAGS
+ISA
+PCP::LogImport symbols ...
+PMI_DOMAIN
+PM_COUNT_ONE
+PM_ID_NULL
+PM_INDOM_NULL
+PM_IN_NULL
+PM_SEM_COUNTER
+PM_SEM_DISCRETE
+PM_SEM_INSTANT
+PM_SPACE_BYTE
+PM_SPACE_GBYTE
+PM_SPACE_KBYTE
+PM_SPACE_MBYTE
+PM_SPACE_TBYTE
+PM_TIME_HOUR
+PM_TIME_MIN
+PM_TIME_MSEC
+PM_TIME_NSEC
+PM_TIME_SEC
+PM_TIME_USEC
+PM_TYPE_32
+PM_TYPE_64
+PM_TYPE_DOUBLE
+PM_TYPE_FLOAT
+PM_TYPE_NOSUPPORT
+PM_TYPE_STRING
+PM_TYPE_U32
+PM_TYPE_U64
+VERSION
+bootstrap
+dl_load_flags
+import
+pmInDom_build
+pmiAddInstance
+pmiAddMetric
+pmiDump
+pmiEnd
+pmiErrStr
+pmiGetHandle
+pmiPutValue
+pmiPutValueHandle
+pmiSetHostname
+pmiSetTimezone
+pmiStart
+pmiUnits
+pmiUseContext
+pmiWrite
+pmid_build
+
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: External instance name already defined
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [1 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: OK
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] blah (3)
+ instance[2] other (2)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=1
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [1 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 2 instances
+ 1 or "eek really"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 519 132
+TIMESTAMP 0 519 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [1 or "eek really"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
diff --git a/qa/369.out.2 b/qa/369.out.2
new file mode 100644
index 0000000..3861f81
--- /dev/null
+++ b/qa/369.out.2
@@ -0,0 +1,530 @@
+QA output created by 369
+C version ...
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [2 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=2
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [2 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 3 instances
+ 1 or "eek really"
+ 2 or "eek"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 531 132
+TIMESTAMP 0 531 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [2 or "eek"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
+
+Perl wrapper version ...
+*PCP::LogImport::BEGIN
+*PCP::LogImport::EXPORT
+*PCP::LogImport::EXPORT_OK
+*PCP::LogImport::EXPORT_TAGS
+*PCP::LogImport::ISA
+*PCP::LogImport::PMI_DOMAIN
+*PCP::LogImport::PMI_ERR_BADHANDLE
+*PCP::LogImport::PMI_ERR_BADSEM
+*PCP::LogImport::PMI_ERR_BADTYPE
+*PCP::LogImport::PMI_ERR_DUPINSTID
+*PCP::LogImport::PMI_ERR_DUPINSTNAME
+*PCP::LogImport::PMI_ERR_DUPMETRICID
+*PCP::LogImport::PMI_ERR_DUPMETRICNAME
+*PCP::LogImport::PMI_ERR_DUPVALUE
+*PCP::LogImport::PMI_ERR_INSTNOTNULL
+*PCP::LogImport::PMI_ERR_INSTNULL
+*PCP::LogImport::PMI_ERR_NODATA
+*PCP::LogImport::PM_COUNT_ONE
+*PCP::LogImport::PM_ID_NULL
+*PCP::LogImport::PM_INDOM_NULL
+*PCP::LogImport::PM_IN_NULL
+*PCP::LogImport::PM_SEM_COUNTER
+*PCP::LogImport::PM_SEM_DISCRETE
+*PCP::LogImport::PM_SEM_INSTANT
+*PCP::LogImport::PM_SPACE_BYTE
+*PCP::LogImport::PM_SPACE_GBYTE
+*PCP::LogImport::PM_SPACE_KBYTE
+*PCP::LogImport::PM_SPACE_MBYTE
+*PCP::LogImport::PM_SPACE_TBYTE
+*PCP::LogImport::PM_TIME_HOUR
+*PCP::LogImport::PM_TIME_MIN
+*PCP::LogImport::PM_TIME_MSEC
+*PCP::LogImport::PM_TIME_NSEC
+*PCP::LogImport::PM_TIME_SEC
+*PCP::LogImport::PM_TIME_USEC
+*PCP::LogImport::PM_TYPE_32
+*PCP::LogImport::PM_TYPE_64
+*PCP::LogImport::PM_TYPE_DOUBLE
+*PCP::LogImport::PM_TYPE_FLOAT
+*PCP::LogImport::PM_TYPE_NOSUPPORT
+*PCP::LogImport::PM_TYPE_STRING
+*PCP::LogImport::PM_TYPE_U32
+*PCP::LogImport::PM_TYPE_U64
+*PCP::LogImport::VERSION
+*PCP::LogImport::bootstrap
+*PCP::LogImport::dl_load_flags
+*PCP::LogImport::import
+*PCP::LogImport::pmInDom_build
+*PCP::LogImport::pmiAddInstance
+*PCP::LogImport::pmiAddMetric
+*PCP::LogImport::pmiDump
+*PCP::LogImport::pmiEnd
+*PCP::LogImport::pmiErrStr
+*PCP::LogImport::pmiGetHandle
+*PCP::LogImport::pmiID
+*PCP::LogImport::pmiInDom
+*PCP::LogImport::pmiPutValue
+*PCP::LogImport::pmiPutValueHandle
+*PCP::LogImport::pmiSetHostname
+*PCP::LogImport::pmiSetTimezone
+*PCP::LogImport::pmiStart
+*PCP::LogImport::pmiUnits
+*PCP::LogImport::pmiUseContext
+*PCP::LogImport::pmiWrite
+*PCP::LogImport::pmid_build
+BEGIN
+EXPORT
+EXPORT_OK
+EXPORT_TAGS
+ISA
+PCP::LogImport symbols ...
+PMI_DOMAIN
+PMI_ERR_BADHANDLE
+PMI_ERR_BADSEM
+PMI_ERR_BADTYPE
+PMI_ERR_DUPINSTID
+PMI_ERR_DUPINSTNAME
+PMI_ERR_DUPMETRICID
+PMI_ERR_DUPMETRICNAME
+PMI_ERR_DUPVALUE
+PMI_ERR_INSTNOTNULL
+PMI_ERR_INSTNULL
+PMI_ERR_NODATA
+PM_COUNT_ONE
+PM_ID_NULL
+PM_INDOM_NULL
+PM_IN_NULL
+PM_SEM_COUNTER
+PM_SEM_DISCRETE
+PM_SEM_INSTANT
+PM_SPACE_BYTE
+PM_SPACE_GBYTE
+PM_SPACE_KBYTE
+PM_SPACE_MBYTE
+PM_SPACE_TBYTE
+PM_TIME_HOUR
+PM_TIME_MIN
+PM_TIME_MSEC
+PM_TIME_NSEC
+PM_TIME_SEC
+PM_TIME_USEC
+PM_TYPE_32
+PM_TYPE_64
+PM_TYPE_DOUBLE
+PM_TYPE_FLOAT
+PM_TYPE_NOSUPPORT
+PM_TYPE_STRING
+PM_TYPE_U32
+PM_TYPE_U64
+VERSION
+bootstrap
+dl_load_flags
+import
+pmInDom_build
+pmiAddInstance
+pmiAddMetric
+pmiDump
+pmiEnd
+pmiErrStr
+pmiGetHandle
+pmiID
+pmiInDom
+pmiPutValue
+pmiPutValueHandle
+pmiSetHostname
+pmiSetTimezone
+pmiStart
+pmiUnits
+pmiUseContext
+pmiWrite
+pmid_build
+
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [2 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=2
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [2 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 3 instances
+ 1 or "eek really"
+ 2 or "eek"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 531 132
+TIMESTAMP 0 531 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [2 or "eek"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
diff --git a/qa/369.out.3 b/qa/369.out.3
new file mode 100644
index 0000000..a80ae8b
--- /dev/null
+++ b/qa/369.out.3
@@ -0,0 +1,532 @@
+QA output created by 369
+C version ...
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [2 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=2
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [2 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 3 instances
+ 1 or "eek really"
+ 2 or "eek"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 531 132
+TIMESTAMP 0 531 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [2 or "eek"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
+
+Perl wrapper version ...
+*PCP::LogImport::BEGIN
+*PCP::LogImport::EXPORT
+*PCP::LogImport::EXPORT_OK
+*PCP::LogImport::EXPORT_TAGS
+*PCP::LogImport::ISA
+*PCP::LogImport::PMI_DOMAIN
+*PCP::LogImport::PMI_ERR_BADHANDLE
+*PCP::LogImport::PMI_ERR_BADMETRICNAME
+*PCP::LogImport::PMI_ERR_BADSEM
+*PCP::LogImport::PMI_ERR_BADTYPE
+*PCP::LogImport::PMI_ERR_DUPINSTID
+*PCP::LogImport::PMI_ERR_DUPINSTNAME
+*PCP::LogImport::PMI_ERR_DUPMETRICID
+*PCP::LogImport::PMI_ERR_DUPMETRICNAME
+*PCP::LogImport::PMI_ERR_DUPVALUE
+*PCP::LogImport::PMI_ERR_INSTNOTNULL
+*PCP::LogImport::PMI_ERR_INSTNULL
+*PCP::LogImport::PMI_ERR_NODATA
+*PCP::LogImport::PM_COUNT_ONE
+*PCP::LogImport::PM_ID_NULL
+*PCP::LogImport::PM_INDOM_NULL
+*PCP::LogImport::PM_IN_NULL
+*PCP::LogImport::PM_SEM_COUNTER
+*PCP::LogImport::PM_SEM_DISCRETE
+*PCP::LogImport::PM_SEM_INSTANT
+*PCP::LogImport::PM_SPACE_BYTE
+*PCP::LogImport::PM_SPACE_GBYTE
+*PCP::LogImport::PM_SPACE_KBYTE
+*PCP::LogImport::PM_SPACE_MBYTE
+*PCP::LogImport::PM_SPACE_TBYTE
+*PCP::LogImport::PM_TIME_HOUR
+*PCP::LogImport::PM_TIME_MIN
+*PCP::LogImport::PM_TIME_MSEC
+*PCP::LogImport::PM_TIME_NSEC
+*PCP::LogImport::PM_TIME_SEC
+*PCP::LogImport::PM_TIME_USEC
+*PCP::LogImport::PM_TYPE_32
+*PCP::LogImport::PM_TYPE_64
+*PCP::LogImport::PM_TYPE_DOUBLE
+*PCP::LogImport::PM_TYPE_FLOAT
+*PCP::LogImport::PM_TYPE_NOSUPPORT
+*PCP::LogImport::PM_TYPE_STRING
+*PCP::LogImport::PM_TYPE_U32
+*PCP::LogImport::PM_TYPE_U64
+*PCP::LogImport::VERSION
+*PCP::LogImport::bootstrap
+*PCP::LogImport::dl_load_flags
+*PCP::LogImport::import
+*PCP::LogImport::pmInDom_build
+*PCP::LogImport::pmiAddInstance
+*PCP::LogImport::pmiAddMetric
+*PCP::LogImport::pmiDump
+*PCP::LogImport::pmiEnd
+*PCP::LogImport::pmiErrStr
+*PCP::LogImport::pmiGetHandle
+*PCP::LogImport::pmiID
+*PCP::LogImport::pmiInDom
+*PCP::LogImport::pmiPutValue
+*PCP::LogImport::pmiPutValueHandle
+*PCP::LogImport::pmiSetHostname
+*PCP::LogImport::pmiSetTimezone
+*PCP::LogImport::pmiStart
+*PCP::LogImport::pmiUnits
+*PCP::LogImport::pmiUseContext
+*PCP::LogImport::pmiWrite
+*PCP::LogImport::pmid_build
+BEGIN
+EXPORT
+EXPORT_OK
+EXPORT_TAGS
+ISA
+PCP::LogImport symbols ...
+PMI_DOMAIN
+PMI_ERR_BADHANDLE
+PMI_ERR_BADMETRICNAME
+PMI_ERR_BADSEM
+PMI_ERR_BADTYPE
+PMI_ERR_DUPINSTID
+PMI_ERR_DUPINSTNAME
+PMI_ERR_DUPMETRICID
+PMI_ERR_DUPMETRICNAME
+PMI_ERR_DUPVALUE
+PMI_ERR_INSTNOTNULL
+PMI_ERR_INSTNULL
+PMI_ERR_NODATA
+PM_COUNT_ONE
+PM_ID_NULL
+PM_INDOM_NULL
+PM_IN_NULL
+PM_SEM_COUNTER
+PM_SEM_DISCRETE
+PM_SEM_INSTANT
+PM_SPACE_BYTE
+PM_SPACE_GBYTE
+PM_SPACE_KBYTE
+PM_SPACE_MBYTE
+PM_SPACE_TBYTE
+PM_TIME_HOUR
+PM_TIME_MIN
+PM_TIME_MSEC
+PM_TIME_NSEC
+PM_TIME_SEC
+PM_TIME_USEC
+PM_TYPE_32
+PM_TYPE_64
+PM_TYPE_DOUBLE
+PM_TYPE_FLOAT
+PM_TYPE_NOSUPPORT
+PM_TYPE_STRING
+PM_TYPE_U32
+PM_TYPE_U64
+VERSION
+bootstrap
+dl_load_flags
+import
+pmInDom_build
+pmiAddInstance
+pmiAddMetric
+pmiDump
+pmiEnd
+pmiErrStr
+pmiGetHandle
+pmiID
+pmiInDom
+pmiPutValue
+pmiPutValueHandle
+pmiSetHostname
+pmiSetTimezone
+pmiStart
+pmiUnits
+pmiUseContext
+pmiWrite
+pmid_build
+
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [2 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=2
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [2 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 3 instances
+ 1 or "eek really"
+ 2 or "eek"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 531 132
+TIMESTAMP 0 531 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [2 or "eek"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
diff --git a/qa/369.out.4 b/qa/369.out.4
new file mode 100644
index 0000000..750f854
--- /dev/null
+++ b/qa/369.out.4
@@ -0,0 +1,548 @@
+QA output created by 369
+C version ...
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [2 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=2
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [2 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 3 instances
+ 1 or "eek really"
+ 2 or "eek"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 531 132
+TIMESTAMP 0 531 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [2 or "eek"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
+
+Perl wrapper version ...
+*PCP::LogImport::BEGIN
+*PCP::LogImport::EXPORT
+*PCP::LogImport::EXPORT_OK
+*PCP::LogImport::EXPORT_TAGS
+*PCP::LogImport::ISA
+*PCP::LogImport::PMI_DOMAIN
+*PCP::LogImport::PMI_ERR_BADHANDLE
+*PCP::LogImport::PMI_ERR_BADMETRICNAME
+*PCP::LogImport::PMI_ERR_BADSEM
+*PCP::LogImport::PMI_ERR_BADTIMESTAMP
+*PCP::LogImport::PMI_ERR_BADTYPE
+*PCP::LogImport::PMI_ERR_DUPINSTID
+*PCP::LogImport::PMI_ERR_DUPINSTNAME
+*PCP::LogImport::PMI_ERR_DUPMETRICID
+*PCP::LogImport::PMI_ERR_DUPMETRICNAME
+*PCP::LogImport::PMI_ERR_DUPVALUE
+*PCP::LogImport::PMI_ERR_INSTNOTNULL
+*PCP::LogImport::PMI_ERR_INSTNULL
+*PCP::LogImport::PMI_ERR_NODATA
+*PCP::LogImport::PM_COUNT_ONE
+*PCP::LogImport::PM_ID_NULL
+*PCP::LogImport::PM_INDOM_NULL
+*PCP::LogImport::PM_IN_NULL
+*PCP::LogImport::PM_SEM_COUNTER
+*PCP::LogImport::PM_SEM_DISCRETE
+*PCP::LogImport::PM_SEM_INSTANT
+*PCP::LogImport::PM_SPACE_BYTE
+*PCP::LogImport::PM_SPACE_GBYTE
+*PCP::LogImport::PM_SPACE_KBYTE
+*PCP::LogImport::PM_SPACE_MBYTE
+*PCP::LogImport::PM_SPACE_TBYTE
+*PCP::LogImport::PM_TIME_HOUR
+*PCP::LogImport::PM_TIME_MIN
+*PCP::LogImport::PM_TIME_MSEC
+*PCP::LogImport::PM_TIME_NSEC
+*PCP::LogImport::PM_TIME_SEC
+*PCP::LogImport::PM_TIME_USEC
+*PCP::LogImport::PM_TYPE_32
+*PCP::LogImport::PM_TYPE_64
+*PCP::LogImport::PM_TYPE_DOUBLE
+*PCP::LogImport::PM_TYPE_FLOAT
+*PCP::LogImport::PM_TYPE_NOSUPPORT
+*PCP::LogImport::PM_TYPE_STRING
+*PCP::LogImport::PM_TYPE_U32
+*PCP::LogImport::PM_TYPE_U64
+*PCP::LogImport::VERSION
+*PCP::LogImport::a
+*PCP::LogImport::b
+*PCP::LogImport::bootstrap
+*PCP::LogImport::dl_load_flags
+*PCP::LogImport::import
+*PCP::LogImport::pmInDom_build
+*PCP::LogImport::pmiAddInstance
+*PCP::LogImport::pmiAddMetric
+*PCP::LogImport::pmiBatchEnd
+*PCP::LogImport::pmiBatchPutValue
+*PCP::LogImport::pmiBatchPutValueHandle
+*PCP::LogImport::pmiBatchWrite
+*PCP::LogImport::pmiDump
+*PCP::LogImport::pmiEnd
+*PCP::LogImport::pmiErrStr
+*PCP::LogImport::pmiGetHandle
+*PCP::LogImport::pmiID
+*PCP::LogImport::pmiInDom
+*PCP::LogImport::pmiPutValue
+*PCP::LogImport::pmiPutValueHandle
+*PCP::LogImport::pmiSetHostname
+*PCP::LogImport::pmiSetTimezone
+*PCP::LogImport::pmiStart
+*PCP::LogImport::pmiUnits
+*PCP::LogImport::pmiUseContext
+*PCP::LogImport::pmiWrite
+*PCP::LogImport::pmi_batch
+*PCP::LogImport::pmid_build
+BEGIN
+EXPORT
+EXPORT_OK
+EXPORT_TAGS
+ISA
+PCP::LogImport symbols ...
+PMI_DOMAIN
+PMI_ERR_BADHANDLE
+PMI_ERR_BADMETRICNAME
+PMI_ERR_BADSEM
+PMI_ERR_BADTIMESTAMP
+PMI_ERR_BADTYPE
+PMI_ERR_DUPINSTID
+PMI_ERR_DUPINSTNAME
+PMI_ERR_DUPMETRICID
+PMI_ERR_DUPMETRICNAME
+PMI_ERR_DUPVALUE
+PMI_ERR_INSTNOTNULL
+PMI_ERR_INSTNULL
+PMI_ERR_NODATA
+PM_COUNT_ONE
+PM_ID_NULL
+PM_INDOM_NULL
+PM_IN_NULL
+PM_SEM_COUNTER
+PM_SEM_DISCRETE
+PM_SEM_INSTANT
+PM_SPACE_BYTE
+PM_SPACE_GBYTE
+PM_SPACE_KBYTE
+PM_SPACE_MBYTE
+PM_SPACE_TBYTE
+PM_TIME_HOUR
+PM_TIME_MIN
+PM_TIME_MSEC
+PM_TIME_NSEC
+PM_TIME_SEC
+PM_TIME_USEC
+PM_TYPE_32
+PM_TYPE_64
+PM_TYPE_DOUBLE
+PM_TYPE_FLOAT
+PM_TYPE_NOSUPPORT
+PM_TYPE_STRING
+PM_TYPE_U32
+PM_TYPE_U64
+VERSION
+a
+b
+bootstrap
+dl_load_flags
+import
+pmInDom_build
+pmiAddInstance
+pmiAddMetric
+pmiBatchEnd
+pmiBatchPutValue
+pmiBatchPutValueHandle
+pmiBatchWrite
+pmiDump
+pmiEnd
+pmiErrStr
+pmiGetHandle
+pmiID
+pmiInDom
+pmiPutValue
+pmiPutValueHandle
+pmiSetHostname
+pmiSetTimezone
+pmiStart
+pmiUnits
+pmiUseContext
+pmiWrite
+pmi_batch
+pmid_build
+
+pmiDump: context 0 of 0 Error: current context is not defined.
+pmiStart: OK ->1
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ No metrics.
+ No indoms.
+ No handles.
+ No pmResult.
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiUseContext: Error: Attempt to use an illegal context
+pmiUseContext: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric name already defined
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: Error: Metric pmID already defined
+pmiAddMetric: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: OK
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiPutValue: OK
+pmiPutValue: Error: Null instance expected for a singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: Error: Unknown or illegal instance identifier
+pmiPutValue: Error: Null instance not allowed for a non-singular metric
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiPutValue: OK
+pmiGetHandle: OK ->1
+pmiGetHandle: Error: Unknown metric name
+pmiPutValueHandle: Error: Value already assigned for this metric-instance
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 0 of 1 archive: myarchive
+ state: 1 (start) hostname: somehost.com timezone: GMT-12
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+pmResult ... numpmid: 6
+ 245.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 123 1.7235971e-43 0x7b
+ 245.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [2 or ???] value 4567890123456
+ inst [3 or ???] value 4567890123457
+ 245.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "a new string value"
+ 245.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 123456789012345
+ 245.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1.23456789012
+ 245.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -1.234567
+pmiWrite: OK
+pmiPutValueHandle: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiPutValue: OK
+pmiWrite: OK
+pmiWrite: Error: No data to output
+pmiEnd: OK
+pmiStart: OK ->2
+pmiAddInstance: Error: Internal instance identifer already defined
+pmiGetHandle: OK ->2
+pmiPutValueHandle: OK
+pmiPutValueHandle: Error: Illegal handle
+pmiDump: context 1 of 2 archive: myotherarchive
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=my.metric.foo pmid=245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+ metric[1] name=my.metric.bar pmid=245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+ metric[2] name=my.metric.long pmid=245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=my.metric.double pmid=245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=my.metric.string pmid=245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=my.metric.float pmid=245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ indom[0] indom=245.1
+ instance[0] eek really (1)
+ instance[1] eek (2)
+ instance[2] blah (3)
+ handle[0] metric=my.metric.foo (245.0.1) instance=-1
+ handle[1] metric=my.metric.bar (245.0.2) instance=2
+pmResult ... numpmid: 1
+ 245.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [2 or ???] value 6543210987654
+
+my.metric.float PMID: 245.0.6
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+my.metric.double PMID: 245.0.4
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.long PMID: 245.0.3
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.bar PMID: 245.0.2
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+
+my.metric.foo PMID: 245.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (my.metric.float)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+PMID: 245.0.4 (my.metric.double)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (my.metric.long)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (my.metric.bar)
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Semantics: instant Units: Mbyte / sec
+PMID: 245.0.1 (my.metric.foo)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Mbyte / sec
+
+Instance Domains in the Log ...
+InDom: 245.1
+TIMESTAMP 3 instances
+ 1 or "eek really"
+ 2 or "eek"
+ 3 or "blah"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 531 132
+TIMESTAMP 0 531 516
+
+[228 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 123
+ 245.0.2 (my.metric.bar):
+ inst [2 or "eek"] value 4567890123456
+ inst [3 or "blah"] value 4567890123457
+ 245.0.5 (my.metric.string): value "a new string value"
+ 245.0.3 (my.metric.long): value 123456789012345
+ 245.0.4 (my.metric.double): value 1.23456789012
+ 245.0.6 (my.metric.float): value -1.234567
+
+[88 bytes]
+TIMESTAMP 245.0.1 (my.metric.foo): value 4321
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
diff --git a/qa/370 b/qa/370
new file mode 100755
index 0000000..69dc7ca
--- /dev/null
+++ b/qa/370
@@ -0,0 +1,215 @@
+#!/bin/sh
+# PCP QA Test No. 370
+#
+# exercise sar2pcp
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which sar >/dev/null 2>&1 || _notrun "sar not installed"
+which sadf >/dev/null 2>&1 || _notrun "sadf not installed"
+which sar2pcp >/dev/null 2>&1 || _notrun "sar2pcp not installed"
+
+version=`sar -V 2>&1 | sed -n -e '/sysstat version /{
+s/.* //
+p
+}'`
+
+rm -f $seq.out
+file_version=$version
+case "$version"
+in
+ 9.0.4*) # RHEL6
+ ln $seq.out.4 $seq.out || exit 1
+ file_version=9.0.4
+ ;;
+ 9.0.6.1)
+ ln $seq.out.5 $seq.out || exit 1
+ ;;
+ 9.0.6*)
+ ln $seq.out.1 $seq.out || exit 1
+ file_version=9.0.6
+ ;;
+ 9.1.7*)
+ ln $seq.out.2 $seq.out || exit 1
+ file_version=9.1.7
+ ;;
+ 10.0.1*)
+ ln $seq.out.3 $seq.out || exit 1
+ file_version=10.0.1
+ ;;
+ 10.0.5*)
+ ln $seq.out.6 $seq.out || exit 1
+ file_version=10.0.5
+ ;;
+ 10.2.0)
+ ln $seq.out.7 $seq.out || exit 1
+ ;;
+ *)
+ _notrun "no qualified output for sysstat version $version"
+ ;;
+esac
+[ -f src/sa-sysstat-$file_version ] || \
+ _notrun "no data file (sa-sysstat-$file_version) for sysstat version $version"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+sar2pcp src/sa-sysstat-$file_version $tmp
+
+# version 9.x output
+# 11:07:39 CPU %user %nice %system %iowait %steal %idle
+# 11:07:44 all 3.20 0.10 1.60 0.00 0.00 95.10
+#
+# version 10.x output
+# 04:50:52 PM CPU %user %nice %system %iowait %steal %idle
+# 04:50:57 PM all 0.31 0.00 0.31 0.00 0.00 99.38
+#
+sar -f src/sa-sysstat-$file_version -u \
+| tee -a $seq.full \
+| sed -n '/^[0-2][0-9]:/{
+s/^00\(:..:..\) PM/12\1/
+s/^01\(:..:..\) PM/13\1/
+s/^02\(:..:..\) PM/14\1/
+s/^03\(:..:..\) PM/15\1/
+s/^04\(:..:..\) PM/16\1/
+s/^05\(:..:..\) PM/17\1/
+s/^06\(:..:..\) PM/18\1/
+s/^07\(:..:..\) PM/19\1/
+s/^08\(:..:..\) PM/20\1/
+s/^09\(:..:..\) PM/21\1/
+s/^10\(:..:..\) PM/22\1/
+s/^11\(:..:..\) PM/23\1/
+s/^\(..:..:..\) AM/\1/
+p
+}' \
+| $PCP_AWK_PROG >$tmp.sar '
+NR == 1 { next }
+ # percent to utilization
+ { for (i = 2; i <= NF; i++) { $i = $i / 100 }
+ print
+ }'
+
+echo "check user CPU time ..."
+pmval -f 8 -t 5 -a $tmp kernel.all.cpu.user \
+| sed -n '/^[0-2][0-9]:/{
+s/\.[0-9][0-9][0-9]//
+p
+}' >$tmp.pcp
+( echo ""; echo "kernel.all.cpu.user" ) >>$seq.full
+cat $tmp.pcp >>$seq.full
+paste $tmp.sar $tmp.pcp >$tmp.both
+$PCP_AWK_PROG <$tmp.both '
+{ if ($3-$NF > 0.000001 || $3-$NF < -0.000001) print "[",NR,"] mismatch:",$1,$3,$NF }'
+
+echo
+echo "check timestamps ..."
+$PCP_AWK_PROG <$tmp.both '
+$1 != $9 { print "[",NR,"] mismatch:",$0 }'
+
+echo
+echo "check sys CPU time ..."
+# note sar's -u view of system is really sys+intr
+# ... saved by derived metrics!
+# also need to relax tolerance in comparison, 'cause sar seems to get
+# the arithmetic "not quite right" (tm)
+echo "system = kernel.all.cpu.sys + kernel.all.cpu.intr" >$tmp.config
+export PCP_DERIVED_CONFIG=$tmp.config
+pmval -f 8 -t 5 -a $tmp system \
+| sed -n '/^[0-2][0-9]:/{
+s/\.[0-9][0-9][0-9]//
+p
+}' >$tmp.pcp
+( echo ""; echo "system = kernel.all.cpu.sys + kernel.all.cpu.intr" ) >>$seq.full
+cat $tmp.pcp >>$seq.full
+paste $tmp.sar $tmp.pcp >$tmp.both
+$PCP_AWK_PROG <$tmp.both '
+{ if ($5-$NF > 0.001 || $5-$NF < -0.001) print "[",NR,"] mismatch:",$1,$5,$NF }'
+
+echo >>$seq.full
+# version 9.x output
+# 11:07:39 tps rtps wtps bread/s bwrtn/s
+# 11:07:44 0.00 0.00 0.00 0.00 0.00
+#
+# version 10.x output
+# 04:50:52 PM tps rtps wtps bread/s bwrtn/s
+# 04:50:57 PM 0.80 0.00 0.80 0.00 6.40
+#
+sar -f src/sa-sysstat-$file_version -b \
+| tee -a $seq.full \
+| sed -n '/^[0-2][0-9]:/{
+s/^00\(:..:..\) PM/12\1/
+s/^01\(:..:..\) PM/13\1/
+s/^02\(:..:..\) PM/14\1/
+s/^03\(:..:..\) PM/15\1/
+s/^04\(:..:..\) PM/16\1/
+s/^05\(:..:..\) PM/17\1/
+s/^06\(:..:..\) PM/18\1/
+s/^07\(:..:..\) PM/19\1/
+s/^08\(:..:..\) PM/20\1/
+s/^09\(:..:..\) PM/21\1/
+s/^10\(:..:..\) PM/22\1/
+s/^11\(:..:..\) PM/23\1/
+s/^\(..:..:..\) AM/\1/
+p
+}' \
+| $PCP_AWK_PROG >$tmp.sar '
+NR == 1 { next }
+ # blocks to Kbytes
+ { for (i = 5; i <= NF; i++) { $i = $i /2 }
+ print
+ }'
+
+echo
+echo "check user disk iops ..."
+# units are iops, so within 0.01 iop is ok
+pmval -f 8 -t 5 -a $tmp disk.all.total \
+| sed -n '/^[0-2][0-9]:/{
+s/\.[0-9][0-9][0-9]//
+p
+}' >$tmp.pcp
+( echo ""; echo "disk.all.total" ) >>$seq.full
+cat $tmp.pcp >>$seq.full
+paste $tmp.sar $tmp.pcp >$tmp.both
+$PCP_AWK_PROG <$tmp.both '
+{ if ($2-$NF > 0.01 || $2-$NF < -0.01) print "[",NR,"] mismatch:",$1,$2,$NF }'
+
+echo
+echo "check user disk write thruput ..."
+# units are iops, so within 0.01 iop is ok
+pmval -f 8 -t 5 -a $tmp disk.all.write_bytes \
+| sed -n '/^[0-2][0-9]:/{
+s/\.[0-9][0-9][0-9]//
+p
+}' >$tmp.pcp
+( echo ""; echo "disk.all.write_bytes" ) >>$seq.full
+cat $tmp.pcp >>$seq.full
+paste $tmp.sar $tmp.pcp >$tmp.both
+$PCP_AWK_PROG <$tmp.both '
+{ if ($6-$NF > 0.01 || $6-$NF < -0.01) print "[",NR,"] mismatch:",$1,$6,$NF }'
+
+echo
+echo "full dump ..."
+# note proc.nprocs -> proc.nproc mapping needed after sar2pcp changes in
+# commit 48e373f0609a0a0804bc052d5e9dec41a5a2928e so output matches 370's
+# "out" files
+#
+pmdumplog -lm -z $tmp 2>&1 \
+| sed \
+ -e 's/245\.0\.[0-9][0-9]*/245.0.NN/g' \
+ -e 's/(proc.nprocs)/(proc.nproc)/'
+
+# success, all done
+exit
diff --git a/qa/370.out.1 b/qa/370.out.1
new file mode 100644
index 0000000..1331079
--- /dev/null
+++ b/qa/370.out.1
@@ -0,0 +1,3727 @@
+QA output created by 370
+check user CPU time ...
+
+check timestamps ...
+
+check sys CPU time ...
+
+check user disk iops ...
+
+check user disk write thruput ...
+
+full dump ...
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Mon Jul 19 05:05:50.000 2010
+ ending Mon Jul 19 05:08:45.000 2010
+
+05:05:50.000 245.0.NN (hinv.ncpu): value 1
+ 245.0.NN (kernel.all.cpu.user): value 0.02
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.012
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.96789998
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.02
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.96789998
+ 245.0.NN (kernel.all.pswitch): value 0
+ 245.0.NN (kernel.all.intr): value 230.46001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.8199997
+ 245.0.NN (mem.vmstat.pgfault): value 49.5
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 94.190002
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 8.8199997
+ 245.0.NN (disk.all.total_bytes): value 8.8199997
+ 245.0.NN (mem.util.free): value 78896
+ 245.0.NN (mem.util.used): value 947232
+ 245.0.NN (mem.util.bufmem): value 165296
+ 245.0.NN (mem.util.cached): value 368644
+ 245.0.NN (mem.util.swapFree): value 1920808
+ 245.0.NN (mem.util.swapCached): value 19208
+ 245.0.NN (vfs.dentry.count): value 86251
+ 245.0.NN (vfs.files.count): value 9696
+ 245.0.NN (vfs.inodes.count): value 86841
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.18000001
+ inst [1 or "5 minute"] value 0.2
+ inst [2 or "15 minute"] value 0.18000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.80000001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 8.8199997
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 8.8199997
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.00079999998
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:05:55.000 245.0.NN (kernel.all.cpu.user): value 0.16
+ 245.0.NN (kernel.all.cpu.nice): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.sys): value 0.108
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.43599999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.idle): value 0.28799999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.16
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.108
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.43599999
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.28799999
+ 245.0.NN (kernel.all.pswitch): value 73.800003
+ 245.0.NN (kernel.all.intr): value 546.59998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 1593.6
+ 245.0.NN (mem.vmstat.pgpgout): value 17.6
+ 245.0.NN (mem.vmstat.pgfault): value 16832
+ 245.0.NN (mem.vmstat.pgmajfault): value 27.799999
+ 245.0.NN (mem.vmstat.pgfree): value 5918
+ 245.0.NN (disk.all.total): value 179.39999
+ 245.0.NN (disk.all.read): value 176.60001
+ 245.0.NN (disk.all.read_bytes): value 1592.8
+ 245.0.NN (disk.all.write): value 2.8
+ 245.0.NN (disk.all.write_bytes): value 17.6
+ 245.0.NN (disk.all.total_bytes): value 1610.4
+ 245.0.NN (mem.util.free): value 107408
+ 245.0.NN (mem.util.used): value 918720
+ 245.0.NN (mem.util.bufmem): value 166516
+ 245.0.NN (mem.util.cached): value 374720
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 87014
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 86783
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.17
+ inst [1 or "5 minute"] value 0.19
+ inst [2 or "15 minute"] value 0.18000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 135.39999
+ inst [1 or "diskdev8-16"] value 44
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 1415.2
+ inst [1 or "diskdev8-16"] value 177.60001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 11.2
+ inst [1 or "diskdev8-16"] value 6.4000001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 1426.4
+ inst [1 or "diskdev8-16"] value 184
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.41440001
+ inst [1 or "diskdev8-16"] value 0.2656
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 10
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 12.2
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 1.64
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 1.84
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:00.000 245.0.NN (kernel.all.cpu.user): value 0.1796
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1357
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.68260002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.1796
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.1357
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.68260002
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 154.69
+ 245.0.NN (kernel.all.intr): value 517.56
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 787.22998
+ 245.0.NN (mem.vmstat.pgpgout): value 340.92001
+ 245.0.NN (mem.vmstat.pgfault): value 31991.82
+ 245.0.NN (mem.vmstat.pgmajfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgfree): value 6477.0498
+ 245.0.NN (disk.all.total): value 132.14
+ 245.0.NN (disk.all.read): value 126.55
+ 245.0.NN (disk.all.read_bytes): value 786.42499
+ 245.0.NN (disk.all.write): value 5.5900002
+ 245.0.NN (disk.all.write_bytes): value 340.92001
+ 245.0.NN (disk.all.total_bytes): value 1127.345
+ 245.0.NN (mem.util.free): value 102980
+ 245.0.NN (mem.util.used): value 923148
+ 245.0.NN (mem.util.bufmem): value 168544
+ 245.0.NN (mem.util.cached): value 376752
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 90730
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 89748
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.38999999
+ inst [1 or "5 minute"] value 0.23999999
+ inst [2 or "15 minute"] value 0.19
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 24.549999
+ inst [1 or "diskdev8-16"] value 107.78
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 364.07001
+ inst [1 or "diskdev8-16"] value 423.155
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 109.38
+ inst [1 or "diskdev8-16"] value 231.535
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 473.45001
+ inst [1 or "diskdev8-16"] value 654.69
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.075000003
+ inst [1 or "diskdev8-16"] value 0.95410001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 12.18
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 13.37
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.87
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 15.58
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:05.000 245.0.NN (kernel.all.cpu.user): value 0.18960001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1557
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.64670002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.18960001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.1557
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.64670002
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 163.47
+ 245.0.NN (kernel.all.intr): value 645.31
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 895.01001
+ 245.0.NN (mem.vmstat.pgpgout): value 490.22
+ 245.0.NN (mem.vmstat.pgfault): value 33813.371
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 6805.5898
+ 245.0.NN (disk.all.total): value 231.94
+ 245.0.NN (disk.all.read): value 223.35001
+ 245.0.NN (disk.all.read_bytes): value 896.60498
+ 245.0.NN (disk.all.write): value 8.5799999
+ 245.0.NN (disk.all.write_bytes): value 490.22
+ 245.0.NN (disk.all.total_bytes): value 1386.825
+ 245.0.NN (mem.util.free): value 93232
+ 245.0.NN (mem.util.used): value 932896
+ 245.0.NN (mem.util.bufmem): value 172872
+ 245.0.NN (mem.util.cached): value 377140
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 99759
+ 245.0.NN (vfs.files.count): value 8800
+ 245.0.NN (vfs.inodes.count): value 97411
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.60000002
+ inst [1 or "5 minute"] value 0.28999999
+ inst [2 or "15 minute"] value 0.20999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2.2
+ inst [1 or "diskdev8-16"] value 229.53999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 5.5900002
+ inst [1 or "diskdev8-16"] value 890.21997
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 14.37
+ inst [1 or "diskdev8-16"] value 475.85001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 19.959999
+ inst [1 or "diskdev8-16"] value 1366.0699
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0031999999
+ inst [1 or "diskdev8-16"] value 0.98519999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 22.549999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 28.540001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 1.6
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 36.740002
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:10.000 245.0.NN (kernel.all.cpu.user): value 0.4048
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.2705
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.3186
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.4048
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.2705
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.3186
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 272.95001
+ 245.0.NN (kernel.all.intr): value 730.65997
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 2744.6899
+ 245.0.NN (mem.vmstat.pgpgout): value 84.970001
+ 245.0.NN (mem.vmstat.pgfault): value 58452.91
+ 245.0.NN (mem.vmstat.pgmajfault): value 19.24
+ 245.0.NN (mem.vmstat.pgfree): value 12329.86
+ 245.0.NN (disk.all.total): value 300
+ 245.0.NN (disk.all.read): value 298.39999
+ 245.0.NN (disk.all.read_bytes): value 2743.8899
+ 245.0.NN (disk.all.write): value 1.6
+ 245.0.NN (disk.all.write_bytes): value 84.970001
+ 245.0.NN (disk.all.total_bytes): value 2828.8601
+ 245.0.NN (mem.util.free): value 72640
+ 245.0.NN (mem.util.used): value 953488
+ 245.0.NN (mem.util.bufmem): value 176016
+ 245.0.NN (mem.util.cached): value 387800
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 105655
+ 245.0.NN (vfs.files.count): value 8928
+ 245.0.NN (vfs.inodes.count): value 100999
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.70999998
+ inst [1 or "5 minute"] value 0.31
+ inst [2 or "15 minute"] value 0.22
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 145.69
+ inst [1 or "diskdev8-16"] value 154.31
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 2126.655
+ inst [1 or "diskdev8-16"] value 617.23499
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 9.6199999
+ inst [1 or "diskdev8-16"] value 75.349998
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2136.2749
+ inst [1 or "diskdev8-16"] value 692.58502
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.2244
+ inst [1 or "diskdev8-16"] value 0.98519999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 17.84
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 23.65
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 1.23
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 30.08
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:15.000 245.0.NN (kernel.all.cpu.user): value 0.1323
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.044100001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.82359999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.1323
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.044100001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.82359999
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 29.66
+ 245.0.NN (kernel.all.intr): value 464.73001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 461.72
+ 245.0.NN (mem.vmstat.pgpgout): value 758.32001
+ 245.0.NN (mem.vmstat.pgfault): value 6876.3501
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1640.88
+ 245.0.NN (disk.all.total): value 123.25
+ 245.0.NN (disk.all.read): value 96.589996
+ 245.0.NN (disk.all.read_bytes): value 461.72501
+ 245.0.NN (disk.all.write): value 26.65
+ 245.0.NN (disk.all.write_bytes): value 402.405
+ 245.0.NN (disk.all.total_bytes): value 864.13
+ 245.0.NN (mem.util.free): value 65136
+ 245.0.NN (mem.util.used): value 960992
+ 245.0.NN (mem.util.bufmem): value 177632
+ 245.0.NN (mem.util.cached): value 388556
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 109261
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 104277
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.81999999
+ inst [1 or "5 minute"] value 0.34
+ inst [2 or "15 minute"] value 0.23
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 25.85
+ inst [1 or "diskdev8-16"] value 97.389999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 36.07
+ inst [1 or "diskdev8-16"] value 425.64999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 158.715
+ inst [1 or "diskdev8-16"] value 243.685
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 194.785
+ inst [1 or "diskdev8-16"] value 669.33502
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.041700002
+ inst [1 or "diskdev8-16"] value 0.99959999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 19.040001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 21.440001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 1.3200001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 25.959999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:20.000 245.0.NN (kernel.all.cpu.user): value 0.1018
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.037900001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.85829997
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.1018
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.037900001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.85829997
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 0.2
+ 245.0.NN (kernel.all.intr): value 496.60999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 475.04999
+ 245.0.NN (mem.vmstat.pgpgout): value 288.22
+ 245.0.NN (mem.vmstat.pgfault): value 232.34
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 137.13
+ 245.0.NN (disk.all.total): value 145.91
+ 245.0.NN (disk.all.read): value 101.6
+ 245.0.NN (disk.all.read_bytes): value 475.04999
+ 245.0.NN (disk.all.write): value 44.310001
+ 245.0.NN (disk.all.write_bytes): value 613.96997
+ 245.0.NN (disk.all.total_bytes): value 1089.02
+ 245.0.NN (mem.util.free): value 61308
+ 245.0.NN (mem.util.used): value 964820
+ 245.0.NN (mem.util.bufmem): value 179004
+ 245.0.NN (mem.util.cached): value 389788
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 110657
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 105694
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.15
+ inst [1 or "5 minute"] value 0.41999999
+ inst [2 or "15 minute"] value 0.25
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-16"] value 143.50999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 475.04999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 14.37
+ inst [1 or "diskdev8-16"] value 599.59998
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 14.37
+ inst [1 or "diskdev8-16"] value 1074.65
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0040000002
+ inst [1 or "diskdev8-16"] value 0.99800003
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 19.559999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 16.969999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 1.59
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 17.620001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:25.000 245.0.NN (kernel.all.cpu.user): value 0.1603
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.066100001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.77149999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.1603
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.066100001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.77149999
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 0
+ 245.0.NN (kernel.all.intr): value 595.98999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 1153.51
+ 245.0.NN (mem.vmstat.pgpgout): value 390.38
+ 245.0.NN (mem.vmstat.pgfault): value 273.35001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 273.95001
+ 245.0.NN (disk.all.total): value 230.25999
+ 245.0.NN (disk.all.read): value 215.23
+ 245.0.NN (disk.all.read_bytes): value 1119.84
+ 245.0.NN (disk.all.write): value 15.03
+ 245.0.NN (disk.all.write_bytes): value 418.435
+ 245.0.NN (disk.all.total_bytes): value 1538.275
+ 245.0.NN (mem.util.free): value 51452
+ 245.0.NN (mem.util.used): value 974676
+ 245.0.NN (mem.util.bufmem): value 182832
+ 245.0.NN (mem.util.cached): value 392036
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 115986
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 111001
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.38
+ inst [1 or "5 minute"] value 0.47999999
+ inst [2 or "15 minute"] value 0.27000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2
+ inst [1 or "diskdev8-16"] value 228.25999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 1119.84
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 13.625
+ inst [1 or "diskdev8-16"] value 404.81
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 13.625
+ inst [1 or "diskdev8-16"] value 1524.65
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 1.002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 25.25
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 32.869999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 1.74
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 37.330002
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:30.000 245.0.NN (kernel.all.cpu.user): value 0.4531
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.029899999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.509
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.4531
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.029899999
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.509
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 0.2
+ 245.0.NN (kernel.all.intr): value 560.28003
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 1099.4
+ 245.0.NN (mem.vmstat.pgpgout): value 406.39001
+ 245.0.NN (mem.vmstat.pgfault): value 472.06
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 429.34
+ 245.0.NN (disk.all.total): value 170.66
+ 245.0.NN (disk.all.read): value 155.49001
+ 245.0.NN (disk.all.read_bytes): value 1130.54
+ 245.0.NN (disk.all.write): value 15.17
+ 245.0.NN (disk.all.write_bytes): value 406.38501
+ 245.0.NN (disk.all.total_bytes): value 1536.925
+ 245.0.NN (mem.util.free): value 42940
+ 245.0.NN (mem.util.used): value 983188
+ 245.0.NN (mem.util.bufmem): value 185512
+ 245.0.NN (mem.util.cached): value 395400
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 118442
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 113455
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.67
+ inst [1 or "5 minute"] value 0.55000001
+ inst [2 or "15 minute"] value 0.30000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 3.3900001
+ inst [1 or "diskdev8-16"] value 167.27
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 1130.54
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 19.959999
+ inst [1 or "diskdev8-16"] value 386.42499
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 19.959999
+ inst [1 or "diskdev8-16"] value 1516.965
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.99800003
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 14.97
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 16.370001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 1.99
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 17.49
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:35.000 245.0.NN (kernel.all.cpu.user): value 0.1383
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0341
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.82569999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.1383
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0341
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.82569999
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 0
+ 245.0.NN (kernel.all.intr): value 500.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 487.37
+ 245.0.NN (mem.vmstat.pgpgout): value 32.869999
+ 245.0.NN (mem.vmstat.pgfault): value 390.78
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 585.77002
+ 245.0.NN (disk.all.total): value 110.62
+ 245.0.NN (disk.all.read): value 107.82
+ 245.0.NN (disk.all.read_bytes): value 488.98001
+ 245.0.NN (disk.all.write): value 2.8099999
+ 245.0.NN (disk.all.write_bytes): value 33.665001
+ 245.0.NN (disk.all.total_bytes): value 522.64502
+ 245.0.NN (mem.util.free): value 45200
+ 245.0.NN (mem.util.used): value 980928
+ 245.0.NN (mem.util.bufmem): value 187312
+ 245.0.NN (mem.util.cached): value 396108
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 120536
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 115547
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.6900001
+ inst [1 or "5 minute"] value 0.57999998
+ inst [2 or "15 minute"] value 0.31
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1.4
+ inst [1 or "diskdev8-16"] value 109.22
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 488.98001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 10.42
+ inst [1 or "diskdev8-16"] value 23.245001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 10.42
+ inst [1 or "diskdev8-16"] value 512.22498
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 1.002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 10.42
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 10.42
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.75999999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 12.12
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:40.000 245.0.NN (kernel.all.cpu.user): value 0.075999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.066
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.85600001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.075999998
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.066
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.85600001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 0
+ 245.0.NN (kernel.all.intr): value 614.59998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 836
+ 245.0.NN (mem.vmstat.pgpgout): value 165.60001
+ 245.0.NN (mem.vmstat.pgfault): value 194.60001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 211.60001
+ 245.0.NN (disk.all.total): value 198.39999
+ 245.0.NN (disk.all.read): value 195.60001
+ 245.0.NN (disk.all.read_bytes): value 836
+ 245.0.NN (disk.all.write): value 2.8
+ 245.0.NN (disk.all.write_bytes): value 165.60001
+ 245.0.NN (disk.all.total_bytes): value 1001.6
+ 245.0.NN (mem.util.free): value 32868
+ 245.0.NN (mem.util.used): value 993260
+ 245.0.NN (mem.util.bufmem): value 190660
+ 245.0.NN (mem.util.cached): value 397176
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 132440
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 127431
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.8
+ inst [1 or "5 minute"] value 0.62
+ inst [2 or "15 minute"] value 0.31999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1
+ inst [1 or "diskdev8-16"] value 197.39999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 836
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 8.8000002
+ inst [1 or "diskdev8-16"] value 156.8
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 8.8000002
+ inst [1 or "diskdev8-16"] value 992.79999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 1
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 31.4
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 48.799999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 2.1700001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 53.869999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:45.000 245.0.NN (kernel.all.cpu.user): value 0.057999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.041999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.88999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0099999998
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.057999998
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.041999999
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.88999999
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0099999998
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 0
+ 245.0.NN (kernel.all.intr): value 627
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 969.59998
+ 245.0.NN (mem.vmstat.pgpgout): value 241.60001
+ 245.0.NN (mem.vmstat.pgfault): value 44
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 68.199997
+ 245.0.NN (disk.all.total): value 227.39999
+ 245.0.NN (disk.all.read): value 224.2
+ 245.0.NN (disk.all.read_bytes): value 970.40002
+ 245.0.NN (disk.all.write): value 3.2
+ 245.0.NN (disk.all.write_bytes): value 241.60001
+ 245.0.NN (disk.all.total_bytes): value 1212
+ 245.0.NN (mem.util.free): value 19844
+ 245.0.NN (mem.util.used): value 1006284
+ 245.0.NN (mem.util.bufmem): value 194696
+ 245.0.NN (mem.util.cached): value 398104
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 144319
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 139308
+ 245.0.NN (proc.runq.runnable): value 3
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.97
+ inst [1 or "5 minute"] value 0.67000002
+ inst [2 or "15 minute"] value 0.34
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1.6
+ inst [1 or "diskdev8-16"] value 225.8
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 970.40002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-16"] value 229.60001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-16"] value 1200
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.99839997
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 40.799999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 62.799999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 2.8199999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 68.809998
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:50.000 245.0.NN (kernel.all.cpu.user): value 0.0319
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.02
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.94410002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0319
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.02
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.94410002
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 0
+ 245.0.NN (kernel.all.intr): value 449.10001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 542.12
+ 245.0.NN (mem.vmstat.pgpgout): value 198.8
+ 245.0.NN (mem.vmstat.pgfault): value 13.57
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 46.310001
+ 245.0.NN (disk.all.total): value 124.35
+ 245.0.NN (disk.all.read): value 122.55
+ 245.0.NN (disk.all.read_bytes): value 539.71997
+ 245.0.NN (disk.all.write): value 1.8
+ 245.0.NN (disk.all.write_bytes): value 198.8
+ 245.0.NN (disk.all.total_bytes): value 738.52002
+ 245.0.NN (mem.util.free): value 16176
+ 245.0.NN (mem.util.used): value 1009952
+ 245.0.NN (mem.util.bufmem): value 196800
+ 245.0.NN (mem.util.cached): value 398880
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 145511
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 140500
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 2.0599999
+ inst [1 or "5 minute"] value 0.70999998
+ inst [2 or "15 minute"] value 0.34999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 124.35
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 539.71997
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 198.8
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 738.52002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.99800003
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 7.1900001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 7.3899999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.5
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 8.6199999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:06:55.000 245.0.NN (kernel.all.cpu.user): value 0.36469999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.080200002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.5431
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.012
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.36469999
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.080200002
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.5431
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 7.6199999
+ 245.0.NN (kernel.all.intr): value 1047.7
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 4083.3701
+ 245.0.NN (mem.vmstat.pgpgout): value 144.28999
+ 245.0.NN (mem.vmstat.pgfault): value 2165.73
+ 245.0.NN (mem.vmstat.pgmajfault): value 3.01
+ 245.0.NN (mem.vmstat.pgfree): value 3092.5901
+ 245.0.NN (disk.all.total): value 313.42999
+ 245.0.NN (disk.all.read): value 310.42001
+ 245.0.NN (disk.all.read_bytes): value 4085.77
+ 245.0.NN (disk.all.write): value 3.01
+ 245.0.NN (disk.all.write_bytes): value 144.28999
+ 245.0.NN (disk.all.total_bytes): value 4230.0601
+ 245.0.NN (mem.util.free): value 35808
+ 245.0.NN (mem.util.used): value 990320
+ 245.0.NN (mem.util.bufmem): value 190216
+ 245.0.NN (mem.util.cached): value 388324
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 104280
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 104769
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.97
+ inst [1 or "5 minute"] value 0.72000003
+ inst [2 or "15 minute"] value 0.36000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 17.639999
+ inst [1 or "diskdev8-16"] value 295.79001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 264.53
+ inst [1 or "diskdev8-16"] value 3821.24
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 12.025
+ inst [1 or "diskdev8-16"] value 132.265
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 276.55499
+ inst [1 or "diskdev8-16"] value 3953.5049
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.052099999
+ inst [1 or "diskdev8-16"] value 0.9619
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 190.58
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 367.13
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 34.330002
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 497.59
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:00.000 245.0.NN (kernel.all.cpu.user): value 0.60680002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1936
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.1717
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.028000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.60680002
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.1936
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.1717
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.028000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 118.56
+ 245.0.NN (kernel.all.intr): value 1296.61
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 8497.4102
+ 245.0.NN (mem.vmstat.pgpgout): value 333.73001
+ 245.0.NN (mem.vmstat.pgfault): value 41523.352
+ 245.0.NN (mem.vmstat.pgmajfault): value 7.1900001
+ 245.0.NN (mem.vmstat.pgfree): value 17593.211
+ 245.0.NN (disk.all.total): value 400.60001
+ 245.0.NN (disk.all.read): value 394.01001
+ 245.0.NN (disk.all.read_bytes): value 8466.2646
+ 245.0.NN (disk.all.write): value 6.5900002
+ 245.0.NN (disk.all.write_bytes): value 333.73499
+ 245.0.NN (disk.all.total_bytes): value 8800
+ 245.0.NN (mem.util.free): value 55168
+ 245.0.NN (mem.util.used): value 970960
+ 245.0.NN (mem.util.bufmem): value 190468
+ 245.0.NN (mem.util.cached): value 373212
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 100935
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 100954
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 2.1300001
+ inst [1 or "5 minute"] value 0.76999998
+ inst [2 or "15 minute"] value 0.38
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 57.68
+ inst [1 or "diskdev8-16"] value 342.91
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 658.685
+ inst [1 or "diskdev8-16"] value 7807.585
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 32.735001
+ inst [1 or "diskdev8-16"] value 301
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 691.41998
+ inst [1 or "diskdev8-16"] value 8108.585
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.2044
+ inst [1 or "diskdev8-16"] value 0.93010002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 267.66
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 503.98999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 35.040001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 661.73999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:05.000 245.0.NN (kernel.all.cpu.user): value 0.68000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.214
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.057999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.048
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.68000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.214
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.057999998
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.048
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 141.2
+ 245.0.NN (kernel.all.intr): value 2438.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 4682.3999
+ 245.0.NN (mem.vmstat.pgpgout): value 935.20001
+ 245.0.NN (mem.vmstat.pgfault): value 49910
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 17468.801
+ 245.0.NN (disk.all.total): value 311.79999
+ 245.0.NN (disk.all.read): value 242.60001
+ 245.0.NN (disk.all.read_bytes): value 4714.3999
+ 245.0.NN (disk.all.write): value 69.199997
+ 245.0.NN (disk.all.write_bytes): value 935.20001
+ 245.0.NN (disk.all.total_bytes): value 5649.6001
+ 245.0.NN (mem.util.free): value 28612
+ 245.0.NN (mem.util.used): value 997516
+ 245.0.NN (mem.util.bufmem): value 190536
+ 245.0.NN (mem.util.cached): value 396644
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 101088
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 101012
+ 245.0.NN (proc.runq.runnable): value 3
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 2.1199999
+ inst [1 or "5 minute"] value 0.79000002
+ inst [2 or "15 minute"] value 0.38999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 15.6
+ inst [1 or "diskdev8-16"] value 296.20001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 87.199997
+ inst [1 or "diskdev8-16"] value 4627.2002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 28.799999
+ inst [1 or "diskdev8-16"] value 906.40002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 116
+ inst [1 or "diskdev8-16"] value 5533.6001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.044799998
+ inst [1 or "diskdev8-16"] value 0.528
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 908
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 1725.8
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 92.809998
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 2459.76
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:10.000 245.0.NN (kernel.all.cpu.user): value 0.5431
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1743
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.2445
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0381
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.5431
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.1743
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.2445
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0381
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 65.330002
+ 245.0.NN (kernel.all.intr): value 2425.6499
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 3331.46
+ 245.0.NN (mem.vmstat.pgpgout): value 50.5
+ 245.0.NN (mem.vmstat.pgfault): value 26618.84
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 10406.81
+ 245.0.NN (disk.all.total): value 303.81
+ 245.0.NN (disk.all.read): value 300.39999
+ 245.0.NN (disk.all.read_bytes): value 3330.6599
+ 245.0.NN (disk.all.write): value 3.4100001
+ 245.0.NN (disk.all.write_bytes): value 50.5
+ 245.0.NN (disk.all.total_bytes): value 3381.1599
+ 245.0.NN (mem.util.free): value 20560
+ 245.0.NN (mem.util.used): value 1005568
+ 245.0.NN (mem.util.bufmem): value 190616
+ 245.0.NN (mem.util.cached): value 405352
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 99503
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 99339
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 2.1099999
+ inst [1 or "5 minute"] value 0.81
+ inst [2 or "15 minute"] value 0.38999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 4.21
+ inst [1 or "diskdev8-16"] value 299.60001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 20.040001
+ inst [1 or "diskdev8-16"] value 3310.6201
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 24.85
+ inst [1 or "diskdev8-16"] value 25.65
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 44.889999
+ inst [1 or "diskdev8-16"] value 3336.27
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0080000004
+ inst [1 or "diskdev8-16"] value 0.60360003
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 880.76001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 1679.16
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 75.139999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 2450.3899
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:15.000 245.0.NN (kernel.all.cpu.user): value 0.5449
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.2395
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.12970001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.028000001
+ 245.0.NN (kernel.all.cpu.idle): value 0.0579
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.5449
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.2395
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.12970001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.028000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.0579
+ 245.0.NN (kernel.all.pswitch): value 99.400002
+ 245.0.NN (kernel.all.intr): value 1781.4399
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 2737.72
+ 245.0.NN (mem.vmstat.pgpgout): value 170.06
+ 245.0.NN (mem.vmstat.pgfault): value 41127.539
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 19243.711
+ 245.0.NN (disk.all.total): value 283.03
+ 245.0.NN (disk.all.read): value 278.04001
+ 245.0.NN (disk.all.read_bytes): value 2732.9351
+ 245.0.NN (disk.all.write): value 4.9899998
+ 245.0.NN (disk.all.write_bytes): value 170.06
+ 245.0.NN (disk.all.total_bytes): value 2902.9951
+ 245.0.NN (mem.util.free): value 48956
+ 245.0.NN (mem.util.used): value 977172
+ 245.0.NN (mem.util.bufmem): value 160424
+ 245.0.NN (mem.util.cached): value 413652
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 73974
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 75682
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 2.02
+ inst [1 or "5 minute"] value 0.81
+ inst [2 or "15 minute"] value 0.40000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2.79
+ inst [1 or "diskdev8-16"] value 280.23999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 2732.9351
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 38.325001
+ inst [1 or "diskdev8-16"] value 131.735
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 38.325001
+ inst [1 or "diskdev8-16"] value 2864.6699
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.00079999998
+ inst [1 or "diskdev8-16"] value 0.73610002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 569.65997
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 1021.96
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 41.75
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 1427.99
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:20.000 245.0.NN (kernel.all.cpu.user): value 0.69999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.266
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.028000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.69999999
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.266
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.028000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 124.4
+ 245.0.NN (kernel.all.intr): value 1616.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 2661.6001
+ 245.0.NN (mem.vmstat.pgpgout): value 112.8
+ 245.0.NN (mem.vmstat.pgfault): value 57416
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.40000001
+ 245.0.NN (mem.vmstat.pgfree): value 23632
+ 245.0.NN (disk.all.total): value 115.4
+ 245.0.NN (disk.all.read): value 110.4
+ 245.0.NN (disk.all.read_bytes): value 2667.2
+ 245.0.NN (disk.all.write): value 5
+ 245.0.NN (disk.all.write_bytes): value 112.8
+ 245.0.NN (disk.all.total_bytes): value 2780
+ 245.0.NN (mem.util.free): value 36596
+ 245.0.NN (mem.util.used): value 989532
+ 245.0.NN (mem.util.bufmem): value 160500
+ 245.0.NN (mem.util.cached): value 426956
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 74198
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 75689
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 2.02
+ inst [1 or "5 minute"] value 0.82999998
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 5
+ inst [1 or "diskdev8-16"] value 110.4
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 20.799999
+ inst [1 or "diskdev8-16"] value 2646.3999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 29.6
+ inst [1 or "diskdev8-16"] value 83.199997
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 50.400002
+ inst [1 or "diskdev8-16"] value 2729.6001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0063999998
+ inst [1 or "diskdev8-16"] value 0.28560001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 683.20001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 1291.8
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 50.419998
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 1908.3199
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:25.000 245.0.NN (kernel.all.cpu.user): value 0.72399998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.198
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.064000003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.014
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.72399998
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.198
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.064000003
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.014
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 114.4
+ 245.0.NN (kernel.all.intr): value 1335.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 1468.8
+ 245.0.NN (mem.vmstat.pgpgout): value 68
+ 245.0.NN (mem.vmstat.pgfault): value 49548
+ 245.0.NN (mem.vmstat.pgmajfault): value 2.8
+ 245.0.NN (mem.vmstat.pgfree): value 20137
+ 245.0.NN (disk.all.total): value 127.8
+ 245.0.NN (disk.all.read): value 124.8
+ 245.0.NN (disk.all.read_bytes): value 1468.8
+ 245.0.NN (disk.all.write): value 3
+ 245.0.NN (disk.all.write_bytes): value 68
+ 245.0.NN (disk.all.total_bytes): value 1536.8
+ 245.0.NN (mem.util.free): value 28312
+ 245.0.NN (mem.util.used): value 997816
+ 245.0.NN (mem.util.bufmem): value 160712
+ 245.0.NN (mem.util.cached): value 434488
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 74613
+ 245.0.NN (vfs.files.count): value 8896
+ 245.0.NN (vfs.inodes.count): value 75782
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 2.02
+ inst [1 or "5 minute"] value 0.85000002
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 26.4
+ inst [1 or "diskdev8-16"] value 101.4
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 285.60001
+ inst [1 or "diskdev8-16"] value 1183.2
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 22.4
+ inst [1 or "diskdev8-16"] value 45.599998
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 308
+ inst [1 or "diskdev8-16"] value 1228.8
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.088
+ inst [1 or "diskdev8-16"] value 0.30720001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 505.60001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 973.40002
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 37.599998
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 1428.16
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:30.000 245.0.NN (kernel.all.cpu.user): value 0.86000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.134
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.86000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.134
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 19.200001
+ 245.0.NN (kernel.all.intr): value 448.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 12
+ 245.0.NN (mem.vmstat.pgpgout): value 183.2
+ 245.0.NN (mem.vmstat.pgfault): value 23032.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 13352
+ 245.0.NN (disk.all.total): value 12
+ 245.0.NN (disk.all.read): value 2
+ 245.0.NN (disk.all.read_bytes): value 12
+ 245.0.NN (disk.all.write): value 10
+ 245.0.NN (disk.all.write_bytes): value 183.2
+ 245.0.NN (disk.all.total_bytes): value 195.2
+ 245.0.NN (mem.util.free): value 36808
+ 245.0.NN (mem.util.used): value 989320
+ 245.0.NN (mem.util.bufmem): value 160836
+ 245.0.NN (mem.util.cached): value 435216
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 74721
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 75828
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.9400001
+ inst [1 or "5 minute"] value 0.85000002
+ inst [2 or "15 minute"] value 0.41999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 5.4000001
+ inst [1 or "diskdev8-16"] value 6.5999999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 36.799999
+ inst [1 or "diskdev8-16"] value 146.39999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 48.799999
+ inst [1 or "diskdev8-16"] value 146.39999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0071999999
+ inst [1 or "diskdev8-16"] value 0.0016
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 4.8000002
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 5.1999998
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.80000001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0.37
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:35.000 245.0.NN (kernel.all.cpu.user): value 0.83999997
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.152
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.83999997
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.152
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 32.799999
+ 245.0.NN (kernel.all.intr): value 444.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 20.799999
+ 245.0.NN (mem.vmstat.pgpgout): value 182.39999
+ 245.0.NN (mem.vmstat.pgfault): value 27052.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 14388.2
+ 245.0.NN (disk.all.total): value 18
+ 245.0.NN (disk.all.read): value 2.8
+ 245.0.NN (disk.all.read_bytes): value 20.799999
+ 245.0.NN (disk.all.write): value 15.2
+ 245.0.NN (disk.all.write_bytes): value 182.39999
+ 245.0.NN (disk.all.total_bytes): value 203.2
+ 245.0.NN (mem.util.free): value 33276
+ 245.0.NN (mem.util.used): value 992852
+ 245.0.NN (mem.util.bufmem): value 160944
+ 245.0.NN (mem.util.cached): value 437920
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 75118
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 75937
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.86
+ inst [1 or "5 minute"] value 0.86000001
+ inst [2 or "15 minute"] value 0.41999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 4.5999999
+ inst [1 or "diskdev8-16"] value 13.4
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 20.799999
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 25.6
+ inst [1 or "diskdev8-16"] value 156.8
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 46.400002
+ inst [1 or "diskdev8-16"] value 156.8
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0063999998
+ inst [1 or "diskdev8-16"] value 0.016799999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0.2
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.050000001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:40.000 245.0.NN (kernel.all.cpu.user): value 0.85600001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.126
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.014
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.85600001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.126
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.014
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 37
+ 245.0.NN (kernel.all.intr): value 470.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 140
+ 245.0.NN (mem.vmstat.pgpgout): value 591.20001
+ 245.0.NN (mem.vmstat.pgfault): value 25348.801
+ 245.0.NN (mem.vmstat.pgmajfault): value 1
+ 245.0.NN (mem.vmstat.pgfree): value 13381
+ 245.0.NN (disk.all.total): value 33.400002
+ 245.0.NN (disk.all.read): value 8
+ 245.0.NN (disk.all.read_bytes): value 140
+ 245.0.NN (disk.all.write): value 25.4
+ 245.0.NN (disk.all.write_bytes): value 591.20001
+ 245.0.NN (disk.all.total_bytes): value 731.20001
+ 245.0.NN (mem.util.free): value 30168
+ 245.0.NN (mem.util.used): value 995960
+ 245.0.NN (mem.util.bufmem): value 161032
+ 245.0.NN (mem.util.cached): value 439768
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 75451
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 76051
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.79
+ inst [1 or "5 minute"] value 0.86000001
+ inst [2 or "15 minute"] value 0.41999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 9.6000004
+ inst [1 or "diskdev8-16"] value 23.799999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 140
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 26.4
+ inst [1 or "diskdev8-16"] value 564.79999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 166.39999
+ inst [1 or "diskdev8-16"] value 564.79999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.021600001
+ inst [1 or "diskdev8-16"] value 0.034400001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:45.000 245.0.NN (kernel.all.cpu.user): value 0.83200002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.162
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.83200002
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.162
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 87
+ 245.0.NN (kernel.all.intr): value 462.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0.80000001
+ 245.0.NN (mem.vmstat.pgpgout): value 312
+ 245.0.NN (mem.vmstat.pgfault): value 33648.398
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 13104
+ 245.0.NN (disk.all.total): value 16.6
+ 245.0.NN (disk.all.read): value 0.2
+ 245.0.NN (disk.all.read_bytes): value 0.80000001
+ 245.0.NN (disk.all.write): value 16.4
+ 245.0.NN (disk.all.write_bytes): value 312
+ 245.0.NN (disk.all.total_bytes): value 312.79999
+ 245.0.NN (mem.util.free): value 24400
+ 245.0.NN (mem.util.used): value 1001728
+ 245.0.NN (mem.util.bufmem): value 161132
+ 245.0.NN (mem.util.cached): value 441112
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 76198
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 76526
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.73
+ inst [1 or "5 minute"] value 0.86000001
+ inst [2 or "15 minute"] value 0.43000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 5.1999998
+ inst [1 or "diskdev8-16"] value 11.4
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0.80000001
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 48
+ inst [1 or "diskdev8-16"] value 264
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 48.799999
+ inst [1 or "diskdev8-16"] value 264
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0040000002
+ inst [1 or "diskdev8-16"] value 0.0071999999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0.40000001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0.090000004
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:50.000 245.0.NN (kernel.all.cpu.user): value 0.81999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.124
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.054000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.81999999
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.124
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.054000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 32.200001
+ 245.0.NN (kernel.all.intr): value 470.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 615.20001
+ 245.0.NN (mem.vmstat.pgfault): value 23890.199
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 12773.8
+ 245.0.NN (disk.all.total): value 54.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 54.799999
+ 245.0.NN (disk.all.write_bytes): value 615.20001
+ 245.0.NN (disk.all.total_bytes): value 615.20001
+ 245.0.NN (mem.util.free): value 23284
+ 245.0.NN (mem.util.used): value 1002844
+ 245.0.NN (mem.util.bufmem): value 161204
+ 245.0.NN (mem.util.cached): value 442372
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 76467
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 76621
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.67
+ inst [1 or "5 minute"] value 0.86000001
+ inst [2 or "15 minute"] value 0.43000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.80000001
+ inst [1 or "diskdev8-16"] value 54
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 20.799999
+ inst [1 or "diskdev8-16"] value 594.40002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 20.799999
+ inst [1 or "diskdev8-16"] value 594.40002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.00079999998
+ inst [1 or "diskdev8-16"] value 0.1816
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0.2
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0.039999999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:07:55.000 245.0.NN (kernel.all.cpu.user): value 0.84200001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.13
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.014
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.014
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.84200001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.13
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.014
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.014
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 37.799999
+ 245.0.NN (kernel.all.intr): value 470
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 36
+ 245.0.NN (mem.vmstat.pgpgout): value 306.39999
+ 245.0.NN (mem.vmstat.pgfault): value 23202
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.40000001
+ 245.0.NN (mem.vmstat.pgfree): value 13830.4
+ 245.0.NN (disk.all.total): value 17.799999
+ 245.0.NN (disk.all.read): value 4.5999999
+ 245.0.NN (disk.all.read_bytes): value 36
+ 245.0.NN (disk.all.write): value 13.2
+ 245.0.NN (disk.all.write_bytes): value 306.39999
+ 245.0.NN (disk.all.total_bytes): value 342.39999
+ 245.0.NN (mem.util.free): value 56648
+ 245.0.NN (mem.util.used): value 969480
+ 245.0.NN (mem.util.bufmem): value 136844
+ 245.0.NN (mem.util.cached): value 443256
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 63131
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 63505
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.62
+ inst [1 or "5 minute"] value 0.86000001
+ inst [2 or "15 minute"] value 0.43000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 6.4000001
+ inst [1 or "diskdev8-16"] value 11.4
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 36
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 24.799999
+ inst [1 or "diskdev8-16"] value 281.60001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 60.799999
+ inst [1 or "diskdev8-16"] value 281.60001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.019200001
+ inst [1 or "diskdev8-16"] value 0.0112
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:00.000 245.0.NN (kernel.all.cpu.user): value 0.7924
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1996
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.7924
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.1996
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 29.940001
+ 245.0.NN (kernel.all.intr): value 511.98001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 11.18
+ 245.0.NN (mem.vmstat.pgpgout): value 311.38
+ 245.0.NN (mem.vmstat.pgfault): value 26094.41
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 13704.59
+ 245.0.NN (disk.all.total): value 20.360001
+ 245.0.NN (disk.all.read): value 2.5899999
+ 245.0.NN (disk.all.read_bytes): value 11.18
+ 245.0.NN (disk.all.write): value 17.76
+ 245.0.NN (disk.all.write_bytes): value 311.375
+ 245.0.NN (disk.all.total_bytes): value 322.55499
+ 245.0.NN (mem.util.free): value 57864
+ 245.0.NN (mem.util.used): value 968264
+ 245.0.NN (mem.util.bufmem): value 136920
+ 245.0.NN (mem.util.cached): value 444696
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 63398
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 63606
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.73
+ inst [1 or "5 minute"] value 0.89999998
+ inst [2 or "15 minute"] value 0.44
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 4.5900002
+ inst [1 or "diskdev8-16"] value 15.77
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 11.18
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 26.344999
+ inst [1 or "diskdev8-16"] value 285.03
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 37.525002
+ inst [1 or "diskdev8-16"] value 285.03
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0055999998
+ inst [1 or "diskdev8-16"] value 0.0176
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:05.000 245.0.NN (kernel.all.cpu.user): value 0.83329999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.15260001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.012
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.83329999
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.15260001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 43.57
+ 245.0.NN (kernel.all.intr): value 478.92001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 50.599998
+ 245.0.NN (mem.vmstat.pgpgout): value 345.38
+ 245.0.NN (mem.vmstat.pgfault): value 27394.18
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.80000001
+ 245.0.NN (mem.vmstat.pgfree): value 13965.66
+ 245.0.NN (disk.all.total): value 18.67
+ 245.0.NN (disk.all.read): value 3.21
+ 245.0.NN (disk.all.read_bytes): value 50.599998
+ 245.0.NN (disk.all.write): value 15.46
+ 245.0.NN (disk.all.write_bytes): value 345.38
+ 245.0.NN (disk.all.total_bytes): value 395.98001
+ 245.0.NN (mem.util.free): value 48960
+ 245.0.NN (mem.util.used): value 977168
+ 245.0.NN (mem.util.bufmem): value 136988
+ 245.0.NN (mem.util.cached): value 445996
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 63942
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 63712
+ 245.0.NN (proc.runq.runnable): value 3
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.67
+ inst [1 or "5 minute"] value 0.89999998
+ inst [2 or "15 minute"] value 0.44999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 4.4200001
+ inst [1 or "diskdev8-16"] value 14.26
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 50.599998
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 22.49
+ inst [1 or "diskdev8-16"] value 322.89001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 73.089996
+ inst [1 or "diskdev8-16"] value 322.89001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0145
+ inst [1 or "diskdev8-16"] value 0.0153
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0.2
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.050000001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:10.000 245.0.NN (kernel.all.cpu.user): value 0.87050003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1235
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.87050003
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.1235
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 52.790001
+ 245.0.NN (kernel.all.intr): value 440.84
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 12.75
+ 245.0.NN (mem.vmstat.pgpgout): value 257.37
+ 245.0.NN (mem.vmstat.pgfault): value 29511.75
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 14507.57
+ 245.0.NN (disk.all.total): value 12.75
+ 245.0.NN (disk.all.read): value 1.39
+ 245.0.NN (disk.all.read_bytes): value 12.75
+ 245.0.NN (disk.all.write): value 11.35
+ 245.0.NN (disk.all.write_bytes): value 257.37
+ 245.0.NN (disk.all.total_bytes): value 270.12
+ 245.0.NN (mem.util.free): value 52308
+ 245.0.NN (mem.util.used): value 973820
+ 245.0.NN (mem.util.bufmem): value 137052
+ 245.0.NN (mem.util.cached): value 447048
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 64447
+ 245.0.NN (vfs.files.count): value 8864
+ 245.0.NN (vfs.inodes.count): value 63840
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.61
+ inst [1 or "5 minute"] value 0.89999998
+ inst [2 or "15 minute"] value 0.44999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2.3900001
+ inst [1 or "diskdev8-16"] value 10.36
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 12.75
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 27.09
+ inst [1 or "diskdev8-16"] value 230.28
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 39.84
+ inst [1 or "diskdev8-16"] value 230.28
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0031999999
+ inst [1 or "diskdev8-16"] value 0.0024000001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:15.000 245.0.NN (kernel.all.cpu.user): value 0.85170001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1042
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.042100001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.85170001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.1042
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.042100001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 34.07
+ 245.0.NN (kernel.all.intr): value 468.94
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 369.54001
+ 245.0.NN (mem.vmstat.pgpgout): value 266.92999
+ 245.0.NN (mem.vmstat.pgfault): value 21749.699
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.60000002
+ 245.0.NN (mem.vmstat.pgfree): value 10988.98
+ 245.0.NN (disk.all.total): value 32.060001
+ 245.0.NN (disk.all.read): value 20.440001
+ 245.0.NN (disk.all.read_bytes): value 369.54001
+ 245.0.NN (disk.all.write): value 11.62
+ 245.0.NN (disk.all.write_bytes): value 266.935
+ 245.0.NN (disk.all.total_bytes): value 636.47498
+ 245.0.NN (mem.util.free): value 49564
+ 245.0.NN (mem.util.used): value 976564
+ 245.0.NN (mem.util.bufmem): value 137136
+ 245.0.NN (mem.util.cached): value 449656
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 65000
+ 245.0.NN (vfs.files.count): value 8896
+ 245.0.NN (vfs.inodes.count): value 64029
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.5700001
+ inst [1 or "5 minute"] value 0.89999998
+ inst [2 or "15 minute"] value 0.44999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 21.84
+ inst [1 or "diskdev8-16"] value 10.22
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 369.54001
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 23.245001
+ inst [1 or "diskdev8-16"] value 243.685
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 392.785
+ inst [1 or "diskdev8-16"] value 243.685
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.045699999
+ inst [1 or "diskdev8-16"] value 0.0071999999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0.2
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0.039999999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:20.000 245.0.NN (kernel.all.cpu.user): value 0.89999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.093999997
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.89999998
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.093999997
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 51.599998
+ 245.0.NN (kernel.all.intr): value 447.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 16
+ 245.0.NN (mem.vmstat.pgpgout): value 216
+ 245.0.NN (mem.vmstat.pgfault): value 17317
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.60000002
+ 245.0.NN (mem.vmstat.pgfree): value 6141.3999
+ 245.0.NN (disk.all.total): value 15.2
+ 245.0.NN (disk.all.read): value 2
+ 245.0.NN (disk.all.read_bytes): value 16
+ 245.0.NN (disk.all.write): value 13.2
+ 245.0.NN (disk.all.write_bytes): value 216
+ 245.0.NN (disk.all.total_bytes): value 232
+ 245.0.NN (mem.util.free): value 36040
+ 245.0.NN (mem.util.used): value 990088
+ 245.0.NN (mem.util.bufmem): value 137272
+ 245.0.NN (mem.util.cached): value 450820
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 65241
+ 245.0.NN (vfs.files.count): value 8896
+ 245.0.NN (vfs.inodes.count): value 64140
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.52
+ inst [1 or "5 minute"] value 0.91000003
+ inst [2 or "15 minute"] value 0.46000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 3.8
+ inst [1 or "diskdev8-16"] value 11.4
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 16
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 24.799999
+ inst [1 or "diskdev8-16"] value 191.2
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 40.799999
+ inst [1 or "diskdev8-16"] value 191.2
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0055999998
+ inst [1 or "diskdev8-16"] value 0.0071999999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0.40000001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0.40000001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.029999999
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0.090000004
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:25.000 245.0.NN (kernel.all.cpu.user): value 0.80800003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.186
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.80800003
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.186
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 162
+ 245.0.NN (kernel.all.intr): value 445
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 3.2
+ 245.0.NN (mem.vmstat.pgpgout): value 300
+ 245.0.NN (mem.vmstat.pgfault): value 42387.801
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 11077.6
+ 245.0.NN (disk.all.total): value 17
+ 245.0.NN (disk.all.read): value 0.60000002
+ 245.0.NN (disk.all.read_bytes): value 3.2
+ 245.0.NN (disk.all.write): value 16.4
+ 245.0.NN (disk.all.write_bytes): value 300
+ 245.0.NN (disk.all.total_bytes): value 303.20001
+ 245.0.NN (mem.util.free): value 49192
+ 245.0.NN (mem.util.used): value 976936
+ 245.0.NN (mem.util.bufmem): value 137344
+ 245.0.NN (mem.util.cached): value 451044
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 65880
+ 245.0.NN (vfs.files.count): value 8928
+ 245.0.NN (vfs.inodes.count): value 64516
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.48
+ inst [1 or "5 minute"] value 0.91000003
+ inst [2 or "15 minute"] value 0.46000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2.2
+ inst [1 or "diskdev8-16"] value 14.8
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 3.2
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 21.6
+ inst [1 or "diskdev8-16"] value 278.39999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 24.799999
+ inst [1 or "diskdev8-16"] value 278.39999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0040000002
+ inst [1 or "diskdev8-16"] value 0.0128
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:30.000 245.0.NN (kernel.all.cpu.user): value 0.78240001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.2076
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.78240001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.2076
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 178.24001
+ 245.0.NN (kernel.all.intr): value 442.91
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0.80000001
+ 245.0.NN (mem.vmstat.pgpgout): value 289.01999
+ 245.0.NN (mem.vmstat.pgfault): value 45049.301
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 10640.32
+ 245.0.NN (disk.all.total): value 17.559999
+ 245.0.NN (disk.all.read): value 0.2
+ 245.0.NN (disk.all.read_bytes): value 0.80000001
+ 245.0.NN (disk.all.write): value 17.370001
+ 245.0.NN (disk.all.write_bytes): value 289.01999
+ 245.0.NN (disk.all.total_bytes): value 289.82001
+ 245.0.NN (mem.util.free): value 51200
+ 245.0.NN (mem.util.used): value 974928
+ 245.0.NN (mem.util.bufmem): value 137424
+ 245.0.NN (mem.util.cached): value 451120
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 65890
+ 245.0.NN (vfs.files.count): value 8832
+ 245.0.NN (vfs.inodes.count): value 64511
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.4400001
+ inst [1 or "5 minute"] value 0.91000003
+ inst [2 or "15 minute"] value 0.46000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1.8
+ inst [1 or "diskdev8-16"] value 15.77
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.80000001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 7.1849999
+ inst [1 or "diskdev8-16"] value 281.83499
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 7.1849999
+ inst [1 or "diskdev8-16"] value 282.63501
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.016000001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:35.000 245.0.NN (kernel.all.cpu.user): value 0.50300002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.493
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.50300002
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.493
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 545.89001
+ 245.0.NN (kernel.all.intr): value 480.16
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 12.02
+ 245.0.NN (mem.vmstat.pgpgout): value 440.88
+ 245.0.NN (mem.vmstat.pgfault): value 124884.37
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 25752.711
+ 245.0.NN (disk.all.total): value 36.07
+ 245.0.NN (disk.all.read): value 0.80000001
+ 245.0.NN (disk.all.read_bytes): value 12.025
+ 245.0.NN (disk.all.write): value 35.27
+ 245.0.NN (disk.all.write_bytes): value 440.88
+ 245.0.NN (disk.all.total_bytes): value 452.905
+ 245.0.NN (mem.util.free): value 46456
+ 245.0.NN (mem.util.used): value 979672
+ 245.0.NN (mem.util.bufmem): value 137616
+ 245.0.NN (mem.util.cached): value 455076
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 66595
+ 245.0.NN (vfs.files.count): value 8896
+ 245.0.NN (vfs.inodes.count): value 64685
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.4
+ inst [1 or "5 minute"] value 0.91000003
+ inst [2 or "15 minute"] value 0.46000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1.8
+ inst [1 or "diskdev8-16"] value 34.27
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 12.025
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 16.834999
+ inst [1 or "diskdev8-16"] value 424.04999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 28.860001
+ inst [1 or "diskdev8-16"] value 424.04999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0016
+ inst [1 or "diskdev8-16"] value 0.080200002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:40.000 245.0.NN (kernel.all.cpu.user): value 0.477
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.51899999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.477
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.51899999
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 573.04999
+ 245.0.NN (kernel.all.intr): value 513.57001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 981.23999
+ 245.0.NN (mem.vmstat.pgfault): value 130916.77
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 27080.039
+ 245.0.NN (disk.all.total): value 50.900002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 50.900002
+ 245.0.NN (disk.all.write_bytes): value 981.23999
+ 245.0.NN (disk.all.total_bytes): value 981.23999
+ 245.0.NN (mem.util.free): value 43992
+ 245.0.NN (mem.util.used): value 982136
+ 245.0.NN (mem.util.bufmem): value 137736
+ 245.0.NN (mem.util.cached): value 457252
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 67358
+ 245.0.NN (vfs.files.count): value 8896
+ 245.0.NN (vfs.inodes.count): value 64974
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.45
+ inst [1 or "5 minute"] value 0.93000001
+ inst [2 or "15 minute"] value 0.47
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1.6
+ inst [1 or "diskdev8-16"] value 49.299999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 19.16
+ inst [1 or "diskdev8-16"] value 962.07501
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 19.16
+ inst [1 or "diskdev8-16"] value 962.07501
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.089400001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0.2
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0.050000001
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+
+05:08:45.000 245.0.NN (kernel.all.cpu.user): value 0.4188
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.52710003
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.054099999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.4188
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.52710003
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.054099999
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.all.pswitch): value 590.17999
+ 245.0.NN (kernel.all.intr): value 452.70999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 7.21
+ 245.0.NN (mem.vmstat.pgpgout): value 504.20999
+ 245.0.NN (mem.vmstat.pgfault): value 134743.3
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 27557.721
+ 245.0.NN (disk.all.total): value 34.470001
+ 245.0.NN (disk.all.read): value 1.8
+ 245.0.NN (disk.all.read_bytes): value 7.2150002
+ 245.0.NN (disk.all.write): value 32.669998
+ 245.0.NN (disk.all.write_bytes): value 504.20999
+ 245.0.NN (disk.all.total_bytes): value 511.42499
+ 245.0.NN (mem.util.free): value 41744
+ 245.0.NN (mem.util.used): value 984384
+ 245.0.NN (mem.util.bufmem): value 137900
+ 245.0.NN (mem.util.cached): value 459096
+ 245.0.NN (mem.util.swapFree): value 1920812
+ 245.0.NN (mem.util.swapCached): value 19204
+ 245.0.NN (vfs.dentry.count): value 68174
+ 245.0.NN (vfs.files.count): value 8896
+ 245.0.NN (vfs.inodes.count): value 65343
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 1.41
+ inst [1 or "5 minute"] value 0.93000001
+ inst [2 or "15 minute"] value 0.47
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2.2
+ inst [1 or "diskdev8-16"] value 32.259998
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 7.2150002
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 17.635
+ inst [1 or "diskdev8-16"] value 486.57501
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 17.635
+ inst [1 or "diskdev8-16"] value 493.79001
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-16"] value 0.067299999
+ inst [2 or "diskdev11-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "eth0"] value 0
+ inst [1 or "wlan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "eth0"] value 0
+
diff --git a/qa/370.out.2 b/qa/370.out.2
new file mode 100644
index 0000000..61551a6
--- /dev/null
+++ b/qa/370.out.2
@@ -0,0 +1,5444 @@
+QA output created by 370
+check user CPU time ...
+
+check timestamps ...
+
+check sys CPU time ...
+
+check user disk iops ...
+
+check user disk write thruput ...
+
+full dump ...
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Sat May 28 01:07:44.000 2011
+ ending Sat May 28 01:10:34.000 2011
+
+01:07:44.000 245.0.NN (hinv.ncpu): value 2
+ 245.0.NN (kernel.all.cpu.user): value 0.032000002
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.016000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.95099998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.029999999
+ inst [1 or "cpu1"] value 0.0361
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.014
+ inst [1 or "cpu1"] value 0.016000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.95599997
+ inst [1 or "cpu1"] value 0.9479
+ 245.0.NN (kernel.all.pswitch): value 866.20001
+ 245.0.NN (kernel.all.intr): value 921
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 11.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 36.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314108
+ 245.0.NN (mem.util.used): value 2780380
+ 245.0.NN (mem.util.bufmem): value 243436
+ 245.0.NN (mem.util.cached): value 1683440
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.60000002
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.079999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:07:49.000 245.0.NN (kernel.all.cpu.user): value 0.0309
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.02
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9461
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0.048
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.014
+ inst [1 or "cpu1"] value 0.026000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96990001
+ inst [1 or "cpu1"] value 0.926
+ 245.0.NN (kernel.all.pswitch): value 923.20001
+ 245.0.NN (kernel.all.intr): value 901.59998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 11.2
+ 245.0.NN (mem.vmstat.pgfault): value 11.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 37
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.2
+ 245.0.NN (disk.all.total): value 2.2
+ 245.0.NN (disk.all.write_bytes): value 11.2
+ 245.0.NN (disk.all.total_bytes): value 11.2
+ 245.0.NN (mem.util.free): value 314108
+ 245.0.NN (mem.util.used): value 2780380
+ 245.0.NN (mem.util.bufmem): value 243436
+ 245.0.NN (mem.util.cached): value 1683448
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.18
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:07:54.000 245.0.NN (kernel.all.cpu.user): value 0.041099999
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.013
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94480002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0438
+ inst [1 or "cpu1"] value 0.0381
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0199
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9303
+ inst [1 or "cpu1"] value 0.95389998
+ 245.0.NN (kernel.all.pswitch): value 1096.8
+ 245.0.NN (kernel.all.intr): value 1244
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 12.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 64
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 314224
+ 245.0.NN (mem.util.used): value 2780264
+ 245.0.NN (mem.util.bufmem): value 243436
+ 245.0.NN (mem.util.cached): value 1683452
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 452
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.33
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.059999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:07:59.000 245.0.NN (kernel.all.cpu.user): value 0.037999999
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.014
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94709998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0261
+ inst [1 or "cpu1"] value 0.049899999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0.017999999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96390003
+ inst [1 or "cpu1"] value 0.9321
+ 245.0.NN (kernel.all.pswitch): value 924.20001
+ 245.0.NN (kernel.all.intr): value 921.59998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 10.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 34.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314224
+ 245.0.NN (mem.util.used): value 2780264
+ 245.0.NN (mem.util.bufmem): value 243436
+ 245.0.NN (mem.util.cached): value 1683460
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 452
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.0099999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:04.000 245.0.NN (kernel.all.cpu.user): value 0.037
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.017999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94489998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.022
+ inst [1 or "cpu1"] value 0.052099999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0.024
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96600002
+ inst [1 or "cpu1"] value 0.92379999
+ 245.0.NN (kernel.all.pswitch): value 1063.6
+ 245.0.NN (kernel.all.intr): value 1016
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 12.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 45.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314100
+ 245.0.NN (mem.util.used): value 2780388
+ 245.0.NN (mem.util.bufmem): value 243436
+ 245.0.NN (mem.util.cached): value 1683468
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (proc.nproc): value 452
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.059999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:09.000 245.0.NN (kernel.all.cpu.user): value 0.0341
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.016000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9479
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0581
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0261
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9138
+ inst [1 or "cpu1"] value 0.98000002
+ 245.0.NN (kernel.all.pswitch): value 932
+ 245.0.NN (kernel.all.intr): value 996.40002
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 12.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 38.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314100
+ 245.0.NN (mem.util.used): value 2780388
+ 245.0.NN (mem.util.bufmem): value 243436
+ 245.0.NN (mem.util.cached): value 1683476
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 452
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:14.000 245.0.NN (kernel.all.cpu.user): value 0.039000001
+ 245.0.NN (kernel.all.cpu.nice): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.sys): value 0.02
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93889999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.061999999
+ inst [1 or "cpu1"] value 0.0141
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.032000002
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.90600002
+ inst [1 or "cpu1"] value 0.97589999
+ 245.0.NN (kernel.all.pswitch): value 904.79999
+ 245.0.NN (kernel.all.intr): value 925.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 21
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 50.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314100
+ 245.0.NN (mem.util.used): value 2780388
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683484
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 452
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.60000002
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.80000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.38
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.12
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:19.000 245.0.NN (kernel.all.cpu.user): value 0.035999998
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.018999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94410002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.061999999
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.029999999
+ inst [1 or "cpu1"] value 0.0099999998
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.90799999
+ inst [1 or "cpu1"] value 0.97610003
+ 245.0.NN (kernel.all.pswitch): value 941.79999
+ 245.0.NN (kernel.all.intr): value 1091.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 12.2
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 37
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314108
+ 245.0.NN (mem.util.used): value 2780380
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683492
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.0099999998
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.07
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:24.000 245.0.NN (kernel.all.cpu.user): value 0.041000001
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.021
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93599999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.066100001
+ inst [1 or "cpu1"] value 0.016000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0341
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.89780003
+ inst [1 or "cpu1"] value 0.97600001
+ 245.0.NN (kernel.all.pswitch): value 1029.4
+ 245.0.NN (kernel.all.intr): value 1048.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 411.20001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 530.59998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 313984
+ 245.0.NN (mem.util.used): value 2780504
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683500
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.0099999998
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:29.000 245.0.NN (kernel.all.cpu.user): value 0.044
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.02
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93589997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.064000003
+ inst [1 or "cpu1"] value 0.022
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.028000001
+ inst [1 or "cpu1"] value 0.0099999998
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.90799999
+ inst [1 or "cpu1"] value 0.9659
+ 245.0.NN (kernel.all.pswitch): value 1040.8
+ 245.0.NN (kernel.all.intr): value 1113.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 408.79999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 531.59998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 313984
+ 245.0.NN (mem.util.used): value 2780504
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683508
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:34.000 245.0.NN (kernel.all.cpu.user): value 0.037
+ 245.0.NN (kernel.all.cpu.nice): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.sys): value 0.017000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9429
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.047899999
+ inst [1 or "cpu1"] value 0.028000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.024
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9242
+ inst [1 or "cpu1"] value 0.958
+ 245.0.NN (kernel.all.pswitch): value 1161.2
+ 245.0.NN (kernel.all.intr): value 1252.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 12.2
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 57.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314108
+ 245.0.NN (mem.util.used): value 2780380
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683516
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13239
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.059999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:39.000 245.0.NN (kernel.all.cpu.user): value 0.046100002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.016000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93690002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0381
+ inst [1 or "cpu1"] value 0.052299999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.014
+ inst [1 or "cpu1"] value 0.016100001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94590002
+ inst [1 or "cpu1"] value 0.93159997
+ 245.0.NN (kernel.all.pswitch): value 1094.8
+ 245.0.NN (kernel.all.intr): value 1001.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 37.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 159
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314868
+ 245.0.NN (mem.util.used): value 2779620
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683524
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:44.000 245.0.NN (kernel.all.cpu.user): value 0.037
+ 245.0.NN (kernel.all.cpu.nice): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.sys): value 0.02
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94090003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0319
+ inst [1 or "cpu1"] value 0.044199999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.02
+ inst [1 or "cpu1"] value 0.0221
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9461
+ inst [1 or "cpu1"] value 0.93370003
+ 245.0.NN (kernel.all.pswitch): value 1057.6
+ 245.0.NN (kernel.all.intr): value 1073.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 30
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 58.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314868
+ 245.0.NN (mem.util.used): value 2779620
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683532
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:49.000 245.0.NN (kernel.all.cpu.user): value 0.035999998
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.018999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94410002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0462
+ inst [1 or "cpu1"] value 0.0239
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0241
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.92970002
+ inst [1 or "cpu1"] value 0.96020001
+ 245.0.NN (kernel.all.pswitch): value 942.79999
+ 245.0.NN (kernel.all.intr): value 1017.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 12
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 37.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314860
+ 245.0.NN (mem.util.used): value 2779628
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683540
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 450
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.059999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:54.000 245.0.NN (kernel.all.cpu.user): value 0.035999998
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.016000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94590002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0359
+ inst [1 or "cpu1"] value 0.0381
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.014
+ inst [1 or "cpu1"] value 0.017999999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94809997
+ inst [1 or "cpu1"] value 0.94190001
+ 245.0.NN (kernel.all.pswitch): value 1041.2
+ 245.0.NN (kernel.all.intr): value 981.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 13
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 47.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 314860
+ 245.0.NN (mem.util.used): value 2779628
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683548
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 450
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:08:59.000 245.0.NN (kernel.all.cpu.user): value 0.043000001
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.02
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93589997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.02
+ inst [1 or "cpu1"] value 0.066
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.016000001
+ inst [1 or "cpu1"] value 0.024
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96399999
+ inst [1 or "cpu1"] value 0.90799999
+ 245.0.NN (kernel.all.pswitch): value 1094.6
+ 245.0.NN (kernel.all.intr): value 1071.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 451.60001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 613.79999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 315232
+ 245.0.NN (mem.util.used): value 2779256
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683552
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11725
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 450
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.07
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:04.000 245.0.NN (kernel.all.cpu.user): value 0.052000001
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.024
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.92299998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.050000001
+ inst [1 or "cpu1"] value 0.0539
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.022
+ inst [1 or "cpu1"] value 0.027899999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.92799997
+ inst [1 or "cpu1"] value 0.91619998
+ 245.0.NN (kernel.all.pswitch): value 1275
+ 245.0.NN (kernel.all.intr): value 1266.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 277.39999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 643
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 319332
+ 245.0.NN (mem.util.used): value 2775156
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683560
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11730
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.0099999998
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.0099999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:09.000 245.0.NN (kernel.all.cpu.user): value 0.037099998
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.016000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94489998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.054099999
+ inst [1 or "cpu1"] value 0.018100001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.02
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.92379999
+ inst [1 or "cpu1"] value 0.96789998
+ 245.0.NN (kernel.all.pswitch): value 975.79999
+ 245.0.NN (kernel.all.intr): value 1038.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 105.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 160.60001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 319316
+ 245.0.NN (mem.util.used): value 2775172
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683572
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11730
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.60000002
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.079999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:14.000 245.0.NN (kernel.all.cpu.user): value 0.043200001
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.019099999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93669999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.059999999
+ inst [1 or "cpu1"] value 0.028200001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.017999999
+ inst [1 or "cpu1"] value 0.020099999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.92000002
+ inst [1 or "cpu1"] value 0.9497
+ 245.0.NN (kernel.all.pswitch): value 1079.6
+ 245.0.NN (kernel.all.intr): value 1062.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 14.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 47.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 319332
+ 245.0.NN (mem.util.used): value 2775156
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683572
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11730
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 1
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 1.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.38999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.14
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:19.000 245.0.NN (kernel.all.cpu.user): value 0.036899999
+ 245.0.NN (kernel.all.cpu.nice): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.sys): value 0.017000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94309998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0361
+ inst [1 or "cpu1"] value 0.037999999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.014
+ inst [1 or "cpu1"] value 0.02
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9479
+ inst [1 or "cpu1"] value 0.94199997
+ 245.0.NN (kernel.all.pswitch): value 973.79999
+ 245.0.NN (kernel.all.intr): value 962.59998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 105.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 161.39999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 319456
+ 245.0.NN (mem.util.used): value 2775032
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683588
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11730
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:24.000 245.0.NN (kernel.all.cpu.user): value 0.037
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.022
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93910003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.037999999
+ inst [1 or "cpu1"] value 0.0359
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.017999999
+ inst [1 or "cpu1"] value 0.024
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94199997
+ inst [1 or "cpu1"] value 0.93610001
+ 245.0.NN (kernel.all.pswitch): value 1123.8
+ 245.0.NN (kernel.all.intr): value 1119
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 198.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 282.39999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 319580
+ 245.0.NN (mem.util.used): value 2774908
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683600
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11730
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:29.000 245.0.NN (kernel.all.cpu.user): value 0.1021
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.053100001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.84380001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.138
+ inst [1 or "cpu1"] value 0.066
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.056000002
+ inst [1 or "cpu1"] value 0.050000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.80599999
+ inst [1 or "cpu1"] value 0.88200003
+ 245.0.NN (kernel.all.pswitch): value 1462.2
+ 245.0.NN (kernel.all.intr): value 1193.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 118.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 257.60001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 319580
+ 245.0.NN (mem.util.used): value 2774908
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683608
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11730
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.059999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:34.000 245.0.NN (kernel.all.cpu.user): value 0.11
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.028999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.86000001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.14
+ inst [1 or "cpu1"] value 0.078000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.029999999
+ inst [1 or "cpu1"] value 0.029999999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.82800001
+ inst [1 or "cpu1"] value 0.89200002
+ 245.0.NN (kernel.all.pswitch): value 1480.6
+ 245.0.NN (kernel.all.intr): value 1341.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 31.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 164.60001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 319456
+ 245.0.NN (mem.util.used): value 2775032
+ 245.0.NN (mem.util.bufmem): value 243440
+ 245.0.NN (mem.util.cached): value 1683616
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11730
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13238
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:39.000 245.0.NN (kernel.all.cpu.user): value 0.1049
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.028999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.1838
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.68129998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.095600002
+ inst [1 or "cpu1"] value 0.1158
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0339
+ inst [1 or "cpu1"] value 0.024
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0.35530001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.85460001
+ inst [1 or "cpu1"] value 0.505
+ 245.0.NN (kernel.all.pswitch): value 1820.4
+ 245.0.NN (kernel.all.intr): value 1357.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 4.8000002
+ 245.0.NN (mem.vmstat.pgpgout): value 88
+ 245.0.NN (mem.vmstat.pgfault): value 32.799999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 318
+ 245.0.NN (disk.all.read): value 0.60000002
+ 245.0.NN (disk.all.read_bytes): value 4.8000002
+ 245.0.NN (disk.all.write): value 17.4
+ 245.0.NN (disk.all.total): value 18
+ 245.0.NN (disk.all.write_bytes): value 88
+ 245.0.NN (disk.all.total_bytes): value 92.800003
+ 245.0.NN (mem.util.free): value 319424
+ 245.0.NN (mem.util.used): value 2775064
+ 245.0.NN (mem.util.bufmem): value 243456
+ 245.0.NN (mem.util.cached): value 1683648
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11735
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13245
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 453
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.079999998
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 18
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4.8000002
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 88
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 92.800003
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.3712
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.31
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.41
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 22.620001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 20.620001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 1
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.090000004
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:44.000 245.0.NN (kernel.all.cpu.user): value 0.1662
+ 245.0.NN (kernel.all.cpu.nice): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.sys): value 0.062100001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.76779997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.15260001
+ inst [1 or "cpu1"] value 0.17839999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.074299999
+ inst [1 or "cpu1"] value 0.050099999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.77109998
+ inst [1 or "cpu1"] value 0.76749998
+ 245.0.NN (kernel.all.pswitch): value 2072.3999
+ 245.0.NN (kernel.all.intr): value 1378.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 29.6
+ 245.0.NN (mem.vmstat.pgfault): value 63.400002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 468.79999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 7.4000001
+ 245.0.NN (disk.all.total): value 7.4000001
+ 245.0.NN (disk.all.write_bytes): value 29.6
+ 245.0.NN (disk.all.total_bytes): value 29.6
+ 245.0.NN (mem.util.free): value 319308
+ 245.0.NN (mem.util.used): value 2775180
+ 245.0.NN (mem.util.bufmem): value 243472
+ 245.0.NN (mem.util.cached): value 1683656
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11762
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13242
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 452
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.079999998
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.4000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 29.6
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 29.6
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 5.5999999
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 7.1999998
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.74000001
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.49000001
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:49.000 245.0.NN (kernel.all.cpu.user): value 0.116
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.045000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.833
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.1162
+ inst [1 or "cpu1"] value 0.1182
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.040100001
+ inst [1 or "cpu1"] value 0.048099998
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.83569998
+ inst [1 or "cpu1"] value 0.8337
+ 245.0.NN (kernel.all.pswitch): value 1872.2
+ 245.0.NN (kernel.all.intr): value 1371
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 8
+ 245.0.NN (mem.vmstat.pgpgout): value 15.2
+ 245.0.NN (mem.vmstat.pgfault): value 32
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 366.39999
+ 245.0.NN (disk.all.read): value 0.60000002
+ 245.0.NN (disk.all.read_bytes): value 8
+ 245.0.NN (disk.all.write): value 3.4000001
+ 245.0.NN (disk.all.total): value 4
+ 245.0.NN (disk.all.write_bytes): value 15.2
+ 245.0.NN (disk.all.total_bytes): value 23.200001
+ 245.0.NN (mem.util.free): value 319192
+ 245.0.NN (mem.util.used): value 2775296
+ 245.0.NN (mem.util.bufmem): value 243476
+ 245.0.NN (mem.util.cached): value 1683696
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11807
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13245
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.07
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 15.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 23.200001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0128
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.6
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.0099999998
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.0099999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:54.000 245.0.NN (kernel.all.cpu.user): value 0.067100003
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.0261
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9048
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.069899999
+ inst [1 or "cpu1"] value 0.062199999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0339
+ inst [1 or "cpu1"] value 0.020099999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.89219999
+ inst [1 or "cpu1"] value 0.91570002
+ 245.0.NN (kernel.all.pswitch): value 1393.6
+ 245.0.NN (kernel.all.intr): value 1291.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 62.400002
+ 245.0.NN (mem.vmstat.pgfault): value 16.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 174.8
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 14.4
+ 245.0.NN (disk.all.total): value 14.4
+ 245.0.NN (disk.all.write_bytes): value 62.400002
+ 245.0.NN (disk.all.total_bytes): value 62.400002
+ 245.0.NN (mem.util.free): value 319192
+ 245.0.NN (mem.util.used): value 2775296
+ 245.0.NN (mem.util.bufmem): value 243476
+ 245.0.NN (mem.util.cached): value 1683704
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11822
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13245
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 62.400002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 62.400002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0016
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.6700001
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.94
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.11
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:09:59.000 245.0.NN (kernel.all.cpu.user): value 0.0858
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.047899999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.8653
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.082000002
+ inst [1 or "cpu1"] value 0.091600001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.054000001
+ inst [1 or "cpu1"] value 0.0418
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.86400002
+ inst [1 or "cpu1"] value 0.86449999
+ 245.0.NN (kernel.all.pswitch): value 1608.6
+ 245.0.NN (kernel.all.intr): value 1283
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 13.6
+ 245.0.NN (mem.vmstat.pgfault): value 32.799999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 264
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.4000001
+ 245.0.NN (disk.all.total): value 2.4000001
+ 245.0.NN (disk.all.write_bytes): value 13.6
+ 245.0.NN (disk.all.total_bytes): value 13.6
+ 245.0.NN (mem.util.free): value 319192
+ 245.0.NN (mem.util.used): value 2775296
+ 245.0.NN (mem.util.bufmem): value 243476
+ 245.0.NN (mem.util.cached): value 1683708
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11822
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13245
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 451
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 13.6
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 13.6
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.33
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.60000002
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:10:04.000 245.0.NN (kernel.all.cpu.user): value 0.055100001
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.026000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.91689998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.068099998
+ inst [1 or "cpu1"] value 0.042100001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.028100001
+ inst [1 or "cpu1"] value 0.024
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.90179998
+ inst [1 or "cpu1"] value 0.9339
+ 245.0.NN (kernel.all.pswitch): value 1345.8
+ 245.0.NN (kernel.all.intr): value 1387.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 24
+ 245.0.NN (mem.vmstat.pgfault): value 190
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 322.79999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 5.5999999
+ 245.0.NN (disk.all.total): value 5.5999999
+ 245.0.NN (disk.all.write_bytes): value 24
+ 245.0.NN (disk.all.total_bytes): value 24
+ 245.0.NN (mem.util.free): value 319076
+ 245.0.NN (mem.util.used): value 2775412
+ 245.0.NN (mem.util.bufmem): value 243484
+ 245.0.NN (mem.util.cached): value 1683716
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11822
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13245
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 450
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 24
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 24
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0016
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.5699997
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.70999998
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.28999999
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.059999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:10:09.000 245.0.NN (kernel.all.cpu.user): value 0.094099998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1021
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.8028
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.077799998
+ inst [1 or "cpu1"] value 0.1082
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.1218
+ inst [1 or "cpu1"] value 0.080200002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.79640001
+ inst [1 or "cpu1"] value 0.8096
+ 245.0.NN (kernel.all.pswitch): value 1802.4
+ 245.0.NN (kernel.all.intr): value 1438.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 11.2
+ 245.0.NN (mem.vmstat.pgfault): value 52.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 319
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2
+ 245.0.NN (disk.all.total): value 2
+ 245.0.NN (disk.all.write_bytes): value 11.2
+ 245.0.NN (disk.all.total_bytes): value 11.2
+ 245.0.NN (mem.util.free): value 318836
+ 245.0.NN (mem.util.used): value 2775652
+ 245.0.NN (mem.util.bufmem): value 243484
+ 245.0.NN (mem.util.cached): value 1683724
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11822
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13245
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:10:14.000 245.0.NN (kernel.all.cpu.user): value 0.070100002
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.064099997
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.86489999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.049899999
+ inst [1 or "cpu1"] value 0.092
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.077799998
+ inst [1 or "cpu1"] value 0.052000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.87029999
+ inst [1 or "cpu1"] value 0.85600001
+ 245.0.NN (kernel.all.pswitch): value 1319
+ 245.0.NN (kernel.all.intr): value 1101
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 9.6000004
+ 245.0.NN (mem.vmstat.pgfault): value 28.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 171.8
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2
+ 245.0.NN (disk.all.total): value 2
+ 245.0.NN (disk.all.write_bytes): value 9.6000004
+ 245.0.NN (disk.all.total_bytes): value 9.6000004
+ 245.0.NN (mem.util.free): value 318836
+ 245.0.NN (mem.util.used): value 2775652
+ 245.0.NN (mem.util.bufmem): value 243484
+ 245.0.NN (mem.util.cached): value 1683732
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11823
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13245
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.13
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 1
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.60000002
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 1
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 1
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0.079999998
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.38
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0.079999998
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.19
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:10:19.000 245.0.NN (kernel.all.cpu.user): value 0.113
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.079999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.80500001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.1127
+ inst [1 or "cpu1"] value 0.1122
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.1107
+ inst [1 or "cpu1"] value 0.048099998
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.77460003
+ inst [1 or "cpu1"] value 0.83969998
+ 245.0.NN (kernel.all.pswitch): value 1529.2
+ 245.0.NN (kernel.all.intr): value 1238.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 30.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 213.39999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 319084
+ 245.0.NN (mem.util.used): value 2775404
+ 245.0.NN (mem.util.bufmem): value 243484
+ 245.0.NN (mem.util.cached): value 1683740
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11823
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13244
+ 245.0.NN (proc.runq.runnable): value 9
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.12
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:10:24.000 245.0.NN (kernel.all.cpu.user): value 0.044
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.021
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93290001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0559
+ inst [1 or "cpu1"] value 0.034000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.022
+ inst [1 or "cpu1"] value 0.02
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.91820002
+ inst [1 or "cpu1"] value 0.94599998
+ 245.0.NN (kernel.all.pswitch): value 1061.4
+ 245.0.NN (kernel.all.intr): value 1049.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 6.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 111.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 195.39999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.2
+ 245.0.NN (disk.all.total): value 1.2
+ 245.0.NN (disk.all.write_bytes): value 6.4000001
+ 245.0.NN (disk.all.total_bytes): value 6.4000001
+ 245.0.NN (mem.util.free): value 318960
+ 245.0.NN (mem.util.used): value 2775528
+ 245.0.NN (mem.util.bufmem): value 243484
+ 245.0.NN (mem.util.cached): value 1683748
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11823
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13243
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.11
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.60000002
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.079999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:10:29.000 245.0.NN (kernel.all.cpu.user): value 0.034899998
+ 245.0.NN (kernel.all.cpu.nice): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.sys): value 0.018999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94309998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0239
+ inst [1 or "cpu1"] value 0.0458
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.015900001
+ inst [1 or "cpu1"] value 0.0239
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.95819998
+ inst [1 or "cpu1"] value 0.92430001
+ 245.0.NN (kernel.all.pswitch): value 859
+ 245.0.NN (kernel.all.intr): value 881.59998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 50.400002
+ 245.0.NN (mem.vmstat.pgfault): value 107.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 187.2
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 12.4
+ 245.0.NN (disk.all.total): value 12.4
+ 245.0.NN (disk.all.write_bytes): value 50.400002
+ 245.0.NN (disk.all.total_bytes): value 50.400002
+ 245.0.NN (mem.util.free): value 319084
+ 245.0.NN (mem.util.used): value 2775404
+ 245.0.NN (mem.util.bufmem): value 243496
+ 245.0.NN (mem.util.cached): value 1683756
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11824
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13242
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.1
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 50.400002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 50.400002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0024000001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.1300001
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.25999999
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.19
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.80000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 1
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.039999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.039999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+
+01:10:34.000 245.0.NN (kernel.all.cpu.user): value 0.037
+ 245.0.NN (kernel.all.cpu.nice): value 0.001
+ 245.0.NN (kernel.all.cpu.sys): value 0.012
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94989997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0502
+ inst [1 or "cpu1"] value 0.0241
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0141
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9357
+ inst [1 or "cpu1"] value 0.96789998
+ 245.0.NN (kernel.all.pswitch): value 921.59998
+ 245.0.NN (kernel.all.intr): value 914.40002
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 21.6
+ 245.0.NN (mem.vmstat.pgfault): value 103.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 156.39999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 4.4000001
+ 245.0.NN (disk.all.total): value 4.4000001
+ 245.0.NN (disk.all.write_bytes): value 21.6
+ 245.0.NN (disk.all.total_bytes): value 21.6
+ 245.0.NN (mem.util.free): value 318960
+ 245.0.NN (mem.util.used): value 2775528
+ 245.0.NN (mem.util.bufmem): value 243496
+ 245.0.NN (mem.util.cached): value 1683764
+ 245.0.NN (mem.util.swapFree): value 2570364
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 11824
+ 245.0.NN (vfs.files.count): value 8000
+ 245.0.NN (vfs.inodes.count): value 13241
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 449
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.090000004
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4.4000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 21.6
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 21.6
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.8199997
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0.02
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "wlan0"] value 0
+ inst [3 or "ppp0"] value 0
diff --git a/qa/370.out.3 b/qa/370.out.3
new file mode 100644
index 0000000..b5f3145
--- /dev/null
+++ b/qa/370.out.3
@@ -0,0 +1,4534 @@
+QA output created by 370
+check user CPU time ...
+
+check timestamps ...
+
+check sys CPU time ...
+
+check user disk iops ...
+
+check user disk write thruput ...
+
+full dump ...
+Note: timezone set to local timezone of host "vm00" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host vm00
+ commencing Thu Oct 27 05:50:57.000 2011
+ ending Thu Oct 27 05:53:47.000 2011
+
+05:50:57.000 245.0.NN (hinv.ncpu): value 2
+ 245.0.NN (kernel.all.cpu.user): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99379998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99580002
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 25.200001
+ 245.0.NN (kernel.all.intr): value 27.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 7.4000001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 17524
+ 245.0.NN (mem.util.used): value 228812
+ 245.0.NN (mem.util.bufmem): value 42244
+ 245.0.NN (mem.util.cached): value 109936
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0232
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.059999999
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 69
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 29
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.059999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:02.000 245.0.NN (kernel.all.cpu.user): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9939
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99580002
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 25.799999
+ 245.0.NN (kernel.all.intr): value 25.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 12.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 63.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 8.8000002
+ 245.0.NN (disk.all.total_bytes): value 8.8000002
+ 245.0.NN (mem.util.free): value 17524
+ 245.0.NN (mem.util.used): value 228812
+ 245.0.NN (mem.util.bufmem): value 42252
+ 245.0.NN (mem.util.cached): value 109940
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 44
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:07.000 245.0.NN (kernel.all.cpu.user): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99489999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99379998
+ inst [1 or "cpu1"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 27.799999
+ 245.0.NN (kernel.all.intr): value 26.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 6.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 51.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 17512
+ 245.0.NN (mem.util.used): value 228824
+ 245.0.NN (mem.util.bufmem): value 42252
+ 245.0.NN (mem.util.cached): value 109948
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:12.000 245.0.NN (kernel.all.cpu.user): value 0.0027999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0019
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0027999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99250001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0035999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0018
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99470001
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 29.799999
+ 245.0.NN (kernel.all.intr): value 28.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 58.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 17480
+ 245.0.NN (mem.util.used): value 228856
+ 245.0.NN (mem.util.bufmem): value 42260
+ 245.0.NN (mem.util.cached): value 109956
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0063999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.1
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:17.000 245.0.NN (kernel.all.cpu.user): value 0.0041
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99190003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0062000002
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99379998
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 26.4
+ 245.0.NN (kernel.all.intr): value 27.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 17448
+ 245.0.NN (mem.util.used): value 228888
+ 245.0.NN (mem.util.bufmem): value 42268
+ 245.0.NN (mem.util.cached): value 109964
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:22.000 245.0.NN (kernel.all.cpu.user): value 0.0038999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99409997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0038000001
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99620003
+ inst [1 or "cpu1"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 28.4
+ 245.0.NN (kernel.all.intr): value 27.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 57.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 17496
+ 245.0.NN (mem.util.used): value 228840
+ 245.0.NN (mem.util.bufmem): value 42268
+ 245.0.NN (mem.util.cached): value 109972
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:27.000 245.0.NN (kernel.all.cpu.user): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9939
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99589998
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 28.200001
+ 245.0.NN (kernel.all.intr): value 27.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.8
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 12.8
+ 245.0.NN (disk.all.total_bytes): value 12.8
+ 245.0.NN (mem.util.free): value 17464
+ 245.0.NN (mem.util.used): value 228872
+ 245.0.NN (mem.util.bufmem): value 42276
+ 245.0.NN (mem.util.cached): value 109976
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0080000004
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 42.669998
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 13.33
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 13.33
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.059999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:32.000 245.0.NN (kernel.all.cpu.user): value 0.0041
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99180001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99169999
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 27.799999
+ 245.0.NN (kernel.all.intr): value 30
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 11.2
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 62
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.2
+ 245.0.NN (disk.all.total): value 2.2
+ 245.0.NN (disk.all.write_bytes): value 11.2
+ 245.0.NN (disk.all.total_bytes): value 11.2
+ 245.0.NN (mem.util.free): value 17284
+ 245.0.NN (mem.util.used): value 229052
+ 245.0.NN (mem.util.bufmem): value 42284
+ 245.0.NN (mem.util.cached): value 109984
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0208
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.18
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.090000004
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 40.360001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.4499998
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:37.000 245.0.NN (kernel.all.cpu.user): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0041
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99180001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99580002
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 27.6
+ 245.0.NN (kernel.all.intr): value 28.200001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 17332
+ 245.0.NN (mem.util.used): value 229004
+ 245.0.NN (mem.util.bufmem): value 42292
+ 245.0.NN (mem.util.cached): value 109992
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0071999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 18.67
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:42.000 245.0.NN (kernel.all.cpu.user): value 0.0038000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99620003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0035999999
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9964
+ inst [1 or "cpu1"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 28.4
+ 245.0.NN (kernel.all.intr): value 26.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 57.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 17284
+ 245.0.NN (mem.util.used): value 229052
+ 245.0.NN (mem.util.bufmem): value 42292
+ 245.0.NN (mem.util.cached): value 110000
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:47.000 245.0.NN (kernel.all.cpu.user): value 0.003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9939
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9939
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 26.799999
+ 245.0.NN (kernel.all.intr): value 25.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 17288
+ 245.0.NN (mem.util.used): value 229048
+ 245.0.NN (mem.util.bufmem): value 42300
+ 245.0.NN (mem.util.cached): value 110008
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:52.000 245.0.NN (kernel.all.cpu.user): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99409997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0038999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99610001
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 27.6
+ 245.0.NN (kernel.all.intr): value 27
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 57.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 17260
+ 245.0.NN (mem.util.used): value 229076
+ 245.0.NN (mem.util.bufmem): value 42308
+ 245.0.NN (mem.util.cached): value 110004
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:51:57.000 245.0.NN (kernel.all.cpu.user): value 0.003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9939
+ inst [1 or "cpu1"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 26
+ 245.0.NN (kernel.all.intr): value 25.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 17228
+ 245.0.NN (mem.util.used): value 229108
+ 245.0.NN (mem.util.bufmem): value 42308
+ 245.0.NN (mem.util.cached): value 110020
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.059999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:02.000 245.0.NN (kernel.all.cpu.user): value 0.0041
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99190003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0062000002
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99379998
+ inst [1 or "cpu1"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 27.799999
+ 245.0.NN (kernel.all.intr): value 27.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.8
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 12.8
+ 245.0.NN (disk.all.total_bytes): value 12.8
+ 245.0.NN (mem.util.free): value 17228
+ 245.0.NN (mem.util.used): value 229108
+ 245.0.NN (mem.util.bufmem): value 42316
+ 245.0.NN (mem.util.cached): value 110028
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0063999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 42.669998
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:07.000 245.0.NN (kernel.all.cpu.user): value 0.0041
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99290001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99580002
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 28
+ 245.0.NN (kernel.all.intr): value 28.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.5999999
+ 245.0.NN (mem.vmstat.pgfault): value 6.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 5.5999999
+ 245.0.NN (disk.all.total_bytes): value 5.5999999
+ 245.0.NN (mem.util.free): value 17228
+ 245.0.NN (mem.util.used): value 229108
+ 245.0.NN (mem.util.bufmem): value 42324
+ 245.0.NN (mem.util.cached): value 110028
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0071999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:12.000 245.0.NN (kernel.all.cpu.user): value 0.0038000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99620003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0054000001
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0018
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9928
+ inst [1 or "cpu1"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 28.799999
+ 245.0.NN (kernel.all.intr): value 28.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 58.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 17184
+ 245.0.NN (mem.util.used): value 229152
+ 245.0.NN (mem.util.bufmem): value 42324
+ 245.0.NN (mem.util.cached): value 110044
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.029999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:17.000 245.0.NN (kernel.all.cpu.user): value 0.003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99190003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9939
+ inst [1 or "cpu1"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 31
+ 245.0.NN (kernel.all.intr): value 29.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 17168
+ 245.0.NN (mem.util.used): value 229168
+ 245.0.NN (mem.util.bufmem): value 42332
+ 245.0.NN (mem.util.cached): value 110048
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.5999999
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.23999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.18000001
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:22.000 245.0.NN (kernel.all.cpu.user): value 0.0041
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99290001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0062000002
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99379998
+ inst [1 or "cpu1"] value 0.98799998
+ 245.0.NN (kernel.all.pswitch): value 28.799999
+ 245.0.NN (kernel.all.intr): value 27.200001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 17092
+ 245.0.NN (mem.util.used): value 229244
+ 245.0.NN (mem.util.bufmem): value 42340
+ 245.0.NN (mem.util.cached): value 110056
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:27.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0059000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99019998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0038000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99620003
+ inst [1 or "cpu1"] value 0.986
+ 245.0.NN (kernel.all.pswitch): value 29.4
+ 245.0.NN (kernel.all.intr): value 28.200001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 54
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 17108
+ 245.0.NN (mem.util.used): value 229228
+ 245.0.NN (mem.util.bufmem): value 42348
+ 245.0.NN (mem.util.cached): value 110064
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.012
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 30
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 30
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.059999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:32.000 245.0.NN (kernel.all.cpu.user): value 0.0041
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0071
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9867
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.014
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99379998
+ inst [1 or "cpu1"] value 0.98000002
+ 245.0.NN (kernel.all.pswitch): value 29
+ 245.0.NN (kernel.all.intr): value 27.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 62.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 17108
+ 245.0.NN (mem.util.used): value 229228
+ 245.0.NN (mem.util.bufmem): value 42356
+ 245.0.NN (mem.util.cached): value 110072
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0144
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 36
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 36
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:37.000 245.0.NN (kernel.all.cpu.user): value 0.0041
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0051000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98979998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0099999998
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99580002
+ inst [1 or "cpu1"] value 0.986
+ 245.0.NN (kernel.all.pswitch): value 29.200001
+ 245.0.NN (kernel.all.intr): value 28.200001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.8
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 12.8
+ 245.0.NN (disk.all.total_bytes): value 12.8
+ 245.0.NN (mem.util.free): value 17064
+ 245.0.NN (mem.util.used): value 229272
+ 245.0.NN (mem.util.bufmem): value 42364
+ 245.0.NN (mem.util.cached): value 110080
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0136
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 32
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 18
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 17
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:42.000 245.0.NN (kernel.all.cpu.user): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0051000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99089998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99589998
+ inst [1 or "cpu1"] value 0.98400003
+ 245.0.NN (kernel.all.pswitch): value 28.799999
+ 245.0.NN (kernel.all.intr): value 28.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.5999999
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 5.5999999
+ 245.0.NN (disk.all.total_bytes): value 5.5999999
+ 245.0.NN (mem.util.free): value 17080
+ 245.0.NN (mem.util.used): value 229256
+ 245.0.NN (mem.util.bufmem): value 42372
+ 245.0.NN (mem.util.cached): value 110088
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0152
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 22
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 19
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:47.000 245.0.NN (kernel.all.cpu.user): value 0.0038000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0019
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0038000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99049997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0054000001
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0018
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9928
+ inst [1 or "cpu1"] value 0.98799998
+ 245.0.NN (kernel.all.pswitch): value 30.4
+ 245.0.NN (kernel.all.intr): value 29.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 54
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 17032
+ 245.0.NN (mem.util.used): value 229304
+ 245.0.NN (mem.util.bufmem): value 42380
+ 245.0.NN (mem.util.cached): value 110092
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0071999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 17.33
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:52.000 245.0.NN (kernel.all.cpu.user): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9939
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99580002
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 29.6
+ 245.0.NN (kernel.all.intr): value 28
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 9.6000004
+ 245.0.NN (mem.vmstat.pgfault): value 9.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 9.6000004
+ 245.0.NN (disk.all.total_bytes): value 9.6000004
+ 245.0.NN (mem.util.free): value 17032
+ 245.0.NN (mem.util.used): value 229304
+ 245.0.NN (mem.util.bufmem): value 42388
+ 245.0.NN (mem.util.cached): value 110100
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 32
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.3299999
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:52:57.000 245.0.NN (kernel.all.cpu.user): value 0.0038999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0029
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99220002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0057000001
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0019
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99229997
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 34.200001
+ 245.0.NN (kernel.all.intr): value 32
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 54.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 8.8000002
+ 245.0.NN (disk.all.total_bytes): value 8.8000002
+ 245.0.NN (mem.util.free): value 17020
+ 245.0.NN (mem.util.used): value 229316
+ 245.0.NN (mem.util.bufmem): value 42396
+ 245.0.NN (mem.util.cached): value 110100
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 44
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.5999999
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.23999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.20999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:02.000 245.0.NN (kernel.all.cpu.user): value 0.0051000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9939
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0062000002
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99379998
+ inst [1 or "cpu1"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 25.799999
+ 245.0.NN (kernel.all.intr): value 26.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 17020
+ 245.0.NN (mem.util.used): value 229316
+ 245.0.NN (mem.util.bufmem): value 42396
+ 245.0.NN (mem.util.cached): value 110116
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.039999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:07.000 245.0.NN (kernel.all.cpu.user): value 0.0031000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99489999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0041999999
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99580002
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 29.6
+ 245.0.NN (kernel.all.intr): value 29.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 6.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 48.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 16972
+ 245.0.NN (mem.util.used): value 229364
+ 245.0.NN (mem.util.bufmem): value 42404
+ 245.0.NN (mem.util.cached): value 110124
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:12.000 245.0.NN (kernel.all.cpu.user): value 0.003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99190003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0062000002
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99379998
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 27.6
+ 245.0.NN (kernel.all.intr): value 26.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.8
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 12.8
+ 245.0.NN (disk.all.total_bytes): value 12.8
+ 245.0.NN (mem.util.free): value 17020
+ 245.0.NN (mem.util.used): value 229316
+ 245.0.NN (mem.util.bufmem): value 42412
+ 245.0.NN (mem.util.cached): value 110128
+ 245.0.NN (mem.util.swapFree): value 450196
+ 245.0.NN (mem.util.swapCached): value 6092
+ 245.0.NN (vfs.dentry.count): value 15658
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12895
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0088
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 42.669998
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.67
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.67
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:17.000 245.0.NN (kernel.all.cpu.user): value 0.031500001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.031500001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0057000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93129998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.036400001
+ inst [1 or "cpu1"] value 0.026000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0219
+ inst [1 or "cpu1"] value 0.044
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.014
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94169998
+ inst [1 or "cpu1"] value 0.91600001
+ 245.0.NN (kernel.all.pswitch): value 322.20001
+ 245.0.NN (kernel.all.intr): value 200.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 1.2
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 18.4
+ 245.0.NN (mem.vmstat.pgfault): value 9402.7998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 3169
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.4000001
+ 245.0.NN (disk.all.total): value 3.4000001
+ 245.0.NN (disk.all.write_bytes): value 18.4
+ 245.0.NN (disk.all.total_bytes): value 18.4
+ 245.0.NN (mem.util.free): value 16360
+ 245.0.NN (mem.util.used): value 229976
+ 245.0.NN (mem.util.bufmem): value 42224
+ 245.0.NN (mem.util.cached): value 109700
+ 245.0.NN (mem.util.swapFree): value 450560
+ 245.0.NN (mem.util.swapCached): value 5652
+ 245.0.NN (vfs.dentry.count): value 15043
+ 245.0.NN (vfs.files.count): value 2240
+ 245.0.NN (vfs.inodes.count): value 12472
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 260
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.4000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 18.4
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 18.4
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.036800001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.82
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.14
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 42.119999
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.82
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 6.1999998
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 7.8000002
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.97000003
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.08
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:22.000 245.0.NN (kernel.all.cpu.user): value 0.080399998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.1075
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0141
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.79699999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.085000001
+ inst [1 or "cpu1"] value 0.075999998
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.1012
+ inst [1 or "cpu1"] value 0.114
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.022
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.80769998
+ inst [1 or "cpu1"] value 0.78799999
+ 245.0.NN (kernel.all.pswitch): value 961.79999
+ 245.0.NN (kernel.all.intr): value 562.59998
+ 245.0.NN (swap.pagesin): value 2.5999999
+ 245.0.NN (swap.pagesout): value 49.200001
+ 245.0.NN (mem.vmstat.pgpgin): value 11.2
+ 245.0.NN (mem.vmstat.pgpgout): value 203.2
+ 245.0.NN (mem.vmstat.pgfault): value 29473
+ 245.0.NN (mem.vmstat.pgmajfault): value 1.8
+ 245.0.NN (mem.vmstat.pgfree): value 10307
+ 245.0.NN (disk.all.read): value 2.8
+ 245.0.NN (disk.all.read_bytes): value 11.2
+ 245.0.NN (disk.all.write): value 5.4000001
+ 245.0.NN (disk.all.total): value 8.1999998
+ 245.0.NN (disk.all.write_bytes): value 203.2
+ 245.0.NN (disk.all.total_bytes): value 214.39999
+ 245.0.NN (mem.util.free): value 20352
+ 245.0.NN (mem.util.used): value 225984
+ 245.0.NN (mem.util.bufmem): value 41160
+ 245.0.NN (mem.util.cached): value 109556
+ 245.0.NN (mem.util.swapFree): value 450540
+ 245.0.NN (mem.util.swapCached): value 5096
+ 245.0.NN (vfs.dentry.count): value 13653
+ 245.0.NN (vfs.files.count): value 2208
+ 245.0.NN (vfs.inodes.count): value 12137
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.1999998
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 203.2
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 214.39999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.060800001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 52.290001
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.46000001
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 55.900002
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.4099998
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 18.799999
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 19.200001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.74
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.8800001
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:27.000 245.0.NN (kernel.all.cpu.user): value 0.0059000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98909998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0078999996
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9921
+ inst [1 or "cpu1"] value 0.98799998
+ 245.0.NN (kernel.all.pswitch): value 69.800003
+ 245.0.NN (kernel.all.intr): value 34.599998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.5999999
+ 245.0.NN (mem.vmstat.pgfault): value 8.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 57.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 5.5999999
+ 245.0.NN (disk.all.total_bytes): value 5.5999999
+ 245.0.NN (mem.util.free): value 20368
+ 245.0.NN (mem.util.used): value 225968
+ 245.0.NN (mem.util.bufmem): value 41168
+ 245.0.NN (mem.util.cached): value 109556
+ 245.0.NN (mem.util.swapFree): value 450540
+ 245.0.NN (mem.util.swapCached): value 5096
+ 245.0.NN (vfs.dentry.count): value 13653
+ 245.0.NN (vfs.files.count): value 2208
+ 245.0.NN (vfs.inodes.count): value 12137
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0063999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 15
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:32.000 245.0.NN (kernel.all.cpu.user): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.995
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99589998
+ inst [1 or "cpu1"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 25.6
+ 245.0.NN (kernel.all.intr): value 24.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 20384
+ 245.0.NN (mem.util.used): value 225952
+ 245.0.NN (mem.util.bufmem): value 41168
+ 245.0.NN (mem.util.cached): value 109564
+ 245.0.NN (mem.util.swapFree): value 450540
+ 245.0.NN (mem.util.swapCached): value 5096
+ 245.0.NN (vfs.dentry.count): value 13653
+ 245.0.NN (vfs.files.count): value 2208
+ 245.0.NN (vfs.inodes.count): value 12137
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:37.000 245.0.NN (kernel.all.cpu.user): value 0.003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99400002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99800003
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 38.200001
+ 245.0.NN (kernel.all.intr): value 32.400002
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 6.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 20400
+ 245.0.NN (mem.util.used): value 225936
+ 245.0.NN (mem.util.bufmem): value 41176
+ 245.0.NN (mem.util.cached): value 109568
+ 245.0.NN (mem.util.swapFree): value 450540
+ 245.0.NN (mem.util.swapCached): value 5096
+ 245.0.NN (vfs.dentry.count): value 13654
+ 245.0.NN (vfs.files.count): value 2208
+ 245.0.NN (vfs.inodes.count): value 12137
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 5
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.8
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.38
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.34
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:42.000 245.0.NN (kernel.all.cpu.user): value 0.003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99599999
+ inst [1 or "cpu1"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 35.799999
+ 245.0.NN (kernel.all.intr): value 29.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 9.6000004
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 20324
+ 245.0.NN (mem.util.used): value 226012
+ 245.0.NN (mem.util.bufmem): value 41176
+ 245.0.NN (mem.util.cached): value 109576
+ 245.0.NN (mem.util.swapFree): value 450540
+ 245.0.NN (mem.util.swapCached): value 5096
+ 245.0.NN (vfs.dentry.count): value 13654
+ 245.0.NN (vfs.files.count): value 2208
+ 245.0.NN (vfs.inodes.count): value 12137
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 4.1999998
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.5999999
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.34999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.34
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+
+05:53:47.000 245.0.NN (kernel.all.cpu.user): value 0.028000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.030999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.93900001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.034000002
+ inst [1 or "cpu1"] value 0.02
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.017999999
+ inst [1 or "cpu1"] value 0.046
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94800001
+ inst [1 or "cpu1"] value 0.93000001
+ 245.0.NN (kernel.all.pswitch): value 337.60001
+ 245.0.NN (kernel.all.intr): value 177.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 14.4
+ 245.0.NN (mem.vmstat.pgfault): value 9623.7998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 3299.2
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 14.4
+ 245.0.NN (disk.all.total_bytes): value 14.4
+ 245.0.NN (mem.util.free): value 20180
+ 245.0.NN (mem.util.used): value 226156
+ 245.0.NN (mem.util.bufmem): value 41184
+ 245.0.NN (mem.util.cached): value 109584
+ 245.0.NN (mem.util.swapFree): value 450540
+ 245.0.NN (mem.util.swapCached): value 5096
+ 245.0.NN (vfs.dentry.count): value 13656
+ 245.0.NN (vfs.files.count): value 2176
+ 245.0.NN (vfs.inodes.count): value 12137
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 256
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.4
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.4
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0088
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 28.799999
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 7.8000002
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 9.3999996
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.08
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.23
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
diff --git a/qa/370.out.4 b/qa/370.out.4
new file mode 100644
index 0000000..89cca56
--- /dev/null
+++ b/qa/370.out.4
@@ -0,0 +1,9784 @@
+QA output created by 370
+check user CPU time ...
+
+check timestamps ...
+
+check sys CPU time ...
+
+check user disk iops ...
+
+check user disk write thruput ...
+
+full dump ...
+Note: timezone set to local timezone of host "smash" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host smash
+ commencing Tue Sep 25 00:05:07.000 2012
+ ending Tue Sep 25 00:07:57.000 2012
+
+00:05:07.000 245.0.NN (hinv.ncpu): value 8
+ 245.0.NN (kernel.all.cpu.user): value 0.0038000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0070000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9892
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.014
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.017999999
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97979999
+ inst [1 or "cpu1"] value 0.98000002
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.98000002
+ inst [4 or "cpu4"] value 0.98400003
+ inst [5 or "cpu5"] value 0.99400002
+ inst [6 or "cpu6"] value 0.99800003
+ inst [7 or "cpu7"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 1491.73
+ 245.0.NN (kernel.all.intr): value 390.51999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.0300002
+ 245.0.NN (mem.vmstat.pgfault): value 431.85001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 476.81
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.21
+ 245.0.NN (disk.all.total): value 1.21
+ 245.0.NN (disk.all.write_bytes): value 8.0649996
+ 245.0.NN (disk.all.total_bytes): value 8.0649996
+ 245.0.NN (mem.util.free): value 14629124
+ 245.0.NN (mem.util.used): value 9906612
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7165084
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900768
+ 245.0.NN (vfs.files.count): value 12448
+ 245.0.NN (vfs.inodes.count): value 300638
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 537
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.11
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.0099999998
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.60000002
+ inst [1 or "diskdev8-17"] value 0.40000001
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 4.0300002
+ inst [1 or "diskdev8-17"] value 4.0300002
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.0300002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 4.0300002
+ inst [1 or "diskdev8-17"] value 4.0300002
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.0300002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0055999998
+ inst [1 or "diskdev8-17"] value 0.0027999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0055999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 13.33
+ inst [1 or "diskdev8-17"] value 20
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 20
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 9.3299999
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 9.3299999
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.81
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.15000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.0099999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:12.000 245.0.NN (kernel.all.cpu.user): value 0.0052999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.003
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0013
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99049997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.022
+ inst [1 or "cpu1"] value 0.0080000004
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0.0080000004
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0099999998
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96990001
+ inst [1 or "cpu1"] value 0.98400003
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99199998
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 0.98799998
+ inst [7 or "cpu7"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 761.32001
+ 245.0.NN (kernel.all.intr): value 327.66
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 18.040001
+ 245.0.NN (mem.vmstat.pgfault): value 1249.9
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 970.53998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 8.2200003
+ 245.0.NN (disk.all.total): value 8.2200003
+ 245.0.NN (disk.all.write_bytes): value 36.275002
+ 245.0.NN (disk.all.total_bytes): value 36.275002
+ 245.0.NN (mem.util.free): value 14634408
+ 245.0.NN (mem.util.used): value 9901328
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164720
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900768
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300555
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.1
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.0099999998
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 3.4100001
+ inst [1 or "diskdev8-17"] value 3.01
+ inst [2 or "diskdev8-0"] value 0.80000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.60000002
+ inst [5 or "diskdev253-0"] value 1.6
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.60000002
+ inst [8 or "diskdev253-3"] value 1.8
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 14.83
+ inst [1 or "diskdev8-17"] value 14.83
+ inst [2 or "diskdev8-0"] value 3.3050001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.3050001
+ inst [5 or "diskdev253-0"] value 6.415
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.3050001
+ inst [8 or "diskdev253-3"] value 8.415
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 14.83
+ inst [1 or "diskdev8-17"] value 14.83
+ inst [2 or "diskdev8-0"] value 3.3050001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.3050001
+ inst [5 or "diskdev253-0"] value 6.415
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.3050001
+ inst [8 or "diskdev253-3"] value 8.415
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0166
+ inst [1 or "diskdev8-17"] value 0.0060000001
+ inst [2 or "diskdev8-0"] value 0.00019999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00019999999
+ inst [5 or "diskdev253-0"] value 0.0108
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00019999999
+ inst [8 or "diskdev253-3"] value 0.0057999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.71
+ inst [1 or "diskdev8-17"] value 9.8699999
+ inst [2 or "diskdev8-0"] value 8.25
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 11
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 11
+ inst [8 or "diskdev253-3"] value 9.3299999
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.02
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 5.29
+ inst [1 or "diskdev8-17"] value 2.47
+ inst [2 or "diskdev8-0"] value 0.25
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.33000001
+ inst [5 or "diskdev253-0"] value 7.25
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.33000001
+ inst [8 or "diskdev253-3"] value 3.78
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 4.8800001
+ inst [1 or "diskdev8-17"] value 2
+ inst [2 or "diskdev8-0"] value 0.25
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.33000001
+ inst [5 or "diskdev253-0"] value 6.75
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.33000001
+ inst [8 or "diskdev253-3"] value 3.22
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 2.4000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0.0099999998
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0.0099999998
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:17.000 245.0.NN (kernel.all.cpu.user): value 0.0099999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0055
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0015
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98299998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.030099999
+ inst [1 or "cpu1"] value 0.0261
+ inst [2 or "cpu2"] value 0.0060000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.016000001
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0080000004
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.014
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.95389998
+ inst [1 or "cpu1"] value 0.96789998
+ inst [2 or "cpu2"] value 0.99199998
+ inst [3 or "cpu3"] value 0.98989999
+ inst [4 or "cpu4"] value 0.99000001
+ inst [5 or "cpu5"] value 0.99199998
+ inst [6 or "cpu6"] value 0.98199999
+ inst [7 or "cpu7"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 1370.74
+ 245.0.NN (kernel.all.intr): value 452.10001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 19.24
+ 245.0.NN (mem.vmstat.pgfault): value 1810.22
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1122.4399
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 6.6100001
+ 245.0.NN (disk.all.total): value 6.6100001
+ 245.0.NN (disk.all.write_bytes): value 38.275002
+ 245.0.NN (disk.all.total_bytes): value 38.275002
+ 245.0.NN (mem.util.free): value 14630980
+ 245.0.NN (mem.util.used): value 9904756
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164752
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900984
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300775
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.090000004
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2.2
+ inst [1 or "diskdev8-17"] value 1.8
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3.8099999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 19.139999
+ inst [1 or "diskdev8-17"] value 19.139999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 15.23
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 3.9100001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 19.139999
+ inst [1 or "diskdev8-17"] value 19.139999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 15.23
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 3.9100001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0208
+ inst [1 or "diskdev8-17"] value 0.0049999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0136
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0071999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 17.360001
+ inst [1 or "diskdev8-17"] value 21.219999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 19.5
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.02
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.02
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 9.7299995
+ inst [1 or "diskdev8-17"] value 3.1099999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 5
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 18
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 9.4499998
+ inst [1 or "diskdev8-17"] value 2.78
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3.5799999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 18
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0.60000002
+ inst [1 or "eth0"] value 3.6099999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0.60000002
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0.050000001
+ inst [1 or "eth0"] value 0.25999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0.050000001
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:22.000 245.0.NN (kernel.all.cpu.user): value 0.016100001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0074999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0015
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97490001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.040199999
+ inst [1 or "cpu1"] value 0.030300001
+ inst [2 or "cpu2"] value 0.032099999
+ inst [3 or "cpu3"] value 0.016100001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0.020199999
+ inst [2 or "cpu2"] value 0.0060000001
+ inst [3 or "cpu3"] value 0.0121
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.012
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94770002
+ inst [1 or "cpu1"] value 0.94950002
+ inst [2 or "cpu2"] value 0.9619
+ inst [3 or "cpu3"] value 0.97180003
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99199998
+ inst [6 or "cpu6"] value 0.986
+ inst [7 or "cpu7"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 1795.5699
+ 245.0.NN (kernel.all.intr): value 749.5
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 46.080002
+ 245.0.NN (mem.vmstat.pgfault): value 639.64001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1319.72
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 13.48
+ 245.0.NN (disk.all.total): value 13.48
+ 245.0.NN (disk.all.write_bytes): value 92.355003
+ 245.0.NN (disk.all.total_bytes): value 92.355003
+ 245.0.NN (mem.util.free): value 14629324
+ 245.0.NN (mem.util.used): value 9906412
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164760
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900984
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300772
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.079999998
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 5.8400002
+ inst [1 or "diskdev8-17"] value 5.4299998
+ inst [2 or "diskdev8-0"] value 0.80000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.40000001
+ inst [5 or "diskdev253-0"] value 5.0300002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.40000001
+ inst [8 or "diskdev253-3"] value 1.41
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 26.055
+ inst [1 or "diskdev8-17"] value 26.055
+ inst [2 or "diskdev8-0"] value 20.120001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 20.120001
+ inst [5 or "diskdev253-0"] value 20.120001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 20.120001
+ inst [8 or "diskdev253-3"] value 5.9349999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 26.055
+ inst [1 or "diskdev8-17"] value 26.055
+ inst [2 or "diskdev8-0"] value 20.120001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 20.120001
+ inst [5 or "diskdev253-0"] value 20.120001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 20.120001
+ inst [8 or "diskdev253-3"] value 5.9349999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0217
+ inst [1 or "diskdev8-17"] value 0.0057999999
+ inst [2 or "diskdev8-0"] value 0.0048000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0026
+ inst [5 or "diskdev253-0"] value 0.0125
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0048000002
+ inst [8 or "diskdev253-3"] value 0.0093
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.9300003
+ inst [1 or "diskdev8-17"] value 9.5900002
+ inst [2 or "diskdev8-0"] value 50
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 100
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 100
+ inst [8 or "diskdev253-3"] value 8.4300003
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.029999999
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.02
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 5
+ inst [1 or "diskdev8-17"] value 2.4400001
+ inst [2 or "diskdev8-0"] value 6
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 6.5
+ inst [5 or "diskdev253-0"] value 4.2800002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 12
+ inst [8 or "diskdev253-3"] value 7
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 3.72
+ inst [1 or "diskdev8-17"] value 1.0700001
+ inst [2 or "diskdev8-0"] value 6
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 6.5
+ inst [5 or "diskdev253-0"] value 2.48
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 12
+ inst [8 or "diskdev253-3"] value 6.5700002
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 4.02
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.41
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.14
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:27.000 245.0.NN (kernel.all.cpu.user): value 0.0018
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0015
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99669999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99000001
+ inst [1 or "cpu1"] value 0.99199998
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99599999
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 466.39999
+ 245.0.NN (kernel.all.intr): value 170.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.4
+ 245.0.NN (mem.vmstat.pgfault): value 11.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 111.8
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 6.8000002
+ 245.0.NN (disk.all.total): value 6.8000002
+ 245.0.NN (disk.all.write_bytes): value 24.799999
+ 245.0.NN (disk.all.total_bytes): value 24.799999
+ 245.0.NN (mem.util.free): value 14629696
+ 245.0.NN (mem.util.used): value 9906040
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164772
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900984
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300774
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.079999998
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2
+ inst [1 or "diskdev8-17"] value 1.6
+ inst [2 or "diskdev8-0"] value 1.6
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.6
+ inst [8 or "diskdev253-3"] value 1.6
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 6.9000001
+ inst [1 or "diskdev8-17"] value 6.9000001
+ inst [2 or "diskdev8-0"] value 5.5
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 5.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 5.5
+ inst [8 or "diskdev253-3"] value 6.9000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 6.9000001
+ inst [1 or "diskdev8-17"] value 6.9000001
+ inst [2 or "diskdev8-0"] value 5.5
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 5.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 5.5
+ inst [8 or "diskdev253-3"] value 6.9000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0106
+ inst [1 or "diskdev8-17"] value 0.0046000001
+ inst [2 or "diskdev8-0"] value 0.0034
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0034
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0034
+ inst [8 or "diskdev253-3"] value 0.0106
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 6.9000001
+ inst [1 or "diskdev8-17"] value 8.6199999
+ inst [2 or "diskdev8-0"] value 6.8800001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 11
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 6.8800001
+ inst [8 or "diskdev253-3"] value 8.6199999
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 5.5
+ inst [1 or "diskdev8-17"] value 3.1199999
+ inst [2 or "diskdev8-0"] value 2.25
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.5999999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 2.25
+ inst [8 or "diskdev253-3"] value 6.8800001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 5.3000002
+ inst [1 or "diskdev8-17"] value 2.8699999
+ inst [2 or "diskdev8-0"] value 2.1199999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.4000001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 2.1199999
+ inst [8 or "diskdev253-3"] value 6.6199999
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.5999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0.2
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.27000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0.0099999998
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:32.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0018
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99620003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99000001
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99400002
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 0.99800003
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 548.39001
+ 245.0.NN (kernel.all.intr): value 214.25999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 6.02
+ 245.0.NN (mem.vmstat.pgfault): value 162.85001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 180.32001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.01
+ 245.0.NN (disk.all.total): value 2.01
+ 245.0.NN (disk.all.write_bytes): value 12.05
+ 245.0.NN (disk.all.total_bytes): value 12.05
+ 245.0.NN (mem.util.free): value 14629684
+ 245.0.NN (mem.util.used): value 9906052
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164816
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900984
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300774
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.07
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.80000001
+ inst [1 or "diskdev8-17"] value 0.60000002
+ inst [2 or "diskdev8-0"] value 0.40000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.2
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.2
+ inst [8 or "diskdev253-3"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 3.615
+ inst [1 or "diskdev8-17"] value 3.615
+ inst [2 or "diskdev8-0"] value 2.4100001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 2.4100001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 2.4100001
+ inst [8 or "diskdev253-3"] value 3.615
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 3.615
+ inst [1 or "diskdev8-17"] value 3.615
+ inst [2 or "diskdev8-0"] value 2.4100001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 2.4100001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 2.4100001
+ inst [8 or "diskdev253-3"] value 3.615
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0070000002
+ inst [1 or "diskdev8-17"] value 0.003
+ inst [2 or "diskdev8-0"] value 0.00060000003
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00060000003
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00060000003
+ inst [8 or "diskdev253-3"] value 0.0070000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 9
+ inst [1 or "diskdev8-17"] value 12
+ inst [2 or "diskdev8-0"] value 12
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 24
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 24
+ inst [8 or "diskdev253-3"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 9
+ inst [1 or "diskdev8-17"] value 5.3299999
+ inst [2 or "diskdev8-0"] value 1.5
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3
+ inst [8 or "diskdev253-3"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 8.75
+ inst [1 or "diskdev8-17"] value 5
+ inst [2 or "diskdev8-0"] value 1.5
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3
+ inst [8 or "diskdev253-3"] value 11.67
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 4.2199998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.34999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.029999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.13
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.029999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:37.000 245.0.NN (kernel.all.cpu.user): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0038000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99000001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.022
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0099999998
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0.0040000002
+ inst [7 or "cpu7"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98799998
+ inst [1 or "cpu1"] value 0.97189999
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.98409998
+ inst [5 or "cpu5"] value 0.99199998
+ inst [6 or "cpu6"] value 0.99000001
+ inst [7 or "cpu7"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 746.59003
+ 245.0.NN (kernel.all.intr): value 467.26999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.6099999
+ 245.0.NN (mem.vmstat.pgfault): value 3492.77
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1485.54
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.2
+ 245.0.NN (disk.all.total): value 1.2
+ 245.0.NN (disk.all.write_bytes): value 5.2199998
+ 245.0.NN (disk.all.total_bytes): value 5.2199998
+ 245.0.NN (mem.util.free): value 14629648
+ 245.0.NN (mem.util.used): value 9906088
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164824
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300782
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 537
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.07
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.60000002
+ inst [1 or "diskdev8-17"] value 0.40000001
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 2.6099999
+ inst [1 or "diskdev8-17"] value 2.6099999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.6099999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 2.6099999
+ inst [1 or "diskdev8-17"] value 2.6099999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.6099999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0070000002
+ inst [1 or "diskdev8-17"] value 0.0027999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0070000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.6700001
+ inst [1 or "diskdev8-17"] value 13
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 11.67
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 17.5
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 11.67
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 17.5
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.4100001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.25999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.029999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:42.000 245.0.NN (kernel.all.cpu.user): value 0.0048000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99299997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0099999998
+ inst [2 or "cpu2"] value 0.022
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.986
+ inst [1 or "cpu1"] value 0.986
+ inst [2 or "cpu2"] value 0.97799999
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99400002
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 571
+ 245.0.NN (kernel.all.intr): value 231
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 15.4
+ 245.0.NN (mem.vmstat.pgfault): value 627.40002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 915.59998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 7
+ 245.0.NN (disk.all.total): value 7
+ 245.0.NN (disk.all.write_bytes): value 30.799999
+ 245.0.NN (disk.all.total_bytes): value 30.799999
+ 245.0.NN (mem.util.free): value 14628492
+ 245.0.NN (mem.util.used): value 9907244
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164840
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900991
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300782
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 538
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1
+ inst [1 or "diskdev8-17"] value 0.80000001
+ inst [2 or "diskdev8-0"] value 2.5999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 2.4000001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 2.5999999
+ inst [8 or "diskdev253-3"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 5.5
+ inst [1 or "diskdev8-17"] value 5.5
+ inst [2 or "diskdev8-0"] value 9.8999996
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 9.8999996
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 9.8999996
+ inst [8 or "diskdev253-3"] value 5.5
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 5.5
+ inst [1 or "diskdev8-17"] value 5.5
+ inst [2 or "diskdev8-0"] value 9.8999996
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 9.8999996
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 9.8999996
+ inst [8 or "diskdev253-3"] value 5.5
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0071999999
+ inst [1 or "diskdev8-17"] value 0.003
+ inst [2 or "diskdev8-0"] value 0.00060000003
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00060000003
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00060000003
+ inst [8 or "diskdev253-3"] value 0.0071999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 11
+ inst [1 or "diskdev8-17"] value 13.75
+ inst [2 or "diskdev8-0"] value 7.6199999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 8.25
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 7.6199999
+ inst [8 or "diskdev253-3"] value 13.75
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 7.1999998
+ inst [1 or "diskdev8-17"] value 3.75
+ inst [2 or "diskdev8-0"] value 0.62
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.67000002
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.62
+ inst [8 or "diskdev253-3"] value 9
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 7.1999998
+ inst [1 or "diskdev8-17"] value 3.75
+ inst [2 or "diskdev8-0"] value 0.23
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.25
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.23
+ inst [8 or "diskdev253-3"] value 9
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.5999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.28
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:47.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0035000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99349999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.022
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99599999
+ inst [1 or "cpu1"] value 0.99199998
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.972
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 0.99199998
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 527.31
+ 245.0.NN (kernel.all.intr): value 205.22
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 19.68
+ 245.0.NN (mem.vmstat.pgfault): value 9.04
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 127.31
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 6.4299998
+ 245.0.NN (disk.all.total): value 6.4299998
+ 245.0.NN (disk.all.write_bytes): value 39.154999
+ 245.0.NN (disk.all.total_bytes): value 39.154999
+ 245.0.NN (mem.util.free): value 14629100
+ 245.0.NN (mem.util.used): value 9906636
+ 245.0.NN (mem.util.bufmem): value 386344
+ 245.0.NN (mem.util.cached): value 7164852
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900991
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300782
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 538
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2.4100001
+ inst [1 or "diskdev8-17"] value 2.01
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 2.4100001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 1.41
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 19.58
+ inst [1 or "diskdev8-17"] value 19.58
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 9.6400003
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 9.9399996
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 19.58
+ inst [1 or "diskdev8-17"] value 19.58
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 9.6400003
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 9.9399996
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0145
+ inst [1 or "diskdev8-17"] value 0.0057999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0068000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0076000001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 16.25
+ inst [1 or "diskdev8-17"] value 19.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14.14
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.02
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 6.25
+ inst [1 or "diskdev8-17"] value 3.2
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3.0799999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 5.4299998
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 6
+ inst [1 or "diskdev8-17"] value 2.9000001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 2.8299999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 5.4299998
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.090000004
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:52.000 245.0.NN (kernel.all.cpu.user): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0077999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00079999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98750001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.017999999
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.048
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98390001
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.93400002
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99400002
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 689.56
+ 245.0.NN (kernel.all.intr): value 293.98001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 9.6400003
+ 245.0.NN (mem.vmstat.pgfault): value 6.6300001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 153.82001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.6099999
+ 245.0.NN (disk.all.total): value 3.6099999
+ 245.0.NN (disk.all.write_bytes): value 19.48
+ 245.0.NN (disk.all.total_bytes): value 19.48
+ 245.0.NN (mem.util.free): value 14629256
+ 245.0.NN (mem.util.used): value 9906480
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164860
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900991
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300782
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 538
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.61
+ inst [1 or "diskdev8-17"] value 1.2
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 1.2
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 9.7399998
+ inst [1 or "diskdev8-17"] value 9.7399998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 4.8200002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.9200001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 9.7399998
+ inst [1 or "diskdev8-17"] value 9.7399998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 4.8200002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.9200001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0145
+ inst [1 or "diskdev8-17"] value 0.0044
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0057999999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0086000003
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 12.12
+ inst [1 or "diskdev8-17"] value 16.17
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 16.33
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 9
+ inst [1 or "diskdev8-17"] value 3.6700001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 4.8299999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14.33
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 9
+ inst [1 or "diskdev8-17"] value 3.6700001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 4.8299999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14.33
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.079999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:05:57.000 245.0.NN (kernel.all.cpu.user): value 0.0038000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99400002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.02
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96990001
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99599999
+ inst [4 or "cpu4"] value 0.986
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 524.04999
+ 245.0.NN (kernel.all.intr): value 215.03
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 15.83
+ 245.0.NN (mem.vmstat.pgfault): value 138.28
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 293.59
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 6.8099999
+ 245.0.NN (disk.all.total): value 6.8099999
+ 245.0.NN (disk.all.write_bytes): value 31.465
+ 245.0.NN (disk.all.total_bytes): value 31.465
+ 245.0.NN (mem.util.free): value 14629644
+ 245.0.NN (mem.util.used): value 9906092
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164872
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900991
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300782
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 537
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.8
+ inst [1 or "diskdev8-17"] value 1.4
+ inst [2 or "diskdev8-0"] value 2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.4
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.6
+ inst [8 or "diskdev253-3"] value 1.4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 6.1100001
+ inst [1 or "diskdev8-17"] value 6.1100001
+ inst [2 or "diskdev8-0"] value 9.6199999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 9.6199999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 9.6199999
+ inst [8 or "diskdev253-3"] value 6.1100001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 6.1100001
+ inst [1 or "diskdev8-17"] value 6.1100001
+ inst [2 or "diskdev8-0"] value 9.6199999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 9.6199999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 9.6199999
+ inst [8 or "diskdev253-3"] value 6.1100001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0118
+ inst [1 or "diskdev8-17"] value 0.0060000001
+ inst [2 or "diskdev8-0"] value 0.0052
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0052
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0052
+ inst [8 or "diskdev253-3"] value 0.0118
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 6.7800002
+ inst [1 or "diskdev8-17"] value 8.71
+ inst [2 or "diskdev8-0"] value 9.6000004
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 13.71
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 12
+ inst [8 or "diskdev253-3"] value 8.71
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0.0099999998
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0099999998
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0099999998
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 6.7800002
+ inst [1 or "diskdev8-17"] value 4.5700002
+ inst [2 or "diskdev8-0"] value 3
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 4.29
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.8800001
+ inst [8 or "diskdev253-3"] value 8.71
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 6.5599999
+ inst [1 or "diskdev8-17"] value 4.29
+ inst [2 or "diskdev8-0"] value 2.5999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.71
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.25
+ inst [8 or "diskdev253-3"] value 8.4300003
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.1
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:02.000 245.0.NN (kernel.all.cpu.user): value 0.0044999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0027999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00079999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99199998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.017999999
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.014
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.012
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 0.98000002
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.97399998
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 0.99199998
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 595.57001
+ 245.0.NN (kernel.all.intr): value 245.88
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.4499998
+ 245.0.NN (mem.vmstat.pgfault): value 628.77002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 869.62
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 4.23
+ 245.0.NN (disk.all.total): value 4.23
+ 245.0.NN (disk.all.write_bytes): value 17.105
+ 245.0.NN (disk.all.total_bytes): value 17.105
+ 245.0.NN (mem.util.free): value 14628032
+ 245.0.NN (mem.util.used): value 9907704
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164884
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900988
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300778
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.039999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2.01
+ inst [1 or "diskdev8-17"] value 1.61
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.60000002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 1.41
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 8.5500002
+ inst [1 or "diskdev8-17"] value 8.5500002
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 2.415
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 6.1350002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 8.5500002
+ inst [1 or "diskdev8-17"] value 8.5500002
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 2.415
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 6.1350002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0133
+ inst [1 or "diskdev8-17"] value 0.0044
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0063999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0068000001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.5
+ inst [1 or "diskdev8-17"] value 10.62
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 8.71
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 6.5999999
+ inst [1 or "diskdev8-17"] value 2.75
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 10.67
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.8600001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 6.5999999
+ inst [1 or "diskdev8-17"] value 2.75
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 10.67
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.8600001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.8099999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.21
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.64999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.18000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.029999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:07.000 245.0.NN (kernel.all.cpu.user): value 0.0018
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00079999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99519998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98400003
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.98989999
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99199998
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 590.79999
+ 245.0.NN (kernel.all.intr): value 240.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 15.4
+ 245.0.NN (mem.vmstat.pgfault): value 431.79999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 263.20001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 4.1999998
+ 245.0.NN (disk.all.total): value 4.1999998
+ 245.0.NN (disk.all.write_bytes): value 30.799999
+ 245.0.NN (disk.all.total_bytes): value 30.799999
+ 245.0.NN (mem.util.free): value 14628716
+ 245.0.NN (mem.util.used): value 9907020
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164892
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900994
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300784
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.039999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.2
+ inst [1 or "diskdev8-17"] value 0.80000001
+ inst [2 or "diskdev8-0"] value 1
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.80000001
+ inst [5 or "diskdev253-0"] value 0.60000002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 5
+ inst [1 or "diskdev8-17"] value 5
+ inst [2 or "diskdev8-0"] value 10.4
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 10.4
+ inst [5 or "diskdev253-0"] value 2.4000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 10.4
+ inst [8 or "diskdev253-3"] value 2.5999999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 5
+ inst [1 or "diskdev8-17"] value 5
+ inst [2 or "diskdev8-0"] value 10.4
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 10.4
+ inst [5 or "diskdev253-0"] value 2.4000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 10.4
+ inst [8 or "diskdev253-3"] value 2.5999999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0132
+ inst [1 or "diskdev8-17"] value 0.0046000001
+ inst [2 or "diskdev8-0"] value 0.00079999998
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00079999998
+ inst [5 or "diskdev253-0"] value 0.0063999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00079999998
+ inst [8 or "diskdev253-3"] value 0.0068000001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.3299999
+ inst [1 or "diskdev8-17"] value 12.5
+ inst [2 or "diskdev8-0"] value 20.799999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 26
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 20.799999
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 11
+ inst [1 or "diskdev8-17"] value 5.75
+ inst [2 or "diskdev8-0"] value 2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 2.5
+ inst [5 or "diskdev253-0"] value 10.67
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 2.8
+ inst [8 or "diskdev253-3"] value 17
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 11
+ inst [1 or "diskdev8-17"] value 5.75
+ inst [2 or "diskdev8-0"] value 0.80000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1
+ inst [5 or "diskdev253-0"] value 10.67
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.80000001
+ inst [8 or "diskdev253-3"] value 17
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.079999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:12.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0013
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9975
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99400002
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.98799998
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 565.19
+ 245.0.NN (kernel.all.intr): value 200.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.4499998
+ 245.0.NN (mem.vmstat.pgfault): value 8.6499996
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 135.41
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.6199999
+ 245.0.NN (disk.all.total): value 3.6199999
+ 245.0.NN (disk.all.write_bytes): value 16.9
+ 245.0.NN (disk.all.total_bytes): value 16.9
+ 245.0.NN (mem.util.free): value 14628572
+ 245.0.NN (mem.util.used): value 9907164
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164904
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900994
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300784
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.039999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.41
+ inst [1 or "diskdev8-17"] value 1.21
+ inst [2 or "diskdev8-0"] value 0.60000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.40000001
+ inst [5 or "diskdev253-0"] value 0.2
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.40000001
+ inst [8 or "diskdev253-3"] value 1.01
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 6.7399998
+ inst [1 or "diskdev8-17"] value 6.7399998
+ inst [2 or "diskdev8-0"] value 1.71
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.71
+ inst [5 or "diskdev253-0"] value 0.80500001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.71
+ inst [8 or "diskdev253-3"] value 5.9349999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 6.7399998
+ inst [1 or "diskdev8-17"] value 6.7399998
+ inst [2 or "diskdev8-0"] value 1.71
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.71
+ inst [5 or "diskdev253-0"] value 0.80500001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.71
+ inst [8 or "diskdev253-3"] value 5.9349999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0113
+ inst [1 or "diskdev8-17"] value 0.0055999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.00060000003
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0107
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 9.5699997
+ inst [1 or "diskdev8-17"] value 11.17
+ inst [2 or "diskdev8-0"] value 5.6700001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 8.5
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 8.5
+ inst [8 or "diskdev253-3"] value 11.8
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 8
+ inst [1 or "diskdev8-17"] value 4.6700001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 10.6
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 8
+ inst [1 or "diskdev8-17"] value 4.6700001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 10.6
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 1.8099999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0.0099999998
+ inst [1 or "eth0"] value 0.17
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0.0099999998
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:17.000 245.0.NN (kernel.all.cpu.user): value 0.0063
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98970002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0283
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0080000004
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9677
+ inst [1 or "cpu1"] value 0.99000001
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.98799998
+ inst [4 or "cpu4"] value 0.986
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 0.99199998
+ inst [7 or "cpu7"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 1315.15
+ 245.0.NN (kernel.all.intr): value 392.12
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 17.58
+ 245.0.NN (mem.vmstat.pgfault): value 526.87
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 769.70001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 6.46
+ 245.0.NN (disk.all.total): value 6.46
+ 245.0.NN (disk.all.write_bytes): value 35.150002
+ 245.0.NN (disk.all.total_bytes): value 35.150002
+ 245.0.NN (mem.util.free): value 14631628
+ 245.0.NN (mem.util.used): value 9904108
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164908
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900991
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300775
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.029999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2.8299999
+ inst [1 or "diskdev8-17"] value 2.4200001
+ inst [2 or "diskdev8-0"] value 0.61000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.2
+ inst [5 or "diskdev253-0"] value 1.41
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.2
+ inst [8 or "diskdev253-3"] value 1.41
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 15.96
+ inst [1 or "diskdev8-17"] value 15.96
+ inst [2 or "diskdev8-0"] value 1.615
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.615
+ inst [5 or "diskdev253-0"] value 5.6550002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.615
+ inst [8 or "diskdev253-3"] value 10.305
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 15.96
+ inst [1 or "diskdev8-17"] value 15.96
+ inst [2 or "diskdev8-0"] value 1.615
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.615
+ inst [5 or "diskdev253-0"] value 5.6550002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.615
+ inst [8 or "diskdev253-3"] value 10.305
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0178
+ inst [1 or "diskdev8-17"] value 0.0085000005
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.00039999999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0174
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 11.29
+ inst [1 or "diskdev8-17"] value 13.17
+ inst [2 or "diskdev8-0"] value 5.3299999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 16
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 16
+ inst [8 or "diskdev253-3"] value 14.57
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.02
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.02
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 6.6399999
+ inst [1 or "diskdev8-17"] value 3.9200001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 1.14
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 12.29
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 6.29
+ inst [1 or "diskdev8-17"] value 3.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.28999999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 12.29
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 4.04
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.54000002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:22.000 245.0.NN (kernel.all.cpu.user): value 0.0055
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0043000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00079999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9892
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.02
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.0080000004
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0080000004
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97780001
+ inst [1 or "cpu1"] value 0.98799998
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99000001
+ inst [4 or "cpu4"] value 0.99400002
+ inst [5 or "cpu5"] value 0.99599999
+ inst [6 or "cpu6"] value 0.972
+ inst [7 or "cpu7"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 1101.21
+ 245.0.NN (kernel.all.intr): value 346.17001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 58.669998
+ 245.0.NN (mem.vmstat.pgfault): value 675.40002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1125.2
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 7.0599999
+ 245.0.NN (disk.all.total): value 7.0599999
+ 245.0.NN (disk.all.write_bytes): value 117.34
+ 245.0.NN (disk.all.total_bytes): value 117.34
+ 245.0.NN (mem.util.free): value 14631508
+ 245.0.NN (mem.util.used): value 9904228
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164904
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300775
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.029999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2.02
+ inst [1 or "diskdev8-17"] value 1.41
+ inst [2 or "diskdev8-0"] value 0.60000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.2
+ inst [5 or "diskdev253-0"] value 3.23
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.2
+ inst [8 or "diskdev253-3"] value 1.01
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 57.055
+ inst [1 or "diskdev8-17"] value 57.055
+ inst [2 or "diskdev8-0"] value 1.615
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.615
+ inst [5 or "diskdev253-0"] value 12.905
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.615
+ inst [8 or "diskdev253-3"] value 44.154999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 57.055
+ inst [1 or "diskdev8-17"] value 57.055
+ inst [2 or "diskdev8-0"] value 1.615
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.615
+ inst [5 or "diskdev253-0"] value 12.905
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.615
+ inst [8 or "diskdev253-3"] value 44.154999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0242
+ inst [1 or "diskdev8-17"] value 0.0105
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0057999999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.018300001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 56.599998
+ inst [1 or "diskdev8-17"] value 80.860001
+ inst [2 or "diskdev8-0"] value 5.3299999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 16
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 16
+ inst [8 or "diskdev253-3"] value 87.599998
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.02
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.02
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 12
+ inst [1 or "diskdev8-17"] value 7.4299998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 1.8099999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 18.200001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 12
+ inst [1 or "diskdev8-17"] value 7.4299998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 1.8099999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 18.200001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.8299999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.30000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:27.000 245.0.NN (kernel.all.cpu.user): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0015
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99449998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0198
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98769999
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 0.98019999
+ 245.0.NN (kernel.all.pswitch): value 1454.4
+ 245.0.NN (kernel.all.intr): value 321.47
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 18
+ 245.0.NN (mem.vmstat.pgfault): value 10.43
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 385.28
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 6.75
+ 245.0.NN (disk.all.total): value 6.75
+ 245.0.NN (disk.all.write_bytes): value 35.990002
+ 245.0.NN (disk.all.total_bytes): value 35.990002
+ 245.0.NN (mem.util.free): value 14631236
+ 245.0.NN (mem.util.used): value 9904500
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164916
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300767
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.029999999
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.64
+ inst [1 or "diskdev8-17"] value 1.23
+ inst [2 or "diskdev8-0"] value 2.25
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.64
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.64
+ inst [8 or "diskdev253-3"] value 1.23
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 7.5650001
+ inst [1 or "diskdev8-17"] value 7.5650001
+ inst [2 or "diskdev8-0"] value 10.43
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 10.43
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 10.43
+ inst [8 or "diskdev253-3"] value 7.5650001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 7.5650001
+ inst [1 or "diskdev8-17"] value 7.5650001
+ inst [2 or "diskdev8-0"] value 10.43
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 10.43
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 10.43
+ inst [8 or "diskdev253-3"] value 7.5650001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0119
+ inst [1 or "diskdev8-17"] value 0.0080000004
+ inst [2 or "diskdev8-0"] value 0.0018
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0018
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0018
+ inst [8 or "diskdev253-3"] value 0.0119
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 9.25
+ inst [1 or "diskdev8-17"] value 12.33
+ inst [2 or "diskdev8-0"] value 9.2700005
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 12.75
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 12.75
+ inst [8 or "diskdev253-3"] value 12.33
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 7.25
+ inst [1 or "diskdev8-17"] value 6.5
+ inst [2 or "diskdev8-0"] value 1.36
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.88
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.88
+ inst [8 or "diskdev253-3"] value 9.6700001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 7.25
+ inst [1 or "diskdev8-17"] value 6.5
+ inst [2 or "diskdev8-0"] value 0.81999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.12
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.12
+ inst [8 or "diskdev253-3"] value 9.6700001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 5.73
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.41
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.47
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:32.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0015
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99650002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98979998
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99800003
+ inst [7 or "cpu7"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 1175.66
+ 245.0.NN (kernel.all.intr): value 259.70999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 11.25
+ 245.0.NN (mem.vmstat.pgfault): value 9.6099997
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 315.95001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 5.3200002
+ 245.0.NN (disk.all.total): value 5.3200002
+ 245.0.NN (disk.all.write_bytes): value 22.290001
+ 245.0.NN (disk.all.total_bytes): value 22.290001
+ 245.0.NN (mem.util.free): value 14631464
+ 245.0.NN (mem.util.used): value 9904272
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164924
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300766
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.029999999
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.4299999
+ inst [1 or "diskdev8-17"] value 1.23
+ inst [2 or "diskdev8-0"] value 1.02
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.81999999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.4299999
+ inst [8 or "diskdev253-3"] value 1.4299999
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 6.8499999
+ inst [1 or "diskdev8-17"] value 6.8499999
+ inst [2 or "diskdev8-0"] value 4.2950001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 4.2950001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 4.2950001
+ inst [8 or "diskdev253-3"] value 6.8499999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 6.8499999
+ inst [1 or "diskdev8-17"] value 6.8499999
+ inst [2 or "diskdev8-0"] value 4.2950001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 4.2950001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 4.2950001
+ inst [8 or "diskdev253-3"] value 6.8499999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0086000003
+ inst [1 or "diskdev8-17"] value 0.0046999999
+ inst [2 or "diskdev8-0"] value 0.00019999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00019999999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00019999999
+ inst [8 or "diskdev253-3"] value 0.0086000003
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 9.5699997
+ inst [1 or "diskdev8-17"] value 11.17
+ inst [2 or "diskdev8-0"] value 8.3999996
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 10.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 6
+ inst [8 or "diskdev253-3"] value 9.5699997
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 6
+ inst [1 or "diskdev8-17"] value 3.8299999
+ inst [2 or "diskdev8-0"] value 0.40000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.28999999
+ inst [8 or "diskdev253-3"] value 6
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 6
+ inst [1 or "diskdev8-17"] value 3.8299999
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.25
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.14
+ inst [8 or "diskdev253-3"] value 6
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 4.0900002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.2
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.25
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.41
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.31999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.02
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.029999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:37.000 245.0.NN (kernel.all.cpu.user): value 0.0043000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0027999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99299997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0102
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.016000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0059000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0098999999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98570001
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.98400003
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 0.9842
+ 245.0.NN (kernel.all.pswitch): value 1413.09
+ 245.0.NN (kernel.all.intr): value 334.97
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 9.1999998
+ 245.0.NN (mem.vmstat.pgfault): value 144.99001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 643.15002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.8900001
+ 245.0.NN (disk.all.total): value 3.8900001
+ 245.0.NN (disk.all.write_bytes): value 18.405001
+ 245.0.NN (disk.all.total_bytes): value 18.405001
+ 245.0.NN (mem.util.free): value 14633232
+ 245.0.NN (mem.util.used): value 9902504
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164936
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300766
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 534
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.84
+ inst [1 or "diskdev8-17"] value 1.64
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 1.84
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 9.1999998
+ inst [1 or "diskdev8-17"] value 9.1999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 9.1999998
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 9.1999998
+ inst [1 or "diskdev8-17"] value 9.1999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 9.1999998
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0086000003
+ inst [1 or "diskdev8-17"] value 0.0046999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0086000003
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 10
+ inst [1 or "diskdev8-17"] value 11.25
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 10
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 5.1100001
+ inst [1 or "diskdev8-17"] value 3.3800001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 5.2199998
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 4.6700001
+ inst [1 or "diskdev8-17"] value 2.8800001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.6700001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.48
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.27000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.02
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:42.000 245.0.NN (kernel.all.cpu.user): value 0.0044999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0024999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99299997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0081000002
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.022
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98570001
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.97600001
+ inst [7 or "cpu7"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 1213.24
+ 245.0.NN (kernel.all.intr): value 298.37
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 15.07
+ 245.0.NN (mem.vmstat.pgfault): value 624.44
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1121.79
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 4.8899999
+ 245.0.NN (disk.all.total): value 4.8899999
+ 245.0.NN (disk.all.write_bytes): value 30.145
+ 245.0.NN (disk.all.total_bytes): value 30.145
+ 245.0.NN (mem.util.free): value 14632672
+ 245.0.NN (mem.util.used): value 9903064
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164948
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300766
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 534
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2.04
+ inst [1 or "diskdev8-17"] value 1.83
+ inst [2 or "diskdev8-0"] value 0.61000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.41
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.41
+ inst [8 or "diskdev253-3"] value 1.83
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 13.34
+ inst [1 or "diskdev8-17"] value 13.34
+ inst [2 or "diskdev8-0"] value 1.73
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.73
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.73
+ inst [8 or "diskdev253-3"] value 13.34
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 13.34
+ inst [1 or "diskdev8-17"] value 13.34
+ inst [2 or "diskdev8-0"] value 1.73
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.73
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.73
+ inst [8 or "diskdev253-3"] value 13.34
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0086000003
+ inst [1 or "diskdev8-17"] value 0.0046999999
+ inst [2 or "diskdev8-0"] value 0.00019999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00019999999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00019999999
+ inst [8 or "diskdev253-3"] value 0.0086000003
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 13.1
+ inst [1 or "diskdev8-17"] value 14.56
+ inst [2 or "diskdev8-0"] value 5.6700001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 8.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 8.5
+ inst [8 or "diskdev253-3"] value 14.56
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 4.8000002
+ inst [1 or "diskdev8-17"] value 3.22
+ inst [2 or "diskdev8-0"] value 0.33000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.5
+ inst [8 or "diskdev253-3"] value 5.3299999
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 4.1999998
+ inst [1 or "diskdev8-17"] value 2.5599999
+ inst [2 or "diskdev8-0"] value 0.33000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.5
+ inst [8 or "diskdev253-3"] value 4.6700001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.6700001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.81
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.28
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.059999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:47.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99669999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99190003
+ inst [1 or "cpu1"] value 0.99800003
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99199998
+ inst [5 or "cpu5"] value 0.99599999
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 760
+ 245.0.NN (kernel.all.intr): value 197.78
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.6300001
+ 245.0.NN (mem.vmstat.pgfault): value 162.83
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 213.53999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.21
+ 245.0.NN (disk.all.total): value 1.21
+ 245.0.NN (disk.all.write_bytes): value 5.2550001
+ 245.0.NN (disk.all.total_bytes): value 5.2550001
+ 245.0.NN (mem.util.free): value 14631060
+ 245.0.NN (mem.util.used): value 9904676
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164956
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300767
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 534
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.61000001
+ inst [1 or "diskdev8-17"] value 0.40000001
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 2.625
+ inst [1 or "diskdev8-17"] value 2.625
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.625
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 2.625
+ inst [1 or "diskdev8-17"] value 2.625
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.625
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0082999999
+ inst [1 or "diskdev8-17"] value 0.0041999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0082999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.6700001
+ inst [1 or "diskdev8-17"] value 13
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 13.67
+ inst [1 or "diskdev8-17"] value 10.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 20.5
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 13.67
+ inst [1 or "diskdev8-17"] value 10.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 20.5
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.03
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.03
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.63
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.1
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.39
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.02
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:52.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0018
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99620003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0060000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98799998
+ inst [1 or "cpu1"] value 0.99800003
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99199998
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99800003
+ inst [7 or "cpu7"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 612.21997
+ 245.0.NN (kernel.all.intr): value 185.17
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 15.43
+ 245.0.NN (mem.vmstat.pgfault): value 14.83
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 130.66
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 6.6100001
+ 245.0.NN (disk.all.total): value 6.6100001
+ 245.0.NN (disk.all.write_bytes): value 30.860001
+ 245.0.NN (disk.all.total_bytes): value 30.860001
+ 245.0.NN (mem.util.free): value 14631044
+ 245.0.NN (mem.util.used): value 9904692
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164968
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12224
+ 245.0.NN (vfs.inodes.count): value 300765
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 534
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 3.01
+ inst [1 or "diskdev8-17"] value 2.8099999
+ inst [2 or "diskdev8-0"] value 0.40000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.2
+ inst [5 or "diskdev253-0"] value 2.6099999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.2
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 13.83
+ inst [1 or "diskdev8-17"] value 13.83
+ inst [2 or "diskdev8-0"] value 1.605
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.605
+ inst [5 or "diskdev253-0"] value 10.42
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.605
+ inst [8 or "diskdev253-3"] value 3.405
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 13.83
+ inst [1 or "diskdev8-17"] value 13.83
+ inst [2 or "diskdev8-0"] value 1.605
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.605
+ inst [5 or "diskdev253-0"] value 10.42
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.605
+ inst [8 or "diskdev253-3"] value 3.405
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0086000003
+ inst [1 or "diskdev8-17"] value 0.0048000002
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.00060000003
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0080000004
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 9.1999998
+ inst [1 or "diskdev8-17"] value 9.8599997
+ inst [2 or "diskdev8-0"] value 8
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 16
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 16
+ inst [8 or "diskdev253-3"] value 17
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 4.1300001
+ inst [1 or "diskdev8-17"] value 3.0699999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 1.77
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 20
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 2.8699999
+ inst [1 or "diskdev8-17"] value 1.71
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.23
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 20
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.4
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.19
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:06:57.000 245.0.NN (kernel.all.cpu.user): value 0.0044999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0035000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99199998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.028100001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.014
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9659
+ inst [1 or "cpu1"] value 0.98199999
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.9939
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 1073.49
+ 245.0.NN (kernel.all.intr): value 308.23001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 9.04
+ 245.0.NN (mem.vmstat.pgfault): value 196.39
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 587.54999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.4100001
+ 245.0.NN (disk.all.total): value 3.4100001
+ 245.0.NN (disk.all.write_bytes): value 18.275
+ 245.0.NN (disk.all.total_bytes): value 18.275
+ 245.0.NN (mem.util.free): value 14634584
+ 245.0.NN (mem.util.used): value 9901152
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7164980
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900989
+ 245.0.NN (vfs.files.count): value 12256
+ 245.0.NN (vfs.inodes.count): value 300765
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 534
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.02
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.2
+ inst [1 or "diskdev8-17"] value 0.80000001
+ inst [2 or "diskdev8-0"] value 1
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.40000001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.40000001
+ inst [8 or "diskdev253-3"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 5.2199998
+ inst [1 or "diskdev8-17"] value 5.2199998
+ inst [2 or "diskdev8-0"] value 3.915
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.915
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.915
+ inst [8 or "diskdev253-3"] value 5.2199998
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 5.2199998
+ inst [1 or "diskdev8-17"] value 5.2199998
+ inst [2 or "diskdev8-0"] value 3.915
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.915
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.915
+ inst [8 or "diskdev253-3"] value 5.2199998
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0131
+ inst [1 or "diskdev8-17"] value 0.0076000001
+ inst [2 or "diskdev8-0"] value 0.0054000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0054000001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0054000001
+ inst [8 or "diskdev253-3"] value 0.0129
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.6700001
+ inst [1 or "diskdev8-17"] value 13
+ inst [2 or "diskdev8-0"] value 7.8000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 19.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 19.5
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0.0099999998
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0099999998
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0099999998
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 10.83
+ inst [1 or "diskdev8-17"] value 9.5
+ inst [2 or "diskdev8-0"] value 5.4000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 13.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 13.5
+ inst [8 or "diskdev253-3"] value 16
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 10.83
+ inst [1 or "diskdev8-17"] value 9.5
+ inst [2 or "diskdev8-0"] value 5.4000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 13.5
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 13.5
+ inst [8 or "diskdev253-3"] value 16
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.079999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:02.000 245.0.NN (kernel.all.cpu.user): value 0.0133
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0077999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97890002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.042399999
+ inst [1 or "cpu1"] value 0.0283
+ inst [2 or "cpu2"] value 0.0099999998
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.018200001
+ inst [1 or "cpu1"] value 0.018200001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0060000001
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.93940002
+ inst [1 or "cpu1"] value 0.95349997
+ inst [2 or "cpu2"] value 0.986
+ inst [3 or "cpu3"] value 0.99190003
+ inst [4 or "cpu4"] value 0.99000001
+ inst [5 or "cpu5"] value 0.99000001
+ inst [6 or "cpu6"] value 0.99199998
+ inst [7 or "cpu7"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 3143.4299
+ 245.0.NN (kernel.all.intr): value 779.39001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.2399998
+ 245.0.NN (mem.vmstat.pgfault): value 3624.4399
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1321.01
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.62
+ 245.0.NN (disk.all.total): value 1.62
+ 245.0.NN (disk.all.write_bytes): value 8.4849997
+ 245.0.NN (disk.all.total_bytes): value 8.4849997
+ 245.0.NN (mem.util.free): value 14620908
+ 245.0.NN (mem.util.used): value 9914828
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165376
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 900997
+ 245.0.NN (vfs.files.count): value 12416
+ 245.0.NN (vfs.inodes.count): value 300835
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (proc.nproc): value 541
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.81
+ inst [1 or "diskdev8-17"] value 0.61000001
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.61000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 4.2399998
+ inst [1 or "diskdev8-17"] value 4.2399998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.2399998
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 4.2399998
+ inst [1 or "diskdev8-17"] value 4.2399998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.2399998
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0077
+ inst [1 or "diskdev8-17"] value 0.0040000002
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0077
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 10.5
+ inst [1 or "diskdev8-17"] value 14
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 9.5
+ inst [1 or "diskdev8-17"] value 6.6700001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 12.67
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 9.5
+ inst [1 or "diskdev8-17"] value 6.6700001
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 12.67
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.6300001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 1.62
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.8299999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 1.8200001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.75
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 1.37
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.33000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.1
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:07.000 245.0.NN (kernel.all.cpu.user): value 0.0136
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0077999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0015
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97719997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.040199999
+ inst [1 or "cpu1"] value 0.0241
+ inst [2 or "cpu2"] value 0.017999999
+ inst [3 or "cpu3"] value 0.0041
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.0040000002
+ inst [6 or "cpu6"] value 0.0060000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0141
+ inst [1 or "cpu1"] value 0.0241
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0102
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0040000002
+ inst [7 or "cpu7"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.012
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94580001
+ inst [1 or "cpu1"] value 0.95179999
+ inst [2 or "cpu2"] value 0.98000002
+ inst [3 or "cpu3"] value 0.98570001
+ inst [4 or "cpu4"] value 0.98799998
+ inst [5 or "cpu5"] value 0.99400002
+ inst [6 or "cpu6"] value 0.97799999
+ inst [7 or "cpu7"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 2638.55
+ 245.0.NN (kernel.all.intr): value 602.40997
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 5.6199999
+ 245.0.NN (mem.vmstat.pgpgout): value 16.469999
+ 245.0.NN (mem.vmstat.pgfault): value 2359.8401
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.2
+ 245.0.NN (mem.vmstat.pgfree): value 1812.05
+ 245.0.NN (disk.all.read): value 0.40000001
+ 245.0.NN (disk.all.read_bytes): value 11.245
+ 245.0.NN (disk.all.write): value 5.8200002
+ 245.0.NN (disk.all.total): value 6.2199998
+ 245.0.NN (disk.all.write_bytes): value 32.93
+ 245.0.NN (disk.all.total_bytes): value 44.174999
+ 245.0.NN (mem.util.free): value 14623860
+ 245.0.NN (mem.util.used): value 9911876
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165388
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901012
+ 245.0.NN (vfs.files.count): value 12384
+ 245.0.NN (vfs.inodes.count): value 300847
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 541
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 2.01
+ inst [1 or "diskdev8-17"] value 1.61
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3.21
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 5.6199999
+ inst [1 or "diskdev8-17"] value 5.6199999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 5.6199999
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 16.465
+ inst [1 or "diskdev8-17"] value 16.465
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 12.85
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 3.615
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 22.084999
+ inst [1 or "diskdev8-17"] value 22.084999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 12.85
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 9.2349997
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.021299999
+ inst [1 or "diskdev8-17"] value 0.0088
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0104
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0108
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 22
+ inst [1 or "diskdev8-17"] value 27.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 23
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.02
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 10.7
+ inst [1 or "diskdev8-17"] value 5.6199999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 4.0599999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 13.5
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 10.6
+ inst [1 or "diskdev8-17"] value 5.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3.25
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 13.5
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.079999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.02
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:12.000 245.0.NN (kernel.all.cpu.user): value 0.0146
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0106
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0015
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9734
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.046500001
+ inst [1 or "cpu1"] value 0.038199998
+ inst [2 or "cpu2"] value 0.0080000004
+ inst [3 or "cpu3"] value 0.0060999999
+ inst [4 or "cpu4"] value 0.0141
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0040000002
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.018200001
+ inst [1 or "cpu1"] value 0.0341
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0122
+ inst [4 or "cpu4"] value 0.0121
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.012
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.93540001
+ inst [1 or "cpu1"] value 0.92769998
+ inst [2 or "cpu2"] value 0.98799998
+ inst [3 or "cpu3"] value 0.9817
+ inst [4 or "cpu4"] value 0.9738
+ inst [5 or "cpu5"] value 0.99599999
+ inst [6 or "cpu6"] value 0.98390001
+ inst [7 or "cpu7"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 3135.76
+ 245.0.NN (kernel.all.intr): value 783.22998
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 72.730003
+ 245.0.NN (mem.vmstat.pgpgout): value 34.75
+ 245.0.NN (mem.vmstat.pgfault): value 2243.23
+ 245.0.NN (mem.vmstat.pgmajfault): value 0.61000001
+ 245.0.NN (mem.vmstat.pgfree): value 1604.04
+ 245.0.NN (disk.all.read): value 1.21
+ 245.0.NN (disk.all.read_bytes): value 145.455
+ 245.0.NN (disk.all.write): value 11.92
+ 245.0.NN (disk.all.total): value 13.13
+ 245.0.NN (disk.all.write_bytes): value 69.294998
+ 245.0.NN (disk.all.total_bytes): value 214.75
+ 245.0.NN (mem.util.free): value 14621956
+ 245.0.NN (mem.util.used): value 9913780
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165800
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901013
+ 245.0.NN (vfs.files.count): value 12352
+ 245.0.NN (vfs.inodes.count): value 300854
+ 245.0.NN (proc.runq.runnable): value 2
+ 245.0.NN (proc.nproc): value 541
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 3.03
+ inst [1 or "diskdev8-17"] value 2.6300001
+ inst [2 or "diskdev8-0"] value 0.81
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.61000001
+ inst [5 or "diskdev253-0"] value 7.4699998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.81
+ inst [8 or "diskdev253-3"] value 1.01
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 72.724998
+ inst [1 or "diskdev8-17"] value 72.724998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 72.724998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 32.830002
+ inst [1 or "diskdev8-17"] value 32.830002
+ inst [2 or "diskdev8-0"] value 1.8200001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.8200001
+ inst [5 or "diskdev253-0"] value 27.475
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.8200001
+ inst [8 or "diskdev253-3"] value 5.355
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 105.555
+ inst [1 or "diskdev8-17"] value 105.555
+ inst [2 or "diskdev8-0"] value 1.8200001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.8200001
+ inst [5 or "diskdev253-0"] value 100.2
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.8200001
+ inst [8 or "diskdev253-3"] value 5.355
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.024800001
+ inst [1 or "diskdev8-17"] value 0.021
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0166
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0082999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 69.669998
+ inst [1 or "diskdev8-17"] value 80.379997
+ inst [2 or "diskdev8-0"] value 4.5
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 6
+ inst [5 or "diskdev253-0"] value 26.809999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 4.5
+ inst [8 or "diskdev253-3"] value 10.6
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.029999999
+ inst [1 or "diskdev8-17"] value 0.02
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.029999999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 10.73
+ inst [1 or "diskdev8-17"] value 8.1499996
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 4.0300002
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 8.1999998
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 8.1999998
+ inst [1 or "diskdev8-17"] value 8
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 2.22
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 8.1999998
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 1.21
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0.0099999998
+ inst [1 or "eth0"] value 0.13
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0.0099999998
+ inst [1 or "eth0"] value 0.039999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:17.000 245.0.NN (kernel.all.cpu.user): value 0.0085000005
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0074999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98400003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.037999999
+ inst [1 or "cpu1"] value 0.0101
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.017999999
+ inst [1 or "cpu1"] value 0.028200001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0060999999
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94400001
+ inst [1 or "cpu1"] value 0.96170002
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99190003
+ inst [4 or "cpu4"] value 0.98799998
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 0.99599999
+ inst [7 or "cpu7"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 1839.2
+ 245.0.NN (kernel.all.intr): value 488
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.5999999
+ 245.0.NN (mem.vmstat.pgfault): value 88.400002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 850.79999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.2
+ 245.0.NN (disk.all.total): value 1.2
+ 245.0.NN (disk.all.write_bytes): value 5.1999998
+ 245.0.NN (disk.all.total_bytes): value 5.1999998
+ 245.0.NN (mem.util.free): value 14629096
+ 245.0.NN (mem.util.used): value 9906640
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165408
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901005
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300772
+ 245.0.NN (proc.runq.runnable): value 3
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.60000002
+ inst [1 or "diskdev8-17"] value 0.40000001
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 2.5999999
+ inst [1 or "diskdev8-17"] value 2.5999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.5999999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 2.5999999
+ inst [1 or "diskdev8-17"] value 2.5999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.5999999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0082
+ inst [1 or "diskdev8-17"] value 0.003
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0082
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.6700001
+ inst [1 or "diskdev8-17"] value 13
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 13.67
+ inst [1 or "diskdev8-17"] value 7.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 20.5
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 13.67
+ inst [1 or "diskdev8-17"] value 7.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 20.5
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0.60000002
+ inst [1 or "eth0"] value 7.4000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 4
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0.60000002
+ inst [1 or "eth0"] value 4.4000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 4.1999998
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0.050000001
+ inst [1 or "eth0"] value 2.4200001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 1.84
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0.050000001
+ inst [1 or "eth0"] value 1.02
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.63999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:22.000 245.0.NN (kernel.all.cpu.user): value 0.0065000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0015
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98799998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0414
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.023700001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0099999998
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.93489999
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99589998
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99599999
+ inst [6 or "cpu6"] value 0.99000001
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 1413.02
+ 245.0.NN (kernel.all.intr): value 358.57999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 167.25999
+ 245.0.NN (mem.vmstat.pgfault): value 188.56
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 580.87
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 12.03
+ 245.0.NN (disk.all.total): value 12.03
+ 245.0.NN (disk.all.write_bytes): value 334.51501
+ 245.0.NN (disk.all.total_bytes): value 334.51501
+ 245.0.NN (mem.util.free): value 14630256
+ 245.0.NN (mem.util.used): value 9905480
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165420
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300771
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 536
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.97
+ inst [1 or "diskdev8-17"] value 1.58
+ inst [2 or "diskdev8-0"] value 2.5599999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 2.1700001
+ inst [5 or "diskdev253-0"] value 4.1399999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 2.3699999
+ inst [8 or "diskdev253-3"] value 0.99000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 21.6
+ inst [1 or "diskdev8-17"] value 21.6
+ inst [2 or "diskdev8-0"] value 145.66
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 145.66
+ inst [5 or "diskdev253-0"] value 16.57
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 145.66
+ inst [8 or "diskdev253-3"] value 5.0300002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 21.6
+ inst [1 or "diskdev8-17"] value 21.6
+ inst [2 or "diskdev8-0"] value 145.66
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 145.66
+ inst [5 or "diskdev253-0"] value 16.57
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 145.66
+ inst [8 or "diskdev253-3"] value 5.0300002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.016799999
+ inst [1 or "diskdev8-17"] value 0.0043000001
+ inst [2 or "diskdev8-0"] value 0.0078999996
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0051000002
+ inst [5 or "diskdev253-0"] value 0.011
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0078999996
+ inst [8 or "diskdev253-3"] value 0.0057000001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 21.9
+ inst [1 or "diskdev8-17"] value 27.379999
+ inst [2 or "diskdev8-0"] value 113.62
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 134.27
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 123.08
+ inst [8 or "diskdev253-3"] value 10.2
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.02
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0.0099999998
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0099999998
+ inst [5 or "diskdev253-0"] value 0.0099999998
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0099999998
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 8.6000004
+ inst [1 or "diskdev8-17"] value 2.8800001
+ inst [2 or "diskdev8-0"] value 4.77
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 4.3600001
+ inst [5 or "diskdev253-0"] value 3.52
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 5.3299999
+ inst [8 or "diskdev253-3"] value 5.8000002
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 8.5
+ inst [1 or "diskdev8-17"] value 2.75
+ inst [2 or "diskdev8-0"] value 3.0799999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 2.3599999
+ inst [5 or "diskdev253-0"] value 2.6700001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.3299999
+ inst [8 or "diskdev253-3"] value 5.8000002
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.75
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.2
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.30000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.029999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.0099999998
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:27.000 245.0.NN (kernel.all.cpu.user): value 0.0052999998
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0013
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99349999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.017999999
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.02
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97799999
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 0.97799999
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99599999
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 977.56
+ 245.0.NN (kernel.all.intr): value 268.34
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8099999
+ 245.0.NN (mem.vmstat.pgfault): value 654.10999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1148.7
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.6099999
+ 245.0.NN (disk.all.total): value 2.6099999
+ 245.0.NN (disk.all.write_bytes): value 9.8199997
+ 245.0.NN (disk.all.total_bytes): value 9.8199997
+ 245.0.NN (mem.util.free): value 14630236
+ 245.0.NN (mem.util.used): value 9905500
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165432
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300771
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1
+ inst [1 or "diskdev8-17"] value 0.60000002
+ inst [2 or "diskdev8-0"] value 0.80000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.2
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.2
+ inst [8 or "diskdev253-3"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 3.605
+ inst [1 or "diskdev8-17"] value 3.605
+ inst [2 or "diskdev8-0"] value 1.3049999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.3049999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.3049999
+ inst [8 or "diskdev253-3"] value 3.605
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 3.605
+ inst [1 or "diskdev8-17"] value 3.605
+ inst [2 or "diskdev8-0"] value 1.3049999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.3049999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.3049999
+ inst [8 or "diskdev253-3"] value 3.605
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0055999998
+ inst [1 or "diskdev8-17"] value 0.0041999999
+ inst [2 or "diskdev8-0"] value 0.0016
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0016
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0016
+ inst [8 or "diskdev253-3"] value 0.0055999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 7.1999998
+ inst [1 or "diskdev8-17"] value 12
+ inst [2 or "diskdev8-0"] value 3.25
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 13
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 13
+ inst [8 or "diskdev253-3"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 5.5999999
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 8
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 8
+ inst [8 or "diskdev253-3"] value 9.3299999
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 5.5999999
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 8
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 8
+ inst [8 or "diskdev253-3"] value 9.3299999
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.4100001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0.2
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.25999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0.0099999998
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:32.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.00079999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99000001
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 373.60001
+ 245.0.NN (kernel.all.intr): value 144.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.1999998
+ 245.0.NN (mem.vmstat.pgfault): value 6.5999999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 99
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.6
+ 245.0.NN (disk.all.total): value 1.6
+ 245.0.NN (disk.all.write_bytes): value 8.3999996
+ 245.0.NN (disk.all.total_bytes): value 8.3999996
+ 245.0.NN (mem.util.free): value 14630412
+ 245.0.NN (mem.util.used): value 9905324
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165440
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300773
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.80000001
+ inst [1 or "diskdev8-17"] value 0.60000002
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 4.1999998
+ inst [1 or "diskdev8-17"] value 4.1999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.1999998
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 4.1999998
+ inst [1 or "diskdev8-17"] value 4.1999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 4.1999998
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0071999999
+ inst [1 or "diskdev8-17"] value 0.0041999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0071999999
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 10.5
+ inst [1 or "diskdev8-17"] value 14
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 9
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 12
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 9
+ inst [1 or "diskdev8-17"] value 7
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 12
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 4
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.40000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.40000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.33000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.029999999
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.13
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0.029999999
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:37.000 245.0.NN (kernel.all.cpu.user): value 0.001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.00079999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9982
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99800003
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 363.60001
+ 245.0.NN (kernel.all.intr): value 144
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 33
+ 245.0.NN (mem.vmstat.pgfault): value 9
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 98.199997
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 13.6
+ 245.0.NN (disk.all.total): value 13.6
+ 245.0.NN (disk.all.write_bytes): value 66
+ 245.0.NN (disk.all.total_bytes): value 66
+ 245.0.NN (mem.util.free): value 14630704
+ 245.0.NN (mem.util.used): value 9905032
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165452
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300773
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 5.5999999
+ inst [1 or "diskdev8-17"] value 5.4000001
+ inst [2 or "diskdev8-0"] value 0.60000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.40000001
+ inst [5 or "diskdev253-0"] value 6.5999999
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.40000001
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 29.799999
+ inst [1 or "diskdev8-17"] value 29.799999
+ inst [2 or "diskdev8-0"] value 3.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.2
+ inst [5 or "diskdev253-0"] value 26.4
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.2
+ inst [8 or "diskdev253-3"] value 3.4000001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 29.799999
+ inst [1 or "diskdev8-17"] value 29.799999
+ inst [2 or "diskdev8-0"] value 3.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 3.2
+ inst [5 or "diskdev253-0"] value 26.4
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 3.2
+ inst [8 or "diskdev253-3"] value 3.4000001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0071999999
+ inst [1 or "diskdev8-17"] value 0.0055999998
+ inst [2 or "diskdev8-0"] value 0.00019999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00019999999
+ inst [5 or "diskdev253-0"] value 0.0012000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00019999999
+ inst [8 or "diskdev253-3"] value 0.0060000001
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 10.64
+ inst [1 or "diskdev8-17"] value 11.04
+ inst [2 or "diskdev8-0"] value 10.67
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 16
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 16
+ inst [8 or "diskdev253-3"] value 17
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.029999999
+ inst [1 or "diskdev8-17"] value 0.02
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.02
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 4.46
+ inst [1 or "diskdev8-17"] value 4.3299999
+ inst [2 or "diskdev8-0"] value 0.33000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.5
+ inst [5 or "diskdev253-0"] value 3.52
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.5
+ inst [8 or "diskdev253-3"] value 15
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 1.29
+ inst [1 or "diskdev8-17"] value 1.04
+ inst [2 or "diskdev8-0"] value 0.33000001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.5
+ inst [5 or "diskdev253-0"] value 0.18000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.5
+ inst [8 or "diskdev253-3"] value 15
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.5999999
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.27000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:42.000 245.0.NN (kernel.all.cpu.user): value 0.003
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.00050000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99650002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.022
+ inst [5 or "cpu5"] value 0.0020000001
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99599999
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.97399998
+ inst [5 or "cpu5"] value 0.99800003
+ inst [6 or "cpu6"] value 0.99599999
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 380.76001
+ 245.0.NN (kernel.all.intr): value 160.12
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 10.22
+ 245.0.NN (mem.vmstat.pgfault): value 143.69
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 241.08
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 5.0100002
+ 245.0.NN (disk.all.total): value 5.0100002
+ 245.0.NN (disk.all.write_bytes): value 20.440001
+ 245.0.NN (disk.all.total_bytes): value 20.440001
+ 245.0.NN (mem.util.free): value 14631340
+ 245.0.NN (mem.util.used): value 9904396
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165464
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300772
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.0099999998
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.80000001
+ inst [1 or "diskdev8-17"] value 0.60000002
+ inst [2 or "diskdev8-0"] value 1.8
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.6
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.8
+ inst [8 or "diskdev253-3"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 3.5050001
+ inst [1 or "diskdev8-17"] value 3.5050001
+ inst [2 or "diskdev8-0"] value 6.7150002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 6.7150002
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 6.7150002
+ inst [8 or "diskdev253-3"] value 3.5050001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 3.5050001
+ inst [1 or "diskdev8-17"] value 3.5050001
+ inst [2 or "diskdev8-0"] value 6.7150002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 6.7150002
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 6.7150002
+ inst [8 or "diskdev253-3"] value 3.5050001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0077999998
+ inst [1 or "diskdev8-17"] value 0.0027999999
+ inst [2 or "diskdev8-0"] value 0.00019999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.00019999999
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.00019999999
+ inst [8 or "diskdev253-3"] value 0.0077999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.75
+ inst [1 or "diskdev8-17"] value 11.67
+ inst [2 or "diskdev8-0"] value 7.4400001
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 8.3800001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 7.4400001
+ inst [8 or "diskdev253-3"] value 11.67
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 9.75
+ inst [1 or "diskdev8-17"] value 4.6700001
+ inst [2 or "diskdev8-0"] value 0.56
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.62
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.67000002
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 9.75
+ inst [1 or "diskdev8-17"] value 4.6700001
+ inst [2 or "diskdev8-0"] value 0.11
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.12
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.11
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 6.0100002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0.2
+ inst [1 or "eth0"] value 3.21
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0.02
+ inst [1 or "eth0"] value 0.52999997
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0.02
+ inst [1 or "eth0"] value 1.25
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:47.000 245.0.NN (kernel.all.cpu.user): value 0.0035000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.00079999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9957
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.017999999
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99800003
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 0.98000002
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99199998
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 1
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 363.92999
+ 245.0.NN (kernel.all.intr): value 159.12
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.4100001
+ 245.0.NN (mem.vmstat.pgfault): value 697.19
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 786.77002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.6
+ 245.0.NN (disk.all.total): value 1.6
+ 245.0.NN (disk.all.write_bytes): value 6.8150001
+ 245.0.NN (disk.all.total_bytes): value 6.8150001
+ 245.0.NN (mem.util.free): value 14629604
+ 245.0.NN (mem.util.used): value 9906132
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165472
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300772
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 0.80000001
+ inst [1 or "diskdev8-17"] value 0.60000002
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.2
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 3.405
+ inst [1 or "diskdev8-17"] value 3.405
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.80000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.605
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 3.405
+ inst [1 or "diskdev8-17"] value 3.405
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.80000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 2.605
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0098000001
+ inst [1 or "diskdev8-17"] value 0.0049999999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.00060000003
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0092000002
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 8.5
+ inst [1 or "diskdev8-17"] value 11.33
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 13
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 12.25
+ inst [1 or "diskdev8-17"] value 8.3299999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 23
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 12.25
+ inst [1 or "diskdev8-17"] value 8.3299999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 3
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 23
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.4
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.11
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:52.000 245.0.NN (kernel.all.cpu.user): value 0.001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00050000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9975
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0040000002
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99599999
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 351.89999
+ 245.0.NN (kernel.all.intr): value 128.86
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.8099999
+ 245.0.NN (mem.vmstat.pgfault): value 6.21
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 79.559998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.2
+ 245.0.NN (disk.all.total): value 2.2
+ 245.0.NN (disk.all.write_bytes): value 11.625
+ 245.0.NN (disk.all.total_bytes): value 11.625
+ 245.0.NN (mem.util.free): value 14629604
+ 245.0.NN (mem.util.used): value 9906132
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165484
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300772
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1.2
+ inst [1 or "diskdev8-17"] value 0.80000001
+ inst [2 or "diskdev8-0"] value 0.2
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.2
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 5.8099999
+ inst [1 or "diskdev8-17"] value 5.8099999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.80000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 5.0100002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 5.8099999
+ inst [1 or "diskdev8-17"] value 5.8099999
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.80000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 5.0100002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0126
+ inst [1 or "diskdev8-17"] value 0.0082
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0.0038000001
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0088
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 9.6700001
+ inst [1 or "diskdev8-17"] value 14.5
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 8
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 16.67
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 10.5
+ inst [1 or "diskdev8-17"] value 10.25
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 19
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14.67
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 10.5
+ inst [1 or "diskdev8-17"] value 10.25
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 19
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 14.67
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.80000001
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.13
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+
+00:07:57.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.00050000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9982
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0.0020000001
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99000001
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 1
+ inst [6 or "cpu6"] value 0.99800003
+ inst [7 or "cpu7"] value 1
+ 245.0.NN (kernel.all.pswitch): value 359
+ 245.0.NN (kernel.all.intr): value 134.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 9
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 88.199997
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3
+ 245.0.NN (disk.all.total): value 3
+ 245.0.NN (disk.all.write_bytes): value 10.8
+ 245.0.NN (disk.all.total_bytes): value 10.8
+ 245.0.NN (mem.util.free): value 14629480
+ 245.0.NN (mem.util.used): value 9906256
+ 245.0.NN (mem.util.bufmem): value 386348
+ 245.0.NN (mem.util.cached): value 7165496
+ 245.0.NN (mem.util.swapFree): value 12337144
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 901009
+ 245.0.NN (vfs.files.count): value 12160
+ 245.0.NN (vfs.inodes.count): value 300772
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 535
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.02
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-16"] value 1
+ inst [1 or "diskdev8-17"] value 0.60000002
+ inst [2 or "diskdev8-0"] value 1
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.40000001
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.40000001
+ inst [8 or "diskdev253-3"] value 0.60000002
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-16"] value 0
+ inst [1 or "diskdev8-17"] value 0
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-16"] value 3.5999999
+ inst [1 or "diskdev8-17"] value 3.5999999
+ inst [2 or "diskdev8-0"] value 1.8
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.8
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.8
+ inst [8 or "diskdev253-3"] value 3.5999999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-16"] value 3.5999999
+ inst [1 or "diskdev8-17"] value 3.5999999
+ inst [2 or "diskdev8-0"] value 1.8
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 1.8
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 1.8
+ inst [8 or "diskdev253-3"] value 3.5999999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-16"] value 0.0108
+ inst [1 or "diskdev8-17"] value 0.0060000001
+ inst [2 or "diskdev8-0"] value 0.0048000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0.0048000002
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0.0048000002
+ inst [8 or "diskdev253-3"] value 0.0108
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-16"] value 7.1999998
+ inst [1 or "diskdev8-17"] value 12
+ inst [2 or "diskdev8-0"] value 3.5999999
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 9
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 9
+ inst [8 or "diskdev253-3"] value 12
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-16"] value 0.0099999998
+ inst [1 or "diskdev8-17"] value 0.0099999998
+ inst [2 or "diskdev8-0"] value 0
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 0
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 0
+ inst [8 or "diskdev253-3"] value 0.0099999998
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-16"] value 10.8
+ inst [1 or "diskdev8-17"] value 10
+ inst [2 or "diskdev8-0"] value 4.8000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 12
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 12
+ inst [8 or "diskdev253-3"] value 18
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-16"] value 10.8
+ inst [1 or "diskdev8-17"] value 10
+ inst [2 or "diskdev8-0"] value 4.8000002
+ inst [3 or "diskdev8-1"] value 0
+ inst [4 or "diskdev8-2"] value 12
+ inst [5 or "diskdev253-0"] value 0
+ inst [6 or "diskdev253-1"] value 0
+ inst [7 or "diskdev253-2"] value 12
+ inst [8 or "diskdev253-3"] value 18
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.1
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "virbr0"] value 0
+ inst [3 or "virbr0-nic"] value 0
+ inst [4 or "tun0"] value 0
diff --git a/qa/370.out.5 b/qa/370.out.5
new file mode 100644
index 0000000..0f7aba1
--- /dev/null
+++ b/qa/370.out.5
@@ -0,0 +1,5374 @@
+QA output created by 370
+check user CPU time ...
+
+check timestamps ...
+
+check sys CPU time ...
+
+check user disk iops ...
+
+check user disk write thruput ...
+
+full dump ...
+Note: timezone set to local timezone of host "vm11" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host vm11
+ commencing Tue Mar 26 05:22:14.000 2013
+ ending Tue Mar 26 05:25:04.000 2013
+
+05:22:14.000 245.0.NN (hinv.ncpu): value 1
+ 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 8.3800001
+ 245.0.NN (kernel.all.intr): value 12.97
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 18.360001
+ 245.0.NN (mem.vmstat.pgfault): value 6.79
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.5799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.4
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 18.365
+ 245.0.NN (disk.all.total_bytes): value 18.365
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 94972
+ 245.0.NN (mem.util.cached): value 257864
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1.4
+ inst [1 or "diskdev254-1"] value 0.60000002
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 18.365
+ inst [1 or "diskdev254-1"] value 7.1849999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 11.18
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 18.365
+ inst [1 or "diskdev254-1"] value 7.1849999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 11.18
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 26.290001
+ inst [1 or "diskdev254-1"] value 24
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 28
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:19.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 7.1999998
+ 245.0.NN (kernel.all.intr): value 11.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 0
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3999996
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0
+ 245.0.NN (disk.all.total): value 0
+ 245.0.NN (disk.all.write_bytes): value 0
+ 245.0.NN (disk.all.total_bytes): value 0
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 94972
+ 245.0.NN (mem.util.cached): value 257868
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:24.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 7.8200002
+ 245.0.NN (kernel.all.intr): value 11.82
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 6.4099998
+ 245.0.NN (mem.vmstat.pgfault): value 6.0100002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.2200003
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 6.415
+ 245.0.NN (disk.all.total_bytes): value 6.415
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 94980
+ 245.0.NN (mem.util.cached): value 257876
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 6.415
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 6.415
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 6.415
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 6.415
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 12.8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.8
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:29.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 10.38
+ 245.0.NN (kernel.all.intr): value 13.77
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 11.98
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.5799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.2
+ 245.0.NN (disk.all.total): value 2.2
+ 245.0.NN (disk.all.write_bytes): value 11.975
+ 245.0.NN (disk.all.total_bytes): value 11.975
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 94988
+ 245.0.NN (mem.util.cached): value 257884
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 2.2
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 2.2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 11.975
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 11.975
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 11.975
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 11.975
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 10.91
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 10.91
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:34.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 8.6199999
+ 245.0.NN (kernel.all.intr): value 12.02
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.21
+ 245.0.NN (mem.vmstat.pgfault): value 6.0100002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.2200003
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 7.2150002
+ 245.0.NN (disk.all.total_bytes): value 7.2150002
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 94996
+ 245.0.NN (mem.util.cached): value 257892
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0.80000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 7.2150002
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.2150002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 7.2150002
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.2150002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 18
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 18
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:39.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 8.3800001
+ 245.0.NN (kernel.all.intr): value 12.38
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.1900001
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.5799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 7.1849999
+ 245.0.NN (disk.all.total_bytes): value 7.1849999
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 95004
+ 245.0.NN (mem.util.cached): value 257900
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 7.1849999
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.1849999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 7.1849999
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.1849999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 14.4
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 14.4
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:44.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9
+ 245.0.NN (kernel.all.intr): value 14.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 15.2
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.1999998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.5999999
+ 245.0.NN (disk.all.total): value 2.5999999
+ 245.0.NN (disk.all.write_bytes): value 15.2
+ 245.0.NN (disk.all.total_bytes): value 15.2
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 95016
+ 245.0.NN (mem.util.cached): value 257908
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 2.5999999
+ inst [1 or "diskdev254-1"] value 1.2
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 15.2
+ inst [1 or "diskdev254-1"] value 5.5999999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 9.6000004
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 15.2
+ inst [1 or "diskdev254-1"] value 5.5999999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 9.6000004
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 11.69
+ inst [1 or "diskdev254-1"] value 9.3299999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 13.71
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.059999999
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:49.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 8.1999998
+ 245.0.NN (kernel.all.intr): value 13.4
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.6000004
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 4.8000002
+ 245.0.NN (disk.all.total_bytes): value 4.8000002
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 95024
+ 245.0.NN (mem.util.cached): value 257916
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0.40000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 4.8000002
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 4.8000002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 4.8000002
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 4.8000002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 24
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 24
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:54.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9
+ 245.0.NN (kernel.all.intr): value 13.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.1999998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 8
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 95032
+ 245.0.NN (mem.util.cached): value 257924
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:22:59.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 11.2
+ 245.0.NN (kernel.all.intr): value 13.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.6000004
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 8
+ 245.0.NN (mem.util.free): value 564396
+ 245.0.NN (mem.util.used): value 470736
+ 245.0.NN (mem.util.bufmem): value 95040
+ 245.0.NN (mem.util.cached): value 257932
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:04.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99400002
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 19
+ 245.0.NN (kernel.all.intr): value 16.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 118
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 32.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 8
+ 245.0.NN (mem.util.free): value 564300
+ 245.0.NN (mem.util.used): value 470832
+ 245.0.NN (mem.util.bufmem): value 95048
+ 245.0.NN (mem.util.cached): value 257940
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309932
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26196
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 227
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.029999999
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:09.000 245.0.NN (kernel.all.cpu.user): value 0.082000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.90799999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.082000002
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.90799999
+ 245.0.NN (kernel.all.pswitch): value 164
+ 245.0.NN (kernel.all.intr): value 52.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12
+ 245.0.NN (mem.vmstat.pgfault): value 4049.3999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 816.79999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.6
+ 245.0.NN (disk.all.total): value 1.6
+ 245.0.NN (disk.all.write_bytes): value 12
+ 245.0.NN (disk.all.total_bytes): value 12
+ 245.0.NN (mem.util.free): value 558644
+ 245.0.NN (mem.util.used): value 476488
+ 245.0.NN (mem.util.bufmem): value 95056
+ 245.0.NN (mem.util.cached): value 257952
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309949
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1.6
+ inst [1 or "diskdev254-1"] value 0.60000002
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 12
+ inst [1 or "diskdev254-1"] value 4
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 12
+ inst [1 or "diskdev254-1"] value 4
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 15
+ inst [1 or "diskdev254-1"] value 13.33
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 7
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 5.8000002
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.14
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.03
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:14.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 13.97
+ 245.0.NN (kernel.all.intr): value 16.57
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 27.15
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3800001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.79
+ 245.0.NN (disk.all.total): value 2.79
+ 245.0.NN (disk.all.write_bytes): value 27.145
+ 245.0.NN (disk.all.total_bytes): value 27.145
+ 245.0.NN (mem.util.free): value 558644
+ 245.0.NN (mem.util.used): value 476488
+ 245.0.NN (mem.util.bufmem): value 95064
+ 245.0.NN (mem.util.cached): value 257960
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309949
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 2.79
+ inst [1 or "diskdev254-1"] value 1.6
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 27.145
+ inst [1 or "diskdev254-1"] value 14.37
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.775
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 27.145
+ inst [1 or "diskdev254-1"] value 14.37
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.775
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 19.43
+ inst [1 or "diskdev254-1"] value 18
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 21.33
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.6
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.14
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:19.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 41.599998
+ 245.0.NN (kernel.all.intr): value 32.799999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 9.6000004
+ 245.0.NN (mem.vmstat.pgfault): value 9.1999998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3999996
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.4
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 9.6000004
+ 245.0.NN (disk.all.total_bytes): value 9.6000004
+ 245.0.NN (mem.util.free): value 558644
+ 245.0.NN (mem.util.used): value 476488
+ 245.0.NN (mem.util.bufmem): value 95072
+ 245.0.NN (mem.util.cached): value 257964
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1.4
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 9.6000004
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 9.6000004
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 9.6000004
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 9.6000004
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 13.71
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 13.71
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 8.3999996
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 4
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.66000003
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.47
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:24.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 22.040001
+ 245.0.NN (kernel.all.intr): value 20.84
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8099999
+ 245.0.NN (mem.vmstat.pgfault): value 6.4099998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.2200003
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 4.8099999
+ 245.0.NN (disk.all.total_bytes): value 4.8099999
+ 245.0.NN (mem.util.free): value 558644
+ 245.0.NN (mem.util.used): value 476488
+ 245.0.NN (mem.util.bufmem): value 95080
+ 245.0.NN (mem.util.cached): value 257972
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0.40000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 4.8099999
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 4.8099999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 4.8099999
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 4.8099999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 24
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 24
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.6099999
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.8
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.27000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:29.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 12.18
+ 245.0.NN (kernel.all.intr): value 15.57
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.98
+ 245.0.NN (mem.vmstat.pgfault): value 98.199997
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 29.940001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 7.9850001
+ 245.0.NN (disk.all.total_bytes): value 7.9850001
+ 245.0.NN (mem.util.free): value 558644
+ 245.0.NN (mem.util.used): value 476488
+ 245.0.NN (mem.util.bufmem): value 95088
+ 245.0.NN (mem.util.cached): value 257980
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.80000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.090000004
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.14
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:34.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 9.0200005
+ 245.0.NN (kernel.all.intr): value 12.22
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.8199997
+ 245.0.NN (mem.vmstat.pgfault): value 6.0100002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.2200003
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 8.8199997
+ 245.0.NN (disk.all.total_bytes): value 8.8199997
+ 245.0.NN (mem.util.free): value 558644
+ 245.0.NN (mem.util.used): value 476488
+ 245.0.NN (mem.util.bufmem): value 95096
+ 245.0.NN (mem.util.cached): value 257988
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8.8199997
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8.8199997
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8.8199997
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8.8199997
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 17.6
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 17.6
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:39.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9.5799999
+ 245.0.NN (kernel.all.intr): value 12.77
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 17.559999
+ 245.0.NN (mem.vmstat.pgfault): value 6.3899999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3800001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.1900001
+ 245.0.NN (disk.all.total): value 3.1900001
+ 245.0.NN (disk.all.write_bytes): value 17.565001
+ 245.0.NN (disk.all.total_bytes): value 17.565001
+ 245.0.NN (mem.util.free): value 558644
+ 245.0.NN (mem.util.used): value 476488
+ 245.0.NN (mem.util.bufmem): value 95104
+ 245.0.NN (mem.util.cached): value 257996
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 3.1900001
+ inst [1 or "diskdev254-1"] value 2.2
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 17.565001
+ inst [1 or "diskdev254-1"] value 9.5799999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 17.565001
+ inst [1 or "diskdev254-1"] value 9.5799999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0.00079999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 11
+ inst [1 or "diskdev254-1"] value 8.7299995
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0.25
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0.25
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:44.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 8.8199997
+ 245.0.NN (kernel.all.intr): value 13.23
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.83
+ 245.0.NN (mem.vmstat.pgfault): value 6.0100002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.2200003
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2
+ 245.0.NN (disk.all.total): value 2
+ 245.0.NN (disk.all.write_bytes): value 12.825
+ 245.0.NN (disk.all.total_bytes): value 12.825
+ 245.0.NN (mem.util.free): value 558520
+ 245.0.NN (mem.util.used): value 476612
+ 245.0.NN (mem.util.bufmem): value 95112
+ 245.0.NN (mem.util.cached): value 258004
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 2
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 12.825
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.825
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 12.825
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.825
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0.00079999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 12.8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.8
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0.40000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.40000001
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0.40000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.40000001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:49.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 17.959999
+ 245.0.NN (kernel.all.intr): value 17.76
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.98
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3800001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 7.9850001
+ 245.0.NN (disk.all.total_bytes): value 7.9850001
+ 245.0.NN (mem.util.free): value 558520
+ 245.0.NN (mem.util.used): value 476612
+ 245.0.NN (mem.util.bufmem): value 95120
+ 245.0.NN (mem.util.cached): value 258012
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0.80000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0.00079999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 20
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 20
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.79
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.25
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.13
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:54.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 22.440001
+ 245.0.NN (kernel.all.intr): value 23.25
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 10.42
+ 245.0.NN (mem.vmstat.pgfault): value 100.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 29.860001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.4
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 10.42
+ 245.0.NN (disk.all.total_bytes): value 10.42
+ 245.0.NN (mem.util.free): value 558520
+ 245.0.NN (mem.util.used): value 476612
+ 245.0.NN (mem.util.bufmem): value 95128
+ 245.0.NN (mem.util.cached): value 258020
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1.4
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 10.42
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 10.42
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 10.42
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 10.42
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0.00079999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 14.86
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 14.86
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 1.14
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.14
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0.56999999
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.56999999
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 3.4100001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.8
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.25
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.34999999
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:23:59.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9
+ 245.0.NN (kernel.all.intr): value 12.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.5999999
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3999996
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 5.5999999
+ 245.0.NN (disk.all.total_bytes): value 5.5999999
+ 245.0.NN (mem.util.free): value 558520
+ 245.0.NN (mem.util.used): value 476612
+ 245.0.NN (mem.util.bufmem): value 95136
+ 245.0.NN (mem.util.cached): value 258028
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0.40000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 5.5999999
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 5.5999999
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 5.5999999
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 5.5999999
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 28
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 28
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:04.000 245.0.NN (kernel.all.cpu.user): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99400002
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 22.360001
+ 245.0.NN (kernel.all.intr): value 16.17
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.98
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 9.9799995
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 7.9850001
+ 245.0.NN (disk.all.total_bytes): value 7.9850001
+ 245.0.NN (mem.util.free): value 558520
+ 245.0.NN (mem.util.used): value 476612
+ 245.0.NN (mem.util.bufmem): value 95144
+ 245.0.NN (mem.util.cached): value 258036
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309950
+ 245.0.NN (vfs.files.count): value 2258
+ 245.0.NN (vfs.inodes.count): value 26228
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 231
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0.00079999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 1.6
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.6
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0.80000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.4
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.60000002
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.13
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:09.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99199998
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 33.400002
+ 245.0.NN (kernel.all.intr): value 18
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 2.4000001
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 206.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 352
+ 245.0.NN (disk.all.read): value 0.40000001
+ 245.0.NN (disk.all.read_bytes): value 2.4000001
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 10.4
+ 245.0.NN (mem.util.free): value 563752
+ 245.0.NN (mem.util.used): value 471380
+ 245.0.NN (mem.util.bufmem): value 95152
+ 245.0.NN (mem.util.cached): value 258056
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1.4
+ inst [1 or "diskdev254-1"] value 0.2
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 2.4000001
+ inst [1 or "diskdev254-1"] value 1.6
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 10.4
+ inst [1 or "diskdev254-1"] value 1.6
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8.8000002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0.0048000002
+ inst [1 or "diskdev254-1"] value 0.0040000002
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.00079999998
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 14.86
+ inst [1 or "diskdev254-1"] value 16
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 14.67
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0.0099999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 4
+ inst [1 or "diskdev254-1"] value 20
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.33
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 3.4300001
+ inst [1 or "diskdev254-1"] value 20
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.67000002
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 2.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 1.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.15000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.13
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:14.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9
+ 245.0.NN (kernel.all.intr): value 13
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 27.200001
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 9.3999996
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.4000001
+ 245.0.NN (disk.all.total): value 2.4000001
+ 245.0.NN (disk.all.write_bytes): value 27.200001
+ 245.0.NN (disk.all.total_bytes): value 27.200001
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95160
+ 245.0.NN (mem.util.cached): value 258060
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 2.4000001
+ inst [1 or "diskdev254-1"] value 1.4
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 27.200001
+ inst [1 or "diskdev254-1"] value 16.799999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 10.4
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 27.200001
+ inst [1 or "diskdev254-1"] value 16.799999
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 10.4
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 22.67
+ inst [1 or "diskdev254-1"] value 24
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 20.799999
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:19.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9.6000004
+ 245.0.NN (kernel.all.intr): value 13.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.1999998
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3999996
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 7.1999998
+ 245.0.NN (disk.all.total_bytes): value 7.1999998
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95168
+ 245.0.NN (mem.util.cached): value 258068
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 7.1999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.1999998
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 7.1999998
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.1999998
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 14.4
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 14.4
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:24.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 7.8000002
+ 245.0.NN (kernel.all.intr): value 12.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.1999998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 8
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95176
+ 245.0.NN (mem.util.cached): value 258076
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:29.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 9.3800001
+ 245.0.NN (kernel.all.intr): value 13.17
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.77
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3800001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2
+ 245.0.NN (disk.all.total): value 2
+ 245.0.NN (disk.all.write_bytes): value 12.775
+ 245.0.NN (disk.all.total_bytes): value 12.775
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95184
+ 245.0.NN (mem.util.cached): value 258084
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 2
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 2
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 12.775
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.775
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 12.775
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.775
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 12.8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 12.8
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:34.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 8.8400002
+ 245.0.NN (kernel.all.intr): value 12.65
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8200002
+ 245.0.NN (mem.vmstat.pgfault): value 6.02
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.2299995
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 4.8200002
+ 245.0.NN (disk.all.total_bytes): value 4.8200002
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95192
+ 245.0.NN (mem.util.cached): value 258092
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0.40000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.40000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 4.8200002
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 4.8200002
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 4.8200002
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 4.8200002
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 24
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 24
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:39.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 8.3800001
+ 245.0.NN (kernel.all.intr): value 12.77
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.98
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3800001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 7.9850001
+ 245.0.NN (disk.all.total_bytes): value 7.9850001
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95200
+ 245.0.NN (mem.util.cached): value 258100
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 7.9850001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:44.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 8.9799995
+ 245.0.NN (kernel.all.intr): value 13.57
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 18.360001
+ 245.0.NN (mem.vmstat.pgfault): value 5.9899998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.1800003
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.3900001
+ 245.0.NN (disk.all.total): value 3.3900001
+ 245.0.NN (disk.all.write_bytes): value 18.365
+ 245.0.NN (disk.all.total_bytes): value 18.365
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95208
+ 245.0.NN (mem.util.cached): value 258108
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 3.3900001
+ inst [1 or "diskdev254-1"] value 2.4000001
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 18.365
+ inst [1 or "diskdev254-1"] value 10.38
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 18.365
+ inst [1 or "diskdev254-1"] value 10.38
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 7.9850001
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 10.82
+ inst [1 or "diskdev254-1"] value 8.6700001
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:49.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9.1999998
+ 245.0.NN (kernel.all.intr): value 13.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3999996
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 8
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95216
+ 245.0.NN (mem.util.cached): value 258116
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 0.80000001
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0.80000001
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 20
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 20
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.40000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.07
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:54.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 1
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 1
+ 245.0.NN (kernel.all.pswitch): value 8.1999998
+ 245.0.NN (kernel.all.intr): value 13.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.1999998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 8
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95224
+ 245.0.NN (mem.util.cached): value 258124
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.0099999998
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:24:59.000 245.0.NN (kernel.all.cpu.user): value 0
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99800003
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 9.1999998
+ 245.0.NN (kernel.all.intr): value 13
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8
+ 245.0.NN (mem.vmstat.pgfault): value 6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 8.3999996
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 8
+ 245.0.NN (disk.all.total_bytes): value 8
+ 245.0.NN (mem.util.free): value 563768
+ 245.0.NN (mem.util.used): value 471364
+ 245.0.NN (mem.util.bufmem): value 95232
+ 245.0.NN (mem.util.cached): value 258132
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 8
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 8
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 16
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 16
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+
+05:25:04.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99599999
+ 245.0.NN (kernel.percpu.cpu.user): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys): inst [0 or "cpu0"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest): inst [0 or "cpu0"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle): inst [0 or "cpu0"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 21
+ 245.0.NN (kernel.all.intr): value 15.6
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 10.4
+ 245.0.NN (mem.vmstat.pgfault): value 168.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 43.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.4
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 10.4
+ 245.0.NN (disk.all.total_bytes): value 10.4
+ 245.0.NN (mem.util.free): value 563644
+ 245.0.NN (mem.util.used): value 471488
+ 245.0.NN (mem.util.bufmem): value 95240
+ 245.0.NN (mem.util.cached): value 258140
+ 245.0.NN (mem.util.swapFree): value 441336
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 309937
+ 245.0.NN (vfs.files.count): value 2193
+ 245.0.NN (vfs.inodes.count): value 26198
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 228
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0
+ inst [2 or "15 minute"] value 0
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev254-0"] value 1.4
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 1.4
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev254-0"] value 10.4
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 10.4
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev254-0"] value 10.4
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 10.4
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev254-0"] value 14.86
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 14.86
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev254-0"] value 0
+ inst [1 or "diskdev254-1"] value 0
+ inst [2 or "diskdev254-2"] value 0
+ inst [3 or "diskdev254-5"] value 0
+ inst [4 or "diskdev254-6"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.2
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0.050000001
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "lo"] value 0
+ inst [1 or "eth0"] value 0
+ inst [2 or "pan0"] value 0
diff --git a/qa/370.out.6 b/qa/370.out.6
new file mode 100644
index 0000000..5b8ebd1
--- /dev/null
+++ b/qa/370.out.6
@@ -0,0 +1,5619 @@
+QA output created by 370
+check user CPU time ...
+
+check timestamps ...
+
+check sys CPU time ...
+
+check user disk iops ...
+
+check user disk write thruput ...
+
+full dump ...
+Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo-laptop
+ commencing Tue Mar 26 06:56:05.000 2013
+ ending Tue Mar 26 06:58:55.000 2013
+
+06:56:05.000 245.0.NN (hinv.ncpu): value 2
+ 245.0.NN (kernel.all.cpu.user): value 0.0131
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0070000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97589999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0.0141
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97780001
+ inst [1 or "cpu1"] value 0.97790003
+ 245.0.NN (kernel.all.pswitch): value 387.20001
+ 245.0.NN (kernel.all.intr): value 295
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 23.200001
+ 245.0.NN (mem.vmstat.pgfault): value 15.2
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 54.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 23.200001
+ 245.0.NN (disk.all.total_bytes): value 23.200001
+ 245.0.NN (mem.util.free): value 1931584
+ 245.0.NN (mem.util.used): value 1170936
+ 245.0.NN (mem.util.bufmem): value 49476
+ 245.0.NN (mem.util.cached): value 439492
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46290
+ 245.0.NN (vfs.files.count): value 8320
+ 245.0.NN (vfs.inodes.count): value 25042
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.61000001
+ inst [1 or "5 minute"] value 0.41999999
+ inst [2 or "15 minute"] value 0.41999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 23.200001
+ inst [1 or "diskdev8-1"] value 23.200001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 23.200001
+ inst [1 or "diskdev8-1"] value 23.200001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0063999998
+ inst [1 or "diskdev8-1"] value 0.0063999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 116
+ inst [1 or "diskdev8-1"] value 116
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 16
+ inst [1 or "diskdev8-1"] value 16
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 16
+ inst [1 or "diskdev8-1"] value 16
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0.40000001
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0.40000001
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0.079999998
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.059999999
+ inst [1 or "lo"] value 0.079999998
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:10.000 245.0.NN (kernel.all.cpu.user): value 0.0071
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.030200001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9587
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.060600001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.92119998
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 372.79999
+ 245.0.NN (kernel.all.intr): value 236.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 327.20001
+ 245.0.NN (mem.vmstat.pgfault): value 10
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 51.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 48
+ 245.0.NN (disk.all.total): value 48
+ 245.0.NN (disk.all.write_bytes): value 327.20001
+ 245.0.NN (disk.all.total_bytes): value 327.20001
+ 245.0.NN (mem.util.free): value 1931428
+ 245.0.NN (mem.util.used): value 1171092
+ 245.0.NN (mem.util.bufmem): value 49532
+ 245.0.NN (mem.util.cached): value 439488
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46290
+ 245.0.NN (vfs.files.count): value 8320
+ 245.0.NN (vfs.inodes.count): value 25042
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.56
+ inst [1 or "5 minute"] value 0.41
+ inst [2 or "15 minute"] value 0.41999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 48
+ inst [1 or "diskdev8-1"] value 48
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 327.20001
+ inst [1 or "diskdev8-1"] value 327.20001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 327.20001
+ inst [1 or "diskdev8-1"] value 327.20001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.1504
+ inst [1 or "diskdev8-1"] value 0.1504
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 13.63
+ inst [1 or "diskdev8-1"] value 13.63
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 7.2800002
+ inst [1 or "diskdev8-1"] value 7.2800002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 151.72
+ inst [1 or "diskdev8-1"] value 151.72
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 3.1300001
+ inst [1 or "diskdev8-1"] value 3.1300001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 1.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.19
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:15.000 245.0.NN (kernel.all.cpu.user): value 0.0131
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0070000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97579998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0.0141
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97170001
+ inst [1 or "cpu1"] value 0.98189998
+ 245.0.NN (kernel.all.pswitch): value 414.79999
+ 245.0.NN (kernel.all.intr): value 258.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 27.200001
+ 245.0.NN (mem.vmstat.pgfault): value 37
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 54.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.8
+ 245.0.NN (disk.all.total): value 3.8
+ 245.0.NN (disk.all.write_bytes): value 27.200001
+ 245.0.NN (disk.all.total_bytes): value 27.200001
+ 245.0.NN (mem.util.free): value 1931372
+ 245.0.NN (mem.util.used): value 1171148
+ 245.0.NN (mem.util.bufmem): value 49540
+ 245.0.NN (mem.util.cached): value 439516
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46290
+ 245.0.NN (vfs.files.count): value 8320
+ 245.0.NN (vfs.inodes.count): value 25042
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.51999998
+ inst [1 or "5 minute"] value 0.40000001
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 3.8
+ inst [1 or "diskdev8-1"] value 3
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 27.200001
+ inst [1 or "diskdev8-1"] value 27.200001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 27.200001
+ inst [1 or "diskdev8-1"] value 27.200001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.038400002
+ inst [1 or "diskdev8-1"] value 0.0071999999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 14.32
+ inst [1 or "diskdev8-1"] value 18.129999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.039999999
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 10.11
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 10.11
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.029999999
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:20.000 245.0.NN (kernel.all.cpu.user): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0241
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9598
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.048300002
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.93159997
+ inst [1 or "cpu1"] value 0.986
+ 245.0.NN (kernel.all.pswitch): value 343.79999
+ 245.0.NN (kernel.all.intr): value 270
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 32
+ 245.0.NN (mem.vmstat.pgfault): value 10.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 5
+ 245.0.NN (disk.all.total): value 5
+ 245.0.NN (disk.all.write_bytes): value 32
+ 245.0.NN (disk.all.total_bytes): value 32
+ 245.0.NN (mem.util.free): value 1931380
+ 245.0.NN (mem.util.used): value 1171140
+ 245.0.NN (mem.util.bufmem): value 49548
+ 245.0.NN (mem.util.cached): value 439524
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46290
+ 245.0.NN (vfs.files.count): value 8320
+ 245.0.NN (vfs.inodes.count): value 25042
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.47
+ inst [1 or "5 minute"] value 0.40000001
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 5
+ inst [1 or "diskdev8-1"] value 5
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 32
+ inst [1 or "diskdev8-1"] value 32
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 32
+ inst [1 or "diskdev8-1"] value 32
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.048
+ inst [1 or "diskdev8-1"] value 0.048
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12.8
+ inst [1 or "diskdev8-1"] value 12.8
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.050000001
+ inst [1 or "diskdev8-1"] value 0.050000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 9.6000004
+ inst [1 or "diskdev8-1"] value 9.6000004
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 9.6000004
+ inst [1 or "diskdev8-1"] value 9.6000004
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 1.6
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.18000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:25.000 245.0.NN (kernel.all.cpu.user): value 0.1505
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.095299996
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.098300003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.64990002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.14489999
+ inst [1 or "cpu1"] value 0.154
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.066399999
+ inst [1 or "cpu1"] value 0.126
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.1811
+ inst [1 or "cpu1"] value 0.016000001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.60360003
+ inst [1 or "cpu1"] value 0.69599998
+ 245.0.NN (kernel.all.pswitch): value 3391
+ 245.0.NN (kernel.all.intr): value 869.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 316.79999
+ 245.0.NN (mem.vmstat.pgpgout): value 237.60001
+ 245.0.NN (mem.vmstat.pgfault): value 3214.2
+ 245.0.NN (mem.vmstat.pgmajfault): value 2
+ 245.0.NN (mem.vmstat.pgfree): value 3333.6001
+ 245.0.NN (disk.all.read): value 23.4
+ 245.0.NN (disk.all.read_bytes): value 316.79999
+ 245.0.NN (disk.all.write): value 15.8
+ 245.0.NN (disk.all.total): value 39.200001
+ 245.0.NN (disk.all.write_bytes): value 237.60001
+ 245.0.NN (disk.all.total_bytes): value 554.40002
+ 245.0.NN (mem.util.free): value 1926432
+ 245.0.NN (mem.util.used): value 1176088
+ 245.0.NN (mem.util.bufmem): value 50152
+ 245.0.NN (mem.util.cached): value 440844
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46399
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 3
+ 245.0.NN (proc.nproc): value 608
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.44
+ inst [1 or "5 minute"] value 0.38999999
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 39.200001
+ inst [1 or "diskdev8-1"] value 39
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 316.79999
+ inst [1 or "diskdev8-1"] value 316.79999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 237.60001
+ inst [1 or "diskdev8-1"] value 237.60001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 554.40002
+ inst [1 or "diskdev8-1"] value 554.40002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.2976
+ inst [1 or "diskdev8-1"] value 0.29679999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 28.290001
+ inst [1 or "diskdev8-1"] value 28.43
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.52999997
+ inst [1 or "diskdev8-1"] value 0.51999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 13.45
+ inst [1 or "diskdev8-1"] value 13.46
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 7.5900002
+ inst [1 or "diskdev8-1"] value 7.6100001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 18.200001
+ inst [1 or "lo"] value 2.8
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 17.6
+ inst [1 or "lo"] value 2.8
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 6.7199998
+ inst [1 or "lo"] value 0.56
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 2.71
+ inst [1 or "lo"] value 0.56
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:30.000 245.0.NN (kernel.all.cpu.user): value 0.0524
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.033300001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.1058
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.80650002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.042300001
+ inst [1 or "cpu1"] value 0.064400002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.030200001
+ inst [1 or "cpu1"] value 0.034200002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.1911
+ inst [1 or "cpu1"] value 0.0221
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.7324
+ inst [1 or "cpu1"] value 0.8793
+ 245.0.NN (kernel.all.pswitch): value 1538.8
+ 245.0.NN (kernel.all.intr): value 531.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 40.799999
+ 245.0.NN (mem.vmstat.pgpgout): value 164.8
+ 245.0.NN (mem.vmstat.pgfault): value 225.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 350
+ 245.0.NN (disk.all.read): value 1.4
+ 245.0.NN (disk.all.read_bytes): value 40.799999
+ 245.0.NN (disk.all.write): value 16.4
+ 245.0.NN (disk.all.total): value 17.799999
+ 245.0.NN (disk.all.write_bytes): value 164.8
+ 245.0.NN (disk.all.total_bytes): value 205.60001
+ 245.0.NN (mem.util.free): value 1924504
+ 245.0.NN (mem.util.used): value 1178016
+ 245.0.NN (mem.util.bufmem): value 50364
+ 245.0.NN (mem.util.cached): value 441204
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46406
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25102
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 608
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.40000001
+ inst [1 or "5 minute"] value 0.38
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 17.799999
+ inst [1 or "diskdev8-1"] value 17.799999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 40.799999
+ inst [1 or "diskdev8-1"] value 40.799999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 164.8
+ inst [1 or "diskdev8-1"] value 164.8
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 205.60001
+ inst [1 or "diskdev8-1"] value 205.60001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.2272
+ inst [1 or "diskdev8-1"] value 0.2272
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 23.1
+ inst [1 or "diskdev8-1"] value 23.1
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.23
+ inst [1 or "diskdev8-1"] value 0.23
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 12.99
+ inst [1 or "diskdev8-1"] value 12.99
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 12.76
+ inst [1 or "diskdev8-1"] value 12.76
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 2.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 1.4
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 2.24
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.11
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:35.000 245.0.NN (kernel.all.cpu.user): value 0.021299999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0283
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.095100001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.85530001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.018300001
+ inst [1 or "cpu1"] value 0.0222
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.034600001
+ inst [1 or "cpu1"] value 0.0222
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.099799998
+ inst [1 or "cpu1"] value 0.090700001
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.84729999
+ inst [1 or "cpu1"] value 0.86489999
+ 245.0.NN (kernel.all.pswitch): value 1581.4
+ 245.0.NN (kernel.all.intr): value 457.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 8
+ 245.0.NN (mem.vmstat.pgpgout): value 128.8
+ 245.0.NN (mem.vmstat.pgfault): value 47.400002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 397.79999
+ 245.0.NN (disk.all.read): value 2
+ 245.0.NN (disk.all.read_bytes): value 8
+ 245.0.NN (disk.all.write): value 13.2
+ 245.0.NN (disk.all.total): value 15.2
+ 245.0.NN (disk.all.write_bytes): value 128.8
+ 245.0.NN (disk.all.total_bytes): value 136.8
+ 245.0.NN (mem.util.free): value 1924184
+ 245.0.NN (mem.util.used): value 1178336
+ 245.0.NN (mem.util.bufmem): value 50412
+ 245.0.NN (mem.util.cached): value 441264
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 607
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.37
+ inst [1 or "5 minute"] value 0.38
+ inst [2 or "15 minute"] value 0.40000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 15.2
+ inst [1 or "diskdev8-1"] value 15.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 8
+ inst [1 or "diskdev8-1"] value 8
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 128.8
+ inst [1 or "diskdev8-1"] value 128.8
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 136.8
+ inst [1 or "diskdev8-1"] value 136.8
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.1
+ inst [1 or "diskdev8-1"] value 0.1
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 18
+ inst [1 or "diskdev8-1"] value 18
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.47999999
+ inst [1 or "diskdev8-1"] value 0.47999999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 31.42
+ inst [1 or "diskdev8-1"] value 31.42
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 6.5799999
+ inst [1 or "diskdev8-1"] value 6.5799999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:40.000 245.0.NN (kernel.all.cpu.user): value 0.019300001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0101
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0264
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94419998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0184
+ inst [1 or "cpu1"] value 0.020199999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0163
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.053100001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.91219997
+ inst [1 or "cpu1"] value 0.9738
+ 245.0.NN (kernel.all.pswitch): value 981.79999
+ 245.0.NN (kernel.all.intr): value 426
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 22.4
+ 245.0.NN (mem.vmstat.pgfault): value 19.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 180.60001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.2
+ 245.0.NN (disk.all.total): value 3.2
+ 245.0.NN (disk.all.write_bytes): value 22.4
+ 245.0.NN (disk.all.total_bytes): value 22.4
+ 245.0.NN (mem.util.free): value 1924144
+ 245.0.NN (mem.util.used): value 1178376
+ 245.0.NN (mem.util.bufmem): value 50420
+ 245.0.NN (mem.util.cached): value 441272
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.41999999
+ inst [1 or "5 minute"] value 0.38999999
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 3.2
+ inst [1 or "diskdev8-1"] value 3.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 22.4
+ inst [1 or "diskdev8-1"] value 22.4
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 22.4
+ inst [1 or "diskdev8-1"] value 22.4
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.053599998
+ inst [1 or "diskdev8-1"] value 0.053599998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 14
+ inst [1 or "diskdev8-1"] value 14
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.050000001
+ inst [1 or "diskdev8-1"] value 0.050000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 16.75
+ inst [1 or "diskdev8-1"] value 16.75
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 16.75
+ inst [1 or "diskdev8-1"] value 16.75
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.80000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.050000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:45.000 245.0.NN (kernel.all.cpu.user): value 0.0244
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.031500001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94309998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.020500001
+ inst [1 or "cpu1"] value 0.030099999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.022500001
+ inst [1 or "cpu1"] value 0.040199999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.95490003
+ inst [1 or "cpu1"] value 0.92970002
+ 245.0.NN (kernel.all.pswitch): value 1664.4
+ 245.0.NN (kernel.all.intr): value 481.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 10.4
+ 245.0.NN (mem.vmstat.pgfault): value 53.599998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 411
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2
+ 245.0.NN (disk.all.total): value 2
+ 245.0.NN (disk.all.write_bytes): value 10.4
+ 245.0.NN (disk.all.total_bytes): value 10.4
+ 245.0.NN (mem.util.free): value 1923608
+ 245.0.NN (mem.util.used): value 1178912
+ 245.0.NN (mem.util.bufmem): value 50420
+ 245.0.NN (mem.util.cached): value 441284
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 3
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.38999999
+ inst [1 or "5 minute"] value 0.38
+ inst [2 or "15 minute"] value 0.41
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 2
+ inst [1 or "diskdev8-1"] value 2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 10.4
+ inst [1 or "diskdev8-1"] value 10.4
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 10.4
+ inst [1 or "diskdev8-1"] value 10.4
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 10.4
+ inst [1 or "diskdev8-1"] value 10.4
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0.80000001
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.80000001
+ inst [1 or "lo"] value 0.80000001
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.13
+ inst [1 or "lo"] value 0.15000001
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.1
+ inst [1 or "lo"] value 0.15000001
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:50.000 245.0.NN (kernel.all.cpu.user): value 0.018100001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0151
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.96069998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.018300001
+ inst [1 or "cpu1"] value 0.018100001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.018300001
+ inst [1 or "cpu1"] value 0.0099999998
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9533
+ inst [1 or "cpu1"] value 0.97189999
+ 245.0.NN (kernel.all.pswitch): value 944.59998
+ 245.0.NN (kernel.all.intr): value 409
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.5999999
+ 245.0.NN (mem.vmstat.pgfault): value 10
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 168.60001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 5.5999999
+ 245.0.NN (disk.all.total_bytes): value 5.5999999
+ 245.0.NN (mem.util.free): value 1923568
+ 245.0.NN (mem.util.used): value 1178952
+ 245.0.NN (mem.util.bufmem): value 50428
+ 245.0.NN (mem.util.cached): value 441296
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.36000001
+ inst [1 or "5 minute"] value 0.37
+ inst [2 or "15 minute"] value 0.40000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.60000002
+ inst [1 or "diskdev8-1"] value 0.60000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 5.5999999
+ inst [1 or "diskdev8-1"] value 5.5999999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 5.5999999
+ inst [1 or "diskdev8-1"] value 5.5999999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0112
+ inst [1 or "diskdev8-1"] value 0.0112
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 18.67
+ inst [1 or "diskdev8-1"] value 18.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 18.67
+ inst [1 or "diskdev8-1"] value 18.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 18.67
+ inst [1 or "diskdev8-1"] value 18.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.80000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.13
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.029999999
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:56:55.000 245.0.NN (kernel.all.cpu.user): value 0.016100001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.016100001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.96780002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0141
+ inst [1 or "cpu1"] value 0.016100001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0222
+ inst [1 or "cpu1"] value 0.0101
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9637
+ inst [1 or "cpu1"] value 0.9738
+ 245.0.NN (kernel.all.pswitch): value 934.79999
+ 245.0.NN (kernel.all.intr): value 370.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 9.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 168.39999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 4.8000002
+ 245.0.NN (disk.all.total_bytes): value 4.8000002
+ 245.0.NN (mem.util.free): value 1923504
+ 245.0.NN (mem.util.used): value 1179016
+ 245.0.NN (mem.util.bufmem): value 50428
+ 245.0.NN (mem.util.cached): value 441304
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.33000001
+ inst [1 or "5 minute"] value 0.37
+ inst [2 or "15 minute"] value 0.40000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 24
+ inst [1 or "diskdev8-1"] value 24
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 1
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 1
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.1
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.1
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:00.000 245.0.NN (kernel.all.cpu.user): value 0.0244
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0285
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9411
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0244
+ inst [1 or "cpu1"] value 0.0262
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.036699999
+ inst [1 or "cpu1"] value 0.0221
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0122
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.92460001
+ inst [1 or "cpu1"] value 0.95169997
+ 245.0.NN (kernel.all.pswitch): value 1642.2
+ 245.0.NN (kernel.all.intr): value 464.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 50.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 407.79999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 4.8000002
+ 245.0.NN (disk.all.total_bytes): value 4.8000002
+ 245.0.NN (mem.util.free): value 1923456
+ 245.0.NN (mem.util.used): value 1179064
+ 245.0.NN (mem.util.bufmem): value 50436
+ 245.0.NN (mem.util.cached): value 441316
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.30000001
+ inst [1 or "5 minute"] value 0.36000001
+ inst [2 or "15 minute"] value 0.40000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.60000002
+ inst [1 or "diskdev8-1"] value 0.60000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 16
+ inst [1 or "diskdev8-1"] value 16
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 21.33
+ inst [1 or "diskdev8-1"] value 21.33
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 20
+ inst [1 or "diskdev8-1"] value 20
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.80000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.090000004
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.039999999
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:05.000 245.0.NN (kernel.all.cpu.user): value 0.0241
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0211
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.94870001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0264
+ inst [1 or "cpu1"] value 0.022
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.018300001
+ inst [1 or "cpu1"] value 0.022
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.94520003
+ inst [1 or "cpu1"] value 0.95590001
+ 245.0.NN (kernel.all.pswitch): value 997.79999
+ 245.0.NN (kernel.all.intr): value 437.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 19.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 179.2
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 1923416
+ 245.0.NN (mem.util.used): value 1179104
+ 245.0.NN (mem.util.bufmem): value 50444
+ 245.0.NN (mem.util.cached): value 441324
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25100
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.28
+ inst [1 or "5 minute"] value 0.36000001
+ inst [2 or "15 minute"] value 0.40000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.60000002
+ inst [1 or "diskdev8-1"] value 0.60000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 3.2
+ inst [1 or "diskdev8-1"] value 3.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 3.2
+ inst [1 or "diskdev8-1"] value 3.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0128
+ inst [1 or "diskdev8-1"] value 0.0128
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 10.67
+ inst [1 or "diskdev8-1"] value 10.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 21.33
+ inst [1 or "diskdev8-1"] value 21.33
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 21.33
+ inst [1 or "diskdev8-1"] value 21.33
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:10.000 245.0.NN (kernel.all.cpu.user): value 0.0121
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0101
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0051000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9727
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.0121
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0142
+ inst [1 or "cpu1"] value 0.0081000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96560001
+ inst [1 or "cpu1"] value 0.97979999
+ 245.0.NN (kernel.all.pswitch): value 614
+ 245.0.NN (kernel.all.intr): value 336.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 11.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 101.6
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923776
+ 245.0.NN (mem.util.used): value 1178744
+ 245.0.NN (mem.util.bufmem): value 50452
+ 245.0.NN (mem.util.cached): value 441336
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25099
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.25
+ inst [1 or "5 minute"] value 0.34999999
+ inst [2 or "15 minute"] value 0.40000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0104
+ inst [1 or "diskdev8-1"] value 0.0104
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:15.000 245.0.NN (kernel.all.cpu.user): value 0.0091000004
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0070000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9799
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0141
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96569997
+ inst [1 or "cpu1"] value 0.99000001
+ 245.0.NN (kernel.all.pswitch): value 375.39999
+ 245.0.NN (kernel.all.intr): value 226.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 10
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 58
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923636
+ 245.0.NN (mem.util.used): value 1178884
+ 245.0.NN (mem.util.bufmem): value 50460
+ 245.0.NN (mem.util.cached): value 441348
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25099
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.23
+ inst [1 or "5 minute"] value 0.34
+ inst [2 or "15 minute"] value 0.38999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0096000005
+ inst [1 or "diskdev8-1"] value 0.0096000005
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 24
+ inst [1 or "diskdev8-1"] value 24
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 24
+ inst [1 or "diskdev8-1"] value 24
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 1
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.050000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.079999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:20.000 245.0.NN (kernel.all.cpu.user): value 0.0070000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98089999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0060999999
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97780001
+ inst [1 or "cpu1"] value 0.98989999
+ 245.0.NN (kernel.all.pswitch): value 346
+ 245.0.NN (kernel.all.intr): value 236.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 10.2
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 56.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923660
+ 245.0.NN (mem.util.used): value 1178860
+ 245.0.NN (mem.util.bufmem): value 50468
+ 245.0.NN (mem.util.cached): value 441356
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.22
+ inst [1 or "5 minute"] value 0.34
+ inst [2 or "15 minute"] value 0.38999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0104
+ inst [1 or "diskdev8-1"] value 0.0104
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 2.4000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 1.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.25999999
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.13
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:25.000 245.0.NN (kernel.all.cpu.user): value 0.0101
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9799
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0141
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97780001
+ inst [1 or "cpu1"] value 0.98189998
+ 245.0.NN (kernel.all.pswitch): value 344.20001
+ 245.0.NN (kernel.all.intr): value 237.2
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 10
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 52
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923520
+ 245.0.NN (mem.util.used): value 1179000
+ 245.0.NN (mem.util.bufmem): value 50476
+ 245.0.NN (mem.util.cached): value 441368
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.2
+ inst [1 or "5 minute"] value 0.33000001
+ inst [2 or "15 minute"] value 0.38999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0104
+ inst [1 or "diskdev8-1"] value 0.0104
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 1.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.1
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:30.000 245.0.NN (kernel.all.cpu.user): value 0.0070000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97890002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0081000002
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9698
+ inst [1 or "cpu1"] value 0.98799998
+ 245.0.NN (kernel.all.pswitch): value 344
+ 245.0.NN (kernel.all.intr): value 220.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 9.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 53.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923536
+ 245.0.NN (mem.util.used): value 1178984
+ 245.0.NN (mem.util.bufmem): value 50484
+ 245.0.NN (mem.util.cached): value 441376
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.18000001
+ inst [1 or "5 minute"] value 0.33000001
+ inst [2 or "15 minute"] value 0.38999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0104
+ inst [1 or "diskdev8-1"] value 0.0104
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.079999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.029999999
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:35.000 245.0.NN (kernel.all.cpu.user): value 0.0081000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98280001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0081000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0041
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97970003
+ inst [1 or "cpu1"] value 0.98790002
+ 245.0.NN (kernel.all.pswitch): value 335.39999
+ 245.0.NN (kernel.all.intr): value 226.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 10.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 50.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923472
+ 245.0.NN (mem.util.used): value 1179048
+ 245.0.NN (mem.util.bufmem): value 50492
+ 245.0.NN (mem.util.cached): value 441388
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.17
+ inst [1 or "5 minute"] value 0.31999999
+ inst [2 or "15 minute"] value 0.38999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0104
+ inst [1 or "diskdev8-1"] value 0.0104
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:40.000 245.0.NN (kernel.all.cpu.user): value 0.0121
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97680002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0.018100001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97790003
+ inst [1 or "cpu1"] value 0.97390002
+ 245.0.NN (kernel.all.pswitch): value 380.79999
+ 245.0.NN (kernel.all.intr): value 265.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 18.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 60
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923408
+ 245.0.NN (mem.util.used): value 1179112
+ 245.0.NN (mem.util.bufmem): value 50500
+ 245.0.NN (mem.util.cached): value 441400
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.15000001
+ inst [1 or "5 minute"] value 0.31999999
+ inst [2 or "15 minute"] value 0.38
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0104
+ inst [1 or "diskdev8-1"] value 0.0104
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 26
+ inst [1 or "diskdev8-1"] value 26
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.0099999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.02
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:45.000 245.0.NN (kernel.all.cpu.user): value 0.018100001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0089999996
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.96579999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.016100001
+ inst [1 or "cpu1"] value 0.02
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.95779997
+ inst [1 or "cpu1"] value 0.96990001
+ 245.0.NN (kernel.all.pswitch): value 445.20001
+ 245.0.NN (kernel.all.intr): value 345.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 24.799999
+ 245.0.NN (mem.vmstat.pgfault): value 22.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 63.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 24.799999
+ 245.0.NN (disk.all.total_bytes): value 24.799999
+ 245.0.NN (mem.util.free): value 1923320
+ 245.0.NN (mem.util.used): value 1179200
+ 245.0.NN (mem.util.bufmem): value 50508
+ 245.0.NN (mem.util.cached): value 441408
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.14
+ inst [1 or "5 minute"] value 0.31
+ inst [2 or "15 minute"] value 0.38
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.60000002
+ inst [1 or "diskdev8-1"] value 0.60000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 24.799999
+ inst [1 or "diskdev8-1"] value 24.799999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 24.799999
+ inst [1 or "diskdev8-1"] value 24.799999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0112
+ inst [1 or "diskdev8-1"] value 0.0112
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 82.669998
+ inst [1 or "diskdev8-1"] value 82.669998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 18.67
+ inst [1 or "diskdev8-1"] value 18.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 18.67
+ inst [1 or "diskdev8-1"] value 18.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:50.000 245.0.NN (kernel.all.cpu.user): value 0.0071
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98280001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0142
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0122
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96749997
+ inst [1 or "cpu1"] value 1
+ 245.0.NN (kernel.all.pswitch): value 322.20001
+ 245.0.NN (kernel.all.intr): value 212
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 5.5999999
+ 245.0.NN (mem.vmstat.pgfault): value 10
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 45.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 5.5999999
+ 245.0.NN (disk.all.total_bytes): value 5.5999999
+ 245.0.NN (mem.util.free): value 1923168
+ 245.0.NN (mem.util.used): value 1179352
+ 245.0.NN (mem.util.bufmem): value 50516
+ 245.0.NN (mem.util.cached): value 441420
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.13
+ inst [1 or "5 minute"] value 0.31
+ inst [2 or "15 minute"] value 0.38
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1
+ inst [1 or "diskdev8-1"] value 1
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 5.5999999
+ inst [1 or "diskdev8-1"] value 5.5999999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 5.5999999
+ inst [1 or "diskdev8-1"] value 5.5999999
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 11.2
+ inst [1 or "diskdev8-1"] value 11.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.0099999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:57:55.000 245.0.NN (kernel.all.cpu.user): value 0.0091000004
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9849
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99190003
+ inst [1 or "cpu1"] value 0.9799
+ 245.0.NN (kernel.all.pswitch): value 335.79999
+ 245.0.NN (kernel.all.intr): value 236
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 10
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 50.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 4.8000002
+ 245.0.NN (disk.all.total_bytes): value 4.8000002
+ 245.0.NN (mem.util.free): value 1923216
+ 245.0.NN (mem.util.used): value 1179304
+ 245.0.NN (mem.util.bufmem): value 50516
+ 245.0.NN (mem.util.cached): value 441428
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.12
+ inst [1 or "5 minute"] value 0.30000001
+ inst [2 or "15 minute"] value 0.38
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 24
+ inst [1 or "diskdev8-1"] value 24
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.40000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.050000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.050000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:00.000 245.0.NN (kernel.all.cpu.user): value 0.0070000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98089999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0141
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9738
+ inst [1 or "cpu1"] value 0.98390001
+ 245.0.NN (kernel.all.pswitch): value 329
+ 245.0.NN (kernel.all.intr): value 222.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 9.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 49.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 4.8000002
+ 245.0.NN (disk.all.total_bytes): value 4.8000002
+ 245.0.NN (mem.util.free): value 1923512
+ 245.0.NN (mem.util.used): value 1179008
+ 245.0.NN (mem.util.bufmem): value 50524
+ 245.0.NN (mem.util.cached): value 441440
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.11
+ inst [1 or "5 minute"] value 0.30000001
+ inst [2 or "15 minute"] value 0.38
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.60000002
+ inst [1 or "diskdev8-1"] value 0.60000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0136
+ inst [1 or "diskdev8-1"] value 0.0136
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 16
+ inst [1 or "diskdev8-1"] value 16
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 24
+ inst [1 or "diskdev8-1"] value 24
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 22.67
+ inst [1 or "diskdev8-1"] value 22.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.0099999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.02
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:05.000 245.0.NN (kernel.all.cpu.user): value 0.011
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0099999998
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97189999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.016000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97780001
+ inst [1 or "cpu1"] value 0.97189999
+ 245.0.NN (kernel.all.pswitch): value 374.39999
+ 245.0.NN (kernel.all.intr): value 306.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 11.2
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 52
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923448
+ 245.0.NN (mem.util.used): value 1179072
+ 245.0.NN (mem.util.bufmem): value 50532
+ 245.0.NN (mem.util.cached): value 441452
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.1
+ inst [1 or "5 minute"] value 0.28999999
+ inst [2 or "15 minute"] value 0.37
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.050000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:10.000 245.0.NN (kernel.all.cpu.user): value 0.0081000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0071
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0051000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97979999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0121
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0121
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97979999
+ inst [1 or "cpu1"] value 0.97589999
+ 245.0.NN (kernel.all.pswitch): value 383
+ 245.0.NN (kernel.all.intr): value 314.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 18
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 60
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923384
+ 245.0.NN (mem.util.used): value 1179136
+ 245.0.NN (mem.util.bufmem): value 50540
+ 245.0.NN (mem.util.cached): value 441460
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.090000004
+ inst [1 or "5 minute"] value 0.28999999
+ inst [2 or "15 minute"] value 0.37
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.0099999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.02
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:15.000 245.0.NN (kernel.all.cpu.user): value 0.0151
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0131
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.96380001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.02
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0081000002
+ inst [1 or "cpu1"] value 0.017999999
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.016100001
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96569997
+ inst [1 or "cpu1"] value 0.95999998
+ 245.0.NN (kernel.all.pswitch): value 433.79999
+ 245.0.NN (kernel.all.intr): value 333.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12.8
+ 245.0.NN (mem.vmstat.pgfault): value 19
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 66
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 12.8
+ 245.0.NN (disk.all.total_bytes): value 12.8
+ 245.0.NN (mem.util.free): value 1923212
+ 245.0.NN (mem.util.used): value 1179308
+ 245.0.NN (mem.util.bufmem): value 50548
+ 245.0.NN (mem.util.cached): value 441472
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25097
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.090000004
+ inst [1 or "5 minute"] value 0.28
+ inst [2 or "15 minute"] value 0.37
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.80000001
+ inst [1 or "diskdev8-1"] value 0.80000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 12.8
+ inst [1 or "diskdev8-1"] value 12.8
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 12.8
+ inst [1 or "diskdev8-1"] value 12.8
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0144
+ inst [1 or "diskdev8-1"] value 0.0144
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 32
+ inst [1 or "diskdev8-1"] value 32
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 18
+ inst [1 or "diskdev8-1"] value 18
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 18
+ inst [1 or "diskdev8-1"] value 18
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.0099999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.079999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:20.000 245.0.NN (kernel.all.cpu.user): value 0.0091000004
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.003
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98189998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0081000002
+ inst [1 or "cpu1"] value 0.0101
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97570002
+ inst [1 or "cpu1"] value 0.98790002
+ 245.0.NN (kernel.all.pswitch): value 347.20001
+ 245.0.NN (kernel.all.intr): value 271.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 11.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 55
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 4.8000002
+ 245.0.NN (disk.all.total_bytes): value 4.8000002
+ 245.0.NN (mem.util.free): value 1923196
+ 245.0.NN (mem.util.used): value 1179324
+ 245.0.NN (mem.util.bufmem): value 50556
+ 245.0.NN (mem.util.cached): value 441480
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.079999998
+ inst [1 or "5 minute"] value 0.28
+ inst [2 or "15 minute"] value 0.37
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 1
+ inst [1 or "diskdev8-1"] value 1
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 9.6000004
+ inst [1 or "diskdev8-1"] value 9.6000004
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 1.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.19
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.090000004
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:25.000 245.0.NN (kernel.all.cpu.user): value 0.0101
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0081000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98180002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0141
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0081000002
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98580003
+ inst [1 or "cpu1"] value 0.9799
+ 245.0.NN (kernel.all.pswitch): value 367.60001
+ 245.0.NN (kernel.all.intr): value 302.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4
+ 245.0.NN (mem.vmstat.pgfault): value 18
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 60.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.2
+ 245.0.NN (disk.all.total): value 0.2
+ 245.0.NN (disk.all.write_bytes): value 4
+ 245.0.NN (disk.all.total_bytes): value 4
+ 245.0.NN (mem.util.free): value 1923148
+ 245.0.NN (mem.util.used): value 1179372
+ 245.0.NN (mem.util.bufmem): value 50556
+ 245.0.NN (mem.util.cached): value 441492
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.07
+ inst [1 or "5 minute"] value 0.27000001
+ inst [2 or "15 minute"] value 0.37
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.2
+ inst [1 or "diskdev8-1"] value 0.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 4
+ inst [1 or "diskdev8-1"] value 4
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 4
+ inst [1 or "diskdev8-1"] value 4
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 40
+ inst [1 or "diskdev8-1"] value 40
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:30.000 245.0.NN (kernel.all.cpu.user): value 0.0091000004
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0091000004
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0071
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97479999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0121
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060999999
+ inst [1 or "cpu1"] value 0.0121
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0142
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97369999
+ inst [1 or "cpu1"] value 0.97589999
+ 245.0.NN (kernel.all.pswitch): value 380.20001
+ 245.0.NN (kernel.all.intr): value 281.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 18.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 59.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 4.8000002
+ 245.0.NN (disk.all.total_bytes): value 4.8000002
+ 245.0.NN (mem.util.free): value 1923076
+ 245.0.NN (mem.util.used): value 1179444
+ 245.0.NN (mem.util.bufmem): value 50564
+ 245.0.NN (mem.util.cached): value 441504
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.07
+ inst [1 or "5 minute"] value 0.27000001
+ inst [2 or "15 minute"] value 0.37
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.60000002
+ inst [1 or "diskdev8-1"] value 0.60000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 4.8000002
+ inst [1 or "diskdev8-1"] value 4.8000002
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.0136
+ inst [1 or "diskdev8-1"] value 0.0136
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 16
+ inst [1 or "diskdev8-1"] value 16
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 22.67
+ inst [1 or "diskdev8-1"] value 22.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 22.67
+ inst [1 or "diskdev8-1"] value 22.67
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:35.000 245.0.NN (kernel.all.cpu.user): value 0.0091000004
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98189998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97180003
+ inst [1 or "cpu1"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 327
+ 245.0.NN (kernel.all.intr): value 217.8
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 9.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 50
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923116
+ 245.0.NN (mem.util.used): value 1179404
+ 245.0.NN (mem.util.bufmem): value 50572
+ 245.0.NN (mem.util.cached): value 441512
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.25999999
+ inst [2 or "15 minute"] value 0.36000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.050000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:40.000 245.0.NN (kernel.all.cpu.user): value 0.0121
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0080000004
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97390002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0101
+ inst [1 or "cpu1"] value 0.016000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0099999998
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97180003
+ inst [1 or "cpu1"] value 0.97390002
+ 245.0.NN (kernel.all.pswitch): value 371.45999
+ 245.0.NN (kernel.all.intr): value 237.72
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 18.16
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 59.68
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.395
+ 245.0.NN (disk.all.total_bytes): value 2.395
+ 245.0.NN (mem.util.free): value 1923404
+ 245.0.NN (mem.util.used): value 1179116
+ 245.0.NN (mem.util.bufmem): value 50580
+ 245.0.NN (mem.util.cached): value 441524
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.25999999
+ inst [2 or "15 minute"] value 0.36000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.395
+ inst [1 or "diskdev8-1"] value 2.395
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.395
+ inst [1 or "diskdev8-1"] value 2.395
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:45.000 245.0.NN (kernel.all.cpu.user): value 0.0131
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0101
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9709
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0141
+ inst [1 or "cpu1"] value 0.0121
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0141
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96789998
+ inst [1 or "cpu1"] value 0.9738
+ 245.0.NN (kernel.all.pswitch): value 402.79999
+ 245.0.NN (kernel.all.intr): value 308.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 18.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 58.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923276
+ 245.0.NN (mem.util.used): value 1179244
+ 245.0.NN (mem.util.bufmem): value 50588
+ 245.0.NN (mem.util.cached): value 441532
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.25
+ inst [2 or "15 minute"] value 0.36000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.2
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.0099999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.079999998
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:50.000 245.0.NN (kernel.all.cpu.user): value 0.0081000002
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97979999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0121
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0081000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0121
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97979999
+ inst [1 or "cpu1"] value 0.97979999
+ 245.0.NN (kernel.all.pswitch): value 337
+ 245.0.NN (kernel.all.intr): value 317.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 9.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 51.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 1923236
+ 245.0.NN (mem.util.used): value 1179284
+ 245.0.NN (mem.util.bufmem): value 50596
+ 245.0.NN (mem.util.cached): value 441544
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.25
+ inst [2 or "15 minute"] value 0.36000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 3.2
+ inst [1 or "diskdev8-1"] value 3.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 3.2
+ inst [1 or "diskdev8-1"] value 3.2
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 16
+ inst [1 or "diskdev8-1"] value 16
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.80000001
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.13
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+
+06:58:55.000 245.0.NN (kernel.all.cpu.user): value 0.0101
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0060000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97790003
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.016100001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97790003
+ inst [1 or "cpu1"] value 0.97790003
+ 245.0.NN (kernel.all.pswitch): value 344.20001
+ 245.0.NN (kernel.all.intr): value 274.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 9.8000002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 52.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 1923196
+ 245.0.NN (mem.util.used): value 1179324
+ 245.0.NN (mem.util.bufmem): value 50604
+ 245.0.NN (mem.util.cached): value 441556
+ 245.0.NN (mem.util.swapFree): value 3142652
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 46405
+ 245.0.NN (vfs.files.count): value 8352
+ 245.0.NN (vfs.inodes.count): value 25095
+ 245.0.NN (proc.runq.runnable): value 1
+ 245.0.NN (proc.nproc): value 606
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.12
+ inst [1 or "5 minute"] value 0.25999999
+ inst [2 or "15 minute"] value 0.36000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev8-0"] value 0.40000001
+ inst [1 or "diskdev8-1"] value 0.40000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev8-0"] value 0
+ inst [1 or "diskdev8-1"] value 0
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev8-0"] value 2.4000001
+ inst [1 or "diskdev8-1"] value 2.4000001
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev8-0"] value 0.012
+ inst [1 or "diskdev8-1"] value 0.012
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev8-0"] value 12
+ inst [1 or "diskdev8-1"] value 12
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev8-0"] value 0.0099999998
+ inst [1 or "diskdev8-1"] value 0.0099999998
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev8-0"] value 30
+ inst [1 or "diskdev8-1"] value 30
+ inst [2 or "diskdev8-2"] value 0
+ inst [3 or "diskdev8-5"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "wlan0"] value 0.60000002
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "wlan0"] value 0.07
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "wlan0"] value 0
+ inst [1 or "lo"] value 0
+ inst [2 or "eth0"] value 0
diff --git a/qa/370.out.7 b/qa/370.out.7
new file mode 100644
index 0000000..09dc3b7
--- /dev/null
+++ b/qa/370.out.7
@@ -0,0 +1,13424 @@
+QA output created by 370
+check user CPU time ...
+
+check timestamps ...
+
+check sys CPU time ...
+
+check user disk iops ...
+
+check user disk write thruput ...
+
+full dump ...
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Sun Aug 3 23:13:27.000 2014
+ ending Sun Aug 3 23:16:17.000 2014
+
+23:13:27.000 245.0.NN (hinv.ncpu): value 6
+ 245.0.NN (kernel.all.cpu.user): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.995
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99599999
+ inst [4 or "cpu4"] value 1
+ inst [5 or "cpu5"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 455.60001
+ 245.0.NN (kernel.all.intr): value 297.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 6.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 24
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 42.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.6
+ 245.0.NN (disk.all.total): value 1.6
+ 245.0.NN (disk.all.write_bytes): value 7.1999998
+ 245.0.NN (disk.all.total_bytes): value 7.1999998
+ 245.0.NN (mem.util.free): value 2458068
+ 245.0.NN (mem.util.used): value 5718604
+ 245.0.NN (mem.util.bufmem): value 855516
+ 245.0.NN (mem.util.cached): value 1988628
+ 245.0.NN (mem.util.dirty): value 168
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.6
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.1999998
+ inst [2 or "diskdev8-1"] value 7.1999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.1999998
+ inst [2 or "diskdev8-1"] value 7.1999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0031999999
+ inst [2 or "diskdev8-1"] value 0.0031999999
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9
+ inst [2 or "diskdev8-1"] value 9
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.5
+ inst [2 or "diskdev8-1"] value 2.5
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2
+ inst [2 or "diskdev8-1"] value 2
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 3.2
+ inst [2 or "eth0"] value 3.5999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.4
+ inst [2 or "eth0"] value 1.4
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.27000001
+ inst [2 or "eth0"] value 0.34
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.11
+ inst [2 or "eth0"] value 0.11
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469224
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39806
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:13:32.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0033
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99229997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.014
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98799998
+ inst [1 or "cpu1"] value 0.98000002
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99599999
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 444.60001
+ 245.0.NN (kernel.all.intr): value 291
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 16.799999
+ 245.0.NN (mem.vmstat.pgfault): value 20.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 37.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2
+ 245.0.NN (disk.all.total): value 2
+ 245.0.NN (disk.all.write_bytes): value 16.799999
+ 245.0.NN (disk.all.total_bytes): value 16.799999
+ 245.0.NN (mem.util.free): value 2457960
+ 245.0.NN (mem.util.used): value 5718712
+ 245.0.NN (mem.util.bufmem): value 855524
+ 245.0.NN (mem.util.cached): value 1988664
+ 245.0.NN (mem.util.dirty): value 208
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0.40000001
+ inst [5 or "diskdev8-6"] value 0.80000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.80000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16.799999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 3.2
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8.8000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16.799999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 3.2
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8.8000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0184
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0.0040000002
+ inst [5 or "diskdev8-6"] value 0.0071999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0071999999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16.799999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 16
+ inst [5 or "diskdev8-6"] value 12
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 22
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0099999998
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.1999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 10
+ inst [5 or "diskdev8-6"] value 9
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.1999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 10
+ inst [5 or "diskdev8-6"] value 9
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1
+ inst [2 or "eth0"] value 1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.40000001
+ inst [2 or "eth0"] value 0.40000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.11
+ inst [2 or "eth0"] value 0.12
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.059999999
+ inst [2 or "eth0"] value 0.059999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469224
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39806
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:13:37.000 245.0.NN (kernel.all.cpu.user): value 0.0017
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9957
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99599999
+ inst [1 or "cpu1"] value 0.99000001
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 1
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 408.60001
+ 245.0.NN (kernel.all.intr): value 274
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 14.4
+ 245.0.NN (mem.vmstat.pgfault): value 18.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 28.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3
+ 245.0.NN (disk.all.total): value 3
+ 245.0.NN (disk.all.write_bytes): value 14.4
+ 245.0.NN (disk.all.total_bytes): value 14.4
+ 245.0.NN (mem.util.free): value 2457820
+ 245.0.NN (mem.util.used): value 5718852
+ 245.0.NN (mem.util.bufmem): value 855524
+ 245.0.NN (mem.util.cached): value 1988692
+ 245.0.NN (mem.util.dirty): value 228
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 2.5999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 12
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 12
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0040000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 9.2299995
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.33
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.33
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2
+ inst [2 or "eth0"] value 2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1
+ inst [2 or "eth0"] value 1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.25
+ inst [2 or "eth0"] value 0.28
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.23
+ inst [2 or "eth0"] value 0.23
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469224
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39806
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:13:42.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0017
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99529999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98400003
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 392.20001
+ 245.0.NN (kernel.all.intr): value 265.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 10.4
+ 245.0.NN (mem.vmstat.pgfault): value 20.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 31.4
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 10.4
+ 245.0.NN (disk.all.total_bytes): value 10.4
+ 245.0.NN (mem.util.free): value 2457820
+ 245.0.NN (mem.util.used): value 5718852
+ 245.0.NN (mem.util.bufmem): value 855524
+ 245.0.NN (mem.util.cached): value 1988716
+ 245.0.NN (mem.util.dirty): value 196
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.40000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.60000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 2.4000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 2.4000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0096000005
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0040000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0055999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 20.799999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 12
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 26.67
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 10
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9.3299999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.6000004
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 10
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9.3299999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.80000001
+ inst [1 or "br0"] value 1.8
+ inst [2 or "eth0"] value 1.8
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.13
+ inst [1 or "br0"] value 0.25999999
+ inst [2 or "eth0"] value 0.28
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.0099999998
+ inst [2 or "eth0"] value 0.0099999998
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469224
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39806
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:13:47.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99629998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99599999
+ inst [1 or "cpu1"] value 0.986
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 362
+ 245.0.NN (kernel.all.intr): value 273.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 6.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 18.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 28.6
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 6.4000001
+ 245.0.NN (disk.all.total_bytes): value 6.4000001
+ 245.0.NN (mem.util.free): value 2457696
+ 245.0.NN (mem.util.used): value 5718976
+ 245.0.NN (mem.util.bufmem): value 855528
+ 245.0.NN (mem.util.cached): value 1988736
+ 245.0.NN (mem.util.dirty): value 200
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4.8000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4.8000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0040000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ inst [2 or "diskdev8-1"] value 8
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 24
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.60000002
+ inst [1 or "br0"] value 1.4
+ inst [2 or "eth0"] value 1.4
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.07
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.22
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.02
+ inst [2 or "eth0"] value 0.02
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469224
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39806
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:13:52.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9957
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99400002
+ inst [1 or "cpu1"] value 0.98799998
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 1
+ 245.0.NN (kernel.all.pswitch): value 421
+ 245.0.NN (kernel.all.intr): value 311.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 20.799999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 31.4
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 2457448
+ 245.0.NN (mem.util.used): value 5719224
+ 245.0.NN (mem.util.bufmem): value 855532
+ 245.0.NN (mem.util.cached): value 1988760
+ 245.0.NN (mem.util.dirty): value 224
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.2
+ inst [2 or "eth0"] value 1.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.40000001
+ inst [2 or "eth0"] value 0.40000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.079999998
+ inst [2 or "eth0"] value 0.1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.02
+ inst [2 or "eth0"] value 0.02
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469224
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39806
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:13:57.000 245.0.NN (kernel.all.cpu.user): value 0.0017
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0013
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.995
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99000001
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99599999
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 392.20001
+ 245.0.NN (kernel.all.intr): value 295.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 39.200001
+ 245.0.NN (mem.vmstat.pgfault): value 72
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 145
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.4
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 39.200001
+ 245.0.NN (disk.all.total_bytes): value 39.200001
+ 245.0.NN (mem.util.free): value 2457396
+ 245.0.NN (mem.util.used): value 5719276
+ 245.0.NN (mem.util.bufmem): value 855536
+ 245.0.NN (mem.util.cached): value 1988780
+ 245.0.NN (mem.util.dirty): value 28
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.4
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.40000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.60000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 39.200001
+ inst [2 or "diskdev8-1"] value 2.4000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 3.2
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 33.599998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 39.200001
+ inst [2 or "diskdev8-1"] value 2.4000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 3.2
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 33.599998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0071999999
+ inst [2 or "diskdev8-1"] value 0.0040000002
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0031999999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 56
+ inst [2 or "diskdev8-1"] value 12
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 16
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 112
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.1399999
+ inst [2 or "diskdev8-1"] value 10
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 5.3299999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.1399999
+ inst [2 or "diskdev8-1"] value 10
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 5.3299999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.8
+ inst [2 or "eth0"] value 1.8
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.80000001
+ inst [2 or "eth0"] value 0.80000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.18000001
+ inst [2 or "eth0"] value 0.20999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.050000001
+ inst [2 or "eth0"] value 0.050000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:02.000 245.0.NN (kernel.all.cpu.user): value 0.0027000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0103
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98430002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.056000002
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.93800002
+ inst [1 or "cpu1"] value 0.98799998
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99000001
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 472.60001
+ 245.0.NN (kernel.all.intr): value 352.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 23.200001
+ 245.0.NN (mem.vmstat.pgfault): value 19.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 41
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.4000001
+ 245.0.NN (disk.all.total): value 3.4000001
+ 245.0.NN (disk.all.write_bytes): value 23.200001
+ 245.0.NN (disk.all.total_bytes): value 23.200001
+ 245.0.NN (mem.util.free): value 2457260
+ 245.0.NN (mem.util.used): value 5719412
+ 245.0.NN (mem.util.bufmem): value 855536
+ 245.0.NN (mem.util.cached): value 1988804
+ 245.0.NN (mem.util.dirty): value 112
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0.40000001
+ inst [5 or "diskdev8-6"] value 0.60000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 23.200001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 1.6
+ inst [5 or "diskdev8-6"] value 8.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12.8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 23.200001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 1.6
+ inst [5 or "diskdev8-6"] value 8.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12.8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.059999999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.055199999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 13.65
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 8
+ inst [5 or "diskdev8-6"] value 29.33
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10.67
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.059999999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.059999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 17.65
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 92
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 17.65
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 92
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 3
+ inst [2 or "eth0"] value 3
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2
+ inst [2 or "eth0"] value 2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.31
+ inst [2 or "eth0"] value 0.34999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.25999999
+ inst [2 or "eth0"] value 0.25999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:07.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0013
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99669999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99199998
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 384.79999
+ 245.0.NN (kernel.all.intr): value 293.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 18.200001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 29.4
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 2457260
+ 245.0.NN (mem.util.used): value 5719412
+ 245.0.NN (mem.util.bufmem): value 855536
+ 245.0.NN (mem.util.cached): value 1988824
+ 245.0.NN (mem.util.dirty): value 88
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.60000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10.67
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.6
+ inst [2 or "eth0"] value 1.6
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.40000001
+ inst [2 or "eth0"] value 0.40000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.16
+ inst [2 or "eth0"] value 0.18000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.029999999
+ inst [2 or "eth0"] value 0.029999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:12.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99629998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99400002
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 385.20001
+ 245.0.NN (kernel.all.intr): value 293.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 7.1999998
+ 245.0.NN (mem.vmstat.pgfault): value 20.799999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 31.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.6
+ 245.0.NN (disk.all.total): value 1.6
+ 245.0.NN (disk.all.write_bytes): value 7.1999998
+ 245.0.NN (disk.all.total_bytes): value 7.1999998
+ 245.0.NN (mem.util.free): value 2457260
+ 245.0.NN (mem.util.used): value 5719412
+ 245.0.NN (mem.util.bufmem): value 855540
+ 245.0.NN (mem.util.cached): value 1988848
+ 245.0.NN (mem.util.dirty): value 108
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.6
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 1.2
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.1999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.1999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0040000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 8
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.059999999
+ inst [2 or "eth0"] value 0.059999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:17.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0013
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9957
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98610002
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 1
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 376.79999
+ 245.0.NN (kernel.all.intr): value 289.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4
+ 245.0.NN (mem.vmstat.pgfault): value 17.799999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 28.6
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 4
+ 245.0.NN (disk.all.total_bytes): value 4
+ 245.0.NN (mem.util.free): value 2457260
+ 245.0.NN (mem.util.used): value 5719412
+ 245.0.NN (mem.util.bufmem): value 855548
+ 245.0.NN (mem.util.cached): value 1988868
+ 245.0.NN (mem.util.dirty): value 104
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417250
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864822
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 667
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0071999999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0071999999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ inst [2 or "diskdev8-1"] value 8
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 18
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 18
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.6
+ inst [2 or "eth0"] value 1.6
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.40000001
+ inst [2 or "eth0"] value 0.40000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.17
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.090000004
+ inst [2 or "eth0"] value 0.090000004
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:22.000 245.0.NN (kernel.all.cpu.user): value 0.0057000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0043000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98869997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0060000001
+ inst [3 or "cpu3"] value 0.014
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0060000001
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99400002
+ inst [1 or "cpu1"] value 0.986
+ inst [2 or "cpu2"] value 0.99000001
+ inst [3 or "cpu3"] value 0.98000002
+ inst [4 or "cpu4"] value 0.99000001
+ inst [5 or "cpu5"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 583.79999
+ 245.0.NN (kernel.all.intr): value 466.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 1755.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1279.4
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 2444996
+ 245.0.NN (mem.util.used): value 5731676
+ 245.0.NN (mem.util.bufmem): value 855552
+ 245.0.NN (mem.util.cached): value 1988892
+ 245.0.NN (mem.util.dirty): value 132
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417281
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864864
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 676
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0055999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 14
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 14
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.2
+ inst [2 or "eth0"] value 1.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.17
+ inst [2 or "eth0"] value 0.19
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.13
+ inst [2 or "eth0"] value 0.13
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:27.000 245.0.NN (kernel.all.cpu.user): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0013
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99400002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.986
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99400002
+ inst [5 or "cpu5"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 456.60001
+ 245.0.NN (kernel.all.intr): value 307.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 6.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 54.400002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 34.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1
+ 245.0.NN (disk.all.total): value 1
+ 245.0.NN (disk.all.write_bytes): value 6.4000001
+ 245.0.NN (disk.all.total_bytes): value 6.4000001
+ 245.0.NN (mem.util.free): value 2444492
+ 245.0.NN (mem.util.used): value 5732180
+ 245.0.NN (mem.util.bufmem): value 855564
+ 245.0.NN (mem.util.cached): value 1988916
+ 245.0.NN (mem.util.dirty): value 164
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417283
+ 245.0.NN (vfs.files.count): value 10176
+ 245.0.NN (vfs.inodes.count): value 864866
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 676
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1
+ inst [2 or "diskdev8-1"] value 0.60000002
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 3.2
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 3.2
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0063999998
+ inst [2 or "diskdev8-1"] value 0.0040000002
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0024000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12.8
+ inst [2 or "diskdev8-1"] value 10.67
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 16
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 6.6700001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 6.6700001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2
+ inst [2 or "eth0"] value 2
+ inst [3 or "lo"] value 1.6
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 1.6
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.28
+ inst [2 or "eth0"] value 0.30000001
+ inst [3 or "lo"] value 0.40000001
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.13
+ inst [2 or "eth0"] value 0.13
+ inst [3 or "lo"] value 0.40000001
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:32.000 245.0.NN (kernel.all.cpu.user): value 0.0184
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0107
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0017
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.96890002
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.017999999
+ inst [1 or "cpu1"] value 0.0099999998
+ inst [2 or "cpu2"] value 0.017999999
+ inst [3 or "cpu3"] value 0.017999999
+ inst [4 or "cpu4"] value 0.022
+ inst [5 or "cpu5"] value 0.0261
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0.0099999998
+ inst [2 or "cpu2"] value 0.0099999998
+ inst [3 or "cpu3"] value 0.0099999998
+ inst [4 or "cpu4"] value 0.012
+ inst [5 or "cpu5"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.96390003
+ inst [1 or "cpu1"] value 0.9799
+ inst [2 or "cpu2"] value 0.972
+ inst [3 or "cpu3"] value 0.972
+ inst [4 or "cpu4"] value 0.96390003
+ inst [5 or "cpu5"] value 0.9619
+ 245.0.NN (kernel.all.pswitch): value 1652
+ 245.0.NN (kernel.all.intr): value 962
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 38.400002
+ 245.0.NN (mem.vmstat.pgfault): value 4391.3999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1954.2
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.4
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 38.400002
+ 245.0.NN (disk.all.total_bytes): value 38.400002
+ 245.0.NN (mem.util.free): value 2440176
+ 245.0.NN (mem.util.used): value 5736496
+ 245.0.NN (mem.util.bufmem): value 855564
+ 245.0.NN (mem.util.cached): value 1988944
+ 245.0.NN (mem.util.dirty): value 216
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417326
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864931
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 677
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0
+ inst [1 or "5 minute"] value 0.0099999998
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.40000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 1
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 38.400002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 34.400002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 38.400002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 34.400002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0112
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0048000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0063999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 54.860001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 20
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 68.800003
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 12
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 12
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.2
+ inst [1 or "br0"] value 1.6
+ inst [2 or "eth0"] value 1.6
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1
+ inst [2 or "eth0"] value 1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.0099999998
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.22
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.14
+ inst [2 or "eth0"] value 0.14
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:37.000 245.0.NN (kernel.all.cpu.user): value 0.0103
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0063
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0073000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97600001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0.0080000004
+ inst [2 or "cpu2"] value 0.012
+ inst [3 or "cpu3"] value 0.0099999998
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.012
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0080000004
+ inst [2 or "cpu2"] value 0.0080000004
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0080000004
+ inst [5 or "cpu5"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.044
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.93800002
+ inst [1 or "cpu1"] value 0.98400003
+ inst [2 or "cpu2"] value 0.98000002
+ inst [3 or "cpu3"] value 0.986
+ inst [4 or "cpu4"] value 0.98400003
+ inst [5 or "cpu5"] value 0.98199999
+ 245.0.NN (kernel.all.pswitch): value 1156.4
+ 245.0.NN (kernel.all.intr): value 698.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 39.200001
+ 245.0.NN (mem.vmstat.pgfault): value 176.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 940.40002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.6
+ 245.0.NN (disk.all.total): value 1.6
+ 245.0.NN (disk.all.write_bytes): value 39.200001
+ 245.0.NN (disk.all.total_bytes): value 39.200001
+ 245.0.NN (mem.util.free): value 2453208
+ 245.0.NN (mem.util.used): value 5723464
+ 245.0.NN (mem.util.bufmem): value 855580
+ 245.0.NN (mem.util.cached): value 1988980
+ 245.0.NN (mem.util.dirty): value 264
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.16
+ inst [1 or "5 minute"] value 0.050000001
+ inst [2 or "15 minute"] value 0.059999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.6
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0.40000001
+ inst [5 or "diskdev8-6"] value 0.40000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 39.200001
+ inst [2 or "diskdev8-1"] value 15.2
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 11.2
+ inst [5 or "diskdev8-6"] value 5.5999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 7.1999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 39.200001
+ inst [2 or "diskdev8-1"] value 15.2
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 11.2
+ inst [5 or "diskdev8-6"] value 5.5999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 7.1999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.044
+ inst [2 or "diskdev8-1"] value 0.0328
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0.0152
+ inst [5 or "diskdev8-6"] value 0.031199999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 49
+ inst [2 or "diskdev8-1"] value 76
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 56
+ inst [5 or "diskdev8-6"] value 28
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 36
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.079999998
+ inst [2 or "diskdev8-1"] value 0.029999999
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0.02
+ inst [5 or "diskdev8-6"] value 0.029999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 52.5
+ inst [2 or "diskdev8-1"] value 82
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 38
+ inst [5 or "diskdev8-6"] value 78
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 27.5
+ inst [2 or "diskdev8-1"] value 82
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 38
+ inst [5 or "diskdev8-6"] value 78
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.40000001
+ inst [1 or "br0"] value 3.2
+ inst [2 or "eth0"] value 3.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.2
+ inst [2 or "eth0"] value 1.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.029999999
+ inst [1 or "br0"] value 0.38
+ inst [2 or "eth0"] value 0.43000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.23999999
+ inst [2 or "eth0"] value 0.23999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:42.000 245.0.NN (kernel.all.cpu.user): value 0.0046999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.003
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.991
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98799998
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99400002
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99000001
+ inst [5 or "cpu5"] value 0.98799998
+ 245.0.NN (kernel.all.pswitch): value 676.40002
+ 245.0.NN (kernel.all.intr): value 428.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4
+ 245.0.NN (mem.vmstat.pgfault): value 27
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 82.599998
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 4
+ 245.0.NN (disk.all.total_bytes): value 4
+ 245.0.NN (mem.util.free): value 2453332
+ 245.0.NN (mem.util.used): value 5723340
+ 245.0.NN (mem.util.bufmem): value 855584
+ 245.0.NN (mem.util.cached): value 1989000
+ 245.0.NN (mem.util.dirty): value 292
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.15000001
+ inst [1 or "5 minute"] value 0.050000001
+ inst [2 or "15 minute"] value 0.059999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0071999999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0071999999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 20
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 20
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 18
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 18
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 18
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 18
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 3.5999999
+ inst [2 or "eth0"] value 5.8000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.26
+ inst [2 or "eth0"] value 2.4300001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.029999999
+ inst [2 or "eth0"] value 0.029999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:47.000 245.0.NN (kernel.all.cpu.user): value 0.0033
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.003
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99299997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99199998
+ inst [2 or "cpu2"] value 0.99199998
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99400002
+ inst [5 or "cpu5"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 600.79999
+ 245.0.NN (kernel.all.intr): value 381.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4
+ 245.0.NN (mem.vmstat.pgfault): value 129.60001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 101.2
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 4
+ 245.0.NN (disk.all.total_bytes): value 4
+ 245.0.NN (mem.util.free): value 2452960
+ 245.0.NN (mem.util.used): value 5723712
+ 245.0.NN (mem.util.bufmem): value 855588
+ 245.0.NN (mem.util.cached): value 1989024
+ 245.0.NN (mem.util.dirty): value 316
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.14
+ inst [1 or "5 minute"] value 0.050000001
+ inst [2 or "15 minute"] value 0.059999999
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0040000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ inst [2 or "diskdev8-1"] value 8
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2.5999999
+ inst [2 or "eth0"] value 4
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.85000002
+ inst [2 or "eth0"] value 1.6
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.02
+ inst [2 or "eth0"] value 0.02
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:52.000 245.0.NN (kernel.all.cpu.user): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99470001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99199998
+ inst [2 or "cpu2"] value 0.99400002
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 437.20001
+ 245.0.NN (kernel.all.intr): value 304.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 3.2
+ 245.0.NN (mem.vmstat.pgfault): value 21.6
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 32.400002
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.60000002
+ 245.0.NN (disk.all.total): value 0.60000002
+ 245.0.NN (disk.all.write_bytes): value 3.2
+ 245.0.NN (disk.all.total_bytes): value 3.2
+ 245.0.NN (mem.util.free): value 2452712
+ 245.0.NN (mem.util.used): value 5723960
+ 245.0.NN (mem.util.bufmem): value 855588
+ 245.0.NN (mem.util.cached): value 1989044
+ 245.0.NN (mem.util.dirty): value 336
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.13
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.60000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.60000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0055999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.67
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10.67
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.3299999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9.3299999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9.3299999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9.3299999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1
+ inst [2 or "eth0"] value 1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.090000004
+ inst [2 or "eth0"] value 0.1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:14:57.000 245.0.NN (kernel.all.cpu.user): value 0.0017
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0043000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99229997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.024
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97189999
+ inst [1 or "cpu1"] value 1
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99599999
+ inst [4 or "cpu4"] value 1
+ inst [5 or "cpu5"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 398.20001
+ 245.0.NN (kernel.all.intr): value 300.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 16
+ 245.0.NN (mem.vmstat.pgfault): value 68.599998
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 66.199997
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 3.2
+ 245.0.NN (disk.all.total): value 3.2
+ 245.0.NN (disk.all.write_bytes): value 16
+ 245.0.NN (disk.all.total_bytes): value 16
+ 245.0.NN (mem.util.free): value 2452972
+ 245.0.NN (mem.util.used): value 5723700
+ 245.0.NN (mem.util.bufmem): value 855592
+ 245.0.NN (mem.util.cached): value 1989068
+ 245.0.NN (mem.util.dirty): value 360
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.12
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 3.2
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.60000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ inst [2 or "diskdev8-1"] value 2.4000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9.6000004
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ inst [2 or "diskdev8-1"] value 2.4000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 9.6000004
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.024800001
+ inst [2 or "diskdev8-1"] value 0.0208
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0040000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ inst [2 or "diskdev8-1"] value 12
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 13.33
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8.7299995
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ inst [2 or "diskdev8-1"] value 0.02
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.75
+ inst [2 or "diskdev8-1"] value 52
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 1.8200001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.75
+ inst [2 or "diskdev8-1"] value 52
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 1.8200001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.6
+ inst [2 or "eth0"] value 1.6
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.17
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.02
+ inst [2 or "eth0"] value 0.02
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:02.000 245.0.NN (kernel.all.cpu.user): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99000001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.026000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98799998
+ inst [1 or "cpu1"] value 0.96799999
+ inst [2 or "cpu2"] value 0.99400002
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 481.20001
+ 245.0.NN (kernel.all.intr): value 354.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 19.200001
+ 245.0.NN (mem.vmstat.pgfault): value 237.39999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 116.4
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.5999999
+ 245.0.NN (disk.all.total): value 2.5999999
+ 245.0.NN (disk.all.write_bytes): value 19.200001
+ 245.0.NN (disk.all.total_bytes): value 19.200001
+ 245.0.NN (mem.util.free): value 2452820
+ 245.0.NN (mem.util.used): value 5723852
+ 245.0.NN (mem.util.bufmem): value 855596
+ 245.0.NN (mem.util.cached): value 1989088
+ 245.0.NN (mem.util.dirty): value 336
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.11
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.5999999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 2.2
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 19.200001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 16.799999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 19.200001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 16.799999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.030400001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.024800001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0055999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 14.77
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 15.27
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.050000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.050000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 19.690001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 20.73
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 14
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.69
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 11.27
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 14
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.80000001
+ inst [2 or "eth0"] value 0.80000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.059999999
+ inst [2 or "eth0"] value 0.079999998
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.07
+ inst [2 or "eth0"] value 0.07
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:07.000 245.0.NN (kernel.all.cpu.user): value 0.0017
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0017
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99470001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.986
+ inst [1 or "cpu1"] value 0.99000001
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99599999
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 395.20001
+ 245.0.NN (kernel.all.intr): value 309
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 70.400002
+ 245.0.NN (mem.vmstat.pgfault): value 16
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 28.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 7.4000001
+ 245.0.NN (disk.all.total): value 7.4000001
+ 245.0.NN (disk.all.write_bytes): value 70.400002
+ 245.0.NN (disk.all.total_bytes): value 70.400002
+ 245.0.NN (mem.util.free): value 2452836
+ 245.0.NN (mem.util.used): value 5723836
+ 245.0.NN (mem.util.bufmem): value 855604
+ 245.0.NN (mem.util.cached): value 1989112
+ 245.0.NN (mem.util.dirty): value 88
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.1
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7.4000001
+ inst [2 or "diskdev8-1"] value 4.1999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 2.4000001
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.80000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 70.400002
+ inst [2 or "diskdev8-1"] value 24.799999
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 9.6000004
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 36
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 70.400002
+ inst [2 or "diskdev8-1"] value 24.799999
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 9.6000004
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 36
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0104
+ inst [2 or "diskdev8-1"] value 0.0055999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0055999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 19.030001
+ inst [2 or "diskdev8-1"] value 11.81
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 8
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 90
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ inst [2 or "diskdev8-1"] value 0.0099999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.3800001
+ inst [2 or "diskdev8-1"] value 2.8599999
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 7
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.41
+ inst [2 or "diskdev8-1"] value 1.33
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 7
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2
+ inst [2 or "eth0"] value 2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.22
+ inst [2 or "eth0"] value 0.25
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.0099999998
+ inst [2 or "eth0"] value 0.0099999998
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:12.000 245.0.NN (kernel.all.cpu.user): value 0.0027000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0027000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99229997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.016000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98000002
+ inst [1 or "cpu1"] value 0.99199998
+ inst [2 or "cpu2"] value 0.99400002
+ inst [3 or "cpu3"] value 0.99199998
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 1
+ 245.0.NN (kernel.all.pswitch): value 492.20001
+ 245.0.NN (kernel.all.intr): value 350
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 119
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 81.800003
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 8.8000002
+ 245.0.NN (disk.all.total_bytes): value 8.8000002
+ 245.0.NN (mem.util.free): value 2453084
+ 245.0.NN (mem.util.used): value 5723588
+ 245.0.NN (mem.util.bufmem): value 855604
+ 245.0.NN (mem.util.cached): value 1989132
+ 245.0.NN (mem.util.dirty): value 88
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.090000004
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.40000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0152
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0104
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 22
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 24
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 20
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0099999998
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 19
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 26
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 19
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 26
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1
+ inst [2 or "eth0"] value 1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.40000001
+ inst [2 or "eth0"] value 0.40000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.11
+ inst [2 or "eth0"] value 0.12
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.090000004
+ inst [2 or "eth0"] value 0.090000004
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:17.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.995
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98799998
+ inst [1 or "cpu1"] value 0.99800003
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99599999
+ inst [4 or "cpu4"] value 0.99400002
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 400.39999
+ 245.0.NN (kernel.all.intr): value 300.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 4
+ 245.0.NN (mem.vmstat.pgfault): value 14.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 28.4
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 4
+ 245.0.NN (disk.all.total_bytes): value 4
+ 245.0.NN (mem.util.free): value 2453084
+ 245.0.NN (mem.util.used): value 5723588
+ 245.0.NN (mem.util.bufmem): value 855608
+ 245.0.NN (mem.util.cached): value 1989156
+ 245.0.NN (mem.util.dirty): value 112
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417288
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864882
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.079999998
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 4
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0128
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0128
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10
+ inst [2 or "diskdev8-1"] value 8
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 32
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 32
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.8
+ inst [2 or "eth0"] value 1.8
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.36000001
+ inst [2 or "eth0"] value 0.38999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.079999998
+ inst [2 or "eth0"] value 0.079999998
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:22.000 245.0.NN (kernel.all.cpu.user): value 0.0147
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0082999999
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.97600001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0.0261
+ inst [2 or "cpu2"] value 0.017999999
+ inst [3 or "cpu3"] value 0.016000001
+ inst [4 or "cpu4"] value 0.0099999998
+ inst [5 or "cpu5"] value 0.014
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0099999998
+ inst [1 or "cpu1"] value 0.0099999998
+ inst [2 or "cpu2"] value 0.0080000004
+ inst [3 or "cpu3"] value 0.0080000004
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0099999998
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97600001
+ inst [1 or "cpu1"] value 0.96390003
+ inst [2 or "cpu2"] value 0.97399998
+ inst [3 or "cpu3"] value 0.97600001
+ inst [4 or "cpu4"] value 0.98390001
+ inst [5 or "cpu5"] value 0.97600001
+ 245.0.NN (kernel.all.pswitch): value 1339.2
+ 245.0.NN (kernel.all.intr): value 933.40002
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 2067
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 1733.8
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 2440492
+ 245.0.NN (mem.util.used): value 5736180
+ 245.0.NN (mem.util.bufmem): value 855608
+ 245.0.NN (mem.util.cached): value 1989180
+ 245.0.NN (mem.util.dirty): value 144
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417314
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864920
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 678
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.079999998
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.2
+ inst [1 or "br0"] value 9
+ inst [2 or "eth0"] value 9
+ inst [3 or "lo"] value 0.80000001
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 9.6000004
+ inst [2 or "eth0"] value 9.6000004
+ inst [3 or "lo"] value 0.80000001
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.0099999998
+ inst [1 or "br0"] value 2.4300001
+ inst [2 or "eth0"] value 2.5599999
+ inst [3 or "lo"] value 0.12
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.39
+ inst [2 or "eth0"] value 1.39
+ inst [3 or "lo"] value 0.12
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:27.000 245.0.NN (kernel.all.cpu.user): value 0.0046999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0037
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0013
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99000001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0060000001
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0080000004
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.98799998
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99199998
+ inst [3 or "cpu3"] value 0.99199998
+ inst [4 or "cpu4"] value 0.99000001
+ inst [5 or "cpu5"] value 0.99199998
+ 245.0.NN (kernel.all.pswitch): value 644
+ 245.0.NN (kernel.all.intr): value 405.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 8.8000002
+ 245.0.NN (mem.vmstat.pgfault): value 236.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 224.60001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 8.8000002
+ 245.0.NN (disk.all.total_bytes): value 8.8000002
+ 245.0.NN (mem.util.free): value 2439996
+ 245.0.NN (mem.util.used): value 5736676
+ 245.0.NN (mem.util.bufmem): value 855616
+ 245.0.NN (mem.util.cached): value 1989204
+ 245.0.NN (mem.util.dirty): value 228
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417323
+ 245.0.NN (vfs.files.count): value 10208
+ 245.0.NN (vfs.inodes.count): value 864927
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 678
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.07
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ inst [2 or "diskdev8-1"] value 2.4000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.8000002
+ inst [2 or "diskdev8-1"] value 2.4000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0071999999
+ inst [2 or "diskdev8-1"] value 0.0055999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0016
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 22
+ inst [2 or "diskdev8-1"] value 12
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 32
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0.0099999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9
+ inst [2 or "diskdev8-1"] value 14
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 9
+ inst [2 or "diskdev8-1"] value 14
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.40000001
+ inst [1 or "br0"] value 5.4000001
+ inst [2 or "eth0"] value 6
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2
+ inst [2 or "eth0"] value 2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.029999999
+ inst [1 or "br0"] value 0.46000001
+ inst [2 or "eth0"] value 0.56999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.14
+ inst [2 or "eth0"] value 0.14
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:32.000 245.0.NN (kernel.all.cpu.user): value 0.0049999999
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0037
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.98729998
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0060000001
+ inst [4 or "cpu4"] value 0.0060000001
+ inst [5 or "cpu5"] value 0.0080000004
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0060000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.012
+ inst [1 or "cpu1"] value 0.0099999998
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.9781
+ inst [1 or "cpu1"] value 0.97799999
+ inst [2 or "cpu2"] value 0.99400002
+ inst [3 or "cpu3"] value 0.99199998
+ inst [4 or "cpu4"] value 0.99199998
+ inst [5 or "cpu5"] value 0.986
+ 245.0.NN (kernel.all.pswitch): value 663.59998
+ 245.0.NN (kernel.all.intr): value 427
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 21.6
+ 245.0.NN (mem.vmstat.pgfault): value 262.20001
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 249.60001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2
+ 245.0.NN (disk.all.total): value 2
+ 245.0.NN (disk.all.write_bytes): value 21.6
+ 245.0.NN (disk.all.total_bytes): value 21.6
+ 245.0.NN (mem.util.free): value 2439384
+ 245.0.NN (mem.util.used): value 5737288
+ 245.0.NN (mem.util.bufmem): value 855620
+ 245.0.NN (mem.util.cached): value 1989240
+ 245.0.NN (mem.util.dirty): value 304
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417340
+ 245.0.NN (vfs.files.count): value 10240
+ 245.0.NN (vfs.inodes.count): value 864944
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 678
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.80000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 1.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 21.6
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 16.799999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 21.6
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 4.8000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 16.799999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0208
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0048000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.016000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 21.6
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 12
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 28
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.02
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 6
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 13.33
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 6
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 13.33
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 1.4
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.059999999
+ inst [2 or "eth0"] value 0.11
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.079999998
+ inst [2 or "eth0"] value 0.079999998
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318480
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204912
+
+23:15:37.000 245.0.NN (kernel.all.cpu.user): value 0.0027000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99470001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0060000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99199998
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 425.60001
+ 245.0.NN (kernel.all.intr): value 314.39999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 37.599998
+ 245.0.NN (mem.vmstat.pgfault): value 26
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 354.79999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 5.5999999
+ 245.0.NN (disk.all.total): value 5.5999999
+ 245.0.NN (disk.all.write_bytes): value 37.599998
+ 245.0.NN (disk.all.total_bytes): value 37.599998
+ 245.0.NN (mem.util.free): value 2445524
+ 245.0.NN (mem.util.used): value 5731148
+ 245.0.NN (mem.util.bufmem): value 855624
+ 245.0.NN (mem.util.cached): value 1988972
+ 245.0.NN (mem.util.dirty): value 348
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417321
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864916
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 677
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.059999999
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5.5999999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 1.4
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4.1999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 37.599998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 5.5999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 32
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 37.599998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 5.5999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 32
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0040000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 13.43
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 8
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 15.24
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.70999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.94999999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.70999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.94999999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2
+ inst [2 or "eth0"] value 2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.22
+ inst [2 or "eth0"] value 0.25
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.0099999998
+ inst [2 or "eth0"] value 0.0099999998
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:15:42.000 245.0.NN (kernel.all.cpu.user): value 0.0017
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9957
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0040000002
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99400002
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 0.99199998
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99400002
+ 245.0.NN (kernel.all.pswitch): value 433.60001
+ 245.0.NN (kernel.all.intr): value 309
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 34.400002
+ 245.0.NN (mem.vmstat.pgfault): value 65.400002
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 676.20001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 34.400002
+ 245.0.NN (disk.all.total_bytes): value 34.400002
+ 245.0.NN (mem.util.free): value 2458324
+ 245.0.NN (mem.util.used): value 5718348
+ 245.0.NN (mem.util.bufmem): value 855624
+ 245.0.NN (mem.util.cached): value 1988992
+ 245.0.NN (mem.util.dirty): value 256
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864866
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.40000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 34.400002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 3.2
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 31.200001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 34.400002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 3.2
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 31.200001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0040000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0040000002
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 86
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 16
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 156
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 10
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 5
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 10
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.60000002
+ inst [1 or "br0"] value 1.4
+ inst [2 or "eth0"] value 1.4
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.12
+ inst [1 or "br0"] value 0.22
+ inst [2 or "eth0"] value 0.23999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.02
+ inst [2 or "eth0"] value 0.02
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:15:47.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.9957
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0060000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99400002
+ inst [1 or "cpu1"] value 0.99800003
+ inst [2 or "cpu2"] value 0.99800003
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 1
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 387.79999
+ 245.0.NN (kernel.all.intr): value 288
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 6.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 15
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 29
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 6.4000001
+ 245.0.NN (disk.all.total_bytes): value 6.4000001
+ 245.0.NN (mem.util.free): value 2458324
+ 245.0.NN (mem.util.used): value 5718348
+ 245.0.NN (mem.util.bufmem): value 855628
+ 245.0.NN (mem.util.cached): value 1989016
+ 245.0.NN (mem.util.dirty): value 140
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864866
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4.8000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 6.4000001
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4.8000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0055999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 16
+ inst [2 or "diskdev8-1"] value 8
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 24
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 14
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 7
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 14
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.2
+ inst [1 or "br0"] value 1
+ inst [2 or "eth0"] value 1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.039999999
+ inst [1 or "br0"] value 0.15000001
+ inst [2 or "eth0"] value 0.16
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:15:52.000 245.0.NN (kernel.all.cpu.user): value 0.0023000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99470001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99199998
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 436
+ 245.0.NN (kernel.all.intr): value 325.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 11.2
+ 245.0.NN (mem.vmstat.pgfault): value 24.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 31.200001
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.2
+ 245.0.NN (disk.all.total): value 2.2
+ 245.0.NN (disk.all.write_bytes): value 11.2
+ 245.0.NN (disk.all.total_bytes): value 11.2
+ 245.0.NN (mem.util.free): value 2458324
+ 245.0.NN (mem.util.used): value 5718348
+ 245.0.NN (mem.util.bufmem): value 855628
+ 245.0.NN (mem.util.cached): value 1989036
+ 245.0.NN (mem.util.dirty): value 160
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864866
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.050000001
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 11.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.2
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 11.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0055999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.18
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10.18
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0099999998
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.55
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.55
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.55
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.55
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.2
+ inst [2 or "eth0"] value 1.6
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.40000001
+ inst [2 or "eth0"] value 0.40000001
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.34
+ inst [2 or "eth0"] value 0.63
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.029999999
+ inst [2 or "eth0"] value 0.029999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:15:57.000 245.0.NN (kernel.all.cpu.user): value 0.0017
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99470001
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.014
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97799999
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 1
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 401.79999
+ 245.0.NN (kernel.all.intr): value 308.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 12
+ 245.0.NN (mem.vmstat.pgfault): value 69.800003
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 63.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 1.4
+ 245.0.NN (disk.all.total): value 1.4
+ 245.0.NN (disk.all.write_bytes): value 12
+ 245.0.NN (disk.all.total_bytes): value 12
+ 245.0.NN (mem.util.free): value 2458668
+ 245.0.NN (mem.util.used): value 5718004
+ 245.0.NN (mem.util.bufmem): value 855632
+ 245.0.NN (mem.util.cached): value 1989060
+ 245.0.NN (mem.util.dirty): value 160
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864866
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.039999999
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 1.4
+ inst [2 or "diskdev8-1"] value 0.60000002
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.2
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.60000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 3.2
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 2.4000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 3.2
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 2.4000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 6.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0112
+ inst [2 or "diskdev8-1"] value 0.0063999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 17.139999
+ inst [2 or "diskdev8-1"] value 10.67
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 24
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 21.33
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0.0099999998
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ inst [2 or "diskdev8-1"] value 10.67
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8
+ inst [2 or "diskdev8-1"] value 10.67
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.8
+ inst [2 or "eth0"] value 1.8
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.2
+ inst [2 or "eth0"] value 0.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.18000001
+ inst [2 or "eth0"] value 0.20999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.0099999998
+ inst [2 or "eth0"] value 0.0099999998
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:16:02.000 245.0.NN (kernel.all.cpu.user): value 0.0027000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0027000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.003
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0.00030000001
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99129999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0.0080000004
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0060000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.017999999
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97600001
+ inst [1 or "cpu1"] value 0.986
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 1
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 472.39999
+ 245.0.NN (kernel.all.intr): value 345.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 10.4
+ 245.0.NN (mem.vmstat.pgfault): value 818
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 281.39999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.80000001
+ 245.0.NN (disk.all.total): value 0.80000001
+ 245.0.NN (disk.all.write_bytes): value 10.4
+ 245.0.NN (disk.all.total_bytes): value 10.4
+ 245.0.NN (mem.util.free): value 2458316
+ 245.0.NN (mem.util.used): value 5718356
+ 245.0.NN (mem.util.bufmem): value 855632
+ 245.0.NN (mem.util.cached): value 1989080
+ 245.0.NN (mem.util.dirty): value 160
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864866
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.039999999
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.80000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.80000001
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 10.4
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 10.4
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0184
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0184
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 26
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 26
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.02
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 23
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 23
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 23
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 23
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 12.2
+ inst [2 or "eth0"] value 12.2
+ inst [3 or "lo"] value 1.6
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 6.4000001
+ inst [2 or "eth0"] value 6.4000001
+ inst [3 or "lo"] value 1.6
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.05
+ inst [2 or "eth0"] value 1.22
+ inst [3 or "lo"] value 0.13
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 1.01
+ inst [2 or "eth0"] value 1.01
+ inst [3 or "lo"] value 0.13
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:16:07.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.00069999998
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99529999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0040000002
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0040000002
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99199998
+ inst [1 or "cpu1"] value 0.99199998
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99800003
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 1
+ 245.0.NN (kernel.all.pswitch): value 396
+ 245.0.NN (kernel.all.intr): value 302.60001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 2.4000001
+ 245.0.NN (mem.vmstat.pgfault): value 15.8
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 29.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 0.40000001
+ 245.0.NN (disk.all.total): value 0.40000001
+ 245.0.NN (disk.all.write_bytes): value 2.4000001
+ 245.0.NN (disk.all.total_bytes): value 2.4000001
+ 245.0.NN (mem.util.free): value 2458324
+ 245.0.NN (mem.util.used): value 5718348
+ 245.0.NN (mem.util.bufmem): value 855640
+ 245.0.NN (mem.util.cached): value 1989104
+ 245.0.NN (mem.util.dirty): value 196
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864866
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.039999999
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.40000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.40000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 2.4000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0048000002
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0048000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 12
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 12
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 2.2
+ inst [2 or "eth0"] value 2.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.60000002
+ inst [2 or "eth0"] value 0.60000002
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.25999999
+ inst [2 or "eth0"] value 0.28999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.1
+ inst [2 or "eth0"] value 0.1
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:16:12.000 245.0.NN (kernel.all.cpu.user): value 0.0020000001
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.001
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99529999
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0040000002
+ inst [4 or "cpu4"] value 0.0040000002
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0040000002
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.0020000001
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.99800003
+ inst [1 or "cpu1"] value 0.99400002
+ inst [2 or "cpu2"] value 0.99400002
+ inst [3 or "cpu3"] value 0.99400002
+ inst [4 or "cpu4"] value 0.99599999
+ inst [5 or "cpu5"] value 0.99599999
+ 245.0.NN (kernel.all.pswitch): value 424.20001
+ 245.0.NN (kernel.all.intr): value 321.79999
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 10.4
+ 245.0.NN (mem.vmstat.pgfault): value 19.799999
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 32.799999
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.4000001
+ 245.0.NN (disk.all.total): value 2.4000001
+ 245.0.NN (disk.all.write_bytes): value 10.4
+ 245.0.NN (disk.all.total_bytes): value 10.4
+ 245.0.NN (mem.util.free): value 2458324
+ 245.0.NN (mem.util.used): value 5718348
+ 245.0.NN (mem.util.bufmem): value 855644
+ 245.0.NN (mem.util.cached): value 1989124
+ 245.0.NN (mem.util.dirty): value 216
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864867
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.029999999
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.4000001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 1.8
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.60000002
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 7.1999998
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 10.4
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 7.1999998
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 3.2
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0055999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0.0031999999
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.0024000001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 8.6700001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 8
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 10.67
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.0099999998
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.3299999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 1.78
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.3299999
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 1.78
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 4
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.2
+ inst [1 or "br0"] value 3
+ inst [2 or "eth0"] value 3
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 3
+ inst [2 or "eth0"] value 3
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.0099999998
+ inst [1 or "br0"] value 0.25
+ inst [2 or "eth0"] value 0.28999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0.20999999
+ inst [2 or "eth0"] value 0.20999999
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
+
+23:16:17.000 245.0.NN (kernel.all.cpu.user): value 0.0013
+ 245.0.NN (kernel.all.cpu.nice): value 0
+ 245.0.NN (kernel.all.cpu.sys): value 0.0017
+ 245.0.NN (kernel.all.cpu.wait.total): value 0.0040000002
+ 245.0.NN (kernel.all.cpu.steal): value 0
+ 245.0.NN (kernel.all.cpu.intr): value 0
+ 245.0.NN (kernel.all.cpu.guest): value 0
+ 245.0.NN (kernel.all.cpu.idle): value 0.99299997
+ 245.0.NN (kernel.percpu.cpu.user):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0060000001
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.nice):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.sys):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0.0020000001
+ inst [3 or "cpu3"] value 0.0020000001
+ inst [4 or "cpu4"] value 0.0020000001
+ inst [5 or "cpu5"] value 0.0020000001
+ 245.0.NN (kernel.percpu.cpu.wait.total):
+ inst [0 or "cpu0"] value 0.026000001
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.steal):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.intr):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0.0020000001
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.guest):
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ 245.0.NN (kernel.percpu.cpu.idle):
+ inst [0 or "cpu0"] value 0.97399998
+ inst [1 or "cpu1"] value 0.99599999
+ inst [2 or "cpu2"] value 0.99599999
+ inst [3 or "cpu3"] value 0.99199998
+ inst [4 or "cpu4"] value 0.99800003
+ inst [5 or "cpu5"] value 0.99800003
+ 245.0.NN (kernel.all.pswitch): value 389.39999
+ 245.0.NN (kernel.all.intr): value 293.20001
+ 245.0.NN (swap.pagesin): value 0
+ 245.0.NN (swap.pagesout): value 0
+ 245.0.NN (mem.vmstat.pgpgin): value 0
+ 245.0.NN (mem.vmstat.pgpgout): value 41.599998
+ 245.0.NN (mem.vmstat.pgfault): value 15.4
+ 245.0.NN (mem.vmstat.pgmajfault): value 0
+ 245.0.NN (mem.vmstat.pgfree): value 28.6
+ 245.0.NN (disk.all.read): value 0
+ 245.0.NN (disk.all.read_bytes): value 0
+ 245.0.NN (disk.all.write): value 2.2
+ 245.0.NN (disk.all.total): value 2.2
+ 245.0.NN (disk.all.write_bytes): value 41.599998
+ 245.0.NN (disk.all.total_bytes): value 41.599998
+ 245.0.NN (mem.util.free): value 2458324
+ 245.0.NN (mem.util.used): value 5718348
+ 245.0.NN (mem.util.bufmem): value 855648
+ 245.0.NN (mem.util.cached): value 1989144
+ 245.0.NN (mem.util.dirty): value 204
+ 245.0.NN (mem.util.swapFree): value 3905532
+ 245.0.NN (mem.util.swapCached): value 0
+ 245.0.NN (vfs.dentry.count): value 2417280
+ 245.0.NN (vfs.files.count): value 10144
+ 245.0.NN (vfs.inodes.count): value 864867
+ 245.0.NN (proc.runq.runnable): value 0
+ 245.0.NN (proc.nproc): value 668
+ 245.0.NN (kernel.all.load):
+ inst [0 or "1 minute"] value 0.029999999
+ inst [1 or "5 minute"] value 0.039999999
+ inst [2 or "15 minute"] value 0.050000001
+ 245.0.NN (disk.dev.total):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 2.2
+ inst [2 or "diskdev8-1"] value 0.40000001
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 1.8
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.read_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.write_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 41.599998
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 40
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.total_bytes):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 41.599998
+ inst [2 or "diskdev8-1"] value 1.6
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 40
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avactive):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.024800001
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.024800001
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avrqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 37.82
+ inst [2 or "diskdev8-1"] value 8
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 44.439999
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.avqsz):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 0.02
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 0.02
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.await):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.27
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 13.78
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (disk.dev.svctm):
+ inst [0 or "diskdev11-0"] value 0
+ inst [1 or "diskdev8-0"] value 11.27
+ inst [2 or "diskdev8-1"] value 0
+ inst [3 or "diskdev8-2"] value 0
+ inst [4 or "diskdev8-5"] value 0
+ inst [5 or "diskdev8-6"] value 0
+ inst [6 or "diskdev8-7"] value 0
+ inst [7 or "diskdev8-8"] value 13.78
+ inst [8 or "diskdev8-9"] value 0
+ inst [9 or "diskdev8-16"] value 0
+ inst [10 or "diskdev8-17"] value 0
+ inst [11 or "diskdev8-18"] value 0
+ inst [12 or "diskdev8-21"] value 0
+ inst [13 or "diskdev8-22"] value 0
+ inst [14 or "diskdev8-23"] value 0
+ inst [15 or "diskdev8-24"] value 0
+ inst [16 or "diskdev8-25"] value 0
+ 245.0.NN (network.interface.in.packets):
+ inst [0 or "tun0"] value 0.40000001
+ inst [1 or "br0"] value 1.2
+ inst [2 or "eth0"] value 1.2
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.packets):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.bytes):
+ inst [0 or "tun0"] value 0.029999999
+ inst [1 or "br0"] value 0.15000001
+ inst [2 or "eth0"] value 0.16
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.bytes):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.errors):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.collisions):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.drops):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.carrier):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.frame):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.in.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (network.interface.out.fifo):
+ inst [0 or "tun0"] value 0
+ inst [1 or "br0"] value 0
+ inst [2 or "eth0"] value 0
+ inst [3 or "lo"] value 0
+ 245.0.NN (filesys.capacity):
+ inst [0 or "/dev/sda1"] value 2751
+ inst [1 or "/dev/sdb1"] value 2751
+ inst [2 or "/dev/sdb5"] value 7380
+ inst [3 or "/dev/sdb6"] value 3690
+ inst [4 or "/dev/sda5"] value 7380
+ inst [5 or "/dev/sda6"] value 3690
+ inst [6 or "/dev/sda9"] value 451581
+ inst [7 or "/dev/sdb9"] value 451581
+ inst [8 or "/dev/sda8"] value 469225
+ 245.0.NN (filesys.free):
+ inst [0 or "/dev/sda1"] value 1410
+ inst [1 or "/dev/sdb1"] value 1795
+ inst [2 or "/dev/sdb5"] value 2560
+ inst [3 or "/dev/sdb6"] value 1211
+ inst [4 or "/dev/sda5"] value 1546
+ inst [5 or "/dev/sda6"] value 1850
+ inst [6 or "/dev/sda9"] value 250361
+ inst [7 or "/dev/sdb9"] value 249740
+ inst [8 or "/dev/sda8"] value 429418
+ 245.0.NN (filesys.used):
+ inst [0 or "/dev/sda1"] value 1341
+ inst [1 or "/dev/sdb1"] value 956
+ inst [2 or "/dev/sdb5"] value 4820
+ inst [3 or "/dev/sdb6"] value 2479
+ inst [4 or "/dev/sda5"] value 5834
+ inst [5 or "/dev/sda6"] value 1840
+ inst [6 or "/dev/sda9"] value 201220
+ inst [7 or "/dev/sdb9"] value 201841
+ inst [8 or "/dev/sda8"] value 39807
+ 245.0.NN (filesys.maxfiles):
+ inst [0 or "/dev/sda1"] value 183264
+ inst [1 or "/dev/sdb1"] value 183264
+ inst [2 or "/dev/sdb5"] value 488640
+ inst [3 or "/dev/sdb6"] value 244320
+ inst [4 or "/dev/sda5"] value 488640
+ inst [5 or "/dev/sda6"] value 244320
+ inst [6 or "/dev/sda9"] value 29376512
+ inst [7 or "/dev/sdb9"] value 29376512
+ inst [8 or "/dev/sda8"] value 30523392
+ 245.0.NN (filesys.freefiles):
+ inst [0 or "/dev/sda1"] value 153241
+ inst [1 or "/dev/sdb1"] value 158406
+ inst [2 or "/dev/sdb5"] value 212681
+ inst [3 or "/dev/sdb6"] value 210190
+ inst [4 or "/dev/sda5"] value 199517
+ inst [5 or "/dev/sda6"] value 227426
+ inst [6 or "/dev/sda9"] value 29357647
+ inst [7 or "/dev/sdb9"] value 29376483
+ inst [8 or "/dev/sda8"] value 30318481
+ 245.0.NN (filesys.usedfiles):
+ inst [0 or "/dev/sda1"] value 30023
+ inst [1 or "/dev/sdb1"] value 24858
+ inst [2 or "/dev/sdb5"] value 275959
+ inst [3 or "/dev/sdb6"] value 34130
+ inst [4 or "/dev/sda5"] value 289123
+ inst [5 or "/dev/sda6"] value 16894
+ inst [6 or "/dev/sda9"] value 18865
+ inst [7 or "/dev/sdb9"] value 29
+ inst [8 or "/dev/sda8"] value 204911
diff --git a/qa/371 b/qa/371
new file mode 100755
index 0000000..7da9a5c
--- /dev/null
+++ b/qa/371
@@ -0,0 +1,190 @@
+#!/bin/sh
+# PCP QA Test No. 371
+#
+# Parsing and error checking for the mapfile used by sheet2pcp
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which sheet2pcp >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "sheet2pcp not installed"
+perl -e "use XML::TokeParser" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl XML::TokeParser module not installed"
+perl -e "use Spreadsheet::Read" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl Spreadsheet::Read module not installed"
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;"
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<'End-of-File' >$tmp.simple.csv
+"DATE";"Metric A";"Metric B";"Metric C"
+End-of-File
+
+
+# real QA test starts here
+
+echo "Usage and file existence checks ..."
+sheet2pcp
+sheet2pcp $tmp.simple.csv
+sheet2pcp $tmp.simple.csv $tmp.mapfile
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp extra
+
+sheet2pcp $tmp.simple.csv /no/such/file $tmp
+
+echo
+echo "Mapfile syntax errors ..."
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet heading="1" blah="123"> <!-- unexpected attr -->
+ <foo><!-- bogus tag -->bar</foo>
+ <metric pmid="60.0.2" indom="60.0" units="0,1,0,0,PM_TIME_MSEC,0"
+ type="PM_TYPE_U64" sem="PM_SEM_COUNTER">
+ kernel.percpu.cpu.sys</metric>
+ <metric pmid="60.0.22" units="0,1,0,0,PM_TIME_MSEC,0" fungus="bogus"
+ type="PM_TYPE_U64" sem="PM_SEM_COUNTER">
+ kernel.all.cpu.sys</metric>
+ <metric pmid="60.0">bad.pmid.one</metric>
+ <metric pmid="6x.0.2">bad.pmid.two</metric>
+ <metric indom="60.0.0">bad.indom.one</metric>
+ <metric indom="60">bad.indom.two</metric>
+ <metric indom="bozo">bad.indom.three</metric>
+ <metric units="0,0,0,0,0">bad.units.one</metric>
+ <metric units="0,0,0,0,0,0,0">bad.units.two</metric>
+ <metric units="BOZO,0,0,PM_SPACE_BOZO,0,0,">bad.units.three</metric>
+ <metric units="1,0,0,PM_SPACE_BOZO,0,0,">bad.units.four</metric>
+ <metric type="PM_TYPE_FOO">bad.type.one</metric>
+ <metric type="">bad.type.two</metric>
+ <metric sem="PM_SEM_FOO">bad.sem.one</metric>
+ <metric sem="PM_SEM_COUNTER"></metric> <!-- no metric name -->
+ <datetime monkey="true"></datetime>
+ <data hi="ho">badmetricname</data>
+ <data></data>
+ <data>no.foo.metric</data>
+ <data>kernel.percpu.cpu.sys[cpu0]</data>
+ <data>kernel.percpu.cpu.sys[cpu1]</data>
+ <data>kernel.percpu.cpu.sys[cpu3</data> <!-- missing ] -->
+ <data>kernel.percpu.cpu.sys[cpu4][fluff</data> <!-- extra stuff -->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE">
+ hinv.ncpu</metric>
+ <data>hinv.ncpu</data>
+ <!--no datetime element-->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE"> hinv.ncpu </metric>
+ <datetime></datetime>
+ <!--no data element-->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet datefmt="DD-MM-YYYY">
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE"> hinv.ncpu </metric>
+ <datetime></datetime>
+ <data>
+ hinv.ncpu
+ </data>
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+echo "Mapfile semantic errors ..."
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE"> hinv.ncpu </metric>
+ <metric>hinv.ncpu</metric> <!-- dup name -->
+ <metric indom="PMI_DOMAIN.1">foo</metric>
+ <data> hinv.ncpu </data>
+ <data>foo[one instance]</data>
+ <data>foo[one other instance]</data> <!-- fails unique to space rule -->
+ <datetime></datetime>
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE">
+ hinv.ncpu
+ </metric>
+ <metric pmid="60.0.32">kernel.percpu.cpu.someother</metric> <!-- dup pmid -->
+ <datetime></datetime>
+ <data> hinv.ncpu </data>
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+
+echo
+echo "Should be OK ..."
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<!--For PCP QA 371-->
+<sheet heading="1">
+ <metric pmid="60.0.2" indom="60.0" units="0,1,0,0,PM_TIME_MSEC,0"
+ type="PM_TYPE_U64" sem="PM_SEM_COUNTER">
+ kernel.percpu.cpu.sys</metric>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE">
+ hinv.ncpu</metric>
+ <metric pmid="PM_ID_NULL">good.pmid.one</metric>
+ <metric pmid="PMI_DOMAIN.0.63">good.pmid.two</metric>
+ <metric indom="PM_INDOM_NULL">good.indom.one</metric>
+ <metric indom="PMI_DOMAIN.27">good.indom.two</metric>
+ <datetime></datetime>
+ <data>hinv.ncpu</data>
+ <data>kernel.percpu.cpu.sys[cpu0]</data>
+ <data>kernel.percpu.cpu.sys[cpu1]</data>
+ <!--pmiDump-->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+# don't expect an output archive as there are no rows of data
+# in the spreadsheet
+#
+[ -f $tmp.0 -o -f $tmp.index -o -f $tmp.meta ] && pmdumplog -az $tmp
+
+# success, all done
+exit
diff --git a/qa/371.out b/qa/371.out
new file mode 100644
index 0000000..31ef700
--- /dev/null
+++ b/qa/371.out
@@ -0,0 +1,81 @@
+QA output created by 371
+Usage and file existence checks ...
+Usage: sheet2pcp [-h host] [-Z timezone] infile mapfile outfile
+Usage: sheet2pcp [-h host] [-Z timezone] infile mapfile outfile
+Usage: sheet2pcp [-h host] [-Z timezone] infile mapfile outfile
+Usage: sheet2pcp [-h host] [-Z timezone] infile mapfile outfile
+sheet2pcp: Failed to open mapfile "/no/such/file"
+
+Mapfile syntax errors ...
+Mapfile Error: attribute blah="123" not expected for <sheet> tag
+Mapfile Error: unexpected start tag <foo>
+Mapfile Error: unexpected text "bar"
+Mapfile Error: unexpected end tag </foo>
+Mapfile Error: attribute fungus="bogus" not expected for <metric> tag
+Mapfile Error: bad format for attribute pmid="60.0"
+Mapfile Error: bad format for attribute pmid="6x.0.2"
+Mapfile Error: bad format for attribute indom="60.0.0"
+Mapfile Error: bad format for attribute indom="60"
+Mapfile Error: bad format for attribute indom="bozo"
+Mapfile Error: bad format for attribute units="0,0,0,0,0"
+Mapfile Error: bad format for attribute units="0,0,0,0,0,0,0"
+Mapfile Error: bad component (BOZO) for attribute units="BOZO,0,0,PM_SPACE_BOZO,0,0,"
+Mapfile Error: bad component (PM_SPACE_BOZO) for attribute units="BOZO,0,0,PM_SPACE_BOZO,0,0,"
+Mapfile Error: bad component (PM_SPACE_BOZO) for attribute units="1,0,0,PM_SPACE_BOZO,0,0,"
+Mapfile Error: bad value for attribute type="PM_TYPE_FOO"
+Mapfile Error: bad value for attribute type=""
+Mapfile Error: bad value for attribute sem="PM_SEM_FOO"
+Mapfile Error: missing metric name in <metric> element
+Mapfile Error: attribute monkey="true" not expected for <datetime> tag
+Mapfile Error: attribute hi="ho" not expected for <data> tag
+Mapfile Error: missing metricspec in <data> element
+Mapfile Error: metric name (no.foo.metric) in <data> element not defined in earlier <metric> element
+Mapfile Error: missing ] in metricspec "kernel.percpu.cpu.sys[cpu3" in <data> element
+Mapfile Error: extra [ in metricspec "kernel.percpu.cpu.sys[cpu4][fluff" in <data> element
+Abandoned after 25 mapfile errors
+
+Mapfile Error: missing <datetime> element
+Abandoned after 1 mapfile error
+
+Mapfile Error: no <data> element
+Abandoned after 1 mapfile error
+
+Mapfile Error: bad format for attribute datefmt="DD-MM-YYYY"
+Abandoned after 1 mapfile error
+
+Mapfile semantic errors ...
+Mapfile Error: failed to define metric hinv.ncpu: Metric name already defined
+Mapfile Error: failed to define instance "one other instance" (1) for metric foo: External instance name already defined
+Abandoned after 2 mapfile errors
+
+Mapfile Error: failed to define metric kernel.percpu.cpu.someother: Metric pmID already defined
+Abandoned after 1 mapfile error
+
+Should be OK ...
+pmiDump: context 0 of 1 archive: TMP
+ state: 1 (start) hostname: <undefined> timezone: <undefined>
+ metric[0] name=kernel.percpu.cpu.sys pmid=60.0.2
+ Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
+ Semantics: counter Units: millisec
+ metric[1] name=hinv.ncpu pmid=60.0.32
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ metric[2] name=good.pmid.one pmid=245.0.3
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[3] name=good.pmid.two pmid=245.0.63
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[4] name=good.indom.one pmid=245.0.5
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ metric[5] name=good.indom.two pmid=245.0.6
+ Data Type: float InDom: 245.27 0x3d40001b
+ Semantics: instant Units: none
+ indom[0] indom=60.0
+ instance[0] cpu0 (0)
+ instance[1] cpu1 (1)
+ handle[0] metric=hinv.ncpu (60.0.32) instance=-1
+ handle[1] metric=kernel.percpu.cpu.sys (60.0.2) instance=0
+ handle[2] metric=kernel.percpu.cpu.sys (60.0.2) instance=1
+ No pmResult.
diff --git a/qa/372 b/qa/372
new file mode 100755
index 0000000..9cd96a2
--- /dev/null
+++ b/qa/372
@@ -0,0 +1,89 @@
+#!/bin/sh
+# PCP QA Test No. 372
+# simple exerciser for sheet2pcp
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which sheet2pcp >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "sheet2pcp not installed"
+perl -e "use XML::TokeParser" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl XML::TokeParser module not installed"
+perl -e "use Spreadsheet::Read" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl Spreadsheet::Read module not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- For PCP QA 372 -->
+<sheet heading="1" hostname="time.greenwich.com" datefmt="DMY">
+ <metric sem="PM_SEM_COUNTER">metric.a</metric>
+ <metric sem="PM_SEM_COUNTER">metric.b</metric>
+ <metric>metric.c</metric>
+ <metric type="PM_TYPE_32">metric.d</metric>
+ <metric type="PM_TYPE_STRING">metric.e</metric>
+ <datetime></datetime>
+ <data>metric.a</data>
+ <data>metric.b</data>
+ <data>metric.c</data>
+ <data>metric.d</data>
+ <data>metric.e</data>
+</sheet>
+End-of-File
+
+echo "=== CSV ==="
+rm -f $tmp.0 $tmp.index $tmp.meta
+sheet2pcp src/simple.csv $tmp.mapfile $tmp 2>&1
+[ -f $tmp.0 ] && pmdumplog -az $tmp
+
+echo
+echo "=== resaved CSV ==="
+rm -f $tmp.0 $tmp.index $tmp.meta
+sheet2pcp src/simple-resave.csv $tmp.mapfile $tmp 2>&1
+[ -f $tmp.0 ] && pmdumplog -az $tmp
+
+echo
+echo "=== ODS ==="
+rm -f $tmp.0 $tmp.index $tmp.meta
+sheet2pcp src/simple.ods $tmp.mapfile $tmp 2>&1
+[ -f $tmp.0 ] && pmdumplog -az $tmp
+
+echo
+echo "=== SXC ==="
+rm -f $tmp.0 $tmp.index $tmp.meta
+sheet2pcp src/simple.sxc $tmp.mapfile $tmp 2>&1
+[ -f $tmp.0 ] && pmdumplog -az $tmp
+
+echo
+echo "=== XLSX ==="
+rm -f $tmp.0 $tmp.index $tmp.meta
+sheet2pcp src/simple-resave.xlsx $tmp.mapfile $tmp 2>&1
+[ -f $tmp.0 ] && pmdumplog -az $tmp
+
+echo
+echo "=== XLS ==="
+rm -f $tmp.0 $tmp.index $tmp.meta
+sheet2pcp src/simple.xls $tmp.mapfile $tmp 2>&1
+[ -f $tmp.0 ] && pmdumplog -az $tmp
+
+echo
+echo "=== /dev/null ==="
+rm -f $tmp.0 $tmp.index $tmp.meta
+sheet2pcp /dev/null $tmp.mapfile $tmp 2>&1
+[ -f $tmp.0 ] && pmdumplog -az $tmp
+
+# success, all done
+exit
diff --git a/qa/372.out b/qa/372.out
new file mode 100644
index 0000000..c93d2a5
--- /dev/null
+++ b/qa/372.out
@@ -0,0 +1,369 @@
+QA output created by 372
+=== CSV ===
+Note: timezone set to local timezone of host "time.greenwich.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host time.greenwich.com
+ commencing Tue Jan 26 01:02:03.000 2010
+ ending Tue Jan 26 13:02:03.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.5 (metric.e)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.4 (metric.d)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (metric.c)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (metric.b)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 245.0.1 (metric.a)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+01:02:03.000 0 132 132
+01:02:03.000 0 372 132
+13:02:03.000 0 372 788
+
+[164 bytes]
+01:02:03.000 245.0.1 (metric.a): value 100
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 300
+ 245.0.4 (metric.d): value 1
+ 245.0.5 (metric.e): value "foo bar first"
+
+[164 bytes]
+05:02:03.000 245.0.1 (metric.a): value 110
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 290
+ 245.0.4 (metric.d): value 2
+ 245.0.5 (metric.e): value "foo bar second"
+
+[164 bytes]
+09:02:03.000 245.0.1 (metric.a): value 120
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 280
+ 245.0.4 (metric.d): value 3
+ 245.0.5 (metric.e): value "foo bar third"
+
+[164 bytes]
+13:02:03.000 245.0.1 (metric.a): value 130
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 270
+ 245.0.4 (metric.d): value 4
+ 245.0.5 (metric.e): value "foo bar last"
+
+=== resaved CSV ===
+Note: timezone set to local timezone of host "time.greenwich.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host time.greenwich.com
+ commencing Tue Jan 26 01:02:00.000 2010
+ ending Tue Jan 26 13:02:00.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.5 (metric.e)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.4 (metric.d)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (metric.c)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (metric.b)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 245.0.1 (metric.a)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+01:02:00.000 0 132 132
+01:02:00.000 0 372 132
+13:02:00.000 0 372 788
+
+[164 bytes]
+01:02:00.000 245.0.1 (metric.a): value 100
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 300
+ 245.0.4 (metric.d): value 1
+ 245.0.5 (metric.e): value "foo bar first"
+
+[164 bytes]
+05:02:00.000 245.0.1 (metric.a): value 110
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 290
+ 245.0.4 (metric.d): value 2
+ 245.0.5 (metric.e): value "foo bar second"
+
+[164 bytes]
+09:02:00.000 245.0.1 (metric.a): value 120
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 280
+ 245.0.4 (metric.d): value 3
+ 245.0.5 (metric.e): value "foo bar third"
+
+[164 bytes]
+13:02:00.000 245.0.1 (metric.a): value 130
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 270
+ 245.0.4 (metric.d): value 4
+ 245.0.5 (metric.e): value "foo bar last"
+
+=== ODS ===
+Note: timezone set to local timezone of host "time.greenwich.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host time.greenwich.com
+ commencing Tue Jan 26 01:02:00.000 2010
+ ending Tue Jan 26 13:02:00.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.5 (metric.e)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.4 (metric.d)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (metric.c)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (metric.b)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 245.0.1 (metric.a)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+01:02:00.000 0 132 132
+01:02:00.000 0 372 132
+13:02:00.000 0 372 788
+
+[164 bytes]
+01:02:00.000 245.0.1 (metric.a): value 100
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 300
+ 245.0.4 (metric.d): value 1
+ 245.0.5 (metric.e): value "foo bar first"
+
+[164 bytes]
+05:02:00.000 245.0.1 (metric.a): value 110
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 290
+ 245.0.4 (metric.d): value 2
+ 245.0.5 (metric.e): value "foo bar second"
+
+[164 bytes]
+09:02:00.000 245.0.1 (metric.a): value 120
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 280
+ 245.0.4 (metric.d): value 3
+ 245.0.5 (metric.e): value "foo bar third"
+
+[164 bytes]
+13:02:00.000 245.0.1 (metric.a): value 130
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 270
+ 245.0.4 (metric.d): value 4
+ 245.0.5 (metric.e): value "foo bar last"
+
+=== SXC ===
+Note: timezone set to local timezone of host "time.greenwich.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host time.greenwich.com
+ commencing Tue Jan 26 01:02:00.000 2010
+ ending Tue Jan 26 13:02:00.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.5 (metric.e)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.4 (metric.d)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (metric.c)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (metric.b)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 245.0.1 (metric.a)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+01:02:00.000 0 132 132
+01:02:00.000 0 372 132
+13:02:00.000 0 372 788
+
+[164 bytes]
+01:02:00.000 245.0.1 (metric.a): value 100
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 300
+ 245.0.4 (metric.d): value 1
+ 245.0.5 (metric.e): value "foo bar first"
+
+[164 bytes]
+05:02:00.000 245.0.1 (metric.a): value 110
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 290
+ 245.0.4 (metric.d): value 2
+ 245.0.5 (metric.e): value "foo bar second"
+
+[164 bytes]
+09:02:00.000 245.0.1 (metric.a): value 120
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 280
+ 245.0.4 (metric.d): value 3
+ 245.0.5 (metric.e): value "foo bar third"
+
+[164 bytes]
+13:02:00.000 245.0.1 (metric.a): value 130
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 270
+ 245.0.4 (metric.d): value 4
+ 245.0.5 (metric.e): value "foo bar last"
+
+=== XLSX ===
+Note: timezone set to local timezone of host "time.greenwich.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host time.greenwich.com
+ commencing Tue Jan 26 01:02:00.000 2010
+ ending Tue Jan 26 13:02:00.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.5 (metric.e)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.4 (metric.d)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (metric.c)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (metric.b)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 245.0.1 (metric.a)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+01:02:00.000 0 132 132
+01:02:00.000 0 372 132
+13:02:00.000 0 372 788
+
+[164 bytes]
+01:02:00.000 245.0.1 (metric.a): value 100
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 300
+ 245.0.4 (metric.d): value 1
+ 245.0.5 (metric.e): value "foo bar first"
+
+[164 bytes]
+05:02:00.000 245.0.1 (metric.a): value 110
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 290
+ 245.0.4 (metric.d): value 2
+ 245.0.5 (metric.e): value "foo bar second"
+
+[164 bytes]
+09:02:00.000 245.0.1 (metric.a): value 120
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 280
+ 245.0.4 (metric.d): value 3
+ 245.0.5 (metric.e): value "foo bar third"
+
+[164 bytes]
+13:02:00.000 245.0.1 (metric.a): value 130
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 270
+ 245.0.4 (metric.d): value 4
+ 245.0.5 (metric.e): value "foo bar last"
+
+=== XLS ===
+Note: timezone set to local timezone of host "time.greenwich.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host time.greenwich.com
+ commencing Tue Jan 26 01:02:00.000 2010
+ ending Tue Jan 26 13:02:00.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.5 (metric.e)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.4 (metric.d)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (metric.c)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (metric.b)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 245.0.1 (metric.a)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+01:02:00.000 0 132 132
+01:02:00.000 0 372 132
+13:02:00.000 0 372 788
+
+[164 bytes]
+01:02:00.000 245.0.1 (metric.a): value 100
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 300
+ 245.0.4 (metric.d): value 1
+ 245.0.5 (metric.e): value "foo bar first"
+
+[164 bytes]
+05:02:00.000 245.0.1 (metric.a): value 110
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 290
+ 245.0.4 (metric.d): value 2
+ 245.0.5 (metric.e): value "foo bar second"
+
+[164 bytes]
+09:02:00.000 245.0.1 (metric.a): value 120
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 280
+ 245.0.4 (metric.d): value 3
+ 245.0.5 (metric.e): value "foo bar third"
+
+[164 bytes]
+13:02:00.000 245.0.1 (metric.a): value 130
+ 245.0.2 (metric.b): value 200
+ 245.0.3 (metric.c): value 270
+ 245.0.4 (metric.d): value 4
+ 245.0.5 (metric.e): value "foo bar last"
+
+=== /dev/null ===
+sheet2pcp: Error: No clue how to deduce format of spreadsheet /dev/null
diff --git a/qa/373 b/qa/373
new file mode 100755
index 0000000..21e9f0b
--- /dev/null
+++ b/qa/373
@@ -0,0 +1,48 @@
+#!/bin/sh
+# PCP QA Test No. 373
+#
+# iostat2pcp exerciser
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which iostat2pcp >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "iostat2pcp not installed"
+perl -e "use Date::Parse" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl Date::Parse module not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for infile in \
+ src/iostat-t src/iostat-t.ISO \
+ src/iostat-c src/iostat-d \
+ src/iostat src/iostat-z \
+ src/iostat-d-k src/iostat-d-m src/iostat-x \
+ src/iostat-p-ALL \
+ src/iostat-z-p-ALL
+do
+ echo
+ echo "=== $infile ==="
+ rm -f $tmp.0 $tmp.index $tmp.meta
+ iostat2pcp -v $infile $tmp
+
+ if [ -f $tmp.0 ]
+ then
+ pmdumplog -z -a $tmp
+ fi
+done
+
+# success, all done
+exit
+
diff --git a/qa/373.out b/qa/373.out
new file mode 100644
index 0000000..cce8aee
--- /dev/null
+++ b/qa/373.out
@@ -0,0 +1,1197 @@
+QA output created by 373
+
+=== src/iostat-t ===
+stamp_style=1 zone=UTC basedate=2010-07-27 now=1280234857 stamp=2010-07-27T12:47:37.000000
+End of sample 0 @ 1280234857 2010-07-27T12:47:37.000000
+End of sample 1 @ 1280234860 2010-07-27T12:47:40.000000
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 12:47:37.000 2010
+ ending Tue Jul 27 12:47:40.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.8 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.9 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 245.0
+12:47:37.000 3 instances
+ 0 or "sda"
+ 1 or "sdb"
+ 2 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+12:47:37.000 0 132 132
+12:47:37.000 0 730 132
+12:47:40.000 0 730 868
+
+[368 bytes]
+12:47:37.000 245.0.1 (kernel.all.cpu.user): value 0.0199
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.053199999
+ 245.0.4 (kernel.all.cpu.wait.total): value 0.2193
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0.7076
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 172.09
+ inst [1 or "sdb"] value 1
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 1291.6949
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 45.185001
+ inst [1 or "sdb"] value 10.63
+ inst [2 or "scd0"] value 0
+
+[368 bytes]
+12:47:40.000 245.0.1 (kernel.all.cpu.user): value 0.0167
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.02
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0.96329999
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 104.67
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 696
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 17.334999
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+
+=== src/iostat-t.ISO ===
+stamp_style=2 zone=+1000 basedate=2010-07-27 now=1280198770 stamp=2010-07-27T12:46:10.000000
+End of sample 0 @ 1280198770 2010-07-27T12:46:10.000000
+End of sample 1 @ 1280198773 2010-07-27T12:46:13.000000
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 12:46:10.000 2010
+ ending Tue Jul 27 12:46:13.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.8 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.9 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 245.0
+12:46:10.000 3 instances
+ 0 or "sda"
+ 1 or "sdb"
+ 2 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+12:46:10.000 0 132 132
+12:46:10.000 0 730 132
+12:46:13.000 0 730 868
+
+[368 bytes]
+12:46:10.000 245.0.1 (kernel.all.cpu.user): value 0.039900001
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.039900001
+ 245.0.4 (kernel.all.cpu.wait.total): value 0.0066
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0.91360003
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 93.019997
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 713.62
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 5.3150001
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+
+[368 bytes]
+12:46:13.000 245.0.1 (kernel.all.cpu.user): value 0.0133
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.0133
+ 245.0.4 (kernel.all.cpu.wait.total): value 0.3567
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0.61669999
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 121
+ inst [1 or "sdb"] value 1.67
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 850.66498
+ inst [1 or "sdb"] value 1.335
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 232
+ inst [1 or "sdb"] value 12
+ inst [2 or "scd0"] value 0
+
+=== src/iostat-c ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+iostat2pcp: Warning: cannot determine sample interval, assuming 15 seconds
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188815 stamp=Tue Jul 27 00:00:15 2010 interval=15 first_tag=avg-cpu
+End of sample 0 @ 1280188815 Tue Jul 27 00:00:15 2010
+End of sample 1 @ 1280188830 Tue Jul 27 00:00:30 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:15.000 2010
+ ending Tue Jul 27 00:00:30.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:15.000 0 132 132
+00:00:15.000 0 492 132
+00:00:30.000 0 492 508
+
+[188 bytes]
+00:00:15.000 245.0.1 (kernel.all.cpu.user): value 0.75
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.25
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+
+[188 bytes]
+00:00:30.000 245.0.1 (kernel.all.cpu.user): value 0.85619998
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.14380001
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+
+=== src/iostat-d ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188803 stamp=Tue Jul 27 00:00:03 2010 interval=3 first_tag=Device
+End of sample 0 @ 1280188803 Tue Jul 27 00:00:03 2010
+End of sample 1 @ 1280188806 Tue Jul 27 00:00:06 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:03.000 2010
+ ending Tue Jul 27 00:00:06.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.3 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.1 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:03.000 3 instances
+ 0 or "sda"
+ 1 or "sdb"
+ 2 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:03.000 0 132 132
+00:00:03.000 0 370 132
+00:00:06.000 0 370 532
+
+[200 bytes]
+00:00:03.000 245.0.1 (disk.dev.total):
+ inst [0 or "sda"] value 3.3399999
+ inst [1 or "sdb"] value 10.03
+ inst [2 or "scd0"] value 0
+ 245.0.2 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 5.3499999
+ inst [1 or "sdb"] value 121.74
+ inst [2 or "scd0"] value 0
+ 245.0.3 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 38.794998
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+
+[200 bytes]
+00:00:06.000 245.0.1 (disk.dev.total):
+ inst [0 or "sda"] value 9.2700005
+ inst [1 or "sdb"] value 83.440002
+ inst [2 or "scd0"] value 0
+ 245.0.2 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 21.190001
+ inst [1 or "sdb"] value 91.389999
+ inst [2 or "scd0"] value 0
+ 245.0.3 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 67.550003
+ inst [1 or "sdb"] value 817.21997
+ inst [2 or "scd0"] value 0
+
+=== src/iostat ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188803 stamp=Tue Jul 27 00:00:03 2010 interval=3 first_tag=avg-cpu
+End of sample 0 @ 1280188803 Tue Jul 27 00:00:03 2010
+End of sample 1 @ 1280188806 Tue Jul 27 00:00:06 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:03.000 2010
+ ending Tue Jul 27 00:00:06.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.8 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.9 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:03.000 3 instances
+ 0 or "sda"
+ 1 or "sdb"
+ 2 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:03.000 0 132 132
+00:00:03.000 0 730 132
+00:00:06.000 0 730 868
+
+[368 bytes]
+00:00:03.000 245.0.1 (kernel.all.cpu.user): value 0.3612
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.2207
+ 245.0.4 (kernel.all.cpu.wait.total): value 0.4181
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 2.3399999
+ inst [1 or "sdb"] value 78.93
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 34.785
+ inst [1 or "sdb"] value 317.05499
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 6.6900001
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+
+[368 bytes]
+00:00:06.000 245.0.1 (kernel.all.cpu.user): value 0.0099999998
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.023399999
+ 245.0.4 (kernel.all.cpu.wait.total): value 0.9666
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 4.3499999
+ inst [1 or "sdb"] value 124.08
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 488.29501
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 30.77
+ inst [1 or "sdb"] value 569.90002
+ inst [2 or "scd0"] value 0
+
+=== src/iostat-z ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188803 stamp=Tue Jul 27 00:00:03 2010 interval=3 first_tag=avg-cpu
+End of sample 0 @ 1280188803 Tue Jul 27 00:00:03 2010
+End of sample 1 @ 1280188806 Tue Jul 27 00:00:06 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:03.000 2010
+ ending Tue Jul 27 00:00:06.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.8 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.9 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:03.000 2 instances
+ 0 or "sda"
+ 1 or "sdb"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:03.000 0 132 132
+00:00:03.000 0 717 132
+00:00:06.000 0 717 772
+
+[320 bytes]
+00:00:03.000 245.0.1 (kernel.all.cpu.user): value 0.0099999998
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.0066999998
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0.98329997
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 2.6700001
+ inst [1 or "sdb"] value 0.33000001
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 1.335
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 18.665001
+ inst [1 or "sdb"] value 0
+
+[320 bytes]
+00:00:06.000 245.0.1 (kernel.all.cpu.user): value 0.0099999998
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.0066999998
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0.98329997
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 1
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 12
+
+=== src/iostat-d-k ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188803 stamp=Tue Jul 27 00:00:03 2010 interval=3 first_tag=Device
+End of sample 0 @ 1280188803 Tue Jul 27 00:00:03 2010
+End of sample 1 @ 1280188806 Tue Jul 27 00:00:06 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:03.000 2010
+ ending Tue Jul 27 00:00:06.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.3 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.1 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:03.000 3 instances
+ 0 or "sda"
+ 1 or "sdb"
+ 2 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:03.000 0 132 132
+00:00:03.000 0 370 132
+00:00:06.000 0 370 532
+
+[200 bytes]
+00:00:03.000 245.0.1 (disk.dev.total):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 5
+ inst [2 or "scd0"] value 0
+ 245.0.2 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.3 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 366.67001
+ inst [2 or "scd0"] value 0
+
+[200 bytes]
+00:00:06.000 245.0.1 (disk.dev.total):
+ inst [0 or "sda"] value 3.3199999
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.2 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.3 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 42.52
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+
+=== src/iostat-d-m ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188802 stamp=Tue Jul 27 00:00:02 2010 interval=2 first_tag=Device
+End of sample 0 @ 1280188802 Tue Jul 27 00:00:02 2010
+End of sample 1 @ 1280188804 Tue Jul 27 00:00:04 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:02.000 2010
+ ending Tue Jul 27 00:00:04.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.3 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.1 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:02.000 3 instances
+ 0 or "sda"
+ 1 or "sdb"
+ 2 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:02.000 0 132 132
+00:00:02.000 0 370 132
+00:00:04.000 0 370 532
+
+[200 bytes]
+00:00:02.000 245.0.1 (disk.dev.total):
+ inst [0 or "sda"] value 98.010002
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.2 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 604.15997
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.3 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 51.200001
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+
+[200 bytes]
+00:00:04.000 245.0.1 (disk.dev.total):
+ inst [0 or "sda"] value 113.33
+ inst [1 or "sdb"] value 1
+ inst [2 or "scd0"] value 0
+ 245.0.2 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 747.52002
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.3 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 10.24
+ inst [2 or "scd0"] value 0
+
+=== src/iostat-x ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+iostat2pcp: Warning: cannot determine sample interval, assuming 15 seconds
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188815 stamp=Tue Jul 27 00:00:15 2010 interval=15 first_tag=avg-cpu
+End of sample 0 @ 1280188815 Tue Jul 27 00:00:15 2010
+End of sample 1 @ 1280188830 Tue Jul 27 00:00:30 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:15.000 2010
+ ending Tue Jul 27 00:00:30.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.10 (disk.dev.write)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.11 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.12 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.13 (disk.dev.avactive)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (disk.dev.read_merge)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.8 (disk.dev.write_merge)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.9 (disk.dev.read)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:15.000 3 instances
+ 0 or "sda"
+ 1 or "sdb"
+ 2 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:15.000 0 132 132
+00:00:15.000 0 959 132
+00:00:30.000 0 959 1348
+
+[608 bytes]
+00:00:15.000 245.0.1 (kernel.all.cpu.user): value 0.8538
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.1462
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+ 245.0.7 (disk.dev.read_merge):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.write_merge):
+ inst [0 or "sda"] value 10.3
+ inst [1 or "sdb"] value 83.389999
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.read):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0.33000001
+ inst [2 or "scd0"] value 0
+ 245.0.10 (disk.dev.write):
+ inst [0 or "sda"] value 4.3200002
+ inst [1 or "sdb"] value 10.63
+ inst [2 or "scd0"] value 0
+ 245.0.11 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 1.33
+ inst [2 or "scd0"] value 0
+ 245.0.12 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 58.470001
+ inst [1 or "sdb"] value 377.41
+ inst [2 or "scd0"] value 0
+ 245.0.13 (disk.dev.avactive):
+ inst [0 or "sda"] value 0.13
+ inst [1 or "sdb"] value 0.93000001
+ inst [2 or "scd0"] value 0
+
+[608 bytes]
+00:00:30.000 245.0.1 (kernel.all.cpu.user): value 0.83279997
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.1672
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+ 245.0.7 (disk.dev.read_merge):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.8 (disk.dev.write_merge):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.9 (disk.dev.read):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.10 (disk.dev.write):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.11 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.12 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+ 245.0.13 (disk.dev.avactive):
+ inst [0 or "sda"] value 0
+ inst [1 or "sdb"] value 0
+ inst [2 or "scd0"] value 0
+
+=== src/iostat-p-ALL ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188803 stamp=Tue Jul 27 00:00:03 2010 interval=3 first_tag=avg-cpu
+End of sample 0 @ 1280188803 Tue Jul 27 00:00:03 2010
+End of sample 1 @ 1280188806 Tue Jul 27 00:00:06 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:03.000 2010
+ ending Tue Jul 27 00:00:06.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.8 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.9 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:03.000 40 instances
+ 0 or "ram0"
+ 1 or "ram1"
+ 2 or "ram2"
+ 3 or "ram3"
+ 4 or "ram4"
+ 5 or "ram5"
+ 6 or "ram6"
+ 7 or "ram7"
+ 8 or "ram8"
+ 9 or "ram9"
+ 10 or "ram10"
+ 11 or "ram11"
+ 12 or "ram12"
+ 13 or "ram13"
+ 14 or "ram14"
+ 15 or "ram15"
+ 16 or "loop0"
+ 17 or "loop1"
+ 18 or "loop2"
+ 19 or "loop3"
+ 20 or "loop4"
+ 21 or "loop5"
+ 22 or "loop6"
+ 23 or "loop7"
+ 24 or "fd0"
+ 25 or "sda"
+ 26 or "sda1"
+ 27 or "sda2"
+ 28 or "sda3"
+ 29 or "sda4"
+ 30 or "sda5"
+ 31 or "sda6"
+ 32 or "sdb"
+ 33 or "sdb1"
+ 34 or "sdb2"
+ 35 or "sdb3"
+ 36 or "sdb4"
+ 37 or "sdb5"
+ 38 or "sdb6"
+ 39 or "scd0"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:03.000 0 132 132
+00:00:03.000 0 1224 132
+00:00:06.000 0 1224 4420
+
+[2144 bytes]
+00:00:03.000 245.0.1 (kernel.all.cpu.user): value 0.84670001
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.1533
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+ 245.0.7 (disk.dev.total):
+ inst [0 or "ram0"] value 0
+ inst [1 or "ram1"] value 0
+ inst [2 or "ram2"] value 0
+ inst [3 or "ram3"] value 0
+ inst [4 or "ram4"] value 0
+ inst [5 or "ram5"] value 0
+ inst [6 or "ram6"] value 0
+ inst [7 or "ram7"] value 0
+ inst [8 or "ram8"] value 0
+ inst [9 or "ram9"] value 0
+ inst [10 or "ram10"] value 0
+ inst [11 or "ram11"] value 0
+ inst [12 or "ram12"] value 0
+ inst [13 or "ram13"] value 0
+ inst [14 or "ram14"] value 0
+ inst [15 or "ram15"] value 0
+ inst [16 or "loop0"] value 0
+ inst [17 or "loop1"] value 0
+ inst [18 or "loop2"] value 0
+ inst [19 or "loop3"] value 0
+ inst [20 or "loop4"] value 0
+ inst [21 or "loop5"] value 0
+ inst [22 or "loop6"] value 0
+ inst [23 or "loop7"] value 0
+ inst [24 or "fd0"] value 0
+ inst [25 or "sda"] value 4.6700001
+ inst [26 or "sda1"] value 4.6700001
+ inst [27 or "sda2"] value 0
+ inst [28 or "sda3"] value 0
+ inst [29 or "sda4"] value 0
+ inst [30 or "sda5"] value 0
+ inst [31 or "sda6"] value 0
+ inst [32 or "sdb"] value 9.3299999
+ inst [33 or "sdb1"] value 0
+ inst [34 or "sdb2"] value 0
+ inst [35 or "sdb3"] value 0
+ inst [36 or "sdb4"] value 0
+ inst [37 or "sdb5"] value 0
+ inst [38 or "sdb6"] value 9.3299999
+ inst [39 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "ram0"] value 0
+ inst [1 or "ram1"] value 0
+ inst [2 or "ram2"] value 0
+ inst [3 or "ram3"] value 0
+ inst [4 or "ram4"] value 0
+ inst [5 or "ram5"] value 0
+ inst [6 or "ram6"] value 0
+ inst [7 or "ram7"] value 0
+ inst [8 or "ram8"] value 0
+ inst [9 or "ram9"] value 0
+ inst [10 or "ram10"] value 0
+ inst [11 or "ram11"] value 0
+ inst [12 or "ram12"] value 0
+ inst [13 or "ram13"] value 0
+ inst [14 or "ram14"] value 0
+ inst [15 or "ram15"] value 0
+ inst [16 or "loop0"] value 0
+ inst [17 or "loop1"] value 0
+ inst [18 or "loop2"] value 0
+ inst [19 or "loop3"] value 0
+ inst [20 or "loop4"] value 0
+ inst [21 or "loop5"] value 0
+ inst [22 or "loop6"] value 0
+ inst [23 or "loop7"] value 0
+ inst [24 or "fd0"] value 0
+ inst [25 or "sda"] value 0
+ inst [26 or "sda1"] value 0
+ inst [27 or "sda2"] value 0
+ inst [28 or "sda3"] value 0
+ inst [29 or "sda4"] value 0
+ inst [30 or "sda5"] value 0
+ inst [31 or "sda6"] value 0
+ inst [32 or "sdb"] value 0
+ inst [33 or "sdb1"] value 0
+ inst [34 or "sdb2"] value 0
+ inst [35 or "sdb3"] value 0
+ inst [36 or "sdb4"] value 0
+ inst [37 or "sdb5"] value 0
+ inst [38 or "sdb6"] value 0
+ inst [39 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "ram0"] value 0
+ inst [1 or "ram1"] value 0
+ inst [2 or "ram2"] value 0
+ inst [3 or "ram3"] value 0
+ inst [4 or "ram4"] value 0
+ inst [5 or "ram5"] value 0
+ inst [6 or "ram6"] value 0
+ inst [7 or "ram7"] value 0
+ inst [8 or "ram8"] value 0
+ inst [9 or "ram9"] value 0
+ inst [10 or "ram10"] value 0
+ inst [11 or "ram11"] value 0
+ inst [12 or "ram12"] value 0
+ inst [13 or "ram13"] value 0
+ inst [14 or "ram14"] value 0
+ inst [15 or "ram15"] value 0
+ inst [16 or "loop0"] value 0
+ inst [17 or "loop1"] value 0
+ inst [18 or "loop2"] value 0
+ inst [19 or "loop3"] value 0
+ inst [20 or "loop4"] value 0
+ inst [21 or "loop5"] value 0
+ inst [22 or "loop6"] value 0
+ inst [23 or "loop7"] value 0
+ inst [24 or "fd0"] value 0
+ inst [25 or "sda"] value 64
+ inst [26 or "sda1"] value 64
+ inst [27 or "sda2"] value 0
+ inst [28 or "sda3"] value 0
+ inst [29 or "sda4"] value 0
+ inst [30 or "sda5"] value 0
+ inst [31 or "sda6"] value 0
+ inst [32 or "sdb"] value 384
+ inst [33 or "sdb1"] value 0
+ inst [34 or "sdb2"] value 0
+ inst [35 or "sdb3"] value 0
+ inst [36 or "sdb4"] value 0
+ inst [37 or "sdb5"] value 0
+ inst [38 or "sdb6"] value 384
+ inst [39 or "scd0"] value 0
+
+[2144 bytes]
+00:00:06.000 245.0.1 (kernel.all.cpu.user): value 0.88330001
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.1167
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+ 245.0.7 (disk.dev.total):
+ inst [0 or "ram0"] value 0
+ inst [1 or "ram1"] value 0
+ inst [2 or "ram2"] value 0
+ inst [3 or "ram3"] value 0
+ inst [4 or "ram4"] value 0
+ inst [5 or "ram5"] value 0
+ inst [6 or "ram6"] value 0
+ inst [7 or "ram7"] value 0
+ inst [8 or "ram8"] value 0
+ inst [9 or "ram9"] value 0
+ inst [10 or "ram10"] value 0
+ inst [11 or "ram11"] value 0
+ inst [12 or "ram12"] value 0
+ inst [13 or "ram13"] value 0
+ inst [14 or "ram14"] value 0
+ inst [15 or "ram15"] value 0
+ inst [16 or "loop0"] value 0
+ inst [17 or "loop1"] value 0
+ inst [18 or "loop2"] value 0
+ inst [19 or "loop3"] value 0
+ inst [20 or "loop4"] value 0
+ inst [21 or "loop5"] value 0
+ inst [22 or "loop6"] value 0
+ inst [23 or "loop7"] value 0
+ inst [24 or "fd0"] value 0
+ inst [25 or "sda"] value 0
+ inst [26 or "sda1"] value 0
+ inst [27 or "sda2"] value 0
+ inst [28 or "sda3"] value 0
+ inst [29 or "sda4"] value 0
+ inst [30 or "sda5"] value 0
+ inst [31 or "sda6"] value 0
+ inst [32 or "sdb"] value 0
+ inst [33 or "sdb1"] value 0
+ inst [34 or "sdb2"] value 0
+ inst [35 or "sdb3"] value 0
+ inst [36 or "sdb4"] value 0
+ inst [37 or "sdb5"] value 0
+ inst [38 or "sdb6"] value 0
+ inst [39 or "scd0"] value 0
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "ram0"] value 0
+ inst [1 or "ram1"] value 0
+ inst [2 or "ram2"] value 0
+ inst [3 or "ram3"] value 0
+ inst [4 or "ram4"] value 0
+ inst [5 or "ram5"] value 0
+ inst [6 or "ram6"] value 0
+ inst [7 or "ram7"] value 0
+ inst [8 or "ram8"] value 0
+ inst [9 or "ram9"] value 0
+ inst [10 or "ram10"] value 0
+ inst [11 or "ram11"] value 0
+ inst [12 or "ram12"] value 0
+ inst [13 or "ram13"] value 0
+ inst [14 or "ram14"] value 0
+ inst [15 or "ram15"] value 0
+ inst [16 or "loop0"] value 0
+ inst [17 or "loop1"] value 0
+ inst [18 or "loop2"] value 0
+ inst [19 or "loop3"] value 0
+ inst [20 or "loop4"] value 0
+ inst [21 or "loop5"] value 0
+ inst [22 or "loop6"] value 0
+ inst [23 or "loop7"] value 0
+ inst [24 or "fd0"] value 0
+ inst [25 or "sda"] value 0
+ inst [26 or "sda1"] value 0
+ inst [27 or "sda2"] value 0
+ inst [28 or "sda3"] value 0
+ inst [29 or "sda4"] value 0
+ inst [30 or "sda5"] value 0
+ inst [31 or "sda6"] value 0
+ inst [32 or "sdb"] value 0
+ inst [33 or "sdb1"] value 0
+ inst [34 or "sdb2"] value 0
+ inst [35 or "sdb3"] value 0
+ inst [36 or "sdb4"] value 0
+ inst [37 or "sdb5"] value 0
+ inst [38 or "sdb6"] value 0
+ inst [39 or "scd0"] value 0
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "ram0"] value 0
+ inst [1 or "ram1"] value 0
+ inst [2 or "ram2"] value 0
+ inst [3 or "ram3"] value 0
+ inst [4 or "ram4"] value 0
+ inst [5 or "ram5"] value 0
+ inst [6 or "ram6"] value 0
+ inst [7 or "ram7"] value 0
+ inst [8 or "ram8"] value 0
+ inst [9 or "ram9"] value 0
+ inst [10 or "ram10"] value 0
+ inst [11 or "ram11"] value 0
+ inst [12 or "ram12"] value 0
+ inst [13 or "ram13"] value 0
+ inst [14 or "ram14"] value 0
+ inst [15 or "ram15"] value 0
+ inst [16 or "loop0"] value 0
+ inst [17 or "loop1"] value 0
+ inst [18 or "loop2"] value 0
+ inst [19 or "loop3"] value 0
+ inst [20 or "loop4"] value 0
+ inst [21 or "loop5"] value 0
+ inst [22 or "loop6"] value 0
+ inst [23 or "loop7"] value 0
+ inst [24 or "fd0"] value 0
+ inst [25 or "sda"] value 0
+ inst [26 or "sda1"] value 0
+ inst [27 or "sda2"] value 0
+ inst [28 or "sda3"] value 0
+ inst [29 or "sda4"] value 0
+ inst [30 or "sda5"] value 0
+ inst [31 or "sda6"] value 0
+ inst [32 or "sdb"] value 0
+ inst [33 or "sdb1"] value 0
+ inst [34 or "sdb2"] value 0
+ inst [35 or "sdb3"] value 0
+ inst [36 or "sdb4"] value 0
+ inst [37 or "sdb5"] value 0
+ inst [38 or "sdb6"] value 0
+ inst [39 or "scd0"] value 0
+
+=== src/iostat-z-p-ALL ===
+iostat2pcp: Warning: no timestamps, assuming data starts at 2010-07-27 00:00:00 UTC
+iostat2pcp: Warning: cannot determine sample interval, assuming 15 seconds
+stamp_style=0 zone=UTC basedate=2010-07-27 now=1280188815 stamp=Tue Jul 27 00:00:15 2010 interval=15 first_tag=avg-cpu
+End of sample 0 @ 1280188815 Tue Jul 27 00:00:15 2010
+End of sample 1 @ 1280188830 Tue Jul 27 00:00:30 2010
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Jul 27 00:00:15.000 2010
+ ending Tue Jul 27 00:00:30.000 2010
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.4 (kernel.all.cpu.wait.total)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.5 (kernel.all.cpu.steal)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.6 (kernel.all.cpu.idle)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.1 (kernel.all.cpu.user)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (disk.dev.total)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: count / sec
+PMID: 245.0.8 (disk.dev.read_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.2 (kernel.all.cpu.nice)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.9 (disk.dev.write_bytes)
+ Data Type: float InDom: 245.0 0x3d400000
+ Semantics: instant Units: Kbyte / sec
+PMID: 245.0.3 (kernel.all.cpu.sys)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 245.0
+00:00:30.000 4 instances
+ 0 or "sda"
+ 1 or "sda1"
+ 2 or "sdb"
+ 3 or "sdb6"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:15.000 0 132 132
+00:00:15.000 0 492 132
+00:00:30.000 0 743 320
+00:00:30.000 0 743 736
+
+[188 bytes]
+00:00:15.000 245.0.1 (kernel.all.cpu.user): value 0.86000001
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.14
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+
+[416 bytes]
+00:00:30.000 245.0.1 (kernel.all.cpu.user): value 0.86049998
+ 245.0.2 (kernel.all.cpu.nice): value 0
+ 245.0.3 (kernel.all.cpu.sys): value 0.13950001
+ 245.0.4 (kernel.all.cpu.wait.total): value 0
+ 245.0.5 (kernel.all.cpu.steal): value 0
+ 245.0.6 (kernel.all.cpu.idle): value 0
+ 245.0.7 (disk.dev.total):
+ inst [0 or "sda"] value 2.99
+ inst [1 or "sda1"] value 2.99
+ inst [2 or "sdb"] value 20.6
+ inst [3 or "sdb6"] value 20.6
+ 245.0.8 (disk.dev.read_bytes):
+ inst [0 or "sda"] value 0
+ inst [1 or "sda1"] value 0
+ inst [2 or "sdb"] value 1.33
+ inst [3 or "sdb6"] value 1.33
+ 245.0.9 (disk.dev.write_bytes):
+ inst [0 or "sda"] value 38.540001
+ inst [1 or "sda1"] value 38.540001
+ inst [2 or "sdb"] value 445.185
+ inst [3 or "sdb6"] value 445.185
diff --git a/qa/374 b/qa/374
new file mode 100755
index 0000000..b897626
--- /dev/null
+++ b/qa/374
@@ -0,0 +1,212 @@
+#! /bin/sh
+# PCP QA Test No. 374
+# pmlogger (assorted) and pmlc (PCP 2.0) version compatibility
+#
+# 64-bit host version ... see 322 for 32-bit host version ... this
+# one is optionally not run if you can't find a 64-bit host running
+# pcp
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.full
+rm -f $seq.out
+if [ $PCP_VER -lt 3800 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+_filter()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^pmlogger .* on host .* is logging metrics from host .*/d' \
+ -e '/^PMCD host/d' \
+ -e '/^TIMESTAMP started/d' \
+ | $PCP_AWK_PROG '
+/datax/ { skip = 3 }
+skip > 0 { skip--; next }
+$1 == "log" && $2 == "size" { if ($3 > 100 && $3 <= 200) $3 = "more than 100"
+ else if ($3 > 200 && $3 <= 300) $3 = "more than 200"
+ }
+ { print }'
+}
+
+_remote_signal()
+{
+ host="$1"
+ pid="$2"
+ base="$3"
+
+ cat <<end-of-file >$tmp.cmd
+. \$PCP_DIR/etc/pcp.env
+\$PCP_BINADM_DIR/pmsignal -s TERM $pid
+sleep 1
+\$PCP_BINADM_DIR/pmsignal -s KILL $pid
+test -k \$PCP_TMP_DIR/pmlogger || /usr/bin/sudo chmod o-w \$PCP_TMP_DIR/pmlogger 2>/dev/null
+rm -f /tmp/$base.*
+end-of-file
+ scp -q $tmp.cmd pcpqa@$host:$tmp.cmd
+ ssh -q pcpqa@$host /bin/sh $tmp.cmd >/dev/null 2>&1
+ ssh -q pcpqa@$host "rm -f $tmp.cmd"
+}
+
+_speak_to_me()
+{
+ host=$1
+ pid=''
+ base=''
+ cat <<'End-of-File' | ssh -q pcpqa@$host sh >$tmp.tmp 2>&1
+if [ -r $PCP_DIR/etc/pcp.env ]
+then
+ . $PCP_DIR/etc/pcp.env
+else
+ echo "Error: unable to read $PCP_DIR/etc/pcp.env!" >&2
+ exit 1
+fi
+rm -f /tmp/$$.*
+test -k $PCP_TMP_DIR/pmlogger || /usr/bin/sudo chmod o+w $PCP_TMP_DIR/pmlogger 2>/dev/null
+( pmlogger -T5min -L -c /dev/null -l /tmp/$$.log /tmp/$$ </dev/null >/dev/null 2>&1 ) &
+echo pid=$! base=$$
+End-of-File
+
+ echo >>$seq.full
+ echo "From ssh to $host ..." >>$seq.full
+ cat $tmp.tmp >>$seq.full
+
+ eval `cat $tmp.tmp`
+
+ if [ -z "$pid" ]
+ then
+ echo "Arrgh ... failed to get remote pmlogger pid for host $host"
+ exit
+ fi
+
+ if [ -z "$base" ]
+ then
+ echo "Arrgh ... failed to get remote archive basename for host $host"
+ exit
+ fi
+
+ for i in 1 2 3 4 5 6 7 8 9 10
+ do
+ if echo quit | pmlc -h $host $pid 2>&1 | grep 'Connected to' >/dev/null
+ then
+ break
+ else
+ if [ $i = 10 ]
+ then
+ echo "Arrgh ... pmlogger (pid=$pid) on host $host failed to start after 20 seconds"
+ exit 1
+ fi
+ fi
+ sleep 2
+ done
+
+ # the success cases
+ #
+ cat <<End-of-File | pmlc 2>&1 | _filter
+connect $pid@$host
+status
+new volume
+status
+flush
+# singular, all instances
+query { pmcd.simabi pmcd.control.register }
+# some instances
+query pmcd.agent.type ["sample" "pmcd" "sampledso"]
+# non-leaf
+query pmcd.pdu_in
+# logging
+log mandatory on once pmcd.agent.type ["sample" "pmcd"]
+End-of-File
+
+ # stopping and starting again should be enough to allow pmlogger
+ # to have logged the metrics from the last request ... except the
+ # pmlc control port socket may not have been ripped down, so
+ # sleep some
+ #
+ sleep 2
+
+ cat <<End-of-File | pmlc 2>&1 | _filter
+connect $pid@$host
+log mandatory off pmcd.agent.type ["sampledso"]
+query pmcd.agent.type ["sample" "pmcd" "sampledso"]
+End-of-File
+
+ # the failures
+ #
+ # echo "log mandatory on once proc" | pmlc -h $host $pid -D1
+ echo "connect 0@$host" | pmlc 2>&1 | _filter
+
+ # cleanup
+ #
+ if [ ! -z "$host" ]
+ then
+ _remote_signal $host $pid $base
+ pid=''
+ base=''
+ fi
+}
+
+_cleanup()
+{
+ if $need_clean
+ then
+ if [ ! -z "$pid" -a ! -z "$base" -a ! -z "$host" ]
+ then
+ _remote_signal $host $pid $base
+ pid=''
+ base=''
+ fi
+ need_clean=false
+ fi
+ rm -f $tmp.*
+}
+
+need_clean=true
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+host=''
+pid=''
+base=''
+
+# the v1 host may be on the other side of the planet
+#
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+# real QA test starts here
+
+for type in '-b 64 -v pcp\>=2'
+do
+ cmd="./getpmcdhosts -L -n 1 $type 2>/dev/null"
+ host=`eval $cmd`
+ if [ -z "$host" ]
+ then
+ echo "Cannot find a 64-bit host running PCP" >$seq.notrun
+ need_clean=false
+ exit
+ else
+ echo
+ echo "=== pmlogger host type: $type ===" | sed 's/\\>//'
+ echo "$type => $host" >>$seq.full
+ _speak_to_me $host
+ fi
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/374.out.1 b/qa/374.out.1
new file mode 100644
index 0000000..444e7eb
--- /dev/null
+++ b/qa/374.out.1
@@ -0,0 +1,97 @@
+QA output created by 374
+
+=== pmlogger host type: -b 64 -v pcp=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [29 or "sample"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [30 or "sampledso"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [29 or "sample"]
+ mand on once [2 or "pmcd"]
+ mand off nl [30 or "sampledso"]
+
diff --git a/qa/374.out.2 b/qa/374.out.2
new file mode 100644
index 0000000..444e7eb
--- /dev/null
+++ b/qa/374.out.2
@@ -0,0 +1,97 @@
+QA output created by 374
+
+=== pmlogger host type: -b 64 -v pcp=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [29 or "sample"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [30 or "sampledso"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [29 or "sample"]
+ mand on once [2 or "pmcd"]
+ mand off nl [30 or "sampledso"]
+
diff --git a/qa/375 b/qa/375
new file mode 100755
index 0000000..82625fe
--- /dev/null
+++ b/qa/375
@@ -0,0 +1,150 @@
+#! /bin/sh
+# PCP QA Test No. 374
+# pmlogger (PCP 2.0) and pmlc (assorted) version compatibility
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+PMCD_CONNECT_TIMEOUT=30
+PMCD_REQUEST_TIMEOUT=30
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ linux|darwin|solaris)
+ if [ $PCP_VER -lt 3600 ]; then
+ ln $seq.$PCP_PLATFORM $seq.out || exit 1
+ elif [ $PCP_VER -lt 3800 ]; then
+ ln $seq.$PCP_PLATFORM.2 $seq.out || exit 1
+ else
+ ln $seq.$PCP_PLATFORM.3 $seq.out || exit 1
+ fi
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+_filter()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/^pmlogger .* on host .* is logging metrics from host .*/d' \
+ -e '/^PMCD host/d' \
+ -e '/^TIMESTAMP started/d' \
+ | $PCP_AWK_PROG '
+$1 == "log" && $2 == "size" { if ($3 > 100 && $3 <= 200) $3 = "more than 100"
+ else if ($3 > 200 && $3 <= 300) $3 = "more than 200"
+ }
+ { print }'
+}
+
+_speak_to_me()
+{
+ host=$1
+ $sudo rm -f /tmp/$$.*
+ _start_up_pmlogger -L -c /dev/null -l /tmp/$$.log /tmp/$$ </dev/null >/dev/null 2>&1
+ _wait_for_pmlogger $pid /tmp/$$.log
+
+ # the success cases
+ #
+ cat <<End-of-File | ssh -q pcpqa@$host "sh -c 'PMCD_CONNECT_TIMEOUT=$PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT=$PMCD_REQUEST_TIMEOUT pmlc'" >$tmp.out 2>$tmp.err
+connect $pid@$me
+status
+new volume
+status
+flush
+# singular, all instances
+query { pmcd.simabi pmcd.control.register }
+# some instances
+query pmcd.agent.type [ "$PCP_PLATFORM" "pmcd" "sample"]
+# non-leaf
+query pmcd.pdu_in
+# logging
+log mandatory on once pmcd.agent.type ["$PCP_PLATFORM" "pmcd"]
+log mandatory off pmcd.agent.type ["sample"]
+End-of-File
+ # do ssh again is probably long enough for "once" metrics above
+ # to have been logged
+ #
+ cat <<End-of-File | ssh -q pcpqa@$host "sh -c 'PMCD_CONNECT_TIMEOUT=$PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT=$PMCD_REQUEST_TIMEOUT pmlc'" >>$tmp.out 2>>$tmp.err
+connect $pid@$me
+query pmcd.agent.type ["$PCP_PLATFORM" "pmcd" "sample"]
+End-of-File
+ cat $tmp.err $tmp.out | _filter
+
+ # the failures
+ #
+ # echo "log mandatory on once sample" | pmlc -h $host $pid -D1
+ echo "connect $pid@$me" | ssh -q pcpqa@$host "sh -c 'PMCD_CONNECT_TIMEOUT=$PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT=$PMCD_REQUEST_TIMEOUT pmlc'" >$tmp.out 2>$tmp.err
+ cat $tmp.err $tmp.out | _filter
+
+ # cleanup
+ #
+ if [ ! -z "$host" ]
+ then
+ $sudo $signal -s TERM $pid
+ pid=''
+ fi
+
+}
+
+_cleanup()
+{
+ if $need_clean
+ then
+ if [ ! -z "$pid" ]
+ then
+ $sudo $signal -s TERM $pid
+ sleep 1
+ $sudo $signal -s KILL $pid
+ pid=''
+ fi
+ need_clean=false
+ fi
+ $sudo rm -f $tmp.*
+ exit
+}
+
+need_clean=true
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+if [ -x $PCP_BINADM_DIR/pmhostname ]
+then
+ me=`pmhostname`
+else
+ host=`hostname`
+ me=`_host_to_fqdn $host`
+fi
+pid=''
+
+# real QA test starts here
+
+for type in "-b 32 -v pcp>=2" "-b 64 -v pcp>=2"
+do
+ echo
+ echo "=== pmlc host type: $type ==="
+ host=`./getpmcdhosts -L -n 1 $type`
+ if [ -z "$host" ]
+ then
+ _notrun "Cannot find a 64-bit host running PCP"
+ else
+ # echo $host
+ _speak_to_me $host
+ fi
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/375.darwin b/qa/375.darwin
new file mode 100644
index 0000000..02aa076
--- /dev/null
+++ b/qa/375.darwin
@@ -0,0 +1,193 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [78 or "darwin"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.datax
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [78 or "darwin"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [78 or "darwin"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.datax
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [78 or "darwin"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/375.darwin.2 b/qa/375.darwin.2
new file mode 100644
index 0000000..78fccc0
--- /dev/null
+++ b/qa/375.darwin.2
@@ -0,0 +1,187 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [78 or "darwin"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [78 or "darwin"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [78 or "darwin"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [78 or "darwin"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/375.darwin.3 b/qa/375.darwin.3
new file mode 100644
index 0000000..3d7fc8b
--- /dev/null
+++ b/qa/375.darwin.3
@@ -0,0 +1,193 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [78 or "darwin"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [78 or "darwin"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [78 or "darwin"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [78 or "darwin"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/375.linux b/qa/375.linux
new file mode 100644
index 0000000..485dec5
--- /dev/null
+++ b/qa/375.linux
@@ -0,0 +1,193 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [60 or "linux"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.datax
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [60 or "linux"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [60 or "linux"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.datax
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [60 or "linux"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/375.linux.2 b/qa/375.linux.2
new file mode 100644
index 0000000..5f81985
--- /dev/null
+++ b/qa/375.linux.2
@@ -0,0 +1,187 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [60 or "linux"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [60 or "linux"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [60 or "linux"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [60 or "linux"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/375.linux.3 b/qa/375.linux.3
new file mode 100644
index 0000000..b78bec5
--- /dev/null
+++ b/qa/375.linux.3
@@ -0,0 +1,193 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [60 or "linux"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [60 or "linux"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [60 or "linux"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [60 or "linux"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/375.solaris.2 b/qa/375.solaris.2
new file mode 100644
index 0000000..033354f
--- /dev/null
+++ b/qa/375.solaris.2
@@ -0,0 +1,187 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [75 or "solaris"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [75 or "solaris"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [75 or "solaris"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.agent.type
+ mand on once [75 or "solaris"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/375.solaris.3 b/qa/375.solaris.3
new file mode 100644
index 0000000..1eeec73
--- /dev/null
+++ b/qa/375.solaris.3
@@ -0,0 +1,193 @@
+QA output created by 375
+
+=== pmlc host type: -b 32 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [75 or "solaris"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [75 or "solaris"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
+
+=== pmlc host type: -b 64 -v pcp>=2 ===
+New log volume 1
+last log entry DATE
+current time DATE
+log volume 0
+log size more than 200
+last log entry DATE
+current time DATE
+log volume 1
+log size more than 100
+pmcd.simabi
+ adv off nl
+
+pmcd.control.register
+ adv off nl [0 or "0"]
+ adv off nl [1 or "1"]
+ adv off nl [2 or "2"]
+ adv off nl [3 or "3"]
+ adv off nl [4 or "4"]
+ adv off nl [5 or "5"]
+ adv off nl [6 or "6"]
+ adv off nl [7 or "7"]
+ adv off nl [8 or "8"]
+ adv off nl [9 or "9"]
+ adv off nl [10 or "10"]
+ adv off nl [11 or "11"]
+ adv off nl [12 or "12"]
+ adv off nl [13 or "13"]
+ adv off nl [14 or "14"]
+ adv off nl [15 or "15"]
+
+pmcd.agent.type
+ adv off nl [75 or "solaris"]
+ adv off nl [2 or "pmcd"]
+ adv off nl [29 or "sample"]
+
+pmcd.pdu_in.error
+ adv off nl
+
+pmcd.pdu_in.result
+ adv off nl
+
+pmcd.pdu_in.profile
+ adv off nl
+
+pmcd.pdu_in.fetch
+ adv off nl
+
+pmcd.pdu_in.desc_req
+ adv off nl
+
+pmcd.pdu_in.desc
+ adv off nl
+
+pmcd.pdu_in.instance_req
+ adv off nl
+
+pmcd.pdu_in.instance
+ adv off nl
+
+pmcd.pdu_in.text_req
+ adv off nl
+
+pmcd.pdu_in.text
+ adv off nl
+
+pmcd.pdu_in.control_req
+ adv off nl
+
+pmcd.pdu_in.creds
+ adv off nl
+
+pmcd.pdu_in.pmns_ids
+ adv off nl
+
+pmcd.pdu_in.pmns_names
+ adv off nl
+
+pmcd.pdu_in.pmns_child
+ adv off nl
+
+pmcd.pdu_in.total
+ adv off nl
+
+pmcd.pdu_in.pmns_traverse
+ adv off nl
+
+pmcd.pdu_in.auth
+ adv off nl
+
+pmcd.agent.type
+ mand on once [75 or "solaris"]
+ mand on once [2 or "pmcd"]
+ mand off nl [29 or "sample"]
+
diff --git a/qa/376 b/qa/376
new file mode 100755
index 0000000..6fc99f0
--- /dev/null
+++ b/qa/376
@@ -0,0 +1,88 @@
+#! /bin/sh
+# PCP QA Test No. 376
+# libpcp_trace
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ cd $here
+ rm -f $tmp.*
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ if $_needclean
+ then
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo trace >/dev/null 2>&1 && install_on_cleanup=true
+
+status=1 # failure is the default!
+_needclean=true
+trap "_cleanup" 0 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+qahost=`hostname`
+
+_filter_trace_install()
+{
+ # some warnings are *expected* - no trace values yet
+ _filter_pmda_install | sed \
+ -e "s/$qahost/HOSTNAME/g" \
+ -e 's/ *[0-9]+ warnings,//g'
+}
+
+_tracefilter()
+{
+ sed -e 's/^000:.*/[PDU BUFFER]/g' \
+ -e 's/from=[0-9].*/from=[PID]/g' \
+ -e 's/ free pdubuf.*/[FREE PDUBUF]/g' \
+ -e 's/^\[[0-9]*]/[PID]/g' \
+ -e 's/__pmtracefindPDUbuf.*/[FIND PDUBUF]/g' \
+ -e 's/ fd=[0-9][0-9]*/ fd=<n>/g'
+}
+
+# real QA test starts here
+cd $PCP_PMDAS_DIR/trace
+$sudo ./Install -R / < /dev/null 2>&1 | _filter_trace_install
+_wait_for_pmcd
+cd $here
+
+for i in 1 2 3 4
+do
+ src/tstate $i 2>&1 | _tracefilter
+ sts=$?
+ if [ $sts -ne 0 ]
+ then
+ echo "=== Error: state check #$i failed ==="
+ status=1
+ fi
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/376.out b/qa/376.out
new file mode 100644
index 0000000..918392c
--- /dev/null
+++ b/qa/376.out
@@ -0,0 +1,43 @@
+QA output created by 376
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+--- Test 1 ---
+tstate: state now is 0x1
+tstate: state now is 0xd
+_pmtracecommon: trace tag 'tstate1' (type=2,value=-1.000000)
+[FIND PDUBUF]
+[FREE PDUBUF]
+[PID]__pmtracegetPDU: ACK fd=<n> len=16 from=[PID]
+[PDU BUFFER]
+__pmtracedecodeack -> data=1
+[FIND PDUBUF]
+[FREE PDUBUF]
+__pmtracesenddata(tag="tstate1", data=-1.000000)
+[PID]__pmtracexmitPDU: DATA fd=<n> len=32
+[PDU BUFFER]
+[FIND PDUBUF]
+[FREE PDUBUF]
+[PID]__pmtracegetPDU: ACK fd=<n> len=16 from=[PID]
+[PDU BUFFER]
+__pmtracedecodeack -> data=2
+state should be only ASYNC 0x20 ...
+tstate: state now is 0x2d
+--- Test 2 ---
+tstate: state now is 0x20
+state should be same as previous ...
+tstate: state now is 0x20
+--- Test 3 ---
+state change should fail ... OK
+--- Test 4 ---
+tstate: state now is 0x21
+_pmtracecommon: trace tag 'tstate4' (type=2,value=-1.000000)
+change to async only (0x20)...
+tstate: state now is 0x21
diff --git a/qa/377 b/qa/377
new file mode 100755
index 0000000..f90d9cb
--- /dev/null
+++ b/qa/377
@@ -0,0 +1,48 @@
+#! /bin/sh
+# PCP QA Test No. 377
+# Prototype bit-field swizzling for endian support
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ -f $PCP_DIR/usr/include/pcp/config.h ]
+then
+ # PCP 3.8.3 or later
+ defs=$PCP_DIR/usr/include/pcp/config.h
+elif [ -f $PCP_DIR/usr/include/pcp/platform_header.h ]
+then
+ # PCP 3.6 or later
+ defs=$PCP_DIR/usr/include/pcp/platform_header.h
+elif [ -f $PCP_DIR/usr/include/pcp/platform_defs.h ]
+then
+ # older PCP versions
+ defs=$PCP_DIR/usr/include/pcp/platform_defs.h
+else
+ _notrun "No $PCP_DIR/usr/include/pcp headers found"
+fi
+grep '#define HAVE_BITFIELDS_LTOR' $defs >/dev/null 2>&1 || \
+ _notrun "HAVE_BITFIELDS_LTOR is false"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== read external format ==="
+src/read-bf <src/sgi.bf
+
+echo
+echo "=== write external format ==="
+src/write-bf >$tmp.out
+cmp src/sgi.bf $tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/377.out b/qa/377.out
new file mode 100644
index 0000000..895266f
--- /dev/null
+++ b/qa/377.out
@@ -0,0 +1,8 @@
+QA output created by 377
+=== read external format ===
+sizeof(bits_t): 8
+read: deadbeef cafe0000
+
+=== write external format ===
+sizeof(bits_t): 8
+write: deadbeef cafe0000
diff --git a/qa/378 b/qa/378
new file mode 100755
index 0000000..916e516
--- /dev/null
+++ b/qa/378
@@ -0,0 +1,94 @@
+#!/bin/sh
+# PCP QA Test No. 378
+#
+# pmie with multiple -a arguments
+# - problem reported by Jason Rappleye @ NASA
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed -e '/ Info: evaluator exiting/d'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+echo "just one archive (kenj-pc-1) ..."
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/kenj-pc-1 2>&1 \
+| _filter
+kernel.all.load #'1 minute' > 1.5 -> print "%h: %v";
+End-of-File
+
+echo
+echo "expect error as same host ..."
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/kenj-pc-1 -a src/kenj-pc-2 2>&1 \
+| _filter
+kernel.all.load #'1 minute' > 1.5 -> print "%h: %v";
+End-of-File
+
+echo
+echo "other archive (naslog) ..."
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/naslog 2>&1 \
+| _filter
+kernel.all.load #'1 minute' > 1.5 -> print "%h: %v";
+End-of-File
+
+echo
+echo "and now together kenj-pc-1 first ..."
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/kenj-pc-1 -a src/naslog 2>&1 \
+| _filter
+kernel.all.load #'1 minute' > 1.5 -> print "%h: %v";
+End-of-File
+
+echo
+echo "and now together naslog first ..."
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/naslog -a src/kenj-pc-1 2>&1 \
+| _filter
+kernel.all.load #'1 minute' > 1.5 -> print "%h: %v";
+End-of-File
+
+echo
+echo "two rules, host-specific (naslog first) ..."
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/naslog -a src/kenj-pc-1 2>&1 \
+| _filter
+kernel.all.load :'kenj-pc' #'1 minute' > 1.5 -> print "%h: %v";
+kernel.all.load :snort #'1 minute' > 1.5 -> print "%h: %v";
+End-of-File
+
+echo
+echo "and now with some_host ... only one value ever available, so >"
+echo "condition is always false and some_host never gets a chance"
+echo "... expect no output"
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/naslog -a src/kenj-pc-1 2>&1 \
+| _filter
+some_host ( kernel.all.load :'kenj-pc' :snort #'1 minute' ) > 1.5 -> print "%h: %v";
+End-of-File
+
+echo
+echo "... and it does not matter which order the archives are given"
+cat <<End-of-File \
+| pmie -z -A 1min -t 60 -a src/kenj-pc-1 -a src/naslog 2>&1 \
+| _filter
+some_host ( kernel.all.load :'kenj-pc' :snort #'1 minute' ) > 1.5 -> print "%h: %v";
+End-of-File
+
+# success, all done
+exit
diff --git a/qa/378.out b/qa/378.out
new file mode 100644
index 0000000..7dfa328
--- /dev/null
+++ b/qa/378.out
@@ -0,0 +1,86 @@
+QA output created by 378
+just one archive (kenj-pc-1) ...
+pmie: timezone set to local timezone of host kenj-pc
+print Sun Feb 8 13:02:00 2004: kenj-pc: 1.51
+print Sun Feb 8 13:05:00 2004: kenj-pc: 1.71
+print Sun Feb 8 13:23:00 2004: kenj-pc: 2.23
+print Sun Feb 8 13:24:00 2004: kenj-pc: 2.17
+print Sun Feb 8 13:25:00 2004: kenj-pc: 1.68
+print Sun Feb 8 13:39:00 2004: kenj-pc: 2.08
+print Sun Feb 8 14:47:00 2004: kenj-pc: 1.71
+print Sun Feb 8 14:48:00 2004: kenj-pc: 1.52
+print Sun Feb 8 14:49:00 2004: kenj-pc: 1.81
+print Sun Feb 8 14:50:00 2004: kenj-pc: 1.55
+print Sun Feb 8 14:52:00 2004: kenj-pc: 1.81
+print Sun Feb 8 15:15:00 2004: kenj-pc: 1.85
+print Sun Feb 8 15:16:00 2004: kenj-pc: 1.56
+print Sun Feb 8 15:17:00 2004: kenj-pc: 1.53
+
+expect error as same host ...
+pmie: Error: archive src/kenj-pc-2 not legal - archive src/kenj-pc-1 is already open for host kenj-pc
+
+other archive (naslog) ...
+pmie: timezone set to local timezone of host snort
+print Thu Apr 8 16:12:00 2004: snort: 3.27
+print Thu Apr 8 16:13:00 2004: snort: 2.87
+print Thu Apr 8 16:14:00 2004: snort: 3.17
+print Thu Apr 8 16:15:00 2004: snort: 2.83
+print Thu Apr 8 16:16:00 2004: snort: 3.04
+print Thu Apr 8 16:17:00 2004: snort: 2.11
+
+and now together kenj-pc-1 first ...
+pmie: timezone set to local timezone of host kenj-pc
+print Sun Feb 8 13:02:00 2004: kenj-pc: 1.51
+print Sun Feb 8 13:05:00 2004: kenj-pc: 1.71
+print Sun Feb 8 13:23:00 2004: kenj-pc: 2.23
+print Sun Feb 8 13:24:00 2004: kenj-pc: 2.17
+print Sun Feb 8 13:25:00 2004: kenj-pc: 1.68
+print Sun Feb 8 13:39:00 2004: kenj-pc: 2.08
+print Sun Feb 8 14:47:00 2004: kenj-pc: 1.71
+print Sun Feb 8 14:48:00 2004: kenj-pc: 1.52
+print Sun Feb 8 14:49:00 2004: kenj-pc: 1.81
+print Sun Feb 8 14:50:00 2004: kenj-pc: 1.55
+print Sun Feb 8 14:52:00 2004: kenj-pc: 1.81
+print Sun Feb 8 15:15:00 2004: kenj-pc: 1.85
+print Sun Feb 8 15:16:00 2004: kenj-pc: 1.56
+print Sun Feb 8 15:17:00 2004: kenj-pc: 1.53
+
+and now together naslog first ...
+pmie: timezone set to local timezone of host snort
+print Thu Apr 8 16:12:00 2004: snort: 3.27
+print Thu Apr 8 16:13:00 2004: snort: 2.87
+print Thu Apr 8 16:14:00 2004: snort: 3.17
+print Thu Apr 8 16:15:00 2004: snort: 2.83
+print Thu Apr 8 16:16:00 2004: snort: 3.04
+print Thu Apr 8 16:17:00 2004: snort: 2.11
+
+two rules, host-specific (naslog first) ...
+pmie: timezone set to local timezone of host snort
+print Sun Feb 8 13:02:00 2004: kenj-pc: 1.51
+print Sun Feb 8 13:05:00 2004: kenj-pc: 1.71
+print Sun Feb 8 13:23:00 2004: kenj-pc: 2.23
+print Sun Feb 8 13:24:00 2004: kenj-pc: 2.17
+print Sun Feb 8 13:25:00 2004: kenj-pc: 1.68
+print Sun Feb 8 13:39:00 2004: kenj-pc: 2.08
+print Sun Feb 8 14:47:00 2004: kenj-pc: 1.71
+print Sun Feb 8 14:48:00 2004: kenj-pc: 1.52
+print Sun Feb 8 14:49:00 2004: kenj-pc: 1.81
+print Sun Feb 8 14:50:00 2004: kenj-pc: 1.55
+print Sun Feb 8 14:52:00 2004: kenj-pc: 1.81
+print Sun Feb 8 15:15:00 2004: kenj-pc: 1.85
+print Sun Feb 8 15:16:00 2004: kenj-pc: 1.56
+print Sun Feb 8 15:17:00 2004: kenj-pc: 1.53
+print Thu Apr 8 16:12:00 2004: snort: 3.27
+print Thu Apr 8 16:13:00 2004: snort: 2.87
+print Thu Apr 8 16:14:00 2004: snort: 3.17
+print Thu Apr 8 16:15:00 2004: snort: 2.83
+print Thu Apr 8 16:16:00 2004: snort: 3.04
+print Thu Apr 8 16:17:00 2004: snort: 2.11
+
+and now with some_host ... only one value ever available, so >
+condition is always false and some_host never gets a chance
+... expect no output
+pmie: timezone set to local timezone of host snort
+
+... and it does not matter which order the archives are given
+pmie: timezone set to local timezone of host kenj-pc
diff --git a/qa/379 b/qa/379
new file mode 100755
index 0000000..f8419f2
--- /dev/null
+++ b/qa/379
@@ -0,0 +1,74 @@
+#!/bin/sh
+# PCP QA Test No. 379
+# Exercise Cisco PMDA parser
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_check()
+{
+ echo
+ file=$1
+ shift
+ args=""
+ for x
+ do
+ args="$args $x"
+ done
+ intf=`$PCP_PMDAS_DIR/cisco/probe -N $args $file 2>/dev/null`
+ if [ -z "$intf" ]
+ then
+ echo "$file: Argh ... cannot extract list of interfaces!"
+ return
+ fi
+ for x in $intf
+ do
+ args="$args $file:$x"
+ done
+ echo "=== $args ==="
+ $PCP_PMDAS_DIR/cisco/parse -N $args 2>&1 \
+ | sed \
+ -e 's/fd=4/fd=3/' \
+ -e '/Sleeping while sproc does the work/d'
+}
+
+# real QA test starts here
+cd cisco
+cat <<'End-of-File' | while read file args
+Serial-0 -Dappl2
+Serial-0
+Ethernet-0 -Ulogin
+Fddi-2-0 -Ulogin -Psecret
+Serial-1
+Ethernet-3-5
+ATM-12-0
+Hssi-3-0
+FastEthernet-1-0 -s cmd#
+Serial-1-0-min
+Serial-1-0-sec
+Ethernet-1-0
+Vlan-256
+Vlan-1 -Ulogin -Psecret -s bgo-sw20#
+Vlan-160 -Ulogin -Psecret -s bgo-sw20#
+FastEthernet-0-5 -Ulogin -Psecret -s bgo-sw20#
+FastEthernet-0-6 -Ulogin -Psecret -s bgo-sw20#
+GigabitEthernet-0-1 -Ulogin -Psecret -s bgo-sw20#
+End-of-File
+do
+ _check $file $args
+done
+
+# success, all done
+exit
diff --git a/qa/379.out b/qa/379.out
new file mode 100644
index 0000000..96bb1df
--- /dev/null
+++ b/qa/379.out
@@ -0,0 +1,390 @@
+QA output created by 379
+
+=== -Dappl2 Serial-0:s0 ===
+parse: assuming file Serial-0 contains output from "show int" command
+Interface s0(0) is on host Serial-0
+Starting sproc ...
+cisco[0] host: Serial-0 username: (null) passwd: (null) prompt: > intf: 0-s0
+grab_cisco(Serial-0:s0):
+show int s0
+Parse:[noise] mygetwd: fd=3 wd=">" [prompt]
+[noise] mygetwd: fd=3 wd="show"
+[noise] mygetwd: fd=3 wd="interface"
+[noise] mygetwd: fd=3 wd="Serial0"
+[in_report] mygetwd: fd=3 wd="is"
+[in_report] mygetwd: fd=3 wd="up,"
+[in_report] mygetwd: fd=3 wd="line"
+[in_report] mygetwd: fd=3 wd="protocol"
+[in_report] mygetwd: fd=3 wd="is"
+[in_report] mygetwd: fd=3 wd="up"
+[in_report] mygetwd: fd=3 wd="Hardware"
+[in_report] mygetwd: fd=3 wd="is"
+[in_report] mygetwd: fd=3 wd="MK5025"
+[in_report] mygetwd: fd=3 wd="Description:"
+skip2eol:frame-relay to MtVA, Tokyo, Hong Kong
+[in_report] mygetwd: fd=3 wd="Internet"
+[in_report] mygetwd: fd=3 wd="address"
+[in_report] mygetwd: fd=3 wd="is"
+[in_report] mygetwd: fd=3 wd="155.11.201.172,"
+[in_report] mygetwd: fd=3 wd="subnet"
+[in_report] mygetwd: fd=3 wd="mask"
+[in_report] mygetwd: fd=3 wd="is"
+[in_report] mygetwd: fd=3 wd="255.255.255.128"
+[in_report] mygetwd: fd=3 wd="MTU"
+[in_report] mygetwd: fd=3 wd="1500"
+[in_report] mygetwd: fd=3 wd="bytes,"
+[in_report] mygetwd: fd=3 wd="BW"
+[bw] mygetwd: fd=3 wd="64"
+[in_report] mygetwd: fd=3 wd="Kbit,"
+[in_report] mygetwd: fd=3 wd="DLY"
+[in_report] mygetwd: fd=3 wd="20000"
+[in_report] mygetwd: fd=3 wd="usec,"
+[in_report] mygetwd: fd=3 wd="rely"
+[in_report] mygetwd: fd=3 wd="255/255,"
+[in_report] mygetwd: fd=3 wd="load"
+[in_report] mygetwd: fd=3 wd="15/255"
+[in_report] mygetwd: fd=3 wd="Encapsulation"
+[in_report] mygetwd: fd=3 wd="FRAME-RELAY,"
+[in_report] mygetwd: fd=3 wd="loopback"
+[in_report] mygetwd: fd=3 wd="not"
+[in_report] mygetwd: fd=3 wd="set,"
+[in_report] mygetwd: fd=3 wd="keepalive"
+[in_report] mygetwd: fd=3 wd="set"
+[in_report] mygetwd: fd=3 wd="(10"
+[in_report] mygetwd: fd=3 wd="sec)"
+[in_report] mygetwd: fd=3 wd="LMI"
+[in_report] mygetwd: fd=3 wd="DLCI"
+[in_report] mygetwd: fd=3 wd="0,"
+[in_report] mygetwd: fd=3 wd="LMI"
+[in_report] mygetwd: fd=3 wd="sent"
+[in_report] mygetwd: fd=3 wd="346516,"
+[in_report] mygetwd: fd=3 wd="LMI"
+[in_report] mygetwd: fd=3 wd="stat"
+[in_report] mygetwd: fd=3 wd="recvd"
+[in_report] mygetwd: fd=3 wd="345070,"
+[in_report] mygetwd: fd=3 wd="LMI"
+[in_report] mygetwd: fd=3 wd="upd"
+[in_report] mygetwd: fd=3 wd="recvd"
+[in_report] mygetwd: fd=3 wd="2"
+[in_report] mygetwd: fd=3 wd="LMI"
+[in_report] mygetwd: fd=3 wd="type"
+[in_report] mygetwd: fd=3 wd="is"
+[in_report] mygetwd: fd=3 wd="ANSI"
+[in_report] mygetwd: fd=3 wd="Annex"
+[in_report] mygetwd: fd=3 wd="D"
+[in_report] mygetwd: fd=3 wd="Last"
+[in_report] mygetwd: fd=3 wd="input"
+[in_report] mygetwd: fd=3 wd="0:00:01,"
+[in_report] mygetwd: fd=3 wd="output"
+[in_report] mygetwd: fd=3 wd="0:00:00,"
+[in_report] mygetwd: fd=3 wd="output"
+[in_report] mygetwd: fd=3 wd="hang"
+[in_report] mygetwd: fd=3 wd="never"
+[in_report] mygetwd: fd=3 wd="Last"
+[in_report] mygetwd: fd=3 wd="clearing"
+[in_report] mygetwd: fd=3 wd="of"
+[in_report] mygetwd: fd=3 wd=""show"
+[in_report] mygetwd: fd=3 wd="interface""
+[in_report] mygetwd: fd=3 wd="counters"
+[in_report] mygetwd: fd=3 wd="never"
+[in_report] mygetwd: fd=3 wd="Output"
+[in_report] mygetwd: fd=3 wd="queue"
+[in_report] mygetwd: fd=3 wd="0/8,"
+[in_report] mygetwd: fd=3 wd="298580"
+[in_report] mygetwd: fd=3 wd="drops;"
+[in_report] mygetwd: fd=3 wd="input"
+[in_report] mygetwd: fd=3 wd="queue"
+[in_report] mygetwd: fd=3 wd="0/75,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="drops"
+[in_report] mygetwd: fd=3 wd="Five"
+[in_report] mygetwd: fd=3 wd="minute"
+[rate] mygetwd: fd=3 wd="input"
+[rate_in] mygetwd: fd=3 wd="rate"
+[rate_in] mygetwd: fd=3 wd="60000"
+[in_report] mygetwd: fd=3 wd="bits/sec,"
+[in_report] mygetwd: fd=3 wd="16"
+[in_report] mygetwd: fd=3 wd="packets/sec"
+[in_report] mygetwd: fd=3 wd="Five"
+[in_report] mygetwd: fd=3 wd="minute"
+[rate] mygetwd: fd=3 wd="output"
+[rate_out] mygetwd: fd=3 wd="rate"
+[rate_out] mygetwd: fd=3 wd="4000"
+[in_report] mygetwd: fd=3 wd="bits/sec,"
+[in_report] mygetwd: fd=3 wd="12"
+[in_report] mygetwd: fd=3 wd="packets/sec"
+[in_report] mygetwd: fd=3 wd="18139408"
+[in_report] mygetwd: fd=3 wd="packets"
+[in_report] mygetwd: fd=3 wd="input,"
+[bytes_in] mygetwd: fd=3 wd="2763796661"
+[in_report] mygetwd: fd=3 wd="bytes,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="no"
+[in_report] mygetwd: fd=3 wd="buffer"
+[in_report] mygetwd: fd=3 wd="Received"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="broadcasts,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="runts,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="giants"
+[in_report] mygetwd: fd=3 wd="189"
+[in_report] mygetwd: fd=3 wd="input"
+[in_report] mygetwd: fd=3 wd="errors,"
+[in_report] mygetwd: fd=3 wd="189"
+[in_report] mygetwd: fd=3 wd="CRC,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="frame,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="overrun,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="ignored,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="abort"
+[in_report] mygetwd: fd=3 wd="15860554"
+[in_report] mygetwd: fd=3 wd="packets"
+[in_report] mygetwd: fd=3 wd="output,"
+[bytes_out] mygetwd: fd=3 wd="3098844973"
+[in_report] mygetwd: fd=3 wd="bytes,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="underruns"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="output"
+[in_report] mygetwd: fd=3 wd="errors,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="collisions,"
+[in_report] mygetwd: fd=3 wd="668"
+[in_report] mygetwd: fd=3 wd="interface"
+[in_report] mygetwd: fd=3 wd="resets,"
+[in_report] mygetwd: fd=3 wd="0"
+[in_report] mygetwd: fd=3 wd="restarts"
+[in_report] mygetwd: fd=3 wd="686"
+[in_report] mygetwd: fd=3 wd="carrier"
+[in_report] mygetwd: fd=3 wd="transitions"
+[in_report] mygetwd: fd=3 wd=">" [prompt]
+Extracted 5 values ...
+bandwidth: 8000 bytes/sec
+recent rate (bytes/sec): 7500 in 500 out
+total bytes: 2763796661 in 3098844973 out ? out_bcast
+
+
+=== Serial-0:s0 ===
+parse: assuming file Serial-0 contains output from "show int" command
+Interface s0(0) is on host Serial-0
+Starting sproc ...
+cisco[0] host: Serial-0 username: (null) passwd: (null) prompt: > intf: 0-s0
+grab_cisco(Serial-0:s0):
+show int s0
+Extracted 5 values ...
+bandwidth: 8000 bytes/sec
+recent rate (bytes/sec): 7500 in 500 out
+total bytes: 2763796661 in 3098844973 out ? out_bcast
+
+
+=== -Ulogin Ethernet-0:e0 ===
+parse: assuming file Ethernet-0 contains output from "show int" command
+Interface e0(0) is on host Ethernet-0
+Starting sproc ...
+cisco[0] host: Ethernet-0 username: login passwd: (null) prompt: > intf: 0-e0
+grab_cisco(Ethernet-0:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 625 in 7500 out
+total bytes: 1321046112 in 870622060 out ? out_bcast
+
+
+=== -Ulogin -Psecret Fddi-2-0:f2/0 ===
+parse: assuming file Fddi-2-0 contains output from "show int" command
+Interface f2/0(0) is on host Fddi-2-0
+Starting sproc ...
+cisco[0] host: Fddi-2-0 username: login passwd: secret prompt: > intf: 0-f2/0
+grab_cisco(Fddi-2-0:f2/0):
+show int f2/0
+Extracted 5 values ...
+bandwidth: 12500000 bytes/sec
+recent rate (bytes/sec): 20000 in 11625 out
+total bytes: 4009491185 in 612803885 out ? out_bcast
+
+
+=== Serial-1:s1 ===
+parse: assuming file Serial-1 contains output from "show int" command
+Interface s1(0) is on host Serial-1
+Starting sproc ...
+cisco[0] host: Serial-1 username: (null) passwd: (null) prompt: > intf: 0-s1
+grab_cisco(Serial-1:s1):
+show int s1
+Extracted 5 values ...
+bandwidth: 193000 bytes/sec
+recent rate (bytes/sec): 14625 in 4000 out
+total bytes: 1105345262 in 675844616 out ? out_bcast
+
+
+=== Ethernet-3-5:e3/5 ===
+parse: assuming file Ethernet-3-5 contains output from "show int" command
+Interface e3/5(0) is on host Ethernet-3-5
+Starting sproc ...
+cisco[0] host: Ethernet-3-5 username: (null) passwd: (null) prompt: > intf: 0-e3/5
+grab_cisco(Ethernet-3-5:e3/5):
+show int e3/5
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 11375 out
+total bytes: 1448819515 in 3227527737 out ? out_bcast
+
+
+=== ATM-12-0:a12/0 ===
+parse: assuming file ATM-12-0 contains output from "show int" command
+Interface a12/0(0) is on host ATM-12-0
+Starting sproc ...
+cisco[0] host: ATM-12-0 username: (null) passwd: (null) prompt: > intf: 0-a12/0
+grab_cisco(ATM-12-0:a12/0):
+show int a12/0
+Extracted 5 values ...
+bandwidth: 19531250 bytes/sec
+recent rate (bytes/sec): 22625 in 20000 out
+total bytes: 1239748718 in 4188341273 out ? out_bcast
+
+
+=== Hssi-3-0:h3/0 ===
+parse: assuming file Hssi-3-0 contains output from "show int" command
+Interface h3/0(0) is on host Hssi-3-0
+Starting sproc ...
+cisco[0] host: Hssi-3-0 username: (null) passwd: (null) prompt: > intf: 0-h3/0
+grab_cisco(Hssi-3-0:h3/0):
+show int h3/0
+Extracted 5 values ...
+bandwidth: 5630625 bytes/sec
+recent rate (bytes/sec): 0 in 0 out
+total bytes: 1443052046 in 3684064154 out ? out_bcast
+
+
+=== -s cmd# FastEthernet-1-0:E1/0 ===
+parse: assuming file FastEthernet-1-0 contains output from "show int" command
+Interface FastEthernet1/0(0) is on host FastEthernet-1-0
+Starting sproc ...
+cisco[0] host: FastEthernet-1-0 username: (null) passwd: (null) prompt: cmd# intf: 0-FastEthernet1/0
+grab_cisco(FastEthernet-1-0:FastEthernet1/0):
+show int FastEthernet1/0
+Extracted 5 values ...
+bandwidth: 12500000 bytes/sec
+recent rate (bytes/sec): 1000 in 1375 out
+total bytes: 1942263093 in 1811832796 out ? out_bcast
+
+
+=== Serial-1-0-min:s1/0 ===
+parse: assuming file Serial-1-0-min contains output from "show int" command
+Interface s1/0(0) is on host Serial-1-0-min
+Starting sproc ...
+cisco[0] host: Serial-1-0-min username: (null) passwd: (null) prompt: > intf: 0-s1/0
+grab_cisco(Serial-1-0-min:s1/0):
+show int s1/0
+Extracted 5 values ...
+bandwidth: 8000 bytes/sec
+recent rate (bytes/sec): 375 in 375 out
+total bytes: 132623595 in 73186481 out ? out_bcast
+
+
+=== Serial-1-0-sec:s1/0 ===
+parse: assuming file Serial-1-0-sec contains output from "show int" command
+Interface s1/0(0) is on host Serial-1-0-sec
+Starting sproc ...
+cisco[0] host: Serial-1-0-sec username: (null) passwd: (null) prompt: > intf: 0-s1/0
+grab_cisco(Serial-1-0-sec:s1/0):
+show int s1/0
+Extracted 5 values ...
+bandwidth: 8000 bytes/sec
+recent rate (bytes/sec): 7750 in 1000 out
+total bytes: 630502832 in 230325061 out ? out_bcast
+
+
+=== Ethernet-1-0:e1/0 ===
+parse: assuming file Ethernet-1-0 contains output from "show int" command
+Interface e1/0(0) is on host Ethernet-1-0
+Starting sproc ...
+cisco[0] host: Ethernet-1-0 username: (null) passwd: (null) prompt: > intf: 0-e1/0
+grab_cisco(Ethernet-1-0:e1/0):
+show int e1/0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 3250 in 14750 out
+total bytes: 2161281566 in 4162655553 out ? out_bcast
+
+
+=== Vlan-256:Vl256 ===
+parse: assuming file Vlan-256 contains output from "show int" command
+Interface Vl256(0) is on host Vlan-256
+Starting sproc ...
+cisco[0] host: Vlan-256 username: (null) passwd: (null) prompt: > intf: 0-Vl256
+grab_cisco(Vlan-256:Vl256):
+show int Vl256
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 219250 in 1125 out
+total bytes: 816292345 in 3736073981 out ? out_bcast
+
+
+=== -Ulogin -Psecret -s bgo-sw20# Vlan-1:Vl1 ===
+parse: assuming file Vlan-1 contains output from "show int" command
+Interface Vl1(0) is on host Vlan-1
+Starting sproc ...
+cisco[0] host: Vlan-1 username: login passwd: secret prompt: bgo-sw20# intf: 0-Vl1
+grab_cisco(Vlan-1:Vl1):
+show int Vl1
+Extracted 5 values ...
+bandwidth: 125000000 bytes/sec
+recent rate (bytes/sec): 0 in 0 out
+total bytes: 284700228 in 0 out ? out_bcast
+
+
+=== -Ulogin -Psecret -s bgo-sw20# Vlan-160:Vl160 ===
+parse: assuming file Vlan-160 contains output from "show int" command
+Interface Vl160(0) is on host Vlan-160
+Starting sproc ...
+cisco[0] host: Vlan-160 username: login passwd: secret prompt: bgo-sw20# intf: 0-Vl160
+grab_cisco(Vlan-160:Vl160):
+show int Vl160
+Extracted 5 values ...
+bandwidth: 125000000 bytes/sec
+recent rate (bytes/sec): 375 in 125 out
+total bytes: 5045205764 in 656481017 out ? out_bcast
+
+
+=== -Ulogin -Psecret -s bgo-sw20# FastEthernet-0-5:E0/5 ===
+parse: assuming file FastEthernet-0-5 contains output from "show int" command
+Interface FastEthernet0/5(0) is on host FastEthernet-0-5
+Starting sproc ...
+cisco[0] host: FastEthernet-0-5 username: login passwd: secret prompt: bgo-sw20# intf: 0-FastEthernet0/5
+grab_cisco(FastEthernet-0-5:FastEthernet0/5):
+show int FastEthernet0/5
+Extracted 5 values ...
+bandwidth: 12500000 bytes/sec
+recent rate (bytes/sec): 0 in 125 out
+total bytes: 7324243891 in 20222705373 out ? out_bcast
+
+
+=== -Ulogin -Psecret -s bgo-sw20# FastEthernet-0-6:E0/6 ===
+parse: assuming file FastEthernet-0-6 contains output from "show int" command
+Interface FastEthernet0/6(0) is on host FastEthernet-0-6
+Starting sproc ...
+cisco[0] host: FastEthernet-0-6 username: login passwd: secret prompt: bgo-sw20# intf: 0-FastEthernet0/6
+grab_cisco(FastEthernet-0-6:FastEthernet0/6):
+show int FastEthernet0/6
+Extracted 5 values ...
+bandwidth: 12500000 bytes/sec
+recent rate (bytes/sec): 0 in 500 out
+total bytes: 4063397146 in 27283555831 out ? out_bcast
+
+
+=== -Ulogin -Psecret -s bgo-sw20# GigabitEthernet-0-1:G0/1 ===
+parse: assuming file GigabitEthernet-0-1 contains output from "show int" command
+Interface G0/1(0) is on host GigabitEthernet-0-1
+Starting sproc ...
+cisco[0] host: GigabitEthernet-0-1 username: login passwd: secret prompt: bgo-sw20# intf: 0-G0/1
+grab_cisco(GigabitEthernet-0-1:G0/1):
+show int G0/1
+Extracted 5 values ...
+bandwidth: 12500000 bytes/sec
+recent rate (bytes/sec): 4000 in 250 out
+total bytes: 375837411567 in 168989386887 out ? out_bcast
+
diff --git a/qa/380 b/qa/380
new file mode 100755
index 0000000..0ba70f2
--- /dev/null
+++ b/qa/380
@@ -0,0 +1,99 @@
+#!/bin/sh
+# PCP QA Test No. 380
+# Basic checkout for per-context state in PMDAs
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+pminfo sampledso | grep percontext >/dev/null || \
+ _notrun "No sampledso.percontext.* metrics"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== sampledso ==="
+pmprobe -v sampledso.pdu >$tmp.start
+for n in 20 15 10 5
+do
+ pmval -r -s $n -t 0.1 sampledso.percontext.pdu >$tmp.$n &
+done
+wait
+pmprobe -v sampledso.pdu >$tmp.end
+
+cat $tmp.start >>$seq.full
+for n in 20 15 10 5
+do
+ tail -1 $tmp.$n >>$seq.full
+done
+cat $tmp.end >>$seq.full
+
+# 5 extra pdus seems pretty deterministic for this pattern of
+# clients and requests
+#
+( sed -e 's/sampledso.pdu 1/S/' $tmp.start \
+ ; for n in 20 15 10 5
+ do
+ tail -1 $tmp.$n
+ done \
+ ; sed -e 's/sampledso.pdu 1/E/' $tmp.end \
+) | $PCP_AWK_PROG '
+$1 == "S" { start = $2; next }
+$1 == "E" { delta = $2 - start
+ if (sum <= delta && delta <= sum+5)
+ print "OK"
+ else print "end-start:",delta," sum:",sum," NOT OK"
+ next
+ }
+ { sum += $1 }'
+
+echo
+echo "=== sample ==="
+pmprobe -v sample.pdu >$tmp.start
+for n in 20 15 10 5
+do
+ pmval -r -s $n -t 0.1 sample.percontext.pdu >$tmp.$n &
+done
+wait
+pmprobe -v sample.pdu >$tmp.end
+
+cat $tmp.start >>$seq.full
+for n in 20 15 10 5
+do
+ tail -1 $tmp.$n >>$seq.full
+done
+cat $tmp.end >>$seq.full
+
+# 6 extra pdus seems pretty deterministic for this pattern of
+# clients and requests
+#
+( sed -e 's/sample.pdu 1/S/' $tmp.start \
+ ; for n in 20 15 10 5
+ do
+ tail -1 $tmp.$n
+ done \
+ ; sed -e 's/sample.pdu 1/E/' $tmp.end \
+) | $PCP_AWK_PROG '
+$1 == "S" { start = $2; next }
+$1 == "E" { delta = $2 - start
+ if (sum <= delta && delta <= sum+6)
+ print "OK"
+ else print "end-start:",delta," sum:",sum," NOT OK"
+ next
+ }
+ { sum += $1 }'
+
+# success, all done
+exit
+
+# success, all done
+exit
diff --git a/qa/380.out b/qa/380.out
new file mode 100644
index 0000000..3db8b7c
--- /dev/null
+++ b/qa/380.out
@@ -0,0 +1,6 @@
+QA output created by 380
+=== sampledso ===
+OK
+
+=== sample ===
+OK
diff --git a/qa/381 b/qa/381
new file mode 100755
index 0000000..56dfd92
--- /dev/null
+++ b/qa/381
@@ -0,0 +1,150 @@
+#! /bin/sh
+# PCP QA Test No. 381
+# pmlc with new -p port and "connect port <n>" options
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rem_host=`./getpmcdhosts -L -n 1 -P -a sample 2>$seq.notrun`
+[ -z "$rem_host" ] && _notrun `cat $seq.notrun`
+rm -f $seq.notrun
+
+_filter()
+{
+ sed \
+ -e '/Performance Co-Pilot Logger/,/ <instance> /d' \
+ -e '/^PMCD host/d' \
+ -e "s/ $pid / QA-PMLOGGER-PID /" \
+ -e "s/\[$pid\]/[QA-PMLOGGER-PID]/" \
+ -e "s/_logger_id=$pid/_logger_id=QA-PMLOGGER-PID/" \
+ -e 's/connect [0-9][0-9]* /connect PID /' \
+ -e "s/\[[0-9][0-9]*\]/[PMLOGGER-PID]/" \
+ -e "s/_logger_id=[0-9][0-9]*/_logger_id=PMLOGGER-PID/" \
+ -e "s/$rem_host/REMOTE-HOST/" \
+ -e "s/$myhost/LOCAL-HOST/" \
+ -e "s/local:/LOCAL-HOST/" \
+ -e "s/port $port /port QA-PMLOGGER-PORT /" \
+ -e 's/logging metrics from host .*/logging metrics from host .../' \
+ -e '/^log started/d' \
+ -e '/^last log entry/d' \
+ -e '/^current time/d' \
+ -e '/^log volume/d' \
+ -e '/^log size/s/.*/... status output .../'
+}
+
+# _speak_to_me <host> <pid>
+#
+_speak_to_me()
+{
+ echo
+ echo "=== _host=$1 _logger_id=$2 ===" >$tmp.out
+ echo >>$seq.full
+ echo "=== _host=$1 _logger_id=$2 ===" >>$seq.full
+ # allow pmlogger socket to be closed and ready to accept()
+ #
+ sleep 2
+ cat <<End-of-File | pmlc $DEBUG -ei >>$tmp.out 2>&1
+connect primary $1
+status
+query sample.drift
+connect port 4330 $1
+status
+flush
+connect $2 $1
+status
+flush
+End-of-File
+ cat $tmp.out >>$seq.full
+ _filter <$tmp.out
+}
+
+_cleanup()
+{
+ if $need_clean
+ then
+ if [ ! -z "$pid" ]
+ then
+ $sudo $signal -s TERM $pid
+ sleep 1
+ pid=''
+ fi
+ echo
+ _filter_pmlogger_log <$tmp.log
+ echo
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ need_clean=false
+ fi
+ $sudo rm -f $tmp.*
+ exit
+}
+
+need_clean=true
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+DEBUG=''
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+myhost=`hostname`
+pid=''
+
+$sudo rm -f $tmp.*
+
+rem_pid=`pminfo -f -h $rem_host pmcd.pmlogger.port \
+ | sed -n -e '/primary/d' -e '/ value 4330 *$/{
+s/.* "//
+s/".*//p
+}'`
+if [ -z "$rem_pid" ]
+then
+ pminfo -f -h $rem_host pmcd.pmlogger.port
+ echo "Error: cannot find pid for remote primary logger!"
+ exit
+fi
+
+_start_up_pmlogger -h $rem_host -L -c /dev/null -l $tmp.log $tmp >/dev/null 2>&1
+_wait_for_pmlogger $pid $tmp.log
+
+port=`pminfo -f pmcd.pmlogger.port \
+ | sed -n -e '/primary/d' -e '/\['$pid' /{
+s/.* value //p
+}'`
+
+rm -f $seq.full
+echo "Remote host: $rem_host [pid: $rem_pid]" >>$seq.full
+echo "Local host: $myhost [pid: $pid port: $port]" >>$seq.full
+
+# real QA test starts here
+
+_speak_to_me "" $pid
+_speak_to_me "" "port $port"
+
+_speak_to_me @$myhost $pid
+_speak_to_me @$myhost "port $port"
+
+_speak_to_me @$rem_host $rem_pid
+
+# make sure the primary logger is terminated and stop pmcd
+#
+prim_pid=`ps $PCP_PS_ALL_FLAGS | grep pmlogger | grep ' -P' | $PCP_AWK_PROG '{ print $2 }'`
+[ ! -z "$prim_pid" ] && $sudo $signal -s TERM $prim_pid
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+echo
+_speak_to_me "" $pid
+_speak_to_me "" "port $port"
+#debug# DEBUG="-D all"
+_speak_to_me @$rem_host $rem_pid
+
+# success, all done
+status=0
+exit
diff --git a/qa/381.out b/qa/381.out
new file mode 100644
index 0000000..f0584d4
--- /dev/null
+++ b/qa/381.out
@@ -0,0 +1,196 @@
+QA output created by 381
+
+=== _host= _logger_id=QA-PMLOGGER-PID ===
+
+pmlc> connect primary
+pmlc> status
+pmlogger [primary] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> query sample.drift
+sample.drift
+ adv off nl
+
+pmlc> connect port 4330
+pmlc> status
+pmlogger [PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc> connect QA-PMLOGGER-PID
+pmlc> status
+pmlogger [QA-PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+
+=== _host= _logger_id=port QA-PMLOGGER-PORT ===
+
+pmlc> connect primary
+pmlc> status
+pmlogger [primary] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> query sample.drift
+sample.drift
+ adv off nl
+
+pmlc> connect port 4330
+pmlc> status
+pmlogger [PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc> connect port QA-PMLOGGER-PORT
+pmlc> status
+pmlogger [QA-PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+
+=== _host=@LOCAL-HOST _logger_id=QA-PMLOGGER-PID ===
+
+pmlc> connect primary @LOCAL-HOST
+pmlc> status
+pmlogger [primary] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> query sample.drift
+sample.drift
+ adv off nl
+
+pmlc> connect port 4330 @LOCAL-HOST
+pmlc> status
+pmlogger [PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc> connect QA-PMLOGGER-PID @LOCAL-HOST
+pmlc> status
+pmlogger [QA-PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+
+=== _host=@LOCAL-HOST _logger_id=port QA-PMLOGGER-PORT ===
+
+pmlc> connect primary @LOCAL-HOST
+pmlc> status
+pmlogger [primary] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> query sample.drift
+sample.drift
+ adv off nl
+
+pmlc> connect port 4330 @LOCAL-HOST
+pmlc> status
+pmlogger [PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc> connect port QA-PMLOGGER-PORT @LOCAL-HOST
+pmlc> status
+pmlogger [QA-PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+
+=== _host=@REMOTE-HOST _logger_id=PMLOGGER-PID ===
+
+pmlc> connect primary @REMOTE-HOST
+pmlc> status
+pmlogger [primary] on host REMOTE-HOST is logging metrics from host ...
+... status output ...
+pmlc> query sample.drift
+sample.drift
+ adv off nl
+
+pmlc> connect port 4330 @REMOTE-HOST
+pmlc> status
+pmlogger [PMLOGGER-PID] on host REMOTE-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc> connect PID @REMOTE-HOST
+pmlc> status
+pmlogger [PMLOGGER-PID] on host REMOTE-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+Waiting for pmcd to terminate ...
+
+
+=== _host= _logger_id=QA-PMLOGGER-PID ===
+
+pmlc> connect primary
+Unable to connect to primary pmlogger at LOCAL-HOST: Connection refused
+pmlc> status
+Error [<stdin>, line 2]
+Not connected to any pmlogger instance
+pmlc> query Error [<stdin>, line 3]
+Not connected to any pmlogger instance
+sample.drift
+pmlc> connect port 4330
+Unable to connect to pmlogger on port 4330 at LOCAL-HOST: Connection refused
+pmlc> status
+Error [<stdin>, line 5]
+Not connected to any pmlogger instance
+pmlc> flush
+Error [<stdin>, line 6]
+Not connected to any pmlogger instance
+pmlc> connect QA-PMLOGGER-PID
+pmlc> status
+pmlogger [QA-PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+
+=== _host= _logger_id=port QA-PMLOGGER-PORT ===
+
+pmlc> connect primary
+Unable to connect to primary pmlogger at LOCAL-HOST: Connection refused
+pmlc> status
+Error [<stdin>, line 2]
+Not connected to any pmlogger instance
+pmlc> query Error [<stdin>, line 3]
+Not connected to any pmlogger instance
+sample.drift
+pmlc> connect port 4330
+Unable to connect to pmlogger on port 4330 at LOCAL-HOST: Connection refused
+pmlc> status
+Error [<stdin>, line 5]
+Not connected to any pmlogger instance
+pmlc> flush
+Error [<stdin>, line 6]
+Not connected to any pmlogger instance
+pmlc> connect port QA-PMLOGGER-PORT
+pmlc> status
+pmlogger [QA-PMLOGGER-PID] on host LOCAL-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+
+=== _host=@REMOTE-HOST _logger_id=PMLOGGER-PID ===
+
+pmlc> connect primary @REMOTE-HOST
+pmlc> status
+pmlogger [primary] on host REMOTE-HOST is logging metrics from host ...
+... status output ...
+pmlc> query sample.drift
+sample.drift
+ adv off nl
+
+pmlc> connect port 4330 @REMOTE-HOST
+pmlc> status
+pmlogger [PMLOGGER-PID] on host REMOTE-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc> connect PID @REMOTE-HOST
+pmlc> status
+pmlogger [PMLOGGER-PID] on host REMOTE-HOST is logging metrics from host ...
+... status output ...
+pmlc> flush
+pmlc>
+
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+
+Log finished DATE
+
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/382 b/qa/382
new file mode 100755
index 0000000..f58a3ad
--- /dev/null
+++ b/qa/382
@@ -0,0 +1,74 @@
+#!/bin/sh
+# PCP QA Test No. 382
+# check dbpmda does the right thing when contexts are opened and
+# closed
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out
+else
+ ln $seq.out.2 $seq.out
+fi
+
+status=0 # success is the default!
+username=`id -u -n`
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;g" \
+ -e 's/\.'"$DSO_SUFFIX"'/.$DSO_SUFFIX/g' \
+ -e "s;$tmp;\$tmp;g" \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
+ -e "s/`hostname`/LOCALHOST/" \
+ -e "s/ -U $username//g" \
+ -e '/pmResult/s/ from .*/ .../' \
+ -e 's/\(value.*\) 0x[0-9a-f][0-9a-f]*/\1/' \
+ -e 's/\(value.*\) [0-9][0-9]*\.[0-9]*e[-+][0-9][0-9]*/\1/' \
+
+}
+
+# real QA test starts here
+pipeargs="-d 29 -D appl1"
+id pcp >/dev/null 2>&1 && pipeargs="$pipeargs -U $username"
+for cmds in \
+ close \
+ 'fetch sample.percontext.pdu;close' \
+ 'fetch sample.percontext.pdu;quit' \
+ 'fetch sample.percontext.pdu;exit' \
+ 'fetch sample.percontext.pdu' \
+ 'fetch sample.percontext.pdu;fetch sample.percontext.pdu;fetch sample.percontext.pdu' \
+
+do
+ echo "open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample $pipeargs -l $tmp.log" >$tmp.cmd
+ echo "$cmds" | tr ';' '\012' >>$tmp.cmd
+ rm -f $tmp.log
+ dbpmda -ei <$tmp.cmd 2>&1 | _filter
+ # let daemon PMDA exit and flush stdio buffer to $tmp.log
+ sleep 2
+ _filter <$tmp.log \
+ | _filter_dumpresult
+
+ echo "open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30" >$tmp.cmd
+ echo "$cmds" | tr ';' '\012' >>$tmp.cmd
+ dbpmda -D appl1 -ei <$tmp.cmd 2>&1 | _filter \
+ | _filter_dumpresult
+
+done
+
+# success, all done
+exit
diff --git a/qa/382.out.1 b/qa/382.out.1
new file mode 100644
index 0000000..d5abeb2
--- /dev/null
+++ b/qa/382.out.1
@@ -0,0 +1,144 @@
+QA output created by 382
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> close
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_ctx_end(0) [context is unknown, num_ctx=0]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> close
+sample_ctx_end(0) [context is unknown, num_ctx=0]
+dbpmda>
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> close
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> close
+sample_ctx_end(0) [context is active]
+dbpmda>
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> quit
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> quit
+sample_ctx_end(0) [context is active]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> exit
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> exit
+sample_ctx_end(0) [context is active]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda>
+sample_ctx_end(0) [context is active]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 5
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 7
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda>
+sample_ctx_end(0) [context is active]
diff --git a/qa/382.out.2 b/qa/382.out.2
new file mode 100644
index 0000000..18714a9
--- /dev/null
+++ b/qa/382.out.2
@@ -0,0 +1,150 @@
+QA output created by 382
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> close
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_ctx_end(0) [context is unknown, num_ctx=0]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> close
+sample_ctx_end(0) [context is unknown, num_ctx=0]
+dbpmda>
+sample_ctx_end(0) [context is unknown, num_ctx=0]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> close
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> close
+sample_ctx_end(0) [context is active]
+dbpmda>
+sample_ctx_end(0) [context is inactive]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> quit
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> quit
+sample_ctx_end(0) [context is active]
+sample_ctx_end(0) [context is inactive]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> exit
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> exit
+sample_ctx_end(0) [context is active]
+sample_ctx_end(0) [context is inactive]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda>
+sample_ctx_end(0) [context is active]
+sample_ctx_end(0) [context is inactive]
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -D appl1 -l $tmp.log
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 3
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 5
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): numval: 1 valfmt: 0 vlist[]:
+ value 7
+dbpmda>
+Log for pmdasample on LOCALHOST started DATE
+
+sample_inc_recv(0) [new context, num_ctx=1]
+sample_ctx_end(0) [context is active]
+
+Log finished DATE
+dbpmda> open dso $PCP_VAR_DIR/pmdas/sample/pmda_sample.$DSO_SUFFIX sample_init 30
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+sample_inc_recv(0) [new context, num_ctx=1]
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda> fetch sample.percontext.pdu
+PMID(s): 29.0.43
+pmResult dump ...
+ 29.0.43 (sample.percontext.pdu): No values returned!
+dbpmda>
+sample_ctx_end(0) [context is active]
+sample_ctx_end(0) [context is inactive]
diff --git a/qa/383 b/qa/383
new file mode 100755
index 0000000..eaa2aad
--- /dev/null
+++ b/qa/383
@@ -0,0 +1,71 @@
+#!/bin/sh
+# PCP QA Test No. 383
+# command line option parsing for cisco PMDA
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+status=0 # success is the default!
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "As Installed ..."
+$PCP_PMDAS_DIR/cisco/parse cisco/hugh-800:a0@user?pw!adsl\> cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "With -U option ..."
+$PCP_PMDAS_DIR/cisco/parse -U user cisco/hugh-800:a0?pw!adsl\> cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "With -P option ..."
+$PCP_PMDAS_DIR/cisco/parse -P pw cisco/hugh-800:a0@user!adsl\> cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "With -s option ..."
+$PCP_PMDAS_DIR/cisco/parse -s adsl\> cisco/hugh-800:a0@user?pw cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "With -U and -P options ..."
+$PCP_PMDAS_DIR/cisco/parse -U user -P pw cisco/hugh-800:a0!adsl\> cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "With -U and -s options ..."
+$PCP_PMDAS_DIR/cisco/parse -U user -s adsl\> cisco/hugh-800:a0?pw cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "With -P and -s options ..."
+$PCP_PMDAS_DIR/cisco/parse -P pw -s adsl\> cisco/hugh-800:a0@user cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "With -U, -P and -s options ..."
+$PCP_PMDAS_DIR/cisco/parse -U user -P pw -s adsl\> cisco/hugh-800:a0 cisco/hugh-800:e0
+
+echo
+echo "=================="
+echo "Some error checking ..."
+$PCP_PMDAS_DIR/cisco/parse cisco/hugh-800:a0@user?pw!adsl\> cisco/hugh-800:e0@baduser
+$PCP_PMDAS_DIR/cisco/parse cisco/hugh-800:a0@user?pw!adsl\> cisco/hugh-800:e0?badpw
+$PCP_PMDAS_DIR/cisco/parse cisco/hugh-800:a0@user?pw!adsl\> cisco/hugh-800:e0!badprompt
+$PCP_PMDAS_DIR/cisco/parse -U user cisco/hugh-800:a0@user?pw!adsl\> cisco/hugh-800:e0@baduser
+$PCP_PMDAS_DIR/cisco/parse -P pw cisco/hugh-800:a0@user?pw!adsl\> cisco/hugh-800:e0?badpw
+$PCP_PMDAS_DIR/cisco/parse -s adsl\> cisco/hugh-800:a0@user?pw!adsl\> cisco/hugh-800:e0!badprompt
+
+# success, all done
+exit
diff --git a/qa/383.out b/qa/383.out
new file mode 100644
index 0000000..cfc8c9c
--- /dev/null
+++ b/qa/383.out
@@ -0,0 +1,204 @@
+QA output created by 383
+As Installed ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+With -U option ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+With -P option ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+With -s option ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+With -U and -P options ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+With -U and -s options ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+With -P and -s options ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+With -U, -P and -s options ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+Interface e0(1) is on host cisco/hugh-800
+Sleeping while sproc does the work ... SIGINT to terminate
+Starting sproc ...
+cisco[0] host: cisco/hugh-800 username: user passwd: pw prompt: adsl> intf: 0-a0 1-e0
+grab_cisco(cisco/hugh-800:a0):
+show int a0
+Extracted 5 values ...
+bandwidth: 100000 bytes/sec
+recent rate (bytes/sec): 123 in 456 out
+total bytes: 4242 in 1313 out ? out_bcast
+
+grab_cisco(cisco/hugh-800:e0):
+show int e0
+Extracted 5 values ...
+bandwidth: 1250000 bytes/sec
+recent rate (bytes/sec): 125 in 250 out
+total bytes: 2802084 in 1969425 out ? out_bcast
+
+
+==================
+Some error checking ...
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+parse: conflicting usernames ("user" and "baduser") for cisco "cisco/hugh-800"
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+parse: conflicting user-level passwords ("pw" and "badpw") for cisco "cisco/hugh-800"
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+parse: conflicting user-level prompts ("adsl>" and "badprompt") for cisco "cisco/hugh-800"
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+parse: conflicting usernames ("user" and "baduser") for cisco "cisco/hugh-800"
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+parse: conflicting user-level passwords ("pw" and "badpw") for cisco "cisco/hugh-800"
+parse: assuming file cisco/hugh-800 contains output from "show int" command
+Interface a0(0) is on host cisco/hugh-800
+parse: conflicting user-level prompts ("adsl>" and "badprompt") for cisco "cisco/hugh-800"
diff --git a/qa/384 b/qa/384
new file mode 100755
index 0000000..4366169
--- /dev/null
+++ b/qa/384
@@ -0,0 +1,50 @@
+#! /bin/sh
+# PCP QA Test No. 384
+# pmcd PMDA botched the pdu_{in,out}.total metrics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+for t in pdu_in pdu_out
+do
+ echo "=== pmcd.$t ==="
+ pminfo -b 100 -f pmcd.$t 2>&1 >$tmp.tmp
+ sed -e "s/pmcd.$t.//" <$tmp.tmp \
+ | $PCP_AWK_PROG '
+BEGIN { pmda_total = -1; my_total = 0; snarf = 0 }
+$1 == "total" { snarf = 1; next }
+$1 == "value" { if (snarf) {
+ pmda_total = $2
+ snarf = 0;
+ }
+ else
+ my_total += $2
+ }
+END { if (pmda_total == my_total) {
+ print "totals match"
+ }
+ else {
+ print "Error! 'pmcd.$t'.total " pmda_total " != sum('pmcd.$t'.other) " my_total
+ print "Here is what pminfo reported ..."
+ system("sed -e \"s/^/ /\" '$tmp.tmp'")
+ }
+ }'
+
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/384.out b/qa/384.out
new file mode 100644
index 0000000..c9880e0
--- /dev/null
+++ b/qa/384.out
@@ -0,0 +1,5 @@
+QA output created by 384
+=== pmcd.pdu_in ===
+totals match
+=== pmcd.pdu_out ===
+totals match
diff --git a/qa/385 b/qa/385
new file mode 100755
index 0000000..18b2f63
--- /dev/null
+++ b/qa/385
@@ -0,0 +1,53 @@
+#!/bin/sh
+# PCP QA Test No. 385
+# Some basic PM_EVENT_TYPE tests
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+
+# real QA test starts here
+
+pmstore sample.event.reset 0 2>&1 \
+| sed -e 's/value=[0-9][0-9]*/value=ANYTHING/'
+
+echo "=== pmPrintValue ==="
+for i in 0 1 2 3
+do
+ pminfo -f sample.event.records \
+ | sed -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+done
+
+echo
+echo "=== __pmPrintDesc ==="
+pminfo -d sample.event.records \
+| sed -e 's/0x[0-9a-f][0-9a-f]*/HEX/'
+
+pmstore sample.event.reset 0 2>&1 \
+| sed -e 's/value=[0-9][0-9]*/value=ANYTHING/'
+
+echo "=== pmPrintValue ==="
+for i in 0 1 2 3
+do
+ pminfo -f sample.event.no_indom_records \
+ | sed -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+done
+
+echo
+echo "=== __pmPrintDesc ==="
+pminfo -d sample.event.no_indom_records
+
+# success, all done
+exit
diff --git a/qa/385.out b/qa/385.out
new file mode 100644
index 0000000..7d960f2
--- /dev/null
+++ b/qa/385.out
@@ -0,0 +1,45 @@
+QA output created by 385
+sample.event.reset old value=ANYTHING new value=0
+=== pmPrintValue ===
+
+sample.event.records
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+
+sample.event.records
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+
+sample.event.records
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+
+sample.event.records
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+
+=== __pmPrintDesc ===
+
+sample.event.records
+ Data Type: event record array InDom: 29.10 HEX
+ Semantics: instant Units: none
+sample.event.reset old value=ANYTHING new value=0
+=== pmPrintValue ===
+
+sample.event.no_indom_records
+ value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+
+sample.event.no_indom_records
+ value [1 event record timestamp TIMESTAMP]
+
+sample.event.no_indom_records
+ value [1 event record timestamp TIMESTAMP]
+
+sample.event.no_indom_records
+ value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+
+=== __pmPrintDesc ===
+
+sample.event.no_indom_records
+ Data Type: event record array InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
diff --git a/qa/386 b/qa/386
new file mode 100755
index 0000000..a6a740a
--- /dev/null
+++ b/qa/386
@@ -0,0 +1,27 @@
+#!/bin/sh
+# PCP QA Test No. 386
+# Run pducheck using valgrind (see also 284)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_run_valgrind src/pducheck
+
+# all done
+exit
diff --git a/qa/386.out b/qa/386.out
new file mode 100644
index 0000000..0a6ae52
--- /dev/null
+++ b/qa/386.out
@@ -0,0 +1,25 @@
+QA output created by 386
+=== std out ===
+=== std err ===
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 0 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 1 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 2 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 3 +
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++ Mode: PDU_BINARY Pass 4 +
++++++++++++++++++++++++++++
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/pducheck
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/387 b/qa/387
new file mode 100755
index 0000000..b959265
--- /dev/null
+++ b/qa/387
@@ -0,0 +1,26 @@
+#!/bin/sh
+# PCP QA Test No. 387
+# Run pmnsunload using valgrind (see also 290)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_run_valgrind src/pmnsunload -i 3
+
+# success, all done
+exit
diff --git a/qa/387.out b/qa/387.out
new file mode 100644
index 0000000..98347ad
--- /dev/null
+++ b/qa/387.out
@@ -0,0 +1,31 @@
+QA output created by 387
+=== std out ===
+***iteration 0***
+---pre-unload---
+PMNS location = 2
+---post-unload---
+PMNS location = 2
+---post-load---
+PMNS location = 1
+***iteration 1***
+---pre-unload---
+PMNS location = 1
+---post-unload---
+PMNS location = 2
+---post-load---
+PMNS location = 1
+***iteration 2***
+---pre-unload---
+PMNS location = 1
+---post-unload---
+PMNS location = 2
+---post-load---
+PMNS location = 1
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/pmnsunload -i 3
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/388 b/qa/388
new file mode 100755
index 0000000..aba2551
--- /dev/null
+++ b/qa/388
@@ -0,0 +1,45 @@
+#!/bin/sh
+# PCP QA Test No. 388
+# Interp mode (similar to qa/090, but with valgrind) (see also 329)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+# can skip stdout from interp0 -a src/interp ...
+# that's checked in 087
+#
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/=== std err ===/ { skip = 0 }
+skip == 0 { print }'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for delta in 1 4 5 8 10
+do
+ samples=`expr 80 / $delta`
+ [ $samples -gt 15 ] && samples=15
+ echo
+ echo "interpolate $samples, $delta seconds appart"
+ _run_valgrind src/interp0 -a src/interp -t $delta -s $samples \
+ | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/388.out b/qa/388.out
new file mode 100644
index 0000000..273cef3
--- /dev/null
+++ b/qa/388.out
@@ -0,0 +1,51 @@
+QA output created by 388
+
+interpolate 15, 1 seconds appart
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp0 -a src/interp -t 1 -s 15
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+interpolate 15, 4 seconds appart
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp0 -a src/interp -t 4 -s 15
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+interpolate 15, 5 seconds appart
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp0 -a src/interp -t 5 -s 15
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+interpolate 10, 8 seconds appart
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp0 -a src/interp -t 8 -s 10
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+interpolate 8, 10 seconds appart
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp0 -a src/interp -t 10 -s 8
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/389 b/qa/389
new file mode 100755
index 0000000..42bffa2
--- /dev/null
+++ b/qa/389
@@ -0,0 +1,62 @@
+#! /bin/sh
+# PCP QA Test No. 389
+# pmlogger does not exit with -L when it loses pmcd connection?
+# #528442
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=`hostname`
+status=1 # failure is the default!
+
+_filter()
+{
+ sed -e '/myFetch: End of File: PMCD exited/d' \
+ -e '/pmlogger: Error: IPC protocol failure/d'
+}
+
+trap "$sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== empty config and _no_ -L, should exit immediately ==="
+$sudo rm -f $tmp.*
+pmlogger -c /dev/null -l $tmp.log $tmp &
+sleep 2
+echo "expect no pmlogger process ..."
+ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == "'$!'" { print }'
+_filter_pmlogger_log <$tmp.log | sed -e "s/$host/HOST/"
+
+echo
+echo "=== empty config and -L, should exit when pmcd restarted ==="
+$sudo rm -f $tmp.*
+_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp
+_wait_for_pmlogger $pid $tmp.log 5
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+echo "expect no pmlogger process ..."
+ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == "'$!'" { print }'
+_filter_pmlogger_log <$tmp.log | sed -e "s/$host/HOST/"
+
+echo
+echo "=== non-empty config, should exit when pmcd restarted ==="
+$sudo rm -f $tmp.*
+echo "log mandatory on 1 sec pmcd.version" >$tmp.config
+_start_up_pmlogger -c $tmp.config -l $tmp.log $tmp
+_wait_for_pmlogger $pid $tmp.log 5
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+echo "expect no pmlogger process ..."
+ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == "'$!'" { print }'
+_filter_pmlogger_log <$tmp.log | _filter | sed -e "s/$host/HOST/"
+
+# success, all done
+status=0
+exit
diff --git a/qa/389.out b/qa/389.out
new file mode 100644
index 0000000..41f53fc
--- /dev/null
+++ b/qa/389.out
@@ -0,0 +1,38 @@
+QA output created by 389
+=== empty config and _no_ -L, should exit immediately ===
+expect no pmlogger process ...
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Nothing to log, and not the primary logger instance ... good-bye
+
+Log finished DATE
+
+=== empty config and -L, should exit when pmcd restarted ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+expect no pmlogger process ...
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Lost connection to PMCD on "HOST" at DATE
+
+Log finished DATE
+
+=== non-empty config, should exit when pmcd restarted ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+expect no pmlogger process ...
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Lost connection to PMCD on "HOST" at DATE
+
+Log finished DATE
diff --git a/qa/390 b/qa/390
new file mode 100755
index 0000000..3e709a0
--- /dev/null
+++ b/qa/390
@@ -0,0 +1,84 @@
+#! /bin/sh
+# PCP QA Test No. 390
+# Test out the proc agents handling of
+# mapping external instance names to internal instance names (pids).
+# It was truncating the first number.
+# i.e. if one does a "pmval -i "12345678" proc.psinfo.pid
+# it might return a value of "12345" on a 6.2 system
+#
+# This was written when qa/044 failed because it looked
+# for what it thought was an impossible instance id but
+# it wasn't because it was truncated.
+#
+# Copyright (c) 2013 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
+
+# see if unix domain sockets are available (permissions)
+_get_libpcp_config
+target="-h localhost"
+$unix_domain_sockets && target="-h unix:"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+debug=false
+#debug=true
+host=`hostname`
+
+_filter()
+{
+ sed \
+ -e 's/host: unix:/host: localhost/g' \
+ -e "s/host: $host/host: localhost/g" \
+ -e "s/0*$mypid/PID/" -e 's/^[ \t]*//'
+}
+
+# real QA test starts here
+
+mypid=$$
+$debug && echo "mypid = $mypid"
+
+pid_len=`ls /proc | head -1 | wc -c`
+pid_len=`expr $pid_len - 1`
+$debug && echo "pid_len = $pid_len"
+
+mypid_len=`echo $mypid | wc -c`
+mypid_len=`expr $mypid_len - 1`
+$debug && echo "mypid_len = $mypid_len"
+
+gap=`expr $pid_len - $mypid_len`
+$debug && echo "gap = $gap"
+
+# create a zeroes string for the leading zeroes
+# to fill up a pid as seen in /proc
+zeroes=""
+i=0
+while [ $i -lt $gap ]
+do
+ zeroes="0$zeroes"
+ i=`expr $i + 1`
+done
+
+# should all succeed
+args="$target -w 30 -s1"
+pmval $args -i "$mypid" proc.psinfo.pid | _filter
+pmval $args -i "${zeroes}$mypid" proc.psinfo.pid | _filter
+pmval $args -i "${zeroes}${mypid}hi" proc.psinfo.pid | _filter
+
+# should now fail - passed previously
+pmval $args -i "${zeroes}${mypid}12345" proc.psinfo.pid | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/390.out b/qa/390.out
new file mode 100644
index 0000000..8acb722
--- /dev/null
+++ b/qa/390.out
@@ -0,0 +1,23 @@
+QA output created by 390
+
+metric: proc.psinfo.pid
+host: localhost
+semantics: discrete instantaneous value
+units: none
+samples: 1
+
+PID
+PID
+
+metric: proc.psinfo.pid
+host: localhost
+semantics: discrete instantaneous value
+units: none
+samples: 1
+
+PID
+PID
+
+pmval: instance PIDhi not available
+
+pmval: instance PID12345 not available
diff --git a/qa/391 b/qa/391
new file mode 100755
index 0000000..3a885cb
--- /dev/null
+++ b/qa/391
@@ -0,0 +1,61 @@
+#!/bin/sh
+# PCP QA Test No. 391
+# Interp mode (similar to qa/091, but with valgrind) (see also 330)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+# can skip stdout from interp1 and these archives ...
+# that's checked in 091
+#
+_filter()
+{
+ tee -a $seq.full \
+ | $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/=== std err ===/ { skip = 0 }
+skip == 0 { print }'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/foo src/mv-foo src/noti-foo
+do
+ echo | tee -a $seq.full
+ echo "=== archive $arch ===" | tee -a $seq.full
+ echo | tee -a $seq.full
+ echo "metric: sample.seconds" | tee -a $seq.full
+ _run_valgrind src/interp1 -s 6 -a $arch sample.seconds | _filter
+
+ echo | tee -a $seq.full
+ echo "metric: sample.bin" | tee -a $seq.full
+ _run_valgrind src/interp1 -s 6 -a $arch sample.bin | _filter
+
+ echo | tee -a $seq.full
+ echo "metric: sample.colour" | tee -a $seq.full
+ _run_valgrind src/interp1 -s 6 -a $arch sample.colour | _filter
+
+ echo | tee -a $seq.full
+ echo "metric: sample.drift" | tee -a $seq.full
+ _run_valgrind src/interp1 -s 6 -a $arch sample.drift | _filter
+
+ echo | tee -a $seq.full
+ echo "metric: sample.lights" | tee -a $seq.full
+ _run_valgrind src/interp1 -s 6 -a $arch sample.lights | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/391.out b/qa/391.out
new file mode 100644
index 0000000..25df2b7
--- /dev/null
+++ b/qa/391.out
@@ -0,0 +1,157 @@
+QA output created by 391
+
+=== archive src/foo ===
+
+metric: sample.seconds
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/foo sample.seconds
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.bin
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/foo sample.bin
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.colour
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/foo sample.colour
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.drift
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/foo sample.drift
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.lights
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/foo sample.lights
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== archive src/mv-foo ===
+
+metric: sample.seconds
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/mv-foo sample.seconds
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.bin
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/mv-foo sample.bin
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.colour
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/mv-foo sample.colour
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.drift
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/mv-foo sample.drift
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.lights
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/mv-foo sample.lights
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== archive src/noti-foo ===
+
+metric: sample.seconds
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/noti-foo sample.seconds
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.bin
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/noti-foo sample.bin
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.colour
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/noti-foo sample.colour
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.drift
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/noti-foo sample.drift
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+metric: sample.lights
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp1 -s 6 -a src/noti-foo sample.lights
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/392 b/qa/392
new file mode 100755
index 0000000..096a205
--- /dev/null
+++ b/qa/392
@@ -0,0 +1,147 @@
+#! /bin/sh
+# PCP QA Test No. 392
+# Rebuild problems with duplicates and check irix.* and hw.* culling
+# when -u used
+#
+# Since Rebuild is being enhanced for irix namespace stripping, the 'irix' names
+# have been replaced with 'hpux' names to maintain the purpose of the test, but
+# to prevent the unwanted translation from an irix namespace to non-irix.
+# hpux was chosed since it is 'replaced' in the old and new Rebuilds.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/^Rebuild/s/\/.*pmnsmerge/pmnsmerge/g'
+}
+
+_copy_Rebuild()
+{
+ scr_src=$PCP_VAR_DIR/pmns/
+ cp $scr_src/Rebuild $1
+ if [ -f $scr_src/Xlate-irix-names ]
+ then
+ cp $scr_src/Xlate-irix-names $1
+ fi
+}
+
+mkdir $tmp
+cd $tmp
+cat <<'End-of-File' >root.start
+root {
+ hw
+ hpux
+ foo
+}
+hw {
+ old_hw 1:44:0
+ both_hw 1:44:1
+}
+foo {
+ bar 1:2:0
+}
+hpux {
+ old_irix 1:10:0
+ both_irix 1:10:1
+ hub
+}
+hpux.hub {
+ nasid 1:44:8
+}
+End-of-File
+
+cat <<'End-of-File' >root_irix
+root {
+ hw
+ hpux
+}
+hw {
+ both_hw 1:44:1
+ new_hw 1:44:2
+ hub
+}
+hw.hub {
+ nasid 1:44:8
+}
+hpux {
+ both_irix 1:10:1
+ new_irix 1:10:2
+}
+End-of-File
+
+
+# Rebuild will write a message to SYSLOG when it fails,
+# so write a message to SYSLOG that this is expected, and generated by QA
+#
+logger -p user.notice -t PCP "qa/$seq running ... expect SYSLOG entry from Rebuild failure"
+
+_copy_Rebuild .
+
+# real QA test starts here
+#
+echo "=== Rebuild ==="
+echo "(expect Duplicate PMID failure)"
+rm -f root root.bin
+cp root.start root
+$sudo ./Rebuild 2>&1 \
+| sed \
+ -e 's;/private/;/;' \
+ -e "s;$tmp;.;" \
+| _filter
+if [ $PCP_VER -lt 3600 ]
+then
+ [ -f root.bin ] && echo "root.bin created"
+ pminfo -m -n root
+else
+ pminfo -m -N root
+fi
+
+echo
+echo "=== Rebuild -d ==="
+rm -f root root.bin
+cp root.start root
+$sudo ./Rebuild -d | _filter
+if [ $PCP_VER -lt 3600 ]
+then
+ [ -f root.bin ] && echo "root.bin created"
+ pminfo -m -n root
+else
+ pminfo -m -N root
+fi
+
+echo
+echo "=== Rebuild -du ==="
+rm -f root root.bin
+cp root.start root
+$sudo ./Rebuild -du | _filter
+if [ $PCP_VER -lt 3600 ]
+then
+ [ -f root.bin ] && echo "root.bin created"
+ pminfo -m -n root
+else
+ pminfo -m -N root
+fi
+
+# success, all done
+status=0
+exit
diff --git a/qa/392.out.1 b/qa/392.out.1
new file mode 100644
index 0000000..d661efa
--- /dev/null
+++ b/qa/392.out.1
@@ -0,0 +1,38 @@
+QA output created by 392
+=== Rebuild ===
+(expect Duplicate PMID failure)
+Error Parsing ASCII PMNS: Duplicate metric id (1.44.8) in name space for metrics "hpux.hub.nasid" and "hw.hub.nasid"
+
+pmLoadNameSpace: Problems parsing PMNS definitions
+Rebuilding the Performance Metrics Name Space (PMNS) in . ...
+Rebuild: merging the following PMNS files:
+root root_irix
+Rebuild: pmnsmerge failed
+ "root" and "root.bin" have not been changed.
+hw.old_hw PMID: 1.44.0
+hw.both_hw PMID: 1.44.1
+hpux.old_irix PMID: 1.10.0
+hpux.both_irix PMID: 1.10.1
+hpux.hub.nasid PMID: 1.44.8
+foo.bar PMID: 1.2.0
+
+=== Rebuild -d ===
+root.bin created
+hw.old_hw PMID: 1.44.0
+hw.both_hw PMID: 1.44.1
+hw.new_hw PMID: 1.44.2
+hw.hub.nasid PMID: 1.44.8
+hpux.old_irix PMID: 1.10.0
+hpux.both_irix PMID: 1.10.1
+hpux.hub.nasid PMID: 1.44.8
+hpux.new_irix PMID: 1.10.2
+foo.bar PMID: 1.2.0
+
+=== Rebuild -du ===
+root.bin created
+foo.bar PMID: 1.2.0
+hw.both_hw PMID: 1.44.1
+hw.new_hw PMID: 1.44.2
+hw.hub.nasid PMID: 1.44.8
+hpux.both_irix PMID: 1.10.1
+hpux.new_irix PMID: 1.10.2
diff --git a/qa/392.out.2 b/qa/392.out.2
new file mode 100644
index 0000000..0d5f3c0
--- /dev/null
+++ b/qa/392.out.2
@@ -0,0 +1,36 @@
+QA output created by 392
+=== Rebuild ===
+(expect Duplicate PMID failure)
+Error Parsing ASCII PMNS: Duplicate metric id (1.44.8) in name space for metrics "hpux.hub.nasid" and "hw.hub.nasid"
+
+pmnsmerge: Error: pmLoadNameSpace(root.new): Problems parsing PMNS definitions
+Rebuilding the Performance Metrics Name Space (PMNS) in . ...
+Rebuild: merging the following PMNS files:
+root root_irix
+Rebuild: pmnsmerge failed
+ "root" has not been changed.
+hw.old_hw PMID: 1.44.0
+hw.both_hw PMID: 1.44.1
+hpux.old_irix PMID: 1.10.0
+hpux.both_irix PMID: 1.10.1
+hpux.hub.nasid PMID: 1.44.8
+foo.bar PMID: 1.2.0
+
+=== Rebuild -d ===
+hw.old_hw PMID: 1.44.0
+hw.both_hw PMID: 1.44.1
+hw.new_hw PMID: 1.44.2
+hw.hub.nasid PMID: 1.44.8
+hpux.old_irix PMID: 1.10.0
+hpux.both_irix PMID: 1.10.1
+hpux.hub.nasid PMID: 1.44.8
+hpux.new_irix PMID: 1.10.2
+foo.bar PMID: 1.2.0
+
+=== Rebuild -du ===
+foo.bar PMID: 1.2.0
+hw.both_hw PMID: 1.44.1
+hw.new_hw PMID: 1.44.2
+hw.hub.nasid PMID: 1.44.8
+hpux.both_irix PMID: 1.10.1
+hpux.new_irix PMID: 1.10.2
diff --git a/qa/393 b/qa/393
new file mode 100755
index 0000000..ebff961
--- /dev/null
+++ b/qa/393
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 393
+# Interp mode (similar to qa/093, but with valgrind) (see also 331)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+# can skip stdout from interp2 and these archives ...
+# that's checked in 093
+#
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/=== std err ===/ { skip = 0 }
+skip == 0 { print }'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/bigbin src/mv-bigbin src/noti-foo
+do
+ echo
+ echo "=== $arch ==="
+ _run_valgrind src/interp2 -a $arch | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/393.out b/qa/393.out
new file mode 100644
index 0000000..0d7293b
--- /dev/null
+++ b/qa/393.out
@@ -0,0 +1,31 @@
+QA output created by 393
+
+=== src/bigbin ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp2 -a src/bigbin
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/mv-bigbin ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp2 -a src/mv-bigbin
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/noti-foo ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp2 -a src/noti-foo
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/394 b/qa/394
new file mode 100755
index 0000000..270adbb
--- /dev/null
+++ b/qa/394
@@ -0,0 +1,55 @@
+#!/bin/sh
+# PCP QA Test No. 394
+# Interp mode (similar to qa/095, but with valgrind) (see also 332)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+# can skip stdout from interp3 and these archives ...
+# that's checked in 095
+#
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/=== std err ===/ { skip = 0 }
+skip == 0 { print }'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/bigbin
+do
+ for delta in 2 0.012
+ do
+ echo
+ echo "=== $arch delta=$delta ==="
+ _run_valgrind src/interp3 -a $arch -t $delta | _filter
+ done
+done
+
+for arch in src/noti-ok-foo
+do
+ for delta in 0.5 1.0 2.0
+ do
+ echo
+ echo "=== $arch delta=$delta ==="
+ _run_valgrind src/interp3 -a $arch -t $delta | _filter
+ done
+done
+
+# success, all done
+exit
diff --git a/qa/394.out b/qa/394.out
new file mode 100644
index 0000000..bf1bd7d
--- /dev/null
+++ b/qa/394.out
@@ -0,0 +1,51 @@
+QA output created by 394
+
+=== src/bigbin delta=2 ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp3 -a src/bigbin -t 2
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/bigbin delta=0.012 ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp3 -a src/bigbin -t 0.012
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/noti-ok-foo delta=0.5 ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp3 -a src/noti-ok-foo -t 0.5
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/noti-ok-foo delta=1.0 ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp3 -a src/noti-ok-foo -t 1.0
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/noti-ok-foo delta=2.0 ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp3 -a src/noti-ok-foo -t 2.0
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/395 b/qa/395
new file mode 100755
index 0000000..417c93f
--- /dev/null
+++ b/qa/395
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 395
+# Interp mode (similar to qa/097, but with valgrind) (see also 333)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+# can skip stdout from interp3 and these archives ...
+# that's checked in 095
+#
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/=== std err ===/ { skip = 0 }
+skip == 0 { print }'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for arch in src/bigbin src/mv-bigbin src/noti-foo
+do
+ echo
+ echo "=== $arch ==="
+ _run_valgrind src/interp4 -a $arch | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/395.out b/qa/395.out
new file mode 100644
index 0000000..9347acd
--- /dev/null
+++ b/qa/395.out
@@ -0,0 +1,31 @@
+QA output created by 395
+
+=== src/bigbin ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp4 -a src/bigbin
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/mv-bigbin ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp4 -a src/mv-bigbin
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== src/noti-foo ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/interp4 -a src/noti-foo
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/396 b/qa/396
new file mode 100755
index 0000000..c1121a4
--- /dev/null
+++ b/qa/396
@@ -0,0 +1,57 @@
+#! /bin/sh
+# PCP QA Test No. 396
+# pmval -i "'1 minute'" etc for #452410
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/minute/n' \
+ -e '/samples:/n' \
+ -e 's/ *[0-9][0-9]*\.[0-9]*[eE][-+][0-9][0-9]*/ NUMBER/g' \
+ -e 's/ *[0-9][0-9]*\.[0-9]*/ NUMBER/g' \
+ -e 's/ *[0-9][0-9]*/ NUMBER/g' \
+ -e '/^host:.*$/s/.*/HOST/' \
+ -e 's/ *$//'
+}
+
+# real QA test starts here
+echo "=== 1,5 ==="
+pmval -i 1,5 -r -t 1 -s 1 kernel.all.load | _filter
+
+echo
+echo "=== \"'1 minute'\" ==="
+pmval -i "'1 minute'" -r -t 1 -s 1 kernel.all.load | _filter
+
+echo
+echo "=== '\"1 minute\"' ==="
+pmval -i '"1 minute"' -r -t 1 -s 1 kernel.all.load | _filter
+
+echo
+echo "=== '\"1 minute\" \"5 minute\"' ==="
+pmval -i '"1 minute" "5 minute"' -r -t 1 -s 1 kernel.all.load | _filter
+
+echo
+echo "=== '\"1 minute\",\"5 minute\"' ==="
+pmval -i '"1 minute","5 minute"' -r -t 1 -s 1 kernel.all.load | _filter
+
+echo
+echo "=== \" '1 minute' , '5 minute' \" ==="
+pmval -i " '1 minute' , '5 minute' " -r -t 1 -s 1 kernel.all.load | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/396.out b/qa/396.out
new file mode 100644
index 0000000..04a94fa
--- /dev/null
+++ b/qa/396.out
@@ -0,0 +1,66 @@
+QA output created by 396
+=== 1,5 ===
+
+metric: kernel.all.load
+HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+ NUMBER NUMBER
+ NUMBER NUMBER
+
+=== "'1 minute'" ===
+
+metric: kernel.all.load
+HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+ 1 minute
+ NUMBER
+
+=== '"1 minute"' ===
+
+metric: kernel.all.load
+HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+ 1 minute
+ NUMBER
+
+=== '"1 minute" "5 minute"' ===
+
+metric: kernel.all.load
+HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+ 1 minute 5 minute
+ NUMBER NUMBER
+
+=== '"1 minute","5 minute"' ===
+
+metric: kernel.all.load
+HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+ 1 minute 5 minute
+ NUMBER NUMBER
+
+=== " '1 minute' , '5 minute' " ===
+
+metric: kernel.all.load
+HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+ 1 minute 5 minute
+ NUMBER NUMBER
diff --git a/qa/397 b/qa/397
new file mode 100755
index 0000000..787fed3
--- /dev/null
+++ b/qa/397
@@ -0,0 +1,56 @@
+#!/bin/sh
+# PCP QA Test No. 397
+# Use dbpmda to check endian encoding for PM_TYPE_EVENT
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "$sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+hostname=`_get_fqdn 2>/dev/null`
+[ -z "$hostname" ] && hostname=`hostname`
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;g" \
+ -e "s/$hostname/MYHOST/" \
+ -e "s/`hostname`/MYHOST/" \
+ -e '/value/s/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ -e '/29.0.126: .* -> 0/s/ [0-9] / OLD /' \
+ -e '/pmResult dump from/{
+s/0x[0-9a-f][0-9a-f]*/ADDR/
+s/amp: .* num/amp: TIMESTAMPS num/
+}'
+}
+
+# real QA test starts here
+cat <<End-of-File | $sudo dbpmda -ei >$tmp.out 2>&1
+open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -l $tmp.log
+store sample.event.reset "0"
+fetch sample.event.records
+fetch sample.event.records
+fetch sample.event.records
+fetch sample.event.records
+End-of-File
+
+cat $tmp.out >>$seq.full
+_filter <$tmp.out
+echo
+echo "=== pmda log ===" | tee -a $seq.full
+cat $tmp.log >>$seq.full
+_filter_pmcd_log <$tmp.log | _filter
+
+# success, all done
+exit
diff --git a/qa/397.out b/qa/397.out
new file mode 100644
index 0000000..947f173
--- /dev/null
+++ b/qa/397.out
@@ -0,0 +1,41 @@
+QA output created by 397
+dbpmda> open pipe $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -l TMP.log
+Start pmdasample PMDA: $PCP_VAR_DIR/pmdas/sample/pmdasample -d 29 -l TMP.log
+dbpmda> store sample.event.reset "0"
+PMID: 29.0.126
+Getting description...
+Sending Profile...
+Getting Result Structure...
+29.0.126: OLD -> 0
+Sending Result...
+dbpmda> fetch sample.event.records
+PMID(s): 29.0.136
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or ???] value [0 event records]
+ inst [1 or ???] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+dbpmda> fetch sample.event.records
+PMID(s): 29.0.136
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or ???] value [1 event record timestamp TIMESTAMP]
+ inst [1 or ???] value [1 event record timestamp TIMESTAMP]
+dbpmda> fetch sample.event.records
+PMID(s): 29.0.136
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or ???] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or ???] value [1 event record timestamp TIMESTAMP]
+dbpmda> fetch sample.event.records
+PMID(s): 29.0.136
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or ???] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or ???] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+dbpmda>
+
+=== pmda log ===
+Log for pmdasample on MYHOST started DATE
+
+
+Log finished DATE
diff --git a/qa/398 b/qa/398
new file mode 100755
index 0000000..d57b5c4
--- /dev/null
+++ b/qa/398
@@ -0,0 +1,85 @@
+#! /bin/sh
+# PCP QA Test No. 398
+# checks pmcd handling empty $PCP_PMCDCONF_PATH
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+
+_cleanup()
+{
+ [ -f $tmp.conf ] && $sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+ $sudo rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+}
+
+_check()
+{
+ # try to provoke a core
+ pminfo -v irix >/dev/null 2>&1
+ sleep 5
+
+ $sudo touch $PCP_PMCDLOG_PATH
+ grep -i "dumping to core" $PCP_PMCDLOG_PATH
+ sts=$?
+ if [ "`echo $PCP_LOG_DIR/core*`" != "$PCP_LOG_DIR/core*" -o "`echo $PCP_LOG_DIR/pmcd/core*`" != "$PCP_LOG_DIR/pmcd/core*" -o $sts -eq 0 ]
+ then
+ echo "=== core found or logfile claims dumping to core! ==="
+ echo '=== Here is $PCP_PMCDLOG_PATH ==='
+ cat $PCP_PMCDLOG_PATH
+ exit
+ else
+ echo '--- No core file at $PCP_LOG_DIR/core or $PCP_LOG_DIR/pmcd/core ---'
+ fi
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+
+# real QA test starts here
+
+# terminate any pmcds and get rid of core file to get to a sane starting place
+$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
+$sudo rm -f $PCP_LOG_DIR/core* $PCP_LOG_DIR/pmcd/core* $PCP_PMCDLOG_PATH
+
+_check
+
+# empty pmcd.conf
+$sudo cp $PCP_PMCDCONF_PATH $tmp.conf
+$sudo cp /dev/null $PCP_PMCDCONF_PATH
+
+# should be empty
+echo "--- pmcd.conf contents follow ---"
+cat $PCP_PMCDCONF_PATH
+$sudo $PCP_RC_DIR/pcp restart 2>&1 \
+| _filter_pcp_start \
+| fgrep -v "Waiting for PMCD to terminate" \
+| fgrep -v "pmcd_wait failed:"
+
+echo "Waiting for PMCD ..."
+pmcd_wait -t 5sec
+if [ $? -ne 2 ]
+then
+ echo "Expected timeout - got status $? from pmcd_wait!"
+else
+ echo "Connection timed out as expected"
+fi
+
+echo "Checking for core file ..."
+_check
+
+# success, all done
+status=0
+exit
diff --git a/qa/398.out b/qa/398.out
new file mode 100644
index 0000000..dbfda94
--- /dev/null
+++ b/qa/398.out
@@ -0,0 +1,11 @@
+QA output created by 398
+--- No core file at $PCP_LOG_DIR/core or $PCP_LOG_DIR/pmcd/core ---
+--- pmcd.conf contents follow ---
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for PMCD ...
+Connection timed out as expected
+Checking for core file ...
+--- No core file at $PCP_LOG_DIR/core or $PCP_LOG_DIR/pmcd/core ---
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/399 b/qa/399
new file mode 100755
index 0000000..4015a5e
--- /dev/null
+++ b/qa/399
@@ -0,0 +1,118 @@
+#! /bin/sh
+# PCP QA Test No. 399
+# pmie core dumps
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+[ $PCP_PLATFORM = darwin ] && \
+ _notrun "Neither disk.dev.response nor disk.dev.avactive for darwin"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo rm -f core* $seq.core*
+
+echo
+echo "Test 1"
+if [ $PCP_PLATFORM = irix ]
+then
+
+cat >$tmp.conf <<'End-of-File'
+dsk = "disk.dev";
+total0 = $delta * $dsk.total@0;
+total1 = $delta * $dsk.total@1;
+iops = $delta * ($dsk.total@0 - $dsk.total@1);
+resp = $delta * 1000 * ($dsk.response@0 - $dsk.response@1);
+End-of-File
+
+elif [ $PCP_PLATFORM = linux ]
+then
+
+cat >$tmp.conf <<'End-of-File'
+dsk = "disk.dev";
+total0 = $delta * $dsk.total@0;
+total1 = $delta * $dsk.total@1;
+iops = $delta * ($dsk.total@0 - $dsk.total@1);
+resp = $delta * 1000 * ($dsk.avactive@0 - $dsk.avactive@1);
+End-of-File
+
+elif [ $PCP_PLATFORM = solaris ]
+then
+
+cat >$tmp.conf <<'End-of-File'
+dsk = "disk.dev";
+total0 = $delta * $dsk.total@0;
+total1 = $delta * $dsk.total@1;
+iops = $delta * ($dsk.total@0 - $dsk.total@1);
+resp = $delta * 1000 * ($dsk.run.time@0 - $dsk.run.time@1);
+End-of-File
+
+else
+ bozo!
+fi
+
+pmie -vv -t 1 -T 1 <$tmp.conf >/dev/null 2>$tmp.err
+echo "Stderr output ..."
+cat $tmp.err | _show_pmie_errors
+
+_check_core
+
+echo
+echo "Test 2"
+if [ $PCP_PLATFORM = irix ]
+then
+
+cat >$tmp.conf <<'End-of-File'
+dsk = "disk.dev";
+total0 = $delta * $dsk.total@0;
+total1 = $delta * $dsk.total@1;
+iops = $delta * ($dsk.total@0 - $dsk.total@1);
+resp = $delta * 1000 * ($dsk.response@0 - $dsk.response@1);
+avg = $delta * 1000 * ($dsk.response@0 - $dsk.response@1) / ($dsk.total@0 - $dsk.total@1);
+End-of-File
+
+elif [ $PCP_PLATFORM = linux ]
+then
+
+cat >$tmp.conf <<'End-of-File'
+dsk = "disk.dev";
+total0 = $delta * $dsk.total@0;
+total1 = $delta * $dsk.total@1;
+iops = $delta * ($dsk.total@0 - $dsk.total@1);
+resp = $delta * 1000 * ($dsk.avactive@0 - $dsk.avactive@1);
+avg = $delta * 1000 * ($dsk.avactive@0 - $dsk.avactive@1) / ($dsk.total@0 - $dsk.total@1);
+End-of-File
+
+elif [ $PCP_PLATFORM = solaris ]
+then
+
+cat >$tmp.conf <<'End-of-File'
+dsk = "disk.dev";
+total0 = $delta * $dsk.total@0;
+total1 = $delta * $dsk.total@1;
+iops = $delta * ($dsk.total@0 - $dsk.total@1);
+resp = $delta * 1000 * ($dsk.run.time@0 - $dsk.run.time@1);
+avg = $delta * 1000 * ($dsk.run.time@0 - $dsk.run.time@1) / ($dsk.total@0 - $dsk.total@1);
+End-of-File
+
+else
+ bozo!
+fi
+
+pmie -vv -t 1 -T 1 <$tmp.conf >/dev/null 2>$tmp.err
+echo "Stderr output ..."
+cat $tmp.err | _show_pmie_errors
+
+_check_core
+
+exit
diff --git a/qa/399.out b/qa/399.out
new file mode 100644
index 0000000..d362bae
--- /dev/null
+++ b/qa/399.out
@@ -0,0 +1,9 @@
+QA output created by 399
+
+Test 1
+Stderr output ...
+pmie: note - evaluator exiting
+
+Test 2
+Stderr output ...
+pmie: note - evaluator exiting
diff --git a/qa/400 b/qa/400
new file mode 100755
index 0000000..7b8688a
--- /dev/null
+++ b/qa/400
@@ -0,0 +1,60 @@
+#!/bin/sh
+# PCP QA Test No. 400
+# pminfo -x, event records, memory leaks
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ | $PCP_AWK_PROG '
+want == 1 { print " value [blob]"; want = 0; next }
+$1 == "sampledso.event.param_aggregate" { want = 1 }
+ { print }'
+}
+
+# real QA test starts here
+export PCP_LITE_SAMPLE=yes
+
+# logic here is little strange ... sample uses a static buffer and
+# PM_CONTEXT_LOCAL always starts from case 0 in the event record enumeration
+# ... asking for n copies of sampledso.event.records returns n identical
+# values for the nth case from the pmda
+#
+
+_run_valgrind pminfo -x -L sampledso.event.records \
+| _filter
+
+_run_valgrind pminfo -x -L sampledso.event.records \
+ sampledso.event.records \
+| _filter
+
+_run_valgrind pminfo -x -L sampledso.event.records \
+ sampledso.event.records \
+ sampledso.event.records \
+| _filter
+
+_run_valgrind pminfo -x -L sampledso.event.records \
+ sampledso.event.records \
+ sampledso.event.records \
+ sampledso.event.records \
+| _filter
+
+# success, all done
+exit
diff --git a/qa/400.out b/qa/400.out
new file mode 100644
index 0000000..9c9fc28
--- /dev/null
+++ b/qa/400.out
@@ -0,0 +1,292 @@
+QA output created by 400
+=== std out ===
+
+sampledso.event.records
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #0"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "bingo!"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -x -L sampledso.event.records
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+
+sampledso.event.records
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #1"
+
+sampledso.event.records
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #1"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -x -L sampledso.event.records sampledso.event.records
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+
+sampledso.event.records
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 1
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 2
+ sampledso.event.param_64 (30.0.130)
+ value -3
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #2"
+
+sampledso.event.records
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 1
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 2
+ sampledso.event.param_64 (30.0.130)
+ value -3
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #2"
+
+sampledso.event.records
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 1
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 2
+ sampledso.event.param_64 (30.0.130)
+ value -3
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #2"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -x -L sampledso.event.records sampledso.event.records sampledso.event.records
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+
+sampledso.event.records
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1a (start,id,parent) ---
+ sampledso.event.type (30.0.127)
+ value 4
+ sampledso.event.param_u64 (30.0.131)
+ value 5
+ sampledso.event.param_string (30.0.134)
+ value "6"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 7
+ sampledso.event.param_double (30.0.133)
+ value 8
+ sampledso.event.param_double (30.0.133)
+ value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x4 (end) ---
+ sampledso.event.type (30.0.127)
+ value 10
+ sampledso.event.param_u64 (30.0.131)
+ value 11
+ sampledso.event.param_string (30.0.134)
+ value "twelve"
+ sampledso.event.param_string (30.0.134)
+ value "thirteen"
+ sampledso.event.param_32 (30.0.128)
+ value -14
+ sampledso.event.param_u32 (30.0.129)
+ value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 16
+ sampledso.event.param_float (30.0.132)
+ value -17
+ sampledso.event.param_aggregate (30.0.135)
+ value [blob]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #3"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "bingo!"
+
+sampledso.event.records
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1a (start,id,parent) ---
+ sampledso.event.type (30.0.127)
+ value 4
+ sampledso.event.param_u64 (30.0.131)
+ value 5
+ sampledso.event.param_string (30.0.134)
+ value "6"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 7
+ sampledso.event.param_double (30.0.133)
+ value 8
+ sampledso.event.param_double (30.0.133)
+ value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x4 (end) ---
+ sampledso.event.type (30.0.127)
+ value 10
+ sampledso.event.param_u64 (30.0.131)
+ value 11
+ sampledso.event.param_string (30.0.134)
+ value "twelve"
+ sampledso.event.param_string (30.0.134)
+ value "thirteen"
+ sampledso.event.param_32 (30.0.128)
+ value -14
+ sampledso.event.param_u32 (30.0.129)
+ value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 16
+ sampledso.event.param_float (30.0.132)
+ value -17
+ sampledso.event.param_aggregate (30.0.135)
+ value [blob]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #3"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "bingo!"
+
+sampledso.event.records
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1a (start,id,parent) ---
+ sampledso.event.type (30.0.127)
+ value 4
+ sampledso.event.param_u64 (30.0.131)
+ value 5
+ sampledso.event.param_string (30.0.134)
+ value "6"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 7
+ sampledso.event.param_double (30.0.133)
+ value 8
+ sampledso.event.param_double (30.0.133)
+ value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x4 (end) ---
+ sampledso.event.type (30.0.127)
+ value 10
+ sampledso.event.param_u64 (30.0.131)
+ value 11
+ sampledso.event.param_string (30.0.134)
+ value "twelve"
+ sampledso.event.param_string (30.0.134)
+ value "thirteen"
+ sampledso.event.param_32 (30.0.128)
+ value -14
+ sampledso.event.param_u32 (30.0.129)
+ value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 16
+ sampledso.event.param_float (30.0.132)
+ value -17
+ sampledso.event.param_aggregate (30.0.135)
+ value [blob]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #3"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "bingo!"
+
+sampledso.event.records
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1a (start,id,parent) ---
+ sampledso.event.type (30.0.127)
+ value 4
+ sampledso.event.param_u64 (30.0.131)
+ value 5
+ sampledso.event.param_string (30.0.134)
+ value "6"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 7
+ sampledso.event.param_double (30.0.133)
+ value 8
+ sampledso.event.param_double (30.0.133)
+ value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x4 (end) ---
+ sampledso.event.type (30.0.127)
+ value 10
+ sampledso.event.param_u64 (30.0.131)
+ value 11
+ sampledso.event.param_string (30.0.134)
+ value "twelve"
+ sampledso.event.param_string (30.0.134)
+ value "thirteen"
+ sampledso.event.param_32 (30.0.128)
+ value -14
+ sampledso.event.param_u32 (30.0.129)
+ value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.type (30.0.127)
+ value 16
+ sampledso.event.param_float (30.0.132)
+ value -17
+ sampledso.event.param_aggregate (30.0.135)
+ value [blob]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "fetch #3"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sampledso.event.param_string (30.0.134)
+ value "bingo!"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -x -L sampledso.event.records sampledso.event.records sampledso.event.records sampledso.event.records
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/401 b/qa/401
new file mode 100755
index 0000000..5154574
--- /dev/null
+++ b/qa/401
@@ -0,0 +1,40 @@
+#!/bin/sh
+# PCP QA Test No. 401
+# quick pminfo -x check (400 does a better job, but you need to have
+# valgrind available)
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ | $PCP_AWK_PROG '
+want == 1 { print " value [blob]"; want = 0; next }
+$1 == "sample.event.param_aggregate" { want = 1 }
+ { print }'
+}
+
+pmstore sample.event.reset 0 >>$seq.full 2>&1
+
+# real QA test starts here
+pminfo -x sample.event.records 2>&1 | tee -a $seq.full | _filter
+pminfo -x sample.event.records 2>&1 | tee -a $seq.full | _filter
+pminfo -x sample.event.records 2>&1 | tee -a $seq.full | _filter
+pminfo -x sample.event.records 2>&1 | tee -a $seq.full | _filter
+
+# success, all done
+exit
diff --git a/qa/401.out b/qa/401.out
new file mode 100644
index 0000000..8b51ec3
--- /dev/null
+++ b/qa/401.out
@@ -0,0 +1,80 @@
+QA output created by 401
+
+sample.event.records
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.param_string (29.0.134)
+ value "fetch #0"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.param_string (29.0.134)
+ value "bingo!"
+
+sample.event.records
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.param_string (29.0.134)
+ value "fetch #1"
+
+sample.event.records
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.type (29.0.127)
+ value 1
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.type (29.0.127)
+ value 2
+ sample.event.param_64 (29.0.130)
+ value -3
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.param_string (29.0.134)
+ value "fetch #2"
+
+sample.event.records
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1a (start,id,parent) ---
+ sample.event.type (29.0.127)
+ value 4
+ sample.event.param_u64 (29.0.131)
+ value 5
+ sample.event.param_string (29.0.134)
+ value "6"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.type (29.0.127)
+ value 7
+ sample.event.param_double (29.0.133)
+ value 8
+ sample.event.param_double (29.0.133)
+ value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x4 (end) ---
+ sample.event.type (29.0.127)
+ value 10
+ sample.event.param_u64 (29.0.131)
+ value 11
+ sample.event.param_string (29.0.134)
+ value "twelve"
+ sample.event.param_string (29.0.134)
+ value "thirteen"
+ sample.event.param_32 (29.0.128)
+ value -14
+ sample.event.param_u32 (29.0.129)
+ value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.type (29.0.127)
+ value 16
+ sample.event.param_float (29.0.132)
+ value -17
+ sample.event.param_aggregate (29.0.135)
+ value [blob]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.param_string (29.0.134)
+ value "fetch #3"
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ sample.event.param_string (29.0.134)
+ value "bingo!"
diff --git a/qa/402 b/qa/402
new file mode 100755
index 0000000..522178c
--- /dev/null
+++ b/qa/402
@@ -0,0 +1,27 @@
+#! /bin/sh
+# PCP QA Test No. 402
+# test out bug#540117
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+pmprobe -a src/540117-short.0 -v irix.pmda.uname hinv.ncpu
+
+pminfo -a src/540117-short.0 -f irix.pmda.uname hinv.ncpu
+
+# success, all done
+status=0
+exit
diff --git a/qa/402.out b/qa/402.out
new file mode 100644
index 0000000..23b0a0d
--- /dev/null
+++ b/qa/402.out
@@ -0,0 +1,9 @@
+QA output created by 402
+irix.pmda.uname 1 "IRIX omen 6.2 03131015 IP22"
+hinv.ncpu 1 1
+
+irix.pmda.uname
+ value "IRIX omen 6.2 03131015 IP22"
+
+hinv.ncpu
+ value 1
diff --git a/qa/403 b/qa/403
new file mode 100755
index 0000000..16c33b7
--- /dev/null
+++ b/qa/403
@@ -0,0 +1,56 @@
+#! /bin/sh
+# PCP QA Test No. 403
+# check some ASCII tools handling of failed fetches causing pmFetch to
+# return a null pmResult.
+# Bug #541380
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/541380
+else
+ # no support for V1 archives
+ arch=src/541380_v2
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+$sudo rm -f core*
+
+# -n src/root_irix because there are no metric descriptors (hence no PMNS)
+# in this archive
+#
+pmprobe -v -n src/root_irix -a $arch hinv.nrouter >$tmp.out 2>&1
+pminfo -f -n src/root_irix -a $arch hinv.nrouter >$tmp.out 2>&1
+pmval -s 1 -n src/root_irix -a $arch hinv.nrouter >$tmp.out 2>$tmp.err
+cat $tmp.err
+
+if [ "`echo core*`" != "core*" ]
+then
+ $PCP_ECHO_PROG $PCP_ECHO_N "Dumped core! (saved as""$PCP_ECHO_C"
+ for c in core*
+ do
+ $sudo mv $c $seq.$c
+ $PCP_ECHO_PROG $PCP_ECHO_N " $seq.$c""$PCP_ECHO_C"
+ done
+ echo ")"
+ exit
+fi
+
+# success, all done
+status=0
+exit
diff --git a/qa/403.out b/qa/403.out
new file mode 100644
index 0000000..21444b5
--- /dev/null
+++ b/qa/403.out
@@ -0,0 +1,2 @@
+QA output created by 403
+pmval: pmLookupDesc: Metric not defined in the PCP archive log
diff --git a/qa/404 b/qa/404
new file mode 100755
index 0000000..e438683
--- /dev/null
+++ b/qa/404
@@ -0,0 +1,39 @@
+#!/bin/sh
+# PCP QA Test No. 404
+# exercise pmUnpackEventRecords() and pmFreeEventResult()
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ -e 's/\[0103070f\.\.\.\]/[0f070301...]/g' \
+ -e '/pmResult dump from/{
+s/0x[0-9a-f][0-9a-f]*/ADDR/
+s/amp: .* num/amp: TIMESTAMPS num/
+}' \
+ | $PCP_AWK_PROG '
+want == 1 { print " value [blob]"; want = 0; next }
+$1 == "29.0.135" { want = 1 }
+ { print }'
+}
+
+# real QA test starts here
+src/unpack 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/404.out b/qa/404.out
new file mode 100644
index 0000000..0cc2955
--- /dev/null
+++ b/qa/404.out
@@ -0,0 +1,210 @@
+QA output created by 404
+Expecting ... Unknown or illegal metric type
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: 32 vlen: 0
+Error: bad vtype
+pmUnpackEventRecords: Unknown or illegal metric type
+Expecting ... Error - ea_nrecords < 0
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: EVENT vlen: 8
+nrecords: -1
+Error: bad nrecords
+pmUnpackEventRecords: Insufficient elements in list
+Expecting ... Error - vlen way too small
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: EVENT vlen: 4
+Error: bad len (smaller than minimum size 8)
+pmUnpackEventRecords: Insufficient elements in list
+Expecting ... No records
+Array contains 0 records and 0 missed records
+Expecting ... 1 record, no params
+Array contains 1 records and 0 missed records
+pmResult[0]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 0
+Expecting ... 1 record, u32 param = 1
+Array contains 1 records and 0 missed records
+pmResult[0]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1 1.4012985e-45 0x1
+Expecting ... 1 record, u32 param = 2, u64 param = -3
+Array contains 1 records and 0 missed records
+pmResult[0]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1 1.4012985e-45 0x1
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2 2.8025969e-45 0x2
+ 29.0.130 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -3
+Expecting ... Error - buffer overrun @ parameter
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: EVENT vlen: 51
+nrecords: 1
+Event Record [0] flags=1 with 2 parameters
+ Parameter [0]: 29.0.127 = 2
+ Parameter [1]: Error: buffer overflow
+pmUnpackEventRecords: Result size exceeded
+Expecting ... 6 records, 7 missed [u32=4 u64=5 str="6"][u32=7 d=8 d=-9][u32=10 u64=11 str="twelve" str="thirteen" 32=-14 u32=15][u32=16 f=-17 aggr=...]
+Array contains 6 records and 7 missed records
+pmResult[0]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 2
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2147483648 -0 0x80000000
+ 511.0.2 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 3 4.2038954e-45 0x3
+pmResult[1]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 4 5.6051939e-45 0x4
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 5
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "6"
+pmResult[2]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 7 9.8090893e-45 0x7
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 8
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -9
+pmResult[3]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 7
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2 2.8025969e-45 0x2
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 10 1.4012985e-44 0xa
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 11
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "twelve"
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "thirteen"
+ 29.0.128 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 14 1.9618179e-44 0xe
+ 29.0.129 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 15 2.1019477e-44 0xf
+pmResult[4]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 2
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2147483648 -0 0x80000000
+ 511.0.2 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 4 5.6051939e-45 0x4
+pmResult[5]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 16 2.2420775e-44 0x10
+ 29.0.132 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -17
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+Expecting ... Error - buffer overrun @ record
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: EVENT vlen: 256
+nrecords: 6
+Event Record [0] flags=80000000
+ ==> 3 missed records
+Event Record [1] with 3 parameters
+ Parameter [0]: 29.0.127 = 4
+ Parameter [1]: 29.0.131 = 5
+ Parameter [2]: 29.0.134 = "6"
+Event Record [2] with 3 parameters
+ Parameter [0]: 29.0.127 = 7
+ Parameter [1]: 29.0.133 = 8
+ Parameter [2]: 29.0.133 = -9
+Event Record [3] flags=2 with 6 parameters
+ Parameter [0]: 29.0.127 = 10
+ Parameter [1]: 29.0.131 = 11
+ Parameter [2]: 29.0.134 = "twelve"
+ Parameter [3]: 29.0.134 = "thirteen"
+ Parameter [4]: 29.0.128 = 14
+ Parameter [5]: 29.0.129 = 15
+Event Record [4] flags=80000000
+ ==> 4 missed records
+Event Record [5] Error: buffer overflow
+pmUnpackEventRecords: Result size exceeded
+Expecting ... bad numval
+Event Records Dump ...
+PMID: 29.4095.0 numval: -12345
+Error: bad numval
+pmUnpackEventRecords: Generic error, already reported above
+Expecting ... bad valfmt
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 42
+Error: bad valfmt
+pmUnpackEventRecords: Impossible value or scale conversion
+Expecting ... odd instance
+[instance 42]
+Array contains 1 records and 0 missed records
+pmResult[0]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1 1.4012985e-45 0x1
+Expecting ... 1 record, nested event type @ 1st parameter
+pmUnpackEventRecords: Unknown or illegal metric type
+Expecting ... 3 records, nested event type @ 2nd parameter of 2nd record
+pmUnpackEventRecords: Unknown or illegal metric type
+Expecting ... all good
+pmUnpackEventRecords returns ...
+pmResult[0]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 10
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 22 3.0828566e-44 0x16
+ 29.0.129 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 23 3.2229865e-44 0x17
+ 29.0.130 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -24
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 25
+ 29.0.132 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -26
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 27
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "minus twenty-eight"
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.128 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 29 4.0637655e-44 0x1d
+Array contains 1 records and 0 missed records
+pmResult[0]
+pmResult dump from ADDR timestamp: TIMESTAMPS numpmid: 10
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 22 3.0828566e-44 0x16
+ 29.0.129 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 23 3.2229865e-44 0x17
+ 29.0.130 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -24
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 25
+ 29.0.132 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -26
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 27
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "minus twenty-eight"
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.128 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 29 4.0637655e-44 0x1d
+
+__pmDumpEventRecords coverage test ...
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: EVENT vlen: 180
+nrecords: 1
+Event Record [0] with 10 parameters
+ Parameter [0]: 29.0.127 = 22
+ Parameter [1]: 29.0.129 = 23
+ Parameter [2]: 29.0.130 = -24
+ Parameter [3]: 29.0.131 = 25
+ Parameter [4]: 29.0.132 = -26
+ Parameter [5]: 29.0.133 = 27
+ Parameter [6]: 29.0.134 = "minus twenty-eight"
+ Parameter [7]: 29.0.135 = [0f070301...]
+ Parameter [8]: 29.0.135 = [0f070301...]
+ Parameter [9]: 29.0.128 : bad type Unknown
diff --git a/qa/405 b/qa/405
new file mode 100755
index 0000000..f1ce8ed
--- /dev/null
+++ b/qa/405
@@ -0,0 +1,36 @@
+#!/bin/sh
+# PCP QA Test No. 405
+# valgrind for pmUnpackEventRecords() and pmFreeEventResult()
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+# can skip stdout from unpack, that's checked in 404
+#
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/=== filtered / { skip = 0 }
+skip == 0 { print }'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_run_valgrind src/unpack | _filter
+
+# success, all done
+exit
diff --git a/qa/405.out b/qa/405.out
new file mode 100644
index 0000000..25d289a
--- /dev/null
+++ b/qa/405.out
@@ -0,0 +1,8 @@
+QA output created by 405
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/unpack
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/406 b/qa/406
new file mode 100755
index 0000000..51a7d32
--- /dev/null
+++ b/qa/406
@@ -0,0 +1,35 @@
+#!/bin/sh
+# PCP QA Test No. 406
+# exercise PM_MODE_INTERP with PM_TYPE_EVENT metrics
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.out
+if test $PCP_VER -ge 3609
+then
+ message=events
+ ln $seq.out.2 $seq.out
+else
+ message=error
+ ln $seq.out.1 $seq.out
+fi
+
+# real QA test starts here
+echo "Expect $message for each pmFetch ..."
+src/interp0 -t 0.5 -a src/eventrec-old sample.event.records
+
+# success, all done
+exit
diff --git a/qa/406.out.1 b/qa/406.out.1
new file mode 100644
index 0000000..91d7514
--- /dev/null
+++ b/qa/406.out.1
@@ -0,0 +1,30 @@
+QA output created by 406
+Expect error for each pmFetch ...
+metric[0]: sample.event.records
+
+sample 1, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+
+sample 2, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+
+sample 3, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+
+sample 4, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+
+sample 5, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+
+sample 6, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+
+sample 7, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+
+sample 8, delta time=0.500 secs
+sample.event.records: current error Unknown or illegal metric type
+sample[9] pmFetch: End of PCP archive log
+
+9 samples required 3 log reads
diff --git a/qa/406.out.2 b/qa/406.out.2
new file mode 100644
index 0000000..06ff7c5
--- /dev/null
+++ b/qa/406.out.2
@@ -0,0 +1,47 @@
+QA output created by 406
+Expect events for each pmFetch ...
+metric[0]: sample.event.records
+
+sample 1, delta time=0.500 secs
+sample.event.records: 1 event records found
+
+event 1, offset time=-10.000 secs, param ids: 29.0.127 29.0.131 29.0.134
+event 1, offset time=-9.000 secs, param ids: 29.0.127 29.0.133 29.0.133
+event 1, offset time=-8.000 secs, param ids: 511.0.1 29.0.127 29.0.131 29.0.134 29.0.134 29.0.128 29.0.129
+event 1, offset time=-7.000 secs, param ids: 511.0.1 511.0.2
+event 1, offset time=-6.000 secs, param ids: 29.0.127 29.0.132 29.0.135
+
+sample 2, delta time=0.500 secs
+sample.event.records: 1 event records found
+
+
+sample 3, delta time=0.500 secs
+sample.event.records: 1 event records found
+
+
+sample 4, delta time=0.500 secs
+sample.event.records: 1 event records found
+
+
+sample 5, delta time=0.500 secs
+sample.event.records: 1 event records found
+
+event 1, offset time=-10.000 secs, param ids:
+
+sample 6, delta time=0.500 secs
+sample.event.records: 1 event records found
+
+event 1, offset time=-9.500 secs, param ids: 29.0.127
+event 1, offset time=-8.500 secs, param ids: 511.0.1 29.0.127 29.0.130
+
+sample 7, delta time=0.500 secs
+sample.event.records: 1 event records found
+
+event 1, offset time=-10.000 secs, param ids: 29.0.127
+event 1, offset time=-9.000 secs, param ids: 511.0.1 29.0.127 29.0.130
+
+sample 8, delta time=0.500 secs
+sample.event.records: no current values
+sample[9] pmFetch: End of PCP archive log
+
+9 samples required 9 log reads
diff --git a/qa/407 b/qa/407
new file mode 100755
index 0000000..92b7498
--- /dev/null
+++ b/qa/407
@@ -0,0 +1,46 @@
+#!/bin/sh
+# PCP QA Test No. 407
+# Derived metrics and PM_TYPE_EVENT
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== This should work ==="
+pmstore sample.event.reset 0 >/dev/null 2>&1
+echo "myevents = sample.event.records" >$tmp.config
+pminfo -c $tmp.config -f myevents | _filter
+pminfo -c $tmp.config -f myevents | _filter
+pminfo -c $tmp.config -f myevents | _filter
+pminfo -c $tmp.config -f myevents | _filter
+
+echo
+echo "=== These should NOT work ==="
+echo "my.bad_1 = sample.event.records - sample.event.records" >$tmp.config
+echo "my.bad_2 = 1 + sample.event.records" >>$tmp.config
+echo "my.bad_3 = (sample.event.reset + 1) + sample.event.records" >>$tmp.config
+echo "my.bad_4 = sample.event.records - (sample.event.reset + 1)" >>$tmp.config
+echo "my.bad_5 = sample.event.reset + (1 + sample.event.records)" >>$tmp.config
+echo "my.bad_6 = sample.event.reset + (sample.event.records * 2)" >>$tmp.config
+pminfo -c $tmp.config -f my
+
+# success, all done
+exit
diff --git a/qa/407.out b/qa/407.out
new file mode 100644
index 0000000..27c6b86
--- /dev/null
+++ b/qa/407.out
@@ -0,0 +1,32 @@
+QA output created by 407
+=== This should work ===
+
+myevents
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+
+myevents
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+
+myevents
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+
+myevents
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+
+=== These should NOT work ===
+Semantic error: derived metric my.bad_1: sample.event.records - sample.event.records: Non-arithmetic type for left operand
+Semantic error: derived metric my.bad_2: 1 + sample.event.records: Non-arithmetic type for right operand
+Semantic error: derived metric my.bad_3: <expr> + sample.event.records: Non-arithmetic type for right operand
+Semantic error: derived metric my.bad_4: sample.event.records - <expr>: Non-arithmetic type for left operand
+Semantic error: derived metric my.bad_5: 1 + sample.event.records: Non-arithmetic type for right operand
+Semantic error: derived metric my.bad_6: sample.event.records * 2: Non-arithmetic type for left operand
+my.bad_1: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_2: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_3: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_4: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_5: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_6: pmLookupDesc: Unknown or illegal metric identifier
diff --git a/qa/408 b/qa/408
new file mode 100755
index 0000000..110402a
--- /dev/null
+++ b/qa/408
@@ -0,0 +1,41 @@
+#! /bin/sh
+# PCP QA Test No. 408
+# checks metric help text for all metrics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+trap "exit \$status" 0 1 2 3 15
+
+
+_filter()
+{
+fgrep "Oneline or help text is not available" |\
+ egrep -v "^irix\.|^hw\.|^hinv\.|^mmv\."
+}
+
+# real QA test starts here
+pminfo -t 2>&1 | _filter
+
+# Filter ($PCP_AWK_PROG) the full text help msg such that the error
+# is output on the same line as the metric.
+# A blank line in output signifies next line will be the metric name.
+pminfo -T 2>&1 | \
+ $PCP_AWK_PROG '
+ /^ *$/ { getmetric = 1; next }
+ getmetric==1 { metric = $1; getmetric=0; next }
+ metric!=0 { print metric, $0; metric = 0; next }
+ { print }
+ ' | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/408.out b/qa/408.out
new file mode 100644
index 0000000..583df13
--- /dev/null
+++ b/qa/408.out
@@ -0,0 +1 @@
+QA output created by 408
diff --git a/qa/409 b/qa/409
new file mode 100755
index 0000000..9a4730e
--- /dev/null
+++ b/qa/409
@@ -0,0 +1,38 @@
+#!/bin/sh
+# PCP QA Test No. 409
+# pminfo -x with an archive and event records
+# also needs a working pmlogger to generate the input archive
+# ... see src/mkeventrec
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ | $PCP_AWK_PROG '
+want == 1 { print " value [blob]"; want = 0; next }
+want == 2 { print " inst blah, blah, blah"; want = 0; next }
+$1 == "sample.event.param_aggregate" { want = 1 }
+/^pmcd\.pmlogger\./ { want = 2 }
+ { print }'
+}
+
+# real QA test starts here
+pminfo -x -a src/eventrec-old | _filter
+
+# success, all done
+exit
diff --git a/qa/409.out b/qa/409.out
new file mode 100644
index 0000000..fac1170
--- /dev/null
+++ b/qa/409.out
@@ -0,0 +1,58 @@
+QA output created by 409
+sample.event.param_64: pmFetch: End of PCP archive log
+sample.event.param_aggregate: pmFetch: End of PCP archive log
+sample.event.param_float: pmFetch: End of PCP archive log
+sample.event.param_u32: pmFetch: End of PCP archive log
+sample.event.param_32: pmFetch: End of PCP archive log
+sample.event.param_double: pmFetch: End of PCP archive log
+sample.event.param_string: pmFetch: End of PCP archive log
+sample.event.param_u64: pmFetch: End of PCP archive log
+sample.event.type: pmFetch: End of PCP archive log
+
+sample.event.records
+ value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ --- event record [0] timestamp TIMESTAMP ---
+ sample.event.type (29.0.127)
+ value 4
+ sample.event.param_u64 (29.0.131)
+ value 5
+ sample.event.param_string (29.0.134)
+ value "6"
+ --- event record [1] timestamp TIMESTAMP ---
+ sample.event.type (29.0.127)
+ value 7
+ sample.event.param_double (29.0.133)
+ value 8
+ sample.event.param_double (29.0.133)
+ value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x2 (start) ---
+ sample.event.type (29.0.127)
+ value 10
+ sample.event.param_u64 (29.0.131)
+ value 11
+ sample.event.param_string (29.0.134)
+ value "twelve"
+ sample.event.param_string (29.0.134)
+ value "thirteen"
+ sample.event.param_32 (29.0.128)
+ value -14
+ sample.event.param_u32 (29.0.129)
+ value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP ---
+ sample.event.type (29.0.127)
+ value 16
+ sample.event.param_float (29.0.132)
+ value -17
+ sample.event.param_aggregate (29.0.135)
+ value [blob]
+
+pmcd.pmlogger.archive
+ inst blah, blah, blah
+
+pmcd.pmlogger.port
+ inst blah, blah, blah
+
+pmcd.pmlogger.host
+ inst blah, blah, blah
diff --git a/qa/410 b/qa/410
new file mode 100755
index 0000000..1aafc46
--- /dev/null
+++ b/qa/410
@@ -0,0 +1,32 @@
+#!/bin/sh
+# PCP QA Test No. 410
+# event records and pmdumplog
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ -e '/pmcd\.pmlogger\./s/ inst.*/blah .../' \
+ -e '/sample\.event\.param_aggregate/s/ value .*/ [blob]/'
+}
+
+# real QA test starts here
+pmdumplog src/eventrec-old | _filter
+
+# success, all done
+exit
diff --git a/qa/410.out b/qa/410.out
new file mode 100644
index 0000000..3b789ba
--- /dev/null
+++ b/qa/410.out
@@ -0,0 +1,64 @@
+QA output created by 410
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host):blah ...
+ 2.3.0 (pmcd.pmlogger.port):blah ...
+ 2.3.2 (pmcd.pmlogger.archive):blah ...
+
+TIMESTAMP 29.4095.0 (sample.event.records): 5 (and 7 missed) event records
+ --- event record [0] timestamp TIMESTAMP ---
+ 29.0.127 (sample.event.type): value 4
+ 29.0.131 (sample.event.param_u64): value 5
+ 29.0.134 (sample.event.param_string): value "6"
+ --- event record [1] timestamp TIMESTAMP ---
+ 29.0.127 (sample.event.type): value 7
+ 29.0.133 (sample.event.param_double): value 8
+ 29.0.133 (sample.event.param_double): value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x2 (start) ---
+ 29.0.127 (sample.event.type): value 10
+ 29.0.131 (sample.event.param_u64): value 11
+ 29.0.134 (sample.event.param_string): value "twelve"
+ 29.0.134 (sample.event.param_string): value "thirteen"
+ 29.0.128 (sample.event.param_32): value -14
+ 29.0.129 (sample.event.param_u32): value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP ---
+ 29.0.127 (sample.event.type): value 16
+ 29.0.132 (sample.event.param_float): value -17
+ 29.0.135 (sample.event.param_aggregate): [blob]
+
+TIMESTAMP 29.4095.0 (sample.event.records): No event records
+
+TIMESTAMP 29.4095.0 (sample.event.records): 1 event record
+ --- event record [0] timestamp TIMESTAMP ---
+ No parameters
+
+TIMESTAMP 29.4095.0 (sample.event.records): 2 event records
+ --- event record [0] timestamp TIMESTAMP ---
+ 29.0.127 (sample.event.type): value 1
+ --- event record [1] timestamp TIMESTAMP flags 0x1 (point) ---
+ 29.0.127 (sample.event.type): value 2
+ 29.0.130 (sample.event.param_64): value -3
+
+TIMESTAMP 29.4095.0 (sample.event.records): 5 (and 7 missed) event records
+ --- event record [0] timestamp TIMESTAMP ---
+ 29.0.127 (sample.event.type): value 4
+ 29.0.131 (sample.event.param_u64): value 5
+ 29.0.134 (sample.event.param_string): value "6"
+ --- event record [1] timestamp TIMESTAMP ---
+ 29.0.127 (sample.event.type): value 7
+ 29.0.133 (sample.event.param_double): value 8
+ 29.0.133 (sample.event.param_double): value -9
+ --- event record [2] timestamp TIMESTAMP flags 0x2 (start) ---
+ 29.0.127 (sample.event.type): value 10
+ 29.0.131 (sample.event.param_u64): value 11
+ 29.0.134 (sample.event.param_string): value "twelve"
+ 29.0.134 (sample.event.param_string): value "thirteen"
+ 29.0.128 (sample.event.param_32): value -14
+ 29.0.129 (sample.event.param_u32): value 15
+ --- event record [3] timestamp TIMESTAMP flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ --- event record [4] timestamp TIMESTAMP ---
+ 29.0.127 (sample.event.type): value 16
+ 29.0.132 (sample.event.param_float): value -17
+ 29.0.135 (sample.event.param_aggregate): [blob]
diff --git a/qa/411 b/qa/411
new file mode 100755
index 0000000..9a043cf
--- /dev/null
+++ b/qa/411
@@ -0,0 +1,128 @@
+#! /bin/sh
+# PCP QA Test No. 411
+# exercising the simple pmdas dynamic instance domain
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+rm -f $seq.out
+if pminfo -f simple.now | grep '3600 or "hour"' >/dev/null
+then
+ # old simple with indom 1, 60, 3600
+ ln $seq.out.0 $seq.out || exit 1
+else
+ # new simple with indom 0, 1, 2
+ if [ $PCP_VER -lt 3600 ]
+ then
+ ln $seq.out.1 $seq.out || exit 1
+ else
+ ln $seq.out.2 $seq.out || exit 1
+ fi
+fi
+
+status=1 # failure is the default!
+trap "_cleanup" 0 1 2 3 15
+
+_cleanup()
+{
+ [ -f $iam.conf.$seq ] && $sudo mv $iam.conf.$seq $iam.conf
+ $sudo ./Install </dev/null >/dev/null 2>&1
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+unset ROOT TOOLROOT MAKEFLAGS
+
+_time_filter()
+{
+ sed \
+ -e 's/[0-9][0-9]*/[NUMBER]/g'
+}
+
+_pmda_filter()
+{
+ _filter_pmda_install \
+ | sed \
+ -e 's/or python //g' \
+ -e 's/or perl //g' \
+
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=simple
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT
+
+$sudo mv $iam.conf $iam.conf.$seq
+
+echo "sec,min,hour" >$tmp.conf
+$sudo cp $tmp.conf $home/$iam/$iam.conf
+
+if $sudo make clobber >$tmp.out 2>&1
+then
+ :
+else
+ cat $tmp.out
+ echo "Arrgh, make clobber failed"
+ exit
+fi
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+$sudo ./Install -e </dev/null >$tmp.out 2>&1
+_pmda_filter <$tmp.out
+
+# exercise various configuration file entries (updated on the fly) ...
+# check all together
+cat > $tmp.test1 << EOF
+sec,min,hour
+EOF
+# should just get min
+cat > $tmp.test2 << EOF
+min, hour
+EOF
+# empty file (should fall back to previous config)
+cat > $tmp.test3 << EOF
+EOF
+# should just get hour
+cat > $tmp.test4 << EOF
+sdj, min,hour,df
+mday
+EOF
+# multiple entries the same ... should get just one instance returned
+cat > $tmp.test5 << EOF
+sec,sec,sec
+EOF
+
+# cp over prev config and then filter pminfo calls for each test
+for test in $tmp.test1 $tmp.test2 $tmp.test3 $tmp.test4 $tmp.test5
+do
+ $sudo cp $test $home/$iam/$iam.conf
+ sync
+ sleep 3
+ pminfo -f simple.now | _time_filter
+ $sudo rm -f $home/$iam/$iam.conf
+done
+$sudo cp $tmp.conf $home/$iam/$iam.conf
+
+# remove the agent
+$sudo ./Remove >$tmp.out 2>&1
+_pmda_filter <$tmp.out
+
+status=0
+exit
diff --git a/qa/411.out.0 b/qa/411.out.0
new file mode 100644
index 0000000..695ad83
--- /dev/null
+++ b/qa/411.out.0
@@ -0,0 +1,43 @@
+QA output created by 411
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+simple.now
+ inst [[NUMBER] or "sec"] value [NUMBER]
+ inst [[NUMBER] or "min"] value [NUMBER]
+ inst [[NUMBER] or "hour"] value [NUMBER]
+
+simple.now
+ inst [[NUMBER] or "min"] value [NUMBER]
+
+simple.now
+No value(s) available!
+
+simple.now
+ inst [[NUMBER] or "hour"] value [NUMBER]
+
+simple.now
+ inst [[NUMBER] or "sec"] value [NUMBER]
+ inst [[NUMBER] or "sec"] value [NUMBER]
+ inst [[NUMBER] or "sec"] value [NUMBER]
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
diff --git a/qa/411.out.1 b/qa/411.out.1
new file mode 100644
index 0000000..671ea8a
--- /dev/null
+++ b/qa/411.out.1
@@ -0,0 +1,45 @@
+QA output created by 411
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Install simple as a daemon or dso agent? [daemon]
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+simple.now
+ inst [[NUMBER] or "sec"] value [NUMBER]
+ inst [[NUMBER] or "min"] value [NUMBER]
+ inst [[NUMBER] or "hour"] value [NUMBER]
+
+simple.now
+ inst [[NUMBER] or "min"] value [NUMBER]
+
+simple.now
+No value(s) available!
+
+simple.now
+ inst [[NUMBER] or "hour"] value [NUMBER]
+
+simple.now
+ inst [[NUMBER] or "sec"] value [NUMBER]
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
diff --git a/qa/411.out.2 b/qa/411.out.2
new file mode 100644
index 0000000..1c19a5c
--- /dev/null
+++ b/qa/411.out.2
@@ -0,0 +1,40 @@
+QA output created by 411
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Install simple as a daemon or dso agent? [daemon]
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+simple.now
+ inst [[NUMBER] or "sec"] value [NUMBER]
+ inst [[NUMBER] or "min"] value [NUMBER]
+ inst [[NUMBER] or "hour"] value [NUMBER]
+
+simple.now
+ inst [[NUMBER] or "min"] value [NUMBER]
+
+simple.now
+No value(s) available!
+
+simple.now
+ inst [[NUMBER] or "hour"] value [NUMBER]
+
+simple.now
+ inst [[NUMBER] or "sec"] value [NUMBER]
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
diff --git a/qa/412 b/qa/412
new file mode 100755
index 0000000..6d2ecd8
--- /dev/null
+++ b/qa/412
@@ -0,0 +1,242 @@
+#! /bin/sh
+# PCP QA Test No. 412
+# Test out wrapping on libpcp/interp
+#
+# Test the creation and reading of an archive created using pmlogger(1) and
+# and pmval(1). On IRIX 6.2 and earlier, this test purposely sets the TZ
+# variable to specify daylight savings using the extended format, in a way
+# that does not break libc.so.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_wrap_off()
+{
+ dowrap=0
+ unset PCP_COUNTER_WRAP
+ echo "--- Wrapping OFF ---"
+}
+
+_wrap_on()
+{
+ dowrap=1
+ PCP_COUNTER_WRAP=
+ export PCP_COUNTER_WRAP
+ echo "--- Wrapping ON ---"
+}
+
+_isLaterThanIRIX62 () {
+ if [ "$PCP_PLATFORM" = irix ]
+ then
+ STAT=`uname -a | $PCP_AWK_PROG '
+BEGIN { status = 0 }
+1 {
+ x = $3
+ if (x > 6.2) status = "0"
+ else status = "1"
+ }
+END { print status }
+'`
+ else
+ STAT=2 # not an IRIX platform
+ fi
+
+ return $STAT
+}
+
+_setTimeZone () {
+ MONTH=`date +%m`
+
+ if [ $MONTH -lt 7 ]
+ then
+ # Daylight savings on from Sunday 1st January to
+ # Sunday 5th March
+ TZ="EST-10EDT-11,1/0,64/3"
+ else
+ # Daylight savings on from Sunday 29th October to Wednesday
+ # "32nd" December (including the end of the extra day for
+ # leap years)
+ TZ="EST-10EDT-11,302/2,367/0"
+ fi
+
+ # This is what the specification should be normally, but
+ # it won't work because the start date of daylight savings
+ # is AFTER the end date. libc.so hates this, so I hate
+ # libc.so.
+ #TZ="EST-10EDT-11,302/2,64/3"
+
+ echo $TZ
+}
+
+#
+# Reset the sample agent so that we start from a known
+# point for the wrap metrics
+#
+_reset()
+{
+ pmstore sample.control -1 >/dev/null
+ $sudo $signal -a -s HUP pmcd
+ _wait_for_pmcd
+}
+
+#
+# Simulate interpolated fetching with/without wrapping
+# Assumes doing it for sample.wrap.ulong
+#
+_process_log()
+{
+ $PCP_AWK_PROG -v dowrap=$dowrap -v half_delta=$half_delta '
+ BEGIN {
+ maxuint = 4294967295;
+ debug=0
+ }
+ $2 == "29.0.58" {
+ curr_time = $1;
+ curr_value = $5;
+ gsub(/^.*:/, "", curr_time);
+ if (prev_time != 0) {
+ delta = curr_time - prev_time;
+ if (delta < 0) delta += 60; # delta wrap :-)
+ if (debug)
+ printf("delta=%s;curr=%s;prev=%s\n", delta, curr_time, prev_time);
+
+ #x = (prev_value + curr_value) / 2.0
+ x = (curr_value - prev_value) / delta * half_delta;
+ x += prev_value;
+
+ if (curr_value < prev_value && dowrap) { # then wrap
+ new_curr_value = curr_value + maxuint;
+
+ x = (new_curr_value - prev_value) / delta * half_delta;
+ x += prev_value;
+
+ if (x > maxuint) x -= maxuint; # wrap back if necessary
+ }
+ printf "%15.0d\n",x;
+ }
+ prev_time = curr_time;
+ prev_value = curr_value;
+ }
+ ' <$tmp.dump
+}
+
+#
+# Note the time of the first sample.wrap value
+#
+_set_starttime()
+{
+ $PCP_AWK_PROG '
+ $2 == "29.0.58" {
+ printf("starttime=%s\n", $1);
+ exit 0;
+ }
+ ' <$tmp.dump >$tmp.starttime
+ eval `cat $tmp.starttime`
+}
+
+#
+# Get out the interp values using pmval
+#
+_pmval_log()
+{
+ echo >>$seq.full
+ echo "--- pmval ---" >>$seq.full
+ pmval -w 15 -f 0 -r -a $tmp.archive -S "@$starttime" -O $half_delta -t $delta \
+ sample.wrap.ulong \
+ | tee -a $seq.full \
+ | sed \
+ -e '/metric/,/interval/d' \
+ -e '/^[ ]*$/d' \
+ -e 's/^[^ ][^ ]* *//'
+}
+
+#
+# Compare values allowing for an error
+#
+_compare_results()
+{
+ echo >>$seq.full
+ echo "--- paste ---" >>$seq.full
+ error=1e+08
+ paste $tmp.1 $tmp.2 \
+ | tee -a $seq.full \
+ | $PCP_AWK_PROG -v error=$error ' {
+ diff = $1-$2;
+ if (diff < 0) diff *= -1;
+ if (diff > error)
+ printf("mismatch: %f, %f (diff=%f)\n", $1, $2, diff);
+ else
+ printf("match\n");
+ }'
+}
+
+rm -f $seq.full
+
+# real QA test starts here
+
+delta=2
+half_delta=1
+
+_isLaterThanIRIX62
+if [ $? = 1 ]
+then
+ TZ=`_setTimeZone` # this forces the timezone to be correct and
+ export TZ # problem-free on IRIX 6.2 and earlier.
+fi
+
+_reset
+cat <<EOF >$tmp.config
+log advisory on $delta second {
+ sample.wrap.ulong
+}
+EOF
+pmlogger -c $tmp.config -s5 -l$tmp.log $tmp.archive
+if [ $? -ne 0 ]
+then
+ echo "Archive failed to be created !"
+ cat $tmp.log
+ exit 1
+ fi
+pmdumplog $tmp.archive >$tmp.dump
+echo >>$seq.full
+echo "--- pmdumplog ---" >>$seq.full
+cat $tmp.dump >>$seq.full
+_set_starttime
+
+_wrap_off
+_process_log >$tmp.1
+echo >>$seq.full
+echo "--- process_log wrap_off ---" >>$seq.full
+cat $tmp.1 >>$seq.full
+_pmval_log >$tmp.2
+echo >>$seq.full
+echo "--- process pmval ---" >>$seq.full
+cat $tmp.2 >>$seq.full
+_compare_results
+
+_wrap_on
+_process_log >$tmp.1
+echo >>$seq.full
+echo "--- process_log wrap_on ---" >>$seq.full
+cat $tmp.1 >>$seq.full
+_pmval_log >$tmp.2
+echo >>$seq.full
+echo "--- process pmval ---" >>$seq.full
+cat $tmp.2 >>$seq.full
+_compare_results
+
+# success, all done
+status=0
+exit
diff --git a/qa/412.out b/qa/412.out
new file mode 100644
index 0000000..4baefe7
--- /dev/null
+++ b/qa/412.out
@@ -0,0 +1,11 @@
+QA output created by 412
+--- Wrapping OFF ---
+match
+match
+match
+match
+--- Wrapping ON ---
+match
+match
+match
+match
diff --git a/qa/413 b/qa/413
new file mode 100755
index 0000000..458202d
--- /dev/null
+++ b/qa/413
@@ -0,0 +1,31 @@
+#!/bin/sh
+# PCP QA Test No. 413
+# pmie should not accept PM_TYPE_EVENT metrics in any sort of expression
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Metric alone ..."
+echo 'sampledso.event.records > 0 -> print "not likely";' | pmie -v -t 1 -T 2
+echo "Metric in simple expression ..."
+echo 'sampledso.event.reset + sampledso.event.records > 0 -> print "not likely";' | pmie -v -t 1 -T 2
+echo "Metric in aggregate expression ..."
+echo 'min_sample(sampledso.event.records @0..5) > 0 -> print "not likely";' | pmie -v -t 1 -T 10
+echo "Metric in existential expression ..."
+echo 'some_sample(sampledso.event.records @0..5) > 0 -> print "not likely";' | pmie -v -t 1 -T 10
+
+# success, all done
+exit
diff --git a/qa/413.out b/qa/413.out
new file mode 100644
index 0000000..96b24dc
--- /dev/null
+++ b/qa/413.out
@@ -0,0 +1,9 @@
+QA output created by 413
+Metric alone ...
+pmie: metric sampledso.event.records has non-numeric type
+Metric in simple expression ...
+pmie: metric sampledso.event.records has non-numeric type
+Metric in aggregate expression ...
+pmie: metric sampledso.event.records has non-numeric type
+Metric in existential expression ...
+pmie: metric sampledso.event.records has non-numeric type
diff --git a/qa/414 b/qa/414
new file mode 100755
index 0000000..d603f8c
--- /dev/null
+++ b/qa/414
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 414
+# slow AF callback handling, pv #550109
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+# real QA test starts here
+
+# filtering needed because some non-determinism in ordinal numbering
+#
+src/slow_af -D af 2>$tmp.err \
+| sed \
+ -e 's/#16$/#last/' \
+ -e 's/#17$/#last/'
+
+cat $tmp.err >>$seq.full
+echo
+echo "Diagnostic output lines ..."
+sed <$tmp.err \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9][0-9][0-9][0-9]/TIME/g' \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIME/g' \
+ -e 's/0x0)/(nil))/g' \
+ -e 's/0x[0-9a-f][0-9a-f]*/ADDR/g' \
+| LC_COLLATE=POSIX sort \
+| uniq
+
+# success, all done
+status=0
+exit
diff --git a/qa/414.out b/qa/414.out
new file mode 100644
index 0000000..5e970f0
--- /dev/null
+++ b/qa/414.out
@@ -0,0 +1,30 @@
+QA output created by 414
+event 32771 callback
+event 32770 callback #?
+event 32769 callback #?
+event 32770 callback #?
+event 32770 callback #3
+event 32769 callback #?
+event 32770 callback #5
+event 32769 callback #4
+event 32770 callback #9
+event 32769 callback #7
+event 32770 callback #last
+
+Diagnostic output lines ...
+TIME AFcallback ADDR(32769, (nil))
+TIME AFcallback ADDR(32770, (nil))
+TIME AFcallback ADDR(32771, (nil))
+TIME AFcallback event 32769 too slow, skip callback for TIME
+TIME AFcallback event 32770 too slow, skip callback for TIME
+TIME AFenqueue ADDR(32769, (nil)) for TIME
+TIME AFenqueue ADDR(32770, (nil)) for TIME
+TIME AFenqueue ADDR(32771, (nil)) for TIME
+TIME AFenqueue ADDR(32772, (nil)) for TIME
+TIME AFonalarm(14)
+TIME AFsetitimer for delta TIME
+onevent done: TIME
+onevent(32769, (nil)) called: TIME
+onevent(32770, (nil)) called: TIME
+onevent(32771, (nil)) called: TIME
+returned from pause(): TIME
diff --git a/qa/415 b/qa/415
new file mode 100755
index 0000000..d8f8540
--- /dev/null
+++ b/qa/415
@@ -0,0 +1,34 @@
+#!/bin/sh
+# PCP QA Test No. 415
+# check various tools with PM_TYPE_EVENT metrics
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_do()
+{
+ echo
+ echo "=== $* ==="
+ $*
+ echo "exit status=$?"
+}
+
+# real QA test starts here
+_do pmval -s 1 sample.event.records
+_do pmval -s 1 -a src/eventrec-old sample.event.records
+_do pmstore sample.event.records 1
+
+# success, all done
+exit
diff --git a/qa/415.out b/qa/415.out
new file mode 100644
index 0000000..0abc60e
--- /dev/null
+++ b/qa/415.out
@@ -0,0 +1,15 @@
+QA output created by 415
+
+=== pmval -s 1 sample.event.records ===
+
+pmval: Cannot display values for event type metrics
+exit status=1
+
+=== pmval -s 1 -a src/eventrec-old sample.event.records ===
+
+pmval: Cannot display values for event type metrics
+exit status=1
+
+=== pmstore sample.event.records 1 ===
+pmstore: Cannot modify values for event type metrics
+exit status=1
diff --git a/qa/416 b/qa/416
new file mode 100755
index 0000000..671446d
--- /dev/null
+++ b/qa/416
@@ -0,0 +1,131 @@
+#!/bin/sh
+# PCP QA Test No. 416
+# news pmda ... exercise perl PMDA bits-n-bobs
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::PMDA module not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+here=`pwd`
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s;/[a-zA-Z0-9_/.\-]*/perl;PERL;" \
+ -e "s;$PCP_PMDAS_DIR;PCP_PMDAS_DIR;" \
+ -e '/^Log for pmdanews/s/ on .*/ on .../' \
+ -e '/^Log finished/s/ed .*/ed .../' \
+ -e '/^pmResult dump/{
+s/ 0x[0-9a-f][0-9a-f]* / ADDR /
+s/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/
+}'
+}
+
+# Made more compilcated by non-determinism in the output from
+# the PMNS traversal commands "traverse" and "children".
+# Need to slice output horizontally, sort some sections then
+# concatenate sections .. yuk.
+#
+_filter2()
+{
+ rm -f $tmp.0 $tmp.1 $tmp.2 $tmp.3 $tmp.4
+ ${PCP_AWK_PROG} '
+BEGIN { part=0 }
+ { print $0 >"'$tmp.'" part }
+part==0 && /^Metric: news$/ { part=1; next }
+part==1 && /> children news.articles$/ { part=2; next }
+part==2 && /^Metric: news.articles$/ { part=3; next }
+part==3 && /> children news.articles.count$/ { part=4; next }'
+
+ [ -f $tmp.1 ] && LC_COLLATE=POSIX sort -o $tmp.1 $tmp.1
+ [ -f $tmp.1 ] && LC_COLLATE=POSIX sort -o $tmp.3 $tmp.3
+
+ for i in 0 1 2 3 4
+ do
+ [ -f $tmp.$i ] && cat $tmp.$i
+ done
+}
+
+cat >$tmp.pmns <<End-of-File
+/* need local pmns in case the news PMDA is not installed */
+root {
+ news
+}
+
+news {
+ articles
+ readers
+}
+
+news.articles {
+ total 28:0:201
+ count 28:0:301
+ last 28:0:302
+}
+
+news.readers {
+ xrn 28:0:113
+ rn 28:0:111
+ nnrpd 28:0:101
+ trn 28:0:112
+ vn 28:0:114
+}
+End-of-File
+
+home=$PCP_PMDAS_DIR
+if [ ! -d $home/news ]
+then
+ echo "Where is $home/news?"
+ exit 1
+fi
+cd $home/news
+
+# real QA test starts here
+
+cat <<End-of-File | $sudo dbpmda -ie -n $tmp.pmns >$tmp.out 2>&1
+open pipe `which perl` `pwd`/pmdanews.pl
+traverse news
+children news.articles
+children news.articles.count
+pmid news.articles.total
+fetch news.articles.total
+desc news.articles.count
+instance 28.0
+fetch news.articles.count
+profile 28.0 none
+profile 28.0 add 2
+profile 28.0 add 4
+getdesc on
+fetch news.articles.count
+close
+quit
+End-of-File
+
+cat $tmp.out >>$here/$seq.full
+_filter <$tmp.out | _filter2
+
+# ensure news pmda is all done ...
+#
+sleep 3
+
+echo
+echo "=== news.log ==="
+_filter <news.log
+
+# success, all done
+status=0
+exit
diff --git a/qa/416.out b/qa/416.out
new file mode 100644
index 0000000..5ab970c
--- /dev/null
+++ b/qa/416.out
@@ -0,0 +1,66 @@
+QA output created by 416
+dbpmda> open pipe PERL PCP_PMDAS_DIR/news/pmdanews.pl
+Start perl PMDA: PERL PCP_PMDAS_DIR/news/pmdanews.pl
+dbpmda> traverse news
+Metric: news
+ news.articles.count
+ news.articles.last
+ news.articles.total
+ news.readers.nnrpd
+ news.readers.rn
+ news.readers.trn
+ news.readers.vn
+ news.readers.xrn
+dbpmda> children news.articles
+Metric: news.articles
+ leaf count
+ leaf last
+ leaf total
+dbpmda> children news.articles.count
+Metric: news.articles.count
+dbpmda> pmid news.articles.total
+Metric: news.articles.total
+ 28.0.201
+dbpmda> fetch news.articles.total
+PMID(s): 28.0.201
+pmResult dump from ADDR timestamp: 0.000000 TIMESTAMP numpmid: 1
+ 28.0.201 (news.articles.total): numval: 1 valfmt: 0 vlist[]:
+ value 800 1.1210388e-42 0x320
+dbpmda> desc news.articles.count
+PMID: 28.0.301
+ Data Type: 32-bit unsigned int InDom: 28.0 0x7000000
+ Semantics: instant Units: count
+dbpmda> instance 28.0
+pmInDom: 28.0
+[ 0] inst: 1 name: "comp.sys.sgi"
+[ 1] inst: 2 name: "comp.sys.sgi.graphics"
+[ 2] inst: 3 name: "comp.sys.sgi.hardware"
+[ 3] inst: 4 name: "sgi.bad-attitude"
+[ 4] inst: 5 name: "sgi.engr.all"
+dbpmda> fetch news.articles.count
+PMID(s): 28.0.301
+pmResult dump from ADDR timestamp: 0.000000 TIMESTAMP numpmid: 1
+ 28.0.301 (news.articles.count): numval: 5 valfmt: 0 vlist[]:
+ inst [1 or ???] value 0 0 0x0
+ inst [2 or ???] value 0 0 0x0
+ inst [3 or ???] value 0 0 0x0
+ inst [4 or ???] value 700 9.8090893e-43 0x2bc
+ inst [5 or ???] value 100 1.4012985e-43 0x64
+dbpmda> profile 28.0 none
+dbpmda> profile 28.0 add 2
+dbpmda> profile 28.0 add 4
+dbpmda> getdesc on
+dbpmda> fetch news.articles.count
+PMID(s): 28.0.301
+pmResult dump from ADDR timestamp: 0.000000 TIMESTAMP numpmid: 1
+ 28.0.301 (news.articles.count): numval: 2 valfmt: 0 vlist[]:
+ inst [2 or ???] value 0
+ inst [4 or ???] value 700
+dbpmda> close
+dbpmda> quit
+
+=== news.log ===
+Log for pmdanews on ...
+
+
+Log finished ...
diff --git a/qa/417 b/qa/417
new file mode 100755
index 0000000..3ecacf7
--- /dev/null
+++ b/qa/417
@@ -0,0 +1,100 @@
+#! /bin/sh
+# PCP QA Test No. 417
+# Exercise tools with a corrupted archive
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_check_core()
+{
+ if [ "`echo core*`" != "core*" ]
+ then
+ $PCP_ECHO_PROG $PCP_ECHO_N "Dumped core! (saved in $here as""$PCP_ECHO_C"
+ for c in core*
+ do
+ $sudo mv $c $here/$seq.$c
+ $PCP_ECHO_PROG $PCP_ECHO_N " $seq.$c""$PCP_ECHO_C"
+ done
+ echo ")"
+ fi
+}
+
+rm -rf $tmp
+mkdir $tmp
+cd $tmp
+
+# make the corrupted archive
+arch=src/bigace_v2
+cp $here/$arch.meta bad.meta
+dd ibs=1 count=512 if=$here/$arch.index of=bad.index 2>/dev/null
+dd ibs=1 count=512 if=$here/$arch.index >>bad.index 2>/dev/null
+dd if=$here/$arch.0 ibs=1 count=2052 of=bad.0 2>/dev/null
+dd if=/dev/zero ibs=1 count=1024 >>bad.0 2>/dev/null
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+export TZ=EST-10
+
+# real QA test starts here
+
+echo
+echo "=== pminfo ==="
+pminfo -O0 -n $here/src/bigace.pmns -a bad >$tmp.out 2>$tmp.err
+cat $tmp.err $tmp.out
+_check_core
+
+echo
+echo "=== pminfo -f irix ==="
+pminfo -O0 -n $here/src/bigace.pmns -a bad -f irix
+_check_core
+
+echo
+echo "=== pmdumplog -t ==="
+pmdumplog -n $here/src/bigace.pmns -z -t bad
+_check_core
+
+echo
+echo "=== pmdumplog -t, no index ==="
+mv bad.index save.index
+pmdumplog -n $here/src/bigace.pmns -z -t bad
+mv save.index bad.index
+_check_core
+
+echo
+echo "=== pmdumplog -l ==="
+pmdumplog -n $here/src/bigace.pmns -z -l bad
+_check_core
+
+echo
+echo "=== pmdumplog -L ==="
+pmdumplog -n $here/src/bigace.pmns -z -L bad
+_check_core
+
+echo
+echo "=== pmdumplog -m ==="
+pmdumplog -n $here/src/bigace.pmns -z -m bad >$tmp.out 2>$tmp.err
+cat $tmp.err $tmp.out
+_check_core
+
+echo
+echo "=== pmlogsummary ==="
+pmlogsummary -n $here/src/bigace.pmns bad >$tmp.out 2>$tmp.err
+cat $tmp.err $tmp.out | sed -e 's/^\*//g'
+_check_core
+
+# success, all done
+status=0
+exit
diff --git a/qa/417.out b/qa/417.out
new file mode 100644
index 0000000..9eba207
--- /dev/null
+++ b/qa/417.out
@@ -0,0 +1,405 @@
+QA output created by 417
+
+=== pminfo ===
+pminfo: Cannot locate end of archive bad: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+irix.kernel.all.load
+irix.kernel.all.pswitch
+irix.kernel.all.readch
+irix.kernel.all.writech
+irix.kernel.all.runocc
+irix.kernel.all.runque
+irix.kernel.all.syscall
+irix.kernel.all.cpu.idle
+irix.kernel.all.cpu.intr
+irix.kernel.all.cpu.sys
+irix.kernel.all.cpu.sxbrk
+irix.kernel.all.cpu.user
+irix.kernel.all.cpu.wait.total
+irix.kernel.all.ipc.msg
+irix.kernel.all.ipc.sema
+irix.disk.dev.read
+irix.disk.dev.write
+irix.disk.dev.total
+irix.network.interface.in.bytes
+irix.network.interface.out.bytes
+
+=== pminfo -f irix ===
+pminfo: Cannot locate end of archive bad: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+
+irix.kernel.all.load
+ inst [1 or "1 minute"] value 0.453125
+ inst [5 or "5 minute"] value 1.9179688
+ inst [15 or "15 minute"] value 1.7792969
+
+irix.kernel.all.pswitch
+ value 4195911
+
+irix.kernel.all.readch
+ value 197783843
+
+irix.kernel.all.writech
+ value 157316163
+
+irix.kernel.all.runocc
+ value 2109
+
+irix.kernel.all.runque
+ value 4388
+
+irix.kernel.all.syscall
+ value 8332101
+
+irix.kernel.all.cpu.idle
+ value 3536037
+
+irix.kernel.all.cpu.intr
+ value 241150
+
+irix.kernel.all.cpu.sys
+ value 2215310
+
+irix.kernel.all.cpu.sxbrk
+ value 0
+
+irix.kernel.all.cpu.user
+ value 1748450
+
+irix.kernel.all.cpu.wait.total
+ value 2481550
+
+irix.kernel.all.ipc.msg
+ value 0
+
+irix.kernel.all.ipc.sema
+ value 0
+
+irix.disk.dev.read
+ inst [131329 or "dks1d1"] value 2818590218
+ inst [131330 or "dks1d2"] value 2818572370
+ inst [131331 or "dks1d3"] value 2818572568
+ inst [131841 or "dks3d1"] value 2818572664
+ inst [131842 or "dks3d2"] value 2818574792
+ inst [131843 or "dks3d3"] value 2818572526
+ inst [131844 or "dks3d4"] value 2818587463
+ inst [132097 or "dks4d1"] value 2818573378
+ inst [132098 or "dks4d2"] value 2818575423
+
+irix.disk.dev.write
+ inst [131329 or "dks1d1"] value 12082
+ inst [131330 or "dks1d2"] value 11
+ inst [131331 or "dks1d3"] value 8
+ inst [131841 or "dks3d1"] value 310
+ inst [131842 or "dks3d2"] value 1181
+ inst [131843 or "dks3d3"] value 5
+ inst [131844 or "dks3d4"] value 1656
+ inst [132097 or "dks4d1"] value 524
+ inst [132098 or "dks4d2"] value 47856
+
+irix.disk.dev.total
+ inst [131329 or "dks1d1"] value 2818602300
+ inst [131330 or "dks1d2"] value 2818572381
+ inst [131331 or "dks1d3"] value 2818572576
+ inst [131841 or "dks3d1"] value 2818572974
+ inst [131842 or "dks3d2"] value 2818575973
+ inst [131843 or "dks3d3"] value 2818572531
+ inst [131844 or "dks3d4"] value 2818589119
+ inst [132097 or "dks4d1"] value 2818573902
+ inst [132098 or "dks4d2"] value 2818623279
+
+irix.network.interface.in.bytes
+ inst [1 or "et0"] value 22534841
+ inst [2 or "lo0"] value 19752688
+
+irix.network.interface.out.bytes
+ inst [1 or "et0"] value 154960710
+ inst [2 or "lo0"] value 19752688
+
+=== pmdumplog -t ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+pmdumplog: Cannot locate end of archive bad: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+
+Temporal Index
+ Log Vol end(meta) end(log)
+16:02:31.554 0 1644 132
+16:02:31.842 0 4949 776
+16:02:44.394 0 5974 17720
+ Error: offset to log file past end of file (3076)
+16:02:52.126 0 10829 26312
+ Error: offset to log file past end of file (3076)
+16:02:57.161 0 16255 34200
+ Error: offset to log file past end of file (3076)
+16:09:59.184 0 21581 904248
+ Error: offset to log file past end of file (3076)
+16:10:12.524 0 26722 932696
+ Error: offset to log file past end of file (3076)
+16:10:22.471 0 31712 952816
+ Error: offset to log file past end of file (3076)
+16:10:26.115 0 36430 956800
+ Error: offset to log file past end of file (3076)
+16:10:30.222 0 40879 960744
+ Error: offset to log file past end of file (3076)
+16:10:40.330 0 45185 987512
+ Error: offset to log file past end of file (3076)
+16:10:48.730 0 49355 1002648
+ Error: offset to log file past end of file (3076)
+16:10:51.373 0 53400 1006392
+ Error: offset to log file past end of file (3076)
+16:10:58.243 0 57141 1021208
+ Error: offset to log file past end of file (3076)
+16:11:01.070 0 60380 1024872
+ Error: offset to log file past end of file (3076)
+16:11:04.194 0 63475 1028416
+ Error: offset to log file past end of file (3076)
+16:11:08.796 0 65966 1038688
+ Error: offset to log file past end of file (3076)
+16:11:11.264 0 68180 1042032
+ Error: offset to log file past end of file (3076)
+16:11:13.259 0 69936 1045256
+ Error: offset to log file past end of file (3076)
+11:02:12.1342514 29015 816930151 554564
+ Warning: file missing or compressed for log volume 29015
+ Error: illegal timestamp value (132 sec, 1342514690 usec)
+ Error: offset to meta file past end of file (75462)
+ Error: timestamp went backwards in time 816930673.259723 -> 132.1342514690
+10:59:58.1836019 1650524160 0 0
+ Warning: file missing or compressed for log volume 1650524160
+ Error: illegal timestamp value (-2 sec, 1836019565 usec)
+ Error: timestamp went backwards in time 132.1342514690 -> -2.1836019565
+11:00:00.000 0 0 0
+ Error: volume number decreased
+11:00:00.000 0 0 0
+11:00:00.000 1163088941 825312595 1412247856
+ Warning: file missing or compressed for log volume 1163088941
+ Error: offset to meta file past end of file (75462)
+00:09:51.842674 741552179 791820848 805306368
+ Warning: file missing or compressed for log volume 741552179
+ Error: illegal timestamp value (741881391 sec, 842674224 usec)
+ Error: offset to meta file past end of file (75462)
+ Error: volume number decreased
+11:00:00.000 132 816930151 554564
+ Warning: file missing or compressed for log volume 132
+ Error: offset to meta file past end of file (75462)
+ Error: timestamp went backwards in time 741881391.842674224 -> 0.000000
+ Error: volume number decreased
+11:00:00.001 132 816930151 842927
+ Error: offset to meta file past end of file (75462)
+11:00:00.004 776 816930164 394424
+ Warning: file missing or compressed for log volume 776
+ Error: offset to meta file past end of file (75462)
+11:00:00.005 17720 816930172 126787
+ Warning: file missing or compressed for log volume 17720
+ Error: offset to meta file past end of file (75462)
+11:00:00.010 26312 816930177 161532
+ Warning: file missing or compressed for log volume 26312
+ Error: offset to meta file past end of file (75462)
+11:00:00.016 34200 816930599 184043
+ Warning: file missing or compressed for log volume 34200
+ Error: offset to meta file past end of file (75462)
+11:00:00.021 904248 816930612 524938
+ Warning: file missing or compressed for log volume 904248
+ Error: offset to meta file past end of file (75462)
+11:00:00.026 932696 816930622 471061
+ Warning: file missing or compressed for log volume 932696
+ Error: offset to meta file past end of file (75462)
+11:00:00.031 952816 816930626 115458
+ Warning: file missing or compressed for log volume 952816
+ Error: offset to meta file past end of file (75462)
+11:00:00.036 956800 816930630 222020
+ Warning: file missing or compressed for log volume 956800
+ Error: offset to meta file past end of file (75462)
+11:00:00.040 960744 816930640 330045
+ Warning: file missing or compressed for log volume 960744
+ Error: offset to meta file past end of file (75462)
+11:00:00.045 987512 816930648 730269
+ Warning: file missing or compressed for log volume 987512
+ Error: offset to meta file past end of file (75462)
+11:00:00.049 1002648 816930651 373224
+ Warning: file missing or compressed for log volume 1002648
+ Error: offset to meta file past end of file (75462)
+11:00:00.053 1006392 816930658 243284
+ Warning: file missing or compressed for log volume 1006392
+ Error: offset to meta file past end of file (75462)
+11:00:00.057 1021208 816930661 70416
+ Warning: file missing or compressed for log volume 1021208
+ Error: offset to meta file past end of file (75462)
+11:00:00.060 1024872 816930664 194088
+ Warning: file missing or compressed for log volume 1024872
+ Error: offset to meta file past end of file (75462)
+11:00:00.063 1028416 816930668 796477
+ Warning: file missing or compressed for log volume 1028416
+ Error: offset to meta file past end of file (75462)
+11:00:00.065 1038688 816930671 264798
+ Warning: file missing or compressed for log volume 1038688
+ Error: offset to meta file past end of file (75462)
+11:00:00.068 1042032 816930673 259723
+ Warning: file missing or compressed for log volume 1042032
+ Error: offset to meta file past end of file (75462)
+
+=== pmdumplog -t, no index ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+
+Temporal Index
+ Log Vol end(meta) end(log)
+
+=== pmdumplog -l ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+pmdumplog: Cannot locate end of archive bad: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+Log Label (Log Format Version 2)
+Performance metrics from host moomba
+ commencing Tue Nov 21 16:02:31.554 1995
+ ending UNKNOWN
+
+=== pmdumplog -L ===
+Note: timezone set to local timezone of host "moomba" from archive
+
+pmdumplog: Cannot locate end of archive bad: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+Log Label (Log Format Version 2)
+Performance metrics from host moomba
+ commencing Tue Nov 21 16:02:31.554 1995
+ ending UNKNOWN
+Archive timezone: EST-11EST-10,86/2:00,303/2:00
+PID for pmlogger: 29015
+
+=== pmdumplog -m ===
+pmdumplog: Cannot locate end of archive bad: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+pmdumplog: pmFetch: Corrupted record in a PCP archive log
+Note: timezone set to local timezone of host "moomba" from archive
+
+
+16:02:31.554 1.80.7 (irix.disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818602300
+ inst [131330 or "dks1d2"] value 2818572381
+ inst [131331 or "dks1d3"] value 2818572576
+ inst [131841 or "dks3d1"] value 2818572974
+ inst [131842 or "dks3d2"] value 2818575973
+ inst [131843 or "dks3d3"] value 2818572531
+ inst [131844 or "dks3d4"] value 2818589119
+ inst [132097 or "dks4d1"] value 2818573902
+ inst [132098 or "dks4d2"] value 2818623279
+ 1.80.2 (irix.disk.dev.write):
+ inst [131329 or "dks1d1"] value 12082
+ inst [131330 or "dks1d2"] value 11
+ inst [131331 or "dks1d3"] value 8
+ inst [131841 or "dks3d1"] value 310
+ inst [131842 or "dks3d2"] value 1181
+ inst [131843 or "dks3d3"] value 5
+ inst [131844 or "dks3d4"] value 1656
+ inst [132097 or "dks4d1"] value 524
+ inst [132098 or "dks4d2"] value 47856
+ 1.80.1 (irix.disk.dev.read):
+ inst [131329 or "dks1d1"] value 2818590218
+ inst [131330 or "dks1d2"] value 2818572370
+ inst [131331 or "dks1d3"] value 2818572568
+ inst [131841 or "dks3d1"] value 2818572664
+ inst [131842 or "dks3d2"] value 2818574792
+ inst [131843 or "dks3d3"] value 2818572526
+ inst [131844 or "dks3d4"] value 2818587463
+ inst [132097 or "dks4d1"] value 2818573378
+ inst [132098 or "dks4d2"] value 2818575423
+ 1.25.12 (irix.network.interface.out.bytes):
+ inst [1 or "et0"] value 154960710
+ inst [2 or "lo0"] value 19752688
+ 1.25.7 (irix.network.interface.in.bytes):
+ inst [1 or "et0"] value 22534841
+ inst [2 or "lo0"] value 19752688
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.453125
+ inst [5 or "5 minute"] value 1.9179688
+ inst [15 or "15 minute"] value 1.7792969
+ 1.10.54 (irix.kernel.all.ipc.sema): value 0
+ 1.10.53 (irix.kernel.all.ipc.msg): value 0
+ 1.10.29 (irix.kernel.all.writech): value 157316163
+ 1.10.19 (irix.kernel.all.syscall): value 8332101
+ 1.10.16 (irix.kernel.all.runque): value 4388
+ 1.10.15 (irix.kernel.all.runocc): value 2109
+ 1.10.14 (irix.kernel.all.readch): value 197783843
+ 1.10.12 (irix.kernel.all.cpu.wait.total): value 2481550
+ 1.10.11 (irix.kernel.all.cpu.user): value 1748450
+ 1.10.10 (irix.kernel.all.cpu.sxbrk): value 0
+ 1.10.9 (irix.kernel.all.cpu.sys): value 2215310
+ 1.10.8 (irix.kernel.all.cpu.intr): value 241150
+ 1.10.7 (irix.kernel.all.cpu.idle): value 3536037
+ 1.10.3 (irix.kernel.all.pswitch): value 4195911
+
+=== pmlogsummary ===
+pmlogsummary: Cannot locate end of archive bad: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+pmlogsummary: fetch failed: Corrupted record in a PCP archive log
+irix.kernel.all.load ["1 minute"] 0.000 none
+irix.kernel.all.load ["5 minute"] 0.000 none
+irix.kernel.all.load ["15 minute"] 0.000 none
+irix.kernel.all.pswitch - insufficient archive data.
+irix.kernel.all.readch - insufficient archive data.
+irix.kernel.all.writech - insufficient archive data.
+irix.kernel.all.runocc - insufficient archive data.
+irix.kernel.all.runque - insufficient archive data.
+irix.kernel.all.syscall - insufficient archive data.
+irix.kernel.all.cpu.idle - insufficient archive data.
+irix.kernel.all.cpu.intr - insufficient archive data.
+irix.kernel.all.cpu.sys - insufficient archive data.
+irix.kernel.all.cpu.sxbrk - insufficient archive data.
+irix.kernel.all.cpu.user - insufficient archive data.
+irix.kernel.all.cpu.wait.total - insufficient archive data.
+irix.kernel.all.ipc.msg - insufficient archive data.
+irix.kernel.all.ipc.sema - insufficient archive data.
+irix.disk.dev.read ["dks1d1"] - insufficient archive data.
+irix.disk.dev.read ["dks1d2"] - insufficient archive data.
+irix.disk.dev.read ["dks1d3"] - insufficient archive data.
+irix.disk.dev.read ["dks3d1"] - insufficient archive data.
+irix.disk.dev.read ["dks3d2"] - insufficient archive data.
+irix.disk.dev.read ["dks3d3"] - insufficient archive data.
+irix.disk.dev.read ["dks3d4"] - insufficient archive data.
+irix.disk.dev.read ["dks4d1"] - insufficient archive data.
+irix.disk.dev.read ["dks4d2"] - insufficient archive data.
+irix.disk.dev.write ["dks1d1"] - insufficient archive data.
+irix.disk.dev.write ["dks1d2"] - insufficient archive data.
+irix.disk.dev.write ["dks1d3"] - insufficient archive data.
+irix.disk.dev.write ["dks3d1"] - insufficient archive data.
+irix.disk.dev.write ["dks3d2"] - insufficient archive data.
+irix.disk.dev.write ["dks3d3"] - insufficient archive data.
+irix.disk.dev.write ["dks3d4"] - insufficient archive data.
+irix.disk.dev.write ["dks4d1"] - insufficient archive data.
+irix.disk.dev.write ["dks4d2"] - insufficient archive data.
+irix.disk.dev.total ["dks1d1"] - insufficient archive data.
+irix.disk.dev.total ["dks1d2"] - insufficient archive data.
+irix.disk.dev.total ["dks1d3"] - insufficient archive data.
+irix.disk.dev.total ["dks3d1"] - insufficient archive data.
+irix.disk.dev.total ["dks3d2"] - insufficient archive data.
+irix.disk.dev.total ["dks3d3"] - insufficient archive data.
+irix.disk.dev.total ["dks3d4"] - insufficient archive data.
+irix.disk.dev.total ["dks4d1"] - insufficient archive data.
+irix.disk.dev.total ["dks4d2"] - insufficient archive data.
+irix.network.interface.in.bytes ["et0"] - insufficient archive data.
+irix.network.interface.in.bytes ["lo0"] - insufficient archive data.
+irix.network.interface.out.bytes ["et0"] - insufficient archive data.
+irix.network.interface.out.bytes ["lo0"] - insufficient archive data.
diff --git a/qa/418 b/qa/418
new file mode 100755
index 0000000..f43b281
--- /dev/null
+++ b/qa/418
@@ -0,0 +1,69 @@
+#!/bin/sh
+# PCP QA Test No. 418
+# "default" interval for pmlogger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "expect 2 x one and 0 x million"
+echo "expect 2 x one and 0 x million" >$seq.full
+$sudo rm -f $tmp.0 $tmp.index $tmp.meta
+
+cat <<End-of-File >$tmp.config
+log mandatory on default sample.float.million
+log advisory on default sample.long.million
+log mandatory on 10 sec sample.float.one
+log advisory on 10 sec sample.long.one
+End-of-File
+
+if pmlogger -T 15sec -l $tmp.log $tmp <$tmp.config
+then
+ cat $tmp.log >>$seq.full
+else
+ echo "Arrgh, pmlogger failed ..."
+ cat $tmp.log
+ exit
+fi
+
+pmdumplog $tmp | _filter_pmdumplog | grep sample | sort -n -k2
+pmdumplog $tmp >>$seq.full
+
+echo
+echo "expect 2 x one and 4 x million"
+$sudo rm -f $tmp.0 $tmp.index $tmp.meta
+
+cat <<End-of-File >$tmp.config
+log mandatory on default sample.float.million
+log advisory on default sample.long.million
+log mandatory on 10 sec sample.float.one
+log advisory on 10 sec sample.long.one
+End-of-File
+
+if pmlogger -T 15sec -t 7 -l $tmp.log $tmp <$tmp.config
+then
+ cat $tmp.log >>$seq.full
+else
+ echo "Arrgh, pmlogger failed ..."
+ cat $tmp.log
+ exit
+fi
+
+pmdumplog $tmp | _filter_pmdumplog | grep sample | sort -n -k2
+pmdumplog $tmp >>$seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/418.out b/qa/418.out
new file mode 100644
index 0000000..3accce3
--- /dev/null
+++ b/qa/418.out
@@ -0,0 +1,12 @@
+QA output created by 418
+expect 2 x one and 0 x million
+TIMESTAMP 29.0.10 (sample.long.one): value 1
+TIMESTAMP 29.0.15 (sample.float.one): value 1
+
+expect 2 x one and 4 x million
+TIMESTAMP 29.0.10 (sample.long.one): value 1
+TIMESTAMP 29.0.13 (sample.long.million): value 1000000
+TIMESTAMP 29.0.13 (sample.long.million): value 1000000
+TIMESTAMP 29.0.15 (sample.float.one): value 1
+TIMESTAMP 29.0.18 (sample.float.million): value 1000000
+TIMESTAMP 29.0.18 (sample.float.million): value 1000000
diff --git a/qa/419 b/qa/419
new file mode 100755
index 0000000..191abf2
--- /dev/null
+++ b/qa/419
@@ -0,0 +1,166 @@
+#! /bin/sh
+# PCP QA Test No. 419
+# expand non-leaf names to pmdumplog
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix|linux|darwin)
+ ln $seq.$PCP_PLATFORM $seq.out || exit 1
+ ;;
+ solaris)
+ # same output config for Mac OS X and OpenSolaris
+ ln $seq.darwin $seq.out || exit 1
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -n \
+ -e '/No values/d' \
+ -e '/):/{
+s/):.*//
+s/.*(//
+p
+}' \
+ | LC_COLLATE=POSIX sort \
+ | uniq -c \
+ | sed -e 's/^[ ][ ]*/ /' \
+ | $here/xlate_2_new_pmns
+}
+
+$sudo rm -f $tmp.0 $tmp.index $tmp.meta
+
+if [ $PCP_PLATFORM = irix ]
+then
+ cat > $tmp.pmlogger.in <<End-of-File
+log mandatory on default {
+ kernel.all.load
+ kernel.all.pswitch
+ kernel.all.readch
+ kernel.all.writech
+ kernel.all.runocc
+ kernel.all.runque
+ kernel.all.syscall
+ kernel.all.cpu.idle
+ kernel.all.cpu.intr
+ kernel.all.cpu.sys
+ kernel.all.cpu.sxbrk
+ kernel.all.cpu.user
+ kernel.all.cpu.wait.total
+ kernel.all.ipc.msg
+ kernel.all.ipc.sema
+ disk.dev.read
+ disk.dev.write
+ disk.dev.total
+ network.interface.in.bytes
+ network.interface.out.bytes
+}
+End-of-File
+elif [ $PCP_PLATFORM = linux ]
+then
+ cat > $tmp.pmlogger.in <<End-of-File
+log mandatory on default {
+ kernel.all.load
+ kernel.all.pswitch
+ kernel.all.cpu.idle
+ kernel.all.cpu.intr
+ kernel.all.cpu.sys
+ kernel.all.cpu.user
+ kernel.all.cpu.wait.total
+ disk.dev.read
+ disk.dev.write
+ disk.dev.total
+ network.interface.in.bytes
+ network.interface.out.bytes
+}
+End-of-File
+elif [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ # same pmlogger config for Mac OS X and OpenSolaris
+ cat > $tmp.pmlogger.in <<End-of-File
+log mandatory on default {
+ kernel.all.load
+ kernel.all.cpu.idle
+ kernel.all.cpu.sys
+ kernel.all.cpu.user
+ disk.dev.read
+ disk.dev.write
+ disk.dev.total
+ network.interface.in.bytes
+ network.interface.out.bytes
+}
+End-of-File
+else
+ echo "Arrgh ... need pmlogger config for $PCP_PLATFORM"
+ exit 1
+fi
+
+pmlogger -t 2sec -T 5sec -l $tmp.log $tmp < $tmp.pmlogger.in
+
+pmdumplog $tmp | _filter >$tmp.ref
+
+cat $tmp.ref
+
+# real QA test starts here
+if [ $PCP_PLATFORM = irix ]
+then
+ for args in "kernel.all disk.dev network.interface.in network.interface.out" "kernel disk network" "kernel.all.load kernel.all.pswitch kernel.all.readch kernel.all.writech kernel.all.runocc kernel.all.runque kernel.all.syscall kernel.all.cpu.idle kernel.all.cpu.intr kernel.all.cpu.sys kernel.all.cpu.sxbrk kernel.all.cpu.user kernel.all.cpu.wait.total kernel.all.ipc.msg kernel.all.ipc.sema disk.dev.read disk.dev.write disk.dev.total network.interface.in.bytes network.interface.out.bytes"
+ do
+ echo
+ echo "=== $args ==="
+ eval pmdumplog $tmp \
+ pmcd.pmlogger.host pmcd.pmlogger.port pmcd.pmlogger.archive $args \
+ | _filter >$tmp.tmp
+ cat $tmp.tmp
+ diff $tmp.ref $tmp.tmp
+ done
+elif [ $PCP_PLATFORM = linux ]
+then
+ for args in "kernel.all disk.dev network.interface.in network.interface.out" "kernel disk network" "kernel.all.load kernel.all.pswitch kernel.all.cpu.idle kernel.all.cpu.intr kernel.all.cpu.sys kernel.all.cpu.user kernel.all.cpu.wait.total disk.dev.read disk.dev.write disk.dev.total network.interface.in.bytes network.interface.out.bytes"
+ do
+ echo
+ echo "=== $args ==="
+ eval pmdumplog $tmp \
+ pmcd.pmlogger.host pmcd.pmlogger.port pmcd.pmlogger.archive $args \
+ | _filter >$tmp.tmp
+ cat $tmp.tmp
+ diff $tmp.ref $tmp.tmp
+ done
+elif [ $PCP_PLATFORM = darwin -o $PCP_PLATFORM = solaris ]
+then
+ # same metrics for Mac OS X and OpenSolaris
+ for args in "kernel.all disk.dev network.interface.in network.interface.out" "kernel disk network" "kernel.all.load kernel.all.cpu.idle kernel.all.cpu.sys kernel.all.cpu.user disk.dev.read disk.dev.write disk.dev.total network.interface.in.bytes network.interface.out.bytes"
+ do
+ echo
+ echo "=== $args ==="
+ eval pmdumplog $tmp \
+ pmcd.pmlogger.host pmcd.pmlogger.port pmcd.pmlogger.archive $args \
+ | _filter >$tmp.tmp
+ cat $tmp.tmp
+ diff $tmp.ref $tmp.tmp
+ done
+else
+ echo "Arrgh ... need pmdumplog args for $PCP_PLATFORM"
+ exit 1
+fi
+
+status=0
+exit
diff --git a/qa/419.darwin b/qa/419.darwin
new file mode 100644
index 0000000..4369076
--- /dev/null
+++ b/qa/419.darwin
@@ -0,0 +1,55 @@
+QA output created by 419
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.load
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel.all disk.dev network.interface.in network.interface.out ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.load
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel disk network ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.load
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel.all.load kernel.all.cpu.idle kernel.all.cpu.sys kernel.all.cpu.user disk.dev.read disk.dev.write disk.dev.total network.interface.in.bytes network.interface.out.bytes ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.load
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
diff --git a/qa/419.irix b/qa/419.irix
new file mode 100644
index 0000000..85ad657
--- /dev/null
+++ b/qa/419.irix
@@ -0,0 +1,99 @@
+QA output created by 419
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sxbrk
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.ipc.msg
+ 2 kernel.all.ipc.sema
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 kernel.all.readch
+ 2 kernel.all.runocc
+ 2 kernel.all.runque
+ 2 kernel.all.syscall
+ 2 kernel.all.writech
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel.all disk.dev network.interface.in network.interface.out ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sxbrk
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.ipc.msg
+ 2 kernel.all.ipc.sema
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 kernel.all.readch
+ 2 kernel.all.runocc
+ 2 kernel.all.runque
+ 2 kernel.all.syscall
+ 2 kernel.all.writech
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel disk network ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sxbrk
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.ipc.msg
+ 2 kernel.all.ipc.sema
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 kernel.all.readch
+ 2 kernel.all.runocc
+ 2 kernel.all.runque
+ 2 kernel.all.syscall
+ 2 kernel.all.writech
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel.all.load kernel.all.pswitch kernel.all.readch kernel.all.writech kernel.all.runocc kernel.all.runque kernel.all.syscall kernel.all.cpu.idle kernel.all.cpu.intr kernel.all.cpu.sys kernel.all.cpu.sxbrk kernel.all.cpu.user kernel.all.cpu.wait.total kernel.all.ipc.msg kernel.all.ipc.sema disk.dev.read disk.dev.write disk.dev.total network.interface.in.bytes network.interface.out.bytes ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sxbrk
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.ipc.msg
+ 2 kernel.all.ipc.sema
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 kernel.all.readch
+ 2 kernel.all.runocc
+ 2 kernel.all.runque
+ 2 kernel.all.syscall
+ 2 kernel.all.writech
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
diff --git a/qa/419.linux b/qa/419.linux
new file mode 100644
index 0000000..8305ca1
--- /dev/null
+++ b/qa/419.linux
@@ -0,0 +1,67 @@
+QA output created by 419
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel.all disk.dev network.interface.in network.interface.out ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel disk network ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
+
+=== kernel.all.load kernel.all.pswitch kernel.all.cpu.idle kernel.all.cpu.intr kernel.all.cpu.sys kernel.all.cpu.user kernel.all.cpu.wait.total disk.dev.read disk.dev.write disk.dev.total network.interface.in.bytes network.interface.out.bytes ===
+ 2 disk.dev.read
+ 2 disk.dev.total
+ 2 disk.dev.write
+ 2 kernel.all.cpu.idle
+ 2 kernel.all.cpu.intr
+ 2 kernel.all.cpu.sys
+ 2 kernel.all.cpu.user
+ 2 kernel.all.cpu.wait.total
+ 2 kernel.all.load
+ 2 kernel.all.pswitch
+ 2 network.interface.in.bytes
+ 2 network.interface.out.bytes
+ 1 pmcd.pmlogger.archive
+ 1 pmcd.pmlogger.host
+ 1 pmcd.pmlogger.port
diff --git a/qa/420 b/qa/420
new file mode 100755
index 0000000..4d15ded
--- /dev/null
+++ b/qa/420
@@ -0,0 +1,39 @@
+#! /bin/sh
+# PCP QA Test No. 420
+#
+# exercise pmRecord*() and in particular the new PM_REC_SETARG for
+# pmRecordControl
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+echo "Not yet working - libpcp_gui recording" > $seq.notrun
+exit 0
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+$sudo rm -rf $tmp
+mkdir $tmp
+cd $tmp
+
+# real QA test starts here
+echo "IPC error is expected as application waits until after pmlogger"
+echo "should be well finished ..."
+echo
+
+$here/src/record-setarg foo
+
+pmdumplog *.0 sample | _filter_pmdumplog
+
+# success, all done
+status=0
+exit
diff --git a/qa/420.out b/qa/420.out
new file mode 100644
index 0000000..2328f99
--- /dev/null
+++ b/qa/420.out
@@ -0,0 +1,48 @@
+QA output created by 420
+IPC error is expected as application waits until after pmlogger
+should be well finished ...
+
+
+sleeping ...
+
+pmRecordControl(..., PM_REC_OFF, ...): IPC protocol failure
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
+
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [400 or "bin-400"] value 400
+ inst [800 or "bin-800"] value 800
diff --git a/qa/421 b/qa/421
new file mode 100755
index 0000000..ba97efd
--- /dev/null
+++ b/qa/421
@@ -0,0 +1,56 @@
+#! /bin/sh
+# PCP QA Test No. 421
+# verifies pmtraceabort functionality
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ cd $here
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ exit $status
+}
+
+status=1 # failure is the default!
+trap "_cleanup" 0 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+pminfo trace >/dev/null 2>&1
+remove=$?
+
+_filter_trace_install()
+{
+ # some warnings are *expected* - no trace values yet
+ _filter_pmda_install | sed \
+ -e 's/ *[0-9]+ warnings,//g'
+}
+
+cd $PCP_PMDAS_DIR/trace
+$sudo ./Install -R / </dev/null 2>&1 | _filter_trace_install
+_wait_for_pmcd
+
+# real QA test starts here
+pminfo -f trace.transact.count
+$here/src/tabort
+status=$?
+pminfo -f trace.transact.count
+
+[ $remove -eq 1 ] && $sudo $PCP_PMDAS_DIR/trace/Remove >/dev/null 2>&1
+
+exit
diff --git a/qa/421.out b/qa/421.out
new file mode 100644
index 0000000..1cf6541
--- /dev/null
+++ b/qa/421.out
@@ -0,0 +1,17 @@
+QA output created by 421
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+trace.transact.count
+No value(s) available!
+
+trace.transact.count
+ inst [1 or "foo"] value 1
diff --git a/qa/422 b/qa/422
new file mode 100755
index 0000000..7e7fa5a
--- /dev/null
+++ b/qa/422
@@ -0,0 +1,47 @@
+#!/bin/sh
+# PCP QA Test No. 422
+# pmStore(3) with changed pmAtomValue encoding for PM_TYPE_AGGREGATE
+# pmstore(1) with PM_TYPE_STRING
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+endian=`_get_endian`
+ln $seq.out.$endian $seq.out
+
+# sane starting point
+src/aggrstore sample.aggregate.write_me 13 >/dev/null
+src/aggrstore sampledso.aggregate.write_me 13 >/dev/null
+pmstore sample.string.write_me 13 >/dev/null
+pmstore sampledso.string.write_me 13 >/dev/null
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for val in "" A AB ABC ABCD ABCDE "mary had a little lamb"
+do
+ src/aggrstore sample.aggregate.write_me "$val"
+ src/aggrstore sampledso.aggregate.write_me "$val"
+ pmstore sample.string.write_me "$val"
+ pmstore sampledso.string.write_me "$val"
+done
+
+# restore sanity
+src/aggrstore sample.aggregate.write_me 13 >/dev/null
+src/aggrstore sampledso.aggregate.write_me 13 >/dev/null
+pmstore sample.string.write_me 13 >/dev/null
+pmstore sampledso.string.write_me 13 >/dev/null
+
+# success, all done
+exit
diff --git a/qa/422.out.be b/qa/422.out.be
new file mode 100644
index 0000000..348c2ea
--- /dev/null
+++ b/qa/422.out.be
@@ -0,0 +1,29 @@
+QA output created by 422
+sample.aggregate.write_me old value: "13" [3133] new value: "" []
+sampledso.aggregate.write_me old value: "13" [3133] new value: "" []
+sample.string.write_me old value="13" new value=""
+sampledso.string.write_me old value="13" new value=""
+sample.aggregate.write_me old value: "" [] new value: "A" [41]
+sampledso.aggregate.write_me old value: "" [] new value: "A" [41]
+sample.string.write_me old value="" new value="A"
+sampledso.string.write_me old value="" new value="A"
+sample.aggregate.write_me old value: "A" [41] new value: "AB" [4142]
+sampledso.aggregate.write_me old value: "A" [41] new value: "AB" [4142]
+sample.string.write_me old value="A" new value="AB"
+sampledso.string.write_me old value="A" new value="AB"
+sample.aggregate.write_me old value: "AB" [4142] new value: "ABC" [414243]
+sampledso.aggregate.write_me old value: "AB" [4142] new value: "ABC" [414243]
+sample.string.write_me old value="AB" new value="ABC"
+sampledso.string.write_me old value="AB" new value="ABC"
+sample.aggregate.write_me old value: "ABC" [414243] new value: 12.141422 "ABCD" [41424344]
+sampledso.aggregate.write_me old value: "ABC" [414243] new value: 12.141422 "ABCD" [41424344]
+sample.string.write_me old value="ABC" new value="ABCD"
+sampledso.string.write_me old value="ABC" new value="ABCD"
+sample.aggregate.write_me old value: 12.141422 "ABCD" [41424344] new value: "ABCDE" [4142434445]
+sampledso.aggregate.write_me old value: 12.141422 "ABCD" [41424344] new value: "ABCDE" [4142434445]
+sample.string.write_me old value="ABCD" new value="ABCDE"
+sampledso.string.write_me old value="ABCD" new value="ABCDE"
+sample.aggregate.write_me old value: "ABCDE" [4142434445] new value: "mary had a little lamb" [6d617279206861642061206c6974746c65206c616d62]
+sampledso.aggregate.write_me old value: "ABCDE" [4142434445] new value: "mary had a little lamb" [6d617279206861642061206c6974746c65206c616d62]
+sample.string.write_me old value="ABCDE" new value="mary had a little lamb"
+sampledso.string.write_me old value="ABCDE" new value="mary had a little lamb"
diff --git a/qa/422.out.le b/qa/422.out.le
new file mode 100644
index 0000000..5697a92
--- /dev/null
+++ b/qa/422.out.le
@@ -0,0 +1,29 @@
+QA output created by 422
+sample.aggregate.write_me old value: "13" [3133] new value: "" []
+sampledso.aggregate.write_me old value: "13" [3133] new value: "" []
+sample.string.write_me old value="13" new value=""
+sampledso.string.write_me old value="13" new value=""
+sample.aggregate.write_me old value: "" [] new value: "A" [41]
+sampledso.aggregate.write_me old value: "" [] new value: "A" [41]
+sample.string.write_me old value="" new value="A"
+sampledso.string.write_me old value="" new value="A"
+sample.aggregate.write_me old value: "A" [41] new value: "AB" [4142]
+sampledso.aggregate.write_me old value: "A" [41] new value: "AB" [4142]
+sample.string.write_me old value="A" new value="AB"
+sampledso.string.write_me old value="A" new value="AB"
+sample.aggregate.write_me old value: "AB" [4142] new value: "ABC" [414243]
+sampledso.aggregate.write_me old value: "AB" [4142] new value: "ABC" [414243]
+sample.string.write_me old value="AB" new value="ABC"
+sampledso.string.write_me old value="AB" new value="ABC"
+sample.aggregate.write_me old value: "ABC" [414243] new value: 781.03522 "ABCD" [41424344]
+sampledso.aggregate.write_me old value: "ABC" [414243] new value: 781.03522 "ABCD" [41424344]
+sample.string.write_me old value="ABC" new value="ABCD"
+sampledso.string.write_me old value="ABC" new value="ABCD"
+sample.aggregate.write_me old value: 781.03522 "ABCD" [41424344] new value: "ABCDE" [4142434445]
+sampledso.aggregate.write_me old value: 781.03522 "ABCD" [41424344] new value: "ABCDE" [4142434445]
+sample.string.write_me old value="ABCD" new value="ABCDE"
+sampledso.string.write_me old value="ABCD" new value="ABCDE"
+sample.aggregate.write_me old value: "ABCDE" [4142434445] new value: "mary had a little lamb" [6d617279206861642061206c6974746c65206c616d62]
+sampledso.aggregate.write_me old value: "ABCDE" [4142434445] new value: "mary had a little lamb" [6d617279206861642061206c6974746c65206c616d62]
+sample.string.write_me old value="ABCDE" new value="mary had a little lamb"
+sampledso.string.write_me old value="ABCDE" new value="mary had a little lamb"
diff --git a/qa/423 b/qa/423
new file mode 100755
index 0000000..9c52bec
--- /dev/null
+++ b/qa/423
@@ -0,0 +1,24 @@
+#!/bin/sh
+# PCP QA Test No. 423
+# Check pmAtomStr
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+src/atomstr
+
+# success, all done
+exit
diff --git a/qa/423.out b/qa/423.out
new file mode 100644
index 0000000..47eb763
--- /dev/null
+++ b/qa/423.out
@@ -0,0 +1,33 @@
+QA output created by 423
+-42 -> -42
+2147483648 -> 2147483648
+-1234567890123 -> -1234567890123
+9223372036854775808 -> 9223372036854775808
+123.456 -> 1.234560e+02
+0.123456789 -> 1.234568e-01
+mary had a little lamb-> "mary had a little lamb"
+(null)-> <null>
+abcdefghijklmnopqrstuvwxyz0123456789X -> "abcdefghijklmnopqrstuvwxyz0123456789X"
+abcdefghijklmnopqrstuvwxyz0123456789XYZ -> "abcdefghijklmnopqrstuvwxyz01234567..."
+??? -> [0 event records]
+??? -> [1 event record]
+??? -> [2 event records]
+??? -> [0 event records]
+??? -> [1 event record]
+??? -> [2 event records]
+??? -> [type=AGGREGATE_STATIC len=16] 00010203 04050607 08090a0b ...
+??? [len=0] -> [type=AGGREGATE len=0]
+??? [len=2] -> [type=AGGREGATE len=2] 0001
+??? [len=4] -> [type=AGGREGATE len=4] 00010203
+??? [len=6] -> [type=AGGREGATE len=6] 00010203 0405
+??? [len=8] -> [type=AGGREGATE len=8] 00010203 04050607
+??? [len=10] -> [type=AGGREGATE len=10] 00010203 04050607 0809
+??? [len=12] -> [type=AGGREGATE len=12] 00010203 04050607 08090a0b
+??? [len=14] -> [type=AGGREGATE len=14] 00010203 04050607 08090a0b ...
+??? [len=16] -> [type=AGGREGATE len=16] 00010203 04050607 08090a0b ...
+NULL -> <null>
+
+And now some error cases ...
+bad type -> Error: unexpected type: Illegal type=123
+no support type -> Error: unexpected type: Not Supported
+unknown type -> Error: unexpected type: Unknown
diff --git a/qa/424 b/qa/424
new file mode 100755
index 0000000..97cce3d
--- /dev/null
+++ b/qa/424
@@ -0,0 +1,53 @@
+#! /bin/sh
+# PCP QA Test No. 424
+# Test out instance handling for pmlogsummary
+#
+# Copyright (c) 2010 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/^pmcd.pmlogger.port/d'
+}
+
+# real QA test starts here
+
+echo
+echo "Every metric, every instance"
+pmlogsummary src/bar | _filter
+echo
+
+echo "Single noindom metric, no instances"
+pmlogsummary src/bar 'sampledso.milliseconds'
+echo
+
+echo "Single noindom metric, bad instances"
+pmlogsummary src/bar 'sampledso.milliseconds[bad]'
+echo
+
+echo "Single indom metric, all instances"
+pmlogsummary src/bar 'sampledso.bin'
+echo
+
+echo "Single indom metric, one instance"
+pmlogsummary src/bar 'sampledso.bin[bin-900]'
+echo
+
+echo "Single indom metric, bad instance"
+pmlogsummary src/bar 'sampledso.bin[bad]'
+echo
+
+# success, all done
+status=0
+exit
diff --git a/qa/424.out b/qa/424.out
new file mode 100644
index 0000000..243033b
--- /dev/null
+++ b/qa/424.out
@@ -0,0 +1,23 @@
+QA output created by 424
+
+Every metric, every instance
+sampledso.milliseconds 1.000 none
+sampledso.bin ["bin-100"] 100.000 none
+sampledso.bin ["bin-500"] 500.000 none
+sampledso.bin ["bin-900"] 900.000 none
+
+Single noindom metric, no instances
+sampledso.milliseconds 1.000 none
+
+Single noindom metric, bad instances
+
+Single indom metric, all instances
+sampledso.bin ["bin-100"] 100.000 none
+sampledso.bin ["bin-500"] 500.000 none
+sampledso.bin ["bin-900"] 900.000 none
+
+Single indom metric, one instance
+sampledso.bin ["bin-900"] 900.000 none
+
+Single indom metric, bad instance
+
diff --git a/qa/425 b/qa/425
new file mode 100755
index 0000000..fa0a4af
--- /dev/null
+++ b/qa/425
@@ -0,0 +1,137 @@
+#! /bin/sh
+# PCP QA Test No. 425
+# Test out wrapping for pmlogsummary
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_wrap_off()
+{
+ wrap=0
+ unset PCP_COUNTER_WRAP
+ echo "--- Wrapping OFF ---"
+}
+
+_wrap_on()
+{
+ wrap=1
+ PCP_COUNTER_WRAP=
+ export PCP_COUNTER_WRAP
+ echo "--- Wrapping ON ---"
+}
+
+_calc_stats()
+{
+ _archive=$1
+ _metric=$2
+ _wrap=$3
+ pmdumplog $_archive $_metric \
+ | sed -n -e "/($2)/"'{
+ s/:/ /
+ s/:/ /
+ p
+ }' \
+ | $PCP_AWK_PROG -v wrap=$_wrap '
+ BEGIN { maxuint=4294967295 ; print "wrap =", wrap}
+ NR==1 { hr=$1; min=$2; offset=0; seen=0 }
+ $1 != hr || $2 != min { offset+=60*(60*(hr-$1)+(min-$2))
+ hr=$1; min=$2
+ }
+ { t=offset+$3 }
+ { printf $1 ":" $2 ":" $3 " value " $7 }
+ NR>1 {
+ newv = $7
+ printf " delta(t)=" t-lastt
+ printf " delta(v)=" newv-lastv
+ print ""
+ if (newv < lastv && wrap == 1) {
+ newv += maxuint;
+ }
+ rate=(newv-lastv)/(t-lastt)
+ printf " rate=%f",rate
+ if (rate > 0) {
+ avr += rate
+ count++
+ if (seen == 0) {
+ minr = rate
+ maxr = rate
+ seen = 1
+ }
+ else {
+ if (rate > maxr) maxr=rate
+ if (rate < minr) minr=rate
+ }
+ }
+ else
+ printf " ... SKIP"
+ }
+ { print ""; lastt=t; lastv=$7 }
+ END { print ""
+ printf "avg-rate: %f\n",avr/count
+ printf "max-rate: %f\n",maxr
+ printf "min-rate: %f\n",minr
+ }'
+}
+
+_compare_results()
+{
+ results=$1
+ $PCP_AWK_PROG '
+ function stat_match(val1, val2, label) {
+ if (val1-tolerance <= val2 && val2 <= val1+tolerance) {
+ print "matches on", label;
+ }
+ else {
+ print "mismatches on", label;
+ print "mismatch between:", val1, "and", val2;
+ }
+ }
+ BEGIN { tolerance = 1e7 }
+ /avg-rate/ { avg_rate = $2; next; }
+ /max-rate/ { max_rate = $2; next; }
+ /min-rate/ { min_rate = $2; next; }
+ /sample.wrap.long/ {
+ summary_stoch_avg = $2;
+ summary_time_avg = $3;
+ summary_min = $4;
+ summary_max = $5;
+ stat_match(avg_rate, summary_stoch_avg, "average");
+ stat_match(min_rate, summary_min, "minimum");
+ stat_match(max_rate, summary_max, "maximum");
+ }
+ /SKIP/ { print "wrap detected"; }
+ ' $results
+}
+
+# real QA test starts here
+
+archive="src/wrap"
+metric="sample.wrap.long"
+
+_wrap_off > $seq.full
+_calc_stats $archive $metric $wrap >> $seq.full
+pmlogsummary -bmM $archive $metric >> $seq.full
+
+_wrap_on >> $seq.full
+_calc_stats $archive $metric $wrap >> $seq.full
+pmlogsummary -bmM $archive $metric >> $seq.full
+
+_compare_results $seq.full
+
+echo
+echo "If failure, check $seq.full"
+
+# success, all done
+status=0
+exit
diff --git a/qa/425.out b/qa/425.out
new file mode 100644
index 0000000..8e9c624
--- /dev/null
+++ b/qa/425.out
@@ -0,0 +1,11 @@
+QA output created by 425
+wrap detected
+wrap detected
+matches on average
+matches on minimum
+matches on maximum
+matches on average
+matches on minimum
+matches on maximum
+
+If failure, check 425.full
diff --git a/qa/426 b/qa/426
new file mode 100755
index 0000000..0f9dd38
--- /dev/null
+++ b/qa/426
@@ -0,0 +1,121 @@
+#! /bin/sh
+# PCP QA Test No. 426
+# tests trace PMDA reset capability
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ if $_needclean
+ then
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo trace >/dev/null 2>&1 && install_on_cleanup=true
+
+status=1 # failure is the default!
+_needclean=true
+trap "_cleanup" 0 1 2 3 15
+
+if $install_on_cleanup
+then
+ : pmda already installed
+else
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Install </dev/null >/dev/null 2>&1 )
+fi
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+_traceme()
+{
+ pmtrace $traceargs foo
+ pmtrace $traceargs bar
+ pmtrace $traceargs eek
+ echo
+ echo 'SHOULD SEE 1="foo", 2="bar", 3="eek" ...'
+ pminfo -f trace.$traceindom.count
+
+ echo
+ echo "Resetting trace metrics ($traceindom #1)"
+ pmstore trace.control.reset 1
+ echo
+ echo 'SHOULD SEE NO VALUES ...'
+ pminfo -f trace.$traceindom.count
+
+ pmtrace $traceargs eek
+ pmtrace $traceargs bar
+ echo
+ echo 'SHOULD SEE 2="bar", 3="eek" ...'
+ pminfo -f trace.$traceindom.count
+
+ echo
+ echo "Resetting trace metrics ($traceindom #2)"
+ pmstore trace.control.reset 1
+ echo
+ echo 'SHOULD SEE NO VALUES ...'
+ pminfo -f trace.$traceindom.count
+
+ pmtrace $traceargs new
+ pmtrace $traceargs foo
+ # should see 1=foo, 4=new
+ echo
+ echo 'SHOULD SEE 1="foo", 4="new" ...'
+ pminfo -f trace.$traceindom.count
+}
+
+# real QA test starts here
+$sudo $PCP_RC_DIR/pcp restart \
+| _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+# test the point instance domain reset
+traceindom="point"
+traceargs=""
+echo
+echo "--- Testing trace.point metrics ---"
+_traceme
+
+# test the observation instance domain reset
+traceindom="observe"
+traceargs="-v 1"
+echo
+echo "--- Testing trace.observe metrics ---"
+_traceme
+
+# test the transaction instance domain reset
+traceindom="transact"
+traceargs="-e exit"
+echo
+echo "--- Testing trace.transact metrics ---"
+_traceme
+
+# success, all done
+status=0
+exit
diff --git a/qa/426.out b/qa/426.out
new file mode 100644
index 0000000..9d67b3b
--- /dev/null
+++ b/qa/426.out
@@ -0,0 +1,136 @@
+QA output created by 426
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+--- Testing trace.point metrics ---
+pmtrace: point complete (tag="foo")
+pmtrace: point complete (tag="bar")
+pmtrace: point complete (tag="eek")
+
+SHOULD SEE 1="foo", 2="bar", 3="eek" ...
+
+trace.point.count
+ inst [1 or "foo"] value 1
+ inst [2 or "bar"] value 1
+ inst [3 or "eek"] value 1
+
+Resetting trace metrics (point #1)
+trace.control.reset old value=1 new value=1
+
+SHOULD SEE NO VALUES ...
+
+trace.point.count
+No value(s) available!
+pmtrace: point complete (tag="eek")
+pmtrace: point complete (tag="bar")
+
+SHOULD SEE 2="bar", 3="eek" ...
+
+trace.point.count
+ inst [2 or "bar"] value 1
+ inst [3 or "eek"] value 1
+
+Resetting trace metrics (point #2)
+trace.control.reset old value=1 new value=1
+
+SHOULD SEE NO VALUES ...
+
+trace.point.count
+No value(s) available!
+pmtrace: point complete (tag="new")
+pmtrace: point complete (tag="foo")
+
+SHOULD SEE 1="foo", 4="new" ...
+
+trace.point.count
+ inst [1 or "foo"] value 1
+ inst [4 or "new"] value 1
+
+--- Testing trace.observe metrics ---
+pmtrace: observation complete (tag="foo", value=1.000000)
+pmtrace: observation complete (tag="bar", value=1.000000)
+pmtrace: observation complete (tag="eek", value=1.000000)
+
+SHOULD SEE 1="foo", 2="bar", 3="eek" ...
+
+trace.observe.count
+ inst [1 or "foo"] value 1
+ inst [2 or "bar"] value 1
+ inst [3 or "eek"] value 1
+
+Resetting trace metrics (observe #1)
+trace.control.reset old value=1 new value=1
+
+SHOULD SEE NO VALUES ...
+
+trace.observe.count
+No value(s) available!
+pmtrace: observation complete (tag="eek", value=1.000000)
+pmtrace: observation complete (tag="bar", value=1.000000)
+
+SHOULD SEE 2="bar", 3="eek" ...
+
+trace.observe.count
+ inst [2 or "bar"] value 1
+ inst [3 or "eek"] value 1
+
+Resetting trace metrics (observe #2)
+trace.control.reset old value=1 new value=1
+
+SHOULD SEE NO VALUES ...
+
+trace.observe.count
+No value(s) available!
+pmtrace: observation complete (tag="new", value=1.000000)
+pmtrace: observation complete (tag="foo", value=1.000000)
+
+SHOULD SEE 1="foo", 4="new" ...
+
+trace.observe.count
+ inst [1 or "foo"] value 1
+ inst [4 or "new"] value 1
+
+--- Testing trace.transact metrics ---
+pmtrace: transaction complete (tag="foo")
+pmtrace: transaction complete (tag="bar")
+pmtrace: transaction complete (tag="eek")
+
+SHOULD SEE 1="foo", 2="bar", 3="eek" ...
+
+trace.transact.count
+ inst [1 or "foo"] value 1
+ inst [2 or "bar"] value 1
+ inst [3 or "eek"] value 1
+
+Resetting trace metrics (transact #1)
+trace.control.reset old value=1 new value=1
+
+SHOULD SEE NO VALUES ...
+
+trace.transact.count
+No value(s) available!
+pmtrace: transaction complete (tag="eek")
+pmtrace: transaction complete (tag="bar")
+
+SHOULD SEE 2="bar", 3="eek" ...
+
+trace.transact.count
+ inst [2 or "bar"] value 1
+ inst [3 or "eek"] value 1
+
+Resetting trace metrics (transact #2)
+trace.control.reset old value=1 new value=1
+
+SHOULD SEE NO VALUES ...
+
+trace.transact.count
+No value(s) available!
+pmtrace: transaction complete (tag="new")
+pmtrace: transaction complete (tag="foo")
+
+SHOULD SEE 1="foo", 4="new" ...
+
+trace.transact.count
+ inst [1 or "foo"] value 1
+ inst [4 or "new"] value 1
diff --git a/qa/427 b/qa/427
new file mode 100755
index 0000000..4320763
--- /dev/null
+++ b/qa/427
@@ -0,0 +1,110 @@
+#! /bin/sh
+# PCP QA Test No. 427
+# bogus pmda entries in pmcd.conf
+# #564017
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ -z "$PCP_PMCDCONF_PATH" ] ; then
+ echo eek; exit 1;
+fi
+
+if [ -z "$PCP_PMCDLOG_PATH" ] ; then
+ echo yuk; exit 1;
+fi
+status=1 # failure is the default!
+needclean=true
+
+[ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+
+trap "_cleanup" 0 1 2 3 15
+
+_cleanup()
+{
+ if $needclean
+ then
+ if [ -s $tmp.pmcd.conf ]
+ then
+ $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ fi
+ [ -f $tmp.control ] && \
+ $sudo cp $tmp.control $PCP_PMLOGGERCONTROL_PATH
+ needclean=false
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+
+ # make sure bogus has gone away
+ echo
+ echo "Anything below here may indicate that bogus has not gone away:"
+ grep bogus $PCP_PMCDCONF_PATH
+ pminfo -f pmcd.agent | grep bogus
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+# real QA test starts here
+
+# disable all pmloggers ...
+$sudo cp $PCP_PMLOGGERCONTROL_PATH $tmp.control
+cat <<End-of-File >$tmp.tmp
+# dummy file created by qa/$seq on `date`
+# the goal here is to have a controlled primary logger that does
+# not make requests to pmcd!
+\$version=1.1
+LOCALHOSTNAME y n $PCP_LOG_DIR/pmlogger/LOCALHOSTNAME -c /dev/null
+End-of-File
+$sudo cp $tmp.tmp $PCP_PMLOGGERCONTROL_PATH
+
+# backup $PCP_PMCDCONF_PATH
+$sudo cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# add bogus entry
+$PCP_AWK_PROG < $PCP_PMCDCONF_PATH > $tmp.pmcd.new -v seq="$seq" -v path="$tmp.bogus.pmda" '
+function printline()
+{
+ printf("# Added by QA test %s\n", seq);
+ printf("bogus 169 pipe binary %s\n", path);
+}
+
+BEGIN { flag = 0 }
+$1 == "[access]" { printline(); print; flag = 1; next }
+ { print }
+END { if (flag == 0) printline(); }'
+
+# copy the new config
+$sudo cp $tmp.pmcd.new $PCP_PMCDCONF_PATH
+
+# restart pmcd
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+# check that pmcd reported the agent as an error
+echo
+echo "errors for bogus in $PCP_PMCDLOG_PATH:" \
+| sed -e"s|$PCP_PMCDLOG_PATH|/var/adm/pcplog/pmcd.log|"
+egrep "^pmcd:" $PCP_PMCDLOG_PATH \
+| grep bogus \
+| sed -e "s#$tmp\.##"
+
+# check that the pmcd.agent.status metric is correct
+echo
+echo "pmcd agent metrics for bogus:"
+pminfo -f pmcd.agent.type | egrep '^pmcd|bogus'
+pminfo -f pmcd.agent.status | egrep '^pmcd|bogus'
+echo
+
+# success, all done
+status=0
+exit
+
diff --git a/qa/427.out b/qa/427.out
new file mode 100644
index 0000000..97c2d50
--- /dev/null
+++ b/qa/427.out
@@ -0,0 +1,20 @@
+QA output created by 427
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+errors for bogus in /var/adm/pcplog/pmcd.log:
+pmcd: error starting bogus.pmda: No such file or directory
+pmcd: unexpected end-of-file at initial exchange with bogus PMDA
+
+pmcd agent metrics for bogus:
+pmcd.agent.type
+ inst [169 or "bogus"] value 4
+pmcd.agent.status
+ inst [169 or "bogus"] value 4
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+Anything below here may indicate that bogus has not gone away:
diff --git a/qa/428 b/qa/428
new file mode 100755
index 0000000..6a43102
--- /dev/null
+++ b/qa/428
@@ -0,0 +1,112 @@
+#! /bin/sh
+# PCP QA Test No. 428
+# interp mode problems with PM_SEM_INSTANT metric, see #564535
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+rm -f $seq.full
+
+_set()
+{
+ for m in long longlong float double string aggregate
+ do
+ pmstore sample.$m.write_me $1 >/dev/null
+ done
+}
+
+_filter()
+{
+ # second sed is for endian variations
+ #
+ sed \
+ -e '/^metric:/d' \
+ -e '/^archive:/d' \
+ -e '/^host:/d' \
+ -e '/^start:/d' \
+ -e '/^end:/d' \
+ -e '/^semantics:/d' \
+ -e '/^units:/d' \
+ -e '/^samples:/d' \
+ -e '/^interval:/d' \
+ -e '/No values available/d' \
+ -e '/End of PCP archive log/d' \
+ | $PCP_AWK_PROG '
+NF == 2 { print $2; next }
+NF == 3 { print $3; next }
+NF > 0 { print }' \
+ | sed \
+ -e 's/\[00010000]/[00000100]/' \
+ -e 's/\[00040000]/[00000400]/' \
+ -e 's/\[00100000]/[00001000]/' \
+ -e 's/\[10000000]/[00000010]/' \
+ | LC_COLLATE=POSIX sort -u
+}
+
+# real QA test starts here
+_set 1024
+
+cat <<End-of-File >$tmp.config
+log mandatory on 500msec {
+ sample.long.write_me
+ sample.longlong.write_me
+ sample.float.write_me
+ sample.double.write_me
+ sample.string.write_me
+ sample.aggregate.write_me
+}
+End-of-File
+
+pmlogger <$tmp.config -l $tmp.log -T 10sec $tmp &
+
+sleep 2
+
+_set 4096
+
+sleep 2
+
+_set 256
+
+sleep 2
+
+_set 16
+
+wait
+
+cat $tmp.log >$seq.full
+
+echo "----------------------------"
+echo "Raw data (pmval -U)"
+echo "----------------------------"
+for m in long longlong float double string aggregate
+do
+ echo
+ echo "Unique values for sample.$m.write_me ..."
+ pmval -U $tmp sample.$m.write_me 2>&1 | tee -a $seq.full | _filter
+done
+
+echo
+echo "----------------------------"
+echo "Interpolated data (pmval -a)"
+echo "----------------------------"
+for m in long longlong float double string aggregate
+do
+ echo
+ echo "Unique values for sample.$m.write_me ..."
+ pmval -t 0.25sec -a $tmp sample.$m.write_me 2>&1 | tee -a $seq.full | _filter
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/428.out b/qa/428.out
new file mode 100644
index 0000000..a5014b1
--- /dev/null
+++ b/qa/428.out
@@ -0,0 +1,78 @@
+QA output created by 428
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+pmstore: Cannot modify values for PM_TYPE_AGGREGATE metrics
+----------------------------
+Raw data (pmval -U)
+----------------------------
+
+Unique values for sample.long.write_me ...
+1024
+16
+256
+4096
+
+Unique values for sample.longlong.write_me ...
+1024
+16
+256
+4096
+
+Unique values for sample.float.write_me ...
+1024.
+16.00
+256.0
+4096.
+
+Unique values for sample.double.write_me ...
+1024.
+16.00
+256.0
+4096.
+
+Unique values for sample.string.write_me ...
+"1024"
+"16"
+"256"
+"4096"
+
+Unique values for sample.aggregate.write_me ...
+[3133]
+
+----------------------------
+Interpolated data (pmval -a)
+----------------------------
+
+Unique values for sample.long.write_me ...
+1024
+16
+256
+4096
+
+Unique values for sample.longlong.write_me ...
+1024
+16
+256
+4096
+
+Unique values for sample.float.write_me ...
+1024.
+16.00
+256.0
+4096.
+
+Unique values for sample.double.write_me ...
+1024.
+16.00
+256.0
+4096.
+
+Unique values for sample.string.write_me ...
+"1024"
+"16"
+"256"
+"4096"
+
+Unique values for sample.aggregate.write_me ...
+[3133]
diff --git a/qa/429 b/qa/429
new file mode 100755
index 0000000..a925c11
--- /dev/null
+++ b/qa/429
@@ -0,0 +1,71 @@
+#! /bin/sh
+# PCP QA Test No. 429
+#
+# Tests problem where Rebuild could accidently #include files from /tmp
+# rather than the current directory.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1 # failure is the default!
+trap "rm -rf $tmp.* /tmp/abc.$$; exit \$status" 0 1 2 3 15
+
+_copy_Rebuild()
+{
+ scr_src=$PCP_VAR_DIR/pmns/
+ cp $scr_src/Rebuild $1
+ if [ -f $scr_src/Xlate-irix-names ]
+ then
+ cp $scr_src/Xlate-irix-names $1
+ fi
+}
+
+# real QA test starts here
+
+rm -rf $tmp.dir /tmp/abc.$$
+mkdir $tmp.dir
+cd $tmp.dir
+
+cat <<EOFEOF >root
+root {
+#include "abc.$$"
+}
+EOFEOF
+
+echo "valid_metric 0:0:1" >abc.$$
+
+echo "!bozo" >/tmp/abc.$$
+
+_copy_Rebuild .
+$sudo ./Rebuild -v \
+| sed \
+ -e 's;/private/;/;' \
+ -e "s;$tmp.dir;TMPDIR;" 2>&1
+if [ $PCP_VER -lt 3600 ]
+then
+ pminfo -mn root.bin
+ status=$?
+else
+ pminfo -mn root
+ status=$?
+fi
+
+# success, all done
+cd $here
+exit
diff --git a/qa/429.out.1 b/qa/429.out.1
new file mode 100644
index 0000000..0c6767c
--- /dev/null
+++ b/qa/429.out.1
@@ -0,0 +1,6 @@
+QA output created by 429
+Rebuilding the Performance Metrics Name Space (PMNS) in TMPDIR ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+valid_metric PMID: 0.0.1
diff --git a/qa/429.out.2 b/qa/429.out.2
new file mode 100644
index 0000000..0c6767c
--- /dev/null
+++ b/qa/429.out.2
@@ -0,0 +1,6 @@
+QA output created by 429
+Rebuilding the Performance Metrics Name Space (PMNS) in TMPDIR ...
+Rebuild: merging the following PMNS files:
+root
+Rebuild: PMNS is unchanged.
+valid_metric PMID: 0.0.1
diff --git a/qa/430 b/qa/430
new file mode 100755
index 0000000..72fa2ae
--- /dev/null
+++ b/qa/430
@@ -0,0 +1,313 @@
+#! /bin/sh
+# PCP QA Test No. 430
+# Bugs #568199 #553276
+# Test out pmcheck with duplicate directory names
+# Test out pmcheck with directory names where one is a subname
+# of the other.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.full $seq.out
+if [ $PCP_VER -ge 3611 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+
+realhost=`hostname`
+LOCALHOST=`echo $realhost | sed -e 's/\..*//'`
+hostsfile="/etc/hosts"
+egrep '^[^#].*[ ]'$realhost'([ ]|$)' <$hostsfile >/dev/null || \
+ _notrun "No entry for hostname of local host in $hostsfile"
+
+signal="$sudo $PCP_BINADM_DIR/pmsignal"
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/\.\.\.*/[dots]/' \
+ -e "s/$realhost/LOCALHOST/g" \
+ -e "s/$LOCALHOST/LOCALHOST/g" \
+ -e "s/local:/LOCALHOST/g" \
+ -e 's/control:[0-9][0-9]*]/control:LINE]/' \
+ -e 's;/usr/var;/var;g' \
+ -e "s;$tmp;TMP;g" \
+ -e '/Duplicate/d' \
+ -e 's/process [0-9][0-9]*/process PID/' \
+ -e '/[0-9] inode=/d' \
+ -e 's/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]/CHECK/' \
+ | _filter_cron_scripts
+}
+
+_stop_loggers()
+{
+ $signal -a -s TERM pmlogger >/dev/null 2>&1
+}
+
+_cleanup()
+{
+ echo
+ echo "Cleaning up"
+
+ if [ -f $tmp.etc.hosts.orig ]
+ then
+ $sudo cp $tmp.etc.hosts.orig $hostsfile
+ fi
+
+ _stop_loggers
+
+ cd # get out of tmp directory so we can delete it
+ $sudo rm -rf $tmp $tmp.*
+
+ $sudo $PCP_BINADM_DIR/pmlogger_check
+}
+
+_setup()
+{
+ _stop_loggers
+ cd
+ $sudo rm -rf $logdir $logdir2
+ mkdir $logdir $logdir2
+ chmod ugo+w $logdir $logdir2
+}
+
+# This relies on 127.0.0.x being an alias for 127.0.0.1
+# Also, place our real hostname entry first, then the
+# 127.0.0.x alias so that the reverse hostname lookup in
+# pmlogger gets the same hostname for the portmap files
+# as the -h from the command line
+#
+_update_hostsfile()
+{
+ extra_hostname=$1
+
+ # save old hosts file
+ $sudo cp $hostsfile $tmp.etc.hosts.orig
+
+ # update /etc/hosts
+ # add an entry for extra_hostname
+ rm -f $tmp.etc.hosts
+ for i in 2 3 4 5 6 7 8 9
+ do
+ if grep "^127.0.0.$i" $hostsfile >/dev/null
+ then
+ :
+ else
+ echo "# Hacked for QA/$seq" >$tmp.etc.hosts
+ echo "#" >>$tmp.etc.hosts
+ egrep '^[^#].*[ ]'$realhost'([ ]|$)' <$hostsfile >$tmp.tmp
+ if [ `wc -l <$tmp.tmp | sed -e 's/ *//g'` -ne 1 ]
+ then
+ echo "Updating $hostsfile failed: no single $realhost entry: (see $seq.full):"
+ echo "=== $hostsfile ===" >>$here/$seq.full
+ cat $hostsfile >>$here/$seq.full
+ echo "grep $realhost ..." >>$here/$seq.full
+ cat $tmp.tmp >>$here/$seq.full
+ exit
+ fi
+ cat $tmp.tmp >>$tmp.etc.hosts
+ echo "127.0.0.$i $extra_hostname" >>$tmp.etc.hosts
+ echo "" >>$tmp.etc.hosts
+ egrep -v '^[^#].*[ ]'$realhost'([ ]|$)' <$hostsfile >>$tmp.etc.hosts
+ break
+ fi
+ done
+
+ # extra check
+ # we expect to make a change!
+ if [ -s $tmp.etc.hosts ]
+ then
+ # create new hosts file
+ $sudo cp $tmp.etc.hosts $hostsfile
+ else
+ echo "Updating $hostsfile failed: no 127.0.0.x available: (see $seq.full):"
+ echo "=== $hostsfile ===" >>$here/$seq.full
+ cat $hostsfile >>$here/$seq.full
+ exit
+ fi
+}
+
+_extract_control()
+{
+ id=$1
+
+ #preamble
+ cat - <<EOF
+# PCP archive logging configuration/control - for qa/$seq
+#
+\$version=1.1
+#
+EOF
+
+ $PCP_AWK_PROG < $tmp.control -v id=$id '
+ $1 == "#" && $2 == id"." {
+ mode=1;
+ print;
+ next;
+ }
+ mode == 1 && $1 == "#" && $2 ~ /[0-9][0-9]*\./ {
+ # found next item so exit
+ exit;
+ }
+ mode == 1 {
+ print;
+ next;
+ }
+ '
+}
+
+# real QA test starts here
+rm -f $here/$seq.full
+
+host1=$LOCALHOST
+host2=$LOCALHOST"super"
+echo "host1=$host1" >>$here/$seq.full
+echo "host2=$host2" >>$here/$seq.full
+_update_hostsfile $host2
+echo "=== $hostsfile ===" >>$here/$seq.full
+cat $hostsfile >>$here/$seq.full
+echo "=== check pcp on $host2 ===" >>$here/$seq.full
+pcp -h $host2 >>$here/$seq.full
+
+logdir=$tmp
+logdir2="$tmp.subname"
+
+
+#
+# This global file should be extended to do more control
+# file tests.
+# Make sure you put the number in the form "# 3. "
+#
+cat > $tmp.control <<EOF
+#
+# 1. Test duplicate directory names; non-primary and then primary
+#
+LOCALHOSTNAME n n $logdir -c $logdir/config
+LOCALHOSTNAME y n $logdir -c $logdir/config
+#
+# 2. Test duplicate directory names ; primary and then non-primary
+#
+LOCALHOSTNAME y n $logdir -c $logdir/config
+LOCALHOSTNAME n n $logdir -c $logdir/config
+#
+# 3. Test directory names which are subnames
+#
+LOCALHOSTNAME y n $logdir2 -c $logdir/config
+LOCALHOSTNAME n n $logdir -c $logdir/config
+#
+# 4. Test when have hosts which are subnames
+#
+$host1 y n $logdir/$host1 -c $logdir/config
+$host2 n n $logdir/$host2 -c $logdir/config
+#
+# 5. Putting all the cases together
+#
+LOCALHOSTNAME y n $logdir.1 -c $logdir/config
+LOCALHOSTNAME n n $logdir.2 -c $logdir/config
+$host1 n n $logdir.3 -c $logdir/config
+$host1 n n $logdir.4 -c $logdir/config
+$host2 n n $logdir.5 -c $logdir/config
+$host2 n n $logdir.6 -c $logdir/config
+EOF
+
+# which tests to try out
+test_set="1 2 3 4 5"
+
+for i in $test_set
+do
+ echo >>$here/$seq.full
+ echo "=== test $i ===" >>$here/$seq.full
+ _setup
+
+ # create the control file from master
+ _extract_control $i > $logdir/control
+ echo "--- control ---" >>$here/$seq.full
+ cat $logdir/control >>$here/$seq.full
+
+ # let's see what control file we are using
+ echo
+ _filter < $logdir/control
+ echo
+
+ echo "log mandatory on once pmcd.control.debug" >$logdir/config
+ echo "--- pmlogger_check ---" >> $here/$seq.full
+ $sudo $PCP_BINADM_DIR/pmlogger_check -V -c $logdir/control 2>&1 \
+ | tee -a $here/$seq.full \
+ | _filter
+done
+
+echo | tee -a $here/$seq.full
+echo "Restart tests while other pmloggers are running ..." | tee -a $here/$seq.full
+
+# now for the 5. case, terminate the pmloggers one at a time and
+# check the pmlogger_check restarts the right one
+#
+for log in $logdir.1 $logdir.2 $logdir.3 $logdir.4 $logdir.5 $logdir.6
+do
+ echo | tee -a $here/$seq.full
+ echo "Kill off one pmlogger ..." | tee -a $here/$seq.full
+ pid=`grep -l $log $PCP_TMP_DIR/pmlogger/[0-9]* | sed -e 's/.*pmlogger.//'`
+ try=1
+ num_pid=`echo "$pid" | wc -w | sed -e 's/ *//g'`
+ while [ $try -lt 10 -a $num_pid -ne 1 ]
+ do
+ echo "try $try num_pid=$num_pid: `echo $pid`" >>$here/$seq.full
+ sleep 1
+ pid=`grep -l $log $PCP_TMP_DIR/pmlogger/[0-9]* | sed -e 's/.*pmlogger.//'`
+ num_pid=`echo "$pid" | wc -w | sed -e 's/ *//g'`
+ try=`expr $try + 1`
+ done
+ if [ $num_pid -ne 1 ]
+ then
+ echo "Arrgh ... failed to find just one pmlogger to kill ... see $seq.full"
+ echo "" >>$here/$seq.full
+ echo "Arrgh ... failed to find just one pmlogger to kill ..." >>$here/$seq.full
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep 'PID|[p]mlogger' >>$here/$seq.full
+ echo "$log contents ..." >>$here/$seq.full
+ ls -l $log >>$here/$seq.full
+ for ctl in $PCP_TMP_DIR/pmlogger/[0-9]*
+ do
+ echo "+++ $ctl +++" >>$here/$seq.full
+ cat $ctl >>$here/$seq.full
+ done
+ echo "+ grep -l $log"' $PCP_TMP_DIR/pmlogger/[0-9]*' >>$here/$seq.full
+ grep $log $PCP_TMP_DIR/pmlogger/[0-9]* >>$here/$seq.full
+ exit
+ fi
+ echo "Victim pid=$pid" >>$here/$seq.full
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS \
+ | $PCP_AWK_PROG >>$here/$seq.full '
+NR == 1 { print
+ if ($2 != "PID") {
+ print "PID not in field 2 of ps output!"
+ exit(1)
+ }
+ next
+ }
+$2 == '"$pid"' { print; exit(0) }'
+ echo "+++ $PCP_TMP_DIR/pmlogger/$pid +++" >>$here/$seq.full
+ cat $PCP_TMP_DIR/pmlogger/$pid >>$here/$seq.full
+ $signal -s TERM $pid
+ echo "Check ..." | tee -a $here/$seq.full
+ $sudo $PCP_BINADM_DIR/pmlogger_check -V -V -c $logdir/control 2>&1 \
+ | tee -a $here/$seq.full \
+ | sed -e '/^... try /d' \
+ | _filter
+
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/430.out.1 b/qa/430.out.1
new file mode 100644
index 0000000..fbf4374
--- /dev/null
+++ b/qa/430.out.1
@@ -0,0 +1,247 @@
+QA output created by 430
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 1. Test duplicate directory names; non-primary and then primary
+#
+LOCALHOSTNAME n n TMP -c TMP/config
+LOCALHOSTNAME y n TMP -c TMP/config
+#
+
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: Cannot start more than one pmlogger instance for archive directory "TMP"
+[dots] logging for host "LOCALHOST" unchanged
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 2. Test duplicate directory names ; primary and then non-primary
+#
+LOCALHOSTNAME y n TMP -c TMP/config
+LOCALHOSTNAME n n TMP -c TMP/config
+#
+
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: Cannot start more than one pmlogger instance for archive directory "TMP"
+[dots] logging for host "LOCALHOST" unchanged
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 3. Test directory names which are subnames
+#
+LOCALHOSTNAME y n TMP.subname -c TMP/config
+LOCALHOSTNAME n n TMP -c TMP/config
+#
+
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 4. Test when have hosts which are subnames
+#
+LOCALHOST y n TMP/LOCALHOST -c TMP/config
+LOCALHOSTsuper n n TMP/LOCALHOSTsuper -c TMP/config
+#
+
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP/LOCALHOST) for PCP archive files
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP/LOCALHOSTsuper) for PCP archive files
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 5. Putting all the cases together
+#
+LOCALHOSTNAME y n TMP.1 -c TMP/config
+LOCALHOSTNAME n n TMP.2 -c TMP/config
+LOCALHOST n n TMP.3 -c TMP/config
+LOCALHOST n n TMP.4 -c TMP/config
+LOCALHOSTsuper n n TMP.5 -c TMP/config
+LOCALHOSTsuper n n TMP.6 -c TMP/config
+
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.1) for PCP archive files
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.2) for PCP archive files
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.3) for PCP archive files
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.4) for PCP archive files
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.5) for PCP archive files
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.6) for PCP archive files
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+
+Restart tests while other pmloggers are running ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+
+Cleaning up
diff --git a/qa/430.out.2 b/qa/430.out.2
new file mode 100644
index 0000000..65ccde9
--- /dev/null
+++ b/qa/430.out.2
@@ -0,0 +1,252 @@
+QA output created by 430
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 1. Test duplicate directory names; non-primary and then primary
+#
+LOCALHOSTNAME n n TMP -c TMP/config
+LOCALHOSTNAME y n TMP -c TMP/config
+#
+
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: Cannot start more than one pmlogger instance for archive directory "TMP"
+[dots] logging for host "LOCALHOST" unchanged
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 2. Test duplicate directory names ; primary and then non-primary
+#
+LOCALHOSTNAME y n TMP -c TMP/config
+LOCALHOSTNAME n n TMP -c TMP/config
+#
+
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: Cannot start more than one pmlogger instance for archive directory "TMP"
+[dots] logging for host "LOCALHOST" unchanged
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 3. Test directory names which are subnames
+#
+LOCALHOSTNAME y n TMP.subname -c TMP/config
+LOCALHOSTNAME n n TMP -c TMP/config
+#
+
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 4. Test when have hosts which are subnames
+#
+LOCALHOST y n TMP/LOCALHOST -c TMP/config
+LOCALHOSTsuper n n TMP/LOCALHOSTsuper -c TMP/config
+#
+
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP/LOCALHOST) for PCP archive files
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP/LOCALHOSTsuper) for PCP archive files
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+
+# PCP archive logging configuration/control - for qa/430
+#
+$version=1.1
+#
+# 5. Putting all the cases together
+#
+LOCALHOSTNAME y n TMP.1 -c TMP/config
+LOCALHOSTNAME n n TMP.2 -c TMP/config
+LOCALHOST n n TMP.3 -c TMP/config
+LOCALHOST n n TMP.4 -c TMP/config
+LOCALHOSTsuper n n TMP.5 -c TMP/config
+LOCALHOSTsuper n n TMP.6 -c TMP/config
+
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.1) for PCP archive files
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.2) for PCP archive files
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.3) for PCP archive files
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.4) for PCP archive files
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.5) for PCP archive files
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+PMLOGGER.CHECK [TMP/control:LINE]
+Warning: creating directory (TMP.6) for PCP archive files
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+
+Restart tests while other pmloggers are running ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+Restarting primary pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+primary pmlogger process PID identified, OK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+primary pmlogger process PID identified, OK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+primary pmlogger process PID identified, OK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+Restarting pmlogger for host "LOCALHOST" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+primary pmlogger process PID identified, OK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+
+Kill off one pmlogger ...
+Check ...
+[control:LINE] host="#" primary="PCP" socks="archive" dir="logging" args="configuration/control - for qa/430"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="$version=1.1" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="#" primary="5." socks="Putting" dir="all" args="the cases together"
+[control:LINE] host="#" primary="" socks="" dir="" args=""
+[control:LINE] host="LOCALHOST" primary="y" socks="n" dir="TMP.1" args="-c TMP/config"
+Check pmlogger -P -h LOCALHOST [dots] in TMP.1 ...
+primary pmlogger process PID identified, OK
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.2" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.2 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.3" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.3 ...
+[control:LINE] host="LOCALHOST" primary="n" socks="n" dir="TMP.4" args="-c TMP/config"
+Check pmlogger -h LOCALHOST [dots] in TMP.4 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.5" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.5 ...
+[control:LINE] host="LOCALHOSTsuper" primary="n" socks="n" dir="TMP.6" args="-c TMP/config"
+Check pmlogger -h LOCALHOSTsuper [dots] in TMP.6 ...
+Restarting pmlogger for host "LOCALHOSTsuper" [dots] [process PID] done
+Latest folio created for CHECK
+
+Cleaning up
diff --git a/qa/431 b/qa/431
new file mode 100755
index 0000000..cb6f3e9
--- /dev/null
+++ b/qa/431
@@ -0,0 +1,45 @@
+#!/bin/sh
+# PCP QA Test No. 431
+# Derived metrics and PM_TYPE_STRING and PM_TYPE_AGGREGATE
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== This should work ==="
+echo "my.string = sample.string.hullo" >$tmp.config
+echo "my.aggr = sample.aggregate.hullo" >>$tmp.config
+pminfo -c $tmp.config -f my | _filter
+pminfo -c $tmp.config -f my | _filter
+
+echo
+echo "=== These should NOT work ==="
+echo "my.bad_1 = sample.string.hullo - sample.aggregate.hullo" >$tmp.config
+echo "my.bad_2 = 1 + sample.string.hullo" >>$tmp.config
+echo "my.bad_3 = sample.aggregate.hullo * 1024" >>$tmp.config
+echo "my.bad_4 = (sample.long.ten + 1) + sample.string.hullo" >>$tmp.config
+echo "my.bad_5 = sample.aggregate.hullo - (sample.long.ten + 1)" >>$tmp.config
+echo "my.bad_6 = sample.long.ten + (1 + sample.string.hullo)" >>$tmp.config
+echo "my.bad_7 = sample.long.ten + (sample.string.hullo * 128)" >>$tmp.config
+pminfo -c $tmp.config -f my
+
+# success, all done
+exit
diff --git a/qa/431.out b/qa/431.out
new file mode 100644
index 0000000..8940aed
--- /dev/null
+++ b/qa/431.out
@@ -0,0 +1,30 @@
+QA output created by 431
+=== This should work ===
+
+my.string
+ value "hullo world!"
+
+my.aggr
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+my.string
+ value "hullo world!"
+
+my.aggr
+ value "hullo world!" [68756c6c6f20776f726c6421]
+
+=== These should NOT work ===
+Semantic error: derived metric my.bad_1: sample.string.hullo - sample.aggregate.hullo: Non-arithmetic type for left operand
+Semantic error: derived metric my.bad_2: 1 + sample.string.hullo: Non-arithmetic type for right operand
+Semantic error: derived metric my.bad_3: sample.aggregate.hullo * 1024: Non-arithmetic type for left operand
+Semantic error: derived metric my.bad_4: <expr> + sample.string.hullo: Non-arithmetic type for right operand
+Semantic error: derived metric my.bad_5: sample.aggregate.hullo - <expr>: Non-arithmetic type for left operand
+Semantic error: derived metric my.bad_6: 1 + sample.string.hullo: Non-arithmetic type for right operand
+Semantic error: derived metric my.bad_7: sample.string.hullo * 128: Non-arithmetic type for left operand
+my.bad_1: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_2: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_3: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_4: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_5: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_6: pmLookupDesc: Unknown or illegal metric identifier
+my.bad_7: pmLookupDesc: Unknown or illegal metric identifier
diff --git a/qa/432 b/qa/432
new file mode 100755
index 0000000..c4c49bd
--- /dev/null
+++ b/qa/432
@@ -0,0 +1,39 @@
+#!/bin/sh
+# PCP QA Test No. 432
+# pmlogreduce with aggregate and event type metrics
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File >$tmp.config
+log advisory on 100 msec {
+ sample.event
+ sample.bin
+ sample.aggregate
+}
+End-of-File
+
+echo "Initial archive ..."
+pmlogger -c $tmp.config -s 3 $tmp
+pminfo -a $tmp | LC_COLLATE=POSIX sort
+
+echo
+echo "Reduced archive ..."
+pmlogreduce $tmp $tmp.reduce
+pminfo -a $tmp.reduce | LC_COLLATE=POSIX sort
+
+# success, all done
+exit
diff --git a/qa/432.out b/qa/432.out
new file mode 100644
index 0000000..044d2b9
--- /dev/null
+++ b/qa/432.out
@@ -0,0 +1,46 @@
+QA output created by 432
+Initial archive ...
+pmcd.pmlogger.archive
+pmcd.pmlogger.host
+pmcd.pmlogger.port
+sample.aggregate.hullo
+sample.aggregate.null
+sample.aggregate.write_me
+sample.bin
+sample.event.highres_records
+sample.event.no_indom_records
+sample.event.param_32
+sample.event.param_64
+sample.event.param_aggregate
+sample.event.param_double
+sample.event.param_float
+sample.event.param_string
+sample.event.param_u32
+sample.event.param_u64
+sample.event.records
+sample.event.reset
+sample.event.reset_highres
+sample.event.type
+
+Reduced archive ...
+pmlogreduce: sample.aggregate.null: Warning: skipping AGGREGATE metric
+pmlogreduce: sample.aggregate.hullo: Warning: skipping AGGREGATE metric
+pmlogreduce: sample.aggregate.write_me: Warning: skipping AGGREGATE metric
+pmlogreduce: sample.event.param_aggregate: Warning: skipping AGGREGATE metric
+pmlogreduce: sample.event.records: Warning: skipping EVENT metric
+pmlogreduce: sample.event.no_indom_records: Warning: skipping EVENT metric
+pmcd.pmlogger.archive
+pmcd.pmlogger.host
+pmcd.pmlogger.port
+sample.bin
+sample.event.highres_records
+sample.event.param_32
+sample.event.param_64
+sample.event.param_double
+sample.event.param_float
+sample.event.param_string
+sample.event.param_u32
+sample.event.param_u64
+sample.event.reset
+sample.event.reset_highres
+sample.event.type
diff --git a/qa/433 b/qa/433
new file mode 100755
index 0000000..4aac68e
--- /dev/null
+++ b/qa/433
@@ -0,0 +1,57 @@
+#! /bin/sh
+# PCP QA Test No. 433
+# Test pmie bug #573184
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ _show_pmie_errors | sort | sed -e 's/"//g' -e 's/note - //g'
+}
+
+_check_core()
+{
+ if [ "`echo core*`" != "core*" ]
+ then
+ $PCP_ECHO_PROG $PCP_ECHO_N "Dumped core! (saved in $here as""$PCP_ECHO_C"
+ for c in core*
+ do
+ $sudo mv $c $here/$seq.$c
+ $PCP_ECHO_PROG $PCP_ECHO_N " $seq.$c""$PCP_ECHO_C"
+ done
+ echo ")"
+ fi
+}
+
+# real QA test starts here
+
+$sudo rm -f core*
+
+cat << end-of-file > $tmp.conf
+delta = 1 sec;
+(\$day_of_week >= 1 && \$day_of_week <= 5) && (\$hour >= 7 && \$hour <= 18) &&
+some_host (
+ 30 %_sample irix.disk.all.read :omen @0..9 > 0 )
+-> print "Disk reads on %h";
+end-of-file
+
+pmie -z -a src/573184 $tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+_check_core
+
+# success, all done
+status=0
+exit
diff --git a/qa/433.out b/qa/433.out
new file mode 100644
index 0000000..6a5533a
--- /dev/null
+++ b/qa/433.out
@@ -0,0 +1,22 @@
+QA output created by 433
+pmie: evaluator exiting
+pmie: timezone set to local timezone of host omen
+print Wed Feb 18 12:10:42 1998: Disk reads on omen
+print Wed Feb 18 12:10:43 1998: Disk reads on omen
+print Wed Feb 18 12:10:44 1998: Disk reads on omen
+print Wed Feb 18 12:10:45 1998: Disk reads on omen
+print Wed Feb 18 12:10:46 1998: Disk reads on omen
+print Wed Feb 18 12:10:47 1998: Disk reads on omen
+print Wed Feb 18 12:10:48 1998: Disk reads on omen
+print Wed Feb 18 12:10:49 1998: Disk reads on omen
+print Wed Feb 18 12:10:50 1998: Disk reads on omen
+print Wed Feb 18 12:10:51 1998: Disk reads on omen
+print Wed Feb 18 12:10:52 1998: Disk reads on omen
+print Wed Feb 18 12:10:53 1998: Disk reads on omen
+print Wed Feb 18 12:10:54 1998: Disk reads on omen
+print Wed Feb 18 12:10:55 1998: Disk reads on omen
+print Wed Feb 18 12:10:56 1998: Disk reads on omen
+print Wed Feb 18 12:10:57 1998: Disk reads on omen
+print Wed Feb 18 12:10:58 1998: Disk reads on omen
+print Wed Feb 18 12:10:59 1998: Disk reads on omen
+print Wed Feb 18 12:11:00 1998: Disk reads on omen
diff --git a/qa/434 b/qa/434
new file mode 100755
index 0000000..01fc765
--- /dev/null
+++ b/qa/434
@@ -0,0 +1,66 @@
+#!/bin/sh
+# PCP QA Test No. 434
+# pmval exit status
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed <$1 \
+ -e '/^ *[0-9][0-9.]* *$/s/.*/NUMBER/' \
+ -e '/^host:.*$/s/.*/HOST/'
+}
+
+# real QA test starts here
+pmval -h no.such.host any.old.metric
+sts=$?
+echo "no.such.host - exit status $sts"
+pmval -a no.such.archive any.old.metric
+sts=$?
+echo "no.such.archive - exit status $sts"
+pmval no.such.metric
+sts=$?
+echo "no.such.metric - exit status $sts"
+pmval -i no.such.instance sample.bin
+sts=$?
+echo "no.such.instance - exit status $sts"
+pmval
+sts=$?
+echo "usage - exit status $sts"
+
+for s in 0 1 2
+do
+ pmval -t 0.1 -s $s sample.seconds >$tmp.out
+ sts=$?
+ _filter $tmp.out
+ echo "counter -s $s - exit status $sts"
+done
+
+for s in 0 1 2
+do
+ pmval -r -t 0.1 -s $s sample.seconds >$tmp.out
+ sts=$?
+ _filter $tmp.out
+ echo "counter -r -s $s - exit status $sts"
+done
+
+for s in 0 1 2
+do
+ pmval -t 0.1 -s $s sample.long.ten >$tmp.out
+ sts=$?
+ _filter $tmp.out
+ echo "instantaneuos -s $s - exit status $sts"
+done
diff --git a/qa/434.out b/qa/434.out
new file mode 100644
index 0000000..51b741c
--- /dev/null
+++ b/qa/434.out
@@ -0,0 +1,125 @@
+QA output created by 434
+pmval: Cannot connect to PMCD on host "no.such.host": No route to host
+no.such.host - exit status 1
+pmval: Cannot open archive "no.such.archive": No such file or directory
+no.such.archive - exit status 1
+
+pmval: pmLookupName(no.such.metric): Unknown metric name
+no.such.metric - exit status 1
+
+pmval: instance no.such.instance not available
+no.such.instance - exit status 1
+Error: no metricname specified
+
+Usage: pmval [options] metricname
+
+General options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -V, --version display version number and exit
+ -?, --help show this usage message and exit
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+
+Reporting options:
+ -d, --delay delay, pause between updates for archive replay
+ -f N, --precision=N fixed output format with N digits precision
+ -i INST, --instances=INST
+ comma-separated metrics instance list
+ -r, --raw output raw counter values (no rate conversion)
+ -U FILE, --nointerp=FILE
+ non-interpolated fetching; ignores interval
+ -w N, --width=N set the width of each column of output
+usage - exit status 1
+
+metric: sample.seconds
+HOST
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 0
+counter -s 0 - exit status 0
+
+metric: sample.seconds
+HOST
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 1
+NUMBER
+counter -s 1 - exit status 0
+
+metric: sample.seconds
+HOST
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 2
+interval: 0.10 sec
+NUMBER
+NUMBER
+counter -s 2 - exit status 0
+
+metric: sample.seconds
+HOST
+semantics: cumulative counter
+units: sec
+samples: 0
+counter -r -s 0 - exit status 0
+
+metric: sample.seconds
+HOST
+semantics: cumulative counter
+units: sec
+samples: 1
+NUMBER
+counter -r -s 1 - exit status 0
+
+metric: sample.seconds
+HOST
+semantics: cumulative counter
+units: sec
+samples: 2
+interval: 0.10 sec
+NUMBER
+NUMBER
+counter -r -s 2 - exit status 0
+
+metric: sample.long.ten
+HOST
+semantics: instantaneous value
+units: none
+samples: 0
+instantaneuos -s 0 - exit status 0
+
+metric: sample.long.ten
+HOST
+semantics: instantaneous value
+units: none
+samples: 1
+NUMBER
+instantaneuos -s 1 - exit status 0
+
+metric: sample.long.ten
+HOST
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 0.10 sec
+NUMBER
+NUMBER
+instantaneuos -s 2 - exit status 0
diff --git a/qa/435 b/qa/435
new file mode 100755
index 0000000..d591e89
--- /dev/null
+++ b/qa/435
@@ -0,0 +1,24 @@
+#!/bin/sh
+# PCP QA Test No. 435
+# Exercise compressed archive files - gzip version
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.compress
+
+which gzip >/dev/null 2>&1 || _notrun "No gzip binary installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_compress gzip gunzip gz
+_exercise_compression
+status=0 # success, we're all done
+exit
diff --git a/qa/435.out b/qa/435.out
new file mode 100644
index 0000000..1fa2a1f
--- /dev/null
+++ b/qa/435.out
@@ -0,0 +1,93 @@
+QA output created by 435
+expect only a few lines of diff output ...
+
+--- gzip first volume ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin
+> pmie ...
+
+--- gzip last volume and use existing .9.gz in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.9.gz
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.9.gz
+> pmie ...
+
+--- gzip middle volume and used existing .1 in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 5
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.1
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.1
+> pmie ...
+
+--- gzip first, middle and last volume and use .meta in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> Warning: file missing or compressed for log volume 5
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.meta
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.meta
+> pmie ...
+
+--- gzip first few, middle and last few volumes and use existing .7.gz in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> Warning: file missing or compressed for log volume 1
+> Warning: file missing or compressed for log volume 5
+> Warning: file missing or compressed for log volume 7
+> Warning: file missing or compressed for log volume 8
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.7.gz
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.7.gz
+> pmie ...
+
+--- some error cases ---
+pminfo: Cannot open archive "mv-bigbin.10": No such file or directory
+pmprobe: Cannot open archive "mv-bigbin.10": No such file or directory
+pmval: Cannot open archive "mv-bigbin.10": No such file or directory
+pmie: cannot open archive mv-bigbin.10
+pmNewContext failed: No such file or directory
+pminfo: Cannot open archive "mv-bigbin.10.gz": No such file or directory
+pmprobe: Cannot open archive "mv-bigbin.10.gz": No such file or directory
+pmval: Cannot open archive "mv-bigbin.10.gz": No such file or directory
+pmie: cannot open archive mv-bigbin.10.gz
+pmNewContext failed: No such file or directory
+gzip: ./null.0.gz: unexpected end of file
+pminfo: Cannot open archive "null": Corrupted record in a PCP archive log
diff --git a/qa/436 b/qa/436
new file mode 100755
index 0000000..2c320fc
--- /dev/null
+++ b/qa/436
@@ -0,0 +1,24 @@
+#!/bin/sh
+# PCP QA Test No. 436
+# Exercise compressed archive files - bzip2 version
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.compress
+
+which bzip2 >/dev/null 2>&1 || _notrun No bzip2 binary installed
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_compress bzip2 bunzip2 bz2
+_exercise_compression
+status=0 # success, we're all done
+exit
diff --git a/qa/436.out b/qa/436.out
new file mode 100644
index 0000000..fe0b204
--- /dev/null
+++ b/qa/436.out
@@ -0,0 +1,100 @@
+QA output created by 436
+expect only a few lines of diff output ...
+
+--- bzip2 first volume ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin
+> pmie ...
+
+--- bzip2 last volume and use existing .9.bz2 in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.9.bz2
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.9.bz2
+> pmie ...
+
+--- bzip2 middle volume and used existing .1 in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 5
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.1
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.1
+> pmie ...
+
+--- bzip2 first, middle and last volume and use .meta in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> Warning: file missing or compressed for log volume 5
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.meta
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.meta
+> pmie ...
+
+--- bzip2 first few, middle and last few volumes and use existing .7.bz2 in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> Warning: file missing or compressed for log volume 1
+> Warning: file missing or compressed for log volume 5
+> Warning: file missing or compressed for log volume 7
+> Warning: file missing or compressed for log volume 8
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.7.bz2
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.7.bz2
+> pmie ...
+
+--- some error cases ---
+pminfo: Cannot open archive "mv-bigbin.10": No such file or directory
+pmprobe: Cannot open archive "mv-bigbin.10": No such file or directory
+pmval: Cannot open archive "mv-bigbin.10": No such file or directory
+pmie: cannot open archive mv-bigbin.10
+pmNewContext failed: No such file or directory
+pminfo: Cannot open archive "mv-bigbin.10.bz2": No such file or directory
+pmprobe: Cannot open archive "mv-bigbin.10.bz2": No such file or directory
+pmval: Cannot open archive "mv-bigbin.10.bz2": No such file or directory
+pmie: cannot open archive mv-bigbin.10.bz2
+pmNewContext failed: No such file or directory
+bzip2: Compressed file ends unexpectedly;
+ perhaps it is corrupted? *Possible* reason follows.
+bzip2: Success
+ Input file = ./null.0.bz2, output file = (stdout)
+It is possible that the compressed file(s) have become corrupted.
+You can use the -tvv option to test integrity of such files.
+You can use the `bzip2recover' program to attempt to recover
+data from undamaged sections of corrupted files.
+pminfo: Cannot open archive "null": Corrupted record in a PCP archive log
diff --git a/qa/437 b/qa/437
new file mode 100755
index 0000000..e543ef9
--- /dev/null
+++ b/qa/437
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 437
+# Exercise compressed archive files - badness in the uncompression
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.compress
+
+status=0 # success is the default!
+$sudo rm -rf $tmp $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+mkdir $tmp
+export PATH=$tmp:$PATH
+cd $tmp
+touch null.0.bz2 null.index null.meta
+
+# real QA test starts here
+cat <<End-of-File >bzcat
+#!/bin/sh
+exit 1
+End-of-File
+chmod 755 bzcat
+pminfo -Dlog -a null 2>&1 \
+| LC_COLLATE=POSIX sort \
+| _filter_compression
+
+cat <<End-of-File >bzcat
+#!/bin/sh
+kill -KILL \$\$
+End-of-File
+chmod 755 bzcat
+pminfo -Dlog -a null 2>&1 \
+| LC_COLLATE=POSIX sort \
+| _filter_compression
+
+# success, all done
+exit
diff --git a/qa/437.out b/qa/437.out
new file mode 100644
index 0000000..f727919
--- /dev/null
+++ b/qa/437.out
@@ -0,0 +1,29 @@
+QA output created by 437
+ Input file = ./null.0.bz2, output file = (stdout)
+ perhaps it is corrupted? *Possible* reason follows.
+It is possible that the compressed file(s) have become corrupted.
+You can use the -tvv option to test integrity of such files.
+You can use the `bzip2recover' program to attempt to recover
+__pmLogOpen: inspect file "./null.0.bz2"
+__pmLogOpen: inspect file "./null.index"
+__pmLogOpen: inspect file "./null.meta"
+__pmLogOpen: uncompress failed, exit status: 2
+__pmLogOpen: uncompress using: bzip2 -dc ./null.0.bz2
+bzip2: Compressed file ends unexpectedly;
+bzip2: Success
+data from undamaged sections of corrupted files.
+pminfo: Cannot open archive "null": Corrupted record in a PCP archive log
+ Input file = ./null.0.bz2, output file = (stdout)
+ perhaps it is corrupted? *Possible* reason follows.
+It is possible that the compressed file(s) have become corrupted.
+You can use the -tvv option to test integrity of such files.
+You can use the `bzip2recover' program to attempt to recover
+__pmLogOpen: inspect file "./null.0.bz2"
+__pmLogOpen: inspect file "./null.index"
+__pmLogOpen: inspect file "./null.meta"
+__pmLogOpen: uncompress failed, exit status: 2
+__pmLogOpen: uncompress using: bzip2 -dc ./null.0.bz2
+bzip2: Compressed file ends unexpectedly;
+bzip2: Success
+data from undamaged sections of corrupted files.
+pminfo: Cannot open archive "null": Corrupted record in a PCP archive log
diff --git a/qa/438 b/qa/438
new file mode 100755
index 0000000..e27ce82
--- /dev/null
+++ b/qa/438
@@ -0,0 +1,51 @@
+#!/bin/sh
+# PCP QA Test No. 438
+# Better code coverage for libpcp/src/logutil.c
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# __pmLogChkLabel: fd=3 vol=0 [magic=50052602 version=2 vol=0 pid=3901 host=bozo]
+# __pmLogSetTime(0) 17:29:20.472 delta=0 at ti[0]@17:29:20.472 vol=0 posn=132 serial=1
+_filter()
+{
+ sed \
+ -e 's/pid=[0-9][0-9]*/pid=PID/' \
+ -e 's/host=[a-zA-Z][a-zA-Z0-9_]*/host=HOST/' \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIME/g' \
+ -e 's/TIME (t=[0-9][0-9.]*)/TIME/g' \
+ -e 's/bad trailer len=132/bad trailer len=0/' \
+ -e '/__pmLogChkLabel/s/fd=[0-9]/fd=N/' \
+ | $PCP_AWK_PROG '
+$1 == "__pmLogOpen:" { print >"'$tmp'.0"; next }
+ { print >"'$tmp'.1" }'
+ LC_COLLATE=POSIX sort $tmp.0
+ cat $tmp.1
+}
+
+# real QA test starts here
+for i in src/badlen-*.0
+do
+ [ "$i" = "src/badlen-0.0" ] && continue
+ i=`echo $i | sed -e 's/\.0$//'`
+ echo | tee -a $seq.full
+ echo "--- $i ---" | tee -a $seq.full
+ pmdumplog -Dlog $i 2>&1 \
+ | tee -a $seq.full \
+ | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/438.out b/qa/438.out
new file mode 100644
index 0000000..a62b620
--- /dev/null
+++ b/qa/438.out
@@ -0,0 +1,129 @@
+QA output created by 438
+
+--- src/badlen-1 ---
+__pmLogOpen: inspect file "src/badlen-1.0"
+__pmLogOpen: inspect file "src/badlen-1.index"
+__pmLogOpen: inspect file "src/badlen-1.meta"
+__pmLogChkLabel: fd=N vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST]
+__pmLogChangeVol: change to volume 0
+__pmLogChkLabel: fd=N vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST]
+__pmLogChkLabel: fd=N vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST]
+__pmLogRead: fd=3 (peek) mode=back vol=0 posn=1928 @TIME len=header+200+trailer
+__pmLogSetTime(0) TIME delta=0 at ti[0]@TIME vol=0 posn=132 serial=1
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=132 serial=1
+__pmLogRead: fd=3 mode=forw vol=0 posn=132
+Error: record length mismatch: header (132) != trailer (128)
+pmdumplog: pmFetch: Corrupted record in a PCP archive log
+
+--- src/badlen-10 ---
+__pmLogOpen: inspect file "src/badlen-10.0"
+__pmLogOpen: inspect file "src/badlen-10.index"
+__pmLogOpen: inspect file "src/badlen-10.meta"
+__pmLogChkLabel: fd=N vol=0 trailer read -> 3 (expect 4) or bad trailer len=0 (expected 132)
+pmdumplog: Cannot open archive "src/badlen-10": Illegal label record at start of a PCP archive log file
+
+--- src/badlen-11 ---
+__pmLogOpen: inspect file "src/badlen-11.0"
+__pmLogOpen: inspect file "src/badlen-11.index"
+__pmLogOpen: inspect file "src/badlen-11.meta"
+__pmLogChkLabel: fd=N vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST]
+__pmLogChangeVol: change to volume 0
+__pmLogChkLabel: fd=N vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST]
+__pmLogChkLabel: fd=N vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST]
+__pmLogRead: fd=3 (peek) mode=back vol=0 posn=133
+Error: truncated log? rlen=33784 (offset 133)
+pmdumplog: Cannot locate end of archive src/badlen-11: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+__pmLogSetTime(0) TIME delta=0 at ti[0]@TIME vol=0 posn=132 serial=1
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=132 serial=1
+__pmLogRead: fd=3 mode=forw vol=0 posn=132 AFTER end
+
+--- src/badlen-2 ---
+__pmLogOpen: inspect file "src/badlen-2.0"
+__pmLogOpen: inspect file "src/badlen-2.index"
+__pmLogOpen: inspect file "src/badlen-2.meta"
+__pmLogChkLabel: fd=N vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST]
+__pmLogChangeVol: change to volume 0
+__pmLogChkLabel: fd=N vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST]
+__pmLogChkLabel: fd=N vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST]
+__pmLogRead: fd=3 (peek) mode=back vol=0 posn=260
+Error: truncated log? rlen=8289910 (offset 260)
+pmdumplog: Cannot locate end of archive src/badlen-2: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+__pmLogSetTime(0) TIME delta=0 at ti[0]@TIME vol=0 posn=132 serial=1
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=132 serial=1
+__pmLogRead: fd=3 mode=forw vol=0 posn=132
+Error: trailer fread got 0 expected 4
+pmdumplog: pmFetch: Corrupted record in a PCP archive log
+
+--- src/badlen-3 ---
+__pmLogOpen: inspect file "src/badlen-3.0"
+__pmLogOpen: inspect file "src/badlen-3.index"
+__pmLogOpen: inspect file "src/badlen-3.meta"
+__pmLogChkLabel: fd=N vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST]
+__pmLogChangeVol: change to volume 0
+__pmLogChkLabel: fd=N vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST]
+__pmLogChkLabel: fd=N vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST]
+__pmLogRead: fd=3 (peek) mode=back vol=0 posn=252
+Error: truncated log? rlen=762278763 (offset 252)
+pmdumplog: Cannot locate end of archive src/badlen-3: Corrupted record in a PCP archive log
+
+WARNING: This archive is sufficiently damaged that it may not be possible to
+ produce complete information. Continuing and hoping for the best.
+
+__pmLogSetTime(0) TIME delta=0 at ti[0]@TIME vol=0 posn=132 serial=1
+__pmLogSetTime(0) TIME delta=0 before start ti@TIME vol=0 posn=132 serial=1
+__pmLogRead: fd=3 mode=forw vol=0 posn=132
+Error: data fread got 116 expected 124
+pmdumplog: pmFetch: Corrupted record in a PCP archive log
+
+--- src/badlen-4 ---
+__pmLogOpen: inspect file "src/badlen-4.0"
+__pmLogOpen: inspect file "src/badlen-4.index"
+__pmLogOpen: inspect file "src/badlen-4.meta"
+__pmLogChkLabel: fd=N vol=0 file is empty
+pmdumplog: Cannot open archive "src/badlen-4": Empty archive log file
+
+--- src/badlen-5 ---
+__pmLogOpen: inspect file "src/badlen-5.0"
+__pmLogOpen: inspect file "src/badlen-5.index"
+__pmLogOpen: inspect file "src/badlen-5.meta"
+__pmLogChkLabel: fd=N vol=0 bad label len=38: expected 124
+pmdumplog: Cannot open archive "src/badlen-5": Illegal label record at start of a PCP archive log file
+
+--- src/badlen-6 ---
+__pmLogOpen: inspect file "src/badlen-6.0"
+__pmLogOpen: inspect file "src/badlen-6.index"
+__pmLogOpen: inspect file "src/badlen-6.meta"
+__pmLogChkLabel: fd=N vol=0 header read -> 4 (expect 4) or bad header len=64 (expected 132)
+pmdumplog: Cannot open archive "src/badlen-6": Illegal label record at start of a PCP archive log file
+
+--- src/badlen-7 ---
+__pmLogOpen: inspect file "src/badlen-7.0"
+__pmLogOpen: inspect file "src/badlen-7.index"
+__pmLogOpen: inspect file "src/badlen-7.meta"
+__pmLogChkLabel: fd=N vol=0 trailer read -> 4 (expect 4) or bad trailer len=64 (expected 132)
+pmdumplog: Cannot open archive "src/badlen-7": Illegal label record at start of a PCP archive log file
+
+--- src/badlen-8 ---
+__pmLogOpen: inspect file "src/badlen-8.0"
+__pmLogOpen: inspect file "src/badlen-8.index"
+__pmLogOpen: inspect file "src/badlen-8.meta"
+__pmLogChkLabel: fd=N vol=0 label version 255 not supported
+pmdumplog: Cannot open archive "src/badlen-8": Illegal label record at start of a PCP archive log file
+
+--- src/badlen-9 ---
+__pmLogOpen: inspect file "src/badlen-9.0"
+__pmLogOpen: inspect file "src/badlen-9.index"
+__pmLogOpen: inspect file "src/badlen-9.meta"
+__pmLogChkLabel: fd=N vol=0 [magic=50052602 version=2 vol=0 pid=PID host=HOST-laptop]
+__pmLogChangeVol: change to volume 0
+__pmLogChkLabel: fd=N vol=-2 [magic=50052602 version=2 vol=-2 pid=PID host=HOST-laptop]
+__pmLogChkLabel: fd=N vol=-1 [magic=50052602 version=2 vol=-1 pid=PID host=HOST-laptop]
+pmdumplog: Cannot open archive "src/badlen-9": Corrupted record in a PCP archive log
diff --git a/qa/439 b/qa/439
new file mode 100755
index 0000000..af5e369
--- /dev/null
+++ b/qa/439
@@ -0,0 +1,89 @@
+#!/bin/sh
+# PCP QA Test No. 439
+# Additional coverage for __pmConnectLogger
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; $sudo rm -f $PCP_TMP_DIR/pmlogger/$$; exit \$status" 0 1 2 3 15
+primary_port=`sed -e 1q $PCP_TMP_DIR/pmlogger/primary`
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/logcontrol([0-9][0-9]*)/logcontrol(PID)/' \
+ -e "s/$$/MYPID/g" \
+ -e "s;$PCP_TMP_DIR;\$PCP_TMP_DIR;g" \
+ -e 's/TCP connection reset by peer/Connection refused/'
+}
+
+# real QA test starts here
+export PMLOGGER_REQUEST_TIMEOUT=10
+src/logcontrol -P $primary_port enquire sample.long.write_me
+
+echo
+export PMLOGGER_REQUEST_TIMEOUT=10ABC
+src/logcontrol -P$primary_port enquire sample.long.write_me 2>&1 \
+| _filter
+unset PMLOGGER_REQUEST_TIMEOUT
+
+echo
+# $PM_LOG_ALL_PIDS is not useful
+src/logcontrol -Dcontext -p-1 enquire sample.long.write_me 2>&1 \
+| egrep '(__pmConnectLogger)|(logcontrol)'
+
+echo
+# punt that pid 1 is not pmlogger!
+src/logcontrol -Dcontext -p1 enquire sample.long.write_me 2>&1 \
+| egrep '(__pmConnectLogger)|(logcontrol)' \
+| _filter
+
+# start playing with libpcp's mind by munging files in
+# $PCP_TMP_DIR/pmlogger
+touch $tmp.ctl
+$sudo cp $tmp.ctl $PCP_TMP_DIR/pmlogger/$$
+src/logcontrol -Dcontext,log -p$$ enquire sample.long.write_me 2>&1 \
+| egrep '(/__pmConnectLogger)|(__pmLog)|(logcontrol)' \
+| _filter
+echo "bad port" >$tmp.ctl
+$sudo cp $tmp.ctl $PCP_TMP_DIR/pmlogger/$$
+src/logcontrol -Dcontext,log -p$$ enquire sample.long.write_me 2>&1 \
+| egrep '(/__pmConnectLogger)|(__pmLog)|(logcontrol)' \
+| _filter
+echo "123456" >$tmp.ctl
+$sudo cp $tmp.ctl $PCP_TMP_DIR/pmlogger/$$
+src/logcontrol -Dcontext,log -p$$ enquire sample.long.write_me 2>&1 \
+| egrep '(/__pmConnectLogger)|(__pmLog)|(logcontrol)' \
+| _filter
+cat <<End-of-File >$tmp.ctl
+123456
+no-such-host
+End-of-File
+$sudo cp $tmp.ctl $PCP_TMP_DIR/pmlogger/$$
+src/logcontrol -Dcontext,log -p$$ enquire sample.long.write_me 2>&1 \
+| egrep '(/__pmConnectLogger)|(__pmLog)|(logcontrol)' \
+| _filter
+cat <<End-of-File >$tmp.ctl
+123456
+no-such-host
+/no/such/file
+End-of-File
+$sudo cp $tmp.ctl $PCP_TMP_DIR/pmlogger/$$
+src/logcontrol -Dcontext,log -p$$ enquire sample.long.write_me 2>&1 \
+| egrep '(/__pmConnectLogger)|(__pmLog)|(logcontrol)' \
+| _filter
+
+
+# success, all done
+exit
diff --git a/qa/439.out b/qa/439.out
new file mode 100644
index 0000000..68d90a5
--- /dev/null
+++ b/qa/439.out
@@ -0,0 +1,27 @@
+QA output created by 439
+sample.long.write_me 0 (adv off)
+
+[DATE] logcontrol(PID) Warning: ignored bad PMLOGGER_REQUEST_TIMEOUT = '10ABC'
+sample.long.write_me 0 (adv off)
+
+__pmConnectLogger(host=localhost, pid=-1, port=-2)
+__pmConnectLogger: pid == PM_LOG_ALL_PIDS makes no sense here
+logcontrol: Cannot connect to pmlogger (-1) on host "localhost": Connection refused
+
+__pmConnectLogger(host=localhost, pid=1, port=-2)
+__pmConnectLogger: __pmLogFindPort -> 1, cannot contact pmlogger
+logcontrol: Cannot connect to pmlogger (1) on host "localhost": Connection refused
+__pmLogFindLocalPorts: pmlogger port file $PCP_TMP_DIR/pmlogger/MYPID empty!
+__pmConnectLogger: __pmLogFindPort -> 1, cannot contact pmlogger
+logcontrol: Cannot connect to pmlogger (MYPID) on host "localhost": Connection refused
+__pmLogFindLocalPorts: pmlogger port file $PCP_TMP_DIR/pmlogger/MYPID: no port number
+__pmConnectLogger: __pmLogFindPort -> 1, cannot contact pmlogger
+logcontrol: Cannot connect to pmlogger (MYPID) on host "localhost": Connection refused
+__pmLogFindLocalPorts: pmlogger port file $PCP_TMP_DIR/pmlogger/MYPID: no PMCD host name
+__pmConnectLogger: __pmLogFindPort -> pid = 123456
+logcontrol: Cannot connect to pmlogger (MYPID) on host "localhost": Connection refused
+__pmLogFindLocalPorts: pmlogger port file $PCP_TMP_DIR/pmlogger/MYPID: no archive base pathname
+__pmConnectLogger: __pmLogFindPort -> pid = 123456
+logcontrol: Cannot connect to pmlogger (MYPID) on host "localhost": Connection refused
+__pmConnectLogger: __pmLogFindPort -> pid = 123456
+logcontrol: Cannot connect to pmlogger (MYPID) on host "localhost": Connection refused
diff --git a/qa/440 b/qa/440
new file mode 100755
index 0000000..8ec3262
--- /dev/null
+++ b/qa/440
@@ -0,0 +1,256 @@
+#!/bin/sh
+# PCP QA Test No. 440
+# pmlogger -v conditions
+# Based on QA 252.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+pmdumplog='pmdumplog'
+pmlogger='pmlogger'
+SECS_TOL=2 # number of seconds tolerance
+
+#
+_clean_archive()
+{
+rm -f $tmp.log $tmp.[0-9]* $tmp.index $tmp.meta
+}
+
+# Is given value within tolerance of expected value
+_tolerance()
+{
+ expected=$1
+ given=$2
+ tolerance=$3
+ upper_limit=`expr $expected + $tolerance`
+ lower_limit=`expr $expected - $tolerance`
+ [ $lower_limit -le $given -a $given -le $upper_limit ]
+}
+
+_num_recs()
+{
+ num_recs=`$pmdumplog $tmp | egrep -c '^[0-9][0-9]:[0-9][0-9]:'`
+ # subtract 1 for the preamble
+ num_recs=`expr $num_recs - 1`
+ echo "found $num_recs samples after the preamble" >>$seq.full
+}
+
+_test_sample_size()
+{
+ vol_arg=$1
+ size_arg=$2
+ num_vol=$3 # volumes expected
+ echo "_test_sample_size $@" >>$seq.full
+ $pmlogger -v $vol_arg -s $size_arg -c $tmp.config -l $tmp.log $tmp
+ cat $tmp.log >>$seq.full
+ ls -l $tmp.* >>$seq.full
+ if [ -f $tmp.0 ]
+ then
+ vol=`ls $tmp.[0-9]* | wc -l | sed -e 's/ //g'`
+ else
+ vol=0
+ fi
+ echo "vol=$vol num_vol=$num_vol" >>$seq.full
+ if [ "$vol" != "$num_vol" ]
+ then
+ echo "Error: Number of volumes is $vol, expected $num_vol" | tee -a $seq.full
+ ls -l $tmp.[0-9]*
+ cat $tmp.log
+ $pmdumplog -a $tmp >>$seq.full
+ fi
+
+ _num_recs
+ if [ "$size_arg" = "$num_recs" ]
+ then
+ echo "Log size for $size_arg and volume size for $vol_arg is correct" | tee -a $seq.full
+ else
+ echo "Error: Log contains $num_recs samples, expected $size_arg" | tee -a $seq.full
+ ls -l $tmp.*
+ cat $tmp.log
+ $pmdumplog -a $tmp >>$seq.full
+ fi
+ _clean_archive
+}
+
+# Find out number of records, n, for given size
+# Then make sure for (n-1) records that the size is smaller
+_test_file_size()
+{
+ vol_arg=$1
+ size_arg=$2
+ num_vol=$3 # volumes expected
+ num_bytes=$4 # bytes expected
+ echo "_test_file_size $@" >>$seq.full
+ $pmlogger -v $vol_arg -s $size_arg -c $tmp.config -l $tmp.log $tmp
+ cat $tmp.log >>$seq.full
+ ls -l $tmp.* >>$seq.full
+ if [ -f $tmp.0 ]
+ then
+ vol=`ls $tmp.[0-9]* | wc -l | sed -e 's/ //g'`
+ bigger_size=`ls -l $tmp.[0-9]* | $PCP_AWK_PROG '{t += $5} END {print t}'`
+ else
+ vol=0
+ bigger_size=-1
+ fi
+ echo "bigger_size=$bigger_size" >>$seq.full
+ echo "vol=$vol num_vol=$num_vol" >>$seq.full
+ if [ "$vol" != "$num_vol" ]
+ then
+ echo "Error: Number of volumes is $vol, expected $num_vol" | tee -a $seq.full
+ ls -l $tmp.[0-9]*
+ cat $tmp.log
+ $pmdumplog -a $tmp >>$seq.full
+ fi
+ _num_recs
+ echo "num_recs=$num_recs" >>$seq.full
+ num_recs=`expr $num_recs - 1`
+ if [ $num_recs -gt 0 ]
+ then
+ _clean_archive
+ $pmlogger -v $vol_arg -s $num_recs -c $tmp.config -l $tmp.log $tmp
+ cat $tmp.log >>$seq.full
+ ls -l $tmp.* >>$seq.full
+ if [ -f $tmp.0 ]
+ then
+ smaller_size=`ls -l $tmp.[0-9]* | $PCP_AWK_PROG ' {t += $5} END {print t}'`
+ else
+ smaller_size=-1
+ fi
+ else
+ smaller_size=-1
+ fi
+ echo "smaller_size=$smaller_size" >>$seq.full
+ if [ $smaller_size -le $num_bytes -a $num_bytes -le $bigger_size ]
+ then
+ echo "Log size for $size_arg and volume size for $vol_arg is correct" | tee -a $seq.full
+ else
+ echo "Error: Log size $num_bytes is not within range $smaller_size - $bigger_size" | tee -a $seq.full
+ ls -l $tmp.*
+ cat $tmp.log
+ $pmdumplog -a $tmp >>$seq.full
+ fi
+ _clean_archive
+}
+
+_time_me ()
+{
+ # return time in seconds
+ #
+ # /usr/bin/time IS bloody important - dont port-sh it. EVER!
+ /usr/bin/time $* 2>&1 >/dev/null | \
+ if [ $PCP_PLATFORM = linux ]
+ then
+ # 0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 2752maxresident)k
+ tr ' ' "\n" | $PCP_AWK_PROG '/elapsed$/ { sub("elapsed", "", $1);
+ split ($1,tt,"[:.]");
+ print (tt[1]*60)+tt[2];}'
+ elif [ $PCP_PLATFORM = darwin ]
+ then
+ # 0.00 real 0.00 user 0.00 sys
+ $PCP_AWK_PROG '{print $1}' | sed -e 's/\..*//'
+ else
+ # real 0.0
+ # user 0.0
+ # sys 0.0
+ $PCP_AWK_PROG '/^real/ {print $2}' | sed -e 's/\..*//'
+ fi
+}
+
+# Note: size arg should be given in secs for comparison with /usr/bin/time
+_test_time_size()
+{
+ vol_arg=$1
+ size_arg=$2
+ num_vol=$3 # volumes expected
+ num_sec=$4 # elapsed seconds expected
+ echo "_test_time_size $@" >>$seq.full
+ time=`_time_me $pmlogger -v $vol_arg -s $size_arg -c $tmp.config -l $tmp.log $tmp`
+ [ -z "$time" ] && time=-1
+ cat $tmp.log >>$seq.full
+ ls -l $tmp.* >>$seq.full
+ if [ -f $tmp.0 ]
+ then
+ vol=`ls $tmp.[0-9]* | wc -l | sed -e 's/ //g'`
+ else
+ vol=0
+ fi
+ echo "vol=$vol num_vol=$num_vol" >>$seq.full
+ if [ "$vol" != "$num_vol" ]
+ then
+ echo "Error: Number of volumes is $vol, expected $num_vol" | tee -a $seq.full
+ ls -l $tmp.[0-9]*
+ cat $tmp.log
+ $pmdumplog -a $tmp >>$seq.full
+ fi
+ if _tolerance $num_sec $time $SECS_TOL
+ then
+ echo "Log time for $num_sec and volume time for $vol_arg is correct" | tee -a $seq.full
+ else
+ echo "Error: Log time $time, expected $num_sec +/- $SECS_TOL" | tee -a $seq.full
+ ls -l $tmp.*
+ cat $tmp.log
+ $pmdumplog -a $tmp >>$seq.full
+ fi
+ _clean_archive
+}
+
+# Create a simple configuration file for testing
+cat <<EOF >$tmp.config
+# pmlogger(1) configuration file for doing QA tests
+#
+log mandatory on 10 msec {
+ sample.control
+ sample.milliseconds
+ sample.load
+ sample.colour
+ sample.bin
+ sample.bucket
+ sample.drift
+ sample.step
+ sample.write_me
+ sample.lights
+ sample.magnitude
+ sample.pdu
+ sample.recv_pdu
+ sample.xmit_pdu
+ sample.noinst
+}
+EOF
+
+# real QA test starts here
+
+# Test out -v and -s
+_test_file_size 2000BYTE "4000bytes" 2 4000
+_test_file_size 1024b "4K" 4 4096
+_test_file_size 10Mbyte "4kilobytes" 1 4096
+_test_file_size 3K 4194B 2 4194
+_test_sample_size 3 8 3
+_test_time_size 3.5secs 5secs 2 5
+
+# Some error conditions
+$pmlogger -v 3bozobyte -s 10 -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+$pmlogger -v 5 -s 3bozobyte -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+$pmlogger -v-1 -s 10 -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+$pmlogger -v 5 -s-1 -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+$pmlogger -v 0.5Mbyte -s 10 -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+$pmlogger -v 5 -s 0.5K -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+$pmlogger -v 0.03 -s 10 -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+$pmlogger -v 5 -s 0.03 -c /dev/null $tmp 2>&1 | sed -e '/Usage/q'
+
+# success, all done
+exit
diff --git a/qa/440.out b/qa/440.out
new file mode 100644
index 0000000..f72c60c
--- /dev/null
+++ b/qa/440.out
@@ -0,0 +1,23 @@
+QA output created by 440
+Log size for 4000bytes and volume size for 2000BYTE is correct
+Log size for 4K and volume size for 1024b is correct
+Log size for 4kilobytes and volume size for 10Mbyte is correct
+Log size for 4194B and volume size for 3K is correct
+Log size for 8 and volume size for 3 is correct
+Log time for 5 and volume time for 3.5secs is correct
+pmlogger: illegal size argument '3bozobyte' for volume size
+Usage: pmlogger [options] archive
+pmlogger: illegal size argument '3bozobyte' for exit size
+Usage: pmlogger [options] archive
+pmlogger: illegal size argument '-1' for volume size
+Usage: pmlogger [options] archive
+pmlogger: illegal size argument '-1' for exit size
+Usage: pmlogger [options] archive
+pmlogger: illegal size argument '0.5Mbyte' for volume size
+Usage: pmlogger [options] archive
+pmlogger: illegal size argument '0.5K' for exit size
+Usage: pmlogger [options] archive
+pmlogger: illegal size argument '0.03' for volume size
+Usage: pmlogger [options] archive
+pmlogger: illegal size argument '0.03' for exit size
+Usage: pmlogger [options] archive
diff --git a/qa/441 b/qa/441
new file mode 100755
index 0000000..b9dfefa
--- /dev/null
+++ b/qa/441
@@ -0,0 +1,53 @@
+#!/bin/sh
+# PCP QA Test No. 441
+# check 2^31 volume switching for pmlogger
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+rm -f $seq.full
+./src/mkbig1 > $seq.full 2>&1
+[ $? -eq 0 ] || _notrun `cat $seq.full`
+
+# expect 2 volumes, and both < 2^31 bytes in size
+#
+limit=2147483648
+nvol=`ls src/big1.? | wc -l | sed -e 's/ //g'`
+if [ $nvol -ne 2 ]
+then
+ ls -l src/big1.?
+ echo "Error: expecting 2 volumes, found $nvol"
+ status=1
+fi
+
+for vol in src/big1.?
+do
+ size=`_filesize $vol`
+ if [ -z "$size" ]
+ then
+ stat $vol
+ echo "Error: cannot extract size for volume $vol"
+ status=1
+ elif [ "$size" -ge $limit ]
+ then
+ ls -l $vol
+ echo "Error: size ($size) exceeds limit ($limit)"
+ status=1
+ fi
+done
+
+# success, all done
+exit
diff --git a/qa/441.out b/qa/441.out
new file mode 100644
index 0000000..321571f
--- /dev/null
+++ b/qa/441.out
@@ -0,0 +1 @@
+QA output created by 441
diff --git a/qa/442 b/qa/442
new file mode 100755
index 0000000..a635112
--- /dev/null
+++ b/qa/442
@@ -0,0 +1,95 @@
+#!/bin/sh
+# PCP QA Test No. 442
+# check 2^31 volume switching for pmlogextract
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.full src/big2.* src/big3.*
+./src/mkbig1 > $seq.full 2>&1
+[ $? -eq 0 ] || _notrun `cat $seq.full`
+
+# 10GB should keep us out of trouble
+free=`_check_freespace 10240`
+[ -z "$free" ] || _notrun $free
+
+status=1 # failure is the default!
+trap "rm -f $tmp.* src/big2.* src/big3.*; exit \$status" 0 1 2 3 15
+
+for file in src/big1.*
+do
+ ln $file `echo $file | sed -e 's/big1/big2/'`
+ :
+done
+ls -l src/big1* src/big2* >$seq.full 2>&1
+
+_filter()
+{
+ sed \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+# real QA test starts here
+pmlogextract src/big1 src/big2 src/big3 2>&1 | _filter
+ls -l src/big3* >>$seq.full 2>&1
+
+# expect 3 volumes, and all < 2^31 bytes in size
+#
+limit=2147483648
+nvol=`ls src/big3.? | wc -l | sed -e 's/ //g'`
+if [ $nvol -ne 3 ]
+then
+ ls -l src/big3.?
+ echo "Error: expecting 3 volumes, found $nvol"
+ status=1
+fi
+
+echo "0" >$tmp.bc
+for vol in src/big1.?
+do
+ size=`_filesize $vol`
+ echo "+2*$size" >>$tmp.bc
+done
+
+for vol in src/big3.?
+do
+ size=`_filesize $vol`
+ if [ -z "$size" ]
+ then
+ stat $vol
+ echo "Error: cannot extract size for volume $vol"
+ status=1
+ elif [ "$size" -ge $limit ]
+ then
+ ls -l $vol
+ echo "Error: size ($size) exceeds limit ($limit)"
+ status=1
+ fi
+ echo "-$size" >>$tmp.bc
+done
+
+cat $tmp.bc >>$seq.full
+echo
+echo "sum(input data volume sizes) - sum(output data volume sizes)"
+( tr '\012' ' ' <$tmp.bc ; echo ) | bc
+
+echo
+echo "Temporal Index Entries ..."
+for arch in src/big1 src/big2 src/big3
+do
+ log=`echo $arch | sed -e 's/src\///g'`
+ echo "$log: `pmdumplog -t $arch | grep '^[0-9]' | wc -l | sed -e 's/ //g'`"
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/442.out b/qa/442.out
new file mode 100644
index 0000000..61aad15
--- /dev/null
+++ b/qa/442.out
@@ -0,0 +1,11 @@
+QA output created by 442
+pmlogextract: New log volume 1, at TIMESTAMP
+pmlogextract: New log volume 2, at TIMESTAMP
+
+sum(input data volume sizes) - sum(output data volume sizes)
+132
+
+Temporal Index Entries ...
+big1: 2051
+big2: 2051
+big3: 4100
diff --git a/qa/443 b/qa/443
new file mode 100755
index 0000000..b4af59a
--- /dev/null
+++ b/qa/443
@@ -0,0 +1,136 @@
+#!/bin/sh
+# PCP QA Test No. 443
+# error handling and basic functionality for pmevent
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3805 ] || _notrun "PCP version is too old"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+host=`hostname`
+
+_filter_usage()
+{
+ sed \
+ -e '/^first=/s/=.*/=.../' \
+ -e '/^now=/s/=.*/=.../' \
+ -e '/^last=/s/=.*/=.../' \
+ -e '/Usage/q' \
+ -e '/illegal option/{
+s/illegal/invalid/
+s/.$/'"'&'"'/
+}' \
+ -e '/invalid option/s/[^'"'"']$/'"'&'"'/'
+}
+
+_filter()
+{
+ sed \
+ -e "s/host: $host/host: localhost/g" \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+_run()
+{
+ echo "=== $* ==="
+ pmevent $* 2>&1 | _filter_usage
+}
+
+_run_sudo()
+{
+ echo "=== $* ==="
+ $sudo pmevent $* 2>&1 | _filter_usage
+}
+
+_run_ok()
+{
+ echo "=== $* ==="
+ pmstore sample.event.reset 0 >/dev/null 2>&1
+ pmstore sampledso.event.reset 0 >/dev/null 2>&1
+ pmevent $* 2>&1 | _filter
+}
+
+_run_arch()
+{
+ echo "=== $* ==="
+ pmevent $* 2>&1
+}
+
+# real QA test starts here
+
+# command line arg syntax and semantic checks
+#
+_run -a foo -a bar
+_run -h foo -h bar
+_run -a foo -h bar
+_run -h foo -a bar
+_run -D blah
+_run -g -p 1234
+_run -p 1234 -g
+_run -p 123foo
+_run_sudo -K blah,a,/no/such/file,no_init
+_run -s 456bar
+_run -s 3 -T+5min
+_run -T+5min -s 10
+_run -t 10foobars
+_run -Z GMT -z
+_run -z -Z EST
+_run -q
+_run -a foo
+
+# metric spec syntax and semantic checks
+#
+echo
+echo "--- bad metric spec ---"
+_run /some/path/no/metric/
+_run somehost_and_no_metric:
+
+echo
+echo "--- illegal mixed sources ---"
+_run src/eventrec-old/sample.event.records foo/bar
+_run -a /some/path foo:bar
+_run -a src/eventrec-old src/eventrec-old/sample.event.records foo/bar
+_run localhost:sample.event.records foo:bar
+_run -h somehost foo/bar
+_run -h localhost localhost:sample.event.records foo:bar
+_run_sudo @:sampledso.event.records foo:bar
+
+echo
+echo "--- problems at source of metrics ---"
+_run -h no.such.host sample.event.records
+_run -a /no/such/archive sample.event.records
+_run_sudo -L sample.event.records
+_run sample.event.records sample.colour
+_run -Dappl0 "sample.colour[red]"
+_run -Dappl0 "sample.event.no_indom_records[red]"
+
+echo
+echo "--- should be ok ---"
+_run_ok -t 10msec -s 1 sample.event.records sample.event.records
+_run_ok -t 10msec -s 8 sample.event.records
+_run_ok -t 10msec -s 3 'sample.event.records[bogus]'
+
+echo
+echo "--- archive exercises ---"
+_run_arch -z src/eventrec-old/sample.event.records
+_run_arch -z -S@15:26:11.073 -s 2 -a src/eventrec-old sample.event.records
+_run_arch -z -O+2.5 -T+4.5 -a src/eventrec-old sample.event.records
+
+echo
+echo "--- highres events ---"
+_run_arch -z src/eventrec/sample.event.highres_records
+
+# success, all done
+exit
diff --git a/qa/443.out b/qa/443.out
new file mode 100644
index 0000000..f72e7d5
--- /dev/null
+++ b/qa/443.out
@@ -0,0 +1,369 @@
+QA output created by 443
+=== -a foo -a bar ===
+pmevent: at most one of -a/-h/-L allowed
+Usage: pmevent [options] metricname ...
+=== -h foo -h bar ===
+pmevent: at most one of -a/-h/-L allowed
+Usage: pmevent [options] metricname ...
+=== -a foo -h bar ===
+pmevent: at most one of -a/-h/-L allowed
+Usage: pmevent [options] metricname ...
+=== -h foo -a bar ===
+pmevent: at most one of -a/-h/-L allowed
+Usage: pmevent [options] metricname ...
+=== -D blah ===
+pmevent: unrecognized debug flag specification (blah)
+Usage: pmevent [options] metricname ...
+=== -g -p 1234 ===
+pmevent: at most one of -g and -p allowed
+Usage: pmevent [options] metricname ...
+=== -p 1234 -g ===
+pmevent: at most one of -g and -p allowed
+Usage: pmevent [options] metricname ...
+=== -p 123foo ===
+pmevent: -p requires a positive numeric argument
+Usage: pmevent [options] metricname ...
+=== -K blah,a,/no/such/file,no_init ===
+pmevent: illegal -K argument
+bad op in spec
+Usage: pmevent [options] metricname ...
+=== -s 456bar ===
+pmevent: -s requires a positive numeric argument
+Usage: pmevent [options] metricname ...
+=== -s 3 -T+5min ===
+pmevent: at most one of -s and -T allowed
+Usage: pmevent [options] metricname ...
+=== -T+5min -s 10 ===
+pmevent: at most one of -s and -T allowed
+Usage: pmevent [options] metricname ...
+=== -t 10foobars ===
+pmevent: illegal -t argument
+10foobars
+ ^ -- unexpected value
+Usage: pmevent [options] metricname ...
+=== -Z GMT -z ===
+pmevent: at most one of -Z and/or -z allowed
+Usage: pmevent [options] metricname ...
+=== -z -Z EST ===
+pmevent: at most one of -Z and/or -z allowed
+Usage: pmevent [options] metricname ...
+=== -q ===
+pmevent: invalid option -- 'q'
+Usage: pmevent [options] metricname ...
+=== -a foo ===
+Error: no metricname specified
+
+--- bad metric spec ---
+=== /some/path/no/metric/ ===
+pmevent: bad metric specification
+/some/path/no/metric/
+ ^ -- performance metric name expected
+=== somehost_and_no_metric: ===
+pmevent: bad metric specification
+somehost_and_no_metric:
+ ^ -- performance metric name expected
+
+--- illegal mixed sources ---
+=== src/eventrec-old/sample.event.records foo/bar ===
+pmevent: foo/bar: only one metric source allowed, found archives src/eventrec-old and foo
+=== -a /some/path foo:bar ===
+pmevent: foo:bar: only one type of metric source allowed
+=== -a src/eventrec-old src/eventrec-old/sample.event.records foo/bar ===
+pmevent: foo/bar: only one metric source allowed, found archives src/eventrec-old and foo
+=== localhost:sample.event.records foo:bar ===
+pmevent: foo:bar: only one metric source allowed, found hosts localhost and foo
+=== -h somehost foo/bar ===
+pmevent: foo/bar: only one type of metric source allowed
+=== -h localhost localhost:sample.event.records foo:bar ===
+pmevent: foo:bar: only one metric source allowed, found hosts localhost and foo
+=== @:sampledso.event.records foo:bar ===
+pmevent: foo:bar: only one type of metric source allowed
+
+--- problems at source of metrics ---
+=== -h no.such.host sample.event.records ===
+pmevent: Cannot connect to PMCD on host "no.such.host": No route to host
+=== -a /no/such/archive sample.event.records ===
+pmevent: Cannot open archive "/no/such/archive": No such file or directory
+=== -L sample.event.records ===
+pmevent: pmLookupDesc: sample.event.records: No PMCD agent for domain of request
+=== sample.event.records sample.colour ===
+pmevent: sample.colour: metrics must be of event type
+=== -Dappl0 sample.colour[red] ===
+pmevent: sample.colour: metrics must be of event type
+=== -Dappl0 sample.event.no_indom_records[red] ===
+pmevent: sample.event.no_indom_records[red]: singular metrics do not have instances
+
+--- should be ok ---
+=== -t 10msec -s 1 sample.event.records sample.event.records ===
+host: localhost
+samples: 1
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+=== -t 10msec -s 8 sample.event.records ===
+host: localhost
+samples: 8
+interval: 0.01 sec
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #4"
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #5"
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #7"
+=== -t 10msec -s 3 sample.event.records[bogus] ===
+host: localhost
+samples: 3
+interval: 0.01 sec
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+
+--- archive exercises ---
+=== -z src/eventrec-old/sample.event.records ===
+Note: timezone set to local timezone of host "bozo" from archive
+
+archive: src/eventrec-old
+host: bozo
+start: Sat Dec 4 15:26:09 2010
+end: Sat Dec 4 15:26:14 2010
+samples: all
+15:26:10.073 sample.event.records: 5 event records
+ 15:26:00.073 --- event record [0] ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ 15:26:01.073 --- event record [1] ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ 15:26:02.073 --- event record [2] flags 0x2 (start) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ 15:26:03.073 --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ 15:26:04.073 --- event record [4] ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+15:26:11.073 sample.event.records: 0 event records
+15:26:12.074 sample.event.records: 1 event records
+ 15:26:02.073 --- event record [0] ---
+ ==> No parameters
+15:26:13.073 sample.event.records: 2 event records
+ 15:26:03.073 --- event record [0] ---
+ sample.event.type 1
+ 15:26:04.073 --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+15:26:14.073 sample.event.records: 5 event records
+ 15:26:04.073 --- event record [0] ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ 15:26:05.073 --- event record [1] ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ 15:26:06.073 --- event record [2] flags 0x2 (start) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ 15:26:07.073 --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ 15:26:08.073 --- event record [4] ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+=== -z -S@15:26:11.073 -s 2 -a src/eventrec-old sample.event.records ===
+Note: timezone set to local timezone of host "bozo" from archive
+
+archive: src/eventrec-old
+host: bozo
+start: Sat Dec 4 15:26:11 2010
+end: Sat Dec 4 15:26:14 2010
+samples: 2
+15:26:11.073 sample.event.records: 0 event records
+15:26:12.074 sample.event.records: 1 event records
+ 15:26:02.073 --- event record [0] ---
+ ==> No parameters
+=== -z -O+2.5 -T+4.5 -a src/eventrec-old sample.event.records ===
+Note: timezone set to local timezone of host "bozo" from archive
+
+archive: src/eventrec-old
+host: bozo
+start: Sat Dec 4 15:26:09 2010
+end: Sat Dec 4 15:26:13 2010
+samples: all
+15:26:12.074 sample.event.records: 1 event records
+ 15:26:02.073 --- event record [0] ---
+ ==> No parameters
+15:26:13.073 sample.event.records: 2 event records
+ 15:26:03.073 --- event record [0] ---
+ sample.event.type 1
+ 15:26:04.073 --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+
+--- highres events ---
+=== -z src/eventrec/sample.event.highres_records ===
+Note: timezone set to local timezone of host "slick" from archive
+
+archive: src/eventrec
+host: slick
+start: Wed Sep 3 13:42:53 2014
+end: Wed Sep 3 13:42:58 2014
+samples: all
+13:42:54.146 sample.event.highres_records[fungus]: 1 event records
+ 13:42:44.146207109 --- event record [0] flags 0x1 (point) ---
+sample.event.highres_records[bogus]: 1 event records
+ 13:42:54.146208753 --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+13:42:55.146 sample.event.highres_records[fungus]: 2 event records
+ 13:42:45.146290917 --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ 13:42:46.146290917 --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.highres_records[bogus]: 1 event records
+ 13:42:55.146293674 --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+13:42:56.146 sample.event.highres_records[fungus]: 5 event records
+ 13:42:46.146187279 --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ 13:42:47.146187279 --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ 13:42:48.146187279 --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ 13:42:49.146187279 --- event record [3] flags 0x80000000 (missed) ---
+ ==> 0 missed event records
+ 13:42:50.146187279 --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.highres_records[bogus]: 2 event records
+ 13:42:56.146194604 --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #3"
+ 13:42:56.146194604 --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+13:42:57.146 sample.event.highres_records[fungus]: 0 event records
+sample.event.highres_records[bogus]: 1 event records
+ 13:42:57.146218425 --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #4"
+13:42:58.146 sample.event.highres_records[fungus]: 1 event records
+ 13:42:48.146230678 --- event record [0] flags 0x1 (point) ---
+sample.event.highres_records[bogus]: 1 event records
+ 13:42:58.146232332 --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #5"
diff --git a/qa/444 b/qa/444
new file mode 100755
index 0000000..75ec86b
--- /dev/null
+++ b/qa/444
@@ -0,0 +1,58 @@
+#!/bin/sh
+# PCP QA Test No. 444
+# pmid and desc cacheing in pmevent
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3805 ]
+then
+ ln $seq.out.3 $seq.out || exit 1
+elif [ $PCP_VER -ge 3803 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+host=`hostname`
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmstore sample.event.reset 0 >/dev/null 2>&1
+pmevent -Dpdu -t 10msec -s 20 sample.event.records >$tmp.out 2>&1
+cat $tmp.out >>$seq.full
+
+# Need to make this not host specific ...
+# 2.6.0 (pmcd.client.whoami): numval: 1 valfmt: 2 vlist[]:
+# value "bozo-laptop (127.0.0.1) pmevent -Dpdu -t 10msec -s 20 sample.event.records"
+# pmXmitPDU: RESULT fd=<fd> len=124
+#
+sed <$tmp.out \
+ -e '/^[0-9][0-9]*:/d' \
+ -e 's/^\[[0-9]*]//' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e "s/ value \"$host\"/ value \"HOST\"/g" \
+ -e "s/host: $host/host: localhost/g" \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ -e 's/fd=[0-9][0-9]*/fd=<fd>/g' \
+| $PCP_AWK_PROG ' BEGIN { hostskip=0 }
+/^pmXmitPDU: FETCH fd=<fd> len=/ { hostskip++; }
+/^pmGetPDU: RESULT fd=<fd> len=/ { if (hostskip < 2) { next } }
+/pmcd.client.whoami/ { print; skip=2; next }
+skip > 0 { print "blah blah ..."; skip--; next }
+ { print }'
+
+# success, all done
+exit
diff --git a/qa/444.out.1 b/qa/444.out.1
new file mode 100644
index 0000000..f43b488
--- /dev/null
+++ b/qa/444.out.1
@@ -0,0 +1,419 @@
+QA output created by 444
+pmGetPDU: ERROR fd=<fd> len=20 from=0
+pmXmitPDU: CREDS fd=<fd> len=20
+pmXmitPDU: PMNS_NAMES fd=<fd> len=48
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=48
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmResult ... numpmid: 1
+ 2.6.0 (pmcd.client.whoami): numval: 1 valfmt: 2 vlist[]:
+blah blah ...
+blah blah ...
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+host: localhost
+samples: 20
+interval: 0.01 sec
+pmXmitPDU: PROFILE fd=<fd> len=28
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=132 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+pmXmitPDU: INSTANCE_REQ fd=<fd> len=32
+pmGetPDU: INSTANCE fd=<fd> len=36 from=0
+sample.event.records[fungus]: 0 event records
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: INSTANCE_REQ fd=<fd> len=32
+pmGetPDU: INSTANCE fd=<fd> len=36 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+sample.event.records[bogus]: 2 event records
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=116 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=172 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=48 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=420 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_32 -14
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_float -17
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=100 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #4"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=116 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #5"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=204 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=388 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #7"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=100 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #8"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=148 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #9"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=176 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #10"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=392 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #11"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=136 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #12"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=120 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #13"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=176 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #14"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=424 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #15"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=104 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #16"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=120 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #17"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=208 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #18"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=392 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #19"
diff --git a/qa/444.out.2 b/qa/444.out.2
new file mode 100644
index 0000000..edc11b0
--- /dev/null
+++ b/qa/444.out.2
@@ -0,0 +1,425 @@
+QA output created by 444
+pmGetPDU: ERROR fd=<fd> len=20 from=0
+pmXmitPDU: CREDS fd=<fd> len=20
+pmXmitPDU: PMNS_NAMES fd=<fd> len=48
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=48
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmResult ... numpmid: 1
+ 2.6.0 (pmcd.client.whoami): numval: 1 valfmt: 2 vlist[]:
+blah blah ...
+blah blah ...
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=44
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: PROFILE fd=<fd> len=28
+pmXmitPDU: FETCH fd=<fd> len=32
+pmResult ... numpmid: 1
+ 2.0.21 (pmcd.hostname): numval: 1 valfmt: 1 vlist[]:
+ value "HOST"
+host: localhost
+samples: 20
+interval: 0.01 sec
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=132 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+pmXmitPDU: INSTANCE_REQ fd=<fd> len=32
+pmGetPDU: INSTANCE fd=<fd> len=36 from=0
+sample.event.records[fungus]: 0 event records
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: INSTANCE_REQ fd=<fd> len=32
+pmGetPDU: INSTANCE fd=<fd> len=36 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+sample.event.records[bogus]: 2 event records
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=116 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=172 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=48 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=420 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_32 -14
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_float -17
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=100 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #4"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=116 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #5"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=204 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=388 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #7"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=100 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #8"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=148 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #9"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=176 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #10"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=392 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #11"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=136 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #12"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=120 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #13"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=176 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #14"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=424 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #15"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=104 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #16"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=120 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #17"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=208 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #18"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=392 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #19"
diff --git a/qa/444.out.3 b/qa/444.out.3
new file mode 100644
index 0000000..34e0428
--- /dev/null
+++ b/qa/444.out.3
@@ -0,0 +1,425 @@
+QA output created by 444
+pmGetPDU: ERROR fd=<fd> len=20 from=0
+pmXmitPDU: CREDS fd=<fd> len=20
+pmXmitPDU: PMNS_NAMES fd=<fd> len=44
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: PROFILE fd=<fd> len=28
+pmXmitPDU: FETCH fd=<fd> len=32
+pmResult ... numpmid: 1
+ 2.0.21 (pmcd.hostname): numval: 1 valfmt: 1 vlist[]:
+ value "HOST"
+pmXmitPDU: PMNS_NAMES fd=<fd> len=48
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=48
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmResult ... numpmid: 1
+ 2.6.0 (pmcd.client.whoami): numval: 1 valfmt: 2 vlist[]:
+blah blah ...
+blah blah ...
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+host: localhost
+samples: 20
+interval: 0.01 sec
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=132 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+pmXmitPDU: INSTANCE_REQ fd=<fd> len=32
+pmGetPDU: INSTANCE fd=<fd> len=36 from=0
+sample.event.records[fungus]: 0 event records
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+pmXmitPDU: INSTANCE_REQ fd=<fd> len=32
+pmGetPDU: INSTANCE fd=<fd> len=36 from=0
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+sample.event.records[bogus]: 2 event records
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=116 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=172 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=48 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=420 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+pmXmitPDU: PMNS_NAMES fd=<fd> len=40
+pmGetPDU: PMNS_IDS fd=<fd> len=24 from=0
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_32 -14
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: ERROR fd=<fd> len=16 from=0
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=52 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_float -17
+pmXmitPDU: PMNS_IDS fd=<fd> len=24
+pmGetPDU: PMNS_NAMES fd=<fd> len=56 from=0
+pmXmitPDU: DESC_REQ fd=<fd> len=16
+pmGetPDU: DESC fd=<fd> len=32 from=0
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=100 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #4"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=116 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #5"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=204 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=388 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #7"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=100 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #8"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=148 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #9"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=176 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #10"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=392 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #11"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=136 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #12"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=120 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #13"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=176 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #14"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=424 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #15"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=104 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [0 event records]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #16"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=120 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [1 event record timestamp TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #17"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=208 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [2 event records timestamps TIMESTAMP...TIMESTAMP]
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #18"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+pmXmitPDU: FETCH fd=<fd> len=32
+pmGetPDU: RESULT fd=<fd> len=392 from=0
+pmResult ... numpmid: 1
+ 29.0.136 (sample.event.records): numval: 2 valfmt: 2 vlist[]:
+ inst [0 or "fungus"] value [5 event records (7 missed) timestamps TIMESTAMP...TIMESTAMP]
+ inst [1 or "bogus"] value [1 event record timestamp TIMESTAMP]
+sample.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sample.event.type 4
+ sample.event.param_u64 5
+ sample.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 7
+ sample.event.param_double 8
+ sample.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sample.event.type 10
+ sample.event.param_u64 11
+ sample.event.param_string "twelve"
+ sample.event.param_string "thirteen"
+ sample.event.param_32 -14
+ sample.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sample.event.type 16
+ sample.event.param_float -17
+ sample.event.param_aggregate [0103070f1f3f7fff]
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #19"
diff --git a/qa/445 b/qa/445
new file mode 100755
index 0000000..f94a5d3
--- /dev/null
+++ b/qa/445
@@ -0,0 +1,118 @@
+#! /bin/sh
+# PCP QA Test No. 445
+# check bug #580005 - trace PMDA doesn't exit if address in use
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=`hostname`
+
+_cleanup()
+{
+ if [ -f $tmp.bak ]
+ then
+ $sudo cp $tmp.bak $PCP_PMCDCONF_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ fi
+ $sudo rm -f $tmp.*
+}
+
+status=1 # failure is the default!
+logging=0
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+case "$PCP_PLATFORM" in
+irix)
+ TRACELOG=$PCP_LOG_DIR/trace.log
+ cat >> $tmp.conf << EOF
+# temporary pmcd.conf for qa/$seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+trace 10 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 10 -l ${TRACELOG}1
+trace 99 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 99 -l ${TRACELOG}2
+EOF
+ ;;
+
+linux)
+ TRACELOG=$PCP_LOG_DIR/pmcd/trace.log
+ cat >> $tmp.conf << EOF
+# temporary pmcd.conf for qa/$seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+trace 10 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 10 -l ${TRACELOG}1
+trace 99 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 99 -l ${TRACELOG}2
+EOF
+ ;;
+
+darwin)
+ TRACELOG=$PCP_LOG_DIR/pmcd/trace.log
+ cat >> $tmp.conf << EOF
+# temporary pmcd.conf for qa/$seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+trace 10 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 10 -l ${TRACELOG}1
+trace 99 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 99 -l ${TRACELOG}2
+EOF
+ ;;
+
+solaris)
+ TRACELOG=$PCP_LOG_DIR/pmcd/trace.log
+ cat >> $tmp.conf << EOF
+# temporary pmcd.conf for qa/$seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+trace 10 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 10 -l ${TRACELOG}1
+trace 99 pipe binary $PCP_PMDAS_DIR/trace/pmdatrace -d 99 -l ${TRACELOG}2
+EOF
+ ;;
+
+*)
+ echo "Unknown platfrom $PCP_PLATFORM"
+ exit 1
+ ;;
+esac
+
+# real QA test starts here
+$sudo rm -f $tmp.bak ${TRACELOG}? $seq.full
+$sudo cp $PCP_PMCDCONF_PATH $tmp.bak
+$sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+sleep 15
+
+for log in ${TRACELOG}?
+do
+ fgrep "Address already in use" <$log >/dev/null 2>&1
+ status=$?
+ if [ $status -eq 0 ]
+ then
+ # filter the log ...
+ sed <$log \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/'\
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/g' \
+ -e "s/$host/HOST/g" \
+ -e 's/\([0-9][0-9]*\)/PID/'
+ break
+ fi
+done
+
+if [ $status -ne 0 ]
+then
+ echo "--- No match on 'Address already in use' in trace logs ---"
+ echo "--- trace log #1 ---"
+ cat ${TRACELOG}1
+ echo "--- trace log #2 ---"
+ cat ${TRACELOG}2
+ echo "--- End of trace logs ---"
+fi
+
+exit
diff --git a/qa/445.out b/qa/445.out
new file mode 100644
index 0000000..a73a15a
--- /dev/null
+++ b/qa/445.out
@@ -0,0 +1,12 @@
+QA output created by 445
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Log for pmdatrace on HOST started DATE
+
+[TIMESTAMP] pmdatrace(PID) Error: bind(4323): Address already in use
+
+Log finished DATE
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/446 b/qa/446
new file mode 100755
index 0000000..35fd834
--- /dev/null
+++ b/qa/446
@@ -0,0 +1,82 @@
+#! /bin/sh
+# PCP QA Test No. 446
+# checks contents of trace stub library
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+if [ $PCP_PLATFORM = irix ]
+then
+ NM_ARG='-B'
+ libmajor=1
+ DSO_VERSION=$DSO_SUFFIX.$libmajor
+elif [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = solaris ]
+then
+ # same options for Linux and OpenSolaris
+ NM_ARG='--dynamic -B'
+ libmajor=2
+ DSO_VERSION=$DSO_SUFFIX.$libmajor
+elif [ $PCP_PLATFORM = darwin ]
+then
+ NM_ARG=''
+ libmajor=2
+ DSO_VERSION=$libmajor.$DSO_SUFFIX
+else
+ echo "Arrgh ... need configuration for $PCP_PLATFORM"
+ exit 1
+fi
+
+[ -f $PCP_LIB_DIR/libpcp_trace.$DSO_VERSION ] || _notrun "No trace shared library available"
+
+status=1 # failure is the default!
+trap "$sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+get_syms()
+{
+ # gets all code symbols, prints the name, & strips internal names
+ nm $NM_ARG $1 | grep " T " | $PCP_AWK_PROG '{print $3}' | grep -v "_" | grep -v "^.MIPS."
+}
+
+# real QA test starts here
+cd $PCP_DEMOS_DIR/trace
+unset ROOT TOOLROOT MAKEFLAGS
+$sudo make -f Makefile.stub clobber 2>&1 >/dev/null
+$sudo make -f Makefile.stub lib/libpcp_trace.$DSO_VERSION 2>&1 >$tmp.make
+if [ $? -ne 0 ]
+then
+ echo Stub library make failed. Heres the make output ...
+ cat $tmp.make
+else
+ echo make succeeded.
+fi
+
+get_syms $PCP_LIB_DIR/libpcp_trace.$DSO_VERSION > $tmp.actual
+get_syms $PCP_DEMOS_DIR/trace/lib/libpcp_trace.$DSO_VERSION > $tmp.stub
+
+diff $tmp.actual $tmp.stub >/dev/null
+status=$?
+
+$PCP_ECHO_PROG $PCP_ECHO_N "checking for actual/stub lib symbol differences ... ""$PCP_ECHO_C"
+if [ $status -ne 0 ]
+then
+ $PCP_ECHO_PROG files differ.
+ echo "--- Symbols from /usr/lib/libpcp_trace.... ---"
+ cat $tmp.actual
+ echo
+ echo "--- Symbols from demos libpcp_trace.... ---"
+ cat $tmp.stub
+else
+ $PCP_ECHO_PROG none found.
+fi
+
+exit
diff --git a/qa/446.out b/qa/446.out
new file mode 100644
index 0000000..8111972
--- /dev/null
+++ b/qa/446.out
@@ -0,0 +1,3 @@
+QA output created by 446
+make succeeded.
+checking for actual/stub lib symbol differences ... none found.
diff --git a/qa/447 b/qa/447
new file mode 100755
index 0000000..1a6651d
--- /dev/null
+++ b/qa/447
@@ -0,0 +1,46 @@
+#!/bin/sh
+# PCP QA Test No. 447
+# instances for event records
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmevent >/dev/null 2>&1 || _notrun "pmevent executable not found"
+
+status=0 # success is the default!
+host=`hostname`
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s/host: $host/host: localhost/g" \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+_run()
+{
+ echo
+ echo "=== $* ==="
+ pmstore sample.event.reset 0 >/dev/null 2>&1
+ pmstore sampledso.event.reset 0 >/dev/null 2>&1
+ pmevent $* 2>&1 | _filter
+}
+
+# real QA test starts here
+_run -t 0.1 -s 4 sampledso.event.records
+_run -t 0.1 -s 4 'sampledso.event.records[fungus,bogus]'
+_run -t 0.1 -s 4 'sampledso.event.records[fungus]' 'sampledso.event.records[bogus]'
+_run -t 0.1 -s 4 sampledso.event.no_indom_records
+
+# success, all done
+exit
diff --git a/qa/447.out b/qa/447.out
new file mode 100644
index 0000000..a082476
--- /dev/null
+++ b/qa/447.out
@@ -0,0 +1,178 @@
+QA output created by 447
+
+=== -t 0.1 -s 4 sampledso.event.records ===
+host: localhost
+samples: 4
+interval: 0.10 sec
+sampledso.event.records[fungus]: 0 event records
+sampledso.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
+sampledso.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sampledso.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #1"
+sampledso.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.type 2
+ sampledso.event.param_64 -3
+sampledso.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #2"
+sampledso.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sampledso.event.type 4
+ sampledso.event.param_u64 5
+ sampledso.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.type 7
+ sampledso.event.param_double 8
+ sampledso.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sampledso.event.type 10
+ sampledso.event.param_u64 11
+ sampledso.event.param_string "twelve"
+ sampledso.event.param_string "thirteen"
+ sampledso.event.param_32 -14
+ sampledso.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sampledso.event.type 16
+ sampledso.event.param_float -17
+ sampledso.event.param_aggregate [0103070f1f3f7fff]
+sampledso.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
+
+=== -t 0.1 -s 4 sampledso.event.records[fungus,bogus] ===
+host: localhost
+samples: 4
+interval: 0.10 sec
+sampledso.event.records[fungus]: 0 event records
+sampledso.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
+sampledso.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sampledso.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #1"
+sampledso.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.type 2
+ sampledso.event.param_64 -3
+sampledso.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #2"
+sampledso.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sampledso.event.type 4
+ sampledso.event.param_u64 5
+ sampledso.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.type 7
+ sampledso.event.param_double 8
+ sampledso.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sampledso.event.type 10
+ sampledso.event.param_u64 11
+ sampledso.event.param_string "twelve"
+ sampledso.event.param_string "thirteen"
+ sampledso.event.param_32 -14
+ sampledso.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sampledso.event.type 16
+ sampledso.event.param_float -17
+ sampledso.event.param_aggregate [0103070f1f3f7fff]
+sampledso.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
+
+=== -t 0.1 -s 4 sampledso.event.records[fungus] sampledso.event.records[bogus] ===
+host: localhost
+samples: 4
+interval: 0.10 sec
+sampledso.event.records[fungus]: 0 event records
+sampledso.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
+sampledso.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sampledso.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #1"
+sampledso.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.type 2
+ sampledso.event.param_64 -3
+sampledso.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #2"
+sampledso.event.records[fungus]: 5 event records
+ TIMESTAMP --- event record [0] flags 0x1a (start,id,parent) ---
+ sampledso.event.type 4
+ sampledso.event.param_u64 5
+ sampledso.event.param_string "6"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.type 7
+ sampledso.event.param_double 8
+ sampledso.event.param_double -9
+ TIMESTAMP --- event record [2] flags 0x4 (end) ---
+ sampledso.event.type 10
+ sampledso.event.param_u64 11
+ sampledso.event.param_string "twelve"
+ sampledso.event.param_string "thirteen"
+ sampledso.event.param_32 -14
+ sampledso.event.param_u32 15
+ TIMESTAMP --- event record [3] flags 0x80000000 (missed) ---
+ ==> 7 missed event records
+ TIMESTAMP --- event record [4] flags 0x1 (point) ---
+ sampledso.event.type 16
+ sampledso.event.param_float -17
+ sampledso.event.param_aggregate [0103070f1f3f7fff]
+sampledso.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
+
+=== -t 0.1 -s 4 sampledso.event.no_indom_records ===
+host: localhost
+samples: 4
+interval: 0.10 sec
+sampledso.event.no_indom_records: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #0"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
+sampledso.event.no_indom_records: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #1"
+sampledso.event.no_indom_records: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #2"
+sampledso.event.no_indom_records: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sampledso.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sampledso.event.param_string "bingo!"
diff --git a/qa/448 b/qa/448
new file mode 100755
index 0000000..17b466e
--- /dev/null
+++ b/qa/448
@@ -0,0 +1,65 @@
+#!/bin/sh
+# PCP QA Test No. 448
+# pmGetConfig exerciser
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -lt 3600 ] && _notrun "Fix for __pmConfig is in PCP 3.6"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "error cases ..."
+echo "bad variable"
+src/getconfig NO_SUCH_VAR
+echo "exit status=$?"
+
+echo
+echo "bad \$PCP_CONF"
+PCP_CONF=/no/such/file src/getconfig PCP_BIN_DIR
+echo "exit status=$?"
+
+echo
+echo "bad \$PCP_DIR"
+PCP_DIR=/no/such/directory src/getconfig PCP_BIN_DIR
+echo "exit status=$?"
+
+if [ ! -r $PCP_DIR/etc/pcp.conf ]
+then
+ echo "Error: unable to read $PCP_DIR/etc/pcp.conf!"
+ exit 1
+fi
+
+echo
+echo "all vars in pcp.conf ... report only errors"
+sed <$PCP_DIR/etc/pcp.conf \
+ -e '/^#/d' \
+ -e '/^[ ]*$/d' \
+ -e 's/[ ][ ]*"/"/' \
+ -e 's/"[ ][ ]*/"/' \
+ -e 's/"//g' \
+ -e 's/=/ /' \
+ -e 's/\\/<backslash>/g' \
+| while read var value
+do
+ xvalue=`src/getconfig "$var" | sed -e 's/.* -> //' -e 's/[ ]*$//' -e 's/\\\\/<backslash>/g'`
+ #debug# echo "$var: $value ? $xvalue"
+ if [ "X${value}X" != "X${xvalue}X" ]
+ then
+ echo "$var: expecting \"$value\", got \"$xvalue\""
+ fi
+done
+
+# success, all done
+exit
diff --git a/qa/448.out b/qa/448.out
new file mode 100644
index 0000000..1c12f83
--- /dev/null
+++ b/qa/448.out
@@ -0,0 +1,17 @@
+QA output created by 448
+error cases ...
+bad variable
+NO_SUCH_VAR ->
+exit status=0
+
+bad $PCP_CONF
+FATAL PCP ERROR: could not open config file "/no/such/file" : No such file or directory
+You may need to set PCP_CONF or PCP_DIR in your environment.
+PCP_BIN_DIR -> exit status=1
+
+bad $PCP_DIR
+FATAL PCP ERROR: could not open config file "/no/such/directory/etc/pcp.conf" : No such file or directory
+You may need to set PCP_CONF or PCP_DIR in your environment.
+PCP_BIN_DIR -> exit status=1
+
+all vars in pcp.conf ... report only errors
diff --git a/qa/449 b/qa/449
new file mode 100755
index 0000000..226e060
--- /dev/null
+++ b/qa/449
@@ -0,0 +1,94 @@
+#!/bin/sh
+# PCP QA Test No. 449
+# basic multi-threaded checkout
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$multi_threaded || _notrun "No libpcp threading support"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter1()
+{
+ tee -a $seq.full \
+ | sed \
+ -e 's/Permission denied/No permission to perform requested operation/'
+}
+
+_filter2()
+{
+ $PCP_AWK_PROG '
+$7 == "localhost" { sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"IPADDR",$4)
+ sub(/^[0-9a-f:][0-9a-f:]*%[0-9a-z]+$/,"IPADDR",$4)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"IPADDR",$4)
+ sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"IPMASK",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"IPMASK",$5) }
+ { print }'
+}
+
+_filter3()
+{
+ # b 4194304 1.0.0 0x00400000
+ sed \
+ -e '/0x[0-9a-f][0-9a-f]*$/{
+s/ 0x[0-9a-f][0-9a-f]*$//
+s/ [0-9][0-9]* / /
+}'
+}
+
+_filter4()
+{
+ # traverse: found 1346 metrics, sts 29
+ $PCP_AWK_PROG '
+BEGIN { first = 1 }
+$1 == "traverse:" && $3 ~ /[0-9][0-9]*/ && $6 ~ /[0-9][0-9]*/ {
+ if (first) {
+ found = $3
+ sts = $6
+ }
+ if ($3 == found && $6 == sts) {
+ $3 = "MYNUMBER"
+ $6 = "MYSTS"
+ }
+ }
+ { print }' \
+| LC_COLLATE=POSIX sort \
+| uniq
+}
+
+
+# real QA test starts here
+echo "=== __pmMultiThreaded ===" | tee -a $seq.full
+src/multithread0 | LC_COLLATE=POSIX sort
+
+echo | tee -a $seq.full
+echo "=== PM_CONTEXT_LOCAL ===" | tee -a $seq.full
+src/multithread1 >$tmp.out
+cat $tmp.out | _filter1 | LC_COLLATE=POSIX sort
+
+echo | tee -a $seq.full
+echo "=== PM_SCOPE_AF and PM_SCOPE_ACL ===" | tee -a $seq.full
+src/multithread2 | _filter2
+
+echo | tee -a $seq.full
+echo "=== PMNS concurrency ===" | tee -a $seq.full
+src/multithread3 $tmp.pmns | tee -a $seq.full | _filter3
+
+echo | tee -a $seq.full
+echo "=== PMNS Load/Unload & Traverse concurrency ===" | tee -a $seq.full
+src/multithread4 | tee -a $seq.full | _filter4
+
+# success, all done
+exit
diff --git a/qa/449.out b/qa/449.out
new file mode 100644
index 0000000..38c0516
--- /dev/null
+++ b/qa/449.out
@@ -0,0 +1,93 @@
+QA output created by 449
+=== __pmMultiThreaded ===
+func: is multithreaded
+func: is multithreaded
+main0: is NOT multithreaded
+main1: is NOT multithreaded
+main2: is NOT multithreaded
+
+=== PM_CONTEXT_LOCAL ===
+pmDupContext: -> 1
+pmDupContext: Operation not supported for multi-threaded applications
+pmFetch: -> OK
+pmFetch: Operation not supported for multi-threaded applications
+pmGetChildrenStatus: -> 0
+pmGetChildrenStatus: Operation not supported for multi-threaded applications
+pmGetInDom: -> 3
+pmGetInDom: 30.1: Operation not supported for multi-threaded applications
+pmGetPMNSLocation: -> 1
+pmGetPMNSLocation: Operation not supported for multi-threaded applications
+pmLookupDesc: -> 30.0.5 type=32 indom=30.1
+pmLookupDesc: Operation not supported for multi-threaded applications
+pmLookupInDom: Operation not supported for multi-threaded applications
+pmLookupInDom: red -> 0
+pmLookupName: -> 30.0.5
+pmLookupName: Operation not supported for multi-threaded applications
+pmLookupText: -> Metrics with a "saw-tooth" trend over time
+pmLookupText: Operation not supported for multi-threaded applications
+pmNameInDom: 0 -> red
+pmNameInDom: Operation not supported for multi-threaded applications
+pmNewContext: -> 0
+pmNewContext: Operation not supported for multi-threaded applications
+pmStore: No permission to perform requested operation
+pmStore: Operation not supported for multi-threaded applications
+pmUseContext(0) -> 0
+pmUseContext(0) -> 0
+
+=== PM_SCOPE_AF and PM_SCOPE_ACL ===
+func1: __pmAFregister -> OK
+func1: __pmAFunregister -> OK
+func2: __pmAFregister -> Operation not supported for multi-threaded applications
+func2: __pmAFunregister -> Operation not supported for multi-threaded applications
+func1: __pmAccAddOp(1) -> OK
+func1: __pmAccAddOp(2) -> OK
+func1: __pmAccAddHost -> OK
+
+Host access list:
+00 01 Cur/MaxCons host-spec host-mask lvl host-name
+== == =========== ======================================= ======================================= === ==============
+y 0 3 IPADDR IPMASK 0 localhost
+
+func1: __pmAccSaveHosts -> OK
+func1: __pmAccRestoreHosts -> OK
+func1: __pmAccAddClient -> 0
+func2: __pmAccAddOp(1) -> Operation not supported for multi-threaded applications
+func2: __pmAccAddOp(2) -> Operation not supported for multi-threaded applications
+func2: __pmAccAddHost -> Operation not supported for multi-threaded applications
+func2: __pmAccSaveHosts -> Operation not supported for multi-threaded applications
+func2: __pmAccRestoreHosts -> Operation not supported for multi-threaded applications
+func2: __pmAccAddClient -> Operation not supported for multi-threaded applications
+
+=== PMNS concurrency ===
+ root
+ a
+ one 0.0.0
+ two 0.1.0
+ three
+ foo 0.2.0
+ bar 0.2.1
+ b 1.0.0
+ c 2.0.0
+func1: pmGetChildrenStatus -> 3
+[0] a non-leaf
+[1] b leaf
+[2] c leaf
+func1: [0] b -> 1.0.0 -> b
+func1: [0] a.three.foo -> 0.2.0 -> a.three.foo
+func1: [0] d.f.fumble -> PM_ID_NULL
+func1: pmGetChildrenStatus[1] -> PMNS not accessible
+func1: [2] b -> 1.0.0 -> b
+func1: [2] a.three.foo -> 0.2.0 -> a.three.foo
+func1: [2] d.f.fumble -> PM_ID_NULL
+func1: [3] b -> 1.0.0 -> b
+func1: [3] a.three.foo -> 0.2.0 -> a.three.foo
+func1: [3] d.f.fumble -> 3.0.1 -> d.f.fumble
+func1: [4] b -> 1.0.0 -> b
+func1: [4] a.three.foo -> 0.2.0 -> a.three.foo
+func1: [4] d.f.fumble -> 3.0.1 -> d.f.fumble
+
+=== PMNS Load/Unload & Traverse concurrency ===
+Total PDU counts
+in: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+out: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+traverse: found MYNUMBER metrics, sts MYSTS
diff --git a/qa/450 b/qa/450
new file mode 100755
index 0000000..77ca74a
--- /dev/null
+++ b/qa/450
@@ -0,0 +1,43 @@
+#! /bin/sh
+# PCP QA Test No. 450
+# pmlogextract fail to process multivolume archives
+# pv #584487
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmlogger -c src/config.foo -s 8 -v 3 $tmp
+
+pmlogextract src/mv-foo $tmp $tmp.out
+
+pmval -U $tmp.out sample.drift 2>&1 \
+| sed \
+ -e '/^$/d' \
+ -e '/^metric:/d' \
+ -e '/^archive:/d' \
+ -e '/^host:/d' \
+ -e '/^start:/d' \
+ -e '/^end:/d' \
+ -e '/^semantics:/d' \
+ -e '/^units:/d' \
+ -e '/^samples:/d' \
+ -e '/^interval:/d' \
+ -e '/No values available/d' \
+ -e '/End of PCP archive log/d' \
+ -e 's/ *[0-9][0-9]*$/ NUMBER/' \
+ -e 's/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/'
+
+status=0
+exit
diff --git a/qa/450.out b/qa/450.out
new file mode 100644
index 0000000..fc0c98f
--- /dev/null
+++ b/qa/450.out
@@ -0,0 +1,18 @@
+QA output created by 450
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP Archive logging suspended
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
+TIMESTAMP NUMBER
diff --git a/qa/451 b/qa/451
new file mode 100755
index 0000000..23f68ba
--- /dev/null
+++ b/qa/451
@@ -0,0 +1,32 @@
+#!/bin/sh
+# PCP QA Test No. 451
+# Exercise basic global locking
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$multi_threaded || _notrun "No libpcp threading support"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for arg in ilu ilululu illluluuluu ll iluu
+do
+ echo
+ echo "=== $arg ==="
+ src/exerlock $arg
+done
+
+# success, all done
+exit
diff --git a/qa/451.out b/qa/451.out
new file mode 100644
index 0000000..429bcdb
--- /dev/null
+++ b/qa/451.out
@@ -0,0 +1,39 @@
+QA output created by 451
+
+=== ilu ===
+initialize
+lock
+unlock
+
+=== ilululu ===
+initialize
+lock
+unlock
+lock
+unlock
+lock
+unlock
+
+=== illluluuluu ===
+initialize
+lock
+lock
+lock
+unlock
+lock
+unlock
+unlock
+lock
+unlock
+unlock
+
+=== ll ===
+lock
+lock
+
+=== iluu ===
+initialize
+lock
+unlock
+unlock
+exerlock.c:50: unlock failed: Operation not permitted
diff --git a/qa/452 b/qa/452
new file mode 100755
index 0000000..9ef2778
--- /dev/null
+++ b/qa/452
@@ -0,0 +1,36 @@
+#!/bin/sh
+# PCP QA Test No. 452
+# exercise dependencies between Linux PMDA clusters
+# e.g. CLUSTER_CPUINFO needs cpu indom initialized by CLUSTER_STAT
+#
+# Copyright (c) 2011 Red Hat, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = linux ] || _notrun "Tests pmdalinux functionality"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+# CLUSTER_CPUINFO needs cpu indom initialized by CLUSTER_STAT
+# without the fix, this will abort().
+echo "Exercising CPU instances with fetch PDU"
+pmprobe -Lv hinv.cpu.clock >/dev/null
+status=$?
+[ $status -ne 0 ] && exit
+
+echo "Exercising CPU instances with indom PDU"
+pmprobe -Lif hinv.cpu.clock >/dev/null
+status=$?
+
+exit
diff --git a/qa/452.out b/qa/452.out
new file mode 100644
index 0000000..abe7ae7
--- /dev/null
+++ b/qa/452.out
@@ -0,0 +1,3 @@
+QA output created by 452
+Exercising CPU instances with fetch PDU
+Exercising CPU instances with indom PDU
diff --git a/qa/453 b/qa/453
new file mode 100755
index 0000000..21370a5
--- /dev/null
+++ b/qa/453
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 453
+# Check Perl PCP::LogSummary
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+perl -e "use PCP::LogSummary" >/dev/null 2>&1
+test $? -eq 0 || _notrun "PCP::LogSummary perl module is not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<'End-of-File' >$tmp.pl
+use PCP::LogSummary;
+
+my $archive = 'src/snort-disks.0';
+my @metrics = ( 'disk.dev.read', 'disk.dev.read_bytes' );
+my $hdl = PCP::LogSummary->new($archive, \@metrics);
+
+foreach my $metric ( sort keys %$hdl ) {
+ my $summary = $$hdl{$metric};
+ print("metric=", $metric, "\n");
+ print(" average=", $$summary{'average'}, "\n");
+ print(" samples=", $$summary{'samples'}, "\n");
+}
+End-of-File
+
+# real QA test starts here
+perl $tmp.pl
+
+# success, all done
+exit
diff --git a/qa/453.out b/qa/453.out
new file mode 100644
index 0000000..f42848d
--- /dev/null
+++ b/qa/453.out
@@ -0,0 +1,91 @@
+QA output created by 453
+metric=disk.dev.read["dks0d1"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read["dks0d2"]
+ average=4.293300
+ samples=9
+metric=disk.dev.read["dks0d3"]
+ average=1.605247
+ samples=9
+metric=disk.dev.read["dks0d4"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read["dks0d5"]
+ average=2.407773
+ samples=9
+metric=disk.dev.read["dks1d1"]
+ average=4.333382
+ samples=9
+metric=disk.dev.read["dks1d2"]
+ average=3.370702
+ samples=9
+metric=disk.dev.read["dks1d3"]
+ average=1.003186
+ samples=9
+metric=disk.dev.read["dks1d4"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read["dks1d5"]
+ average=1.605245
+ samples=9
+metric=disk.dev.read["dks9d1"]
+ average=0.200649
+ samples=9
+metric=disk.dev.read["dks9d2"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read["dks9d3"]
+ average=3.330530
+ samples=9
+metric=disk.dev.read["dks9d4"]
+ average=2.407771
+ samples=9
+metric=disk.dev.read["dks9d6"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read_bytes["dks0d1"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read_bytes["dks0d2"]
+ average=48.953863
+ samples=9
+metric=disk.dev.read_bytes["dks0d3"]
+ average=10.594692
+ samples=9
+metric=disk.dev.read_bytes["dks0d4"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read_bytes["dks0d5"]
+ average=25.361867
+ samples=9
+metric=disk.dev.read_bytes["dks1d1"]
+ average=40.768179
+ samples=9
+metric=disk.dev.read_bytes["dks1d2"]
+ average=42.854010
+ samples=9
+metric=disk.dev.read_bytes["dks1d3"]
+ average=46.865676
+ samples=9
+metric=disk.dev.read_bytes["dks1d4"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read_bytes["dks1d5"]
+ average=11.076288
+ samples=9
+metric=disk.dev.read_bytes["dks9d1"]
+ average=3.050122
+ samples=9
+metric=disk.dev.read_bytes["dks9d2"]
+ average=0.000000
+ samples=9
+metric=disk.dev.read_bytes["dks9d3"]
+ average=33.865854
+ samples=9
+metric=disk.dev.read_bytes["dks9d4"]
+ average=27.931316
+ samples=9
+metric=disk.dev.read_bytes["dks9d6"]
+ average=0.000000
+ samples=9
diff --git a/qa/454 b/qa/454
new file mode 100755
index 0000000..8fa39f3
--- /dev/null
+++ b/qa/454
@@ -0,0 +1,188 @@
+#!/bin/sh
+# PCP QA Test No. 454
+# Check parsing of PMCD config file with errors
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmcd_log \
+ | sed \
+ -e "s:$tmp:TMP:g"
+}
+
+# real QA test starts here
+export PCP_PMCDCONF_PATH=$tmp.conf
+export PMCD_SOCKET=$tmp.pmcd.socket
+
+cat <<End-of-File >$tmp.conf
+# no entry point _or_ pathname
+first 1 dso
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+# spaces, but no pathname
+first 1 dso first_init
+first 1 dso first_init no_leading_slash
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+first 1 dso first_init /first/pmda/dso extra arguments
+# bad protocol
+first 1 socket foonet /someplace/mypmda
+# bad pmda ipc type
+foo 1 foo binary mypmda
+# no socket name/number
+first 1 socket unix
+# bad socket name
+first 1 socket inet no_such_service
+# bad type
+first 1 pipe not-binary
+# bad domain
+second foo pipe binary mypmda
+third 100000 pipe binary mypmda
+# command missing
+first 1 pipe binary
+foo 1 pipe binary mypmda
+# duplicate domain
+bar 1 pipe binary mypmda
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+# unterminated quote
+first 1 pipe binary mypmda "foo""
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+first 1 pipe binary mypmda with is a very long list of args\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\
+the end
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+first 1 pipe binary mypmda "foo
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+# empty access control section
+[access]
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+# access control cases not checked in QA 051
+#
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[foo
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[ foo
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow localhost ;
+allow "unix:" ;
+allow localhost : ;
+allow "local:" : ;
+allow localhost : fetch, ;
+disallow localhist, 127.0.0.* : all except all;
+disallow "unix:" , "local:" : all except all;
+disallow 127.0.* : all, store;
+allow localhost : fetch, maximum 7 connections, store, maximum 3 connections;
+allow "local:" : fetch, maximum 7 connections, store, maximum 3 connections;
+allow localhost : fetch, maximum foo connections;
+allow "local:" : fetch, maximum foo connections;
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow localhost : store
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow localhost, 127.0.0.1
+End-of-File
+pmcd -f -p 9876 -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+# success, all done
+exit
diff --git a/qa/454.out b/qa/454.out
new file mode 100644
index 0000000..25646b9
--- /dev/null
+++ b/qa/454.out
@@ -0,0 +1,103 @@
+QA output created by 454
+Log for pmcd on HOST started DATE
+
+pmcd config[line 2]: Error: expected DSO entry point
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 2]: Error: expected DSO pathname
+pmcd config[line 3]: Error: path "no_leading_slash" to PMDA is not absolute
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 1]: Error: too many parameters for DSO
+pmcd config[line 3]: Error: expected socket address domain (`inet', `ipv6', or `unix')
+pmcd config[line 5]: Error: expected `dso', `socket' or `pipe'
+pmcd config[line 7]: Error: expected socket port name or number
+pmcd config[line 9]: Error: failed to get port number for port name no_such_service
+pmcd config[line 11]: Error: pipe PDU type expected (`binary')
+pmcd config[line 13]: Error: expected domain number for "second" agent
+pmcd config[line 14]: Error: Illegal domain number (100000) for "third" agent
+pmcd config[line 16]: Error: command to create pipe agent expected.
+pmcd config[line 19]: Error: domain number for "bar" agent clashes with "foo" agent
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 2]: Error: unterminated quoted string
+pmcd config: Can't continue, giving up
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 1]: Error: ridiculously long line (2200 characters)
+pmcd config: Can't continue, giving up
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 1]: Error: unterminated quoted string
+pmcd config: Can't continue, giving up
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 4]: Error: no valid statements in [access] section
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 3]: Error: ']' expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 2]: Error: "access" keyword expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 2]: Error: "access" keyword expected
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 3]: Error: ',' or ':' expected after "localhost"
+pmcd config[line 4]: Error: ',' or ':' expected after "unix:"
+pmcd config[line 5]: Error: empty or incomplete permissions list
+pmcd config[line 6]: Error: empty or incomplete permissions list
+pmcd config[line 7]: Error: misplaced (trailing) ',' in permission list
+pmcd config[line 8]: Error: can't have "all" within an "all except"
+pmcd config[line 9]: Error: can't have "all" within an "all except"
+pmcd config[line 10]: Error: can't have "all" mixed with specific permissions
+pmcd config[line 11]: Error: connection limit already specified
+pmcd config[line 12]: Error: connection limit already specified
+pmcd config[line 13]: Error: maximum connection limit must be a positive number
+pmcd config[line 14]: Error: maximum connection limit must be a positive number
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 4]: Error: ',' or ';' expected in permission list
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 4]: Error: ',' or ':' expected after "127.0.0.1"
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
diff --git a/qa/455 b/qa/455
new file mode 100755
index 0000000..047241d
--- /dev/null
+++ b/qa/455
@@ -0,0 +1,127 @@
+#! /bin/sh
+# PCP QA Test No. 455
+# Sanity checks for rsyslog pmda
+#
+# Copyright (c) 2011 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+test $? -eq 0 || _notrun "PCP::PMDA perl module is not installed"
+
+grep rsyslog.elasticsearch.submits $PCP_PMDAS_DIR/rsyslog/pmdarsyslog.pl >/dev/null
+[ $? -eq 0 ] || _notrun "Newer version of rsyslog PMDA needed"
+
+install_on_cleanup=false
+pminfo rsyslog >/dev/null 2>&1 && install_on_cleanup=true
+
+status=1
+done_clean=false
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/rsyslog; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/rsyslog; $sudo ./Remove >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+ exit $status
+}
+
+_filter()
+{
+ # number of warnings depends on rsyslog config
+ sed \
+ -e '/Creating rsyslog statistics file/d' \
+ -e 's/ [0-9]* warnings/ some warnings/g'
+}
+
+_val_filter()
+{
+ $PCP_AWK_PROG '
+/^rsyslog\.interval/ { fix = 1 }
+fix == 1 && /value [0-9][0-9]*/ { $2 = "NUMBER" }
+ { print }
+NF == 0 { fix = 0 }'
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+iam=rsyslog
+cd $PCP_PMDAS_DIR/$iam
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+$sudo rm -f pmns domain.h
+
+echo
+echo "=== $iam agent installation ==="
+$sudo rm -f $PCP_LOG_DIR/rsyslog/stats
+$sudo ./Install </dev/null >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out \
+| _filter
+
+echo
+echo "=== validate values ==="
+rm -f $tmp.stats
+echo "\
+2011-05-11T08:18:02.420771+10:00 host rsyslogd-pstats: imuxsock: submitted=85 ratelimit.discarded=0 ratelimit.numratelimiters=24
+2011-05-11T08:18:02.420797+10:00 host rsyslogd-pstats: main Q: size=1181 enqueued=1181 full=0 maxqsize=1181
+2011-05-11T08:18:07.423713+10:00 host rsyslogd-pstats: imuxsock: submitted=85 ratelimit.discarded=0 ratelimit.numratelimiters=24
+2011-05-11T08:18:07.423752+10:00 host rsyslogd-pstats: main Q: size=1 enqueued=1183 full=0 maxqsize=1182" > $tmp.stats
+
+for i in 1 2 3 4 5
+do
+ [ -p $PCP_LOG_DIR/rsyslog/stats ] && break
+ sleep 1
+done
+
+if [ ! -p $PCP_LOG_DIR/rsyslog/stats ]
+then
+ echo "Arrgh failed to see named pipe $PCP_LOG_DIR/rsyslog/stats after 5 seconds"
+ ls -l $PCP_LOG_DIR/rsyslog
+ exit
+fi
+
+$sudo sh -c "cat $tmp.stats >> $PCP_LOG_DIR/rsyslog/stats"
+sleep 2 # give some time for pmdarsyslog to be told
+$sudo sh -c "cat $tmp.stats >> $PCP_LOG_DIR/rsyslog/stats"
+sleep 2 # give more time for pmdarsyslog to be told
+pminfo rsyslog \
+| LC_COLLATE=POSIX sort \
+| while read metric
+do
+ pminfo -f $metric
+done \
+| _val_filter
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+status=0
+exit
diff --git a/qa/455.out b/qa/455.out
new file mode 100644
index 0000000..810154c
--- /dev/null
+++ b/qa/455.out
@@ -0,0 +1,63 @@
+QA output created by 455
+
+=== rsyslog agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "rsyslog" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check rsyslog metrics have appeared ... some warnings, 12 metrics and 0 values
+
+=== validate values ===
+
+rsyslog.elasticsearch.connfail
+ value 0
+
+rsyslog.elasticsearch.failed
+ value 0
+
+rsyslog.elasticsearch.submits
+ value 0
+
+rsyslog.elasticsearch.success
+ value 0
+
+rsyslog.imuxsock.discarded
+ value 0
+
+rsyslog.imuxsock.numratelimiters
+ value 24
+
+rsyslog.imuxsock.submitted
+ value 85
+
+rsyslog.interval
+value NUMBER
+
+rsyslog.queues.enqueued
+ inst [0 or "main Q"] value 1183
+
+rsyslog.queues.full
+ inst [0 or "main Q"] value 0
+
+rsyslog.queues.maxsize
+ inst [0 or "main Q"] value 1182
+
+rsyslog.queues.size
+ inst [0 or "main Q"] value 1
+
+=== remove rsyslog agent ===
+Culling the Performance Metrics Name Space ...
+rsyslog ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check rsyslog metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/456 b/qa/456
new file mode 100755
index 0000000..f61d685
--- /dev/null
+++ b/qa/456
@@ -0,0 +1,101 @@
+#! /bin/sh
+# PCP QA Test No. 456
+#
+# Bug #591459: incomplete control file for cron.pm*
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+LOCALHOST=`hostname | sed -e 's/\..*//'`
+FULLLOCALHOST=`hostname`
+
+hostsfile="/etc/hosts"
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/\.\.\.*/[dots]/' \
+ -e "s/$FULLLOCALHOST/LOCALHOST/g" \
+ -e "s/$LOCALHOST/LOCALHOST/g" \
+ -e "s/localhost/LOCALHOST/g" \
+ -e "s/local:/LOCALHOST/g" \
+ -e 's/control:[0-9][0-9]*]/control:LINE]/' \
+ -e 's;/usr/var;/var;g' \
+ -e "s;$tmp;TMP;g" \
+ -e '/Duplicate/d' \
+ | _filter_cron_scripts
+}
+
+_stop_loggers()
+{
+ $sudo $signal -a -s TERM pmlogger
+}
+
+_cleanup()
+{
+ echo
+ echo "Cleaning up"
+
+ _stop_loggers >/dev/null 2>&1
+
+ cd # get out of tmp directory so we can delete it
+ $sudo rm -rf $tmp
+
+ $sudo $PCP_BINADM_DIR/pmlogger_check
+}
+
+_setup()
+{
+ _stop_loggers
+ cd
+ rm -rf $tmp
+ mkdir $tmp
+}
+
+# real QA test starts here
+
+_setup
+
+# control file
+#
+cat >$tmp/control <<EOF
+\$version=1.1
+# various error cases for the primary logger
+#
+LOCALHOSTNAME y n $tmp/1
+LOCALHOSTNAME y n
+LOCALHOSTNAME y
+LOCALHOSTNAME
+# various error cases for the non-primary logger
+#
+foo n n $tmp/2
+foo n n
+foo n
+EOF
+
+echo "--------------"
+echo "PMLOGGER.CHECK"
+echo "--------------"
+$sudo $PCP_BINADM_DIR/pmlogger_check -V -c $tmp/control 2>&1 | _filter
+
+echo
+echo "--------------"
+echo "PMLOGGER.DAILY"
+echo "--------------"
+$sudo $PCP_BINADM_DIR/pmlogger_daily -V -c $tmp/control 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/456.out b/qa/456.out
new file mode 100644
index 0000000..fb900b9
--- /dev/null
+++ b/qa/456.out
@@ -0,0 +1,45 @@
+QA output created by 456
+--------------
+PMLOGGER.CHECK
+--------------
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: insufficient fields in control file record
+[dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: insufficient fields in control file record
+[dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: insufficient fields in control file record
+[dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: insufficient fields in control file record
+[dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: insufficient fields in control file record
+[dots] logging for host "foo" unchanged
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: insufficient fields in control file record
+[dots] logging for host "foo" unchanged
+PMLOGGER.CHECK: [TMP/control:LINE]
+Error: insufficient fields in control file record
+[dots] logging for host "foo" unchanged
+
+--------------
+PMLOGGER.DAILY
+--------------
+PMLOGGER.DAILY: Error: insufficient fields in control file record
+[TMP/control:LINE] [dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.DAILY: Error: insufficient fields in control file record
+[TMP/control:LINE] [dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.DAILY: Error: insufficient fields in control file record
+[TMP/control:LINE] [dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.DAILY: Error: insufficient fields in control file record
+[TMP/control:LINE] [dots] logging for host "LOCALHOST" unchanged
+PMLOGGER.DAILY: Error: insufficient fields in control file record
+[TMP/control:LINE] [dots] logging for host "foo" unchanged
+PMLOGGER.DAILY: Error: insufficient fields in control file record
+[TMP/control:LINE] [dots] logging for host "foo" unchanged
+PMLOGGER.DAILY: Error: insufficient fields in control file record
+[TMP/control:LINE] [dots] logging for host "foo" unchanged
+
+Cleaning up
diff --git a/qa/457 b/qa/457
new file mode 100755
index 0000000..026d58e
--- /dev/null
+++ b/qa/457
@@ -0,0 +1,176 @@
+#! /bin/sh
+# PCP QA Test No. 457
+# checks basic pmdalogger functionality
+#
+# Copyright (c) 2011 Aconex. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ -d $PCP_PMDAS_DIR/logger ] || _notrun "No pmdalogger installed"
+
+_cleanup()
+{
+ if $_needclean
+ then
+ _restore_pmda_install logger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/logger; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/logger; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ $sudo rm -fr $tmp.dir
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_testdata()
+{
+ # generate data in a single write, for pmda determinism
+ echo \
+"TeSt DaTa ... TeSt DaTa ...
+TeSt2 DaTa2 ... TeSt2 DaTa2"
+}
+
+_filter()
+{
+ sed \
+ -e "s,$tmp,TMPFILE,g" \
+ -e "s,$PCP_VAR_DIR,PCP_VAR_DIR,g" \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+_filter_dir()
+{
+ # size is filesystem and blocksize dependent
+ _filter | sed '/^logger\.perfile\.dir\.size$/ {
+N
+s:[0-9][0-9]*:SIZE:
+}'
+}
+
+$sudo rm -fr $tmp.dir
+$sudo rm -f $tmp.*
+
+# setup pmdalogger configuration file
+echo "
+# from PCP QA $seq
+reg n $tmp.reg
+fifo n $tmp.fifo
+none n $tmp.none
+empty n $tmp.empty
+dir n $tmp.dir
+pipe n $tmp.pipe|
+" >$tmp.conf
+
+# and PMDA Install script
+cat >$tmp.input <<End-of-File
+b
+1
+End-of-File
+
+install_on_cleanup=false
+pminfo logger >/dev/null 2>&1 && install_on_cleanup=true
+
+status=1 # failure is the default!
+_needclean=true
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_pmda_install logger
+
+# prepare test case files (see below)
+_testdata > $tmp.reg
+mkdir $tmp.dir
+mkfifo $tmp.fifo
+touch $tmp.empty
+$PCP_ECHO_PROG $PCP_ECHO_N "#!/bin/sh
+echo \$\$ > $tmp.pipe.pid
+trap \"echo child\" USR1
+read book
+""$PCP_ECHO_C" > $tmp.pipe # i.e. print something when sigusr1 delivered
+chmod 755 $tmp.pipe
+
+[ -d $PCP_VAR_DIR/config/logger ] || $sudo mkdir -p $PCP_VAR_DIR/config/logger
+$sudo cp $tmp.conf $PCP_VAR_DIR/config/logger/logger.conf
+
+# install PMDA accepting the defaults (esp config file)
+$sudo ./Remove < /dev/null >/dev/null 2>&1
+$sudo ./Install < /dev/null >$tmp.out 2>&1
+cat $tmp.out | _filter_pmda_install | _filter
+
+echo
+echo "=== 1. simple working case ==="
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking initial data:""$PCP_ECHO_C"
+pminfo -f logger.perfile.reg | _filter
+_testdata >> $tmp.reg
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking appended data:""$PCP_ECHO_C"
+pminfo -f logger.perfile.reg | _filter
+
+echo
+echo "=== 2. named pipe (fifo) ==="
+$PCP_ECHO_PROG $PCP_ECHO_N "Check initial pipe""$PCP_ECHO_C"
+pminfo -f logger.perfile.fifo | _filter
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking new pipe data""$PCP_ECHO_C"
+_testdata >> $tmp.fifo
+pminfo -f logger.perfile.fifo | _filter
+$PCP_ECHO_PROG $PCP_ECHO_N "Unlink the fifo""$PCP_ECHO_C"
+rm -f $tmp.fifo
+pminfo -f logger.perfile.fifo | _filter
+
+echo
+echo "=== 3. log file rotation ==="
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking removed file""$PCP_ECHO_C"
+rm -f $tmp.reg
+sleep 3 # pmda interval timer is 2 seconds
+pminfo -f logger.perfile.reg | _filter
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking new log file""$PCP_ECHO_C"
+_testdata >> $tmp.reg
+sleep 3 # pmda interval timer is 2 seconds
+pminfo -f logger.perfile.reg | _filter
+
+echo
+echo "=== 4. non-existant file ==="
+$PCP_ECHO_PROG $PCP_ECHO_N "Check a missing file""$PCP_ECHO_C"
+pminfo -f logger.perfile.none | _filter
+_testdata >> $tmp.none
+sleep 3 # pmda interval timer is 2 seconds
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking new log file""$PCP_ECHO_C"
+pminfo -f logger.perfile.none | _filter
+
+echo
+echo "=== 5. empty file ==="
+$PCP_ECHO_PROG $PCP_ECHO_N "Check an empty file""$PCP_ECHO_C"
+pminfo -f logger.perfile.empty | _filter
+_testdata >> $tmp.empty
+sleep 3 # pmda interval timer is 2 seconds
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking new log file""$PCP_ECHO_C"
+pminfo -f logger.perfile.empty | _filter
+
+echo
+echo "=== 6. directory ==="
+$PCP_ECHO_PROG $PCP_ECHO_N "Check a directory""$PCP_ECHO_C"
+pminfo -f logger.perfile.dir | _filter_dir
+
+echo
+echo "=== 7. command pipe ==="
+[ -f $tmp.pipe.pid ] || _fail "PID file from command pipe not found"
+pid=`cat $tmp.pipe.pid`
+$PCP_ECHO_PROG $PCP_ECHO_N "Check a piped command""$PCP_ECHO_C"
+pminfo -f logger.perfile.pipe | _filter
+$PCP_ECHO_PROG $PCP_ECHO_N "Signal the command""$PCP_ECHO_C"
+pmsignal -s USR1 $pid >/dev/null 2>&1
+sleep 3 # some time for it to be delivered
+pminfo -f logger.perfile.pipe | _filter
+
+status=0
+exit
diff --git a/qa/457.out b/qa/457.out
new file mode 100644
index 0000000..b4e5ef8
--- /dev/null
+++ b/qa/457.out
@@ -0,0 +1,339 @@
+QA output created by 457
+You will need to choose an appropriate configuration for installation of
+the "logger" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Possible configuration files to choose from:
+[1] PCP_VAR_DIR/config/logger/logger.conf
+[2] Specify your own configuration file.
+[3] None of the above (abandon configuration file selection).
+Which configuration file do you want to use ? [1]
+Contents of the selected configuration file:
+--------------- start PCP_VAR_DIR/config/logger/logger.conf ---------------
+
+# from PCP QA 457
+reg n TMPFILE.reg
+fifo n TMPFILE.fifo
+none n TMPFILE.none
+empty n TMPFILE.empty
+dir n TMPFILE.dir
+pipe n TMPFILE.pipe|
+
+--------------- end PCP_VAR_DIR/config/logger/logger.conf ---------------
+
+Use this configuration file? [y] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check logger metrics have appeared ... 46 metrics and 39 values
+
+=== 1. simple working case ===
+Checking initial data:
+logger.perfile.reg.queuemem
+ value 0
+
+logger.perfile.reg.records
+No value(s) available!
+
+logger.perfile.reg.numclients
+ value 1
+
+logger.perfile.reg.path
+ value "TMPFILE.reg"
+
+logger.perfile.reg.size
+ value 56
+
+logger.perfile.reg.bytes
+ value 0
+
+logger.perfile.reg.count
+ value 0
+Checking appended data:
+logger.perfile.reg.queuemem
+ value 0
+
+logger.perfile.reg.records
+No value(s) available!
+
+logger.perfile.reg.numclients
+ value 1
+
+logger.perfile.reg.path
+ value "TMPFILE.reg"
+
+logger.perfile.reg.size
+ value 56
+
+logger.perfile.reg.bytes
+ value 0
+
+logger.perfile.reg.count
+ value 0
+
+=== 2. named pipe (fifo) ===
+Check initial pipe
+logger.perfile.fifo.queuemem
+ value 0
+
+logger.perfile.fifo.records
+No value(s) available!
+
+logger.perfile.fifo.numclients
+ value 1
+
+logger.perfile.fifo.path
+ value "TMPFILE.fifo"
+
+logger.perfile.fifo.size
+ value 0
+
+logger.perfile.fifo.bytes
+ value 0
+
+logger.perfile.fifo.count
+ value 0
+Checking new pipe data
+logger.perfile.fifo.queuemem
+ value 0
+
+logger.perfile.fifo.records
+No value(s) available!
+
+logger.perfile.fifo.numclients
+ value 1
+
+logger.perfile.fifo.path
+ value "TMPFILE.fifo"
+
+logger.perfile.fifo.size
+ value 0
+
+logger.perfile.fifo.bytes
+ value 0
+
+logger.perfile.fifo.count
+ value 0
+Unlink the fifo
+logger.perfile.fifo.queuemem
+ value 0
+
+logger.perfile.fifo.records
+No value(s) available!
+
+logger.perfile.fifo.numclients
+ value 1
+
+logger.perfile.fifo.path
+ value "TMPFILE.fifo"
+
+logger.perfile.fifo.size
+ value 0
+
+logger.perfile.fifo.bytes
+ value 0
+
+logger.perfile.fifo.count
+ value 0
+
+=== 3. log file rotation ===
+Checking removed file
+logger.perfile.reg.queuemem
+ value 0
+
+logger.perfile.reg.records
+No value(s) available!
+
+logger.perfile.reg.numclients
+ value 1
+
+logger.perfile.reg.path
+ value "TMPFILE.reg"
+
+logger.perfile.reg.size
+ value 0
+
+logger.perfile.reg.bytes
+ value 0
+
+logger.perfile.reg.count
+ value 0
+Checking new log file
+logger.perfile.reg.queuemem
+ value 0
+
+logger.perfile.reg.records
+No value(s) available!
+
+logger.perfile.reg.numclients
+ value 1
+
+logger.perfile.reg.path
+ value "TMPFILE.reg"
+
+logger.perfile.reg.size
+ value 56
+
+logger.perfile.reg.bytes
+ value 56
+
+logger.perfile.reg.count
+ value 2
+
+=== 4. non-existant file ===
+Check a missing file
+logger.perfile.none.queuemem
+ value 0
+
+logger.perfile.none.records
+No value(s) available!
+
+logger.perfile.none.numclients
+ value 1
+
+logger.perfile.none.path
+ value "TMPFILE.none"
+
+logger.perfile.none.size
+ value 0
+
+logger.perfile.none.bytes
+ value 0
+
+logger.perfile.none.count
+ value 0
+Checking new log file
+logger.perfile.none.queuemem
+ value 0
+
+logger.perfile.none.records
+No value(s) available!
+
+logger.perfile.none.numclients
+ value 1
+
+logger.perfile.none.path
+ value "TMPFILE.none"
+
+logger.perfile.none.size
+ value 56
+
+logger.perfile.none.bytes
+ value 56
+
+logger.perfile.none.count
+ value 2
+
+=== 5. empty file ===
+Check an empty file
+logger.perfile.empty.queuemem
+ value 0
+
+logger.perfile.empty.records
+No value(s) available!
+
+logger.perfile.empty.numclients
+ value 1
+
+logger.perfile.empty.path
+ value "TMPFILE.empty"
+
+logger.perfile.empty.size
+ value 0
+
+logger.perfile.empty.bytes
+ value 0
+
+logger.perfile.empty.count
+ value 0
+Checking new log file
+logger.perfile.empty.queuemem
+ value 0
+
+logger.perfile.empty.records
+No value(s) available!
+
+logger.perfile.empty.numclients
+ value 1
+
+logger.perfile.empty.path
+ value "TMPFILE.empty"
+
+logger.perfile.empty.size
+ value 56
+
+logger.perfile.empty.bytes
+ value 56
+
+logger.perfile.empty.count
+ value 2
+
+=== 6. directory ===
+Check a directory
+logger.perfile.dir.queuemem
+ value 0
+
+logger.perfile.dir.records
+No value(s) available!
+
+logger.perfile.dir.numclients
+ value 1
+
+logger.perfile.dir.path
+ value "TMPFILE.dir"
+
+logger.perfile.dir.size
+ value SIZE
+
+logger.perfile.dir.bytes
+ value 0
+
+logger.perfile.dir.count
+ value 0
+
+=== 7. command pipe ===
+Check a piped command
+logger.perfile.pipe.queuemem
+ value 0
+
+logger.perfile.pipe.records
+No value(s) available!
+
+logger.perfile.pipe.numclients
+ value 1
+
+logger.perfile.pipe.path
+ value "TMPFILE.pipe|"
+
+logger.perfile.pipe.size
+ value 0
+
+logger.perfile.pipe.bytes
+ value 0
+
+logger.perfile.pipe.count
+ value 0
+Signal the command
+logger.perfile.pipe.queuemem
+ value 0
+
+logger.perfile.pipe.records
+No value(s) available!
+
+logger.perfile.pipe.numclients
+ value 1
+
+logger.perfile.pipe.path
+ value "TMPFILE.pipe|"
+
+logger.perfile.pipe.size
+ value 0
+
+logger.perfile.pipe.bytes
+ value 0
+
+logger.perfile.pipe.count
+ value 0
diff --git a/qa/458 b/qa/458
new file mode 100755
index 0000000..8ac568b
--- /dev/null
+++ b/qa/458
@@ -0,0 +1,102 @@
+#! /bin/sh
+# PCP QA Test No. 458
+# checks pmdalogger event functionality
+#
+# Copyright (c) 2011 Aconex. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ -d $PCP_PMDAS_DIR/logger ] || _notrun "No pmdalogger installed"
+[ $PCP_VER -ge 3610 ] || _notrun "Installed pmdalogger is too old"
+
+_cleanup()
+{
+ _restore_pmda_install logger
+ if $_needclean
+ then
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/logger; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/logger; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_testdata()
+{
+ # generate data in a single write, for pmda determinism
+ echo \
+"TeSt DaTa ... TeSt DaTa ...
+TeSt2 DaTa2 ... TeSt2 DaTa2"
+}
+
+_filter()
+{
+ sed \
+ -e "s,$tmp,TMPFILE,g" \
+ -e "s,$PCP_VAR_DIR,PCP_VAR_DIR,g" \
+ -e "s/host: $host/host: localhost/g" \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+install_on_cleanup=false
+pminfo logger >/dev/null 2>&1 && install_on_cleanup=true
+
+status=1 # failure is the default!
+host=`hostname`
+_needclean=true
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_pmda_install logger
+
+# prepare test case files (see below)
+$sudo rm -f $tmp.*
+touch $tmp.reg
+mkfifo $tmp.fifo
+
+echo "
+reg n $tmp.reg
+fifo n $tmp.fifo
+" > $tmp.conf
+[ -d $PCP_VAR_DIR/config/logger ] || $sudo mkdir -p $PCP_VAR_DIR/config/logger
+$sudo cp $tmp.conf $PCP_VAR_DIR/config/logger/logger.conf
+
+# install PMDA accepting the defaults (esp config file)
+$sudo ./Remove < /dev/null >/dev/null 2>&1
+$sudo ./Install < /dev/null >$tmp.out 2>&1
+cat $tmp.out | _filter_pmda_install | _filter
+
+echo "=== 1. regular file case ==="
+echo "Starting initial event watcher:"
+pmevent -s 5 -t 1 logger.perfile.reg.records > $tmp.event &
+sleep 2
+_testdata >> $tmp.reg
+wait
+echo "done."
+echo "Captured event trace was:"
+cat $tmp.event | _filter
+
+echo "=== 2. fifo queue case ==="
+echo "Starting initial event watcher:"
+pmevent -s 5 -t 1 logger.perfile.fifo.records > $tmp.event &
+sleep 2
+_testdata >> $tmp.fifo
+wait
+echo "done."
+echo "Captured event trace was:"
+cat $tmp.event | _filter
+
+status=0
+exit
diff --git a/qa/458.out b/qa/458.out
new file mode 100644
index 0000000..db5f31a
--- /dev/null
+++ b/qa/458.out
@@ -0,0 +1,50 @@
+QA output created by 458
+You will need to choose an appropriate configuration for installation of
+the "logger" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Possible configuration files to choose from:
+[1] PCP_VAR_DIR/config/logger/logger.conf
+[2] Specify your own configuration file.
+[3] None of the above (abandon configuration file selection).
+Which configuration file do you want to use ? [1]
+Contents of the selected configuration file:
+--------------- start PCP_VAR_DIR/config/logger/logger.conf ---------------
+
+reg n TMPFILE.reg
+fifo n TMPFILE.fifo
+
+--------------- end PCP_VAR_DIR/config/logger/logger.conf ---------------
+
+Use this configuration file? [y] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check logger metrics have appeared ... 18 metrics and 15 values
+=== 1. regular file case ===
+Starting initial event watcher:
+done.
+Captured event trace was:
+host: localhost
+samples: 5
+interval: 1.00 sec
+logger.perfile.reg.records: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ logger.param_string "TeSt DaTa ... TeSt DaTa ..."
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ logger.param_string "TeSt2 DaTa2 ... TeSt2 DaTa2"
+=== 2. fifo queue case ===
+Starting initial event watcher:
+done.
+Captured event trace was:
+host: localhost
+samples: 5
+interval: 1.00 sec
+logger.perfile.fifo.records: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ logger.param_string "TeSt DaTa ... TeSt DaTa ..."
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ logger.param_string "TeSt2 DaTa2 ... TeSt2 DaTa2"
diff --git a/qa/459 b/qa/459
new file mode 100755
index 0000000..7fa519d
--- /dev/null
+++ b/qa/459
@@ -0,0 +1,40 @@
+#!/bin/sh
+# PCP QA Test No. 459
+# Memory leak in pmlogreduce (SGI bug reported by Arthur Kepner and
+# Jason Lim).
+#
+# Copyright (c) 2011 SGI. All Rights Reserved.
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+# Note 20101004-trunc created from the original 90Mb 20101004 archive
+# that SGI provided using this command:
+# $ pmlogextract -T 3min 20101004 20101004-trunc
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e "s;$tmp;TMP;"
+}
+
+# real QA test starts here
+_run_valgrind pmlogreduce -t 30sec src/20101004-trunc $tmp 2>&1 | _filter
+
+echo
+echo "Samples: `pmdumplog $tmp | grep '^[0-2]' | wc -l | sed -e 's/ //g'`"
+
+# success, all done
+exit
diff --git a/qa/459.out b/qa/459.out
new file mode 100644
index 0000000..b2102d2
--- /dev/null
+++ b/qa/459.out
@@ -0,0 +1,12 @@
+QA output created by 459
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pmlogreduce -t 30sec src/20101004-trunc TMP
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+Samples: 6
diff --git a/qa/460 b/qa/460
new file mode 100755
index 0000000..735096e
--- /dev/null
+++ b/qa/460
@@ -0,0 +1,56 @@
+#! /bin/sh
+# PCP QA Test No. 460
+# test that descriptors that claim to have indoms, but the indoms are not
+# in the archive, don't stop pmlogextract from operating successfully
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+pmlogextract=pmlogextract
+pmdumplog=pmdumplog
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+# real QA test starts here
+# this should operate without any warnings or errors
+#
+rm -f $tmp.*
+$pmlogextract ./src/xbug1 $tmp
+
+# check that the output file contains all the right descriptors, indoms, values
+#
+echo
+echo "=== LABEL ==="
+$pmdumplog -z -l $tmp
+
+echo
+echo "=== DESCRIPTORS ==="
+$pmdumplog -z -d $tmp
+
+echo
+echo "=== INDOMS ==="
+$pmdumplog -z -i $tmp
+
+echo
+echo "=== VALUES ==="
+$pmdumplog -z $tmp
+
+# success, all done
+status=0
+exit
diff --git a/qa/460.out b/qa/460.out
new file mode 100644
index 0000000..5f418f1
--- /dev/null
+++ b/qa/460.out
@@ -0,0 +1,79 @@
+QA output created by 460
+
+=== LABEL ===
+Note: timezone set to local timezone of host "mazur" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host mazur
+ commencing Thu May 7 10:42:23.802 1998
+ ending Thu May 7 10:42:27.791 1998
+
+=== DESCRIPTORS ===
+Note: timezone set to local timezone of host "mazur" from archive
+
+
+Descriptions for Metrics in the Log ...
+PMID: 1.42.2 (hinv.map.xbow)
+ Data Type: string InDom: 1.19 0x400013
+ Semantics: discrete Units: none
+PMID: 1.38.12 (hinv.map.routerport)
+ Data Type: string InDom: 1.16 0x400010
+ Semantics: discrete Units: none
+PMID: 1.38.1 (hinv.map.router)
+ Data Type: string InDom: 1.15 0x40000f
+ Semantics: discrete Units: none
+PMID: 1.80.13 (hinv.map.disk)
+ Data Type: string InDom: 1.2 0x400002
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 1.10.7 (irix.kernel.all.cpu.idle)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 1.26.9 (hinv.map.cpu)
+ Data Type: string InDom: 1.1 0x400001
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 1.39.49 (hinv.map.node)
+ Data Type: string InDom: 1.17 0x400011
+ Semantics: discrete Units: none
+
+=== INDOMS ===
+Note: timezone set to local timezone of host "mazur" from archive
+
+
+Instance Domains in the Log ...
+InDom: 1.2
+10:42:23.933 2 instances
+ 256 or "dks0d1"
+ 512 or "dks0d2"
+InDom: 2.1
+10:42:23.802 1 instances
+ 174009 or "174009"
+
+=== VALUES ===
+Note: timezone set to local timezone of host "mazur" from archive
+
+
+10:42:23.802 2.3.3 (pmcd.pmlogger.host): inst [174009 or "174009"] value "mazur.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [174009 or "174009"] value 4333
+ 2.3.2 (pmcd.pmlogger.archive): inst [174009 or "174009"] value "/hosts/grunt/usr/people/ania/isms/pcp/qa/src/xbug1"
+
+10:42:23.933 1.80.13 (hinv.map.disk):
+ inst [256 or "dks0d1"] value "/hw/rdisk/dks0d1vol"
+ inst [512 or "dks0d2"] value "/hw/rdisk/dks0d2vol"
+ 1.42.2 (hinv.map.xbow): No values returned!
+ 1.39.49 (hinv.map.node): No values returned!
+ 1.38.12 (hinv.map.routerport): No values returned!
+ 1.38.1 (hinv.map.router): No values returned!
+ 1.26.9 (hinv.map.cpu): No values returned!
+
+10:42:25.781 1.10.7 (irix.kernel.all.cpu.idle): value 41171300
+
+10:42:27.791 1.10.7 (irix.kernel.all.cpu.idle): value 41173270
diff --git a/qa/461 b/qa/461
new file mode 100755
index 0000000..fd05449
--- /dev/null
+++ b/qa/461
@@ -0,0 +1,100 @@
+#! /bin/sh
+# PCP QA Test No. 461
+# checks pmdalogger event access functionality
+#
+# Copyright (c) 2011 Aconex. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ -d $PCP_PMDAS_DIR/logger ] || _notrun "No pmdalogger installed"
+[ $PCP_VER -ge 3610 ] || _notrun "Installed pmdalogger is too old"
+
+_cleanup()
+{
+ _restore_pmda_install logger
+ if $_needclean
+ then
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/logger; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/logger; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_testdata()
+{
+ # generate data in a single write, for pmda determinism
+ echo \
+"TeSt DaTa ... TeSt DaTa ...
+TeSt2 DaTa2 ... TeSt2 DaTa2"
+}
+
+_filter()
+{
+ sed \
+ -e "s,$tmp,TMPFILE,g" \
+ -e "s,$PCP_VAR_DIR,PCP_VAR_DIR,g" \
+ -e "s/host: $host/host: localhost/g" \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+install_on_cleanup=false
+pminfo logger >/dev/null 2>&1 && install_on_cleanup=true
+
+status=1 # failure is the default!
+host=`hostname`
+_needclean=true
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_pmda_install logger
+
+# prepare test case files (see below)
+$sudo rm -f $tmp.*
+touch $tmp.reg
+
+echo "
+reg y $tmp.reg
+" > $tmp.conf
+[ -d $PCP_VAR_DIR/config/logger ] || $sudo mkdir -p $PCP_VAR_DIR/config/logger
+$sudo cp $tmp.conf $PCP_VAR_DIR/config/logger/logger.conf
+
+# install PMDA accepting the defaults (esp config file)
+$sudo ./Remove < /dev/null >/dev/null 2>&1
+$sudo ./Install < /dev/null >$tmp.out 2>&1
+cat $tmp.out | _filter_pmda_install | _filter
+
+echo "=== 1. store access control enabled ==="
+echo "Starting initial event watcher:"
+pmevent -x '' -s 5 -t 1 logger.perfile.reg.records > $tmp.event &
+sleep 2
+_testdata >> $tmp.reg
+wait
+echo "done."
+echo "Captured event trace was:"
+cat $tmp.event | _filter
+
+echo "=== 2. store access control disabled ==="
+echo "Starting initial event watcher:"
+pmevent -s 5 -t 1 logger.perfile.reg.records > $tmp.event &
+sleep 2
+_testdata >> $tmp.reg
+wait
+echo "done."
+echo "Captured event trace was:"
+cat $tmp.event | _filter
+
+status=0
+exit
diff --git a/qa/461.out b/qa/461.out
new file mode 100644
index 0000000..2698e13
--- /dev/null
+++ b/qa/461.out
@@ -0,0 +1,44 @@
+QA output created by 461
+You will need to choose an appropriate configuration for installation of
+the "logger" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Possible configuration files to choose from:
+[1] PCP_VAR_DIR/config/logger/logger.conf
+[2] Specify your own configuration file.
+[3] None of the above (abandon configuration file selection).
+Which configuration file do you want to use ? [1]
+Contents of the selected configuration file:
+--------------- start PCP_VAR_DIR/config/logger/logger.conf ---------------
+
+reg y TMPFILE.reg
+
+--------------- end PCP_VAR_DIR/config/logger/logger.conf ---------------
+
+Use this configuration file? [y] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check logger metrics have appeared ... 11 metrics and 9 values
+=== 1. store access control enabled ===
+Starting initial event watcher:
+done.
+Captured event trace was:
+host: localhost
+samples: 5
+interval: 1.00 sec
+logger.perfile.reg.records: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ logger.param_string "TeSt DaTa ... TeSt DaTa ..."
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ logger.param_string "TeSt2 DaTa2 ... TeSt2 DaTa2"
+=== 2. store access control disabled ===
+Starting initial event watcher:
+done.
+Captured event trace was:
+host: localhost
+samples: 5
+interval: 1.00 sec
diff --git a/qa/462 b/qa/462
new file mode 100755
index 0000000..ffa6af9
--- /dev/null
+++ b/qa/462
@@ -0,0 +1,169 @@
+#! /bin/sh
+# PCP QA Test No. 462
+# For pv #581025, pv #589006
+#
+# Test out pmcd_wait
+#
+# Test:
+# * Success:
+#1 - try on already running pmcd
+# * Failure:
+#2 - pmcd not running at all
+#3 - pmcd running but taking too long to get around to
+# accepting connections
+# * Wait delta:
+#4 - delta = X, have pmcd dead for X-1 seconds
+#5 - delta = X, have pmcd dead for X+1 seconds
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+host=`hostname`
+
+_cleanup()
+{
+ # _change_config pmlogger on
+ _start >/dev/null 2>&1
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ rm -f $tmp.*
+}
+
+_filter()
+{
+ _filter_pcp_start \
+ | _filter_pcp_stop \
+ | sed -e '/^$PCP_RC_DIR\/pmlogger: pmlogger not running/d'
+}
+
+_wait_filter()
+{
+ sed -e "s/$host/LOCALHOST/g" -e "s/local:/LOCALHOST/g"
+}
+
+_start()
+{
+ echo "restart @ `date` ..." >>$seq.full
+ $sudo $PCP_RC_DIR/pcp restart >$tmp.start.out
+ echo "restart log @ `date` ..." >>$seq.full
+ cat $tmp.start.out >>$seq.full
+}
+
+_stop()
+{
+ echo "stop @ `date`..." >>$seq.full
+ $sudo $PCP_RC_DIR/pcp stop >$tmp.stop.out
+ echo "stop log @ `date` ..." >>$seq.full
+ cat $tmp.stop.out >>$seq.full
+}
+
+# real QA test starts here
+
+# _change_config pmlogger off
+
+delta=10
+pre_delta=5
+post_delta=15
+
+rm -f $seq.full
+
+echo "*** test 1 ***" | tee -a $seq.full
+_start
+sleep 2
+if pmcd_wait -v 2>$tmp.err
+then
+ echo ""
+ echo "pmcd_wait succeeded as expected for running pmcd"
+ echo ""
+else
+ _wait_filter < $tmp.err
+fi
+_filter <$tmp.start.out
+
+echo "*** test 2 ***" | tee -a $seq.full
+_stop
+sleep 2
+if pmcd_wait -v -t $delta 2>$tmp.err
+then
+ echo ""
+ echo "ERROR: pmcd_wait should not have succeeded !" | tee -a $seq.full
+ echo ""
+else
+ _wait_filter < $tmp.err
+ echo ""
+ echo "pmcd_wait failed as expected for dead pmcd"
+ echo ""
+fi
+_filter <$tmp.stop.out
+
+echo "*** test 4 ***" | tee -a $seq.full
+_stop
+sleep 2
+rm -f $tmp.done
+( sleep $pre_delta; _start; touch $tmp.done ) &
+if pmcd_wait -v -t $delta 2>$tmp.err
+then
+ echo ""
+ echo "pmcd_wait succeeded as expected for sleeping pmcd - under timeout"
+ echo ""
+else
+ echo ""
+ echo "ERROR: pmcd_wait should have succeeded !" | tee -a $seq.full
+ echo ""
+ _wait_filter < $tmp.err
+fi
+
+# Need to wait until _start is _really_ done and pmcd.log has been
+# reported
+for i in 1 2 3 4 5
+do
+ [ -f $tmp.done ] && break
+ sleep 1
+done
+if [ ! -f $tmp.done ]
+then
+ echo "Arrgh @ `date` ... _start is really dragging the chain ... check $seq.full" | tee -a $seq.full
+ status=1
+ exit
+fi
+
+_filter <$tmp.stop.out \
+| sed -e '/pmlogger not running/d'
+_filter <$tmp.start.out
+
+echo "*** test 5 ***" | tee -a $seq.full
+_stop
+sleep 2
+(sleep $post_delta; _start ) &
+pid=$!
+if pmcd_wait -v -t $delta 2>$tmp.err
+then
+ echo ""
+ echo "ERROR: pmcd_wait should not have succeeded !" | tee -a $seq.full
+ echo ""
+else
+ _wait_filter < $tmp.err
+ echo ""
+ echo "pmcd_wait failed as expected for sleeping pmcd - over timeout"
+ echo ""
+fi
+_filter <$tmp.stop.out \
+| sed -e '/pmlogger not running/d'
+_filter <$tmp.start.out
+
+wait $pid # for background processs, "pcp start" to finish
+
+
+# success, all done
+status=0
+exit
diff --git a/qa/462.out b/qa/462.out
new file mode 100644
index 0000000..ec4c47b
--- /dev/null
+++ b/qa/462.out
@@ -0,0 +1,29 @@
+QA output created by 462
+*** test 1 ***
+
+pmcd_wait succeeded as expected for running pmcd
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+*** test 2 ***
+pmcd_wait: Failed to connect to PMCD on host "LOCALHOST" in 10 seconds
+
+pmcd_wait failed as expected for dead pmcd
+
+Waiting for pmcd to terminate ...
+*** test 4 ***
+
+pmcd_wait succeeded as expected for sleeping pmcd - under timeout
+
+$PCP_RC_DIR/pmcd: pmcd not running
+Starting pmcd ...
+Starting pmlogger ...
+*** test 5 ***
+pmcd_wait: Failed to connect to PMCD on host "LOCALHOST" in 10 seconds
+
+pmcd_wait failed as expected for sleeping pmcd - over timeout
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/463 b/qa/463
new file mode 100755
index 0000000..9d6618e
--- /dev/null
+++ b/qa/463
@@ -0,0 +1,410 @@
+#!/bin/sh
+# PCP QA Test No. 463
+# Test ascii PMNS without cpp
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s;$PCP_VAR_DIR;PCP_VAR_DIR;g"
+}
+
+# real QA test starts here
+echo "no error cases ..."
+i=1
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+ one 1:2:3
+ two
+ four
+}
+two {
+ three 4:5:6
+}
+four {
+ five
+}
+four.five {
+ six 7:8:9
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+echo
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+ one 1:2:3
+#include "$tmp.1"
+End-of-File
+cat <<End-of-File >$tmp.1
+ two
+ four
+}
+two {
+ three 4:5:6
+}
+#include "$tmp.2"
+End-of-File
+cat <<End-of-File >$tmp.2
+four {
+ five
+}
+four.five {
+ six 7:8:9
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+echo
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+ one 1:2:3
+#ifdef foo
+ foo 2:4:5
+#endif
+#ifndef foo
+#include "$tmp.1"
+#endif
+}
+End-of-File
+cat <<End-of-File >$tmp.1
+ two
+}
+two {
+ three 4:5:6
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+echo
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+ one 1:2:3
+#define foo yes
+#ifdef foo
+ foo 2:4:5
+#endif
+#ifndef foo
+#include "$tmp.1"
+#endif
+}
+End-of-File
+cat <<End-of-File >$tmp.1
+ two
+}
+two {
+ three 4:5:6
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+echo
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+#define one two
+#define foo_path3 foo.three
+#define THREE 3
+#define FOUR 4
+#define FIVE 5
+root {
+ one 2:2:2
+ foo
+}
+foo {
+ two
+ three
+}
+foo.one {
+ eek THREE:FOUR:FIVE
+}
+foo_path3 {
+ urk FIVE:FOUR:THREE
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+echo
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+/* comment at the beginning */
+root {
+ one 1:2:3
+ two
+ four
+}
+two {
+ three /*inline comment*/ 4:5:6
+}
+four {
+ five/* strange
+but syntactically ok */
+}
+four.five {
+ /**/six 7:8:9
+}
+/*
+ * multi-line comment at the end
+ */
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+# note ... strip blank lines here because number of lines in
+# <stdpmid> may vary over time
+#
+echo
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+#include <stdpmid>
+root {
+ sample SAMPLE:*:*
+ sampledso SAMPLEDSO:*:*
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter | sed -e '/^[ ]*$/d'
+
+echo
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#ifdef foo
+ sample SAMPLE:*:*
+ sampledso SAMPLEDSO:*:*
+#endif
+}
+End-of-File
+pmcpp -DSAMPLE=29 -DSAMPLEDSO=30 -Dfoo $tmp.root 2>&1 | _filter
+
+echo
+echo "#include errors ..."
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#include $tmp.1
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#include "$tmp.1
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#include <$tmp.1
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#include "$tmp.1" junk
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#include "$tmp.1"
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+ zero 1:0:0
+#include "$tmp.1"
+}
+End-of-File
+cat <<End-of-File >$tmp.1
+ one 1:0:1
+#include "$tmp.2"
+End-of-File
+cat <<End-of-File >$tmp.2
+ two 1:0:2
+#include "$tmp.3"
+End-of-File
+cat <<End-of-File >$tmp.3
+ three 1:0:3
+#include "$tmp.4"
+End-of-File
+cat <<End-of-File >$tmp.4
+ four 1:0:4
+#include "$tmp.5"
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+rm -f $tmp.?
+
+echo
+echo "#define errors ..."
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#define
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+/* white space at the end of the next line */
+#define
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#define foo
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#define bad_123_macro!name
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#define dup yes
+#define dup no
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+}
+End-of-File
+pmcpp -Dfoo=1 -Dfoo $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+}
+End-of-File
+pmcpp -Dfoo-bar=1 $tmp.root 2>&1 | _filter
+
+echo
+echo "#ifdef etc errors ..."
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#ifndef extra /*does not count*/ !
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#ifdef foo
+#endif
+#endif /* not matched */
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#define foo yippee
+#ifdef foo
+#define nested yes
+#ifdef nested /* <- error */
+#endif
+#endif
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#undef foo
+#ifndef foo
+#undef nested
+#ifndef nested /* <- error */
+#endif
+#endif
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+echo
+echo "other #cpp line errors ..."
+i=`expr $i + 1`
+echo "---------------- $i -----------------"
+cat <<End-of-File >$tmp.root
+root {
+#fumble
+}
+End-of-File
+pmcpp $tmp.root 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/463.out b/qa/463.out
new file mode 100644
index 0000000..b5ad97d
--- /dev/null
+++ b/qa/463.out
@@ -0,0 +1,244 @@
+QA output created by 463
+no error cases ...
+---------------- 1 -----------------
+# 1 "TMP.root"
+root {
+ one 1:2:3
+ two
+ four
+}
+two {
+ three 4:5:6
+}
+four {
+ five
+}
+four.five {
+ six 7:8:9
+}
+
+---------------- 2 -----------------
+# 1 "TMP.root"
+root {
+ one 1:2:3
+# 1 "TMP.1"
+ two
+ four
+}
+two {
+ three 4:5:6
+}
+# 1 "TMP.2"
+four {
+ five
+}
+four.five {
+ six 7:8:9
+}
+# 8 "TMP.1"
+# 4 "TMP.root"
+
+---------------- 3 -----------------
+# 1 "TMP.root"
+root {
+ one 1:2:3
+
+
+
+
+# 1 "TMP.1"
+ two
+}
+two {
+ three 4:5:6
+# 8 "TMP.root"
+
+}
+
+---------------- 4 -----------------
+# 1 "TMP.root"
+root {
+ one 1:2:3
+
+
+ yes 2:4:5
+
+
+
+
+}
+
+---------------- 5 -----------------
+# 1 "TMP.root"
+
+
+
+
+
+root {
+ two 2:2:2
+ foo
+}
+foo {
+ two
+ three
+}
+foo.two {
+ eek 3:4:5
+}
+foo.three {
+ urk 5:4:3
+}
+
+---------------- 6 -----------------
+# 1 "TMP.root"
+
+root {
+ one 1:2:3
+ two
+ four
+}
+two {
+ three 4:5:6
+}
+four {
+ five
+
+}
+four.five {
+ six 7:8:9
+}
+
+
+
+
+---------------- 7 -----------------
+# 1 "TMP.root"
+# 1 "PCP_VAR_DIR/pmns/stdpmid"
+# 2 "TMP.root"
+root {
+ sample 29:*:*
+ sampledso 30:*:*
+}
+
+---------------- 8 -----------------
+# 1 "TMP.root"
+root {
+
+ sample 29:*:*
+ sampledso 30:*:*
+
+}
+
+#include errors ...
+---------------- 9 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #include TMP.1
+pmcpp: Error: Expected " or < after #include
+---------------- 10 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #include "TMP.1
+pmcpp: Error: Expected " after file name
+---------------- 11 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #include <TMP.1
+pmcpp: Error: Expected > after file name
+---------------- 12 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #include "TMP.1" junk
+pmcpp: Error: Unexpected extra text in #include line
+---------------- 13 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #include "TMP.1"
+pmcpp: Error: Cannot open file for #include
+---------------- 14 -----------------
+# 1 "TMP.root"
+root {
+ zero 1:0:0
+# 1 "TMP.1"
+ one 1:0:1
+# 1 "TMP.2"
+ two 1:0:2
+# 1 "TMP.3"
+ three 1:0:3
+# 1 "TMP.4"
+ four 1:0:4
+pmcpp: TMP.4[2]: #include "TMP.5"
+pmcpp: Error: #include nesting too deep
+
+#define errors ...
+---------------- 15 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #define
+pmcpp: Error: Missing macro name
+---------------- 16 -----------------
+# 1 "TMP.root"
+root {
+
+pmcpp: TMP.root[3]: #define
+pmcpp: Error: Missing macro name
+---------------- 17 -----------------
+# 1 "TMP.root"
+root {
+
+}
+---------------- 18 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #define bad_123_macro!name
+pmcpp: Error: Illegal character in macro name
+---------------- 19 -----------------
+# 1 "TMP.root"
+root {
+
+pmcpp: TMP.root[3]: #define dup no
+pmcpp: Error: Macro redefinition
+---------------- 20 -----------------
+pmcpp: <arg>[3]: #define foo
+pmcpp: Error: Macro redefinition
+---------------- 21 -----------------
+pmcpp: <arg>[2]: #define foo-bar 1
+pmcpp: Error: Illegal character in macro name
+
+#ifdef etc errors ...
+---------------- 22 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #ifndef extra !
+pmcpp: Error: Unexpected extra text in a control line
+---------------- 23 -----------------
+# 1 "TMP.root"
+root {
+
+
+pmcpp: TMP.root[4]: #endif
+pmcpp: Error: No matching #ifdef or #ifndef for #endif
+---------------- 24 -----------------
+# 1 "TMP.root"
+root {
+
+
+
+pmcpp: TMP.root[5]: #ifdef nested
+pmcpp: Error: Nested #ifdef or #ifndef
+---------------- 25 -----------------
+# 1 "TMP.root"
+root {
+
+
+
+pmcpp: TMP.root[5]: #ifndef nested
+pmcpp: Error: Nested #ifdef or #ifndef
+
+other #cpp line errors ...
+---------------- 26 -----------------
+# 1 "TMP.root"
+root {
+pmcpp: TMP.root[2]: #fumble
+pmcpp: Error: Unrecognized control line
diff --git a/qa/464 b/qa/464
new file mode 100755
index 0000000..0886b8c
--- /dev/null
+++ b/qa/464
@@ -0,0 +1,242 @@
+#!/bin/sh
+# PCP QA Test No. 464
+# Test pmLoadASCIINameSpace with pmcpp instead of cpp
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ cat >$tmp.tmp
+ grep "^pmcpp:" <$tmp.tmp >$tmp.save
+ if [ -s $tmp.save ]
+ then
+ # pmcpp lines ... move 'em to the start
+ cat $tmp.save
+ grep -v "^pmcpp:" $tmp.tmp
+ else
+ cat $tmp.tmp
+ fi \
+ | sed \
+ -e "s;$tmp;TMP;g"
+}
+
+# real QA test starts here
+echo "no error cases ..."
+cat <<End-of-File >$tmp.root
+root {
+ one 1:2:3
+ two
+ four
+}
+two {
+ three 4:5:6
+}
+four {
+ five
+}
+four.five {
+ six 7:8:9
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+echo
+cat <<End-of-File >$tmp.root
+root {
+ one 1:2:3
+#include "$tmp.1"
+End-of-File
+cat <<End-of-File >$tmp.1
+ two
+ four
+}
+two {
+ three 4:5:6
+}
+#include "$tmp.2"
+End-of-File
+cat <<End-of-File >$tmp.2
+four {
+ five
+}
+four.five {
+ six 7:8:9
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+rm -f $tmp.?
+
+echo
+cat <<End-of-File >$tmp.root
+/* comment at the beginning */
+root {
+ one 1:2:3
+ two
+ four
+}
+two {
+ three /*inline comment*/ 4:5:6
+}
+four {
+ five
+}
+four.five {
+ /**/six 7:8:9
+}
+/*
+ * multi-line comment at the end
+ */
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+echo
+cat <<End-of-File >$tmp.root
+#define one two
+#define foo_path3 foo.three
+#define THREE 3
+#define FOUR 4
+#define FIVE 5
+root {
+ one 2:2:2
+ foo
+}
+foo {
+ two
+ three
+}
+foo.one {
+ eek THREE:FOUR:FIVE
+}
+foo_path3 {
+ urk FIVE:FOUR:THREE
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+echo
+echo "#include errors ..."
+cat <<End-of-File >$tmp.root
+root {
+#include $tmp.1
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+rm -f $tmp.?
+
+cat <<End-of-File >$tmp.root
+root {
+#include "$tmp.1
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+cat <<End-of-File >$tmp.root
+root {
+#include "$tmp.1" junk
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+rm -f $tmp.?
+
+cat <<End-of-File >$tmp.root
+root {
+#include "$tmp.1"
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+rm -f $tmp.?
+
+cat <<End-of-File >$tmp.root
+root {
+ zero 1:0:0
+#include "$tmp.1"
+}
+End-of-File
+cat <<End-of-File >$tmp.1
+ one 1:0:1
+#include "$tmp.2"
+End-of-File
+cat <<End-of-File >$tmp.2
+ two 1:0:2
+#include "$tmp.3"
+End-of-File
+cat <<End-of-File >$tmp.3
+ three 1:0:3
+#include "$tmp.4"
+End-of-File
+cat <<End-of-File >$tmp.4
+ four 1:0:4
+#include "$tmp.5"
+End-of-File
+pminfo -Dpmns -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+rm -f $tmp.?
+
+echo
+echo "#define errors ..."
+cat <<End-of-File >$tmp.root
+root {
+#define
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+cat <<End-of-File >$tmp.root
+root {
+/* white space at the end of the next line */
+#define
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+cat <<End-of-File >$tmp.root
+root {
+#define foo
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+cat <<End-of-File >$tmp.root
+root {
+#define bad_123_macro!name
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+echo
+echo "other #cpp line errors ..."
+cat <<End-of-File >$tmp.root
+root {
+#fumble
+}
+End-of-File
+pminfo -n $tmp.root -m >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+# success, all done
+exit
diff --git a/qa/464.out b/qa/464.out
new file mode 100644
index 0000000..0778140
--- /dev/null
+++ b/qa/464.out
@@ -0,0 +1,67 @@
+QA output created by 464
+no error cases ...
+one PMID: 1.2.3
+two.three PMID: 4.5.6
+four.five.six PMID: 7.8.9
+
+one PMID: 1.2.3
+two.three PMID: 4.5.6
+four.five.six PMID: 7.8.9
+
+one PMID: 1.2.3
+two.three PMID: 4.5.6
+four.five.six PMID: 7.8.9
+
+two PMID: 2.2.2
+foo.two.eek PMID: 3.4.5
+foo.three.urk PMID: 5.4.3
+
+#include errors ...
+pmcpp: TMP.root[2]: #include TMP.1
+pmcpp: Error: Expected " or < after #include
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+pmcpp: TMP.root[2]: #include "TMP.1
+pmcpp: Error: Expected " after file name
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+pmcpp: TMP.root[2]: #include "TMP.1" junk
+pmcpp: Error: Unexpected extra text in #include line
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+pmcpp: TMP.root[2]: #include "TMP.1"
+pmcpp: Error: Cannot open file for #include
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+pmcpp: TMP.4[2]: #include "TMP.5"
+pmcpp: Error: #include nesting too deep
+load(name=TMP.root, dupok=0) lic case=0 fname=TMP.root
+loadascii(file=TMP.root)
+pmLoadNameSpace: zero -> 1.0.0
+pmLoadNameSpace: one -> 1.0.1
+pmLoadNameSpace: two -> 1.0.2
+pmLoadNameSpace: three -> 1.0.3
+pmLoadNameSpace: four -> 1.0.4
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+
+#define errors ...
+pmcpp: TMP.root[2]: #define
+pmcpp: Error: Missing macro name
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+pmcpp: TMP.root[3]: #define
+pmcpp: Error: Missing macro name
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+PMNS appears to be empty!
+pmcpp: TMP.root[2]: #define bad_123_macro!name
+pmcpp: Error: Illegal character in macro name
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
+
+other #cpp line errors ...
+pmcpp: TMP.root[2]: #fumble
+pmcpp: Error: Unrecognized control line
+Error Parsing ASCII PMNS: pmcpp returned non-zero exit status
+pminfo: Cannot load namespace from "TMP.root": Problems parsing PMNS definitions
diff --git a/qa/465 b/qa/465
new file mode 100755
index 0000000..e011f17
--- /dev/null
+++ b/qa/465
@@ -0,0 +1,91 @@
+#! /bin/sh
+# PCP QA Test No. 465
+# pmdumplog -s
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3811 ]
+then
+ ln $seq.out.4 $seq.out
+ echo "[Version for PCP 3.8.11 or later]"
+elif [ $PCP_VER -ge 3810 ]
+then
+ ln $seq.out.3 $seq.out
+ echo "[Version for PCP 3.8.10 or later]"
+elif [ $PCP_VER -gt 2100 -o $PCP_EOE_VER -ge 6510 ]
+then
+ echo "[Version for PCP 2.2 or later or IRIX >= 6.5.10]"
+ ln $seq.out.2 $seq.out
+elif [ $PCP_VER -le 2100 -o \
+ \( $PCP_EOE_VER -ge 6500 -a $PCP_EOE_VER -le 6509 \) ]
+then
+ echo "[Version for PCP prior to 2.2 or IRIX <= 6.5.9]"
+ ln $seq.out.1 $seq.out
+else
+ echo "Test not suitable for PCP ($PCP_VER) and PCP_EOE ($PCP_EOE_VER)" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File | pmlogger -Dappl1 -l $tmp.log -T 1sec $tmp
+log mandatory on once {
+ sample.control
+}
+log mandatory on once {
+ sample.long.one
+}
+log mandatory on once {
+ sample.float.one
+}
+log mandatory on once {
+ sample.double.one
+}
+log mandatory on once {
+ sample.string.null
+}
+log mandatory on once {
+ sample.string.hullo
+}
+log mandatory on once {
+ sample.bin
+}
+log mandatory on once {
+ sample.control
+ sample.long.one
+ sample.float.one
+ sample.double.one
+ sample.string.null
+ sample.string.hullo
+ sample.bin
+}
+log mandatory on once {
+ sample.string.hullo
+}
+log mandatory on once {
+ sample.bin
+}
+End-of-File
+
+pmdumplog -s $tmp 2>&1 \
+| _filter_pmdumplog \
+| sed -e '1,/pmcd.pmlogger.archive/d'
+
+# success, all done
+status=0
+exit
diff --git a/qa/465.out.1 b/qa/465.out.1
new file mode 100644
index 0000000..a2b1bd9
--- /dev/null
+++ b/qa/465.out.1
@@ -0,0 +1,50 @@
+QA output created by 465
+[Version for PCP prior to 2.2 or IRIX <= 6.5.9]
+
+[48 bytes]
+TIMESTAMP 29.0.0 (sample.control): value 0
+
+[48 bytes]
+TIMESTAMP 29.0.10 (sample.long.one): value 1
+
+[56 bytes]
+TIMESTAMP 29.0.15 (sample.float.one): value 1
+
+[60 bytes]
+TIMESTAMP 29.0.25 (sample.double.one): value 1
+
+[56 bytes]
+TIMESTAMP 29.0.30 (sample.string.null): value ""
+
+[68 bytes]
+TIMESTAMP 29.0.31 (sample.string.hullo): value "hullo world!"
+
+[112 bytes]
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+[280 bytes]
+TIMESTAMP 29.0.31 (sample.string.hullo): value "hullo world!"
+ 29.0.30 (sample.string.null): value ""
+ 29.0.25 (sample.double.one): value 1
+ 29.0.15 (sample.float.one): value 1
+ 29.0.10 (sample.long.one): value 1
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 29.0.0 (sample.control): value 0
diff --git a/qa/465.out.2 b/qa/465.out.2
new file mode 100644
index 0000000..93a93de
--- /dev/null
+++ b/qa/465.out.2
@@ -0,0 +1,50 @@
+QA output created by 465
+[Version for PCP 2.2 or later or IRIX >= 6.5.10]
+
+[40 bytes]
+TIMESTAMP 29.0.0 (sample.control): value 0
+
+[40 bytes]
+TIMESTAMP 29.0.10 (sample.long.one): value 1
+
+[48 bytes]
+TIMESTAMP 29.0.15 (sample.float.one): value 1
+
+[52 bytes]
+TIMESTAMP 29.0.25 (sample.double.one): value 1
+
+[48 bytes]
+TIMESTAMP 29.0.30 (sample.string.null): value ""
+
+[60 bytes]
+TIMESTAMP 29.0.31 (sample.string.hullo): value "hullo world!"
+
+[104 bytes]
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+[272 bytes]
+TIMESTAMP 29.0.31 (sample.string.hullo): value "hullo world!"
+ 29.0.30 (sample.string.null): value ""
+ 29.0.25 (sample.double.one): value 1
+ 29.0.15 (sample.float.one): value 1
+ 29.0.10 (sample.long.one): value 1
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 29.0.0 (sample.control): value 0
diff --git a/qa/465.out.3 b/qa/465.out.3
new file mode 100644
index 0000000..3549b53
--- /dev/null
+++ b/qa/465.out.3
@@ -0,0 +1,32 @@
+QA output created by 465
+[Version for PCP 3.8.10 or later]
+
+[40 bytes]
+TIMESTAMP 29.0.0 (sample.control): value 0
+
+[40 bytes]
+TIMESTAMP 29.0.10 (sample.long.one): value 1
+
+[48 bytes]
+TIMESTAMP 29.0.15 (sample.float.one): value 1
+
+[52 bytes]
+TIMESTAMP 29.0.25 (sample.double.one): value 1
+
+[48 bytes]
+TIMESTAMP 29.0.30 (sample.string.null): value ""
+
+[60 bytes]
+TIMESTAMP 29.0.31 (sample.string.hullo): value "hullo world!"
+
+[104 bytes]
+TIMESTAMP 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
diff --git a/qa/465.out.4 b/qa/465.out.4
new file mode 100644
index 0000000..fe07c7c
--- /dev/null
+++ b/qa/465.out.4
@@ -0,0 +1,20 @@
+QA output created by 465
+[Version for PCP 3.8.11 or later]
+
+[272 bytes]
+TIMESTAMP 29.0.31 (sample.string.hullo): value "hullo world!"
+ 29.0.30 (sample.string.null): value ""
+ 29.0.25 (sample.double.one): value 1
+ 29.0.15 (sample.float.one): value 1
+ 29.0.10 (sample.long.one): value 1
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+ 29.0.0 (sample.control): value 0
diff --git a/qa/466 b/qa/466
new file mode 100755
index 0000000..f290565
--- /dev/null
+++ b/qa/466
@@ -0,0 +1,90 @@
+#! /bin/sh
+# PCP QA Test No. 466
+# pmlogger -r
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright 2014 Red Hat
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3811 ]
+then
+ ln $seq.out.3 $seq.out || exit 1
+elif [ $PCP_VER -ge 3810 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File | pmlogger -r -l $tmp.log -T 3sec $tmp
+log mandatory on once {
+ sample.control
+}
+log mandatory on once {
+ sample.long.one
+}
+log mandatory on once {
+ sample.float.one
+}
+log mandatory on once {
+ sample.double.one
+}
+log mandatory on once {
+ sample.string.null
+}
+log mandatory on once {
+ sample.string.hullo
+}
+log mandatory on once {
+ sample.bin
+}
+log mandatory on once {
+ sample.control
+ sample.long.one
+}
+log mandatory on once {
+ sample.control
+ sample.float.one
+ sample.double.one
+ sample.string.null
+ sample.string.hullo
+ sample.bin
+}
+log mandatory on 500 msec {
+ sample.control
+}
+log mandatory on 1 sec {
+ sample.control
+ sample.long.one
+}
+log mandatory on 2 sec {
+ sample.control
+ sample.float.one
+ sample.double.one
+ sample.string.null
+ sample.string.hullo
+ sample.bin
+}
+End-of-File
+
+sed <$tmp.log \
+ -e '1,/^Archive basename:/d' \
+ -e '/^Log finished/d'
+
+# success, all done
+status=0
+exit
diff --git a/qa/466.out.1 b/qa/466.out.1
new file mode 100644
index 0000000..d1c1b22
--- /dev/null
+++ b/qa/466.out.1
@@ -0,0 +1,47 @@
+QA output created by 466
+
+Metric sample.control logged once: 40 bytes
+
+Metric sample.long.one logged once: 40 bytes
+
+Metric sample.float.one logged once: 48 bytes
+
+Metric sample.double.one logged once: 52 bytes
+
+Metric sample.string.null logged once: 48 bytes
+
+Metric sample.string.hullo logged once: 60 bytes
+
+Metric sample.bin logged once: 104 bytes
+
+Group [2 metrics] {
+ sample.long.one
+ sample.control
+} logged once: 60 bytes
+
+Group [6 metrics] {
+ sample.string.hullo
+ sample.string.null
+ sample.double.one
+ sample.float.one
+ sample.bin
+ sample.control
+} logged once: 252 bytes
+
+Metric sample.control logged every 0.500 sec: 40 bytes or 6.59 Mbytes/day
+
+Group [2 metrics] {
+ sample.long.one
+ sample.control
+} logged every 1 sec: 60 bytes or 4.94 Mbytes/day
+
+Group [6 metrics] {
+ sample.string.hullo
+ sample.string.null
+ sample.double.one
+ sample.float.one
+ sample.bin
+ sample.control
+} logged every 2 sec: 252 bytes or 10.38 Mbytes/day
+pmlogger: End of run time, exiting
+
diff --git a/qa/466.out.2 b/qa/466.out.2
new file mode 100644
index 0000000..27af243
--- /dev/null
+++ b/qa/466.out.2
@@ -0,0 +1,41 @@
+QA output created by 466
+
+Metric sample.control logged once: 40 bytes
+
+Metric sample.long.one logged once: 40 bytes
+
+Metric sample.float.one logged once: 48 bytes
+
+Metric sample.double.one logged once: 52 bytes
+
+Metric sample.string.null logged once: 48 bytes
+
+Metric sample.string.hullo logged once: 60 bytes
+
+Metric sample.bin logged once: 104 bytes
+
+Group [2 metrics] {
+ sample.long.one
+ sample.control
+} logged once: 60 bytes
+
+Group [6 metrics] {
+ sample.string.hullo
+ ...
+ sample.control
+} logged once: 252 bytes
+
+Metric sample.control logged every 0.500 sec: 40 bytes or 6.59 Mbytes/day
+
+Group [2 metrics] {
+ sample.long.one
+ sample.control
+} logged every 1 sec: 60 bytes or 4.94 Mbytes/day
+
+Group [6 metrics] {
+ sample.string.hullo
+ ...
+ sample.control
+} logged every 2 sec: 252 bytes or 10.38 Mbytes/day
+pmlogger: End of run time, exiting
+
diff --git a/qa/466.out.3 b/qa/466.out.3
new file mode 100644
index 0000000..5058934
--- /dev/null
+++ b/qa/466.out.3
@@ -0,0 +1,29 @@
+QA output created by 466
+
+Group [7 metrics] {
+ sample.string.hullo
+ sample.string.null
+ sample.double.one
+ sample.float.one
+ sample.long.one
+ sample.bin
+ sample.control
+} logged once: 272 bytes
+
+Metric sample.control logged every 0.500 sec: 40 bytes or 6.59 Mbytes/day
+
+Group [2 metrics] {
+ sample.long.one
+ sample.control
+} logged every 1 sec: 60 bytes or 4.94 Mbytes/day
+
+Group [6 metrics] {
+ sample.string.hullo
+ sample.string.null
+ sample.double.one
+ sample.float.one
+ sample.bin
+ sample.control
+} logged every 2 sec: 252 bytes or 10.38 Mbytes/day
+pmlogger: End of run time, exiting
+
diff --git a/qa/467 b/qa/467
new file mode 100755
index 0000000..d6ba9b7
--- /dev/null
+++ b/qa/467
@@ -0,0 +1,59 @@
+#!/bin/sh
+# PCP QA Test No. 467
+# Check dynamic metrics work with PMAPI clients - DSO PMDA version
+# pmdumptext test from 210
+#
+# Copyright (c) 2009,2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+grep -q ' RESERVED_DO_NOT_USE[ ]*511' $PCP_VAR_DIR/pmns/stdpmid || \
+ _notrun "No support for dynamic PMNS entries"
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+_filter_dumptext()
+{
+ _filter_pmdumptext \
+ | sed -e '/^Time[ ]/s/[ ][^:]*:/ HOST:/g' \
+ | $PCP_AWK_PROG '
+NR == 1 { for (i = 1; i <= NF; i++) {
+ if ($i ~ /\.max\.redirect/)
+ state[i] = 0
+ else
+ state[i] = 1
+ }
+ }
+ { for (i = 1; i <= NF; i++) {
+ if (state[i]) printf "%s ",$i
+ }
+ print ""
+ }'
+}
+
+_do() {
+ echo
+ echo "== $* =="
+ pmdumptext -H -s 3 $* | _filter_dumptext
+}
+
+# real QA test starts here
+
+echo "PMNS traversal tests ..."
+pminfo sampledso | grep '\.secret\.' | LC_COLLATE=POSIX sort
+_do sampledso.secret
+_do sampledso.secret.bar sampledso.secret.foo
+_do sampledso.secret.foo.bar.grunt
+
+exit
diff --git a/qa/467.out b/qa/467.out
new file mode 100644
index 0000000..2bcc728
--- /dev/null
+++ b/qa/467.out
@@ -0,0 +1,35 @@
+QA output created by 467
+PMNS traversal tests ...
+sampledso.secret.bar
+sampledso.secret.foo.bar.four
+sampledso.secret.foo.bar.grunt.five
+sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+sampledso.secret.foo.bar.grunt.snort.six
+sampledso.secret.foo.bar.max.redirect
+sampledso.secret.foo.bar.three
+sampledso.secret.foo.one
+sampledso.secret.foo.two
+
+== sampledso.secret ==
+Time HOST:sampledso.secret.bar HOST:sampledso.secret.foo.one HOST:sampledso.secret.foo.two HOST:sampledso.secret.foo.bar.three HOST:sampledso.secret.foo.bar.four HOST:sampledso.secret.foo.bar.grunt.five HOST:sampledso.secret.foo.bar.grunt.snort.six HOST:sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+? 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
+none none count count count count count count count
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+
+== sampledso.secret.bar sampledso.secret.foo ==
+Time HOST:sampledso.secret.bar HOST:sampledso.secret.foo.one HOST:sampledso.secret.foo.two HOST:sampledso.secret.foo.bar.three HOST:sampledso.secret.foo.bar.four HOST:sampledso.secret.foo.bar.grunt.five HOST:sampledso.secret.foo.bar.grunt.snort.six HOST:sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+? 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
+none none count count count count count count count
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+
+== sampledso.secret.foo.bar.grunt ==
+Time HOST:sampledso.secret.foo.bar.grunt.five HOST:sampledso.secret.foo.bar.grunt.snort.six HOST:sampledso.secret.foo.bar.grunt.snort.huff.puff.seven
+? 0.000 0.000 0.000
+none count count count
+DATE 5.000 6.000 7.000
+DATE 5.000 6.000 7.000
+DATE 5.000 6.000 7.000
diff --git a/qa/468 b/qa/468
new file mode 100755
index 0000000..57fa85c
--- /dev/null
+++ b/qa/468
@@ -0,0 +1,59 @@
+#!/bin/sh
+# PCP QA Test No. 468
+# Check dynamic metrics work with PMAPI clients - DAEMON PMDA version
+# pmdumptext test from 211
+#
+# Copyright (c) 2009,2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+grep -q ' RESERVED_DO_NOT_USE[ ]*511' $PCP_VAR_DIR/pmns/stdpmid || \
+ _notrun "No support for dynamic PMNS entries"
+which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+_filter_dumptext()
+{
+ _filter_pmdumptext \
+ | sed -e '/^Time[ ]/s/[ ][^:]*:/ HOST:/g' \
+ | $PCP_AWK_PROG '
+NR == 1 { for (i = 1; i <= NF; i++) {
+ if ($i ~ /\.max\.redirect/)
+ state[i] = 0
+ else
+ state[i] = 1
+ }
+ }
+ { for (i = 1; i <= NF; i++) {
+ if (state[i]) printf "%s ",$i
+ }
+ print ""
+ }'
+}
+
+_do() {
+ echo
+ echo "== $* =="
+ pmdumptext -H -s 3 $* | _filter_dumptext
+}
+
+# real QA test starts here
+
+echo "PMNS traversal tests ..."
+pminfo sample | grep '\.secret\.' | LC_COLLATE=POSIX sort
+_do sample.secret
+_do sample.secret.bar sample.secret.foo
+_do sample.secret.foo.bar.grunt
+
+exit
diff --git a/qa/468.out b/qa/468.out
new file mode 100644
index 0000000..e8dbaac
--- /dev/null
+++ b/qa/468.out
@@ -0,0 +1,35 @@
+QA output created by 468
+PMNS traversal tests ...
+sample.secret.bar
+sample.secret.foo.bar.four
+sample.secret.foo.bar.grunt.five
+sample.secret.foo.bar.grunt.snort.huff.puff.seven
+sample.secret.foo.bar.grunt.snort.six
+sample.secret.foo.bar.max.redirect
+sample.secret.foo.bar.three
+sample.secret.foo.one
+sample.secret.foo.two
+
+== sample.secret ==
+Time HOST:sample.secret.bar HOST:sample.secret.foo.one HOST:sample.secret.foo.two HOST:sample.secret.foo.bar.three HOST:sample.secret.foo.bar.four HOST:sample.secret.foo.bar.grunt.five HOST:sample.secret.foo.bar.grunt.snort.six HOST:sample.secret.foo.bar.grunt.snort.huff.puff.seven
+? 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
+none none count count count count count count count
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+
+== sample.secret.bar sample.secret.foo ==
+Time HOST:sample.secret.bar HOST:sample.secret.foo.one HOST:sample.secret.foo.two HOST:sample.secret.foo.bar.three HOST:sample.secret.foo.bar.four HOST:sample.secret.foo.bar.grunt.five HOST:sample.secret.foo.bar.grunt.snort.six HOST:sample.secret.foo.bar.grunt.snort.huff.puff.seven
+? 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
+none none count count count count count count count
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+DATE "foo" 1.000 2.000 3.000 4.000 5.000 6.000 7.000
+
+== sample.secret.foo.bar.grunt ==
+Time HOST:sample.secret.foo.bar.grunt.five HOST:sample.secret.foo.bar.grunt.snort.six HOST:sample.secret.foo.bar.grunt.snort.huff.puff.seven
+? 0.000 0.000 0.000
+none count count count
+DATE 5.000 6.000 7.000
+DATE 5.000 6.000 7.000
+DATE 5.000 6.000 7.000
diff --git a/qa/469 b/qa/469
new file mode 100755
index 0000000..76a049d
--- /dev/null
+++ b/qa/469
@@ -0,0 +1,53 @@
+#! /bin/sh
+# PCP QA Test No. 469
+# test for long help text exceeding maximum length
+#
+# Don't test the libirixpmda help text metrics here.
+# Test them in the libirixpmda QA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+. ./localconfig
+if [ $PCP_EOE_VER -eq 2000 ]
+then
+ echo "Do not run this test with PCP 2.0" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+maxlen=84
+
+# assumes metric length (i.e. line with metric name) is less than $maxlen
+pminfo -T \
+| $PCP_AWK_PROG -v maxlen=$maxlen '
+function skip_me(m)
+{
+ return (m == "kernel.percpu.interrupts.line21" || m ~ "^papi")
+}
+/Help:/ { metric = line; next }
+{
+ if (skip_me(metric)) next
+ line = $0
+ if (length(line) > maxlen && metric != lastone) {
+ printf "%s, full help text is too long: %d\n", metric, length(line)
+ lastone = metric
+ }
+}
+'
+
+# success, all done
+status=0
+exit
diff --git a/qa/469.out b/qa/469.out
new file mode 100644
index 0000000..9dd1154
--- /dev/null
+++ b/qa/469.out
@@ -0,0 +1 @@
+QA output created by 469
diff --git a/qa/470 b/qa/470
new file mode 100755
index 0000000..822cc66
--- /dev/null
+++ b/qa/470
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 470
+# multi-thread - basic context contention
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$multi_threaded || _notrun "No libpcp threading support"
+
+status=0 # success is the default!
+$sudo rm -f $tmp.* /tmp/func?.out $seq.full
+trap "rm -f $tmp.* /tmp/func?.out; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Only one context ..."
+src/multithread5 localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, different fd's ..."
+src/multithread5 `hostname` localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, same fd's ..."
+src/multithread5 `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, different fd's ..."
+src/multithread5 `hostname` localhost 127.0.0.1
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, same fd's ..."
+src/multithread5 `hostname` `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+# success, all done
+exit
diff --git a/qa/470.out b/qa/470.out
new file mode 100644
index 0000000..431e546
--- /dev/null
+++ b/qa/470.out
@@ -0,0 +1,85 @@
+QA output created by 470
+Only one context ...
+ 100 func1: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func1: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func1: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func1: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func1: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func2: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func2: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func2: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func2: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func2: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func3: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func3: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func3: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func3: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func3: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+
+Two contexts, same host, different fd's ...
+ 100 func1: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func1: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func1: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func1: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func1: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func2: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func2: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func2: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func2: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func2: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func3: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func3: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func3: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func3: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func3: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+
+Two contexts, same host, same fd's ...
+ 100 func1: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func1: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func1: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func1: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func1: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func2: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func2: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func2: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func2: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func2: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func3: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func3: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func3: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func3: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func3: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+
+Three contexts, same host, different fd's ...
+ 100 func1: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func1: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func1: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func1: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func1: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func2: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func2: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func2: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func2: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func2: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func3: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func3: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func3: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func3: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func3: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+
+Three contexts, same host, same fd's ...
+ 100 func1: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func1: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func1: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func1: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func1: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func2: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func2: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func2: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func2: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func2: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
+ 100 func3: pmcd.buf.alloc (2.0.18) -> 32 2.5 instant count
+ 100 func3: pmcd.cputime.total (2.7.0) -> U64 PM_INDOM_NULL counter millisec
+ 100 func3: sample.seconds (29.0.2) -> U32 PM_INDOM_NULL counter sec
+ 100 func3: sample.ulonglong.bin_ctr (29.0.112) -> U64 29.2 counter Kbyte
+ 100 func3: sampledso.milliseconds (30.0.3) -> DOUBLE PM_INDOM_NULL counter millisec
diff --git a/qa/471 b/qa/471
new file mode 100755
index 0000000..6bde039
--- /dev/null
+++ b/qa/471
@@ -0,0 +1,48 @@
+#! /bin/sh
+# PCP QA Test No. 471
+# test fix for #621699 pcp scripts should check the user has root access
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+. ./localconfig
+if [ $PCP_EOE_VER -lt 2100 -o $PCP_EOE_VER -ge 6500 ]
+then
+ echo "Requires PCP >= 2.1 or IRIX < 6.5" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+cat << EOFEOF > $tmp.script
+#! /bin/sh
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+_check_userroot
+EOFEOF
+
+chmod 755 $tmp.script
+
+echo "1. testing _check_userroot as a normal user (error is expected)"
+$tmp.script
+
+echo
+echo
+
+echo "2. testing _check_userroot as the root user (no output expected)"
+$sudo $tmp.script
+
+# success, all done
+status=0
+exit
diff --git a/qa/471.out b/qa/471.out
new file mode 100644
index 0000000..4d59550
--- /dev/null
+++ b/qa/471.out
@@ -0,0 +1,6 @@
+QA output created by 471
+1. testing _check_userroot as a normal user (error is expected)
+Error: You must be root (uid 0) to update the PCP collector configuration.
+
+
+2. testing _check_userroot as the root user (no output expected)
diff --git a/qa/472 b/qa/472
new file mode 100755
index 0000000..7ed86d9
--- /dev/null
+++ b/qa/472
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 472
+# multi-thread - instance domain services for contented contexts
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$multi_threaded || _notrun "No libpcp threading support"
+
+status=0 # success is the default!
+$sudo rm -f $tmp.* /tmp/func?.out $seq.full
+trap "rm -f $tmp.* /tmp/func?.out; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Only one context ..."
+src/multithread6 localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, different fd's ..."
+src/multithread6 `hostname` localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, same fd's ..."
+src/multithread6 `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, different fd's ..."
+src/multithread6 `hostname` localhost 127.0.0.1
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, same fd's ..."
+src/multithread6 `hostname` `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+# success, all done
+exit
diff --git a/qa/472.out b/qa/472.out
new file mode 100644
index 0000000..0126664
--- /dev/null
+++ b/qa/472.out
@@ -0,0 +1,85 @@
+QA output created by 472
+Only one context ...
+ 100 func1: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func1: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func1: sample.colour: indom contains 3 instances: iii nnn
+ 100 func1: sample.ulonglong.ten: singular
+ 100 func1: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func2: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func2: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func2: sample.colour: indom contains 3 instances: iii nnn
+ 100 func2: sample.ulonglong.ten: singular
+ 100 func2: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func3: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func3: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func3: sample.colour: indom contains 3 instances: iii nnn
+ 100 func3: sample.ulonglong.ten: singular
+ 100 func3: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+
+Two contexts, same host, different fd's ...
+ 100 func1: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func1: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func1: sample.colour: indom contains 3 instances: iii nnn
+ 100 func1: sample.ulonglong.ten: singular
+ 100 func1: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func2: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func2: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func2: sample.colour: indom contains 3 instances: iii nnn
+ 100 func2: sample.ulonglong.ten: singular
+ 100 func2: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func3: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func3: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func3: sample.colour: indom contains 3 instances: iii nnn
+ 100 func3: sample.ulonglong.ten: singular
+ 100 func3: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+
+Two contexts, same host, same fd's ...
+ 100 func1: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func1: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func1: sample.colour: indom contains 3 instances: iii nnn
+ 100 func1: sample.ulonglong.ten: singular
+ 100 func1: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func2: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func2: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func2: sample.colour: indom contains 3 instances: iii nnn
+ 100 func2: sample.ulonglong.ten: singular
+ 100 func2: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func3: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func3: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func3: sample.colour: indom contains 3 instances: iii nnn
+ 100 func3: sample.ulonglong.ten: singular
+ 100 func3: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+
+Three contexts, same host, different fd's ...
+ 100 func1: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func1: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func1: sample.colour: indom contains 3 instances: iii nnn
+ 100 func1: sample.ulonglong.ten: singular
+ 100 func1: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func2: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func2: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func2: sample.colour: indom contains 3 instances: iii nnn
+ 100 func2: sample.ulonglong.ten: singular
+ 100 func2: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func3: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func3: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func3: sample.colour: indom contains 3 instances: iii nnn
+ 100 func3: sample.ulonglong.ten: singular
+ 100 func3: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+
+Three contexts, same host, same fd's ...
+ 100 func1: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func1: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func1: sample.colour: indom contains 3 instances: iii nnn
+ 100 func1: sample.ulonglong.ten: singular
+ 100 func1: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func2: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func2: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func2: sample.colour: indom contains 3 instances: iii nnn
+ 100 func2: sample.ulonglong.ten: singular
+ 100 func2: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
+ 100 func3: pmcd.buf.alloc: indom contains 7 instances: iiiiiii nnnnnnn
+ 100 func3: pmcd.control.register: indom contains 16 instances: iiiiiiiiiiiiiiii nnnnnnnnnnnnnnnn
+ 100 func3: sample.colour: indom contains 3 instances: iii nnn
+ 100 func3: sample.ulonglong.ten: singular
+ 100 func3: sampledso.bin: indom contains 9 instances: iiiiiiiii nnnnnnnnn
diff --git a/qa/473 b/qa/473
new file mode 100755
index 0000000..52c147e
--- /dev/null
+++ b/qa/473
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 473
+# multi-thread - fetch and profile services for contented contexts
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$multi_threaded || _notrun "No libpcp threading support"
+
+status=0 # success is the default!
+$sudo rm -f $tmp.* /tmp/func?.out $seq.full
+trap "rm -f $tmp.* /tmp/func?.out; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Only one context ..."
+src/multithread7 localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, different fd's ..."
+src/multithread7 `hostname` localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, same fd's ..."
+src/multithread7 `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, different fd's ..."
+src/multithread7 `hostname` localhost 127.0.0.1
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, same fd's ..."
+src/multithread7 `hostname` `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+# success, all done
+exit
diff --git a/qa/473.out b/qa/473.out
new file mode 100644
index 0000000..7f41a68
--- /dev/null
+++ b/qa/473.out
@@ -0,0 +1,85 @@
+QA output created by 473
+Only one context ...
+ 100 func1: pmcd.buf.alloc: 7 values
+ 100 func1: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+
+Two contexts, same host, different fd's ...
+ 100 func1: pmcd.buf.alloc: 7 values
+ 100 func1: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.colour: 3 values pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+
+Two contexts, same host, same fd's ...
+ 100 func1: pmcd.buf.alloc: 7 values
+ 100 func1: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.colour: 3 values pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+
+Three contexts, same host, different fd's ...
+ 100 func1: pmcd.buf.alloc: 7 values
+ 100 func1: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.colour: 3 values pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.control.register: 16 values sampledso.bin: 7 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 7 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sampledso.bin: 7 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+
+Three contexts, same host, same fd's ...
+ 100 func1: pmcd.buf.alloc: 7 values
+ 100 func1: pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func1: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.buf.alloc: 7 values
+ 100 func2: pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.colour: 3 values pmcd.control.register: 5 values sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func2: sampledso.bin: 9 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.buf.alloc: 7 values
+ 100 func3: pmcd.control.register: 16 values sampledso.bin: 7 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.colour: 3 values pmcd.control.register: 16 values sampledso.bin: 7 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
+ 100 func3: sampledso.bin: 7 values sample.ulonglong.ten: 1 values pmcd.buf.alloc: 7 values
diff --git a/qa/474 b/qa/474
new file mode 100755
index 0000000..8a9d635
--- /dev/null
+++ b/qa/474
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 474
+# multi-thread - help text services for contented contexts
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$multi_threaded || _notrun "No libpcp threading support"
+
+status=0 # success is the default!
+$sudo rm -f $tmp.* /tmp/func?.out $seq.full
+trap "rm -f $tmp.* /tmp/func?.out; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Only one context ..."
+src/multithread8 localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, different fd's ..."
+src/multithread8 `hostname` localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, same fd's ..."
+src/multithread8 `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, different fd's ..."
+src/multithread8 `hostname` localhost 127.0.0.1
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, same fd's ..."
+src/multithread8 `hostname` `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+# success, all done
+exit
diff --git a/qa/474.out b/qa/474.out
new file mode 100644
index 0000000..636d4d5
--- /dev/null
+++ b/qa/474.out
@@ -0,0 +1,70 @@
+QA output created by 474
+Only one context ...
+ 100 func1: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func1: pmcd.version: 12 & 12
+ 100 func1: sample.longlong.one: 21 & 21
+ 100 func1: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func2: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func2: pmcd.version: 12 & 12
+ 100 func2: sample.longlong.one: 21 & 21
+ 100 func2: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func3: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func3: pmcd.version: 12 & 12
+ 100 func3: sample.longlong.one: 21 & 21
+ 100 func3: sampledso.bin: 26 & 90 30.2: 40 & 93
+
+Two contexts, same host, different fd's ...
+ 100 func1: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func1: pmcd.version: 12 & 12
+ 100 func1: sample.longlong.one: 21 & 21
+ 100 func1: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func2: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func2: pmcd.version: 12 & 12
+ 100 func2: sample.longlong.one: 21 & 21
+ 100 func2: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func3: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func3: pmcd.version: 12 & 12
+ 100 func3: sample.longlong.one: 21 & 21
+ 100 func3: sampledso.bin: 26 & 90 30.2: 40 & 93
+
+Two contexts, same host, same fd's ...
+ 100 func1: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func1: pmcd.version: 12 & 12
+ 100 func1: sample.longlong.one: 21 & 21
+ 100 func1: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func2: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func2: pmcd.version: 12 & 12
+ 100 func2: sample.longlong.one: 21 & 21
+ 100 func2: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func3: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func3: pmcd.version: 12 & 12
+ 100 func3: sample.longlong.one: 21 & 21
+ 100 func3: sampledso.bin: 26 & 90 30.2: 40 & 93
+
+Three contexts, same host, different fd's ...
+ 100 func1: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func1: pmcd.version: 12 & 12
+ 100 func1: sample.longlong.one: 21 & 21
+ 100 func1: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func2: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func2: pmcd.version: 12 & 12
+ 100 func2: sample.longlong.one: 21 & 21
+ 100 func2: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func3: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func3: pmcd.version: 12 & 12
+ 100 func3: sample.longlong.one: 21 & 21
+ 100 func3: sampledso.bin: 26 & 90 30.2: 40 & 93
+
+Three contexts, same host, same fd's ...
+ 100 func1: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func1: pmcd.version: 12 & 12
+ 100 func1: sample.longlong.one: 21 & 21
+ 100 func1: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func2: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func2: pmcd.version: 12 & 12
+ 100 func2: sample.longlong.one: 21 & 21
+ 100 func2: sampledso.bin: 26 & 90 30.2: 40 & 93
+ 100 func3: pmcd.control.register: 46 & 848 2.2: 37 & 189
+ 100 func3: pmcd.version: 12 & 12
+ 100 func3: sample.longlong.one: 21 & 21
+ 100 func3: sampledso.bin: 26 & 90 30.2: 40 & 93
diff --git a/qa/475 b/qa/475
new file mode 100755
index 0000000..5f04b0f
--- /dev/null
+++ b/qa/475
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 475
+# multi-thread - PMNS services for contented contexts
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$multi_threaded || _notrun "No libpcp threading support"
+
+status=0 # success is the default!
+$sudo rm -f $tmp.* /tmp/func?.out $seq.full
+trap "rm -f $tmp.* /tmp/func?.out; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Only one context ..."
+src/multithread9 localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, different fd's ..."
+src/multithread9 `hostname` localhost
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Two contexts, same host, same fd's ..."
+src/multithread9 `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, different fd's ..."
+src/multithread9 `hostname` localhost 127.0.0.1
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+echo
+echo "Three contexts, same host, same fd's ..."
+src/multithread9 `hostname` `hostname` `hostname`
+cat /tmp/func?.out | LC_COLLATE=POSIX sort | uniq -c | sed -e 's/ */ /g'
+
+# success, all done
+exit
diff --git a/qa/475.out b/qa/475.out
new file mode 100644
index 0000000..5f16ad1
--- /dev/null
+++ b/qa/475.out
@@ -0,0 +1,155 @@
+QA output created by 475
+Only one context ...
+Warning: pmLookupName -> Metric name is not a leaf in PMNS
+ sample.secret -> PM_ID_NULL
+ sampledso.bin -> 30.0.6
+ sample.longlong.one -> 29.0.20
+ pmcd.pmlogger -> PM_ID_NULL
+ 100 func1: pmcd.pmlogger ... pmLookupName OK
+ 100 func1: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sample.longlong.one ... pmLookupName OK
+ 100 func1: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func1: sample.secret ... pmLookupName OK
+ 100 func1: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sampledso.bin ... pmLookupName OK
+ 100 func1: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func2: pmcd.pmlogger ... pmLookupName OK
+ 100 func2: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sample.longlong.one ... pmLookupName OK
+ 100 func2: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func2: sample.secret ... pmLookupName OK
+ 100 func2: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sampledso.bin ... pmLookupName OK
+ 100 func2: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func3: pmcd.pmlogger ... pmLookupName OK
+ 100 func3: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sample.longlong.one ... pmLookupName OK
+ 100 func3: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func3: sample.secret ... pmLookupName OK
+ 100 func3: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sampledso.bin ... pmLookupName OK
+ 100 func3: sampledso.bin pmNameID OK pmNameAll OK
+
+Two contexts, same host, different fd's ...
+Warning: pmLookupName -> Metric name is not a leaf in PMNS
+ sample.secret -> PM_ID_NULL
+ sampledso.bin -> 30.0.6
+ sample.longlong.one -> 29.0.20
+ pmcd.pmlogger -> PM_ID_NULL
+ 100 func1: pmcd.pmlogger ... pmLookupName OK
+ 100 func1: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sample.longlong.one ... pmLookupName OK
+ 100 func1: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func1: sample.secret ... pmLookupName OK
+ 100 func1: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sampledso.bin ... pmLookupName OK
+ 100 func1: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func2: pmcd.pmlogger ... pmLookupName OK
+ 100 func2: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sample.longlong.one ... pmLookupName OK
+ 100 func2: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func2: sample.secret ... pmLookupName OK
+ 100 func2: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sampledso.bin ... pmLookupName OK
+ 100 func2: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func3: pmcd.pmlogger ... pmLookupName OK
+ 100 func3: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sample.longlong.one ... pmLookupName OK
+ 100 func3: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func3: sample.secret ... pmLookupName OK
+ 100 func3: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sampledso.bin ... pmLookupName OK
+ 100 func3: sampledso.bin pmNameID OK pmNameAll OK
+
+Two contexts, same host, same fd's ...
+Warning: pmLookupName -> Metric name is not a leaf in PMNS
+ sample.secret -> PM_ID_NULL
+ sampledso.bin -> 30.0.6
+ sample.longlong.one -> 29.0.20
+ pmcd.pmlogger -> PM_ID_NULL
+ 100 func1: pmcd.pmlogger ... pmLookupName OK
+ 100 func1: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sample.longlong.one ... pmLookupName OK
+ 100 func1: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func1: sample.secret ... pmLookupName OK
+ 100 func1: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sampledso.bin ... pmLookupName OK
+ 100 func1: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func2: pmcd.pmlogger ... pmLookupName OK
+ 100 func2: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sample.longlong.one ... pmLookupName OK
+ 100 func2: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func2: sample.secret ... pmLookupName OK
+ 100 func2: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sampledso.bin ... pmLookupName OK
+ 100 func2: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func3: pmcd.pmlogger ... pmLookupName OK
+ 100 func3: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sample.longlong.one ... pmLookupName OK
+ 100 func3: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func3: sample.secret ... pmLookupName OK
+ 100 func3: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sampledso.bin ... pmLookupName OK
+ 100 func3: sampledso.bin pmNameID OK pmNameAll OK
+
+Three contexts, same host, different fd's ...
+Warning: pmLookupName -> Metric name is not a leaf in PMNS
+ sample.secret -> PM_ID_NULL
+ sampledso.bin -> 30.0.6
+ sample.longlong.one -> 29.0.20
+ pmcd.pmlogger -> PM_ID_NULL
+ 100 func1: pmcd.pmlogger ... pmLookupName OK
+ 100 func1: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sample.longlong.one ... pmLookupName OK
+ 100 func1: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func1: sample.secret ... pmLookupName OK
+ 100 func1: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sampledso.bin ... pmLookupName OK
+ 100 func1: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func2: pmcd.pmlogger ... pmLookupName OK
+ 100 func2: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sample.longlong.one ... pmLookupName OK
+ 100 func2: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func2: sample.secret ... pmLookupName OK
+ 100 func2: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sampledso.bin ... pmLookupName OK
+ 100 func2: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func3: pmcd.pmlogger ... pmLookupName OK
+ 100 func3: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sample.longlong.one ... pmLookupName OK
+ 100 func3: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func3: sample.secret ... pmLookupName OK
+ 100 func3: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sampledso.bin ... pmLookupName OK
+ 100 func3: sampledso.bin pmNameID OK pmNameAll OK
+
+Three contexts, same host, same fd's ...
+Warning: pmLookupName -> Metric name is not a leaf in PMNS
+ sample.secret -> PM_ID_NULL
+ sampledso.bin -> 30.0.6
+ sample.longlong.one -> 29.0.20
+ pmcd.pmlogger -> PM_ID_NULL
+ 100 func1: pmcd.pmlogger ... pmLookupName OK
+ 100 func1: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sample.longlong.one ... pmLookupName OK
+ 100 func1: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func1: sample.secret ... pmLookupName OK
+ 100 func1: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func1: sampledso.bin ... pmLookupName OK
+ 100 func1: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func2: pmcd.pmlogger ... pmLookupName OK
+ 100 func2: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sample.longlong.one ... pmLookupName OK
+ 100 func2: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func2: sample.secret ... pmLookupName OK
+ 100 func2: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func2: sampledso.bin ... pmLookupName OK
+ 100 func2: sampledso.bin pmNameID OK pmNameAll OK
+ 100 func3: pmcd.pmlogger ... pmLookupName OK
+ 100 func3: pmcd.pmlogger pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sample.longlong.one ... pmLookupName OK
+ 100 func3: sample.longlong.one pmNameID OK pmNameAll OK
+ 100 func3: sample.secret ... pmLookupName OK
+ 100 func3: sample.secret pmGetChildrenStatus OK pmGetChildren OK pmTraversePMNS_r OK
+ 100 func3: sampledso.bin ... pmLookupName OK
+ 100 func3: sampledso.bin pmNameID OK pmNameAll OK
diff --git a/qa/476 b/qa/476
new file mode 100755
index 0000000..e61e7e0
--- /dev/null
+++ b/qa/476
@@ -0,0 +1,91 @@
+#!/bin/sh
+# PCP QA Test No. 476
+# Check the basic fault injection services, especially the parsing
+# of the control file.
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+src/check_fault_injection >/dev/null 2>&1 || \
+ _notrun "libpcp not built with fault injection enabled"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e 's/Not enough space/Cannot allocate memory/'
+}
+
+
+# real QA test starts here
+export PM_FAULT_CONTROL=$tmp.control
+
+echo "control file parsing ..."
+cat >$tmp.control <<End-of-File
+# good ones
+ok1
+ok2 >3
+# leading space
+ ok3 % 10
+# leading and trailing tabs
+ ok4 <= 100
+ok_with_a_long_ident_and_funny_chars,./<>()?[]{}|\:;"'!@#$%^&*+-_=5 == 42
+# multiple spaces
+ok6 % 23
+# spaces and tabs
+ok7 != 42
+# empty line
+
+# non-numeric
+bad1 > 12x3456
+# non-numeric
+bad2 != 123 456
+# bad operator
+bad3 ! = 1 2 3
+# non-numeric
+bad4 > = 1 2 3
+# bad operator
+bad5 ?
+End-of-File
+src/check_fault_injection -Dfault 2>&1 | _filter
+
+echo
+echo "basic exercises ..."
+cat >$tmp.control <<End-of-File
+QA:1
+QA:2 <4
+QA:3 >=5
+End-of-File
+src/exercise_fault -Dfault 2>&1 | _filter
+
+echo
+cat >$tmp.control <<End-of-File
+QA:1 <= 4
+QA:2 == 5
+QA:3 > 5
+End-of-File
+src/exercise_fault -Dfault 2>&1 | _filter
+
+echo
+cat >$tmp.control <<End-of-File
+# 1,2 4,5,6,7,8,9,10
+QA:1 != 3
+# 1,4,7,10
+QA:3 % 3
+End-of-File
+src/exercise_fault -Dfault 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/476.out b/qa/476.out
new file mode 100644
index 0000000..ae61ef5
--- /dev/null
+++ b/qa/476.out
@@ -0,0 +1,163 @@
+QA output created by 476
+control file parsing ...
+Ignoring: TMP.control[16]: non-numeric threshold: bad1 > 12x3456
+Ignoring: TMP.control[18]: non-numeric threshold: bad2 != 123 456
+Ignoring: TMP.control[20]: illegal operator: bad3 ! = 1 2 3
+Ignoring: TMP.control[22]: non-numeric threshold: bad4 > = 1 2 3
+Ignoring: TMP.control[24]: illegal operator: bad5 ?
+__pmFaultInject(test) not registered
+=== Fault Injection Summary Report ===
+ok1: guard trip>0, 0 trips, 0 faults
+ok2: guard trip>3, 0 trips, 0 faults
+ok3: guard trip%10, 0 trips, 0 faults
+ok4: guard trip<=100, 0 trips, 0 faults
+ok_with_a_long_ident_and_funny_chars,./<>()?[]{}|\:;"'!@#$%^&*+-_=5: guard trip==42, 0 trips, 0 faults
+ok6: guard trip%23, 0 trips, 0 faults
+ok7: guard trip!=42, 0 trips, 0 faults
+
+basic exercises ...
+__pmFaultInject(QA:1) ntrip=1 INJECT
+malloc:1[1] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=1 INJECT
+malloc:2[1] Cannot allocate memory
+__pmFaultInject(QA:3) ntrip=1 SKIP
+__pmFaultInject(QA:1) ntrip=2 INJECT
+malloc:1[2] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=2 INJECT
+malloc:2[2] Cannot allocate memory
+__pmFaultInject(QA:3) ntrip=2 SKIP
+__pmFaultInject(QA:1) ntrip=3 INJECT
+malloc:1[3] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=3 INJECT
+malloc:2[3] Cannot allocate memory
+__pmFaultInject(QA:3) ntrip=3 SKIP
+__pmFaultInject(QA:1) ntrip=4 INJECT
+malloc:1[4] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=4 SKIP
+__pmFaultInject(QA:3) ntrip=4 SKIP
+__pmFaultInject(QA:1) ntrip=5 INJECT
+malloc:1[5] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=5 SKIP
+__pmFaultInject(QA:3) ntrip=5 INJECT
+malloc:3[5] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=6 INJECT
+malloc:1[6] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=6 SKIP
+__pmFaultInject(QA:3) ntrip=6 INJECT
+malloc:3[6] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=7 INJECT
+malloc:1[7] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=7 SKIP
+__pmFaultInject(QA:3) ntrip=7 INJECT
+malloc:3[7] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=8 INJECT
+malloc:1[8] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=8 SKIP
+__pmFaultInject(QA:3) ntrip=8 INJECT
+malloc:3[8] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=9 INJECT
+malloc:1[9] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=9 SKIP
+__pmFaultInject(QA:3) ntrip=9 INJECT
+malloc:3[9] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=10 INJECT
+malloc:1[10] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=10 SKIP
+__pmFaultInject(QA:3) ntrip=10 INJECT
+malloc:3[10] Cannot allocate memory
+=== Fault Injection Summary Report ===
+QA:1: guard trip>0, 10 trips, 10 faults
+QA:2: guard trip<4, 10 trips, 3 faults
+QA:3: guard trip>=5, 10 trips, 6 faults
+
+__pmFaultInject(QA:1) ntrip=1 INJECT
+malloc:1[1] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=1 SKIP
+__pmFaultInject(QA:3) ntrip=1 SKIP
+__pmFaultInject(QA:1) ntrip=2 INJECT
+malloc:1[2] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=2 SKIP
+__pmFaultInject(QA:3) ntrip=2 SKIP
+__pmFaultInject(QA:1) ntrip=3 INJECT
+malloc:1[3] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=3 SKIP
+__pmFaultInject(QA:3) ntrip=3 SKIP
+__pmFaultInject(QA:1) ntrip=4 INJECT
+malloc:1[4] Cannot allocate memory
+__pmFaultInject(QA:2) ntrip=4 SKIP
+__pmFaultInject(QA:3) ntrip=4 SKIP
+__pmFaultInject(QA:1) ntrip=5 SKIP
+__pmFaultInject(QA:2) ntrip=5 INJECT
+malloc:2[5] Cannot allocate memory
+__pmFaultInject(QA:3) ntrip=5 SKIP
+__pmFaultInject(QA:1) ntrip=6 SKIP
+__pmFaultInject(QA:2) ntrip=6 SKIP
+__pmFaultInject(QA:3) ntrip=6 INJECT
+malloc:3[6] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=7 SKIP
+__pmFaultInject(QA:2) ntrip=7 SKIP
+__pmFaultInject(QA:3) ntrip=7 INJECT
+malloc:3[7] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=8 SKIP
+__pmFaultInject(QA:2) ntrip=8 SKIP
+__pmFaultInject(QA:3) ntrip=8 INJECT
+malloc:3[8] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=9 SKIP
+__pmFaultInject(QA:2) ntrip=9 SKIP
+__pmFaultInject(QA:3) ntrip=9 INJECT
+malloc:3[9] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=10 SKIP
+__pmFaultInject(QA:2) ntrip=10 SKIP
+__pmFaultInject(QA:3) ntrip=10 INJECT
+malloc:3[10] Cannot allocate memory
+=== Fault Injection Summary Report ===
+QA:1: guard trip<=4, 10 trips, 4 faults
+QA:2: guard trip==5, 10 trips, 1 faults
+QA:3: guard trip>5, 10 trips, 5 faults
+
+__pmFaultInject(QA:1) ntrip=1 INJECT
+malloc:1[1] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=1 INJECT
+malloc:3[1] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=2 INJECT
+malloc:1[2] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=2 SKIP
+__pmFaultInject(QA:1) ntrip=3 SKIP
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=3 SKIP
+__pmFaultInject(QA:1) ntrip=4 INJECT
+malloc:1[4] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=4 INJECT
+malloc:3[4] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=5 INJECT
+malloc:1[5] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=5 SKIP
+__pmFaultInject(QA:1) ntrip=6 INJECT
+malloc:1[6] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=6 SKIP
+__pmFaultInject(QA:1) ntrip=7 INJECT
+malloc:1[7] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=7 INJECT
+malloc:3[7] Cannot allocate memory
+__pmFaultInject(QA:1) ntrip=8 INJECT
+malloc:1[8] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=8 SKIP
+__pmFaultInject(QA:1) ntrip=9 INJECT
+malloc:1[9] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=9 SKIP
+__pmFaultInject(QA:1) ntrip=10 INJECT
+malloc:1[10] Cannot allocate memory
+__pmFaultInject(QA:2) not registered
+__pmFaultInject(QA:3) ntrip=10 INJECT
+malloc:3[10] Cannot allocate memory
+=== Fault Injection Summary Report ===
+QA:1: guard trip!=3, 10 trips, 9 faults
+QA:3: guard trip%3, 10 trips, 4 faults
diff --git a/qa/477 b/qa/477
new file mode 100755
index 0000000..152484a
--- /dev/null
+++ b/qa/477
@@ -0,0 +1,74 @@
+#!/bin/sh
+# PCP QA Test No. 477
+# Increase coverage and check malloc failure for event record routines.
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+src/check_fault_injection >/dev/null 2>&1 || \
+ _notrun "libpcp not built with fault injection enabled"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ echo "=== stdout ===" >>$seq.full
+ cat $tmp.out >>$seq.full
+ echo >>$seq.full
+ echo >>$seq.full
+ echo "=== stderr ===" >>$seq.full
+ cat $tmp.err >>$seq.full
+ echo >>$seq.full
+ echo >>$seq.full
+ ( cat $tmp.out; echo; cat $tmp.err ) \
+ | sed \
+ -e "s/\(host:[ ]*\)`hostname`/\1localhost/" \
+ -e '/__pmFaultInject(.*) not registered/d' \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ -e 's/Not enough space/Cannot allocate memory/'
+}
+
+export PM_FAULT_CONTROL=$tmp.control
+export LD_PRELOAD=$PCP_LIB_DIR/libpcp_fault.so
+
+# real QA test starts here
+cat >$tmp.control <<End-of-File
+libpcp/events.c:1 % 7
+libpcp/events.c:2 % 11
+libpcp/events.c:3 % 13
+libpcp/events.c:4 % 9
+End-of-File
+pmstore sample.event.reset 0 >/dev/null 2>&1
+pmevent -Dfault -t 0.2 -s 10 sample.event.records >$tmp.out 2>$tmp.err
+_filter
+
+# first pmRegisterAnon() fails
+echo
+cat >$tmp.control <<End-of-File
+libpcp/events.c:5 <3
+End-of-File
+pmstore sample.event.reset 0 >/dev/null 2>&1
+pmevent -Dfault -t 0.2 -s 2 sample.event.records >$tmp.out 2>$tmp.err
+_filter
+
+# second pmRegisterAnon() fails
+echo
+cat >$tmp.control <<End-of-File
+libpcp/events.c:6 <3
+End-of-File
+pmstore sample.event.reset 0 >/dev/null 2>&1
+pmevent -Dfault -t 0.2 -s 2 sample.event.records >$tmp.out 2>$tmp.err
+_filter
+
+# success, all done
+exit
diff --git a/qa/477.out b/qa/477.out
new file mode 100644
index 0000000..8ec806f
--- /dev/null
+++ b/qa/477.out
@@ -0,0 +1,167 @@
+QA output created by 477
+host: localhost
+samples: 10
+interval: 0.20 sec
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[fungus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[bogus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[fungus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #2"
+sample.event.records[fungus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[bogus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #3"
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.param_string "bingo!"
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[fungus]: 2 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.type 1
+ TIMESTAMP --- event record [1] flags 0x1 (point) ---
+ sample.event.type 2
+ sample.event.param_64 -3
+sample.event.records[bogus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[fungus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #7"
+sample.event.records[fungus]: 0 event records
+sample.event.records[bogus]: pmUnpackEventRecords: Cannot allocate memory
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: pmUnpackEventRecords: Cannot allocate memory
+
+__pmFaultInject(libpcp/events.c:1) ntrip=1 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=2 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=1 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=3 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=2 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=1 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=4 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=3 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=2 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=3 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=4 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=4 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=5 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=6 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=1 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=5 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=5 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=7 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=8 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=2 SKIP
+__pmFaultInject(libpcp/events.c:1) ntrip=6 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=6 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=9 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=10 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=11 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=3 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=12 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=7 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=7 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=13 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=14 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=4 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=8 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=15 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=16 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=5 SKIP
+__pmFaultInject(libpcp/events.c:1) ntrip=8 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=9 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=9 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=17 SKIP
+__pmFaultInject(libpcp/events.c:1) ntrip=10 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=10 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=11 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=11 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=18 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=19 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=12 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=20 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=21 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=22 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=6 SKIP
+__pmFaultInject(libpcp/events.c:1) ntrip=12 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=13 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=23 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=13 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=14 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=24 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=25 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=26 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=7 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=27 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=8 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=15 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=28 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=29 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=30 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=9 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=31 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=10 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=16 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=32 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=33 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=34 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=14 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=17 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=35 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=36 SKIP
+__pmFaultInject(libpcp/events.c:3) ntrip=11 SKIP
+__pmFaultInject(libpcp/events.c:1) ntrip=15 INJECT
+__pmFaultInject(libpcp/events.c:1) ntrip=16 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=18 SKIP
+__pmFaultInject(libpcp/events.c:2) ntrip=37 SKIP
+__pmFaultInject(libpcp/events.c:1) ntrip=17 SKIP
+__pmFaultInject(libpcp/events.c:4) ntrip=19 INJECT
+=== Fault Injection Summary Report ===
+libpcp/events.c:1: guard trip%7, 17 trips, 3 faults
+libpcp/events.c:2: guard trip%11, 37 trips, 4 faults
+libpcp/events.c:3: guard trip%13, 11 trips, 1 faults
+libpcp/events.c:4: guard trip%9, 19 trips, 3 faults
+
+host: localhost
+samples: 2
+interval: 0.20 sec
+sample.event.records[fungus]: pmUnpackEventRecords: QA fault injected
+sample.event.records[bogus]: pmUnpackEventRecords: QA fault injected
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+
+__pmFaultInject(libpcp/events.c:5) ntrip=1 INJECT
+pmUnpackEventRecords: Warning: failed to register event.flags: QA fault injected
+__pmFaultInject(libpcp/events.c:5) ntrip=2 INJECT
+pmUnpackEventRecords: Warning: failed to register event.flags: QA fault injected
+__pmFaultInject(libpcp/events.c:5) ntrip=3 SKIP
+=== Fault Injection Summary Report ===
+libpcp/events.c:5: guard trip<3, 3 trips, 2 faults
+
+host: localhost
+samples: 2
+interval: 0.20 sec
+sample.event.records[fungus]: pmUnpackEventRecords: QA fault injected
+sample.event.records[bogus]: pmUnpackEventRecords: QA fault injected
+sample.event.records[fungus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+sample.event.records[bogus]: 1 event records
+ TIMESTAMP --- event record [0] flags 0x1 (point) ---
+ sample.event.param_string "fetch #1"
+
+__pmFaultInject(libpcp/events.c:6) ntrip=1 INJECT
+pmUnpackEventRecords: Warning: failed to register event.missed: QA fault injected
+__pmFaultInject(libpcp/events.c:6) ntrip=2 INJECT
+pmUnpackEventRecords: Warning: failed to register event.missed: QA fault injected
+__pmFaultInject(libpcp/events.c:6) ntrip=3 SKIP
+=== Fault Injection Summary Report ===
+libpcp/events.c:6: guard trip<3, 3 trips, 2 faults
diff --git a/qa/478 b/qa/478
new file mode 100755
index 0000000..e071931
--- /dev/null
+++ b/qa/478
@@ -0,0 +1,37 @@
+#!/bin/sh
+# PCP QA Test No. 478
+# Increase coverage and check malloc failure for err.c in libpcp
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+src/check_fault_injection >/dev/null 2>&1 || \
+ _notrun "libpcp not built with fault injection enabled"
+[ $PCP_PLATFORM != solaris ] || \
+ _notrun "fault injection point in libpcp/err.c not executed for Solaris"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+src/err 0
+
+echo
+export PM_FAULT_CONTROL=$tmp.control
+export LD_PRELOAD=$PCP_LIB_DIR/libpcp_fault.so
+cat >$tmp.control <<End-of-File
+libpcp/err.c:1
+End-of-File
+src/err -Dfault 12345 12344
+
+# success, all done
+exit
diff --git a/qa/478.out b/qa/478.out
new file mode 100644
index 0000000..1ebc1a6
--- /dev/null
+++ b/qa/478.out
@@ -0,0 +1,11 @@
+QA output created by 478
+0 (0) -> No error
+-(0) (0) -> No error
+
+__pmFaultInject(libpcp/err.c:1) ntrip=1 INJECT
+=== Fault Injection Summary Report ===
+libpcp/err.c:1: guard trip>0, 1 trips, 1 faults
+12345 (12345) -> No such PMAPI error code (12345)
+-(12345) (-12345) -> Generic error, already reported above
+12344 (12344) -> No such PMAPI error code (12344)
+-(12344) (-12344) -> Unknown error 12344
diff --git a/qa/479 b/qa/479
new file mode 100755
index 0000000..1332b8f
--- /dev/null
+++ b/qa/479
@@ -0,0 +1,93 @@
+#!/bin/sh
+# PCP QA Test No. 479
+# coverage for libpcp/logmeta.c
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+mkdir $tmp
+trap "rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e '/addindom( /s/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/' \
+ -e '/searchindom( /s/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/'
+}
+
+_filter2()
+{
+ _filter_pmie_log \
+ | sed -e '/Info: evaluator exiting/d' \
+ | _filter
+}
+
+cp src/bozo.client_v2.* $tmp
+mv $tmp/bozo.client_v2.meta $tmp/bozo.client_v2.save
+
+# real QA test starts here
+for bad in $tmp/bozo.client_v2.meta.bad.*
+do
+ echo
+ echo "=== bad #`echo $bad | sed -e 's/.*\.bad\.//'` ==="
+ cp $bad $tmp/bozo.client_v2.meta
+ pmdumplog -z -a -Dlogmeta $tmp/bozo.client_v2 2>&1 \
+ | _filter
+done
+
+for size in 100 132 136 160 164 407 440 512
+do
+ echo
+ echo "=== size $size ==="
+ dd if=$tmp/bozo.client_v2.save bs=1 count=$size of=$tmp/bozo.client_v2.meta >/dev/null 2>&1
+ pmdumplog -z -a -Dlogmeta $tmp/bozo.client_v2 2>&1 \
+ | _filter
+done
+
+echo
+echo "torture_indom ... silence is golden"
+src/torture_indom -a src/ace_v2 disk.dev.total
+
+echo
+echo "pmie archive meta data exercises ..."
+echo 'some_inst disk.dev.total > 0 -> print "active disks:" " %i"' \
+| pmie -z -t 2sec -a src/ace_v2 2>&1 \
+| _filter2
+echo
+echo 'some_inst disk.dev.total #dks1d1 #dks1d7 > 0 -> print "active disks: " "%i"' \
+| pmie -Dlogmeta -z -t 2sec -a src/ace_v2 2>&1 \
+| _filter2
+
+echo
+echo "pmval archive meta data exercises ..."
+pmval -z -t 5sec -Dlogmeta -a src/ac15 kernel.all.load 2>&1 | _filter
+echo
+pmval -z -t 5sec -Dlogmeta -a src/ac15 -i '"15 minute","5","1 minute"' kernel.all.load 2>&1 | _filter
+
+echo
+echo "torture ..."
+src/torture_logmeta -Dlogmeta src/ac15 60 2 123 2>&1 \
+| tee -a $seq.full \
+| _filter
+
+# success, all done
+exit
diff --git a/qa/479.out.1 b/qa/479.out.1
new file mode 100644
index 0000000..da79f17
--- /dev/null
+++ b/qa/479.out.1
@@ -0,0 +1,769 @@
+QA output created by 479
+
+=== bad #1 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: header read -> 8: expected: 8
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== bad #2 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=454
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: trailer read -> 4 or len=-1: expected 80 @ offset=530
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 100 ===
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Illegal label record at start of a PCP archive log file
+
+=== size 132 ===
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Feb 7 05:27:05.069 1995
+ ending Tue Feb 7 05:27:50.002 1995
+
+Descriptions for Metrics in the Log ...
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+05:27:05.069 0 297 132
+ Error: offset to meta file past end of file (132)
+05:27:09.991 0 585 172
+ Error: offset to meta file past end of file (132)
+
+[40 bytes]
+05:27:05.069 1.18.2 (<noname>): value 1
+
+[140 bytes]
+05:27:09.991 1.82.9 (<noname>): value 17317758937239388160 -1.306541007051815e+233 [00000000000a55f0]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1050050560
+ value 1044185088
+ 1.18.1 (<noname>): value 23080
+
+[140 bytes]
+05:27:14.992 1.82.9 (<noname>): value 18398622847808307200 -2.308458143322094e+305 [00000000000a55ff]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1049395200
+ value 1044119552
+ 1.18.1 (<noname>): value 23080
+
+[140 bytes]
+05:27:20.002 1.82.9 (<noname>): value 960966565606457344 2.017328601836956e-244 [00000000000a560d]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1050378240
+ value 1044316160
+ 1.18.1 (<noname>): value 23176
+
+[140 bytes]
+05:27:24.992 1.82.9 (<noname>): value 1393312129834024960 1.59829238311012e-215 [00000000000a5613]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1051852800
+ value 1044578304
+ 1.18.1 (<noname>): value 23176
+
+[140 bytes]
+05:27:30.002 1.82.9 (<noname>): value 1897715288099520512 8.298808519842818e-182 [00000000000a561a]
+ 1.28.11 (<noname>): value 1624000
+ 1.28.9 (<noname>): value 1851300
+ 1.18.3 (<noname>):
+ value 1051099136
+ value 1044512768
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:34.992 1.82.9 (<noname>): value 1969772882137448448 5.438707151564189e-177 [00000000000a561b]
+ 1.28.11 (<noname>): value 1624020
+ 1.28.9 (<noname>): value 1851330
+ 1.18.3 (<noname>):
+ value 1050378240
+ value 1044447232
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:40.002 1.82.9 (<noname>): value 1969772882137448448 5.438707151564189e-177 [00000000000a561b]
+ 1.28.11 (<noname>): value 1624020
+ 1.28.9 (<noname>): value 1851330
+ 1.18.3 (<noname>):
+ value 1051230208
+ value 1044643840
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:44.992 1.82.9 (<noname>): value 2185945664251232256 1.530859968822608e-162 [00000000000a561e]
+ 1.28.11 (<noname>): value 1624080
+ 1.28.9 (<noname>): value 1851360
+ 1.18.3 (<noname>):
+ value 1050509312
+ value 1044578304
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:50.002 1.82.9 (<noname>): value 2258003258289160192 1.003264389167585e-157 [00000000000a561f]
+ 1.28.11 (<noname>): value 1624080
+ 1.28.9 (<noname>): value 1851360
+ 1.18.3 (<noname>):
+ value 1049821184
+ value 1044512768
+ 1.18.1 (<noname>): value 23180
+
+=== size 136 ===
+Note: timezone set to local timezone of host "bozo" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host bozo
+ commencing Tue Feb 7 05:27:05.069 1995
+ ending Tue Feb 7 05:27:50.002 1995
+
+Descriptions for Metrics in the Log ...
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+05:27:05.069 0 297 132
+ Error: offset to meta file past end of file (136)
+05:27:09.991 0 585 172
+ Error: offset to meta file past end of file (136)
+
+[40 bytes]
+05:27:05.069 1.18.2 (<noname>): value 1
+
+[140 bytes]
+05:27:09.991 1.82.9 (<noname>): value 17317758937239388160 -1.306541007051815e+233 [00000000000a55f0]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1050050560
+ value 1044185088
+ 1.18.1 (<noname>): value 23080
+
+[140 bytes]
+05:27:14.992 1.82.9 (<noname>): value 18398622847808307200 -2.308458143322094e+305 [00000000000a55ff]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1049395200
+ value 1044119552
+ 1.18.1 (<noname>): value 23080
+
+[140 bytes]
+05:27:20.002 1.82.9 (<noname>): value 960966565606457344 2.017328601836956e-244 [00000000000a560d]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1050378240
+ value 1044316160
+ 1.18.1 (<noname>): value 23176
+
+[140 bytes]
+05:27:24.992 1.82.9 (<noname>): value 1393312129834024960 1.59829238311012e-215 [00000000000a5613]
+ 1.28.11 (<noname>): value 1623960
+ 1.28.9 (<noname>): value 1851290
+ 1.18.3 (<noname>):
+ value 1051852800
+ value 1044578304
+ 1.18.1 (<noname>): value 23176
+
+[140 bytes]
+05:27:30.002 1.82.9 (<noname>): value 1897715288099520512 8.298808519842818e-182 [00000000000a561a]
+ 1.28.11 (<noname>): value 1624000
+ 1.28.9 (<noname>): value 1851300
+ 1.18.3 (<noname>):
+ value 1051099136
+ value 1044512768
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:34.992 1.82.9 (<noname>): value 1969772882137448448 5.438707151564189e-177 [00000000000a561b]
+ 1.28.11 (<noname>): value 1624020
+ 1.28.9 (<noname>): value 1851330
+ 1.18.3 (<noname>):
+ value 1050378240
+ value 1044447232
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:40.002 1.82.9 (<noname>): value 1969772882137448448 5.438707151564189e-177 [00000000000a561b]
+ 1.28.11 (<noname>): value 1624020
+ 1.28.9 (<noname>): value 1851330
+ 1.18.3 (<noname>):
+ value 1051230208
+ value 1044643840
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:44.992 1.82.9 (<noname>): value 2185945664251232256 1.530859968822608e-162 [00000000000a561e]
+ 1.28.11 (<noname>): value 1624080
+ 1.28.9 (<noname>): value 1851360
+ 1.18.3 (<noname>):
+ value 1050509312
+ value 1044578304
+ 1.18.1 (<noname>): value 23180
+
+[140 bytes]
+05:27:50.002 1.82.9 (<noname>): value 2258003258289160192 1.003264389167585e-157 [00000000000a561f]
+ 1.28.11 (<noname>): value 1624080
+ 1.28.9 (<noname>): value 1851360
+ 1.18.3 (<noname>):
+ value 1049821184
+ value 1044512768
+ 1.18.1 (<noname>): value 23180
+
+=== size 160 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: numnames read -> 0: expected: 4
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 164 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: len name[0] read -> 0: expected: 4
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 407 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: pmDesc read -> 0: expected: 20
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 440 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: name[0] read -> 5: expected: 15
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 512 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=454
+__pmLogLoadMeta: indom read -> 50: expected: 68
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+torture_indom ... silence is golden
+
+pmie archive meta data exercises ...
+pmie: timezone set to local timezone of host moomba
+print DATE: active disks: dks1d1 dks3d1 dks3d4 dks4d2
+print DATE: active disks: dks1d1 dks3d1 dks3d4 dks4d2
+print DATE: active disks: dks3d1 dks3d4 dks4d2
+print DATE: active disks: dks4d2
+
+__pmLogLoadMeta: record len=46, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 40.0.8 name: 40.0.8
+__pmLogLoadMeta: record len=46, type=1 @ offset=178
+__pmLogLoadMeta: PMID: 40.0.7 name: 40.0.7
+__pmLogLoadMeta: record len=46, type=1 @ offset=224
+__pmLogLoadMeta: PMID: 40.0.5 name: 40.0.5
+__pmLogLoadMeta: record len=46, type=1 @ offset=270
+__pmLogLoadMeta: PMID: 40.0.4 name: 40.0.4
+__pmLogLoadMeta: record len=46, type=1 @ offset=316
+__pmLogLoadMeta: PMID: 40.0.3 name: 40.0.3
+__pmLogLoadMeta: record len=46, type=1 @ offset=362
+__pmLogLoadMeta: PMID: 40.0.2 name: 40.0.2
+__pmLogLoadMeta: record len=46, type=1 @ offset=408
+__pmLogLoadMeta: PMID: 40.0.1 name: 40.0.1
+__pmLogLoadMeta: record len=46, type=1 @ offset=454
+__pmLogLoadMeta: PMID: 40.0.0 name: 40.0.0
+__pmLogLoadMeta: record len=54, type=1 @ offset=500
+__pmLogLoadMeta: PMID: 1.80.7 name: disk.dev.total
+__pmLogLoadMeta: record len=163, type=2 @ offset=554
+addindom( ..., 1.2, TIMESTAMP, numinst=9)
+__pmLogLoadMeta: record len=54, type=1 @ offset=717
+__pmLogLoadMeta: PMID: 1.80.2 name: disk.dev.write
+__pmLogLoadMeta: record len=53, type=1 @ offset=771
+__pmLogLoadMeta: PMID: 1.80.1 name: disk.dev.read
+__pmLogLoadMeta: record len=67, type=1 @ offset=824
+__pmLogLoadMeta: PMID: 1.25.12 name: network.interface.out.bytes
+__pmLogLoadMeta: record len=64, type=2 @ offset=891
+addindom( ..., 1.6, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=66, type=1 @ offset=955
+__pmLogLoadMeta: PMID: 1.25.7 name: network.interface.in.bytes
+__pmLogLoadMeta: record len=55, type=1 @ offset=1021
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=1076
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=59, type=1 @ offset=1156
+__pmLogLoadMeta: PMID: 1.10.54 name: kernel.all.ipc.sema
+__pmLogLoadMeta: record len=58, type=1 @ offset=1215
+__pmLogLoadMeta: PMID: 1.10.53 name: kernel.all.ipc.msg
+__pmLogLoadMeta: record len=58, type=1 @ offset=1273
+__pmLogLoadMeta: PMID: 1.10.29 name: kernel.all.writech
+__pmLogLoadMeta: record len=58, type=1 @ offset=1331
+__pmLogLoadMeta: PMID: 1.10.19 name: kernel.all.syscall
+__pmLogLoadMeta: record len=57, type=1 @ offset=1389
+__pmLogLoadMeta: PMID: 1.10.16 name: kernel.all.runque
+__pmLogLoadMeta: record len=57, type=1 @ offset=1446
+__pmLogLoadMeta: PMID: 1.10.15 name: kernel.all.runocc
+__pmLogLoadMeta: record len=57, type=1 @ offset=1503
+__pmLogLoadMeta: PMID: 1.10.14 name: kernel.all.readch
+__pmLogLoadMeta: record len=65, type=1 @ offset=1560
+__pmLogLoadMeta: PMID: 1.10.12 name: kernel.all.cpu.wait.total
+__pmLogLoadMeta: record len=59, type=1 @ offset=1625
+__pmLogLoadMeta: PMID: 1.10.11 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=60, type=1 @ offset=1684
+__pmLogLoadMeta: PMID: 1.10.10 name: kernel.all.cpu.sxbrk
+__pmLogLoadMeta: record len=58, type=1 @ offset=1744
+__pmLogLoadMeta: PMID: 1.10.9 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=1802
+__pmLogLoadMeta: PMID: 1.10.8 name: kernel.all.cpu.intr
+__pmLogLoadMeta: record len=59, type=1 @ offset=1861
+__pmLogLoadMeta: PMID: 1.10.7 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=1920
+__pmLogLoadMeta: PMID: 1.10.3 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=46, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 40.0.8 name: 40.0.8
+__pmLogLoadMeta: record len=46, type=1 @ offset=178
+__pmLogLoadMeta: PMID: 40.0.7 name: 40.0.7
+__pmLogLoadMeta: record len=46, type=1 @ offset=224
+__pmLogLoadMeta: PMID: 40.0.5 name: 40.0.5
+__pmLogLoadMeta: record len=46, type=1 @ offset=270
+__pmLogLoadMeta: PMID: 40.0.4 name: 40.0.4
+__pmLogLoadMeta: record len=46, type=1 @ offset=316
+__pmLogLoadMeta: PMID: 40.0.3 name: 40.0.3
+__pmLogLoadMeta: record len=46, type=1 @ offset=362
+__pmLogLoadMeta: PMID: 40.0.2 name: 40.0.2
+__pmLogLoadMeta: record len=46, type=1 @ offset=408
+__pmLogLoadMeta: PMID: 40.0.1 name: 40.0.1
+__pmLogLoadMeta: record len=46, type=1 @ offset=454
+__pmLogLoadMeta: PMID: 40.0.0 name: 40.0.0
+__pmLogLoadMeta: record len=54, type=1 @ offset=500
+__pmLogLoadMeta: PMID: 1.80.7 name: disk.dev.total
+__pmLogLoadMeta: record len=163, type=2 @ offset=554
+addindom( ..., 1.2, TIMESTAMP, numinst=9)
+__pmLogLoadMeta: record len=54, type=1 @ offset=717
+__pmLogLoadMeta: PMID: 1.80.2 name: disk.dev.write
+__pmLogLoadMeta: record len=53, type=1 @ offset=771
+__pmLogLoadMeta: PMID: 1.80.1 name: disk.dev.read
+__pmLogLoadMeta: record len=67, type=1 @ offset=824
+__pmLogLoadMeta: PMID: 1.25.12 name: network.interface.out.bytes
+__pmLogLoadMeta: record len=64, type=2 @ offset=891
+addindom( ..., 1.6, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=66, type=1 @ offset=955
+__pmLogLoadMeta: PMID: 1.25.7 name: network.interface.in.bytes
+__pmLogLoadMeta: record len=55, type=1 @ offset=1021
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=1076
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=59, type=1 @ offset=1156
+__pmLogLoadMeta: PMID: 1.10.54 name: kernel.all.ipc.sema
+__pmLogLoadMeta: record len=58, type=1 @ offset=1215
+__pmLogLoadMeta: PMID: 1.10.53 name: kernel.all.ipc.msg
+__pmLogLoadMeta: record len=58, type=1 @ offset=1273
+__pmLogLoadMeta: PMID: 1.10.29 name: kernel.all.writech
+__pmLogLoadMeta: record len=58, type=1 @ offset=1331
+__pmLogLoadMeta: PMID: 1.10.19 name: kernel.all.syscall
+__pmLogLoadMeta: record len=57, type=1 @ offset=1389
+__pmLogLoadMeta: PMID: 1.10.16 name: kernel.all.runque
+__pmLogLoadMeta: record len=57, type=1 @ offset=1446
+__pmLogLoadMeta: PMID: 1.10.15 name: kernel.all.runocc
+__pmLogLoadMeta: record len=57, type=1 @ offset=1503
+__pmLogLoadMeta: PMID: 1.10.14 name: kernel.all.readch
+__pmLogLoadMeta: record len=65, type=1 @ offset=1560
+__pmLogLoadMeta: PMID: 1.10.12 name: kernel.all.cpu.wait.total
+__pmLogLoadMeta: record len=59, type=1 @ offset=1625
+__pmLogLoadMeta: PMID: 1.10.11 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=60, type=1 @ offset=1684
+__pmLogLoadMeta: PMID: 1.10.10 name: kernel.all.cpu.sxbrk
+__pmLogLoadMeta: record len=58, type=1 @ offset=1744
+__pmLogLoadMeta: PMID: 1.10.9 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=1802
+__pmLogLoadMeta: PMID: 1.10.8 name: kernel.all.cpu.intr
+__pmLogLoadMeta: record len=59, type=1 @ offset=1861
+__pmLogLoadMeta: PMID: 1.10.7 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=1920
+__pmLogLoadMeta: PMID: 1.10.3 name: kernel.all.pswitch
+pmie: timezone set to local timezone of host moomba
+__pmLogLoadMeta: record len=46, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 40.0.8 name: 40.0.8
+__pmLogLoadMeta: record len=46, type=1 @ offset=178
+__pmLogLoadMeta: PMID: 40.0.7 name: 40.0.7
+__pmLogLoadMeta: record len=46, type=1 @ offset=224
+__pmLogLoadMeta: PMID: 40.0.5 name: 40.0.5
+__pmLogLoadMeta: record len=46, type=1 @ offset=270
+__pmLogLoadMeta: PMID: 40.0.4 name: 40.0.4
+__pmLogLoadMeta: record len=46, type=1 @ offset=316
+__pmLogLoadMeta: PMID: 40.0.3 name: 40.0.3
+__pmLogLoadMeta: record len=46, type=1 @ offset=362
+__pmLogLoadMeta: PMID: 40.0.2 name: 40.0.2
+__pmLogLoadMeta: record len=46, type=1 @ offset=408
+__pmLogLoadMeta: PMID: 40.0.1 name: 40.0.1
+__pmLogLoadMeta: record len=46, type=1 @ offset=454
+__pmLogLoadMeta: PMID: 40.0.0 name: 40.0.0
+__pmLogLoadMeta: record len=54, type=1 @ offset=500
+__pmLogLoadMeta: PMID: 1.80.7 name: disk.dev.total
+__pmLogLoadMeta: record len=163, type=2 @ offset=554
+addindom( ..., 1.2, TIMESTAMP, numinst=9)
+__pmLogLoadMeta: record len=54, type=1 @ offset=717
+__pmLogLoadMeta: PMID: 1.80.2 name: disk.dev.write
+__pmLogLoadMeta: record len=53, type=1 @ offset=771
+__pmLogLoadMeta: PMID: 1.80.1 name: disk.dev.read
+__pmLogLoadMeta: record len=67, type=1 @ offset=824
+__pmLogLoadMeta: PMID: 1.25.12 name: network.interface.out.bytes
+__pmLogLoadMeta: record len=64, type=2 @ offset=891
+addindom( ..., 1.6, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=66, type=1 @ offset=955
+__pmLogLoadMeta: PMID: 1.25.7 name: network.interface.in.bytes
+__pmLogLoadMeta: record len=55, type=1 @ offset=1021
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=1076
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=59, type=1 @ offset=1156
+__pmLogLoadMeta: PMID: 1.10.54 name: kernel.all.ipc.sema
+__pmLogLoadMeta: record len=58, type=1 @ offset=1215
+__pmLogLoadMeta: PMID: 1.10.53 name: kernel.all.ipc.msg
+__pmLogLoadMeta: record len=58, type=1 @ offset=1273
+__pmLogLoadMeta: PMID: 1.10.29 name: kernel.all.writech
+__pmLogLoadMeta: record len=58, type=1 @ offset=1331
+__pmLogLoadMeta: PMID: 1.10.19 name: kernel.all.syscall
+__pmLogLoadMeta: record len=57, type=1 @ offset=1389
+__pmLogLoadMeta: PMID: 1.10.16 name: kernel.all.runque
+__pmLogLoadMeta: record len=57, type=1 @ offset=1446
+__pmLogLoadMeta: PMID: 1.10.15 name: kernel.all.runocc
+__pmLogLoadMeta: record len=57, type=1 @ offset=1503
+__pmLogLoadMeta: PMID: 1.10.14 name: kernel.all.readch
+__pmLogLoadMeta: record len=65, type=1 @ offset=1560
+__pmLogLoadMeta: PMID: 1.10.12 name: kernel.all.cpu.wait.total
+__pmLogLoadMeta: record len=59, type=1 @ offset=1625
+__pmLogLoadMeta: PMID: 1.10.11 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=60, type=1 @ offset=1684
+__pmLogLoadMeta: PMID: 1.10.10 name: kernel.all.cpu.sxbrk
+__pmLogLoadMeta: record len=58, type=1 @ offset=1744
+__pmLogLoadMeta: PMID: 1.10.9 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=1802
+__pmLogLoadMeta: PMID: 1.10.8 name: kernel.all.cpu.intr
+__pmLogLoadMeta: record len=59, type=1 @ offset=1861
+__pmLogLoadMeta: PMID: 1.10.7 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=1920
+__pmLogLoadMeta: PMID: 1.10.3 name: kernel.all.pswitch
+[TIMESTAMP] pmie(PID) Error: metric disk.dev.total from archive src/ace_v2 (host moomba) does not (currently) have instance "dks1d7"
+
+pmval archive meta data exercises ...
+__pmLogLoadMeta: record len=58, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 2.3.3 name: pmcd.pmlogger.host
+__pmLogLoadMeta: record len=41, type=2 @ offset=190
+addindom( ..., 2.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=58, type=1 @ offset=231
+__pmLogLoadMeta: PMID: 2.3.0 name: pmcd.pmlogger.port
+__pmLogLoadMeta: record len=61, type=1 @ offset=289
+__pmLogLoadMeta: PMID: 2.3.2 name: pmcd.pmlogger.archive
+__pmLogLoadMeta: record len=55, type=1 @ offset=350
+__pmLogLoadMeta: PMID: 60.2.0 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=405
+addindom( ..., 60.2, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=49, type=1 @ offset=485
+__pmLogLoadMeta: PMID: 60.1.7 name: swap.used
+__pmLogLoadMeta: record len=55, type=1 @ offset=534
+__pmLogLoadMeta: PMID: 60.1.5 name: mem.util.cached
+__pmLogLoadMeta: record len=55, type=1 @ offset=589
+__pmLogLoadMeta: PMID: 60.1.4 name: mem.util.bufmem
+__pmLogLoadMeta: record len=53, type=1 @ offset=644
+__pmLogLoadMeta: PMID: 60.1.2 name: mem.util.free
+__pmLogLoadMeta: record len=57, type=1 @ offset=697
+__pmLogLoadMeta: PMID: 60.0.27 name: disk.all.blkwrite
+__pmLogLoadMeta: record len=56, type=1 @ offset=754
+__pmLogLoadMeta: PMID: 60.0.26 name: disk.all.blkread
+__pmLogLoadMeta: record len=59, type=1 @ offset=810
+__pmLogLoadMeta: PMID: 60.0.23 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=869
+__pmLogLoadMeta: PMID: 60.0.22 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=927
+__pmLogLoadMeta: PMID: 60.0.21 name: kernel.all.cpu.nice
+__pmLogLoadMeta: record len=59, type=1 @ offset=986
+__pmLogLoadMeta: PMID: 60.0.20 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=58, type=1 @ offset=1045
+__pmLogLoadMeta: PMID: 60.0.13 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=55, type=1 @ offset=1103
+__pmLogLoadMeta: PMID: 60.0.12 name: kernel.all.intr
+__pmLogLoadMeta: record len=48, type=1 @ offset=1158
+__pmLogLoadMeta: PMID: 60.0.11 name: swap.out
+__pmLogLoadMeta: record len=47, type=1 @ offset=1206
+__pmLogLoadMeta: PMID: 60.0.10 name: swap.in
+Note: timezone set to local timezone of host "ac15" from archive
+
+metric: kernel.all.load
+archive: src/ac15
+host: ac15
+start: Sat Jul 9 08:48:29 2005
+end: Sat Jul 9 08:48:54 2005
+semantics: instantaneous value
+units: none
+samples: 5
+interval: 5.00 sec
+08:48:29.436 No values available
+
+ 1 minute 5 minute 15 minute
+08:48:34.436 31.16 31.19 31.16
+08:48:39.436 31.16 31.19 31.16
+08:48:44.436 31.16 31.19 31.16
+08:48:49.436 31.13 31.18 31.16
+
+__pmLogLoadMeta: record len=58, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 2.3.3 name: pmcd.pmlogger.host
+__pmLogLoadMeta: record len=41, type=2 @ offset=190
+addindom( ..., 2.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=58, type=1 @ offset=231
+__pmLogLoadMeta: PMID: 2.3.0 name: pmcd.pmlogger.port
+__pmLogLoadMeta: record len=61, type=1 @ offset=289
+__pmLogLoadMeta: PMID: 2.3.2 name: pmcd.pmlogger.archive
+__pmLogLoadMeta: record len=55, type=1 @ offset=350
+__pmLogLoadMeta: PMID: 60.2.0 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=405
+addindom( ..., 60.2, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=49, type=1 @ offset=485
+__pmLogLoadMeta: PMID: 60.1.7 name: swap.used
+__pmLogLoadMeta: record len=55, type=1 @ offset=534
+__pmLogLoadMeta: PMID: 60.1.5 name: mem.util.cached
+__pmLogLoadMeta: record len=55, type=1 @ offset=589
+__pmLogLoadMeta: PMID: 60.1.4 name: mem.util.bufmem
+__pmLogLoadMeta: record len=53, type=1 @ offset=644
+__pmLogLoadMeta: PMID: 60.1.2 name: mem.util.free
+__pmLogLoadMeta: record len=57, type=1 @ offset=697
+__pmLogLoadMeta: PMID: 60.0.27 name: disk.all.blkwrite
+__pmLogLoadMeta: record len=56, type=1 @ offset=754
+__pmLogLoadMeta: PMID: 60.0.26 name: disk.all.blkread
+__pmLogLoadMeta: record len=59, type=1 @ offset=810
+__pmLogLoadMeta: PMID: 60.0.23 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=869
+__pmLogLoadMeta: PMID: 60.0.22 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=927
+__pmLogLoadMeta: PMID: 60.0.21 name: kernel.all.cpu.nice
+__pmLogLoadMeta: record len=59, type=1 @ offset=986
+__pmLogLoadMeta: PMID: 60.0.20 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=58, type=1 @ offset=1045
+__pmLogLoadMeta: PMID: 60.0.13 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=55, type=1 @ offset=1103
+__pmLogLoadMeta: PMID: 60.0.12 name: kernel.all.intr
+__pmLogLoadMeta: record len=48, type=1 @ offset=1158
+__pmLogLoadMeta: PMID: 60.0.11 name: swap.out
+__pmLogLoadMeta: record len=47, type=1 @ offset=1206
+__pmLogLoadMeta: PMID: 60.0.10 name: swap.in
+Note: timezone set to local timezone of host "ac15" from archive
+
+metric: kernel.all.load
+archive: src/ac15
+host: ac15
+start: Sat Jul 9 08:48:29 2005
+end: Sat Jul 9 08:48:54 2005
+semantics: instantaneous value
+units: none
+samples: 5
+interval: 5.00 sec
+08:48:29.436 No values available
+
+ 1 minute 5 15 minute
+08:48:34.436 31.16 31.19 31.16
+08:48:39.436 31.16 31.19 31.16
+08:48:44.436 31.16 31.19 31.16
+08:48:49.436 31.13 31.18 31.16
+
+torture ...
+
+=== iteration 0 context -1 ===
+pmGetInDomArchive(PM_INDOM_NULL) -> Unknown or illegal instance domain identifier
+pmLookupInDomArchive(PM_INDOM_NULL, foobar) -> Unknown or illegal instance domain identifier
+pmNameInDomArchive(PM_INDOM_NULL, 1234567) -> Unknown or illegal instance domain identifier
+pmGetInDomArchive(60.2) -> Attempt to use an illegal context
+pmLookupInDomArchive(60.2, foobar) -> Attempt to use an illegal context
+pmNameInDomArchive(60.2, 1234567) -> Attempt to use an illegal context
+pmGetInDomArchive(60.123) -> Attempt to use an illegal context
+pmLookupInDomArchive(60.123, foobar) -> Attempt to use an illegal context
+pmNameInDomArchive(60.123, 1234567) -> Attempt to use an illegal context
+
+=== iteration 1 context 0 ===
+pmGetInDomArchive(PM_INDOM_NULL) -> Unknown or illegal instance domain identifier
+pmLookupInDomArchive(PM_INDOM_NULL, foobar) -> Unknown or illegal instance domain identifier
+pmNameInDomArchive(PM_INDOM_NULL, 1234567) -> Unknown or illegal instance domain identifier
+pmGetInDomArchive(60.2) -> Operation requires context with archive source of metrics
+pmLookupInDomArchive(60.2, foobar) -> Operation requires context with archive source of metrics
+pmNameInDomArchive(60.2, 1234567) -> Operation requires context with archive source of metrics
+pmGetInDomArchive(60.123) -> Operation requires context with archive source of metrics
+pmLookupInDomArchive(60.123, foobar) -> Operation requires context with archive source of metrics
+pmNameInDomArchive(60.123, 1234567) -> Operation requires context with archive source of metrics
+__pmLogLoadMeta: record len=58, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 2.3.3 name: pmcd.pmlogger.host
+__pmLogLoadMeta: record len=41, type=2 @ offset=190
+addindom( ..., 2.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=58, type=1 @ offset=231
+__pmLogLoadMeta: PMID: 2.3.0 name: pmcd.pmlogger.port
+__pmLogLoadMeta: record len=61, type=1 @ offset=289
+__pmLogLoadMeta: PMID: 2.3.2 name: pmcd.pmlogger.archive
+__pmLogLoadMeta: record len=55, type=1 @ offset=350
+__pmLogLoadMeta: PMID: 60.2.0 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=405
+addindom( ..., 60.2, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=49, type=1 @ offset=485
+__pmLogLoadMeta: PMID: 60.1.7 name: swap.used
+__pmLogLoadMeta: record len=55, type=1 @ offset=534
+__pmLogLoadMeta: PMID: 60.1.5 name: mem.util.cached
+__pmLogLoadMeta: record len=55, type=1 @ offset=589
+__pmLogLoadMeta: PMID: 60.1.4 name: mem.util.bufmem
+__pmLogLoadMeta: record len=53, type=1 @ offset=644
+__pmLogLoadMeta: PMID: 60.1.2 name: mem.util.free
+__pmLogLoadMeta: record len=57, type=1 @ offset=697
+__pmLogLoadMeta: PMID: 60.0.27 name: disk.all.blkwrite
+__pmLogLoadMeta: record len=56, type=1 @ offset=754
+__pmLogLoadMeta: PMID: 60.0.26 name: disk.all.blkread
+__pmLogLoadMeta: record len=59, type=1 @ offset=810
+__pmLogLoadMeta: PMID: 60.0.23 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=869
+__pmLogLoadMeta: PMID: 60.0.22 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=927
+__pmLogLoadMeta: PMID: 60.0.21 name: kernel.all.cpu.nice
+__pmLogLoadMeta: record len=59, type=1 @ offset=986
+__pmLogLoadMeta: PMID: 60.0.20 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=58, type=1 @ offset=1045
+__pmLogLoadMeta: PMID: 60.0.13 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=55, type=1 @ offset=1103
+__pmLogLoadMeta: PMID: 60.0.12 name: kernel.all.intr
+__pmLogLoadMeta: record len=48, type=1 @ offset=1158
+__pmLogLoadMeta: PMID: 60.0.11 name: swap.out
+__pmLogLoadMeta: record len=47, type=1 @ offset=1206
+__pmLogLoadMeta: PMID: 60.0.10 name: swap.in
+
+=== iteration 2 context 1 ===
+pmGetInDomArchive(PM_INDOM_NULL) -> Unknown or illegal instance domain identifier
+pmLookupInDomArchive(PM_INDOM_NULL, foobar) -> Unknown or illegal instance domain identifier
+pmNameInDomArchive(PM_INDOM_NULL, 1234567) -> Unknown or illegal instance domain identifier
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogGetInDom(PM_INDOM_NULL) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogLookupInDom(PM_INDOM_NULL, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogNameInDom(PM_INDOM_NULL, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogGetInDom(PM_INDOM_NULL) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogLookupInDom(PM_INDOM_NULL, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogNameInDom(PM_INDOM_NULL, 1234567) -> Instance domain identifier not defined in the PCP archive log
+pmGetInDomArchive(60.2) -> 3
+ [1] 1 minute
+ [5] 5 minute
+ [15] 15 minute
+pmLookupInDomArchive(60.2, foobar) -> Instance identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.2, 1 minute) -> 1
+pmLookupInDomArchive(60.2, 1) -> 1
+pmNameInDomArchive(60.2, 1234567) -> Instance identifier not defined in the PCP archive log
+pmNameInDomArchive(60.2, 1) -> 1 minute
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogGetInDom(60.2) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogGetInDom(60.2) -> 3
+ [1] 1 minute
+ [5] 5 minute
+ [15] 15 minute
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, foobar) -> Instance identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1 minute) -> 1
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1) -> 1
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1234567) -> Instance identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1) -> 1 minute
+pmGetInDomArchive(60.123) -> Instance domain identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.123, foobar) -> Instance domain identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.123, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+pmNameInDomArchive(60.123, 1234567) -> Instance domain identifier not defined in the PCP archive log
+pmNameInDomArchive(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogGetInDom(60.123) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogGetInDom(60.123) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
diff --git a/qa/479.out.2 b/qa/479.out.2
new file mode 100644
index 0000000..393f4ac
--- /dev/null
+++ b/qa/479.out.2
@@ -0,0 +1,571 @@
+QA output created by 479
+
+=== bad #1 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: header read -> 8: expected: 8 or len=-194
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== bad #2 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=454
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: trailer read -> 4 or len=-1: expected 80 @ offset=530
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 100 ===
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Illegal label record at start of a PCP archive log file
+
+=== size 132 ===
+__pmLogLoadMeta: no metrics found?
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 136 ===
+__pmLogLoadMeta: no metrics found?
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 160 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: numnames read -> 0: expected: 4
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 164 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: len name[0] read -> 0: expected: 4
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 407 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: pmDesc read -> 0: expected: 20
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 440 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: name[0] read -> 5: expected: 15
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+=== size 512 ===
+__pmLogLoadMeta: record len=49, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 1.18.2 name: hinv.ncpu
+__pmLogLoadMeta: record len=54, type=1 @ offset=181
+__pmLogLoadMeta: PMID: 1.82.9 name: disk.all.total
+__pmLogLoadMeta: record len=62, type=1 @ offset=235
+__pmLogLoadMeta: PMID: 1.28.11 name: kernel.percpu.cpu.user
+__pmLogLoadMeta: record len=41, type=2 @ offset=297
+addindom( ..., 1.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=61, type=1 @ offset=338
+__pmLogLoadMeta: PMID: 1.28.9 name: kernel.percpu.cpu.sys
+__pmLogLoadMeta: record len=55, type=1 @ offset=399
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=454
+__pmLogLoadMeta: indom read -> 50: expected: 68
+pmdumplog: Cannot open archive "TMP/bozo.client_v2": Corrupted record in a PCP archive log
+
+torture_indom ... silence is golden
+
+pmie archive meta data exercises ...
+pmie: timezone set to local timezone of host moomba
+print DATE: active disks: dks1d1 dks3d1 dks3d4 dks4d2
+print DATE: active disks: dks1d1 dks3d1 dks3d4 dks4d2
+print DATE: active disks: dks3d1 dks3d4 dks4d2
+print DATE: active disks: dks4d2
+
+__pmLogLoadMeta: record len=46, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 40.0.8 name: 40.0.8
+__pmLogLoadMeta: record len=46, type=1 @ offset=178
+__pmLogLoadMeta: PMID: 40.0.7 name: 40.0.7
+__pmLogLoadMeta: record len=46, type=1 @ offset=224
+__pmLogLoadMeta: PMID: 40.0.5 name: 40.0.5
+__pmLogLoadMeta: record len=46, type=1 @ offset=270
+__pmLogLoadMeta: PMID: 40.0.4 name: 40.0.4
+__pmLogLoadMeta: record len=46, type=1 @ offset=316
+__pmLogLoadMeta: PMID: 40.0.3 name: 40.0.3
+__pmLogLoadMeta: record len=46, type=1 @ offset=362
+__pmLogLoadMeta: PMID: 40.0.2 name: 40.0.2
+__pmLogLoadMeta: record len=46, type=1 @ offset=408
+__pmLogLoadMeta: PMID: 40.0.1 name: 40.0.1
+__pmLogLoadMeta: record len=46, type=1 @ offset=454
+__pmLogLoadMeta: PMID: 40.0.0 name: 40.0.0
+__pmLogLoadMeta: record len=54, type=1 @ offset=500
+__pmLogLoadMeta: PMID: 1.80.7 name: disk.dev.total
+__pmLogLoadMeta: record len=163, type=2 @ offset=554
+addindom( ..., 1.2, TIMESTAMP, numinst=9)
+__pmLogLoadMeta: record len=54, type=1 @ offset=717
+__pmLogLoadMeta: PMID: 1.80.2 name: disk.dev.write
+__pmLogLoadMeta: record len=53, type=1 @ offset=771
+__pmLogLoadMeta: PMID: 1.80.1 name: disk.dev.read
+__pmLogLoadMeta: record len=67, type=1 @ offset=824
+__pmLogLoadMeta: PMID: 1.25.12 name: network.interface.out.bytes
+__pmLogLoadMeta: record len=64, type=2 @ offset=891
+addindom( ..., 1.6, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=66, type=1 @ offset=955
+__pmLogLoadMeta: PMID: 1.25.7 name: network.interface.in.bytes
+__pmLogLoadMeta: record len=55, type=1 @ offset=1021
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=1076
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=59, type=1 @ offset=1156
+__pmLogLoadMeta: PMID: 1.10.54 name: kernel.all.ipc.sema
+__pmLogLoadMeta: record len=58, type=1 @ offset=1215
+__pmLogLoadMeta: PMID: 1.10.53 name: kernel.all.ipc.msg
+__pmLogLoadMeta: record len=58, type=1 @ offset=1273
+__pmLogLoadMeta: PMID: 1.10.29 name: kernel.all.writech
+__pmLogLoadMeta: record len=58, type=1 @ offset=1331
+__pmLogLoadMeta: PMID: 1.10.19 name: kernel.all.syscall
+__pmLogLoadMeta: record len=57, type=1 @ offset=1389
+__pmLogLoadMeta: PMID: 1.10.16 name: kernel.all.runque
+__pmLogLoadMeta: record len=57, type=1 @ offset=1446
+__pmLogLoadMeta: PMID: 1.10.15 name: kernel.all.runocc
+__pmLogLoadMeta: record len=57, type=1 @ offset=1503
+__pmLogLoadMeta: PMID: 1.10.14 name: kernel.all.readch
+__pmLogLoadMeta: record len=65, type=1 @ offset=1560
+__pmLogLoadMeta: PMID: 1.10.12 name: kernel.all.cpu.wait.total
+__pmLogLoadMeta: record len=59, type=1 @ offset=1625
+__pmLogLoadMeta: PMID: 1.10.11 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=60, type=1 @ offset=1684
+__pmLogLoadMeta: PMID: 1.10.10 name: kernel.all.cpu.sxbrk
+__pmLogLoadMeta: record len=58, type=1 @ offset=1744
+__pmLogLoadMeta: PMID: 1.10.9 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=1802
+__pmLogLoadMeta: PMID: 1.10.8 name: kernel.all.cpu.intr
+__pmLogLoadMeta: record len=59, type=1 @ offset=1861
+__pmLogLoadMeta: PMID: 1.10.7 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=1920
+__pmLogLoadMeta: PMID: 1.10.3 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=46, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 40.0.8 name: 40.0.8
+__pmLogLoadMeta: record len=46, type=1 @ offset=178
+__pmLogLoadMeta: PMID: 40.0.7 name: 40.0.7
+__pmLogLoadMeta: record len=46, type=1 @ offset=224
+__pmLogLoadMeta: PMID: 40.0.5 name: 40.0.5
+__pmLogLoadMeta: record len=46, type=1 @ offset=270
+__pmLogLoadMeta: PMID: 40.0.4 name: 40.0.4
+__pmLogLoadMeta: record len=46, type=1 @ offset=316
+__pmLogLoadMeta: PMID: 40.0.3 name: 40.0.3
+__pmLogLoadMeta: record len=46, type=1 @ offset=362
+__pmLogLoadMeta: PMID: 40.0.2 name: 40.0.2
+__pmLogLoadMeta: record len=46, type=1 @ offset=408
+__pmLogLoadMeta: PMID: 40.0.1 name: 40.0.1
+__pmLogLoadMeta: record len=46, type=1 @ offset=454
+__pmLogLoadMeta: PMID: 40.0.0 name: 40.0.0
+__pmLogLoadMeta: record len=54, type=1 @ offset=500
+__pmLogLoadMeta: PMID: 1.80.7 name: disk.dev.total
+__pmLogLoadMeta: record len=163, type=2 @ offset=554
+addindom( ..., 1.2, TIMESTAMP, numinst=9)
+__pmLogLoadMeta: record len=54, type=1 @ offset=717
+__pmLogLoadMeta: PMID: 1.80.2 name: disk.dev.write
+__pmLogLoadMeta: record len=53, type=1 @ offset=771
+__pmLogLoadMeta: PMID: 1.80.1 name: disk.dev.read
+__pmLogLoadMeta: record len=67, type=1 @ offset=824
+__pmLogLoadMeta: PMID: 1.25.12 name: network.interface.out.bytes
+__pmLogLoadMeta: record len=64, type=2 @ offset=891
+addindom( ..., 1.6, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=66, type=1 @ offset=955
+__pmLogLoadMeta: PMID: 1.25.7 name: network.interface.in.bytes
+__pmLogLoadMeta: record len=55, type=1 @ offset=1021
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=1076
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=59, type=1 @ offset=1156
+__pmLogLoadMeta: PMID: 1.10.54 name: kernel.all.ipc.sema
+__pmLogLoadMeta: record len=58, type=1 @ offset=1215
+__pmLogLoadMeta: PMID: 1.10.53 name: kernel.all.ipc.msg
+__pmLogLoadMeta: record len=58, type=1 @ offset=1273
+__pmLogLoadMeta: PMID: 1.10.29 name: kernel.all.writech
+__pmLogLoadMeta: record len=58, type=1 @ offset=1331
+__pmLogLoadMeta: PMID: 1.10.19 name: kernel.all.syscall
+__pmLogLoadMeta: record len=57, type=1 @ offset=1389
+__pmLogLoadMeta: PMID: 1.10.16 name: kernel.all.runque
+__pmLogLoadMeta: record len=57, type=1 @ offset=1446
+__pmLogLoadMeta: PMID: 1.10.15 name: kernel.all.runocc
+__pmLogLoadMeta: record len=57, type=1 @ offset=1503
+__pmLogLoadMeta: PMID: 1.10.14 name: kernel.all.readch
+__pmLogLoadMeta: record len=65, type=1 @ offset=1560
+__pmLogLoadMeta: PMID: 1.10.12 name: kernel.all.cpu.wait.total
+__pmLogLoadMeta: record len=59, type=1 @ offset=1625
+__pmLogLoadMeta: PMID: 1.10.11 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=60, type=1 @ offset=1684
+__pmLogLoadMeta: PMID: 1.10.10 name: kernel.all.cpu.sxbrk
+__pmLogLoadMeta: record len=58, type=1 @ offset=1744
+__pmLogLoadMeta: PMID: 1.10.9 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=1802
+__pmLogLoadMeta: PMID: 1.10.8 name: kernel.all.cpu.intr
+__pmLogLoadMeta: record len=59, type=1 @ offset=1861
+__pmLogLoadMeta: PMID: 1.10.7 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=1920
+__pmLogLoadMeta: PMID: 1.10.3 name: kernel.all.pswitch
+pmie: timezone set to local timezone of host moomba
+__pmLogLoadMeta: record len=46, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 40.0.8 name: 40.0.8
+__pmLogLoadMeta: record len=46, type=1 @ offset=178
+__pmLogLoadMeta: PMID: 40.0.7 name: 40.0.7
+__pmLogLoadMeta: record len=46, type=1 @ offset=224
+__pmLogLoadMeta: PMID: 40.0.5 name: 40.0.5
+__pmLogLoadMeta: record len=46, type=1 @ offset=270
+__pmLogLoadMeta: PMID: 40.0.4 name: 40.0.4
+__pmLogLoadMeta: record len=46, type=1 @ offset=316
+__pmLogLoadMeta: PMID: 40.0.3 name: 40.0.3
+__pmLogLoadMeta: record len=46, type=1 @ offset=362
+__pmLogLoadMeta: PMID: 40.0.2 name: 40.0.2
+__pmLogLoadMeta: record len=46, type=1 @ offset=408
+__pmLogLoadMeta: PMID: 40.0.1 name: 40.0.1
+__pmLogLoadMeta: record len=46, type=1 @ offset=454
+__pmLogLoadMeta: PMID: 40.0.0 name: 40.0.0
+__pmLogLoadMeta: record len=54, type=1 @ offset=500
+__pmLogLoadMeta: PMID: 1.80.7 name: disk.dev.total
+__pmLogLoadMeta: record len=163, type=2 @ offset=554
+addindom( ..., 1.2, TIMESTAMP, numinst=9)
+__pmLogLoadMeta: record len=54, type=1 @ offset=717
+__pmLogLoadMeta: PMID: 1.80.2 name: disk.dev.write
+__pmLogLoadMeta: record len=53, type=1 @ offset=771
+__pmLogLoadMeta: PMID: 1.80.1 name: disk.dev.read
+__pmLogLoadMeta: record len=67, type=1 @ offset=824
+__pmLogLoadMeta: PMID: 1.25.12 name: network.interface.out.bytes
+__pmLogLoadMeta: record len=64, type=2 @ offset=891
+addindom( ..., 1.6, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=66, type=1 @ offset=955
+__pmLogLoadMeta: PMID: 1.25.7 name: network.interface.in.bytes
+__pmLogLoadMeta: record len=55, type=1 @ offset=1021
+__pmLogLoadMeta: PMID: 1.18.3 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=1076
+addindom( ..., 1.5, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=59, type=1 @ offset=1156
+__pmLogLoadMeta: PMID: 1.10.54 name: kernel.all.ipc.sema
+__pmLogLoadMeta: record len=58, type=1 @ offset=1215
+__pmLogLoadMeta: PMID: 1.10.53 name: kernel.all.ipc.msg
+__pmLogLoadMeta: record len=58, type=1 @ offset=1273
+__pmLogLoadMeta: PMID: 1.10.29 name: kernel.all.writech
+__pmLogLoadMeta: record len=58, type=1 @ offset=1331
+__pmLogLoadMeta: PMID: 1.10.19 name: kernel.all.syscall
+__pmLogLoadMeta: record len=57, type=1 @ offset=1389
+__pmLogLoadMeta: PMID: 1.10.16 name: kernel.all.runque
+__pmLogLoadMeta: record len=57, type=1 @ offset=1446
+__pmLogLoadMeta: PMID: 1.10.15 name: kernel.all.runocc
+__pmLogLoadMeta: record len=57, type=1 @ offset=1503
+__pmLogLoadMeta: PMID: 1.10.14 name: kernel.all.readch
+__pmLogLoadMeta: record len=65, type=1 @ offset=1560
+__pmLogLoadMeta: PMID: 1.10.12 name: kernel.all.cpu.wait.total
+__pmLogLoadMeta: record len=59, type=1 @ offset=1625
+__pmLogLoadMeta: PMID: 1.10.11 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=60, type=1 @ offset=1684
+__pmLogLoadMeta: PMID: 1.10.10 name: kernel.all.cpu.sxbrk
+__pmLogLoadMeta: record len=58, type=1 @ offset=1744
+__pmLogLoadMeta: PMID: 1.10.9 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=1802
+__pmLogLoadMeta: PMID: 1.10.8 name: kernel.all.cpu.intr
+__pmLogLoadMeta: record len=59, type=1 @ offset=1861
+__pmLogLoadMeta: PMID: 1.10.7 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=1920
+__pmLogLoadMeta: PMID: 1.10.3 name: kernel.all.pswitch
+[TIMESTAMP] pmie(PID) Error: metric disk.dev.total from archive src/ace_v2 (host moomba) does not (currently) have instance "dks1d7"
+
+pmval archive meta data exercises ...
+__pmLogLoadMeta: record len=58, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 2.3.3 name: pmcd.pmlogger.host
+__pmLogLoadMeta: record len=41, type=2 @ offset=190
+addindom( ..., 2.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=58, type=1 @ offset=231
+__pmLogLoadMeta: PMID: 2.3.0 name: pmcd.pmlogger.port
+__pmLogLoadMeta: record len=61, type=1 @ offset=289
+__pmLogLoadMeta: PMID: 2.3.2 name: pmcd.pmlogger.archive
+__pmLogLoadMeta: record len=55, type=1 @ offset=350
+__pmLogLoadMeta: PMID: 60.2.0 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=405
+addindom( ..., 60.2, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=49, type=1 @ offset=485
+__pmLogLoadMeta: PMID: 60.1.7 name: swap.used
+__pmLogLoadMeta: record len=55, type=1 @ offset=534
+__pmLogLoadMeta: PMID: 60.1.5 name: mem.util.cached
+__pmLogLoadMeta: record len=55, type=1 @ offset=589
+__pmLogLoadMeta: PMID: 60.1.4 name: mem.util.bufmem
+__pmLogLoadMeta: record len=53, type=1 @ offset=644
+__pmLogLoadMeta: PMID: 60.1.2 name: mem.util.free
+__pmLogLoadMeta: record len=57, type=1 @ offset=697
+__pmLogLoadMeta: PMID: 60.0.27 name: disk.all.blkwrite
+__pmLogLoadMeta: record len=56, type=1 @ offset=754
+__pmLogLoadMeta: PMID: 60.0.26 name: disk.all.blkread
+__pmLogLoadMeta: record len=59, type=1 @ offset=810
+__pmLogLoadMeta: PMID: 60.0.23 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=869
+__pmLogLoadMeta: PMID: 60.0.22 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=927
+__pmLogLoadMeta: PMID: 60.0.21 name: kernel.all.cpu.nice
+__pmLogLoadMeta: record len=59, type=1 @ offset=986
+__pmLogLoadMeta: PMID: 60.0.20 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=58, type=1 @ offset=1045
+__pmLogLoadMeta: PMID: 60.0.13 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=55, type=1 @ offset=1103
+__pmLogLoadMeta: PMID: 60.0.12 name: kernel.all.intr
+__pmLogLoadMeta: record len=48, type=1 @ offset=1158
+__pmLogLoadMeta: PMID: 60.0.11 name: swap.out
+__pmLogLoadMeta: record len=47, type=1 @ offset=1206
+__pmLogLoadMeta: PMID: 60.0.10 name: swap.in
+Note: timezone set to local timezone of host "ac15" from archive
+
+metric: kernel.all.load
+archive: src/ac15
+host: ac15
+start: Sat Jul 9 08:48:29 2005
+end: Sat Jul 9 08:48:54 2005
+semantics: instantaneous value
+units: none
+samples: 5
+interval: 5.00 sec
+08:48:29.436 No values available
+
+ 1 minute 5 minute 15 minute
+08:48:34.436 31.16 31.19 31.16
+08:48:39.436 31.16 31.19 31.16
+08:48:44.436 31.16 31.19 31.16
+08:48:49.436 31.13 31.18 31.16
+
+__pmLogLoadMeta: record len=58, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 2.3.3 name: pmcd.pmlogger.host
+__pmLogLoadMeta: record len=41, type=2 @ offset=190
+addindom( ..., 2.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=58, type=1 @ offset=231
+__pmLogLoadMeta: PMID: 2.3.0 name: pmcd.pmlogger.port
+__pmLogLoadMeta: record len=61, type=1 @ offset=289
+__pmLogLoadMeta: PMID: 2.3.2 name: pmcd.pmlogger.archive
+__pmLogLoadMeta: record len=55, type=1 @ offset=350
+__pmLogLoadMeta: PMID: 60.2.0 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=405
+addindom( ..., 60.2, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=49, type=1 @ offset=485
+__pmLogLoadMeta: PMID: 60.1.7 name: swap.used
+__pmLogLoadMeta: record len=55, type=1 @ offset=534
+__pmLogLoadMeta: PMID: 60.1.5 name: mem.util.cached
+__pmLogLoadMeta: record len=55, type=1 @ offset=589
+__pmLogLoadMeta: PMID: 60.1.4 name: mem.util.bufmem
+__pmLogLoadMeta: record len=53, type=1 @ offset=644
+__pmLogLoadMeta: PMID: 60.1.2 name: mem.util.free
+__pmLogLoadMeta: record len=57, type=1 @ offset=697
+__pmLogLoadMeta: PMID: 60.0.27 name: disk.all.blkwrite
+__pmLogLoadMeta: record len=56, type=1 @ offset=754
+__pmLogLoadMeta: PMID: 60.0.26 name: disk.all.blkread
+__pmLogLoadMeta: record len=59, type=1 @ offset=810
+__pmLogLoadMeta: PMID: 60.0.23 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=869
+__pmLogLoadMeta: PMID: 60.0.22 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=927
+__pmLogLoadMeta: PMID: 60.0.21 name: kernel.all.cpu.nice
+__pmLogLoadMeta: record len=59, type=1 @ offset=986
+__pmLogLoadMeta: PMID: 60.0.20 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=58, type=1 @ offset=1045
+__pmLogLoadMeta: PMID: 60.0.13 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=55, type=1 @ offset=1103
+__pmLogLoadMeta: PMID: 60.0.12 name: kernel.all.intr
+__pmLogLoadMeta: record len=48, type=1 @ offset=1158
+__pmLogLoadMeta: PMID: 60.0.11 name: swap.out
+__pmLogLoadMeta: record len=47, type=1 @ offset=1206
+__pmLogLoadMeta: PMID: 60.0.10 name: swap.in
+Note: timezone set to local timezone of host "ac15" from archive
+
+metric: kernel.all.load
+archive: src/ac15
+host: ac15
+start: Sat Jul 9 08:48:29 2005
+end: Sat Jul 9 08:48:54 2005
+semantics: instantaneous value
+units: none
+samples: 5
+interval: 5.00 sec
+08:48:29.436 No values available
+
+ 1 minute 5 15 minute
+08:48:34.436 31.16 31.19 31.16
+08:48:39.436 31.16 31.19 31.16
+08:48:44.436 31.16 31.19 31.16
+08:48:49.436 31.13 31.18 31.16
+
+torture ...
+
+=== iteration 0 context -1 ===
+pmGetInDomArchive(PM_INDOM_NULL) -> Unknown or illegal instance domain identifier
+pmLookupInDomArchive(PM_INDOM_NULL, foobar) -> Unknown or illegal instance domain identifier
+pmNameInDomArchive(PM_INDOM_NULL, 1234567) -> Unknown or illegal instance domain identifier
+pmGetInDomArchive(60.2) -> Attempt to use an illegal context
+pmLookupInDomArchive(60.2, foobar) -> Attempt to use an illegal context
+pmNameInDomArchive(60.2, 1234567) -> Attempt to use an illegal context
+pmGetInDomArchive(60.123) -> Attempt to use an illegal context
+pmLookupInDomArchive(60.123, foobar) -> Attempt to use an illegal context
+pmNameInDomArchive(60.123, 1234567) -> Attempt to use an illegal context
+
+=== iteration 1 context 0 ===
+pmGetInDomArchive(PM_INDOM_NULL) -> Unknown or illegal instance domain identifier
+pmLookupInDomArchive(PM_INDOM_NULL, foobar) -> Unknown or illegal instance domain identifier
+pmNameInDomArchive(PM_INDOM_NULL, 1234567) -> Unknown or illegal instance domain identifier
+pmGetInDomArchive(60.2) -> Operation requires context with archive source of metrics
+pmLookupInDomArchive(60.2, foobar) -> Operation requires context with archive source of metrics
+pmNameInDomArchive(60.2, 1234567) -> Operation requires context with archive source of metrics
+pmGetInDomArchive(60.123) -> Operation requires context with archive source of metrics
+pmLookupInDomArchive(60.123, foobar) -> Operation requires context with archive source of metrics
+pmNameInDomArchive(60.123, 1234567) -> Operation requires context with archive source of metrics
+__pmLogLoadMeta: record len=58, type=1 @ offset=132
+__pmLogLoadMeta: PMID: 2.3.3 name: pmcd.pmlogger.host
+__pmLogLoadMeta: record len=41, type=2 @ offset=190
+addindom( ..., 2.1, TIMESTAMP, numinst=1)
+__pmLogLoadMeta: record len=58, type=1 @ offset=231
+__pmLogLoadMeta: PMID: 2.3.0 name: pmcd.pmlogger.port
+__pmLogLoadMeta: record len=61, type=1 @ offset=289
+__pmLogLoadMeta: PMID: 2.3.2 name: pmcd.pmlogger.archive
+__pmLogLoadMeta: record len=55, type=1 @ offset=350
+__pmLogLoadMeta: PMID: 60.2.0 name: kernel.all.load
+__pmLogLoadMeta: record len=80, type=2 @ offset=405
+addindom( ..., 60.2, TIMESTAMP, numinst=3)
+__pmLogLoadMeta: record len=49, type=1 @ offset=485
+__pmLogLoadMeta: PMID: 60.1.7 name: swap.used
+__pmLogLoadMeta: record len=55, type=1 @ offset=534
+__pmLogLoadMeta: PMID: 60.1.5 name: mem.util.cached
+__pmLogLoadMeta: record len=55, type=1 @ offset=589
+__pmLogLoadMeta: PMID: 60.1.4 name: mem.util.bufmem
+__pmLogLoadMeta: record len=53, type=1 @ offset=644
+__pmLogLoadMeta: PMID: 60.1.2 name: mem.util.free
+__pmLogLoadMeta: record len=57, type=1 @ offset=697
+__pmLogLoadMeta: PMID: 60.0.27 name: disk.all.blkwrite
+__pmLogLoadMeta: record len=56, type=1 @ offset=754
+__pmLogLoadMeta: PMID: 60.0.26 name: disk.all.blkread
+__pmLogLoadMeta: record len=59, type=1 @ offset=810
+__pmLogLoadMeta: PMID: 60.0.23 name: kernel.all.cpu.idle
+__pmLogLoadMeta: record len=58, type=1 @ offset=869
+__pmLogLoadMeta: PMID: 60.0.22 name: kernel.all.cpu.sys
+__pmLogLoadMeta: record len=59, type=1 @ offset=927
+__pmLogLoadMeta: PMID: 60.0.21 name: kernel.all.cpu.nice
+__pmLogLoadMeta: record len=59, type=1 @ offset=986
+__pmLogLoadMeta: PMID: 60.0.20 name: kernel.all.cpu.user
+__pmLogLoadMeta: record len=58, type=1 @ offset=1045
+__pmLogLoadMeta: PMID: 60.0.13 name: kernel.all.pswitch
+__pmLogLoadMeta: record len=55, type=1 @ offset=1103
+__pmLogLoadMeta: PMID: 60.0.12 name: kernel.all.intr
+__pmLogLoadMeta: record len=48, type=1 @ offset=1158
+__pmLogLoadMeta: PMID: 60.0.11 name: swap.out
+__pmLogLoadMeta: record len=47, type=1 @ offset=1206
+__pmLogLoadMeta: PMID: 60.0.10 name: swap.in
+
+=== iteration 2 context 1 ===
+pmGetInDomArchive(PM_INDOM_NULL) -> Unknown or illegal instance domain identifier
+pmLookupInDomArchive(PM_INDOM_NULL, foobar) -> Unknown or illegal instance domain identifier
+pmNameInDomArchive(PM_INDOM_NULL, 1234567) -> Unknown or illegal instance domain identifier
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogGetInDom(PM_INDOM_NULL) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogLookupInDom(PM_INDOM_NULL, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogNameInDom(PM_INDOM_NULL, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogGetInDom(PM_INDOM_NULL) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogLookupInDom(PM_INDOM_NULL, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., PM_INDOM_NULL, TIMESTAMP)
+__pmLogNameInDom(PM_INDOM_NULL, 1234567) -> Instance domain identifier not defined in the PCP archive log
+pmGetInDomArchive(60.2) -> 3
+ [1] 1 minute
+ [5] 5 minute
+ [15] 15 minute
+pmLookupInDomArchive(60.2, foobar) -> Instance identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.2, 1 minute) -> 1
+pmLookupInDomArchive(60.2, 1) -> 1
+pmNameInDomArchive(60.2, 1234567) -> Instance identifier not defined in the PCP archive log
+pmNameInDomArchive(60.2, 1) -> 1 minute
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogGetInDom(60.2) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+request @ 08:48:29.436 is too early for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogGetInDom(60.2) -> 3
+ [1] 1 minute
+ [5] 5 minute
+ [15] 15 minute
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, foobar) -> Instance identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1 minute) -> 1
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogLookupInDom(60.2, 1) -> 1
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1234567) -> Instance identifier not defined in the PCP archive log
+searchindom( ..., 60.2, TIMESTAMP)
+success for indom @ 08:48:34.052
+__pmLogNameInDom(60.2, 1) -> 1 minute
+pmGetInDomArchive(60.123) -> Instance domain identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.123, foobar) -> Instance domain identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.123, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+pmLookupInDomArchive(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+pmNameInDomArchive(60.123, 1234567) -> Instance domain identifier not defined in the PCP archive log
+pmNameInDomArchive(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogGetInDom(60.123) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogGetInDom(60.123) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, foobar) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1 minute) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogLookupInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1234567) -> Instance domain identifier not defined in the PCP archive log
+searchindom( ..., 60.123, TIMESTAMP)
+__pmLogNameInDom(60.123, 1) -> Instance domain identifier not defined in the PCP archive log
diff --git a/qa/480 b/qa/480
new file mode 100755
index 0000000..4bd5c99
--- /dev/null
+++ b/qa/480
@@ -0,0 +1,88 @@
+#!/bin/sh
+# PCP QA Test No. 480
+# fault injection for libpcp/logmeta.c
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+src/check_fault_injection >/dev/null 2>&1 || \
+ _notrun "libpcp not built with fault injection enabled"
+
+if [ -f $PCP_DIR/usr/include/pcp/configsz.h ]
+then
+ # PCP 3.9.0 or later
+ defs="$PCP_DIR/usr/include/pcp/configsz.h $PCP_DIR/usr/include/pcp/config32.h $PCP_DIR/usr/include/pcp/config64.h"
+elif [ -f $PCP_DIR/usr/include/pcp/config.h ]
+then
+ # PCP 3.8.3 or later
+ defs=$PCP_DIR/usr/include/pcp/config.h
+elif [ -f $PCP_DIR/usr/include/pcp/platform_header.h ]
+then
+ # PCP 3.6 or later
+ defs=$PCP_DIR/usr/include/pcp/platform_header.h
+elif [ -f $PCP_DIR/usr/include/pcp/platform_defs.h ]
+then
+ # older PCP versions
+ defs=$PCP_DIR/usr/include/pcp/platform_defs.h
+else
+ _notrun "No $PCP_DIR/usr/include/pcp header files found"
+fi
+
+rm -f $seq.out
+if grep 'define HAVE_64BIT_PTR 1' $defs >/dev/null 2>&1
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# from __pmNoMem() - [Sun Sep 4 21:30:34] torture_logmeta(17548)
+_filter()
+{
+ sed \
+ -e '/^\[[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9:]*]/{
+s//[DATE]/
+s/([0-9][0-9]*)/(PID)/
+}' \
+ -e 's/Not enough space/Cannot allocate memory/'
+}
+
+# real QA test starts here
+export PM_FAULT_CONTROL=$tmp.control
+export LD_PRELOAD=$PCP_LIB_DIR/libpcp_fault.so
+
+for i in 1 2 3 4 5 6 7 8 9
+do
+ echo "libpcp/logmeta.c:$i" >$tmp.control
+ echo
+ echo "=== `cat $tmp.control` ==="
+ case $i
+ in
+ 1|2|3|4)
+ pmdumplog -di src/ace_v2 2>&1 | _filter
+ ;;
+ 7|8|9)
+ src/torture_logmeta -f src/ace_v2 1 2 123 2>&1 | _filter
+ ;;
+ 5|6)
+ rm -f $tmp.0 $tmp.meta $tmp.index
+ echo "log mandatory on 100msec { sample.bin }" >$tmp.config
+ pmlogger -c $tmp.config -s 2 -l $tmp.log $tmp
+ _filter_pmlogger_log <$tmp.log | _filter
+ ;;
+ esac
+done
+
+exit
diff --git a/qa/480.out.1 b/qa/480.out.1
new file mode 100644
index 0000000..ef8dc71
--- /dev/null
+++ b/qa/480.out.1
@@ -0,0 +1,50 @@
+QA output created by 480
+
+=== libpcp/logmeta.c:1 ===
+pmdumplog: Cannot open archive "src/ace_v2": Cannot allocate memory
+
+=== libpcp/logmeta.c:2 ===
+pmdumplog: Cannot open archive "src/ace_v2": Cannot allocate memory
+
+=== libpcp/logmeta.c:3 ===
+pmdumplog: Cannot open archive "src/ace_v2": Cannot allocate memory
+
+=== libpcp/logmeta.c:4 ===
+pmdumplog: Cannot open archive "src/ace_v2": Cannot allocate memory
+
+=== libpcp/logmeta.c:5 ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+Warning: problem writing archive preamble: Cannot allocate memory
+__pmLogPutDesc: Cannot allocate memory
+
+Log finished DATE
+
+=== libpcp/logmeta.c:6 ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+Warning: problem writing archive preamble: Cannot allocate memory
+__pmLogPutInDom: Cannot allocate memory
+
+Log finished DATE
+
+=== libpcp/logmeta.c:7 ===
+
+=== iteration 2 context 0 ===
+[DATE] torture_logmeta(PID) Error: pmGetInDomArchive: ilist: malloc(4) failed: Cannot allocate memory
+
+=== libpcp/logmeta.c:8 ===
+
+=== iteration 2 context 0 ===
+[DATE] torture_logmeta(PID) Error: pmGetInDomArchive: nlist: malloc(8) failed: Cannot allocate memory
+
+=== libpcp/logmeta.c:9 ===
+
+=== iteration 2 context 0 ===
+[DATE] torture_logmeta(PID) Error: pmGetInDomArchive: olist: malloc(135) failed: Cannot allocate memory
diff --git a/qa/480.out.2 b/qa/480.out.2
new file mode 100644
index 0000000..1135c28
--- /dev/null
+++ b/qa/480.out.2
@@ -0,0 +1,158 @@
+QA output created by 480
+
+=== libpcp/logmeta.c:1 ===
+pmdumplog: Cannot open archive "src/ace_v2": Cannot allocate memory
+
+=== libpcp/logmeta.c:2 ===
+pmdumplog: Cannot open archive "src/ace_v2": Cannot allocate memory
+
+=== libpcp/logmeta.c:3 ===
+pmdumplog: Cannot open archive "src/ace_v2": Cannot allocate memory
+
+=== libpcp/logmeta.c:4 ===
+
+Descriptions for Metrics in the Log ...
+PMID: 40.0.4 (40.0.4)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 1.80.7 (disk.dev.total)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+PMID: 40.0.5 (40.0.5)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 1.10.7 (kernel.all.cpu.idle)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 1.10.8 (kernel.all.cpu.intr)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 1.25.7 (network.interface.in.bytes)
+ Data Type: 32-bit unsigned int InDom: 1.6 0x400006
+ Semantics: counter Units: count
+PMID: 40.0.7 (40.0.7)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 1.10.9 (kernel.all.cpu.sys)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 40.0.8 (40.0.8)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 1.10.10 (kernel.all.cpu.sxbrk)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 1.10.53 (kernel.all.ipc.msg)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 1.10.11 (kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 1.10.54 (kernel.all.ipc.sema)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 1.10.12 (kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 1.25.12 (network.interface.out.bytes)
+ Data Type: 32-bit unsigned int InDom: 1.6 0x400006
+ Semantics: counter Units: count
+PMID: 1.10.14 (kernel.all.readch)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+PMID: 1.80.1 (disk.dev.read)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+PMID: 1.10.29 (kernel.all.writech)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+PMID: 1.10.15 (kernel.all.runocc)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 1.10.16 (kernel.all.runque)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+PMID: 1.80.2 (disk.dev.write)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+PMID: 40.0.0 (40.0.0)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 1.10.3 (kernel.all.pswitch)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 40.0.1 (40.0.1)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 40.0.2 (40.0.2)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+PMID: 40.0.3 (40.0.3)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+PMID: 1.18.3 (kernel.all.load)
+ Data Type: float InDom: 1.5 0x400005
+ Semantics: instant Units: none
+PMID: 1.10.19 (kernel.all.syscall)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+Instance Domains in the Log ...
+InDom: 1.5
+15:25:09.043 3 instances
+ 1 or "1 minute"
+ 5 or "5 minute"
+ 15 or "15 minute"
+InDom: 1.6
+15:25:09.043 3 instances
+ 1 or "et0"
+ 2 or "lo0"
+ 3 or "sl0"
+InDom: 1.2
+15:25:09.043 9 instances
+ 131329 or "dks1d1"
+ 131330 or "dks1d2"
+ 131331 or "dks1d3"
+ 131841 or "dks3d1"
+ 131842 or "dks3d2"
+ 131843 or "dks3d3"
+ 131844 or "dks3d4"
+ 132097 or "dks4d1"
+ 132098 or "dks4d2"
+
+=== libpcp/logmeta.c:5 ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+Warning: problem writing archive preamble: Cannot allocate memory
+__pmLogPutDesc: Cannot allocate memory
+
+Log finished DATE
+
+=== libpcp/logmeta.c:6 ===
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+Warning: problem writing archive preamble: Cannot allocate memory
+__pmLogPutInDom: Cannot allocate memory
+
+Log finished DATE
+
+=== libpcp/logmeta.c:7 ===
+
+=== iteration 2 context 0 ===
+[DATE] torture_logmeta(PID) Error: pmGetInDomArchive: ilist: malloc(4) failed: Cannot allocate memory
+
+=== libpcp/logmeta.c:8 ===
+
+=== iteration 2 context 0 ===
+[DATE] torture_logmeta(PID) Error: pmGetInDomArchive: nlist: malloc(4) failed: Cannot allocate memory
+
+=== libpcp/logmeta.c:9 ===
+
+=== iteration 2 context 0 ===
+[DATE] torture_logmeta(PID) Error: pmGetInDomArchive: olist: malloc(99) failed: Cannot allocate memory
diff --git a/qa/481 b/qa/481
new file mode 100755
index 0000000..4055fde
--- /dev/null
+++ b/qa/481
@@ -0,0 +1,280 @@
+#!/bin/sh
+# PCP QA Test No. 481
+# check pmlogrewrite config parser - global and indom clauses
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g"
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> whizz-bang.engr.sgi.com
+ TZ -> "GMT+10"
+ Time -> 10
+}
+
+indom 1.5 {
+ indom -> 1.10
+ iname "15 minute" -> "forever"
+ inst 15 -> 9999
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+for t in +3 +3.5 +3. +03 4 4.000005 4. 04 -5 -5.005 -5. -05 \
+ +1:00.123456 +2:00 3:00. 04:00 -5:12.345 -6:30 \
+ +23:59:59 -0:0:1 +12:34:56.789012
+do
+ echo
+ echo "=== global time -> $t ==="
+ echo "global { time -> $t }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+for h in abc node123.localdomain foo-bar 123 123.456 123.456foobar \
+ 100foo 100.foo 10.0.foo
+do
+ echo
+ echo "=== global hostname -> $h ==="
+ echo "global { hostname -> $h }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+for t in 60 123:45 123:0:61.678901
+do
+ echo
+ echo "=== global time -> $t (expect warning) ==="
+ echo "global { time -> $t }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+echo
+echo "=== global dup hostname clause (expect error) ==="
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> whizz-bang.engr.sgi.com
+ tz -> "GMT+10"
+ time -> 10
+ hostname -> bogus.com
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+echo
+echo "=== global dup tz clause (expect error) ==="
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> whizz-bang.engr.sgi.com
+ tz -> "GMT+10"
+ tz -> "Bogus"
+ time -> 10
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+echo
+echo "=== global dup time clause (expect error) ==="
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> whizz-bang.engr.sgi.com
+ tz -> "GMT+10"
+ time -> 10
+ time -> 11
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+echo
+echo "=== indom dup indom clause (expect error) ==="
+cat <<End-of-File >$tmp.conf
+indom 1.5 {
+ indom -> 1.100
+ inst 15 -> 9999
+ indom -> 1.200
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+echo
+echo "=== indom dup name clause (expect error) ==="
+cat <<End-of-File >$tmp.conf
+indom 1.5 {
+ inst 1 -> 9999
+ iname "1 minute" -> "foo"
+ iname "1 minute" -> "bar"
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+echo
+echo "=== indom dup inst clause (expect error) ==="
+cat <<End-of-File >$tmp.conf
+indom 1.5 {
+ inst 1 -> 9999
+ inst 1 -> 9999
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+# indom ... { indom ... } checks
+#
+# 4194304 is 2^22, 512 is 2^9 ... exceed serial and domain fields of a pmInDom
+# 513.4194310 => 1.5 if field range checking not done!
+for i in 1.5 '' 1.6 1.2.3 foo 1.4194304 512.1 513.4194310 1.*
+do
+ echo
+ echo "=== indom $i { } ==="
+ echo "indom $i { }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+ echo
+ echo "=== indom 1.5 { indom -> $i } ==="
+ echo "indom 1.5 { indom -> $i }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# indom ... { iname | inst ... } exercises
+#
+for i in 'iname "15" -> "15 mid range"' 'inst 1 -> 3' \
+ 'inst 5 -> delete' 'iname "5" -> delete' \
+ 'inst 1 -> 3 iname "1" -> "3 minute"' \
+ 'iname "15" ->' 'iname "15" -' 'iname "15"'
+do
+ echo
+ echo "=== indom 1.5 { $i } ==="
+ echo "indom 1.5 { $i }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# indom ... { iname | inst ... } checks
+#
+for i in 'iname "15" -> "16" iname "5" -> "6" iname "15" -> delete' \
+ 'iname "5" -> "5 minute"' 'inst 1 -> 1' \
+ 'iname "15" -> delete iname "5" -> "6" iname "15" -> "deleted"' \
+ 'inst 5 -> 6 inst 1 -> 2 inst 5 -> delete' \
+ 'inst 5 -> delete inst 1 -> 2 inst 5 -> 123'\
+ 'iname "15" -> "16" inst 15 -> delete' \
+ 'inst 15 -> delete iname "15" -> "16"' \
+ 'inst 15 -> 16 iname "15" -> delete' \
+ 'iname "15" -> delete inst 15 -> 16'
+do
+ echo
+ echo "=== indom 1.5 { $i } (expect error) ==="
+ echo "indom 1.5 { $i }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# instance iname upto space checks
+for i in "5 minutes" 1 5 15 "1 does not matter" "15 eek"
+do
+ echo
+ echo "=== indom 1.5 { iname \"$i\" -> \"yippee\" } ==="
+ echo "indom 1.5 { iname \"$i\" -> \"yippee\" }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+for i in 19856 "19856 does not matter" 19857
+do
+ echo
+ echo "=== indom 2.1 { iname \"$i\" -> \"19856 bozo\" } ==="
+ echo "indom 2.1 { iname \"$i\" -> \"19856 bozo\" }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+echo
+echo "=== context sensitive lexical scanning ... expect pass ==="
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> global
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> inst
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> hostname
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> tz
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+cat <<End-of-File >$tmp.conf
+metric 1.18.3 {
+ name -> hostname
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+cat <<End-of-File >$tmp.conf
+metric 1.18.3 {
+ name -> indom
+}
+End-of-File
+rm -f $tmp.new.*
+
+echo
+echo "=== context sensitive lexical scanning ... expect fail ==="
+cat <<End-of-File >$tmp.conf
+metric 1.18.3 {
+ name -> pmid
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+cat <<End-of-File >$tmp.conf
+metric 1.18.3 {
+ name -> units
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/481.out b/qa/481.out
new file mode 100644
index 0000000..513879c
--- /dev/null
+++ b/qa/481.out
@@ -0,0 +1,469 @@
+QA output created by 481
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> whizz-bang.engr.sgi.com
+Timezone: EST-11 -> GMT+10
+Delta: -> 00:00:10.000000
+
+Instance Domain: 1.5
+pmInDom: -> 1.10
+Instance: [15] "15 minute" -> [9999] "forever"
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> 1.10
+Inst Changes: <- InDom 1.5
+
+=== global time -> +3 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:03.000000
+
+=== global time -> +3.5 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:03.500000
+
+=== global time -> +3. ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:03.000000
+
+=== global time -> +03 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:03.000000
+
+=== global time -> 4 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:04.000000
+
+=== global time -> 4.000005 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:04.000005
+
+=== global time -> 4. ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:04.000000
+
+=== global time -> 04 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:00:04.000000
+
+=== global time -> -5 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -00:00:05.000000
+
+=== global time -> -5.005 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -00:00:05.005000
+
+=== global time -> -5. ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -00:00:05.000000
+
+=== global time -> -05 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -00:00:05.000000
+
+=== global time -> +1:00.123456 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:01:00.123456
+
+=== global time -> +2:00 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:02:00.000000
+
+=== global time -> 3:00. ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:03:00.000000
+
+=== global time -> 04:00 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:04:00.000000
+
+=== global time -> -5:12.345 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -00:05:12.345000
+
+=== global time -> -6:30 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -00:06:30.000000
+
+=== global time -> +23:59:59 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 23:59:59.000000
+
+=== global time -> -0:0:1 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -00:00:01.000000
+
+=== global time -> +12:34:56.789012 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 12:34:56.789012
+
+=== global hostname -> abc ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> abc
+
+=== global hostname -> node123.localdomain ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> node123.localdomain
+
+=== global hostname -> foo-bar ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> foo-bar
+
+=== global hostname -> 123 ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> 123
+
+=== global hostname -> 123.456 ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> 123.456
+
+=== global hostname -> 123.456foobar ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> 123.456foobar
+
+=== global hostname -> 100foo ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> 100foo
+
+=== global hostname -> 100.foo ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> 100.foo
+
+=== global hostname -> 10.0.foo ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> 10.0.foo
+
+=== global time -> 60 (expect warning) ===
+Warning [TMP.conf, line 1]
+Seconds (60) in time clause more than 59
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 00:01:00.000000
+
+=== global time -> 123:45 (expect warning) ===
+Warning [TMP.conf, line 1]
+Minutes (123) in time clause more than 59
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 02:03:45.000000
+
+=== global time -> 123:0:61.678901 (expect warning) ===
+Warning [TMP.conf, line 1]
+Seconds (61.678901) in time clause more than 59
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 123:01:01.678901
+
+=== global dup hostname clause (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 5] Duplicate global hostname clause
+
+=== global dup tz clause (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 4] Duplicate global tz clause
+
+=== global dup time clause (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 6] Duplicate global time clause
+
+=== indom dup indom clause (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 4] Duplicate indom clause for indom 1.5
+
+=== indom dup name clause (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 4] Duplicate or conflicting clauses for instance [1] "1 minute" of indom 1.5
+
+=== indom dup inst clause (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 3] Duplicate or conflicting clauses for instance [1] "1 minute" of indom 1.5
+
+=== indom 1.5 { } ===
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== indom 1.5 { indom -> 1.5 } ===
+Warning [TMP.conf, line 1]
+Instance domain 1.5: indom: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== indom { } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<serial> or <domain>.* in indom rule
+
+=== indom 1.5 { indom -> } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<serial> or <domain>.* in indom clause
+
+=== indom 1.6 { } ===
+Warning [TMP.conf, line 1]
+Instance domain 1.6: Instance domain identifier not defined in the PCP archive log
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== indom 1.5 { indom -> 1.6 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+pmInDom: -> 1.6
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> 1.6
+
+=== indom 1.2.3 { } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<serial> or <domain>.* in indom rule
+
+=== indom 1.5 { indom -> 1.2.3 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<serial> or <domain>.* in indom clause
+
+=== indom foo { } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<serial> or <domain>.* in indom rule
+
+=== indom 1.5 { indom -> foo } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<serial> or <domain>.* in indom clause
+
+=== indom 1.4194304 { } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Illegal serial field (4194304) for indom
+
+=== indom 1.5 { indom -> 1.4194304 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Illegal serial field (4194304) for indom
+
+=== indom 512.1 { } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Illegal domain field (512) for indom
+
+=== indom 1.5 { indom -> 512.1 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Illegal domain field (512) for indom
+
+=== indom 513.4194310 { } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Illegal domain field (513) for indom
+
+=== indom 1.5 { indom -> 513.4194310 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Illegal domain field (513) for indom
+
+=== indom 1.* { } ===
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== indom 1.5 { indom -> 1.* } ===
+Warning [TMP.conf, line 1]
+Instance domain 1.5: indom: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== indom 1.5 { iname "15" -> "15 mid range" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [15] "15 minute" -> [15] "15 mid range"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { inst 1 -> 3 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [1] "1 minute" -> [3] "1 minute"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { inst 5 -> delete } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [5] "5 minute" -> DELETE
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { iname "5" -> delete } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [5] "5 minute" -> DELETE
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { inst 1 -> 3 iname "1" -> "3 minute" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [1] "1 minute" -> [3] "3 minute"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { iname "15" -> } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting new external instance name string or DELETE in iname clause
+
+=== indom 1.5 { iname "15" - } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting -> in iname clause
+
+=== indom 1.5 { iname "15" } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting -> in iname clause
+
+=== indom 1.5 { iname "15" -> "16" iname "5" -> "6" iname "15" -> delete } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [15] "15 minute" of indom 1.5
+
+=== indom 1.5 { iname "5" -> "5 minute" } (expect error) ===
+Warning [TMP.conf, line 1]
+Instance domain 1.5: Instance: "5 minute": No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== indom 1.5 { inst 1 -> 1 } (expect error) ===
+Warning [TMP.conf, line 1]
+Instance domain 1.5: Instance: 1: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== indom 1.5 { iname "15" -> delete iname "5" -> "6" iname "15" -> "deleted" } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [15] "15 minute" of indom 1.5
+
+=== indom 1.5 { inst 5 -> 6 inst 1 -> 2 inst 5 -> delete } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [5] "5 minute" of indom 1.5
+
+=== indom 1.5 { inst 5 -> delete inst 1 -> 2 inst 5 -> 123 } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [5] "5 minute" of indom 1.5
+
+=== indom 1.5 { iname "15" -> "16" inst 15 -> delete } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [15] "15 minute" of indom 1.5
+
+=== indom 1.5 { inst 15 -> delete iname "15" -> "16" } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [15] "15 minute" of indom 1.5
+
+=== indom 1.5 { inst 15 -> 16 iname "15" -> delete } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [15] "15 minute" of indom 1.5
+
+=== indom 1.5 { iname "15" -> delete inst 15 -> 16 } (expect error) ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate or conflicting clauses for instance [15] "15 minute" of indom 1.5
+
+=== indom 1.5 { iname "5 minutes" -> "yippee" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [5] "5 minute" -> [5] "yippee"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { iname "1" -> "yippee" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [1] "1 minute" -> [1] "yippee"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { iname "5" -> "yippee" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [5] "5 minute" -> [5] "yippee"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { iname "15" -> "yippee" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [15] "15 minute" -> [15] "yippee"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { iname "1 does not matter" -> "yippee" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [1] "1 minute" -> [1] "yippee"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 1.5 { iname "15 eek" -> "yippee" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+Instance: [15] "15 minute" -> [15] "yippee"
+
+Metric: irix.kernel.all.load (1.18.3)
+Inst Changes: <- InDom 1.5
+
+=== indom 2.1 { iname "19856" -> "19856 bozo" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 2.1
+Instance: [19856] "19856" -> [19856] "19856 bozo"
+
+Metric: pmcd.pmlogger.host (2.3.3)
+Inst Changes: <- InDom 2.1
+
+Metric: pmcd.pmlogger.port (2.3.0)
+Inst Changes: <- InDom 2.1
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+Inst Changes: <- InDom 2.1
+
+=== indom 2.1 { iname "19856 does not matter" -> "19856 bozo" } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 2.1
+Instance: [19856] "19856" -> [19856] "19856 bozo"
+
+Metric: pmcd.pmlogger.host (2.3.3)
+Inst Changes: <- InDom 2.1
+
+Metric: pmcd.pmlogger.port (2.3.0)
+Inst Changes: <- InDom 2.1
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+Inst Changes: <- InDom 2.1
+
+=== indom 2.1 { iname "19857" -> "19856 bozo" } ===
+Warning [TMP.conf, line 1]
+Unknown instance "19857" in iname clause for indom 2.1
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== context sensitive lexical scanning ... expect pass ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> global
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> inst
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> hostname
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> tz
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+Name: irix.kernel.all.load -> hostname
+
+=== context sensitive lexical scanning ... expect fail ===
+Specification error in configuration file (TMP.conf)
+[line 2] Expecting metric name in iname clause
+Specification error in configuration file (TMP.conf)
+[line 2] Expecting metric name in iname clause
diff --git a/qa/482 b/qa/482
new file mode 100755
index 0000000..9fbefb1
--- /dev/null
+++ b/qa/482
@@ -0,0 +1,136 @@
+#! /bin/sh
+# PCP QA Test No. 482
+# exercise pmlogsummary "-B" option (display value distribution in bins)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# usage: _xtract metric
+_xtract()
+{
+ pmdumplog -D1 src/binning $1 >$tmp.out 2>$tmp.err
+ cat $tmp.err $tmp.out \
+ | $PCP_AWK_PROG '
+$1 == "pmResult" { state=1; time=$7; stamp=$6; next }
+state == 1 && /\('"$1"'\)/ { state=2; next }
+state == 2 { state=0; print time,stamp,$2; next }
+NF==0 { state=0; next }' \
+ | LC_COLLATE=POSIX _POSIX2_VERSION=0 sort -u +1n -2
+}
+
+# usage: _filterbins nbins < pmlogsummary output (with args=-ymMB nbins)
+_filterbins()
+{
+ $PCP_AWK_PROG -v nbins=$1 '{
+ printf "(%d)\n", $5
+ for (i=0; i < nbins; i++)
+ printf " Bin%d = %d\n", i, $(7+(i*2))
+ }'
+}
+
+# usage: _dobinning nbins min max < values
+_dobinning()
+{
+ size=`echo "scale=10; ( $3 - $2 ) / $1" | bc`
+ #echo BINSIZE=$size NBINS=$1
+
+ $PCP_AWK_PROG -v nbins=$1 -v size=$size -v min=$2 '
+ { for (i=0; i < nbins; i++) {
+ if ($1 >= (size*i) + min && $1 <= (size*(i+1))+min) {
+ #printf "%f is in bin %d\n", $1, i
+ bins[i]++
+ total++
+ }
+ #else
+ #printf "%f out of %f-%f\n", $1, (size*i)+min, (size*(i+1))+min
+ }
+ #printf "value is %f\n", $1
+ }
+END { printf "(%d)\n", total
+ for (i=0; i < nbins; i++)
+ printf " Bin%d = %d\n", i, bins[i]
+ }'
+}
+
+_noncounter_values()
+{
+ $PCP_AWK_PROG '{
+ printf "%f\n", $3
+ if (count == 0 || $3 > max) max = $3
+ if (count == 0 || $3 < min) min = $3
+ count++
+ next
+}
+END { printf "COUNT=%d MAX=%f MIN=%f\n", count, max, min }'
+}
+
+_counter_values()
+{
+ $PCP_AWK_PROG '{
+ if (count > 0) {
+ value = (($3 - prevval)/($2 - prevtime))/1000.0
+ printf "%f\n", value
+ if (count == 1 || value > max) max = value
+ if (count == 1 || value < min) min = value
+ }
+ count++
+ prevval = $3
+ prevtime = $2
+ next
+ }
+END { printf "COUNT=%d MAX=%f MIN=%f\n", count-1, max, min }'
+}
+
+# real QA test starts here
+echo
+echo "=== testing instanteous metric value distribution ==="
+nbins=3
+_xtract sample.scale_step.time_up_nanosecs | _noncounter_values > $tmp.noncount
+eval `fgrep COUNT $tmp.noncount`
+#echo count=$COUNT maximum=$MAX minimum=$MIN
+$PCP_ECHO_PROG $PCP_ECHO_N "QA calculates: ""$PCP_ECHO_C"
+fgrep -v COUNT $tmp.noncount | _dobinning $nbins $MIN $MAX
+
+$PCP_ECHO_PROG $PCP_ECHO_N "pmlogsummary calculates: ""$PCP_ECHO_C"
+pmlogsummary -ymMB $nbins src/binning sample.scale_step.time_up_nanosecs \
+ | _filterbins $nbins
+
+echo
+echo "=== testing counter metric value distribution ==="
+nbins=4
+_xtract sample.milliseconds | _counter_values > $tmp.count
+eval `fgrep COUNT $tmp.count`
+#echo count=$COUNT maximum=$MAX minimum=$MIN
+$PCP_ECHO_PROG $PCP_ECHO_N "QA calculates: ""$PCP_ECHO_C"
+fgrep -v COUNT $tmp.count | _dobinning $nbins $MIN $MAX
+
+$PCP_ECHO_PROG $PCP_ECHO_N "pmlogsummary calculates: ""$PCP_ECHO_C"
+pmlogsummary -ymMB $nbins src/binning | fgrep sample.milliseconds \
+ | _filterbins $nbins
+
+# misc checks
+echo
+echo "=== testing boundary conditions ==="
+pmlogsummary -B 1 src/binning >/dev/null 2>&1
+[ $? -ne 0 ] && echo " urk - error test #1 failed!"
+pmlogsummary -B 0 src/binning >/dev/null 2>&1
+[ $? -ne 0 ] && echo " urk - error test #2 failed!"
+pmlogsummary -B -7 src/binning >/dev/null 2>&1
+[ $? -eq 0 ] && echo " urk - error test #3 failed!"
+
+echo done.
+echo
+
+# success, all done
+status=0
+exit
diff --git a/qa/482.out b/qa/482.out
new file mode 100644
index 0000000..bee4eef
--- /dev/null
+++ b/qa/482.out
@@ -0,0 +1,27 @@
+QA output created by 482
+
+=== testing instanteous metric value distribution ===
+QA calculates: (30)
+ Bin0 = 25
+ Bin1 = 0
+ Bin2 = 5
+pmlogsummary calculates: (30)
+ Bin0 = 25
+ Bin1 = 0
+ Bin2 = 5
+
+=== testing counter metric value distribution ===
+QA calculates: (29)
+ Bin0 = 1
+ Bin1 = 3
+ Bin2 = 23
+ Bin3 = 2
+pmlogsummary calculates: (29)
+ Bin0 = 1
+ Bin1 = 3
+ Bin2 = 23
+ Bin3 = 2
+
+=== testing boundary conditions ===
+done.
+
diff --git a/qa/483 b/qa/483
new file mode 100755
index 0000000..3e5d963
--- /dev/null
+++ b/qa/483
@@ -0,0 +1,227 @@
+#!/bin/sh
+# PCP QA Test No. 483
+# check pmlogrewrite config parser - metric clauses
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g"
+}
+
+# real QA test starts here
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> whizz-bang.engr.sgi.com
+ tz -> "GMT+10"
+ time -> 10
+}
+
+indom 1.5 {
+ indom -> 1.10
+ iname "15 minute" -> "forever"
+ inst 15 -> 9999
+}
+
+metric hinv.ndisk {
+ pmid -> 1.2.3
+}
+
+metric 1.18.3 {
+ pmid -> 4.5.6
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+for m in 1.18.3 '1.18.*' '1.*.*' hinv.ndisk 42.42.42 foo.bar \
+ 'hinv.ndisk { type->64 } metric no.such.metric' \
+ 'no.such.metric { type->64 } metric no.such.other.metric { type->64 } metric 1.18.3'
+do
+ echo
+ echo "=== metric $m { type->U32 } ==="
+ echo "metric $m { type->U32 }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+for m in '60.*.*'
+do
+ echo
+ echo "=== metric $m { type->U32 } ==="
+ echo "metric $m { type->U32 }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/ac15 $tmp.new 2>&1 | _filter
+done
+
+# pmid exercises
+for p in 42.42.42 1.18.2 2.3.2 foo '1.*.*' '2.*.*'
+do
+ echo
+ echo "=== metric hinv.ncpu { pmid -> $p } ==="
+ echo "metric hinv.ncpu { pmid -> $p }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# name exercises
+for n in foo.bar.mumble.fratz "blah blah blah" 'hinv.*' hinv.ndisk hinv.ncpu
+do
+ echo
+ echo "=== metric hinv.ndisk { name -> $n } ==="
+ echo "metric hinv.ndisk { name -> $n }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# type exercises
+for t in 32 U32 64 u64 Float double STRING 123 foo.bar \
+ 'U32 type -> float' 'U64 type -> DOUBLE'
+do
+ echo
+ echo "=== metric hinv.ncpu { type -> $t } ==="
+ echo "metric hinv.ncpu { type -> $t }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# indom exercises
+for i in 2.1 1.3 '42.*' foo 1.5 '1.*' '5.6 indom -> 7.8' \
+ NULL 'NULL output first' 'NULL output last' 'NULL output inst 5' \
+ 'NULL output min' 'NULL output max' 'NULL output avg' \
+ '2.1 output inst 123' \
+ '42.42 } indom 1.5 { indom -> 33.33 '
+do
+ echo
+ echo "=== metric irix.kernel.all.load { indom -> $i } ==="
+ echo "metric irix.kernel.all.load { indom -> $i }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+echo
+echo "=== metric pmcd.pmlogger.port { indom -> 60.* } ==="
+echo "metric pmcd.pmlogger.port { indom -> 60.* }" >$tmp.conf
+rm -f $tmp.new.*
+pmlogrewrite -w -C -c $tmp.conf src/20041125 $tmp.new 2>&1 | _filter
+echo
+echo "=== metric hinv.ndisk { indom -> 1.5 } ==="
+echo "metric hinv.ndisk { indom -> 1.5 }" >$tmp.conf
+rm -f $tmp.new.*
+pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+echo
+echo "=== metric hinv.ndisk { indom -> 1.5 output inst 15 } ==="
+echo "metric hinv.ndisk { indom -> 1.5 output inst 15 }" >$tmp.conf
+rm -f $tmp.new.*
+pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+# sem exercises
+for s in Discrete COUNTER INSTANT instanty NULL 'COUNTER sem -> INSTANT'
+do
+ echo
+ echo "=== metric 2.3.2 { sem -> $s } ==="
+ echo "metric 2.3.2 { sem -> $s }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# units exercises
+for u in '1,0,0,BYTE,0,0' '0,1,0,0,SEC,0' '0,0,1,0,0,ONE' \
+ '1,-1,0,EBYTE,HOUR,0' '1,-1,0,PBYTE,MIN,0' '1,-1,0,TBYTE,SEC,0' \
+ '1,-1,0,GBYTE,MSEC,0' '1,-1,0,MBYTE,USEC,0' '1,-1,0,KBYTE,NSEC,0' \
+ '1,0,-1,KBYTE,0,ONE' '0,-1,1,0,MSEC,2' \
+ '1,0,0,BYTE,0,0 units -> 0,1,0,0,SEC,0' \
+ '0,0,0,0,0,0'
+do
+ echo
+ echo "=== metric hinv.ncpu { units -> $u } ==="
+ echo "metric hinv.ncpu { units -> $u }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+for u in '1,0,0,BYTE,0,0' '1,0,0,BYTE,0,0 RESCALE' \
+ '1,-1,0,KBYTE,SEC,0' '1,-1,0,KBYTE,SEC,0 rescale'
+do
+ echo
+ echo "=== metric sampledso.long.bin_ctr { units -> $u } ==="
+ echo "metric sampledso.long.bin_ctr { units -> $u }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -wC -c $tmp.conf src/rewrite $tmp.new 2>&1 | _filter
+ rm -f $tmp.new.*
+ pmlogrewrite -swC -c $tmp.conf src/rewrite $tmp.new 2>&1 | _filter
+done
+
+# delete exercises
+for m in hinv.ncpu 2.3.2 '2.3.*' '1.*.*'
+do
+ echo
+ echo "=== metric $m { delete } ==="
+ echo "metric $m { delete }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# conflicting metric specs
+for o in 'delete pmid->1.2.3' 'pmid->1.2.3 delete' \
+ 'delete name -> foo.bar' 'name -> foo.bar delete' \
+ 'delete type -> U64' 'type -> U64 delete' \
+ 'delete indom -> NULL' 'indom -> NULL delete' \
+ 'delete sem -> INSTANT' 'sem -> INSTANT delete' \
+ 'delete sem -> COUNTER' 'sem -> COUNTER delete'
+do
+ echo
+ echo "=== metric 1.18.3 { $o } ==="
+ echo "metric 1.18.3 { $o }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+done
+
+# multi-clause examples
+cat <<End-of-File >$tmp.conf
+indom 1.* {
+ indom -> 42.*
+}
+metric 1.*.* {
+ pmid -> 42.*.*
+}
+metric 1.18.3 {
+ name -> foo.bar
+ type -> 64
+ indom -> 42.5
+ sem -> DISCRETE
+ units -> 0,0,0,0,0,0
+}
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -w -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+
+# metric walk and star exercises
+for m in 1.*.* 1.18.* 2.3.2
+do
+ for x in 7.*.* 8.9.* 10.11.12
+ do
+ echo
+ echo "=== metric $m { pmid -> $x } ==="
+ echo "metric $m { pmid -> $x }" >$tmp.conf
+ rm -f $tmp.new.*
+ pmlogrewrite -C -c $tmp.conf src/rattle $tmp.new 2>&1 | _filter
+ done
+done
+
+# success, all done
+exit
diff --git a/qa/483.out b/qa/483.out
new file mode 100644
index 0000000..947d9c9
--- /dev/null
+++ b/qa/483.out
@@ -0,0 +1,695 @@
+QA output created by 483
+PCP Archive Log Rewrite Specifications Summary
+Hostname: rattle -> whizz-bang.engr.sgi.com
+Timezone: EST-11 -> GMT+10
+Delta: -> 00:00:10.000000
+
+Instance Domain: 1.5
+pmInDom: -> 1.10
+Instance: [15] "15 minute" -> [9999] "forever"
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 4.5.6
+InDom: 1.5 -> 1.10
+Inst Changes: <- InDom 1.5
+
+Metric: hinv.ndisk (1.26.7)
+pmID: 1.26.7 -> 1.2.3
+
+=== metric 1.18.3 { type->U32 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+Type: FLOAT -> U32
+
+=== metric 1.18.* { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ncpu (1.18.2): type: PM_TYPE_U32: No change
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+Type: FLOAT -> U32
+
+=== metric 1.*.* { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ndisk (1.26.7): type: PM_TYPE_U32: No change
+Warning [TMP.conf, line 1]
+Metric: hinv.ncpu (1.18.2): type: PM_TYPE_U32: No change
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+Type: FLOAT -> U32
+
+=== metric hinv.ndisk { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ndisk (1.26.7): type: PM_TYPE_U32: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric 42.42.42 { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric 42.42.42 pmNameID: Unknown or illegal metric identifier
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric foo.bar { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric: foo.bar: Unknown metric name
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric hinv.ndisk { type->64 } metric no.such.metric { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric: no.such.metric: Unknown metric name
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+Type: U32 -> 64
+
+=== metric no.such.metric { type->64 } metric no.such.other.metric { type->64 } metric 1.18.3 { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric: no.such.metric: Unknown metric name
+Warning [TMP.conf, line 1]
+Metric: no.such.other.metric: Unknown metric name
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+Type: FLOAT -> U32
+
+=== metric 60.*.* { type->U32 } ===
+Warning [TMP.conf, line 1]
+Metric: swap.out (60.0.11): type: PM_TYPE_U32: No change
+Warning [TMP.conf, line 1]
+Metric: kernel.all.cpu.sys (60.0.22): type: PM_TYPE_U32: No change
+Warning [TMP.conf, line 1]
+Metric: swap.in (60.0.10): type: PM_TYPE_U32: No change
+Warning [TMP.conf, line 1]
+Metric: kernel.all.cpu.nice (60.0.21): type: PM_TYPE_U32: No change
+Warning [TMP.conf, line 1]
+Metric: kernel.all.cpu.user (60.0.20): type: PM_TYPE_U32: No change
+Warning [TMP.conf, line 1]
+Metric: kernel.all.intr (60.0.12): type: PM_TYPE_U32: No change
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: swap.used (60.1.7)
+Type: U64 -> U32
+
+Metric: kernel.all.cpu.idle (60.0.23)
+Type: U64 -> U32
+
+Metric: mem.util.cached (60.1.5)
+Type: U64 -> U32
+
+Metric: disk.all.blkwrite (60.0.27)
+Type: U64 -> U32
+
+Metric: mem.util.bufmem (60.1.4)
+Type: U64 -> U32
+
+Metric: kernel.all.load (60.2.0)
+Type: FLOAT -> U32
+
+Metric: disk.all.blkread (60.0.26)
+Type: U64 -> U32
+
+Metric: kernel.all.pswitch (60.0.13)
+Type: U64 -> U32
+
+Metric: mem.util.free (60.1.2)
+Type: U64 -> U32
+
+=== metric hinv.ncpu { pmid -> 42.42.42 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 42.42.42
+
+=== metric hinv.ncpu { pmid -> 1.18.2 } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ncpu (1.18.2): pmid: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric hinv.ncpu { pmid -> 2.3.2 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 2.3.2
+
+=== metric hinv.ncpu { pmid -> foo } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<cluster>.<item> or <domain>.<cluster>.* or <domain>.*.* in pmid clause
+
+=== metric hinv.ncpu { pmid -> 1.*.* } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ncpu (1.18.2): pmid: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric hinv.ncpu { pmid -> 2.*.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 2.18.2
+
+=== metric hinv.ndisk { name -> foo.bar.mumble.fratz } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+Name: hinv.ndisk -> foo.bar.mumble.fratz
+
+=== metric hinv.ndisk { name -> blah blah blah } ===
+Specification error in configuration file (TMP.conf)
+[line 1] syntax error
+
+=== metric hinv.ndisk { name -> hinv.* } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Unexpected character '*'
+
+=== metric hinv.ndisk { name -> hinv.ndisk } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ndisk (1.26.7): name: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric hinv.ndisk { name -> hinv.ncpu } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Metric name hinv.ncpu already assigned for PMID 1.18.2
+
+=== metric hinv.ncpu { type -> 32 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Type: U32 -> 32
+
+=== metric hinv.ncpu { type -> U32 } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ncpu (1.18.2): type: PM_TYPE_U32: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric hinv.ncpu { type -> 64 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Type: U32 -> 64
+
+=== metric hinv.ncpu { type -> u64 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Type: U32 -> U64
+
+=== metric hinv.ncpu { type -> Float } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Type: U32 -> FLOAT
+
+=== metric hinv.ncpu { type -> double } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Type: U32 -> DOUBLE
+
+=== metric hinv.ncpu { type -> STRING } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting XXX (from PM_TYPE_XXX) in type clause
+
+=== metric hinv.ncpu { type -> 123 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting XXX (from PM_TYPE_XXX) in type clause
+
+=== metric hinv.ncpu { type -> foo.bar } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting XXX (from PM_TYPE_XXX) in type clause
+
+=== metric hinv.ncpu { type -> U32 type -> float } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ncpu (1.18.2): type: PM_TYPE_U32: No change
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Type: U32 -> FLOAT
+
+=== metric hinv.ncpu { type -> U64 type -> DOUBLE } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate type clause for metric hinv.ncpu
+
+=== metric irix.kernel.all.load { indom -> 2.1 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> 2.1
+
+=== metric irix.kernel.all.load { indom -> 1.3 } ===
+Semantic error in configuration file (TMP.conf)
+New indom (1.3) for metric irix.kernel.all.load is not in the output archive
+
+=== metric irix.kernel.all.load { indom -> 42.* } ===
+Semantic error in configuration file (TMP.conf)
+New indom (42.5) for metric irix.kernel.all.load is not in the output archive
+
+=== metric irix.kernel.all.load { indom -> foo } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting <domain>.<serial> or NULL in indom clause
+
+=== metric irix.kernel.all.load { indom -> 1.5 } ===
+Warning [TMP.conf, line 1]
+Metric: irix.kernel.all.load (1.18.3): indom: 1.5: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric irix.kernel.all.load { indom -> 1.* } ===
+Warning [TMP.conf, line 1]
+Metric: irix.kernel.all.load (1.18.3): indom: 1.5: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric irix.kernel.all.load { indom -> 5.6 indom -> 7.8 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate indom clause for metric irix.kernel.all.load
+
+=== metric irix.kernel.all.load { indom -> NULL } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> PM_INDOM_NULL
+Output: first value
+
+=== metric irix.kernel.all.load { indom -> NULL output first } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> PM_INDOM_NULL
+Output: first value
+
+=== metric irix.kernel.all.load { indom -> NULL output last } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> PM_INDOM_NULL
+Output: last value
+
+=== metric irix.kernel.all.load { indom -> NULL output inst 5 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> PM_INDOM_NULL
+Output: value for instance 5
+
+=== metric irix.kernel.all.load { indom -> NULL output min } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> PM_INDOM_NULL
+Output: smallest value
+
+=== metric irix.kernel.all.load { indom -> NULL output max } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> PM_INDOM_NULL
+Output: largest value
+
+=== metric irix.kernel.all.load { indom -> NULL output avg } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> PM_INDOM_NULL
+Output: average value (output instance 0)
+
+=== metric irix.kernel.all.load { indom -> 2.1 output inst 123 } ===
+Warning [TMP.conf, line 2]
+Instance 123 from OUTPUT clause not found in old indom 1.5
+Warning [TMP.conf, line 2]
+Instance 123 from OUTPUT clause not found in new indom 2.1
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+InDom: 1.5 -> 2.1
+Output: value for instance 123
+
+=== metric irix.kernel.all.load { indom -> 42.42 } indom 1.5 { indom -> 33.33 } ===
+Semantic error in configuration file (TMP.conf)
+Conflicting indom change for metric irix.kernel.all.load (42.42 from metric clause, 33.33 from indom clause)
+
+=== metric pmcd.pmlogger.port { indom -> 60.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.port (2.3.0)
+InDom: 2.1 -> 60.1
+
+=== metric hinv.ndisk { indom -> 1.5 } ===
+Warning [TMP.conf, line 2]
+Instance 0 from OUTPUT clause not found in new indom 1.5
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+InDom: PM_INDOM_NULL -> 1.5
+Output: first and only value (output instance 0)
+
+=== metric hinv.ndisk { indom -> 1.5 output inst 15 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+InDom: PM_INDOM_NULL -> 1.5
+Output: first and only value (output instance 15)
+
+=== metric 2.3.2 { sem -> Discrete } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+Semantics: instant -> discrete
+
+=== metric 2.3.2 { sem -> COUNTER } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+Semantics: instant -> counter
+
+=== metric 2.3.2 { sem -> INSTANT } ===
+Warning [TMP.conf, line 1]
+Metric: pmcd.pmlogger.archive (2.3.2): sem: instant: No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric 2.3.2 { sem -> instanty } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting XXX (from PM_SEM_XXX) in sem clause
+
+=== metric 2.3.2 { sem -> NULL } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Expecting XXX (from PM_SEM_XXX) in sem clause
+
+=== metric 2.3.2 { sem -> COUNTER sem -> INSTANT } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate sem clause for metric pmcd.pmlogger.archive
+
+=== metric hinv.ncpu { units -> 1,0,0,BYTE,0,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> byte
+
+=== metric hinv.ncpu { units -> 0,1,0,0,SEC,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> sec
+
+=== metric hinv.ncpu { units -> 0,0,1,0,0,ONE } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> count
+
+=== metric hinv.ncpu { units -> 1,-1,0,EBYTE,HOUR,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> Ebyte / hour
+
+=== metric hinv.ncpu { units -> 1,-1,0,PBYTE,MIN,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> Pbyte / min
+
+=== metric hinv.ncpu { units -> 1,-1,0,TBYTE,SEC,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> Tbyte / sec
+
+=== metric hinv.ncpu { units -> 1,-1,0,GBYTE,MSEC,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> Gbyte / millisec
+
+=== metric hinv.ncpu { units -> 1,-1,0,MBYTE,USEC,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> Mbyte / microsec
+
+=== metric hinv.ncpu { units -> 1,-1,0,KBYTE,NSEC,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> Kbyte / nanosec
+
+=== metric hinv.ncpu { units -> 1,0,-1,KBYTE,0,ONE } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> Kbyte / count
+
+=== metric hinv.ncpu { units -> 0,-1,1,0,MSEC,2 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+Units: -> count x 10^2 / millisec
+
+=== metric hinv.ncpu { units -> 1,0,0,BYTE,0,0 units -> 0,1,0,0,SEC,0 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Duplicate units clause for metric hinv.ncpu
+
+=== metric hinv.ncpu { units -> 0,0,0,0,0,0 } ===
+Warning [TMP.conf, line 1]
+Metric: hinv.ncpu (1.18.2): units: : No change
+PCP Archive Log Rewrite Specifications Summary
+No changes
+
+=== metric sampledso.long.bin_ctr { units -> 1,0,0,BYTE,0,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> byte
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> byte (rescale)
+
+=== metric sampledso.long.bin_ctr { units -> 1,0,0,BYTE,0,0 RESCALE } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> byte (rescale)
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> byte (rescale)
+
+=== metric sampledso.long.bin_ctr { units -> 1,-1,0,KBYTE,SEC,0 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> Kbyte / sec
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> Kbyte / sec
+
+=== metric sampledso.long.bin_ctr { units -> 1,-1,0,KBYTE,SEC,0 rescale } ===
+Warning [TMP.conf, line 1]
+Metric: sampledso.long.bin_ctr (30.0.104): Dimension changed, cannot rescale
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> Kbyte / sec
+Warning [TMP.conf, line 1]
+Metric: sampledso.long.bin_ctr (30.0.104): Dimension changed, cannot rescale
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: sampledso.long.bin_ctr (30.0.104)
+Units: Kbyte -> Kbyte / sec
+
+=== metric hinv.ncpu { delete } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+DELETE
+
+=== metric 2.3.2 { delete } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+DELETE
+
+=== metric 2.3.* { delete } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.host (2.3.3)
+DELETE
+
+Metric: pmcd.pmlogger.port (2.3.0)
+DELETE
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+DELETE
+
+=== metric 1.*.* { delete } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+DELETE
+
+Metric: hinv.ncpu (1.18.2)
+DELETE
+
+Metric: irix.kernel.all.load (1.18.3)
+DELETE
+
+=== metric 1.18.3 { delete pmid->1.2.3 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting pmid clause for deleted metric irix.kernel.all.load
+
+=== metric 1.18.3 { pmid->1.2.3 delete } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting delete and other clauses for metric irix.kernel.all.load
+
+=== metric 1.18.3 { delete name -> foo.bar } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting name clause for deleted metric irix.kernel.all.load
+
+=== metric 1.18.3 { name -> foo.bar delete } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting delete and other clauses for metric irix.kernel.all.load
+
+=== metric 1.18.3 { delete type -> U64 } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting type clause for deleted metric irix.kernel.all.load
+
+=== metric 1.18.3 { type -> U64 delete } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting delete and other clauses for metric irix.kernel.all.load
+
+=== metric 1.18.3 { delete indom -> NULL } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting indom clause for deleted metric irix.kernel.all.load
+
+=== metric 1.18.3 { indom -> NULL delete } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting delete and other clauses for metric irix.kernel.all.load
+
+=== metric 1.18.3 { delete sem -> INSTANT } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting sem clause for deleted metric irix.kernel.all.load
+
+=== metric 1.18.3 { sem -> INSTANT delete } ===
+Warning [TMP.conf, line 1]
+Metric: irix.kernel.all.load (1.18.3): sem: instant: No change
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: irix.kernel.all.load (1.18.3)
+DELETE
+
+=== metric 1.18.3 { delete sem -> COUNTER } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting sem clause for deleted metric irix.kernel.all.load
+
+=== metric 1.18.3 { sem -> COUNTER delete } ===
+Specification error in configuration file (TMP.conf)
+[line 1] Conflicting delete and other clauses for metric irix.kernel.all.load
+Warning [TMP.conf, line 13]
+Metric: irix.kernel.all.load (1.18.3): units: : No change
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 1.5
+pmInDom: -> 42.5
+
+Metric: hinv.ndisk (1.26.7)
+pmID: 1.26.7 -> 42.26.7
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 42.18.2
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 42.18.3
+Name: irix.kernel.all.load -> foo.bar
+Type: FLOAT -> 64
+InDom: 1.5 -> 42.5
+Semantics: instant -> discrete
+
+=== metric 1.*.* { pmid -> 7.*.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+pmID: 1.26.7 -> 7.26.7
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 7.18.2
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 7.18.3
+
+=== metric 1.*.* { pmid -> 8.9.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+pmID: 1.26.7 -> 8.9.7
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 8.9.2
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 8.9.3
+
+=== metric 1.*.* { pmid -> 10.11.12 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ndisk (1.26.7)
+pmID: 1.26.7 -> 10.11.12
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 10.11.12
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 10.11.12
+
+=== metric 1.18.* { pmid -> 7.*.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 7.18.2
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 7.18.3
+
+=== metric 1.18.* { pmid -> 8.9.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 8.9.2
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 8.9.3
+
+=== metric 1.18.* { pmid -> 10.11.12 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: hinv.ncpu (1.18.2)
+pmID: 1.18.2 -> 10.11.12
+
+Metric: irix.kernel.all.load (1.18.3)
+pmID: 1.18.3 -> 10.11.12
+
+=== metric 2.3.2 { pmid -> 7.*.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+pmID: 2.3.2 -> 7.3.2
+
+=== metric 2.3.2 { pmid -> 8.9.* } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+pmID: 2.3.2 -> 8.9.2
+
+=== metric 2.3.2 { pmid -> 10.11.12 } ===
+PCP Archive Log Rewrite Specifications Summary
+
+Metric: pmcd.pmlogger.archive (2.3.2)
+pmID: 2.3.2 -> 10.11.12
diff --git a/qa/484 b/qa/484
new file mode 100755
index 0000000..c7aa01a
--- /dev/null
+++ b/qa/484
@@ -0,0 +1,63 @@
+#!/bin/sh
+# PCP QA Test No. 484
+# check pmlogrewrite archive copying (no config)
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ for file in $1.*
+ do
+ ls -l $file $2`echo $file | sed -e "s;$1;;"` >>$seq.full
+ done
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ echo "pmdumplog diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+
+# Notes
+#
+# src/mirage ... diffs reflect semantically acceptable differences
+#
+for arch in src/ok-foo src/541380_v2 src/mirage src/bigbin \
+ src/ok-mv-foo src/mirage-1 src/mirage-2 src/gap \
+ src/gap2 '-Dall src/ok-foo'
+do
+ echo | tee -a $seq.full
+ echo "=== $arch ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -w -Dappl0 $arch $tmp.new 2>$tmp.err | _filter
+ cat $tmp.err >>$seq.full
+ # strip any command line options preceding the archive basename
+ arch=`echo $arch | sed -e 's/.* //'`
+ _cmp $arch $tmp.new
+done
+
+# success, all done
+exit
diff --git a/qa/484.out b/qa/484.out
new file mode 100644
index 0000000..1fa14db
--- /dev/null
+++ b/qa/484.out
@@ -0,0 +1,31 @@
+QA output created by 484
+
+=== src/ok-foo ===
+pmdumplog diffs ...
+
+=== src/541380_v2 ===
+pmdumplog diffs ...
+
+=== src/mirage ===
+pmdumplog diffs ...
+
+=== src/bigbin ===
+pmdumplog diffs ...
+
+=== src/ok-mv-foo ===
+pmdumplog diffs ...
+
+=== src/mirage-1 ===
+pmdumplog diffs ...
+
+=== src/mirage-2 ===
+pmdumplog diffs ...
+
+=== src/gap ===
+pmdumplog diffs ...
+
+=== src/gap2 ===
+pmdumplog diffs ...
+
+=== -Dall src/ok-foo ===
+pmdumplog diffs ...
diff --git a/qa/485 b/qa/485
new file mode 100755
index 0000000..8f613fc
--- /dev/null
+++ b/qa/485
@@ -0,0 +1,63 @@
+#!/bin/sh
+# PCP QA Test No. 485
+# check pmlogrewrite archive rewriting - global specifications
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ echo "pmdumplog diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+echo | tee -a $seq.full
+echo "=== global hostname -> foo.bar.com ===" | tee -a $seq.full
+echo 'global { hostname -> foo.bar.com }' >$tmp.config
+rm -f $tmp.new.*
+pmlogrewrite -wv -c $tmp.config src/541380_v2 $tmp.new 2>&1 | _filter
+_cmp src/541380_v2 $tmp.new
+
+echo | tee -a $seq.full
+echo "=== global tz -> "GMT" ===" | tee -a $seq.full
+echo 'global { tz -> "GMT" }' >$tmp.config
+rm -f $tmp.new.*
+pmlogrewrite -wv -c $tmp.config src/541380_v2 $tmp.new 2>&1 | _filter
+_cmp src/541380_v2 $tmp.new
+
+for t in 10:20:30 +10:20:30 -10:20:30 "-22:33:24.637 tz->\"GMT\" hostname->eek"
+do
+ echo | tee -a $seq.full
+ echo "=== global time->$t ===" | tee -a $seq.full
+ echo "global{time->$t}" >$tmp.config
+ rm -f $tmp.new.*
+ pmlogrewrite -wv -c $tmp.config src/541380_v2 $tmp.new 2>&1 | _filter
+ _cmp src/541380_v2 $tmp.new
+done
+
+# success, all done
+exit
diff --git a/qa/485.out b/qa/485.out
new file mode 100644
index 0000000..96a7ac8
--- /dev/null
+++ b/qa/485.out
@@ -0,0 +1,203 @@
+QA output created by 485
+
+=== global hostname -> foo.bar.com ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: snort -> foo.bar.com
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+-Note: timezone set to local timezone of host "snort" from archive
++Note: timezone set to local timezone of host "foo.bar.com" from archive
+
+ Log Label (Log Format Version 2)
+-Performance metrics from host snort
++Performance metrics from host foo.bar.com
+ commencing Mon Nov 3 09:33:24.637 1997
+ ending Mon Nov 3 09:33:24.637 1997
+
+
+=== global tz -> GMT ===
+PCP Archive Log Rewrite Specifications Summary
+Timezone: EST-11EST-10,89/2:00,299/2:00 -> GMT
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -2,8 +2,8 @@
+
+ Log Label (Log Format Version 2)
+ Performance metrics from host snort
+- commencing Mon Nov 3 09:33:24.637 1997
+- ending Mon Nov 3 09:33:24.637 1997
++ commencing Sun Nov 2 22:33:24.637 1997
++ ending Sun Nov 2 22:33:24.637 1997
+
+ Descriptions for Metrics in the Log ...
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+@@ -18,14 +18,14 @@
+
+ Instance Domains in the Log ...
+ InDom: 2.1
+-09:33:24.637 1 instances
++22:33:24.637 1 instances
+ 21308 or "21308"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-09:33:24.637 0 132 132
++22:33:24.637 0 132 132
+
+ [136 bytes]
+-09:33:24.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
++22:33:24.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [21308 or "21308"] value 4333
+ 2.3.2 (pmcd.pmlogger.archive): inst [21308 or "21308"] value "/usr/people/chatz/end"
+
+=== global time->10:20:30 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 10:20:30.000000
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -2,8 +2,8 @@
+
+ Log Label (Log Format Version 2)
+ Performance metrics from host snort
+- commencing Mon Nov 3 09:33:24.637 1997
+- ending Mon Nov 3 09:33:24.637 1997
++ commencing Mon Nov 3 19:53:54.637 1997
++ ending Mon Nov 3 19:53:54.637 1997
+
+ Descriptions for Metrics in the Log ...
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+@@ -18,14 +18,14 @@
+
+ Instance Domains in the Log ...
+ InDom: 2.1
+-09:33:24.637 1 instances
++19:53:54.637 1 instances
+ 21308 or "21308"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-09:33:24.637 0 132 132
++19:53:54.637 0 132 132
+
+ [136 bytes]
+-09:33:24.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
++19:53:54.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [21308 or "21308"] value 4333
+ 2.3.2 (pmcd.pmlogger.archive): inst [21308 or "21308"] value "/usr/people/chatz/end"
+
+=== global time->+10:20:30 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> 10:20:30.000000
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -2,8 +2,8 @@
+
+ Log Label (Log Format Version 2)
+ Performance metrics from host snort
+- commencing Mon Nov 3 09:33:24.637 1997
+- ending Mon Nov 3 09:33:24.637 1997
++ commencing Mon Nov 3 19:53:54.637 1997
++ ending Mon Nov 3 19:53:54.637 1997
+
+ Descriptions for Metrics in the Log ...
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+@@ -18,14 +18,14 @@
+
+ Instance Domains in the Log ...
+ InDom: 2.1
+-09:33:24.637 1 instances
++19:53:54.637 1 instances
+ 21308 or "21308"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-09:33:24.637 0 132 132
++19:53:54.637 0 132 132
+
+ [136 bytes]
+-09:33:24.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
++19:53:54.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [21308 or "21308"] value 4333
+ 2.3.2 (pmcd.pmlogger.archive): inst [21308 or "21308"] value "/usr/people/chatz/end"
+
+=== global time->-10:20:30 ===
+PCP Archive Log Rewrite Specifications Summary
+Delta: -> -10:20:30.000000
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -2,8 +2,8 @@
+
+ Log Label (Log Format Version 2)
+ Performance metrics from host snort
+- commencing Mon Nov 3 09:33:24.637 1997
+- ending Mon Nov 3 09:33:24.637 1997
++ commencing Sun Nov 2 23:12:54.637 1997
++ ending Sun Nov 2 23:12:54.637 1997
+
+ Descriptions for Metrics in the Log ...
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+@@ -18,14 +18,14 @@
+
+ Instance Domains in the Log ...
+ InDom: 2.1
+-09:33:24.637 1 instances
++23:12:54.637 1 instances
+ 21308 or "21308"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-09:33:24.637 0 132 132
++23:12:54.637 0 132 132
+
+ [136 bytes]
+-09:33:24.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
++23:12:54.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [21308 or "21308"] value 4333
+ 2.3.2 (pmcd.pmlogger.archive): inst [21308 or "21308"] value "/usr/people/chatz/end"
+
+=== global time->-22:33:24.637 tz->"GMT" hostname->eek ===
+PCP Archive Log Rewrite Specifications Summary
+Hostname: snort -> eek
+Timezone: EST-11EST-10,89/2:00,299/2:00 -> GMT
+Delta: -> -22:33:24.637000
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,9 +1,9 @@
+-Note: timezone set to local timezone of host "snort" from archive
++Note: timezone set to local timezone of host "eek" from archive
+
+ Log Label (Log Format Version 2)
+-Performance metrics from host snort
+- commencing Mon Nov 3 09:33:24.637 1997
+- ending Mon Nov 3 09:33:24.637 1997
++Performance metrics from host eek
++ commencing Sun Nov 2 00:00:00.000 1997
++ ending Sun Nov 2 00:00:00.000 1997
+
+ Descriptions for Metrics in the Log ...
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+@@ -18,14 +18,14 @@
+
+ Instance Domains in the Log ...
+ InDom: 2.1
+-09:33:24.637 1 instances
++00:00:00.000 1 instances
+ 21308 or "21308"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-09:33:24.637 0 132 132
++00:00:00.000 0 132 132
+
+ [136 bytes]
+-09:33:24.637 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
++00:00:00.000 2.3.3 (pmcd.pmlogger.host): inst [21308 or "21308"] value "ha1.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [21308 or "21308"] value 4333
+ 2.3.2 (pmcd.pmlogger.archive): inst [21308 or "21308"] value "/usr/people/chatz/end"
diff --git a/qa/486 b/qa/486
new file mode 100755
index 0000000..33a664b
--- /dev/null
+++ b/qa/486
@@ -0,0 +1,155 @@
+#!/bin/sh
+# PCP QA Test No. 486
+# pmlogrewrite - simple rewriting cases
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+# 1.80.15 (disk.dev.bytes):
+# inst [339 or "dks9d1"] value 179031
+_f1_old()
+{
+ $PCP_AWK_PROG '
+$2 == "(disk.dev.bytes):" { xlate=1; print; next }
+xlate == 1 && NF == 6 { $6 = int(($6 + 512)/1024) }
+ { print }
+xlate == 1 && NF != 6 { xlate = 0 }'
+}
+_f1_new()
+{
+ $PCP_AWK_PROG '
+$2 == "(disk.dev.bytes):" { xlate=1; print; next }
+xlate == 1 && NF == 6 { $6 = $6 }
+ { print }
+xlate == 1 && NF != 6 { xlate = 0 }'
+}
+
+_cmp()
+{
+ if [ ! -f "$1.0" ]
+ then
+ echo "Arrgh ... $1.0 missing" | _filter
+ return
+ fi
+ if [ ! -f "$2.0" ]
+ then
+ echo "Arrgh ... $2.0 missing" | _filter
+ return
+ fi
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ echo "pmdumplog diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+ [ -z "$filter_new" -a -z "$filter_old" ] && return
+ if [ ! -z "$filter_old" ]
+ then
+ $filter_old <$tmp.in >$tmp.tmp
+ echo >>$seq.full
+ echo "--- after $filter_old ---" >>$seq.full
+ cat $tmp.tmp >>$seq.full
+ mv $tmp.tmp $tmp.in
+ fi
+ if [ ! -z "$filter_new" ]
+ then
+ $filter_new <$tmp.out >$tmp.tmp
+ echo >>$seq.full
+ echo "--- after $filter_new ---" >>$seq.full
+ cat $tmp.tmp >>$seq.full
+ mv $tmp.tmp $tmp.out
+ fi
+ echo
+ echo "FILTERED pmdumplog diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] spec
+# rewrite pmDesc and pmid in pmResults
+src/mirage metric sample.bin { pmid->42.42.42 }
+# name is 3 bytes shorter
+src/mirage metric sample.bin { name -> sam.bin }
+# name is 10 bytes longer
+src/mirage metric sample.bin { name -> x23456789.sample.bin }
+# inst renumbering
+src/mirage indom 29.2 { inst 300 -> 42 }
+src/mirage indom 29.2 { inst 300 -> 400 }
+src/mirage indom 29.2 { iname "bin-700" -> "bin-900" }
+src/mirage indom 29.2 { iname "bin-700" -> "bin-900 and some" }
+src/mirage indom 29.2 { iname "bin-300" -> "bin-100" inst 300 -> 100 }
+src/rattle indom 1.5 { iname "1 minute" -> "5" }
+src/rattle indom 1.5 { iname "5 minute" -> "15 doo dah" }
+src/rattle indom 1.5 { iname "5" -> "5 hours" }
+# all metric semantics
+src/mirage metric 29.*.* { sem->DISCRETE } metric pmcd.pmlogger.port { sem->COUNTER }
+# scale conversion
+src/snort-disks metric disk.dev.bytes { units->1,0,0,MBYTE,0,0 }
+src/snort-disks|-s metric disk.dev.bytes { units->1,0,0,MBYTE,0,0 }
+src/snort-disks metric disk.dev.bytes { units->1,-1,0,Kbyte,Sec,0 }
+src/snort-disks|-ws metric disk.dev.bytes { units->1,-1,0,kbyte,sec,0 }
+src/sample_expr metric sample.scale_step.time_up_secs { units->0,1,0,0,MSEC,0 }
+# type conversion
+# 32 ->
+src/mirage metric sample.drift { type -> U32 }
+src/mirage metric sample.drift { type -> 64 }
+# double ->
+src/sample_expr metric sample.scale_step.time_up_secs { type -> FLOAT }
+src/sample_expr metric sample.scale_step.time_up_secs { type -> U32 }
+# indom changes
+src/rattle metric pmcd.pmlogger.archive { indom -> 2.99 } indom 2.1 { indom -> 2.99 }
+src/rattle metric hinv.ndisk { indom -> 1.5 }
+src/rattle metric hinv.ndisk { indom -> 1.5 output inst 5 }
+src/ok-foo metric sample.colour { indom -> NULL }
+src/ok-foo metric sample.colour { indom -> NULL output first }
+src/ok-foo metric sample.colour { indom -> NULL output inst 1 }
+src/ok-foo metric sample.colour { indom -> NULL output last }
+src/ok-foo metric sample.colour { indom -> NULL output min }
+src/ok-foo metric sample.colour { indom -> NULL output max }
+src/ok-foo metric sample.colour { indom -> NULL output sum }
+src/ok-foo metric sample.colour { indom -> NULL output avg }
+src/sample_expr metric sample.mirage_longlong {indom->NULL}
+src/sample_expr metric sample.mirage_longlong {indom->NULL output last}
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ arch=`echo "$arch_args" | sed -e 's/|.*//'`
+ args=`echo "$arch_args" | sed -n -e '/|/s/.*|//p'`
+ pmlogrewrite -w -c $tmp.config $args $arch $tmp.new 2>&1 | _filter
+ filter_old=''
+ filter_new=''
+ case "$arch_args"
+ in
+ 'src/snort-disks|-s')
+ filter_old=_f1_old
+ filter_new=_f1_new
+ ;;
+ esac
+ _cmp $arch $tmp.new
+done
+
+# success, all done
+exit
diff --git a/qa/486.out b/qa/486.out
new file mode 100644
index 0000000..9abbc2f
--- /dev/null
+++ b/qa/486.out
@@ -0,0 +1,3729 @@
+QA output created by 486
+
+=== metric sample.bin { pmid->42.42.42 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -6,7 +6,7 @@
+ ending Tue Feb 25 11:05:07.411 1997
+
+ Descriptions for Metrics in the Log ...
+-PMID: 29.0.6 (sample.bin)
++PMID: 42.42.42 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.7 (sample.drift)
+@@ -214,7 +214,7 @@
+ inst [14 or "m-14"] value 1429
+ inst [15 or "m-15"] value 1528
+ 29.0.7 (sample.drift): value 111
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -233,7 +233,7 @@
+ inst [15 or "m-15"] value 1524
+ inst [16 or "m-16"] value 1623
+ 29.0.7 (sample.drift): value 88
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -254,7 +254,7 @@
+ inst [17 or "m-17"] value 1717
+ inst [18 or "m-18"] value 1816
+ 29.0.7 (sample.drift): value 83
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -276,7 +276,7 @@
+ inst [19 or "m-19"] value 1909
+ inst [20 or "m-20"] value 2008
+ 29.0.7 (sample.drift): value 58
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -298,7 +298,7 @@
+ inst [20 or "m-20"] value 2001
+ inst [21 or "m-21"] value 2200
+ 29.0.7 (sample.drift): value 26
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -318,7 +318,7 @@
+ inst [19 or "m-19"] value 1995
+ inst [21 or "m-21"] value 2194
+ 29.0.7 (sample.drift): value 74
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -338,7 +338,7 @@
+ inst [19 or "m-19"] value 1989
+ inst [21 or "m-21"] value 2188
+ 29.0.7 (sample.drift): value 75
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -359,7 +359,7 @@
+ inst [21 or "m-21"] value 2182
+ inst [22 or "m-22"] value 2281
+ 29.0.7 (sample.drift): value 86
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -381,7 +381,7 @@
+ inst [22 or "m-22"] value 2274
+ inst [23 or "m-23"] value 2373
+ 29.0.7 (sample.drift): value 119
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -402,7 +402,7 @@
+ inst [23 or "m-23"] value 2367
+ inst [24 or "m-24"] value 2466
+ 29.0.7 (sample.drift): value 150
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -422,7 +422,7 @@
+ inst [24 or "m-24"] value 2461
+ inst [25 or "m-25"] value 2560
+ 29.0.7 (sample.drift): value 153
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -441,7 +441,7 @@
+ inst [24 or "m-24"] value 2456
+ inst [25 or "m-25"] value 2555
+ 29.0.7 (sample.drift): value 189
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -460,7 +460,7 @@
+ inst [24 or "m-24"] value 2451
+ inst [26 or "m-26"] value 2650
+ 29.0.7 (sample.drift): value 234
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -481,7 +481,7 @@
+ inst [27 or "m-27"] value 2744
+ inst [28 or "m-28"] value 2843
+ 29.0.7 (sample.drift): value 282
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -501,7 +501,7 @@
+ inst [28 or "m-28"] value 2838
+ inst [29 or "m-29"] value 2937
+ 29.0.7 (sample.drift): value 303
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -520,7 +520,7 @@
+ inst [27 or "m-27"] value 2733
+ inst [28 or "m-28"] value 2832
+ 29.0.7 (sample.drift): value 271
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -539,7 +539,7 @@
+ inst [28 or "m-28"] value 2828
+ inst [30 or "m-30"] value 3027
+ 29.0.7 (sample.drift): value 267
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -559,7 +559,7 @@
+ inst [30 or "m-30"] value 3022
+ inst [31 or "m-31"] value 3121
+ 29.0.7 (sample.drift): value 249
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -579,7 +579,7 @@
+ inst [32 or "m-32"] value 3216
+ inst [33 or "m-33"] value 3315
+ 29.0.7 (sample.drift): value 242
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -598,7 +598,7 @@
+ inst [30 or "m-30"] value 3011
+ inst [33 or "m-33"] value 3310
+ 29.0.7 (sample.drift): value 208
+- 29.0.6 (sample.bin):
++ 42.42.42 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+
+=== metric sample.bin { name -> sam.bin } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -6,7 +6,7 @@
+ ending Tue Feb 25 11:05:07.411 1997
+
+ Descriptions for Metrics in the Log ...
+-PMID: 29.0.6 (sample.bin)
++PMID: 29.0.6 (sam.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.7 (sample.drift)
+@@ -182,24 +182,24 @@
+ Log Vol end(meta) end(log)
+ 10:45:08.440 0 132 132
+ 10:46:07.406 0 351 288
+-10:47:07.419 0 771 464
+-10:48:07.406 0 864 640
+-10:49:07.407 0 983 832
+-10:50:07.407 0 1115 1032
+-10:51:07.407 0 1247 1232
+-10:53:07.408 0 1353 1600
+-10:54:07.408 0 1472 1792
+-10:55:07.409 0 1604 1992
+-10:56:07.409 0 1723 2184
+-10:57:07.409 0 1829 2368
+-10:58:07.409 0 1922 2544
+-10:59:07.410 0 2015 2720
+-11:00:07.410 0 2134 2912
+-11:01:07.410 0 2240 3096
+-11:02:07.411 0 2333 3272
+-11:03:07.411 0 2426 3448
+-11:04:07.411 0 2532 3632
+-11:05:07.411 0 2638 3816
++10:47:07.419 0 768 464
++10:48:07.406 0 861 640
++10:49:07.407 0 980 832
++10:50:07.407 0 1112 1032
++10:51:07.407 0 1244 1232
++10:53:07.408 0 1350 1600
++10:54:07.408 0 1469 1792
++10:55:07.409 0 1601 1992
++10:56:07.409 0 1720 2184
++10:57:07.409 0 1826 2368
++10:58:07.409 0 1919 2544
++10:59:07.410 0 2012 2720
++11:00:07.410 0 2131 2912
++11:01:07.410 0 2237 3096
++11:02:07.411 0 2330 3272
++11:03:07.411 0 2423 3448
++11:04:07.411 0 2529 3632
++11:05:07.411 0 2635 3816
+
+ [156 bytes]
+ 10:45:08.440 2.3.3 (pmcd.pmlogger.host): inst [24763 or "24763"] value "gonzo.melbourne.sgi.com"
+@@ -214,7 +214,7 @@
+ inst [14 or "m-14"] value 1429
+ inst [15 or "m-15"] value 1528
+ 29.0.7 (sample.drift): value 111
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -233,7 +233,7 @@
+ inst [15 or "m-15"] value 1524
+ inst [16 or "m-16"] value 1623
+ 29.0.7 (sample.drift): value 88
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -254,7 +254,7 @@
+ inst [17 or "m-17"] value 1717
+ inst [18 or "m-18"] value 1816
+ 29.0.7 (sample.drift): value 83
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -276,7 +276,7 @@
+ inst [19 or "m-19"] value 1909
+ inst [20 or "m-20"] value 2008
+ 29.0.7 (sample.drift): value 58
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -298,7 +298,7 @@
+ inst [20 or "m-20"] value 2001
+ inst [21 or "m-21"] value 2200
+ 29.0.7 (sample.drift): value 26
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -318,7 +318,7 @@
+ inst [19 or "m-19"] value 1995
+ inst [21 or "m-21"] value 2194
+ 29.0.7 (sample.drift): value 74
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -338,7 +338,7 @@
+ inst [19 or "m-19"] value 1989
+ inst [21 or "m-21"] value 2188
+ 29.0.7 (sample.drift): value 75
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -359,7 +359,7 @@
+ inst [21 or "m-21"] value 2182
+ inst [22 or "m-22"] value 2281
+ 29.0.7 (sample.drift): value 86
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -381,7 +381,7 @@
+ inst [22 or "m-22"] value 2274
+ inst [23 or "m-23"] value 2373
+ 29.0.7 (sample.drift): value 119
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -402,7 +402,7 @@
+ inst [23 or "m-23"] value 2367
+ inst [24 or "m-24"] value 2466
+ 29.0.7 (sample.drift): value 150
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -422,7 +422,7 @@
+ inst [24 or "m-24"] value 2461
+ inst [25 or "m-25"] value 2560
+ 29.0.7 (sample.drift): value 153
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -441,7 +441,7 @@
+ inst [24 or "m-24"] value 2456
+ inst [25 or "m-25"] value 2555
+ 29.0.7 (sample.drift): value 189
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -460,7 +460,7 @@
+ inst [24 or "m-24"] value 2451
+ inst [26 or "m-26"] value 2650
+ 29.0.7 (sample.drift): value 234
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -481,7 +481,7 @@
+ inst [27 or "m-27"] value 2744
+ inst [28 or "m-28"] value 2843
+ 29.0.7 (sample.drift): value 282
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -501,7 +501,7 @@
+ inst [28 or "m-28"] value 2838
+ inst [29 or "m-29"] value 2937
+ 29.0.7 (sample.drift): value 303
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -520,7 +520,7 @@
+ inst [27 or "m-27"] value 2733
+ inst [28 or "m-28"] value 2832
+ 29.0.7 (sample.drift): value 271
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -539,7 +539,7 @@
+ inst [28 or "m-28"] value 2828
+ inst [30 or "m-30"] value 3027
+ 29.0.7 (sample.drift): value 267
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -559,7 +559,7 @@
+ inst [30 or "m-30"] value 3022
+ inst [31 or "m-31"] value 3121
+ 29.0.7 (sample.drift): value 249
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -579,7 +579,7 @@
+ inst [32 or "m-32"] value 3216
+ inst [33 or "m-33"] value 3315
+ 29.0.7 (sample.drift): value 242
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -598,7 +598,7 @@
+ inst [30 or "m-30"] value 3011
+ inst [33 or "m-33"] value 3310
+ 29.0.7 (sample.drift): value 208
+- 29.0.6 (sample.bin):
++ 29.0.6 (sam.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+
+=== metric sample.bin { name -> x23456789.sample.bin } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -6,7 +6,7 @@
+ ending Tue Feb 25 11:05:07.411 1997
+
+ Descriptions for Metrics in the Log ...
+-PMID: 29.0.6 (sample.bin)
++PMID: 29.0.6 (x23456789.sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.7 (sample.drift)
+@@ -182,24 +182,24 @@
+ Log Vol end(meta) end(log)
+ 10:45:08.440 0 132 132
+ 10:46:07.406 0 351 288
+-10:47:07.419 0 771 464
+-10:48:07.406 0 864 640
+-10:49:07.407 0 983 832
+-10:50:07.407 0 1115 1032
+-10:51:07.407 0 1247 1232
+-10:53:07.408 0 1353 1600
+-10:54:07.408 0 1472 1792
+-10:55:07.409 0 1604 1992
+-10:56:07.409 0 1723 2184
+-10:57:07.409 0 1829 2368
+-10:58:07.409 0 1922 2544
+-10:59:07.410 0 2015 2720
+-11:00:07.410 0 2134 2912
+-11:01:07.410 0 2240 3096
+-11:02:07.411 0 2333 3272
+-11:03:07.411 0 2426 3448
+-11:04:07.411 0 2532 3632
+-11:05:07.411 0 2638 3816
++10:47:07.419 0 781 464
++10:48:07.406 0 874 640
++10:49:07.407 0 993 832
++10:50:07.407 0 1125 1032
++10:51:07.407 0 1257 1232
++10:53:07.408 0 1363 1600
++10:54:07.408 0 1482 1792
++10:55:07.409 0 1614 1992
++10:56:07.409 0 1733 2184
++10:57:07.409 0 1839 2368
++10:58:07.409 0 1932 2544
++10:59:07.410 0 2025 2720
++11:00:07.410 0 2144 2912
++11:01:07.410 0 2250 3096
++11:02:07.411 0 2343 3272
++11:03:07.411 0 2436 3448
++11:04:07.411 0 2542 3632
++11:05:07.411 0 2648 3816
+
+ [156 bytes]
+ 10:45:08.440 2.3.3 (pmcd.pmlogger.host): inst [24763 or "24763"] value "gonzo.melbourne.sgi.com"
+@@ -214,7 +214,7 @@
+ inst [14 or "m-14"] value 1429
+ inst [15 or "m-15"] value 1528
+ 29.0.7 (sample.drift): value 111
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -233,7 +233,7 @@
+ inst [15 or "m-15"] value 1524
+ inst [16 or "m-16"] value 1623
+ 29.0.7 (sample.drift): value 88
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -254,7 +254,7 @@
+ inst [17 or "m-17"] value 1717
+ inst [18 or "m-18"] value 1816
+ 29.0.7 (sample.drift): value 83
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -276,7 +276,7 @@
+ inst [19 or "m-19"] value 1909
+ inst [20 or "m-20"] value 2008
+ 29.0.7 (sample.drift): value 58
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -298,7 +298,7 @@
+ inst [20 or "m-20"] value 2001
+ inst [21 or "m-21"] value 2200
+ 29.0.7 (sample.drift): value 26
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -318,7 +318,7 @@
+ inst [19 or "m-19"] value 1995
+ inst [21 or "m-21"] value 2194
+ 29.0.7 (sample.drift): value 74
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -338,7 +338,7 @@
+ inst [19 or "m-19"] value 1989
+ inst [21 or "m-21"] value 2188
+ 29.0.7 (sample.drift): value 75
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -359,7 +359,7 @@
+ inst [21 or "m-21"] value 2182
+ inst [22 or "m-22"] value 2281
+ 29.0.7 (sample.drift): value 86
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -381,7 +381,7 @@
+ inst [22 or "m-22"] value 2274
+ inst [23 or "m-23"] value 2373
+ 29.0.7 (sample.drift): value 119
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -402,7 +402,7 @@
+ inst [23 or "m-23"] value 2367
+ inst [24 or "m-24"] value 2466
+ 29.0.7 (sample.drift): value 150
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -422,7 +422,7 @@
+ inst [24 or "m-24"] value 2461
+ inst [25 or "m-25"] value 2560
+ 29.0.7 (sample.drift): value 153
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -441,7 +441,7 @@
+ inst [24 or "m-24"] value 2456
+ inst [25 or "m-25"] value 2555
+ 29.0.7 (sample.drift): value 189
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -460,7 +460,7 @@
+ inst [24 or "m-24"] value 2451
+ inst [26 or "m-26"] value 2650
+ 29.0.7 (sample.drift): value 234
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -481,7 +481,7 @@
+ inst [27 or "m-27"] value 2744
+ inst [28 or "m-28"] value 2843
+ 29.0.7 (sample.drift): value 282
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -501,7 +501,7 @@
+ inst [28 or "m-28"] value 2838
+ inst [29 or "m-29"] value 2937
+ 29.0.7 (sample.drift): value 303
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -520,7 +520,7 @@
+ inst [27 or "m-27"] value 2733
+ inst [28 or "m-28"] value 2832
+ 29.0.7 (sample.drift): value 271
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -539,7 +539,7 @@
+ inst [28 or "m-28"] value 2828
+ inst [30 or "m-30"] value 3027
+ 29.0.7 (sample.drift): value 267
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -559,7 +559,7 @@
+ inst [30 or "m-30"] value 3022
+ inst [31 or "m-31"] value 3121
+ 29.0.7 (sample.drift): value 249
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -579,7 +579,7 @@
+ inst [32 or "m-32"] value 3216
+ inst [33 or "m-33"] value 3315
+ 29.0.7 (sample.drift): value 242
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -598,7 +598,7 @@
+ inst [30 or "m-30"] value 3011
+ inst [33 or "m-33"] value 3310
+ 29.0.7 (sample.drift): value 208
+- 29.0.6 (sample.bin):
++ 29.0.6 (x23456789.sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+
+=== indom 29.2 { inst 300 -> 42 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -30,7 +30,7 @@
+ 10:46:07.406 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+- 300 or "bin-300"
++ 42 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+@@ -217,7 +217,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -236,7 +236,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -257,7 +257,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -279,7 +279,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -301,7 +301,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -321,7 +321,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -341,7 +341,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -362,7 +362,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -384,7 +384,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -405,7 +405,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -425,7 +425,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -444,7 +444,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -463,7 +463,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -484,7 +484,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -504,7 +504,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -523,7 +523,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -542,7 +542,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -562,7 +562,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -582,7 +582,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+@@ -601,7 +601,7 @@
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+- inst [300 or "bin-300"] value 300
++ inst [42 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+
+=== indom 29.2 { inst 300 -> 400 } ===
+Semantic error in configuration file (TMP.config)
+Duplicate instance id 400 ("bin-300" and "bin-400") for indom 29.2
+Arrgh ... TMP.new.0 missing
+
+=== indom 29.2 { iname "bin-700" -> "bin-900" } ===
+Semantic error in configuration file (TMP.config)
+Duplicate instance name "bin-900" (700) and "bin-900" (900) for indom 29.2
+Arrgh ... TMP.new.0 missing
+
+=== indom 29.2 { iname "bin-700" -> "bin-900 and some" } ===
+Semantic error in configuration file (TMP.config)
+Duplicate instance name "bin-900 and some" (700) and "bin-900" (900) for indom 29.2
+Arrgh ... TMP.new.0 missing
+
+=== indom 29.2 { iname "bin-300" -> "bin-100" inst 300 -> 100 } ===
+Semantic error in configuration file (TMP.config)
+Duplicate instance id 100 ("bin-100" and "bin-100") for indom 29.2
+Arrgh ... TMP.new.0 missing
+
+=== indom 1.5 { iname "1 minute" -> "5" } ===
+Semantic error in configuration file (TMP.config)
+Duplicate instance name "5" (1) and "5 minute" (5) for indom 1.5
+Arrgh ... TMP.new.0 missing
+
+=== indom 1.5 { iname "5 minute" -> "15 doo dah" } ===
+Semantic error in configuration file (TMP.config)
+Duplicate instance name "15 doo dah" (5) and "15 minute" (15) for indom 1.5
+Arrgh ... TMP.new.0 missing
+
+=== indom 1.5 { iname "5" -> "5 hours" } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -29,7 +29,7 @@
+ InDom: 1.5
+ 23:22:42.011 3 instances
+ 1 or "1 minute"
+- 5 or "5 minute"
++ 5 or "5 hours"
+ 15 or "15 minute"
+ InDom: 2.1
+ 22:22:42.025 1 instances
+@@ -40,7 +40,7 @@
+ 22:22:42.025 0 132 132
+ 22:22:42.060 0 351 284
+ 23:22:42.011 0 450 344
+-11:22:42.021 0 590 1784
++11:22:42.021 0 589 1784
+
+ [152 bytes]
+ 22:22:42.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
+
+=== metric 29.*.* { sem->DISCRETE } metric pmcd.pmlogger.port { sem->COUNTER } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -8,19 +8,19 @@
+ Descriptions for Metrics in the Log ...
+ PMID: 29.0.6 (sample.bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+- Semantics: instant Units: none
++ Semantics: discrete Units: none
+ PMID: 29.0.7 (sample.drift)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: instant Units: none
++ Semantics: discrete Units: none
+ PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+- Semantics: instant Units: Kbyte / sec
++ Semantics: discrete Units: Kbyte / sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+- Semantics: instant Units: none
++ Semantics: counter Units: none
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+
+=== metric disk.dev.bytes { units->1,0,0,MBYTE,0,0 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -20,7 +20,7 @@
+ Semantics: discrete Units: none
+ PMID: 1.80.15 (disk.dev.bytes)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+- Semantics: counter Units: Kbyte
++ Semantics: counter Units: Mbyte
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+=== metric disk.dev.bytes { units->1,0,0,MBYTE,0,0 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -20,7 +20,7 @@
+ Semantics: discrete Units: none
+ PMID: 1.80.15 (disk.dev.bytes)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+- Semantics: counter Units: Kbyte
++ Semantics: counter Units: Mbyte
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+@@ -101,21 +101,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667459
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183325216
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172788759
+- inst [414 or "dks9d4"] value 179712834
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246668695
+- inst [392 or "dks0d3"] value 193827319
+- inst [365 or "dks1d1"] value 246640939
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172791122
+- inst [436 or "dks0d5"] value 179726640
+- inst [447 or "dks1d3"] value 28154512
++ inst [339 or "dks9d1"] value 179029
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168739
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240887
++ inst [392 or "dks0d3"] value 189284
++ inst [365 or "dks1d1"] value 240860
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168741
++ inst [436 or "dks0d5"] value 175514
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874276
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085123
+ inst [350 or "dks9d2"] value 2
+@@ -199,21 +199,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667459
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183325304
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172788759
+- inst [414 or "dks9d4"] value 179712834
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246669272
+- inst [392 or "dks0d3"] value 193827359
+- inst [365 or "dks1d1"] value 246641515
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172791122
+- inst [436 or "dks0d5"] value 179726640
+- inst [447 or "dks1d3"] value 28154576
++ inst [339 or "dks9d1"] value 179029
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168739
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240888
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240861
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168741
++ inst [436 or "dks0d5"] value 175514
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874316
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085127
+ inst [350 or "dks9d2"] value 2
+@@ -297,21 +297,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667459
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183325448
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172788759
+- inst [414 or "dks9d4"] value 179712834
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246669368
+- inst [392 or "dks0d3"] value 193827359
+- inst [365 or "dks1d1"] value 246641627
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172791122
+- inst [436 or "dks0d5"] value 179726640
+- inst [447 or "dks1d3"] value 28154576
++ inst [339 or "dks9d1"] value 179029
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168739
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240888
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240861
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168741
++ inst [436 or "dks0d5"] value 175514
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874317
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085134
+ inst [350 or "dks9d2"] value 2
+@@ -395,21 +395,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667459
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183325548
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172788759
+- inst [414 or "dks9d4"] value 179712839
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246669513
+- inst [392 or "dks0d3"] value 193827359
+- inst [365 or "dks1d1"] value 246641768
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172791122
+- inst [436 or "dks0d5"] value 179726644
+- inst [447 or "dks1d3"] value 28154580
++ inst [339 or "dks9d1"] value 179029
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168739
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240888
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240861
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168741
++ inst [436 or "dks0d5"] value 175514
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874317
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085138
+ inst [350 or "dks9d2"] value 2
+@@ -493,21 +493,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667507
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183325744
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172789147
+- inst [414 or "dks9d4"] value 179712903
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246669681
+- inst [392 or "dks0d3"] value 193827403
+- inst [365 or "dks1d1"] value 246641928
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172791606
+- inst [436 or "dks0d5"] value 179726708
+- inst [447 or "dks1d3"] value 28154668
++ inst [339 or "dks9d1"] value 179029
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168739
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240888
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240861
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168742
++ inst [436 or "dks0d5"] value 175514
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874365
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085145
+ inst [350 or "dks9d2"] value 2
+@@ -591,21 +591,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667515
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183326121
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172789527
+- inst [414 or "dks9d4"] value 179712927
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246669701
+- inst [392 or "dks0d3"] value 193827428
+- inst [365 or "dks1d1"] value 246641948
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172792102
+- inst [436 or "dks0d5"] value 179726772
+- inst [447 or "dks1d3"] value 28155064
++ inst [339 or "dks9d1"] value 179029
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168740
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240888
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240861
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168742
++ inst [436 or "dks0d5"] value 175514
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874381
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085159
+ inst [350 or "dks9d2"] value 2
+@@ -689,21 +689,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667555
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183326483
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172789527
+- inst [414 or "dks9d4"] value 179713327
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246669735
+- inst [392 or "dks0d3"] value 193827464
+- inst [365 or "dks1d1"] value 246641982
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172792110
+- inst [436 or "dks0d5"] value 179727056
+- inst [447 or "dks1d3"] value 28155075
++ inst [339 or "dks9d1"] value 179030
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168740
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240888
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240861
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168742
++ inst [436 or "dks0d5"] value 175515
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874421
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085175
+ inst [350 or "dks9d2"] value 2
+@@ -787,21 +787,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667559
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183326964
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172789543
+- inst [414 or "dks9d4"] value 179713379
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246670254
+- inst [392 or "dks0d3"] value 193827464
+- inst [365 or "dks1d1"] value 246642381
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172792114
+- inst [436 or "dks0d5"] value 179727120
+- inst [447 or "dks1d3"] value 28155075
++ inst [339 or "dks9d1"] value 179030
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168740
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240889
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240862
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168742
++ inst [436 or "dks0d5"] value 175515
++ inst [447 or "dks1d3"] value 27495
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874425
++ inst [477 or "dks1d5"] value 189330
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085191
+ inst [350 or "dks9d2"] value 2
+@@ -885,21 +885,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667635
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183327504
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172789563
+- inst [414 or "dks9d4"] value 179713391
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246670518
+- inst [392 or "dks0d3"] value 193827524
+- inst [365 or "dks1d1"] value 246642541
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172792134
+- inst [436 or "dks0d5"] value 179727133
+- inst [447 or "dks1d3"] value 28155819
++ inst [339 or "dks9d1"] value 179031
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168740
++ inst [414 or "dks9d4"] value 175501
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240889
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240862
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168742
++ inst [436 or "dks0d5"] value 175515
++ inst [447 or "dks1d3"] value 27496
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874501
++ inst [477 or "dks1d5"] value 189331
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085213
+ inst [350 or "dks9d2"] value 2
+@@ -983,21 +983,21 @@
+ inst [464 or "dks1d4"] value 0
+ inst [477 or "dks1d5"] value 109667735
+ 1.80.15 (disk.dev.bytes):
+- inst [339 or "dks9d1"] value 183327819
+- inst [350 or "dks9d2"] value 5
+- inst [379 or "dks9d3"] value 172789603
+- inst [414 or "dks9d4"] value 179713611
+- inst [488 or "dks9d6"] value 555
+- inst [328 or "dks0d1"] value 1325
+- inst [361 or "dks0d2"] value 246670715
+- inst [392 or "dks0d3"] value 193827632
+- inst [365 or "dks1d1"] value 246642754
+- inst [425 or "dks0d4"] value 0
+- inst [405 or "dks1d2"] value 172792190
+- inst [436 or "dks0d5"] value 179727353
+- inst [447 or "dks1d3"] value 28155819
++ inst [339 or "dks9d1"] value 179031
++ inst [350 or "dks9d2"] value 0
++ inst [379 or "dks9d3"] value 168740
++ inst [414 or "dks9d4"] value 175502
++ inst [488 or "dks9d6"] value 1
++ inst [328 or "dks0d1"] value 1
++ inst [361 or "dks0d2"] value 240889
++ inst [392 or "dks0d3"] value 189285
++ inst [365 or "dks1d1"] value 240862
++ inst [425 or "dks0d4"] value 0
++ inst [405 or "dks1d2"] value 168742
++ inst [436 or "dks0d5"] value 175515
++ inst [447 or "dks1d3"] value 27496
+ inst [464 or "dks1d4"] value 0
+- inst [477 or "dks1d5"] value 193874601
++ inst [477 or "dks1d5"] value 189331
+ 1.80.7 (disk.dev.total):
+ inst [339 or "dks9d1"] value 7085224
+ inst [350 or "dks9d2"] value 2
+
+FILTERED pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -20,7 +20,7 @@
+ Semantics: discrete Units: none
+ PMID: 1.80.15 (disk.dev.bytes)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+- Semantics: counter Units: Kbyte
++ Semantics: counter Units: Mbyte
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+=== metric disk.dev.bytes { units->1,-1,0,Kbyte,Sec,0 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -20,7 +20,7 @@
+ Semantics: discrete Units: none
+ PMID: 1.80.15 (disk.dev.bytes)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+- Semantics: counter Units: Kbyte
++ Semantics: counter Units: Kbyte / sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+=== metric disk.dev.bytes { units->1,-1,0,kbyte,sec,0 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -20,7 +20,7 @@
+ Semantics: discrete Units: none
+ PMID: 1.80.15 (disk.dev.bytes)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+- Semantics: counter Units: Kbyte
++ Semantics: counter Units: Kbyte / sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+=== metric sample.scale_step.time_up_secs { units->0,1,0,0,MSEC,0 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -47,7 +47,7 @@
+ Semantics: discrete Units: none
+ PMID: 29.0.69 (sample.scale_step.time_up_secs)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: instant Units: sec
++ Semantics: instant Units: millisec
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+=== metric sample.drift { type -> U32 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.7 (sample.drift)
+- Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+
+=== metric sample.drift { type -> 64 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.7 (sample.drift)
+- Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+ Data Type: 32-bit int InDom: 29.3 0x7400003
+@@ -182,31 +182,31 @@
+ Log Vol end(meta) end(log)
+ 10:45:08.440 0 132 132
+ 10:46:07.406 0 351 288
+-10:47:07.419 0 771 464
+-10:48:07.406 0 864 640
+-10:49:07.407 0 983 832
+-10:50:07.407 0 1115 1032
+-10:51:07.407 0 1247 1232
+-10:53:07.408 0 1353 1600
+-10:54:07.408 0 1472 1792
+-10:55:07.409 0 1604 1992
+-10:56:07.409 0 1723 2184
+-10:57:07.409 0 1829 2368
+-10:58:07.409 0 1922 2544
+-10:59:07.410 0 2015 2720
+-11:00:07.410 0 2134 2912
+-11:01:07.410 0 2240 3096
+-11:02:07.411 0 2333 3272
+-11:03:07.411 0 2426 3448
+-11:04:07.411 0 2532 3632
+-11:05:07.411 0 2638 3816
++10:47:07.419 0 771 476
++10:48:07.406 0 864 664
++10:49:07.407 0 983 868
++10:50:07.407 0 1115 1080
++10:51:07.407 0 1247 1292
++10:53:07.408 0 1353 1684
++10:54:07.408 0 1472 1888
++10:55:07.409 0 1604 2100
++10:56:07.409 0 1723 2304
++10:57:07.409 0 1829 2500
++10:58:07.409 0 1922 2688
++10:59:07.410 0 2015 2876
++11:00:07.410 0 2134 3080
++11:01:07.410 0 2240 3276
++11:02:07.411 0 2333 3464
++11:03:07.411 0 2426 3652
++11:04:07.411 0 2532 3848
++11:05:07.411 0 2638 4044
+
+ [156 bytes]
+ 10:45:08.440 2.3.3 (pmcd.pmlogger.host): inst [24763 or "24763"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [24763 or "24763"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [24763 or "24763"] value "/usr/people/kenmcd/isms/pcp/qa/src/mirage"
+
+-[176 bytes]
++[188 bytes]
+ 10:46:07.406 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 32
+ inst [12 or "m-12"] value 1231
+@@ -225,7 +225,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[188 bytes]
+ 10:47:07.419 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 27
+ inst [12 or "m-12"] value 1226
+@@ -244,7 +244,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[204 bytes]
+ 10:48:07.406 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 22
+ inst [12 or "m-12"] value 1221
+@@ -265,7 +265,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[200 bytes]
++[212 bytes]
+ 10:49:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 15
+ inst [12 or "m-12"] value 1214
+@@ -287,7 +287,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[200 bytes]
++[212 bytes]
+ 10:50:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 7
+ inst [12 or "m-12"] value 1206
+@@ -309,7 +309,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[196 bytes]
+ 10:51:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 99
+ inst [15 or "m-15"] value 1598
+@@ -329,7 +329,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[196 bytes]
+ 10:52:07.407 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 93
+ inst [15 or "m-15"] value 1592
+@@ -349,7 +349,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[204 bytes]
+ 10:53:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 87
+ inst [15 or "m-15"] value 1586
+@@ -370,7 +370,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[200 bytes]
++[212 bytes]
+ 10:54:07.408 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 80
+ inst [15 or "m-15"] value 1579
+@@ -392,7 +392,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[204 bytes]
+ 10:55:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 72
+ inst [15 or "m-15"] value 1571
+@@ -413,7 +413,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[196 bytes]
+ 10:56:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 65
+ inst [17 or "m-17"] value 1764
+@@ -433,7 +433,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[188 bytes]
+ 10:57:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 59
+ inst [22 or "m-22"] value 2258
+@@ -452,7 +452,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[188 bytes]
+ 10:58:07.409 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 54
+ inst [22 or "m-22"] value 2253
+@@ -471,7 +471,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[204 bytes]
+ 10:59:07.410 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 49
+ inst [22 or "m-22"] value 2248
+@@ -492,7 +492,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[196 bytes]
+ 11:00:07.410 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 42
+ inst [24 or "m-24"] value 2441
+@@ -512,7 +512,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[188 bytes]
+ 11:01:07.410 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 36
+ inst [24 or "m-24"] value 2435
+@@ -531,7 +531,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[188 bytes]
+ 11:02:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 31
+ inst [24 or "m-24"] value 2430
+@@ -550,7 +550,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[196 bytes]
+ 11:03:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 26
+ inst [24 or "m-24"] value 2425
+@@ -570,7 +570,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[196 bytes]
+ 11:04:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 20
+ inst [24 or "m-24"] value 2419
+@@ -590,7 +590,7 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[188 bytes]
+ 11:05:07.411 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 14
+ inst [24 or "m-24"] value 2413
+
+=== metric sample.scale_step.time_up_secs { type -> FLOAT } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -46,7 +46,7 @@
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+ PMID: 29.0.69 (sample.scale_step.time_up_secs)
+- Data Type: double InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+@@ -74,14 +74,14 @@
+ Log Vol end(meta) end(log)
+ 21:58:59.005 0 132 132
+ 21:58:59.505 0 350 284
+-21:59:04.005 0 1305 5432
++21:59:04.005 0 1305 5396
+
+ [152 bytes]
+ 21:58:59.005 2.3.3 (pmcd.pmlogger.host): inst [3931 or "3931"] value "bozo.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [3931 or "3931"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [3931 or "3931"] value "/home/kenj/src/pcpqa/src/sample_expr"
+
+-[572 bytes]
++[568 bytes]
+ 21:58:59.505 29.0.85 (sample.byte_rate_perhour): value 770
+ 29.0.83 (sample.kbyte_ctr): value 23132
+ 29.0.82 (sample.byte_rate): value 767
+@@ -112,7 +112,7 @@
+ inst [17 or "m-17"] value 1720
+ inst [18 or "m-18"] value 1819
+
+-[572 bytes]
++[568 bytes]
+ 21:59:00.005 29.0.85 (sample.byte_rate_perhour): value 726
+ 29.0.83 (sample.kbyte_ctr): value 23979
+ 29.0.82 (sample.byte_rate): value 626
+@@ -143,7 +143,7 @@
+ inst [17 or "m-17"] value 1704
+ inst [18 or "m-18"] value 1803
+
+-[572 bytes]
++[568 bytes]
+ 21:59:00.505 29.0.85 (sample.byte_rate_perhour): value 414
+ 29.0.83 (sample.kbyte_ctr): value 24629
+ 29.0.82 (sample.byte_rate): value 875
+@@ -174,7 +174,7 @@
+ inst [17 or "m-17"] value 1788
+ inst [18 or "m-18"] value 1887
+
+-[572 bytes]
++[568 bytes]
+ 21:59:01.005 29.0.85 (sample.byte_rate_perhour): value 1019
+ 29.0.83 (sample.kbyte_ctr): value 26082
+ 29.0.82 (sample.byte_rate): value 78
+@@ -205,7 +205,7 @@
+ inst [17 or "m-17"] value 1772
+ inst [18 or "m-18"] value 1871
+
+-[572 bytes]
++[568 bytes]
+ 21:59:01.505 29.0.85 (sample.byte_rate_perhour): value 294
+ 29.0.83 (sample.kbyte_ctr): value 26857
+ 29.0.82 (sample.byte_rate): value 196
+@@ -236,7 +236,7 @@
+ inst [17 or "m-17"] value 1756
+ inst [18 or "m-18"] value 1855
+
+-[572 bytes]
++[568 bytes]
+ 21:59:02.005 29.0.85 (sample.byte_rate_perhour): value 752
+ 29.0.83 (sample.kbyte_ctr): value 27023
+ 29.0.82 (sample.byte_rate): value 832
+@@ -267,7 +267,7 @@
+ inst [17 or "m-17"] value 1740
+ inst [18 or "m-18"] value 1839
+
+-[572 bytes]
++[568 bytes]
+ 21:59:02.505 29.0.85 (sample.byte_rate_perhour): value 851
+ 29.0.83 (sample.kbyte_ctr): value 27691
+ 29.0.82 (sample.byte_rate): value 301
+@@ -298,7 +298,7 @@
+ inst [17 or "m-17"] value 1724
+ inst [18 or "m-18"] value 1823
+
+-[572 bytes]
++[568 bytes]
+ 21:59:03.005 29.0.85 (sample.byte_rate_perhour): value 435
+ 29.0.83 (sample.kbyte_ctr): value 28370
+ 29.0.82 (sample.byte_rate): value 950
+@@ -329,7 +329,7 @@
+ inst [17 or "m-17"] value 1708
+ inst [18 or "m-18"] value 1807
+
+-[572 bytes]
++[568 bytes]
+ 21:59:03.505 29.0.85 (sample.byte_rate_perhour): value 439
+ 29.0.83 (sample.kbyte_ctr): value 29635
+ 29.0.82 (sample.byte_rate): value 817
+@@ -360,7 +360,7 @@
+ inst [17 or "m-17"] value 1792
+ inst [18 or "m-18"] value 1891
+
+-[572 bytes]
++[568 bytes]
+ 21:59:04.005 29.0.85 (sample.byte_rate_perhour): value 447
+ 29.0.83 (sample.kbyte_ctr): value 30198
+ 29.0.82 (sample.byte_rate): value 809
+
+=== metric sample.scale_step.time_up_secs { type -> U32 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -46,7 +46,7 @@
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+ PMID: 29.0.69 (sample.scale_step.time_up_secs)
+- Data Type: double InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+@@ -74,14 +74,14 @@
+ Log Vol end(meta) end(log)
+ 21:58:59.005 0 132 132
+ 21:58:59.505 0 350 284
+-21:59:04.005 0 1305 5432
++21:59:04.005 0 1305 5324
+
+ [152 bytes]
+ 21:58:59.005 2.3.3 (pmcd.pmlogger.host): inst [3931 or "3931"] value "bozo.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [3931 or "3931"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [3931 or "3931"] value "/home/kenj/src/pcpqa/src/sample_expr"
+
+-[572 bytes]
++[560 bytes]
+ 21:58:59.505 29.0.85 (sample.byte_rate_perhour): value 770
+ 29.0.83 (sample.kbyte_ctr): value 23132
+ 29.0.82 (sample.byte_rate): value 767
+@@ -112,7 +112,7 @@
+ inst [17 or "m-17"] value 1720
+ inst [18 or "m-18"] value 1819
+
+-[572 bytes]
++[560 bytes]
+ 21:59:00.005 29.0.85 (sample.byte_rate_perhour): value 726
+ 29.0.83 (sample.kbyte_ctr): value 23979
+ 29.0.82 (sample.byte_rate): value 626
+@@ -143,7 +143,7 @@
+ inst [17 or "m-17"] value 1704
+ inst [18 or "m-18"] value 1803
+
+-[572 bytes]
++[560 bytes]
+ 21:59:00.505 29.0.85 (sample.byte_rate_perhour): value 414
+ 29.0.83 (sample.kbyte_ctr): value 24629
+ 29.0.82 (sample.byte_rate): value 875
+@@ -174,7 +174,7 @@
+ inst [17 or "m-17"] value 1788
+ inst [18 or "m-18"] value 1887
+
+-[572 bytes]
++[560 bytes]
+ 21:59:01.005 29.0.85 (sample.byte_rate_perhour): value 1019
+ 29.0.83 (sample.kbyte_ctr): value 26082
+ 29.0.82 (sample.byte_rate): value 78
+@@ -205,7 +205,7 @@
+ inst [17 or "m-17"] value 1772
+ inst [18 or "m-18"] value 1871
+
+-[572 bytes]
++[560 bytes]
+ 21:59:01.505 29.0.85 (sample.byte_rate_perhour): value 294
+ 29.0.83 (sample.kbyte_ctr): value 26857
+ 29.0.82 (sample.byte_rate): value 196
+@@ -236,7 +236,7 @@
+ inst [17 or "m-17"] value 1756
+ inst [18 or "m-18"] value 1855
+
+-[572 bytes]
++[560 bytes]
+ 21:59:02.005 29.0.85 (sample.byte_rate_perhour): value 752
+ 29.0.83 (sample.kbyte_ctr): value 27023
+ 29.0.82 (sample.byte_rate): value 832
+@@ -267,7 +267,7 @@
+ inst [17 or "m-17"] value 1740
+ inst [18 or "m-18"] value 1839
+
+-[572 bytes]
++[560 bytes]
+ 21:59:02.505 29.0.85 (sample.byte_rate_perhour): value 851
+ 29.0.83 (sample.kbyte_ctr): value 27691
+ 29.0.82 (sample.byte_rate): value 301
+@@ -298,7 +298,7 @@
+ inst [17 or "m-17"] value 1724
+ inst [18 or "m-18"] value 1823
+
+-[572 bytes]
++[560 bytes]
+ 21:59:03.005 29.0.85 (sample.byte_rate_perhour): value 435
+ 29.0.83 (sample.kbyte_ctr): value 28370
+ 29.0.82 (sample.byte_rate): value 950
+@@ -329,7 +329,7 @@
+ inst [17 or "m-17"] value 1708
+ inst [18 or "m-18"] value 1807
+
+-[572 bytes]
++[560 bytes]
+ 21:59:03.505 29.0.85 (sample.byte_rate_perhour): value 439
+ 29.0.83 (sample.kbyte_ctr): value 29635
+ 29.0.82 (sample.byte_rate): value 817
+@@ -360,7 +360,7 @@
+ inst [17 or "m-17"] value 1792
+ inst [18 or "m-18"] value 1891
+
+-[572 bytes]
++[560 bytes]
+ 21:59:04.005 29.0.85 (sample.byte_rate_perhour): value 447
+ 29.0.83 (sample.kbyte_ctr): value 30198
+ 29.0.82 (sample.byte_rate): value 809
+
+=== metric pmcd.pmlogger.archive { indom -> 2.99 } indom 2.1 { indom -> 2.99 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -16,13 +16,13 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+- Data Type: string InDom: 2.1 0x800001
++ Data Type: string InDom: 2.99 0x800063
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+- Data Type: 32-bit unsigned int InDom: 2.1 0x800001
++ Data Type: 32-bit unsigned int InDom: 2.99 0x800063
+ Semantics: instant Units: none
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+- Data Type: string InDom: 2.1 0x800001
++ Data Type: string InDom: 2.99 0x800063
+ Semantics: instant Units: none
+
+ Instance Domains in the Log ...
+@@ -31,7 +31,7 @@
+ 1 or "1 minute"
+ 5 or "5 minute"
+ 15 or "15 minute"
+-InDom: 2.1
++InDom: 2.99
+ 22:22:42.025 1 instances
+ 19856 or "19856"
+
+
+=== metric hinv.ndisk { indom -> 1.5 } ===
+Warning [TMP.config, line 2]
+Instance 0 from OUTPUT clause not found in new indom 1.5
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -13,7 +13,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 1.26.7 (hinv.ndisk)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 1.5 0x400005
+ Semantics: instant Units: none
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -48,7 +48,7 @@
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+
+ [60 bytes]
+-22:22:42.060 1.26.7 (hinv.ndisk): value 2
++22:22:42.060 1.26.7 (hinv.ndisk): inst [0 or ???] value 2
+ 1.18.2 (hinv.ncpu): value 1
+
+ [40 bytes]
+
+=== metric hinv.ndisk { indom -> 1.5 output inst 5 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -13,7 +13,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 1.26.7 (hinv.ndisk)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 1.5 0x400005
+ Semantics: instant Units: none
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -48,7 +48,7 @@
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+
+ [60 bytes]
+-22:22:42.060 1.26.7 (hinv.ndisk): value 2
++22:22:42.060 1.26.7 (hinv.ndisk): inst [5 or ???] value 2
+ 1.18.2 (hinv.ncpu): value 1
+
+ [40 bytes]
+
+=== metric sample.colour { indom -> NULL } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 119
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 122
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 125
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 128
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 131
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 134
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 137
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 140
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.colour { indom -> NULL output first } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 119
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 122
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 125
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 128
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 131
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 134
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 137
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 140
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.colour { indom -> NULL output inst 1 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 220
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 223
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 226
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 229
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 232
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 235
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 238
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 241
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.colour { indom -> NULL output last } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 321
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 324
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 327
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 330
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 333
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 336
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 339
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 342
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.colour { indom -> NULL output min } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 119
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 122
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 125
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 128
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 131
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 134
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 137
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 140
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.colour { indom -> NULL output max } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 321
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 324
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 327
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 330
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 333
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 336
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 339
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 342
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.colour { indom -> NULL output sum } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 660
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 669
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 678
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 687
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 696
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 705
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 714
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 723
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.colour { indom -> NULL output avg } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:40.258 0 851 1768
++04:34:40.258 0 851 1656
+
+ [152 bytes]
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+-[212 bytes]
++[196 bytes]
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 220
+ 29.0.2 (sample.seconds): value 890
+
+-[212 bytes]
++[196 bytes]
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,13 +92,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 223
+ 29.0.2 (sample.seconds): value 891
+
+-[212 bytes]
++[196 bytes]
+ 04:34:35.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -114,13 +108,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 125
+- inst [1 or "green"] value 226
+- inst [2 or "blue"] value 327
++ 29.0.5 (sample.colour): value 226
+ 29.0.2 (sample.seconds): value 892
+
+-[212 bytes]
++[196 bytes]
+ 04:34:36.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 90
+ 29.0.6 (sample.bin):
+@@ -133,13 +124,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 128
+- inst [1 or "green"] value 229
+- inst [2 or "blue"] value 330
++ 29.0.5 (sample.colour): value 229
+ 29.0.2 (sample.seconds): value 893
+
+-[212 bytes]
++[196 bytes]
+ 04:34:37.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 101
+ 29.0.6 (sample.bin):
+@@ -152,13 +140,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 131
+- inst [1 or "green"] value 232
+- inst [2 or "blue"] value 333
++ 29.0.5 (sample.colour): value 232
+ 29.0.2 (sample.seconds): value 894
+
+-[212 bytes]
++[196 bytes]
+ 04:34:38.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 127
+ 29.0.6 (sample.bin):
+@@ -171,13 +156,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 134
+- inst [1 or "green"] value 235
+- inst [2 or "blue"] value 336
++ 29.0.5 (sample.colour): value 235
+ 29.0.2 (sample.seconds): value 895
+
+-[212 bytes]
++[196 bytes]
+ 04:34:39.258 29.0.46 (sample.lights): value "green"
+ 29.0.7 (sample.drift): value 135
+ 29.0.6 (sample.bin):
+@@ -190,13 +172,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 137
+- inst [1 or "green"] value 238
+- inst [2 or "blue"] value 339
++ 29.0.5 (sample.colour): value 238
+ 29.0.2 (sample.seconds): value 896
+
+-[208 bytes]
++[192 bytes]
+ 04:34:40.258 29.0.46 (sample.lights): value "red"
+ 29.0.7 (sample.drift): value 156
+ 29.0.6 (sample.bin):
+@@ -209,8 +188,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 140
+- inst [1 or "green"] value 241
+- inst [2 or "blue"] value 342
++ 29.0.5 (sample.colour): value 241
+ 29.0.2 (sample.seconds): value 897
+
+=== metric sample.mirage_longlong {indom->NULL} ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -37,7 +37,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / hour
+ PMID: 29.0.38 (sample.mirage_longlong)
+- Data Type: 64-bit int InDom: 29.3 0x7400003
++ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / millisec
+ PMID: 29.0.68 (sample.scale_step.count_down)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+@@ -74,14 +74,14 @@
+ Log Vol end(meta) end(log)
+ 21:58:59.005 0 132 132
+ 21:58:59.505 0 350 284
+-21:59:04.005 0 1305 5432
++21:59:04.005 0 1305 4172
+
+ [152 bytes]
+ 21:58:59.005 2.3.3 (pmcd.pmlogger.host): inst [3931 or "3931"] value "bozo.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [3931 or "3931"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [3931 or "3931"] value "/home/kenj/src/pcpqa/src/sample_expr"
+
+-[572 bytes]
++[432 bytes]
+ 21:58:59.505 29.0.85 (sample.byte_rate_perhour): value 770
+ 29.0.83 (sample.kbyte_ctr): value 23132
+ 29.0.82 (sample.byte_rate): value 767
+@@ -93,15 +93,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 34000000
+- inst [46 or "m-46"] value 4633000000
+- inst [47 or "m-47"] value 4732000000
+- inst [10 or "m-10"] value 1031000000
+- inst [15 or "m-15"] value 1530000000
+- inst [16 or "m-16"] value 1629000000
+- inst [17 or "m-17"] value 1728000000
+- inst [18 or "m-18"] value 1827000000
++ 29.0.38 (sample.mirage_longlong): value 34000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 26
+ inst [46 or "m-46"] value 4625
+@@ -112,7 +104,7 @@
+ inst [17 or "m-17"] value 1720
+ inst [18 or "m-18"] value 1819
+
+-[572 bytes]
++[432 bytes]
+ 21:59:00.005 29.0.85 (sample.byte_rate_perhour): value 726
+ 29.0.83 (sample.kbyte_ctr): value 23979
+ 29.0.82 (sample.byte_rate): value 626
+@@ -124,15 +116,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 18000000
+- inst [46 or "m-46"] value 4617000000
+- inst [47 or "m-47"] value 4716000000
+- inst [10 or "m-10"] value 1015000000
+- inst [15 or "m-15"] value 1514000000
+- inst [16 or "m-16"] value 1613000000
+- inst [17 or "m-17"] value 1712000000
+- inst [18 or "m-18"] value 1811000000
++ 29.0.38 (sample.mirage_longlong): value 18000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 10
+ inst [46 or "m-46"] value 4609
+@@ -143,7 +127,7 @@
+ inst [17 or "m-17"] value 1704
+ inst [18 or "m-18"] value 1803
+
+-[572 bytes]
++[432 bytes]
+ 21:59:00.505 29.0.85 (sample.byte_rate_perhour): value 414
+ 29.0.83 (sample.kbyte_ctr): value 24629
+ 29.0.82 (sample.byte_rate): value 875
+@@ -155,15 +139,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 2000000
+- inst [46 or "m-46"] value 4601000000
+- inst [47 or "m-47"] value 4800000000
+- inst [10 or "m-10"] value 1099000000
+- inst [15 or "m-15"] value 1598000000
+- inst [16 or "m-16"] value 1697000000
+- inst [17 or "m-17"] value 1796000000
+- inst [18 or "m-18"] value 1895000000
++ 29.0.38 (sample.mirage_longlong): value 2000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 94
+ inst [46 or "m-46"] value 4693
+@@ -174,7 +150,7 @@
+ inst [17 or "m-17"] value 1788
+ inst [18 or "m-18"] value 1887
+
+-[572 bytes]
++[432 bytes]
+ 21:59:01.005 29.0.85 (sample.byte_rate_perhour): value 1019
+ 29.0.83 (sample.kbyte_ctr): value 26082
+ 29.0.82 (sample.byte_rate): value 78
+@@ -186,15 +162,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 86000000
+- inst [46 or "m-46"] value 4685000000
+- inst [47 or "m-47"] value 4784000000
+- inst [10 or "m-10"] value 1083000000
+- inst [15 or "m-15"] value 1582000000
+- inst [16 or "m-16"] value 1681000000
+- inst [17 or "m-17"] value 1780000000
+- inst [18 or "m-18"] value 1879000000
++ 29.0.38 (sample.mirage_longlong): value 86000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 78
+ inst [46 or "m-46"] value 4677
+@@ -205,7 +173,7 @@
+ inst [17 or "m-17"] value 1772
+ inst [18 or "m-18"] value 1871
+
+-[572 bytes]
++[432 bytes]
+ 21:59:01.505 29.0.85 (sample.byte_rate_perhour): value 294
+ 29.0.83 (sample.kbyte_ctr): value 26857
+ 29.0.82 (sample.byte_rate): value 196
+@@ -217,15 +185,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 70000000
+- inst [46 or "m-46"] value 4669000000
+- inst [47 or "m-47"] value 4768000000
+- inst [10 or "m-10"] value 1067000000
+- inst [15 or "m-15"] value 1566000000
+- inst [16 or "m-16"] value 1665000000
+- inst [17 or "m-17"] value 1764000000
+- inst [18 or "m-18"] value 1863000000
++ 29.0.38 (sample.mirage_longlong): value 70000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 62
+ inst [46 or "m-46"] value 4661
+@@ -236,7 +196,7 @@
+ inst [17 or "m-17"] value 1756
+ inst [18 or "m-18"] value 1855
+
+-[572 bytes]
++[432 bytes]
+ 21:59:02.005 29.0.85 (sample.byte_rate_perhour): value 752
+ 29.0.83 (sample.kbyte_ctr): value 27023
+ 29.0.82 (sample.byte_rate): value 832
+@@ -248,15 +208,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 54000000
+- inst [46 or "m-46"] value 4653000000
+- inst [47 or "m-47"] value 4752000000
+- inst [10 or "m-10"] value 1051000000
+- inst [15 or "m-15"] value 1550000000
+- inst [16 or "m-16"] value 1649000000
+- inst [17 or "m-17"] value 1748000000
+- inst [18 or "m-18"] value 1847000000
++ 29.0.38 (sample.mirage_longlong): value 54000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 46
+ inst [46 or "m-46"] value 4645
+@@ -267,7 +219,7 @@
+ inst [17 or "m-17"] value 1740
+ inst [18 or "m-18"] value 1839
+
+-[572 bytes]
++[432 bytes]
+ 21:59:02.505 29.0.85 (sample.byte_rate_perhour): value 851
+ 29.0.83 (sample.kbyte_ctr): value 27691
+ 29.0.82 (sample.byte_rate): value 301
+@@ -279,15 +231,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 38000000
+- inst [46 or "m-46"] value 4637000000
+- inst [47 or "m-47"] value 4736000000
+- inst [10 or "m-10"] value 1035000000
+- inst [15 or "m-15"] value 1534000000
+- inst [16 or "m-16"] value 1633000000
+- inst [17 or "m-17"] value 1732000000
+- inst [18 or "m-18"] value 1831000000
++ 29.0.38 (sample.mirage_longlong): value 38000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 30
+ inst [46 or "m-46"] value 4629
+@@ -298,7 +242,7 @@
+ inst [17 or "m-17"] value 1724
+ inst [18 or "m-18"] value 1823
+
+-[572 bytes]
++[432 bytes]
+ 21:59:03.005 29.0.85 (sample.byte_rate_perhour): value 435
+ 29.0.83 (sample.kbyte_ctr): value 28370
+ 29.0.82 (sample.byte_rate): value 950
+@@ -310,15 +254,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 22000000
+- inst [46 or "m-46"] value 4621000000
+- inst [47 or "m-47"] value 4720000000
+- inst [10 or "m-10"] value 1019000000
+- inst [15 or "m-15"] value 1518000000
+- inst [16 or "m-16"] value 1617000000
+- inst [17 or "m-17"] value 1716000000
+- inst [18 or "m-18"] value 1815000000
++ 29.0.38 (sample.mirage_longlong): value 22000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 14
+ inst [46 or "m-46"] value 4613
+@@ -329,7 +265,7 @@
+ inst [17 or "m-17"] value 1708
+ inst [18 or "m-18"] value 1807
+
+-[572 bytes]
++[432 bytes]
+ 21:59:03.505 29.0.85 (sample.byte_rate_perhour): value 439
+ 29.0.83 (sample.kbyte_ctr): value 29635
+ 29.0.82 (sample.byte_rate): value 817
+@@ -341,15 +277,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 6000000
+- inst [46 or "m-46"] value 4605000000
+- inst [47 or "m-47"] value 4704000000
+- inst [10 or "m-10"] value 1003000000
+- inst [15 or "m-15"] value 1502000000
+- inst [16 or "m-16"] value 1601000000
+- inst [17 or "m-17"] value 1800000000
+- inst [18 or "m-18"] value 1899000000
++ 29.0.38 (sample.mirage_longlong): value 6000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 98
+ inst [46 or "m-46"] value 4697
+@@ -360,7 +288,7 @@
+ inst [17 or "m-17"] value 1792
+ inst [18 or "m-18"] value 1891
+
+-[572 bytes]
++[432 bytes]
+ 21:59:04.005 29.0.85 (sample.byte_rate_perhour): value 447
+ 29.0.83 (sample.kbyte_ctr): value 30198
+ 29.0.82 (sample.byte_rate): value 809
+@@ -372,15 +300,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 100
+ 29.0.66 (sample.scale_step.bytes_down): value 549755813888
+ 29.0.65 (sample.scale_step.bytes_up): value 4
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 90000000
+- inst [46 or "m-46"] value 4689000000
+- inst [47 or "m-47"] value 4788000000
+- inst [10 or "m-10"] value 1087000000
+- inst [15 or "m-15"] value 1586000000
+- inst [16 or "m-16"] value 1685000000
+- inst [17 or "m-17"] value 1784000000
+- inst [18 or "m-18"] value 1883000000
++ 29.0.38 (sample.mirage_longlong): value 90000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 82
+ inst [46 or "m-46"] value 4681
+
+=== metric sample.mirage_longlong {indom->NULL output last} ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -37,7 +37,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / hour
+ PMID: 29.0.38 (sample.mirage_longlong)
+- Data Type: 64-bit int InDom: 29.3 0x7400003
++ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / millisec
+ PMID: 29.0.68 (sample.scale_step.count_down)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+@@ -74,14 +74,14 @@
+ Log Vol end(meta) end(log)
+ 21:58:59.005 0 132 132
+ 21:58:59.505 0 350 284
+-21:59:04.005 0 1305 5432
++21:59:04.005 0 1305 4172
+
+ [152 bytes]
+ 21:58:59.005 2.3.3 (pmcd.pmlogger.host): inst [3931 or "3931"] value "bozo.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [3931 or "3931"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [3931 or "3931"] value "/home/kenj/src/pcpqa/src/sample_expr"
+
+-[572 bytes]
++[432 bytes]
+ 21:58:59.505 29.0.85 (sample.byte_rate_perhour): value 770
+ 29.0.83 (sample.kbyte_ctr): value 23132
+ 29.0.82 (sample.byte_rate): value 767
+@@ -93,15 +93,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 34000000
+- inst [46 or "m-46"] value 4633000000
+- inst [47 or "m-47"] value 4732000000
+- inst [10 or "m-10"] value 1031000000
+- inst [15 or "m-15"] value 1530000000
+- inst [16 or "m-16"] value 1629000000
+- inst [17 or "m-17"] value 1728000000
+- inst [18 or "m-18"] value 1827000000
++ 29.0.38 (sample.mirage_longlong): value 1827000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 26
+ inst [46 or "m-46"] value 4625
+@@ -112,7 +104,7 @@
+ inst [17 or "m-17"] value 1720
+ inst [18 or "m-18"] value 1819
+
+-[572 bytes]
++[432 bytes]
+ 21:59:00.005 29.0.85 (sample.byte_rate_perhour): value 726
+ 29.0.83 (sample.kbyte_ctr): value 23979
+ 29.0.82 (sample.byte_rate): value 626
+@@ -124,15 +116,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 18000000
+- inst [46 or "m-46"] value 4617000000
+- inst [47 or "m-47"] value 4716000000
+- inst [10 or "m-10"] value 1015000000
+- inst [15 or "m-15"] value 1514000000
+- inst [16 or "m-16"] value 1613000000
+- inst [17 or "m-17"] value 1712000000
+- inst [18 or "m-18"] value 1811000000
++ 29.0.38 (sample.mirage_longlong): value 1811000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 10
+ inst [46 or "m-46"] value 4609
+@@ -143,7 +127,7 @@
+ inst [17 or "m-17"] value 1704
+ inst [18 or "m-18"] value 1803
+
+-[572 bytes]
++[432 bytes]
+ 21:59:00.505 29.0.85 (sample.byte_rate_perhour): value 414
+ 29.0.83 (sample.kbyte_ctr): value 24629
+ 29.0.82 (sample.byte_rate): value 875
+@@ -155,15 +139,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 2000000
+- inst [46 or "m-46"] value 4601000000
+- inst [47 or "m-47"] value 4800000000
+- inst [10 or "m-10"] value 1099000000
+- inst [15 or "m-15"] value 1598000000
+- inst [16 or "m-16"] value 1697000000
+- inst [17 or "m-17"] value 1796000000
+- inst [18 or "m-18"] value 1895000000
++ 29.0.38 (sample.mirage_longlong): value 1895000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 94
+ inst [46 or "m-46"] value 4693
+@@ -174,7 +150,7 @@
+ inst [17 or "m-17"] value 1788
+ inst [18 or "m-18"] value 1887
+
+-[572 bytes]
++[432 bytes]
+ 21:59:01.005 29.0.85 (sample.byte_rate_perhour): value 1019
+ 29.0.83 (sample.kbyte_ctr): value 26082
+ 29.0.82 (sample.byte_rate): value 78
+@@ -186,15 +162,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 86000000
+- inst [46 or "m-46"] value 4685000000
+- inst [47 or "m-47"] value 4784000000
+- inst [10 or "m-10"] value 1083000000
+- inst [15 or "m-15"] value 1582000000
+- inst [16 or "m-16"] value 1681000000
+- inst [17 or "m-17"] value 1780000000
+- inst [18 or "m-18"] value 1879000000
++ 29.0.38 (sample.mirage_longlong): value 1879000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 78
+ inst [46 or "m-46"] value 4677
+@@ -205,7 +173,7 @@
+ inst [17 or "m-17"] value 1772
+ inst [18 or "m-18"] value 1871
+
+-[572 bytes]
++[432 bytes]
+ 21:59:01.505 29.0.85 (sample.byte_rate_perhour): value 294
+ 29.0.83 (sample.kbyte_ctr): value 26857
+ 29.0.82 (sample.byte_rate): value 196
+@@ -217,15 +185,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 70000000
+- inst [46 or "m-46"] value 4669000000
+- inst [47 or "m-47"] value 4768000000
+- inst [10 or "m-10"] value 1067000000
+- inst [15 or "m-15"] value 1566000000
+- inst [16 or "m-16"] value 1665000000
+- inst [17 or "m-17"] value 1764000000
+- inst [18 or "m-18"] value 1863000000
++ 29.0.38 (sample.mirage_longlong): value 1863000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 62
+ inst [46 or "m-46"] value 4661
+@@ -236,7 +196,7 @@
+ inst [17 or "m-17"] value 1756
+ inst [18 or "m-18"] value 1855
+
+-[572 bytes]
++[432 bytes]
+ 21:59:02.005 29.0.85 (sample.byte_rate_perhour): value 752
+ 29.0.83 (sample.kbyte_ctr): value 27023
+ 29.0.82 (sample.byte_rate): value 832
+@@ -248,15 +208,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 54000000
+- inst [46 or "m-46"] value 4653000000
+- inst [47 or "m-47"] value 4752000000
+- inst [10 or "m-10"] value 1051000000
+- inst [15 or "m-15"] value 1550000000
+- inst [16 or "m-16"] value 1649000000
+- inst [17 or "m-17"] value 1748000000
+- inst [18 or "m-18"] value 1847000000
++ 29.0.38 (sample.mirage_longlong): value 1847000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 46
+ inst [46 or "m-46"] value 4645
+@@ -267,7 +219,7 @@
+ inst [17 or "m-17"] value 1740
+ inst [18 or "m-18"] value 1839
+
+-[572 bytes]
++[432 bytes]
+ 21:59:02.505 29.0.85 (sample.byte_rate_perhour): value 851
+ 29.0.83 (sample.kbyte_ctr): value 27691
+ 29.0.82 (sample.byte_rate): value 301
+@@ -279,15 +231,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 38000000
+- inst [46 or "m-46"] value 4637000000
+- inst [47 or "m-47"] value 4736000000
+- inst [10 or "m-10"] value 1035000000
+- inst [15 or "m-15"] value 1534000000
+- inst [16 or "m-16"] value 1633000000
+- inst [17 or "m-17"] value 1732000000
+- inst [18 or "m-18"] value 1831000000
++ 29.0.38 (sample.mirage_longlong): value 1831000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 30
+ inst [46 or "m-46"] value 4629
+@@ -298,7 +242,7 @@
+ inst [17 or "m-17"] value 1724
+ inst [18 or "m-18"] value 1823
+
+-[572 bytes]
++[432 bytes]
+ 21:59:03.005 29.0.85 (sample.byte_rate_perhour): value 435
+ 29.0.83 (sample.kbyte_ctr): value 28370
+ 29.0.82 (sample.byte_rate): value 950
+@@ -310,15 +254,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 22000000
+- inst [46 or "m-46"] value 4621000000
+- inst [47 or "m-47"] value 4720000000
+- inst [10 or "m-10"] value 1019000000
+- inst [15 or "m-15"] value 1518000000
+- inst [16 or "m-16"] value 1617000000
+- inst [17 or "m-17"] value 1716000000
+- inst [18 or "m-18"] value 1815000000
++ 29.0.38 (sample.mirage_longlong): value 1815000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 14
+ inst [46 or "m-46"] value 4613
+@@ -329,7 +265,7 @@
+ inst [17 or "m-17"] value 1708
+ inst [18 or "m-18"] value 1807
+
+-[572 bytes]
++[432 bytes]
+ 21:59:03.505 29.0.85 (sample.byte_rate_perhour): value 439
+ 29.0.83 (sample.kbyte_ctr): value 29635
+ 29.0.82 (sample.byte_rate): value 817
+@@ -341,15 +277,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 6000000
+- inst [46 or "m-46"] value 4605000000
+- inst [47 or "m-47"] value 4704000000
+- inst [10 or "m-10"] value 1003000000
+- inst [15 or "m-15"] value 1502000000
+- inst [16 or "m-16"] value 1601000000
+- inst [17 or "m-17"] value 1800000000
+- inst [18 or "m-18"] value 1899000000
++ 29.0.38 (sample.mirage_longlong): value 1899000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 98
+ inst [46 or "m-46"] value 4697
+@@ -360,7 +288,7 @@
+ inst [17 or "m-17"] value 1792
+ inst [18 or "m-18"] value 1891
+
+-[572 bytes]
++[432 bytes]
+ 21:59:04.005 29.0.85 (sample.byte_rate_perhour): value 447
+ 29.0.83 (sample.kbyte_ctr): value 30198
+ 29.0.82 (sample.byte_rate): value 809
+@@ -372,15 +300,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 100
+ 29.0.66 (sample.scale_step.bytes_down): value 549755813888
+ 29.0.65 (sample.scale_step.bytes_up): value 4
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 90000000
+- inst [46 or "m-46"] value 4689000000
+- inst [47 or "m-47"] value 4788000000
+- inst [10 or "m-10"] value 1087000000
+- inst [15 or "m-15"] value 1586000000
+- inst [16 or "m-16"] value 1685000000
+- inst [17 or "m-17"] value 1784000000
+- inst [18 or "m-18"] value 1883000000
++ 29.0.38 (sample.mirage_longlong): value 1883000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 82
+ inst [46 or "m-46"] value 4681
diff --git a/qa/487 b/qa/487
new file mode 100755
index 0000000..ad4d157
--- /dev/null
+++ b/qa/487
@@ -0,0 +1,94 @@
+#!/bin/sh
+# PCP QA Test No. 487
+# pmlogrewrite - error cases
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/" \
+ -e '/pmResult dump/s/from .* numpmid/... numpmid/'
+}
+
+_cmp()
+{
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ echo "pmdumplog diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+_cmp2()
+{
+ if [ ! -f $1.0 ]
+ then
+ echo "Arrgh ... cannot find $1.0"
+ return
+ fi
+ if [ ! -f $2.0 ]
+ then
+ echo "Arrgh ... cannot find $2.0"
+ return
+ fi
+ pmval -z -U $1 $3 2>$tmp.err | tee -a $seq.full | sed -e 's/ */ /g' >$tmp.in
+ cat $tmp.err >>$seq.full
+ cat $tmp.err >>$tmp.in
+ pmval -z -U $2 $3 2>$tmp.err | tee -a $seq.full | sed -e 's/ */ /g' >$tmp.out
+ cat $tmp.err >>$seq.full
+ cat $tmp.err >>$tmp.out
+ echo "pmval diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] spec
+# double ->
+src/sample_expr metric sample.scale_step.time_up_secs { type -> string }
+src/sample_expr metric pmcd.pmlogger.host { type -> U32 }
+src/kenj-pc-2 metric sample.wrap.longlong { type -> U32 }
+src/kenj-pc-2 metric sample.wrap.ulonglong { type -> 64 }
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -w -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ if [ -f $tmp.new.0 ]
+ then
+ _cmp `echo $arch_args | sed -e 's/|.*//'` $tmp.new
+ fi
+done
+
+echo
+echo "=== overflow in type conversion - step 1 (no errors) ==="
+echo "metric sample.drift { units->1,0,-1,MBYTE,0,0 type->U64 }" >$tmp.config
+rm -f $tmp.tmp.*
+pmlogrewrite -w -c $tmp.config src/mirage $tmp.tmp 2>&1 | _filter
+_cmp2 src/mirage $tmp.tmp sample.drift
+echo "=== overflow in type conversion - step 2 (expect error) ==="
+echo "metric sample.drift { units->1,0,-1,BYTE,0,1 type->32 }" >$tmp.config
+rm -f $tmp.new.*
+pmlogrewrite -Dvalue -dsw -c $tmp.config $tmp.tmp $tmp.new 2>&1 | _filter
+_cmp2 $tmp.tmp $tmp.new sample.drift
+
+# success, all done
+exit
diff --git a/qa/487.out b/qa/487.out
new file mode 100644
index 0000000..7efcb40
--- /dev/null
+++ b/qa/487.out
@@ -0,0 +1,226 @@
+QA output created by 487
+
+=== metric sample.scale_step.time_up_secs { type -> string } ===
+Specification error in configuration file (TMP.config)
+[line 1] Expecting XXX (from PM_TYPE_XXX) in type clause
+
+=== metric pmcd.pmlogger.host { type -> U32 } ===
+Specification error in configuration file (TMP.config)
+[line 1] Old type (PM_TYPE_STRING) must be numeric
+
+=== metric sample.wrap.longlong { type -> U32 } ===
+pmlogrewrite: Error: sample.wrap.longlong (29.0.59): extracting value from type 64 to U32: Negative value in conversion to unsigned
+pmResult dump ... numpmid: 18
+ 29.0.78 (sample.dynamic.instant): No values returned!
+ 29.0.77 (sample.dynamic.discrete): No values returned!
+ 29.0.76 (sample.dynamic.counter): No values returned!
+ 29.0.64 (sample.rapid): numval: 1 valfmt: 0 vlist[]:
+ value 2400000000
+ 29.0.62 (sample.dodgey.value): numval: 5 valfmt: 0 vlist[]:
+ inst [1 or ???] value 96
+ inst [2 or ???] value 1
+ inst [3 or ???] value 59
+ inst [4 or ???] value 36
+ inst [5 or ???] value 98
+ 29.0.61 (sample.dodgey.control): numval: 1 valfmt: 0 vlist[]:
+ value 5
+ 29.0.60 (sample.wrap.ulonglong): numval: 1 valfmt: 1 vlist[]:
+ value 9223372036854775802
+ 29.0.59 (sample.wrap.longlong): No values returned!
+ 29.0.58 (sample.wrap.ulong): numval: 1 valfmt: 0 vlist[]:
+ value 2147483642
+ 29.0.57 (sample.wrap.long): numval: 1 valfmt: 0 vlist[]:
+ value -1073741830
+ 29.0.39 (sample.sysinfo): numval: 1 valfmt: 2 vlist[]:
+ value [e4910100801c0000204300008047000000e0930f0020fb00000000000000000000e0dd1f00f06d1b7a0000000000000000000000010000000000000000000000]
+ 29.0.37 (sample.mirage): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 87
+ inst [2 or ???] value 286
+ inst [4 or ???] value 485
+ 29.0.35 (sample.aggregate.write_me): numval: 1 valfmt: 1 vlist[]:
+ value "13" [3133]
+ 29.0.34 (sample.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!" [68756c6c6f20776f726c6421]
+ 29.0.33 (sample.aggregate.null): numval: 1 valfmt: 1 vlist[]:
+ value "" []
+ 29.0.32 (sample.string.write_me): numval: 1 valfmt: 1 vlist[]:
+ value "13"
+ 29.0.31 (sample.string.hullo): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!"
+ 29.0.30 (sample.string.null): numval: 1 valfmt: 1 vlist[]:
+ value ""
+Archive "TMP.new" not created.
+
+=== metric sample.wrap.ulonglong { type -> 64 } ===
+pmlogrewrite: Error: sample.wrap.ulonglong (29.0.60): extracting value from type U64 to 64: Truncation in value conversion
+pmResult dump ... numpmid: 18
+ 29.0.78 (sample.dynamic.instant): No values returned!
+ 29.0.77 (sample.dynamic.discrete): No values returned!
+ 29.0.76 (sample.dynamic.counter): No values returned!
+ 29.0.64 (sample.rapid): numval: 1 valfmt: 0 vlist[]:
+ value 3200000000
+ 29.0.62 (sample.dodgey.value): numval: 5 valfmt: 0 vlist[]:
+ inst [1 or ???] value 41
+ inst [2 or ???] value 38
+ inst [3 or ???] value 23
+ inst [4 or ???] value 96
+ inst [5 or ???] value 62
+ 29.0.61 (sample.dodgey.control): numval: 1 valfmt: 0 vlist[]:
+ value 5
+ 29.0.60 (sample.wrap.ulonglong): No values returned!
+ 29.0.59 (sample.wrap.longlong): numval: 1 valfmt: 1 vlist[]:
+ value -8
+ 29.0.58 (sample.wrap.ulong): numval: 1 valfmt: 0 vlist[]:
+ value 4294967288
+ 29.0.57 (sample.wrap.long): numval: 1 valfmt: 0 vlist[]:
+ value -8
+ 29.0.39 (sample.sysinfo): numval: 1 valfmt: 2 vlist[]:
+ value [e9910100201a0000004200000047000000e0930f0000fb00000000000000000000e0dd1f00f06d1b7a0000000000000000000000010000000000000000000000]
+ 29.0.37 (sample.mirage): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 84
+ inst [2 or ???] value 283
+ inst [4 or ???] value 482
+ 29.0.35 (sample.aggregate.write_me): numval: 1 valfmt: 1 vlist[]:
+ value "13" [3133]
+ 29.0.34 (sample.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!" [68756c6c6f20776f726c6421]
+ 29.0.33 (sample.aggregate.null): numval: 1 valfmt: 1 vlist[]:
+ value "" []
+ 29.0.32 (sample.string.write_me): numval: 1 valfmt: 1 vlist[]:
+ value "13"
+ 29.0.31 (sample.string.hullo): numval: 1 valfmt: 1 vlist[]:
+ value "hullo world!"
+ 29.0.30 (sample.string.null): numval: 1 valfmt: 1 vlist[]:
+ value ""
+Archive "TMP.new" not created.
+
+=== overflow in type conversion - step 1 (no errors) ===
+pmval diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,12 +1,12 @@
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+-archive: src/mirage
++archive: TMP.tmp
+ host: gonzo
+ start: Tue Feb 25 10:45:08 1997
+ end: Tue Feb 25 11:05:07 1997
+ semantics: instantaneous value
+-units: none
++units: Mbyte / count
+ samples: all
+ 10:46:07.406 111
+ 10:47:07.419 88
+=== overflow in type conversion - step 2 (expect error) ===
+pmExtractValue: 111 [U64] -> 111 [U64]
+pmConvScale: 111 [Mbyte / count] -> 1163919360 [byte / count x 10]
+pmExtractValue: 1163919360 [U64] -> 1163919360 [32]
+pmExtractValue: 88 [U64] -> 88 [U64]
+pmConvScale: 88 [Mbyte / count] -> 922746880 [byte / count x 10]
+pmExtractValue: 922746880 [U64] -> 922746880 [32]
+pmExtractValue: 83 [U64] -> 83 [U64]
+pmConvScale: 83 [Mbyte / count] -> 870318080 [byte / count x 10]
+pmExtractValue: 870318080 [U64] -> 870318080 [32]
+pmExtractValue: 58 [U64] -> 58 [U64]
+pmConvScale: 58 [Mbyte / count] -> 608174080 [byte / count x 10]
+pmExtractValue: 608174080 [U64] -> 608174080 [32]
+pmExtractValue: 26 [U64] -> 26 [U64]
+pmConvScale: 26 [Mbyte / count] -> 272629760 [byte / count x 10]
+pmExtractValue: 272629760 [U64] -> 272629760 [32]
+pmExtractValue: 74 [U64] -> 74 [U64]
+pmConvScale: 74 [Mbyte / count] -> 775946240 [byte / count x 10]
+pmExtractValue: 775946240 [U64] -> 775946240 [32]
+pmExtractValue: 75 [U64] -> 75 [U64]
+pmConvScale: 75 [Mbyte / count] -> 786432000 [byte / count x 10]
+pmExtractValue: 786432000 [U64] -> 786432000 [32]
+pmExtractValue: 86 [U64] -> 86 [U64]
+pmConvScale: 86 [Mbyte / count] -> 901775360 [byte / count x 10]
+pmExtractValue: 901775360 [U64] -> 901775360 [32]
+pmExtractValue: 119 [U64] -> 119 [U64]
+pmConvScale: 119 [Mbyte / count] -> 1247805440 [byte / count x 10]
+pmExtractValue: 1247805440 [U64] -> 1247805440 [32]
+pmExtractValue: 150 [U64] -> 150 [U64]
+pmConvScale: 150 [Mbyte / count] -> 1572864000 [byte / count x 10]
+pmExtractValue: 1572864000 [U64] -> 1572864000 [32]
+pmExtractValue: 153 [U64] -> 153 [U64]
+pmConvScale: 153 [Mbyte / count] -> 1604321280 [byte / count x 10]
+pmExtractValue: 1604321280 [U64] -> 1604321280 [32]
+pmExtractValue: 189 [U64] -> 189 [U64]
+pmConvScale: 189 [Mbyte / count] -> 1981808640 [byte / count x 10]
+pmExtractValue: 1981808640 [U64] -> 1981808640 [32]
+pmExtractValue: 234 [U64] -> 234 [U64]
+pmConvScale: 234 [Mbyte / count] -> 2453667840 [byte / count x 10]
+pmExtractValue: 2453667840 [U64] -> Error: Truncation in value conversion [32]
+pmlogrewrite: Error: sample.drift (29.0.7): extracting value from type U64 to 32: Truncation in value conversion
+pmResult dump ... numpmid: 3
+ 29.0.37 (sample.mirage): numval: 5 valfmt: 0 vlist[]:
+ inst [0 or ???] value 54
+ inst [22 or ???] value 2253
+ inst [23 or ???] value 2352
+ inst [24 or ???] value 2451
+ inst [26 or ???] value 2650
+ 29.0.7 (sample.drift): No values returned!
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+Archive "TMP.new" creation truncated.
+pmval diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,32 +1,24 @@
+ Note: timezone set to local timezone of host "gonzo" from archive
+
+ metric: sample.drift
+-archive: TMP.tmp
++archive: TMP.new
+ host: gonzo
+ start: Tue Feb 25 10:45:08 1997
+-end: Tue Feb 25 11:05:07 1997
++end: Tue Feb 25 10:57:07 1997
+ semantics: instantaneous value
+-units: Mbyte / count
++units: byte / count x 10
+ samples: all
+-10:46:07.406 111
+-10:47:07.419 88
+-10:48:07.406 83
+-10:49:07.407 58
+-10:50:07.407 26
+-10:51:07.407 74
+-10:52:07.407 75
+-10:53:07.408 86
+-10:54:07.408 119
+-10:55:07.409 150
+-10:56:07.409 153
+-10:57:07.409 189
+-10:58:07.409 234
+-10:59:07.410 282
+-11:00:07.410 303
+-11:01:07.410 271
+-11:02:07.411 267
+-11:03:07.411 249
+-11:04:07.411 242
+-11:05:07.411 208
++10:46:07.406 1163919360
++10:47:07.419 922746880
++10:48:07.406 870318080
++10:49:07.407 608174080
++10:50:07.407 272629760
++10:51:07.407 775946240
++10:52:07.407 786432000
++10:53:07.408 901775360
++10:54:07.408 1247805440
++10:55:07.409 1572864000
++10:56:07.409 1604321280
++10:57:07.409 1981808640
+
+ pmval: pmFetchArchive: End of PCP archive log
diff --git a/qa/488 b/qa/488
new file mode 100755
index 0000000..675b15d
--- /dev/null
+++ b/qa/488
@@ -0,0 +1,65 @@
+#!/bin/sh
+# PCP QA Test No. 488
+# pmlogrewrite - delete cases
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/" \
+ -e '/pmResult dump/s/from .* numpmid/... numpmid/'
+}
+
+_cmp()
+{
+ pminfo -a $1 -m >$tmp.in
+ pminfo -a $2 -m >$tmp.out
+ echo "--- pmns diffs ---"
+ diff -u $tmp.in $tmp.out | _filter
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ echo "--- pmdumplog diffs ---"
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] spec
+# metric delete
+src/rattle metric hinv.ncpu { delete }
+src/rattle metric hinv.ncpu { delete } metric hinv.ndisk { delete }
+src/rattle metric 1.*.* { delete }
+src/ace_v2 metric 40.*.* { delete } metric 1.25.* { delete }
+src/mirage indom 29.3 { iname "m-00" -> delete inst 33 -> delete }
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -w -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ if [ -f $tmp.new.0 ]
+ then
+ _cmp `echo $arch_args | sed -e 's/|.*//'` $tmp.new
+ fi
+done
+
+# success, all done
+exit
diff --git a/qa/488.out b/qa/488.out
new file mode 100644
index 0000000..3669535
--- /dev/null
+++ b/qa/488.out
@@ -0,0 +1,1081 @@
+QA output created by 488
+
+=== metric hinv.ncpu { delete } ===
+--- pmns diffs ---
+--- TMP.in
++++ TMP.out
+@@ -1,5 +1,4 @@
+ irix.kernel.all.load PMID: 1.18.3
+-hinv.ncpu PMID: 1.18.2
+ hinv.ndisk PMID: 1.26.7
+ pmcd.pmlogger.archive PMID: 2.3.2
+ pmcd.pmlogger.port PMID: 2.3.0
+--- pmdumplog diffs ---
+--- TMP.in
++++ TMP.out
+@@ -9,9 +9,6 @@
+ PMID: 1.18.3 (irix.kernel.all.load)
+ Data Type: float InDom: 1.5 0x400005
+ Semantics: instant Units: none
+-PMID: 1.18.2 (hinv.ncpu)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: discrete Units: none
+ PMID: 1.26.7 (hinv.ndisk)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+@@ -39,17 +36,16 @@
+ Log Vol end(meta) end(log)
+ 22:22:42.025 0 132 132
+ 22:22:42.060 0 351 284
+-23:22:42.011 0 450 344
+-11:22:42.021 0 590 1784
++23:22:42.011 0 401 324
++11:22:42.021 0 541 1764
+
+ [152 bytes]
+ 22:22:42.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [19856 or "19856"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+
+-[60 bytes]
++[40 bytes]
+ 22:22:42.060 1.26.7 (hinv.ndisk): value 2
+- 1.18.2 (hinv.ncpu): value 1
+
+ [40 bytes]
+ 23:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+
+=== metric hinv.ncpu { delete } metric hinv.ndisk { delete } ===
+--- pmns diffs ---
+--- TMP.in
++++ TMP.out
+@@ -1,6 +1,4 @@
+ irix.kernel.all.load PMID: 1.18.3
+-hinv.ncpu PMID: 1.18.2
+-hinv.ndisk PMID: 1.26.7
+ pmcd.pmlogger.archive PMID: 2.3.2
+ pmcd.pmlogger.port PMID: 2.3.0
+ pmcd.pmlogger.host PMID: 2.3.3
+--- pmdumplog diffs ---
+--- TMP.in
++++ TMP.out
+@@ -9,12 +9,6 @@
+ PMID: 1.18.3 (irix.kernel.all.load)
+ Data Type: float InDom: 1.5 0x400005
+ Semantics: instant Units: none
+-PMID: 1.18.2 (hinv.ncpu)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: discrete Units: none
+-PMID: 1.26.7 (hinv.ndisk)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: instant Units: none
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+@@ -39,18 +33,14 @@
+ Log Vol end(meta) end(log)
+ 22:22:42.025 0 132 132
+ 22:22:42.060 0 351 284
+-23:22:42.011 0 450 344
+-11:22:42.021 0 590 1784
++23:22:42.011 0 351 284
++11:22:42.021 0 491 1724
+
+ [152 bytes]
+ 22:22:42.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [19856 or "19856"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+
+-[60 bytes]
+-22:22:42.060 1.26.7 (hinv.ndisk): value 2
+- 1.18.2 (hinv.ncpu): value 1
+-
+ [40 bytes]
+ 23:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+
+
+=== metric 1.*.* { delete } ===
+--- pmns diffs ---
+--- TMP.in
++++ TMP.out
+@@ -1,6 +1,3 @@
+-irix.kernel.all.load PMID: 1.18.3
+-hinv.ncpu PMID: 1.18.2
+-hinv.ndisk PMID: 1.26.7
+ pmcd.pmlogger.archive PMID: 2.3.2
+ pmcd.pmlogger.port PMID: 2.3.0
+ pmcd.pmlogger.host PMID: 2.3.3
+--- pmdumplog diffs ---
+--- TMP.in
++++ TMP.out
+@@ -3,18 +3,9 @@
+ Log Label (Log Format Version 2)
+ Performance metrics from host rattle
+ commencing Sat May 17 22:22:42.025 1997
+- ending Mon May 19 11:22:42.021 1997
++ ending Sat May 17 22:22:42.025 1997
+
+ Descriptions for Metrics in the Log ...
+-PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
+- Semantics: instant Units: none
+-PMID: 1.18.2 (hinv.ncpu)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: discrete Units: none
+-PMID: 1.26.7 (hinv.ndisk)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: instant Units: none
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+@@ -39,125 +30,10 @@
+ Log Vol end(meta) end(log)
+ 22:22:42.025 0 132 132
+ 22:22:42.060 0 351 284
+-23:22:42.011 0 450 344
+-11:22:42.021 0 590 1784
++23:22:42.011 0 351 284
++11:22:42.021 0 431 284
+
+ [152 bytes]
+ 22:22:42.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [19856 or "19856"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+-
+-[60 bytes]
+-22:22:42.060 1.26.7 (hinv.ndisk): value 2
+- 1.18.2 (hinv.ncpu): value 1
+-
+-[40 bytes]
+-23:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-00:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-01:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-02:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-03:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.013671875
+-
+-[40 bytes]
+-04:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.01953125
+-
+-[40 bytes]
+-05:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
+-
+-[40 bytes]
+-06:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2
+-
+-[40 bytes]
+-07:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-08:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-09:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.043945312
+-
+-[40 bytes]
+-10:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.015625
+-
+-[40 bytes]
+-11:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-12:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-13:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-14:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-15:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-16:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
+-
+-[40 bytes]
+-17:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-18:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-19:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-20:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.025390625
+-
+-[40 bytes]
+-21:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2.0019531
+-
+-[40 bytes]
+-22:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
+-
+-[40 bytes]
+-23:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
+-
+-[40 bytes]
+-00:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2
+-
+-[40 bytes]
+-01:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.01171875
+-
+-[40 bytes]
+-02:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.0087890625
+-
+-[40 bytes]
+-03:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-04:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2
+-
+-[40 bytes]
+-05:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-06:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2.9785156
+-
+-[40 bytes]
+-07:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-08:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-09:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-10:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
+-
+-[40 bytes]
+-11:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.032226562
+
+=== metric 40.*.* { delete } metric 1.25.* { delete } ===
+--- pmns diffs ---
+--- TMP.in
++++ TMP.out
+@@ -13,16 +13,6 @@
+ kernel.all.ipc.msg PMID: 1.10.53
+ kernel.all.ipc.sema PMID: 1.10.54
+ kernel.all.load PMID: 1.18.3
+-network.interface.in.bytes PMID: 1.25.7
+-network.interface.out.bytes PMID: 1.25.12
+ disk.dev.read PMID: 1.80.1
+ disk.dev.write PMID: 1.80.2
+ disk.dev.total PMID: 1.80.7
+-40.0.0 PMID: 40.0.0
+-40.0.1 PMID: 40.0.1
+-40.0.2 PMID: 40.0.2
+-40.0.3 PMID: 40.0.3
+-40.0.4 PMID: 40.0.4
+-40.0.5 PMID: 40.0.5
+-40.0.7 PMID: 40.0.7
+-40.0.8 PMID: 40.0.8
+--- pmdumplog diffs ---
+--- TMP.in
++++ TMP.out
+@@ -6,90 +6,60 @@
+ ending Mon Oct 30 14:25:20.177 1995
+
+ Descriptions for Metrics in the Log ...
+-PMID: 40.0.4 (40.0.4)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: count
+-PMID: 1.80.7 (disk.dev.total)
+- Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+- Semantics: counter Units: count
+-PMID: 40.0.5 (40.0.5)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: count
+-PMID: 1.10.7 (kernel.all.cpu.idle)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: millisec
+-PMID: 1.10.8 (kernel.all.cpu.intr)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: millisec
+-PMID: 1.25.7 (network.interface.in.bytes)
+- Data Type: 32-bit unsigned int InDom: 1.6 0x400006
+- Semantics: counter Units: count
+-PMID: 40.0.7 (40.0.7)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: count
+-PMID: 1.10.9 (kernel.all.cpu.sys)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: millisec
+-PMID: 40.0.8 (40.0.8)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: count
+ PMID: 1.10.10 (kernel.all.cpu.sxbrk)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+-PMID: 1.10.53 (kernel.all.ipc.msg)
++PMID: 1.10.16 (kernel.all.runque)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: count
++ Semantics: counter Units: none
+ PMID: 1.10.11 (kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+-PMID: 1.10.54 (kernel.all.ipc.sema)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: count
+-PMID: 1.10.12 (kernel.all.cpu.wait.total)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: millisec
+-PMID: 1.25.12 (network.interface.out.bytes)
+- Data Type: 32-bit unsigned int InDom: 1.6 0x400006
++PMID: 1.80.7 (disk.dev.total)
++ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+-PMID: 1.10.14 (kernel.all.readch)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: byte
+ PMID: 1.80.1 (disk.dev.read)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
++PMID: 1.18.3 (kernel.all.load)
++ Data Type: float InDom: 1.5 0x400005
++ Semantics: instant Units: none
++PMID: 1.10.53 (kernel.all.ipc.msg)
++ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Semantics: counter Units: count
+ PMID: 1.10.29 (kernel.all.writech)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+-PMID: 1.10.15 (kernel.all.runocc)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: none
+-PMID: 1.10.16 (kernel.all.runque)
++PMID: 1.10.12 (kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: none
++ Semantics: counter Units: millisec
+ PMID: 1.80.2 (disk.dev.write)
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+-PMID: 40.0.0 (40.0.0)
++PMID: 1.10.54 (kernel.all.ipc.sema)
++ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Semantics: counter Units: count
++PMID: 1.10.7 (kernel.all.cpu.idle)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+-PMID: 1.10.3 (kernel.all.pswitch)
++PMID: 1.10.19 (kernel.all.syscall)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+-PMID: 40.0.1 (40.0.1)
++PMID: 1.10.8 (kernel.all.cpu.intr)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+-PMID: 40.0.2 (40.0.2)
++PMID: 1.10.14 (kernel.all.readch)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: millisec
+-PMID: 40.0.3 (40.0.3)
++ Semantics: counter Units: byte
++PMID: 1.10.3 (kernel.all.pswitch)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+-PMID: 1.18.3 (kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
+- Semantics: instant Units: none
+-PMID: 1.10.19 (kernel.all.syscall)
++PMID: 1.10.9 (kernel.all.cpu.sys)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: count
++ Semantics: counter Units: millisec
++PMID: 1.10.15 (kernel.all.runocc)
++ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Semantics: counter Units: none
+
+ Instance Domains in the Log ...
+ InDom: 1.5
+@@ -116,18 +86,11 @@
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-14:25:09.043 0 1978 132
++14:25:09.043 0 132 132
++14:25:20.177 0 1477 3660
+
+-[724 bytes]
+-14:25:09.043 40.0.8 (40.0.8): No values returned!
+- 40.0.7 (40.0.7): No values returned!
+- 40.0.5 (40.0.5): No values returned!
+- 40.0.4 (40.0.4): No values returned!
+- 40.0.3 (40.0.3): No values returned!
+- 40.0.2 (40.0.2): No values returned!
+- 40.0.1 (40.0.1): No values returned!
+- 40.0.0 (40.0.0): No values returned!
+- 1.80.7 (disk.dev.total):
++[588 bytes]
++14:25:09.043 1.80.7 (disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818705566
+ inst [131330 or "dks1d2"] value 2818573273
+ inst [131331 or "dks1d3"] value 2818576430
+@@ -157,14 +120,6 @@
+ inst [131844 or "dks3d4"] value 2818591226
+ inst [132097 or "dks4d1"] value 2818573658
+ inst [132098 or "dks4d2"] value 2818577309
+- 1.25.12 (network.interface.out.bytes):
+- inst [1 or "et0"] value 6701821
+- inst [2 or "lo0"] value 13162348
+- inst [3 or "sl0"] value 1142102
+- 1.25.7 (network.interface.in.bytes):
+- inst [1 or "et0"] value 53296083
+- inst [2 or "lo0"] value 13162348
+- inst [3 or "sl0"] value 38741
+ 1.18.3 (kernel.all.load):
+ inst [1 or "1 minute"] value 0.20703125
+ inst [5 or "5 minute"] value 0.13867188
+@@ -184,16 +139,8 @@
+ 1.10.7 (kernel.all.cpu.idle): value 4274422426
+ 1.10.3 (kernel.all.pswitch): value 4563510
+
+-[820 bytes]
+-14:25:10.198 40.0.8 (40.0.8): value 817
+- 40.0.7 (40.0.7): value 1917
+- 40.0.5 (40.0.5): value 17
+- 40.0.4 (40.0.4): value 15
+- 40.0.3 (40.0.3): value 1
+- 40.0.2 (40.0.2): value 96300
+- 40.0.1 (40.0.1): value 26300
+- 40.0.0 (40.0.0): value 1800
+- 1.80.7 (disk.dev.total):
++[588 bytes]
++14:25:10.198 1.80.7 (disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818705566
+ inst [131330 or "dks1d2"] value 2818573273
+ inst [131331 or "dks1d3"] value 2818576430
+@@ -223,14 +170,6 @@
+ inst [131844 or "dks3d4"] value 2818591226
+ inst [132097 or "dks4d1"] value 2818573658
+ inst [132098 or "dks4d2"] value 2818577352
+- 1.25.12 (network.interface.out.bytes):
+- inst [1 or "et0"] value 6702789
+- inst [2 or "lo0"] value 13171330
+- inst [3 or "sl0"] value 1143484
+- 1.25.7 (network.interface.in.bytes):
+- inst [1 or "et0"] value 53302497
+- inst [2 or "lo0"] value 13171330
+- inst [3 or "sl0"] value 38767
+ 1.18.3 (kernel.all.load):
+ inst [1 or "1 minute"] value 0.32226562
+ inst [5 or "5 minute"] value 0.1640625
+@@ -250,16 +189,8 @@
+ 1.10.7 (kernel.all.cpu.idle): value 4274427856
+ 1.10.3 (kernel.all.pswitch): value 4564200
+
+-[820 bytes]
+-14:25:12.206 40.0.8 (40.0.8): value 870
+- 40.0.7 (40.0.7): value 1941
+- 40.0.5 (40.0.5): value 23
+- 40.0.4 (40.0.4): value 19
+- 40.0.3 (40.0.3): value 2
+- 40.0.2 (40.0.2): value 97400
+- 40.0.1 (40.0.1): value 27100
+- 40.0.0 (40.0.0): value 1900
+- 1.80.7 (disk.dev.total):
++[588 bytes]
++14:25:12.206 1.80.7 (disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818705570
+ inst [131330 or "dks1d2"] value 2818573273
+ inst [131331 or "dks1d3"] value 2818576430
+@@ -289,14 +220,6 @@
+ inst [131844 or "dks3d4"] value 2818591226
+ inst [132097 or "dks4d1"] value 2818573658
+ inst [132098 or "dks4d2"] value 2818577376
+- 1.25.12 (network.interface.out.bytes):
+- inst [1 or "et0"] value 6705922
+- inst [2 or "lo0"] value 13174828
+- inst [3 or "sl0"] value 1144492
+- 1.25.7 (network.interface.in.bytes):
+- inst [1 or "et0"] value 53311220
+- inst [2 or "lo0"] value 13174828
+- inst [3 or "sl0"] value 38786
+ 1.18.3 (kernel.all.load):
+ inst [1 or "1 minute"] value 0.32226562
+ inst [5 or "5 minute"] value 0.1640625
+@@ -316,16 +239,8 @@
+ 1.10.7 (kernel.all.cpu.idle): value 4274432136
+ 1.10.3 (kernel.all.pswitch): value 4564693
+
+-[820 bytes]
+-14:25:14.181 40.0.8 (40.0.8): value 870
+- 40.0.7 (40.0.7): value 2124
+- 40.0.5 (40.0.5): value 29
+- 40.0.4 (40.0.4): value 23
+- 40.0.3 (40.0.3): value 3
+- 40.0.2 (40.0.2): value 97600
+- 40.0.1 (40.0.1): value 28600
+- 40.0.0 (40.0.0): value 2200
+- 1.80.7 (disk.dev.total):
++[588 bytes]
++14:25:14.181 1.80.7 (disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818705571
+ inst [131330 or "dks1d2"] value 2818573273
+ inst [131331 or "dks1d3"] value 2818576430
+@@ -355,14 +270,6 @@
+ inst [131844 or "dks3d4"] value 2818591226
+ inst [132097 or "dks4d1"] value 2818573658
+ inst [132098 or "dks4d2"] value 2818577559
+- 1.25.12 (network.interface.out.bytes):
+- inst [1 or "et0"] value 6706042
+- inst [2 or "lo0"] value 13178281
+- inst [3 or "sl0"] value 1144507
+- 1.25.7 (network.interface.in.bytes):
+- inst [1 or "et0"] value 53311982
+- inst [2 or "lo0"] value 13178281
+- inst [3 or "sl0"] value 38791
+ 1.18.3 (kernel.all.load):
+ inst [1 or "1 minute"] value 0.36523438
+ inst [5 or "5 minute"] value 0.17480469
+@@ -382,16 +289,8 @@
+ 1.10.7 (kernel.all.cpu.idle): value 4274433496
+ 1.10.3 (kernel.all.pswitch): value 4565347
+
+-[820 bytes]
+-14:25:16.183 40.0.8 (40.0.8): value 873
+- 40.0.7 (40.0.7): value 2312
+- 40.0.5 (40.0.5): value 30
+- 40.0.4 (40.0.4): value 25
+- 40.0.3 (40.0.3): value 3
+- 40.0.2 (40.0.2): value 97600
+- 40.0.1 (40.0.1): value 30500
+- 40.0.0 (40.0.0): value 2300
+- 1.80.7 (disk.dev.total):
++[588 bytes]
++14:25:16.183 1.80.7 (disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818705571
+ inst [131330 or "dks1d2"] value 2818573273
+ inst [131331 or "dks1d3"] value 2818576430
+@@ -421,14 +320,6 @@
+ inst [131844 or "dks3d4"] value 2818591226
+ inst [132097 or "dks4d1"] value 2818573658
+ inst [132098 or "dks4d2"] value 2818577747
+- 1.25.12 (network.interface.out.bytes):
+- inst [1 or "et0"] value 6706282
+- inst [2 or "lo0"] value 13180515
+- inst [3 or "sl0"] value 1144507
+- 1.25.7 (network.interface.in.bytes):
+- inst [1 or "et0"] value 53314246
+- inst [2 or "lo0"] value 13180515
+- inst [3 or "sl0"] value 38843
+ 1.18.3 (kernel.all.load):
+ inst [1 or "1 minute"] value 0.36523438
+ inst [5 or "5 minute"] value 0.17480469
+@@ -448,16 +339,8 @@
+ 1.10.7 (kernel.all.cpu.idle): value 4274434256
+ 1.10.3 (kernel.all.pswitch): value 4566026
+
+-[820 bytes]
+-14:25:18.175 40.0.8 (40.0.8): value 907
+- 40.0.7 (40.0.7): value 2378
+- 40.0.5 (40.0.5): value 39
+- 40.0.4 (40.0.4): value 43
+- 40.0.3 (40.0.3): value 3
+- 40.0.2 (40.0.2): value 97800
+- 40.0.1 (40.0.1): value 32200
+- 40.0.0 (40.0.0): value 2400
+- 1.80.7 (disk.dev.total):
++[588 bytes]
++14:25:18.175 1.80.7 (disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818705571
+ inst [131330 or "dks1d2"] value 2818573273
+ inst [131331 or "dks1d3"] value 2818576430
+@@ -487,14 +370,6 @@
+ inst [131844 or "dks3d4"] value 2818591226
+ inst [132097 or "dks4d1"] value 2818573658
+ inst [132098 or "dks4d2"] value 2818577813
+- 1.25.12 (network.interface.out.bytes):
+- inst [1 or "et0"] value 6706368
+- inst [2 or "lo0"] value 13191160
+- inst [3 or "sl0"] value 1150091
+- 1.25.7 (network.interface.in.bytes):
+- inst [1 or "et0"] value 53314246
+- inst [2 or "lo0"] value 13191160
+- inst [3 or "sl0"] value 38843
+ 1.18.3 (kernel.all.load):
+ inst [1 or "1 minute"] value 0.46972656
+ inst [5 or "5 minute"] value 0.19921875
+@@ -514,16 +389,8 @@
+ 1.10.7 (kernel.all.cpu.idle): value 4274436636
+ 1.10.3 (kernel.all.pswitch): value 4566488
+
+-[820 bytes]
+-14:25:20.177 40.0.8 (40.0.8): value 941
+- 40.0.7 (40.0.7): value 2436
+- 40.0.5 (40.0.5): value 50
+- 40.0.4 (40.0.4): value 64
+- 40.0.3 (40.0.3): value 3
+- 40.0.2 (40.0.2): value 98000
+- 40.0.1 (40.0.1): value 33700
+- 40.0.0 (40.0.0): value 2700
+- 1.80.7 (disk.dev.total):
++[588 bytes]
++14:25:20.177 1.80.7 (disk.dev.total):
+ inst [131329 or "dks1d1"] value 2818705571
+ inst [131330 or "dks1d2"] value 2818573273
+ inst [131331 or "dks1d3"] value 2818576430
+@@ -553,14 +420,6 @@
+ inst [131844 or "dks3d4"] value 2818591226
+ inst [132097 or "dks4d1"] value 2818573658
+ inst [132098 or "dks4d2"] value 2818577871
+- 1.25.12 (network.interface.out.bytes):
+- inst [1 or "et0"] value 6706608
+- inst [2 or "lo0"] value 13203131
+- inst [3 or "sl0"] value 1151094
+- 1.25.7 (network.interface.in.bytes):
+- inst [1 or "et0"] value 53317642
+- inst [2 or "lo0"] value 13203131
+- inst [3 or "sl0"] value 38843
+ 1.18.3 (kernel.all.load):
+ inst [1 or "1 minute"] value 0.46972656
+ inst [5 or "5 minute"] value 0.19921875
+
+=== indom 29.3 { iname "m-00" -> delete inst 33 -> delete } ===
+--- pmns diffs ---
+--- pmdumplog diffs ---
+--- TMP.in
++++ TMP.out
+@@ -38,28 +38,24 @@
+ 800 or "bin-800"
+ 900 or "bin-900"
+ InDom: 29.3
+-10:46:07.406 5 instances
+- 0 or "m-00"
++10:46:07.406 4 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 14 or "m-14"
+ 15 or "m-15"
+-10:47:07.419 5 instances
+- 0 or "m-00"
++10:47:07.419 4 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+ 16 or "m-16"
+-10:48:07.406 7 instances
+- 0 or "m-00"
++10:48:07.406 6 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+ 16 or "m-16"
+ 17 or "m-17"
+ 18 or "m-18"
+-10:49:07.407 8 instances
+- 0 or "m-00"
++10:49:07.407 7 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+@@ -67,8 +63,7 @@
+ 18 or "m-18"
+ 19 or "m-19"
+ 20 or "m-20"
+-10:50:07.407 8 instances
+- 0 or "m-00"
++10:50:07.407 7 instances
+ 12 or "m-12"
+ 15 or "m-15"
+ 17 or "m-17"
+@@ -76,23 +71,20 @@
+ 19 or "m-19"
+ 20 or "m-20"
+ 21 or "m-21"
+-10:51:07.407 6 instances
+- 0 or "m-00"
++10:51:07.407 5 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+-10:53:07.408 7 instances
+- 0 or "m-00"
++10:53:07.408 6 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+-10:54:07.408 8 instances
+- 0 or "m-00"
++10:54:07.408 7 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+@@ -100,80 +92,67 @@
+ 21 or "m-21"
+ 22 or "m-22"
+ 23 or "m-23"
+-10:55:07.409 7 instances
+- 0 or "m-00"
++10:55:07.409 6 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 19 or "m-19"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+-10:56:07.409 6 instances
+- 0 or "m-00"
++10:56:07.409 5 instances
+ 17 or "m-17"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 25 or "m-25"
+-10:57:07.409 5 instances
+- 0 or "m-00"
++10:57:07.409 4 instances
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 25 or "m-25"
+-10:58:07.409 5 instances
+- 0 or "m-00"
++10:58:07.409 4 instances
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 26 or "m-26"
+-10:59:07.410 7 instances
+- 0 or "m-00"
++10:59:07.410 6 instances
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+-11:00:07.410 6 instances
+- 0 or "m-00"
++11:00:07.410 5 instances
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+ 29 or "m-29"
+-11:01:07.410 5 instances
+- 0 or "m-00"
++11:01:07.410 4 instances
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+-11:02:07.411 5 instances
+- 0 or "m-00"
++11:02:07.411 4 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 28 or "m-28"
+ 30 or "m-30"
+-11:03:07.411 6 instances
+- 0 or "m-00"
++11:03:07.411 5 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 28 or "m-28"
+ 30 or "m-30"
+ 31 or "m-31"
+-11:04:07.411 6 instances
+- 0 or "m-00"
++11:04:07.411 4 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 30 or "m-30"
+ 32 or "m-32"
+- 33 or "m-33"
+-11:05:07.411 5 instances
+- 0 or "m-00"
++11:05:07.411 3 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 30 or "m-30"
+- 33 or "m-33"
+ InDom: 2.1
+ 10:45:08.440 1 instances
+ 24763 or "24763"
+@@ -182,33 +161,32 @@
+ Log Vol end(meta) end(log)
+ 10:45:08.440 0 132 132
+ 10:46:07.406 0 351 288
+-10:47:07.419 0 771 464
+-10:48:07.406 0 864 640
+-10:49:07.407 0 983 832
+-10:50:07.407 0 1115 1032
+-10:51:07.407 0 1247 1232
+-10:53:07.408 0 1353 1600
+-10:54:07.408 0 1472 1792
+-10:55:07.409 0 1604 1992
+-10:56:07.409 0 1723 2184
+-10:57:07.409 0 1829 2368
+-10:58:07.409 0 1922 2544
+-10:59:07.410 0 2015 2720
+-11:00:07.410 0 2134 2912
+-11:01:07.410 0 2240 3096
+-11:02:07.411 0 2333 3272
+-11:03:07.411 0 2426 3448
+-11:04:07.411 0 2532 3632
+-11:05:07.411 0 2638 3816
++10:47:07.419 0 758 456
++10:48:07.406 0 838 624
++10:49:07.407 0 944 808
++10:50:07.407 0 1063 1000
++10:51:07.407 0 1182 1192
++10:53:07.408 0 1275 1544
++10:54:07.408 0 1381 1728
++10:55:07.409 0 1500 1920
++10:56:07.409 0 1606 2104
++10:57:07.409 0 1699 2280
++10:58:07.409 0 1779 2448
++10:59:07.410 0 1859 2616
++11:00:07.410 0 1965 2800
++11:01:07.410 0 2058 2976
++11:02:07.411 0 2138 3144
++11:03:07.411 0 2218 3312
++11:04:07.411 0 2311 3488
++11:05:07.411 0 2391 3656
+
+ [156 bytes]
+ 10:45:08.440 2.3.3 (pmcd.pmlogger.host): inst [24763 or "24763"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [24763 or "24763"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [24763 or "24763"] value "/usr/people/kenmcd/isms/pcp/qa/src/mirage"
+
+-[176 bytes]
++[168 bytes]
+ 10:46:07.406 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 32
+ inst [12 or "m-12"] value 1231
+ inst [13 or "m-13"] value 1330
+ inst [14 or "m-14"] value 1429
+@@ -225,9 +203,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[168 bytes]
+ 10:47:07.419 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 27
+ inst [12 or "m-12"] value 1226
+ inst [13 or "m-13"] value 1325
+ inst [15 or "m-15"] value 1524
+@@ -244,9 +221,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[184 bytes]
+ 10:48:07.406 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 22
+ inst [12 or "m-12"] value 1221
+ inst [13 or "m-13"] value 1320
+ inst [15 or "m-15"] value 1519
+@@ -265,9 +241,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[200 bytes]
++[192 bytes]
+ 10:49:07.407 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 15
+ inst [12 or "m-12"] value 1214
+ inst [13 or "m-13"] value 1313
+ inst [15 or "m-15"] value 1512
+@@ -287,9 +262,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[200 bytes]
++[192 bytes]
+ 10:50:07.407 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 7
+ inst [12 or "m-12"] value 1206
+ inst [15 or "m-15"] value 1505
+ inst [17 or "m-17"] value 1704
+@@ -309,9 +283,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[176 bytes]
+ 10:51:07.407 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+ inst [15 or "m-15"] value 1598
+ inst [17 or "m-17"] value 1797
+ inst [18 or "m-18"] value 1896
+@@ -329,9 +302,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[176 bytes]
+ 10:52:07.407 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 93
+ inst [15 or "m-15"] value 1592
+ inst [17 or "m-17"] value 1791
+ inst [18 or "m-18"] value 1890
+@@ -349,9 +321,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[184 bytes]
+ 10:53:07.408 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 87
+ inst [15 or "m-15"] value 1586
+ inst [17 or "m-17"] value 1785
+ inst [18 or "m-18"] value 1884
+@@ -370,9 +341,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[200 bytes]
++[192 bytes]
+ 10:54:07.408 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 80
+ inst [15 or "m-15"] value 1579
+ inst [17 or "m-17"] value 1778
+ inst [18 or "m-18"] value 1877
+@@ -392,9 +362,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[184 bytes]
+ 10:55:07.409 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 72
+ inst [15 or "m-15"] value 1571
+ inst [17 or "m-17"] value 1770
+ inst [19 or "m-19"] value 1969
+@@ -413,9 +382,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[176 bytes]
+ 10:56:07.409 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 65
+ inst [17 or "m-17"] value 1764
+ inst [22 or "m-22"] value 2263
+ inst [23 or "m-23"] value 2362
+@@ -433,9 +401,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[168 bytes]
+ 10:57:07.409 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 59
+ inst [22 or "m-22"] value 2258
+ inst [23 or "m-23"] value 2357
+ inst [24 or "m-24"] value 2456
+@@ -452,9 +419,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[168 bytes]
+ 10:58:07.409 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 54
+ inst [22 or "m-22"] value 2253
+ inst [23 or "m-23"] value 2352
+ inst [24 or "m-24"] value 2451
+@@ -471,9 +437,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[192 bytes]
++[184 bytes]
+ 10:59:07.410 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 49
+ inst [22 or "m-22"] value 2248
+ inst [23 or "m-23"] value 2347
+ inst [24 or "m-24"] value 2446
+@@ -492,9 +457,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[176 bytes]
+ 11:00:07.410 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 42
+ inst [24 or "m-24"] value 2441
+ inst [26 or "m-26"] value 2640
+ inst [27 or "m-27"] value 2739
+@@ -512,9 +476,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[168 bytes]
+ 11:01:07.410 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 36
+ inst [24 or "m-24"] value 2435
+ inst [26 or "m-26"] value 2634
+ inst [27 or "m-27"] value 2733
+@@ -531,9 +494,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[168 bytes]
+ 11:02:07.411 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 31
+ inst [24 or "m-24"] value 2430
+ inst [27 or "m-27"] value 2729
+ inst [28 or "m-28"] value 2828
+@@ -550,9 +512,8 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[176 bytes]
+ 11:03:07.411 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 26
+ inst [24 or "m-24"] value 2425
+ inst [27 or "m-27"] value 2724
+ inst [28 or "m-28"] value 2823
+@@ -570,14 +531,12 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[184 bytes]
++[168 bytes]
+ 11:04:07.411 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 20
+ inst [24 or "m-24"] value 2419
+ inst [27 or "m-27"] value 2718
+ inst [30 or "m-30"] value 3017
+ inst [32 or "m-32"] value 3216
+- inst [33 or "m-33"] value 3315
+ 29.0.7 (sample.drift): value 242
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+@@ -590,13 +549,11 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+-[176 bytes]
++[160 bytes]
+ 11:05:07.411 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 14
+ inst [24 or "m-24"] value 2413
+ inst [27 or "m-27"] value 2712
+ inst [30 or "m-30"] value 3011
+- inst [33 or "m-33"] value 3310
+ 29.0.7 (sample.drift): value 208
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
diff --git a/qa/489 b/qa/489
new file mode 100755
index 0000000..b1217cc
--- /dev/null
+++ b/qa/489
@@ -0,0 +1,105 @@
+#!/bin/sh
+# PCP QA Test No. 489
+# exercise pmdaCacheStoreKey()
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "$sudo rm -f $tmp.* $PCP_VAR_DIR/config/pmda/42.42; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for arg in -k '' -d '-l -Dindom' -dk '-l -Dindom'
+do
+ echo | tee -a $seq.full
+ echo "=== keycache $arg ===" | tee -a $seq.full
+
+ case "$arg"
+ in
+ -l*)
+ ;;
+ *)
+ $sudo rm -f $PCP_VAR_DIR/config/pmda/42.42
+ ;;
+ esac
+
+ $sudo src/keycache $arg >$tmp.out 2>&1
+ cat $tmp.out >>$seq.full
+
+ case "$arg"
+ in
+ -l*)
+ ;;
+ *)
+ echo "First few lines of output ..."
+ head -20 $tmp.out
+ echo
+ echo "Duplicate instance ids ... expect none"
+ sed -n <$tmp.out \
+ -e '/pmdaCacheDump:/q' \
+ -e '/active 0x0/s//active (nil)/' \
+ -e '/ -> /s/ -> .*//p' \
+ | sort \
+ | uniq -c \
+ | grep -v ' 1 '
+ ;;
+ esac
+
+ case "$arg"
+ in
+ -d*|-l*)
+ $PCP_AWK_PROG <$tmp.out '
+/pmdaCacheDump:/ { want = 1 }
+want == 1 { print }' \
+ | sed -e '/active 0x0/s//active (nil)/'
+ ;;
+
+ *)
+ echo
+ echo "Check distribution ..."
+ $PCP_AWK_PROG <$tmp.out '
+/Instances distribution across/ { want=1
+ nb = $4
+ if ($4 <= 8) {
+ minp = 0.95 * (1 / nb)
+ maxp = 1.05 * (1 / nb)
+ }
+ else if ($4 <= 16) {
+ minp = 0.90 * (1 / nb)
+ maxp = 1.10 * (1 / nb)
+ }
+ else if ($4 <= 64) {
+ minp = 0.80 * (1 / nb)
+ maxp = 1.20 * (1 / nb)
+ }
+ else {
+ minp = 0.75 * (1 / nb)
+ maxp = 1.25 * (1 / nb)
+ }
+ print
+ next
+ }
+want == 1 && NF == 0 { want = 0 }
+want == 1 { for (i = 1; i <= NF; i++) {
+ if (minp <= $i && $i <= maxp)
+ printf "OK "
+ else
+ printf "%s not in (%.4f,%.4f) ",$i,minp,maxp
+ }
+ print ""
+ }'
+ ;;
+ esac
+ done
+
+# success, all done
+exit
diff --git a/qa/489.out b/qa/489.out
new file mode 100644
index 0000000..102cf3a
--- /dev/null
+++ b/qa/489.out
@@ -0,0 +1,1255 @@
+QA output created by 489
+
+=== keycache -k ===
+First few lines of output ...
+798265046 <- 00000001 [1]
+66508106 <- 00000001-00000000 [1,0]
+1458452509 <- 00000001-00000000-00000001 [1,0,1]
+882072506 <- 00000200 [512]
+1516345269 <- 00000201-00000000 [513,0]
+485329926 <- 00000202-00000000-00000002 [514,0,2]
+1796761234 <- 00030000 [196608]
+1517891037 <- 00030100-00000000 [196864,0]
+1356972298 <- 00030200-00000000-00000003 [197120,0,3]
+2024943138 <- 00040000 [262144]
+1050683523 <- 00040100-00000000 [262400,0]
+1686827816 <- 00040200-00000000-00000004 [262656,0,4]
+1530243159 <- 00050000 [327680]
+1787676013 <- 00050100-00000000 [327936,0]
+1192327124 <- 00050200-00000000-00000005 [328192,0,5]
+2118445150 <- 00060000 [393216]
+1100993567 <- 00060100-00000000 [393472,0]
+79349462 <- 00060200-00000000-00000006 [393728,0,6]
+1536181399 <- 00070000 [458752]
+1592173166 <- 00070100-00000000 [459008,0]
+
+Duplicate instance ids ... expect none
+
+Check distribution ...
+Instances distribution across 128 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK
+Instances distribution across 64 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK
+Instances distribution across 32 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK
+Instances distribution across 16 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK
+Instances distribution across 8 bins
+OK OK OK OK OK OK OK OK
+Instances distribution across 4 bins
+OK OK OK OK
+Instances distribution across 2 bins
+OK OK
+
+=== keycache ===
+First few lines of output ...
+989848592 <- 00000001
+762349241 <- 00000001-00000000
+1877076652 <- 00000001-00000000-00000001
+889580974 <- 00000200
+376688350 <- 00000201-00000000
+208875623 <- 00000202-00000000-00000002
+176531567 <- 00030000
+1919029358 <- 00030100-00000000
+1251034461 <- 00030200-00000000-00000003
+1383412283 <- 00040000
+953731550 <- 00040100-00000000
+1187183495 <- 00040200-00000000-00000004
+254920240 <- 00050000
+1385074588 <- 00050100-00000000
+2006689661 <- 00050200-00000000-00000005
+1257270562 <- 00060000
+1601853572 <- 00060100-00000000
+846454853 <- 00060200-00000000-00000006
+1899941349 <- 00070000
+1680185491 <- 00070100-00000000
+
+Duplicate instance ids ... expect none
+
+Check distribution ...
+Instances distribution across 128 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK
+Instances distribution across 64 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK
+Instances distribution across 32 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK OK OK OK OK
+OK OK
+Instances distribution across 16 bins
+OK OK OK OK OK OK OK OK OK OK
+OK OK OK OK OK OK
+Instances distribution across 8 bins
+OK OK OK OK OK OK OK OK
+Instances distribution across 4 bins
+OK OK OK OK
+Instances distribution across 2 bins
+OK OK
+
+=== keycache -d ===
+First few lines of output ...
+989848592 <- 00000001
+608931894 <- 00000001-0000
+608931894 <- 00000001-0000
+889580974 <- 00000200
+1592078974 <- 00000201-0000
+1916263269 <- 00000202-0000
+176531567 <- 00030000
+852259633 <- 00030100-0000
+1660560434 <- 00030200-0000
+764859324 <- 00000101
+1512898519 <- 00000101-0000
+1512898519 <- 00000101-0000
+2021473012 <- 00010200
+1763902175 <- 00010201-0000
+1081505025 <- 00010202-0000
+257255419 <- 01030001
+240779825 <- 01030101-0000
+795844907 <- 01030201-0000
+306260587 <- 00000201
+1592078974 <- 00000201-0000
+
+Duplicate instance ids ... expect none
+pmdaCacheDump: indom 42.42: nentry=31 ins_mode=1 hstate=3 hsize=16
+ 176531567 active (nil) 00030000 [key=0x3030303330303030]
+ 240779825 active (nil) 01030101-0000 [key=0x30313033303130312d30303030]
+ 257255419 active (nil) 01030001 [key=0x3031303330303031]
+ 306260587 active (nil) 00000201 [key=0x3030303030323031]
+ 384254102 active (nil) 02030202-0000 [key=0x30323033303230322d30303030]
+ 392010465 active (nil) 00020201-0000 [key=0x30303032303230312d30303030]
+ 467540531 active (nil) 00000301-0000 [key=0x30303030303330312d30303030]
+ 608931894 active (nil) 00000001-0000 [key=0x30303030303030312d30303030]
+ 764859324 active (nil) 00000101 [key=0x3030303030313031]
+ 795844907 active (nil) 01030201-0000 [key=0x30313033303230312d30303030]
+ 800932624 active (nil) 00030201-0000 [key=0x30303033303230312d30303030]
+ 833786884 active (nil) 02030002 [key=0x3032303330303032]
+ 852259633 active (nil) 00030100-0000 [key=0x30303033303130302d30303030]
+ 889580974 active (nil) 00000200 [key=0x3030303030323030]
+ 989848592 active (nil) 00000001 [key=0x3030303030303031]
+ 1000344165 active (nil) 00020202-0000 [key=0x30303032303230322d30303030]
+ 1081505025 active (nil) 00010202-0000 [key=0x30303031303230322d30303030]
+ 1189137991 active (nil) 02030102-0000 [key=0x30323033303130322d30303030]
+ 1201067067 active (nil) 00020200 [key=0x3030303230323030]
+ 1434806112 active (nil) 03030203-0000 [key=0x30333033303230332d30303030]
+ 1512898519 active (nil) 00000101-0000 [key=0x30303030303130312d30303030]
+ 1536865381 active (nil) 03030103-0000 [key=0x30333033303130332d30303030]
+ 1592078974 active (nil) 00000201-0000 [key=0x30303030303230312d30303030]
+ 1660560434 active (nil) 00030200-0000 [key=0x30303033303230302d30303030]
+ 1763902175 active (nil) 00010201-0000 [key=0x30303031303230312d30303030]
+ 1916263269 active (nil) 00000202-0000 [key=0x30303030303230322d30303030]
+ 1947754439 active (nil) 00000301 [key=0x3030303030333031]
+ 1964458110 active (nil) 00030202-0000 [key=0x30303033303230322d30303030]
+ 2009833716 active (nil) 00030200 [key=0x3030303330323030]
+ 2021473012 active (nil) 00010200 [key=0x3030303130323030]
+ 2041836956 active (nil) 03030003 [key=0x3033303330303033]
+pmdaCacheStoreKey hash stats ...
+hash once: 31 times
+inst hash
+ [000] -> 1434806112 -> 800932624 -> 989848592
+ [001] -> 392010465 -> 240779825 -> 1081505025 -> 852259633
+ [002] -> 1660560434
+ [003] -> 467540531
+ [004] -> 2009833716 -> 833786884 -> 2021473012
+ [005] -> 1536865381 -> 1000344165 -> 1916263269
+ [006] -> 384254102 -> 608931894
+ [007] -> 1947754439 -> 1189137991 -> 1512898519
+ [008]
+ [009]
+ [010]
+ [011] -> 1201067067 -> 306260587 -> 795844907 -> 257255419
+ [012] -> 2041836956 -> 764859324
+ [013]
+ [014] -> 1964458110 -> 1592078974 -> 889580974
+ [015] -> 1763902175 -> 176531567
+name hash
+ [000] -> 1434806112 -> 800932624 -> 989848592
+ [001] -> 392010465 -> 240779825 -> 1081505025 -> 852259633
+ [002] -> 1660560434
+ [003] -> 467540531
+ [004] -> 2009833716 -> 833786884 -> 2021473012
+ [005] -> 1536865381 -> 1000344165 -> 1916263269
+ [006] -> 384254102 -> 608931894
+ [007] -> 1947754439 -> 1189137991 -> 1512898519
+ [008]
+ [009]
+ [010]
+ [011] -> 1201067067 -> 306260587 -> 795844907 -> 257255419
+ [012] -> 2041836956 -> 764859324
+ [013]
+ [014] -> 1964458110 -> 1592078974 -> 889580974
+ [015] -> 1763902175 -> 176531567
+
+=== keycache -l -Dindom ===
+pmdaCacheDump: indom 42.42: nentry=31 ins_mode=1 hstate=0 hsize=16
+ 176531567 inactive (nil) 00030000 [key=0x3030303330303030]
+ 240779825 inactive (nil) 01030101-0000 [key=0x30313033303130312d30303030]
+ 257255419 inactive (nil) 01030001 [key=0x3031303330303031]
+ 306260587 inactive (nil) 00000201 [key=0x3030303030323031]
+ 384254102 inactive (nil) 02030202-0000 [key=0x30323033303230322d30303030]
+ 392010465 inactive (nil) 00020201-0000 [key=0x30303032303230312d30303030]
+ 467540531 inactive (nil) 00000301-0000 [key=0x30303030303330312d30303030]
+ 608931894 inactive (nil) 00000001-0000 [key=0x30303030303030312d30303030]
+ 764859324 inactive (nil) 00000101 [key=0x3030303030313031]
+ 795844907 inactive (nil) 01030201-0000 [key=0x30313033303230312d30303030]
+ 800932624 inactive (nil) 00030201-0000 [key=0x30303033303230312d30303030]
+ 833786884 inactive (nil) 02030002 [key=0x3032303330303032]
+ 852259633 inactive (nil) 00030100-0000 [key=0x30303033303130302d30303030]
+ 889580974 inactive (nil) 00000200 [key=0x3030303030323030]
+ 989848592 inactive (nil) 00000001 [key=0x3030303030303031]
+ 1000344165 inactive (nil) 00020202-0000 [key=0x30303032303230322d30303030]
+ 1081505025 inactive (nil) 00010202-0000 [key=0x30303031303230322d30303030]
+ 1189137991 inactive (nil) 02030102-0000 [key=0x30323033303130322d30303030]
+ 1201067067 inactive (nil) 00020200 [key=0x3030303230323030]
+ 1434806112 inactive (nil) 03030203-0000 [key=0x30333033303230332d30303030]
+ 1512898519 inactive (nil) 00000101-0000 [key=0x30303030303130312d30303030]
+ 1536865381 inactive (nil) 03030103-0000 [key=0x30333033303130332d30303030]
+ 1592078974 inactive (nil) 00000201-0000 [key=0x30303030303230312d30303030]
+ 1660560434 inactive (nil) 00030200-0000 [key=0x30303033303230302d30303030]
+ 1763902175 inactive (nil) 00010201-0000 [key=0x30303031303230312d30303030]
+ 1916263269 inactive (nil) 00000202-0000 [key=0x30303030303230322d30303030]
+ 1947754439 inactive (nil) 00000301 [key=0x3030303030333031]
+ 1964458110 inactive (nil) 00030202-0000 [key=0x30303033303230322d30303030]
+ 2009833716 inactive (nil) 00030200 [key=0x3030303330323030]
+ 2021473012 inactive (nil) 00010200 [key=0x3030303130323030]
+ 2041836956 inactive (nil) 03030003 [key=0x3033303330303033]
+Cache loaded ...
+pmdaCacheDump: indom 42.42: nentry=31 ins_mode=1 hstate=0 hsize=16
+ 176531567 inactive (nil) 00030000 [key=0x3030303330303030]
+ 240779825 inactive (nil) 01030101-0000 [key=0x30313033303130312d30303030]
+ 257255419 inactive (nil) 01030001 [key=0x3031303330303031]
+ 306260587 inactive (nil) 00000201 [key=0x3030303030323031]
+ 384254102 inactive (nil) 02030202-0000 [key=0x30323033303230322d30303030]
+ 392010465 inactive (nil) 00020201-0000 [key=0x30303032303230312d30303030]
+ 467540531 inactive (nil) 00000301-0000 [key=0x30303030303330312d30303030]
+ 608931894 inactive (nil) 00000001-0000 [key=0x30303030303030312d30303030]
+ 764859324 inactive (nil) 00000101 [key=0x3030303030313031]
+ 795844907 inactive (nil) 01030201-0000 [key=0x30313033303230312d30303030]
+ 800932624 inactive (nil) 00030201-0000 [key=0x30303033303230312d30303030]
+ 833786884 inactive (nil) 02030002 [key=0x3032303330303032]
+ 852259633 inactive (nil) 00030100-0000 [key=0x30303033303130302d30303030]
+ 889580974 inactive (nil) 00000200 [key=0x3030303030323030]
+ 989848592 inactive (nil) 00000001 [key=0x3030303030303031]
+ 1000344165 inactive (nil) 00020202-0000 [key=0x30303032303230322d30303030]
+ 1081505025 inactive (nil) 00010202-0000 [key=0x30303031303230322d30303030]
+ 1189137991 inactive (nil) 02030102-0000 [key=0x30323033303130322d30303030]
+ 1201067067 inactive (nil) 00020200 [key=0x3030303230323030]
+ 1434806112 inactive (nil) 03030203-0000 [key=0x30333033303230332d30303030]
+ 1512898519 inactive (nil) 00000101-0000 [key=0x30303030303130312d30303030]
+ 1536865381 inactive (nil) 03030103-0000 [key=0x30333033303130332d30303030]
+ 1592078974 inactive (nil) 00000201-0000 [key=0x30303030303230312d30303030]
+ 1660560434 inactive (nil) 00030200-0000 [key=0x30303033303230302d30303030]
+ 1763902175 inactive (nil) 00010201-0000 [key=0x30303031303230312d30303030]
+ 1916263269 inactive (nil) 00000202-0000 [key=0x30303030303230322d30303030]
+ 1947754439 inactive (nil) 00000301 [key=0x3030303030333031]
+ 1964458110 inactive (nil) 00030202-0000 [key=0x30303033303230322d30303030]
+ 2009833716 inactive (nil) 00030200 [key=0x3030303330323030]
+ 2021473012 inactive (nil) 00010200 [key=0x3030303130323030]
+ 2041836956 inactive (nil) 03030003 [key=0x3033303330303033]
+pmdaCacheStoreKey: indom 42.42: instance "00000001" (989848592) in cache [key=0x3030303030303031] does not match new entry [key=0x00000001]
+-12360 <- 00000001 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+989848592 <- 00000001
+798265046 <- 00000001-00000000 [1]
+608931894 <- 00000001-0000
+pmdaCacheStoreKey: indom 42.42: instance 798265046 [key=0x00000001] in cache, name "00000001-00000000" does not match new entry "00000001-00000000-00000001"
+-12360 <- 00000001-00000000-00000001 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+608931894 <- 00000001-0000
+pmdaCacheStoreKey: indom 42.42: instance 798265046 [key=0x00000001] in cache, name "00000001-00000000" does not match new entry "00000001-00000000-00000001-00000003"
+-12360 <- 00000001-00000000-00000001-00000003 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+608931894 <- 00000001-0000
+pmdaCacheStoreKey: indom 42.42: instance "00000200" (889580974) in cache [key=0x3030303030323030] does not match new entry [key=0x00000200]
+-12360 <- 00000200 [512]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+889580974 <- 00000200
+341902007 <- 00000201-00000000 [513]
+1592078974 <- 00000201-0000
+1479979693 <- 00000202-00000000-00000002 [514]
+1916263269 <- 00000202-0000
+1169240636 <- 00000203-00000000-00000002-00000003 [515]
+973029041 <- 00000203-0000
+pmdaCacheStoreKey: indom 42.42: instance "00030000" (176531567) in cache [key=0x3030303330303030] does not match new entry [key=0x00030000]
+-12360 <- 00030000 [196608]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+176531567 <- 00030000
+1974874486 <- 00030100-00000000 [196864]
+852259633 <- 00030100-0000
+1630861860 <- 00030200-00000000-00000003 [197120]
+1660560434 <- 00030200-0000
+754588963 <- 00030300-00000000-00000003-00000003 [197376]
+1335783113 <- 00030300-0000
+2024943138 <- 00040000 [262144]
+pmdaCacheStoreKey: indom 42.42: instance "00040000" (2024943138) in cache [key=0x00040000] does not match new entry [key=0x3030303430303030]
+-12360 <- 00040000
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+2137944949 <- 00040100-00000000 [262400]
+602762181 <- 00040100-0000
+64710806 <- 00040200-00000000-00000004 [262656]
+412123725 <- 00040200-0000
+1602785539 <- 00040300-00000000-00000004-00000003 [262912]
+1167330940 <- 00040300-0000
+pmdaCacheStoreKey: indom 42.42: instance "00000101" (764859324) in cache [key=0x3030303030313031] does not match new entry [key=0x00000101]
+-12360 <- 00000101 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+764859324 <- 00000101
+1623404338 <- 00000101-00000001 [257]
+1512898519 <- 00000101-0000
+pmdaCacheStoreKey: indom 42.42: instance 1623404338 [key=0x00000101] in cache, name "00000101-00000001" does not match new entry "00000101-00000001-00000001"
+-12360 <- 00000101-00000001-00000001 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1512898519 <- 00000101-0000
+pmdaCacheStoreKey: indom 42.42: instance 1623404338 [key=0x00000101] in cache, name "00000101-00000001" does not match new entry "00000101-00000001-00000001-00000003"
+-12360 <- 00000101-00000001-00000001-00000003 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1512898519 <- 00000101-0000
+pmdaCacheStoreKey: indom 42.42: instance "00010200" (2021473012) in cache [key=0x3030303130323030] does not match new entry [key=0x00010200]
+-12360 <- 00010200 [66048]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+2021473012 <- 00010200
+1144050900 <- 00010201-00000001 [66049]
+1763902175 <- 00010201-0000
+165131426 <- 00010202-00000001-00000002 [66050]
+1081505025 <- 00010202-0000
+35439323 <- 00010203-00000001-00000002-00000003 [66051]
+1699628683 <- 00010203-0000
+pmdaCacheStoreKey: indom 42.42: instance "01030001" (257255419) in cache [key=0x3031303330303031] does not match new entry [key=0x01030001]
+-12360 <- 01030001 [16973825]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+257255419 <- 01030001
+790162309 <- 01030101-00000001 [16974081]
+240779825 <- 01030101-0000
+1861545753 <- 01030201-00000001-00000003 [16974337]
+795844907 <- 01030201-0000
+966032096 <- 01030301-00000001-00000003-00000003 [16974593]
+104588964 <- 01030301-0000
+967182805 <- 01040001 [17039361]
+pmdaCacheStoreKey: indom 42.42: instance "01040001" (967182805) in cache [key=0x01040001] does not match new entry [key=0x3031303430303031]
+-12360 <- 01040001
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1347419426 <- 01040101-00000001 [17039617]
+784897958 <- 01040101-0000
+582252600 <- 01040201-00000001-00000004 [17039873]
+2043483434 <- 01040201-0000
+1708643668 <- 01040301-00000001-00000004-00000003 [17040129]
+582316426 <- 01040301-0000
+pmdaCacheStoreKey: indom 42.42: instance "00000201" (306260587) in cache [key=0x3030303030323031] does not match new entry [key=0x00000201]
+-12360 <- 00000201 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+306260587 <- 00000201
+pmdaCacheStoreKey: indom 42.42: instance 341902007 [key=0x00000201] in cache, name "00000201-00000000" does not match new entry "00000201-00000002"
+-12360 <- 00000201-00000002 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1592078974 <- 00000201-0000
+pmdaCacheStoreKey: indom 42.42: instance 341902007 [key=0x00000201] in cache, name "00000201-00000000" does not match new entry "00000201-00000002-00000001"
+-12360 <- 00000201-00000002-00000001 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1592078974 <- 00000201-0000
+pmdaCacheStoreKey: indom 42.42: instance 341902007 [key=0x00000201] in cache, name "00000201-00000000" does not match new entry "00000201-00000002-00000001-00000003"
+-12360 <- 00000201-00000002-00000001-00000003 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1592078974 <- 00000201-0000
+pmdaCacheStoreKey: indom 42.42: instance "00020200" (1201067067) in cache [key=0x3030303230323030] does not match new entry [key=0x00020200]
+-12360 <- 00020200 [131584]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1201067067 <- 00020200
+1197057368 <- 00020201-00000002 [131585]
+392010465 <- 00020201-0000
+507343265 <- 00020202-00000002-00000002 [131586]
+1000344165 <- 00020202-0000
+440045073 <- 00020203-00000002-00000002-00000003 [131587]
+1080462772 <- 00020203-0000
+pmdaCacheStoreKey: indom 42.42: instance "02030002" (833786884) in cache [key=0x3032303330303032] does not match new entry [key=0x02030002]
+-12360 <- 02030002 [33751042]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+833786884 <- 02030002
+1066184170 <- 02030102-00000002 [33751298]
+1189137991 <- 02030102-0000
+1908628640 <- 02030202-00000002-00000003 [33751554]
+384254102 <- 02030202-0000
+1711475810 <- 02030302-00000002-00000003-00000003 [33751810]
+681317689 <- 02030302-0000
+1712318676 <- 02040002 [33816578]
+pmdaCacheStoreKey: indom 42.42: instance "02040002" (1712318676) in cache [key=0x02040002] does not match new entry [key=0x3032303430303032]
+-12360 <- 02040002
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+154213275 <- 02040102-00000002 [33816834]
+1314112165 <- 02040102-0000
+938653636 <- 02040202-00000002-00000004 [33817090]
+716295270 <- 02040202-0000
+450119154 <- 02040302-00000002-00000004-00000003 [33817346]
+199045408 <- 02040302-0000
+pmdaCacheStoreKey: indom 42.42: instance "00000301" (1947754439) in cache [key=0x3030303030333031] does not match new entry [key=0x00000301]
+-12360 <- 00000301 [769]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1947754439 <- 00000301
+1955482850 <- 00000301-00000003 [769]
+467540531 <- 00000301-0000
+pmdaCacheStoreKey: indom 42.42: instance 1955482850 [key=0x00000301] in cache, name "00000301-00000003" does not match new entry "00000301-00000003-00000001"
+-12360 <- 00000301-00000003-00000001 [769]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+467540531 <- 00000301-0000
+pmdaCacheStoreKey: indom 42.42: instance 1955482850 [key=0x00000301] in cache, name "00000301-00000003" does not match new entry "00000301-00000003-00000001-00000003"
+-12360 <- 00000301-00000003-00000001-00000003 [769]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+467540531 <- 00000301-0000
+pmdaCacheStoreKey: indom 42.42: instance "00030200" (2009833716) in cache [key=0x3030303330323030] does not match new entry [key=0x00030200]
+-12360 <- 00030200 [197120]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+2009833716 <- 00030200
+784563584 <- 00030201-00000003 [197121]
+800932624 <- 00030201-0000
+1918338688 <- 00030202-00000003-00000002 [197122]
+1964458110 <- 00030202-0000
+639936196 <- 00030203-00000003-00000002-00000003 [197123]
+861106868 <- 00030203-0000
+pmdaCacheStoreKey: indom 42.42: instance "03030003" (2041836956) in cache [key=0x3033303330303033] does not match new entry [key=0x03030003]
+-12360 <- 03030003 [50528259]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+2041836956 <- 03030003
+1287315193 <- 03030103-00000003 [50528515]
+1536865381 <- 03030103-0000
+831920480 <- 03030203-00000003-00000003 [50528771]
+1434806112 <- 03030203-0000
+182280771 <- 03030303-00000003-00000003-00000003 [50529027]
+1363395010 <- 03030303-0000
+1561276095 <- 03040003 [50593795]
+pmdaCacheStoreKey: indom 42.42: instance "03040003" (1561276095) in cache [key=0x03040003] does not match new entry [key=0x3033303430303033]
+-12360 <- 03040003
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+596372403 <- 03040103-00000003 [50594051]
+1633879510 <- 03040103-0000
+1437753510 <- 03040203-00000003-00000004 [50594307]
+1425387246 <- 03040203-0000
+1807083480 <- 03040303-00000003-00000004-00000003 [50594563]
+2138505132 <- 03040303-0000
+1297386275 <- 00000401 [1025]
+pmdaCacheStoreKey: indom 42.42: instance "00000401" (1297386275) in cache [key=0x00000401] does not match new entry [key=0x3030303030343031]
+-12360 <- 00000401
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+pmdaCacheStoreKey: indom 42.42: instance 1297386275 [key=0x00000401] in cache, name "00000401" does not match new entry "00000401-00000004"
+-12360 <- 00000401-00000004 [1025]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+506927615 <- 00000401-0000
+pmdaCacheStoreKey: indom 42.42: instance 1297386275 [key=0x00000401] in cache, name "00000401" does not match new entry "00000401-00000004-00000001"
+-12360 <- 00000401-00000004-00000001 [1025]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+506927615 <- 00000401-0000
+pmdaCacheStoreKey: indom 42.42: instance 1297386275 [key=0x00000401] in cache, name "00000401" does not match new entry "00000401-00000004-00000001-00000003"
+-12360 <- 00000401-00000004-00000001-00000003 [1025]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+506927615 <- 00000401-0000
+pmdaCacheStoreKey: indom 42.42: instance 64710806 [key=0x00040200] in cache, name "00040200-00000000-00000004" does not match new entry "00040200"
+-12360 <- 00040200 [262656]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1097176083 <- 00040200
+1648312053 <- 00040201-00000004 [262657]
+279278835 <- 00040201-0000
+39260735 <- 00040202-00000004-00000002 [262658]
+74630565 <- 00040202-0000
+1235227824 <- 00040203-00000004-00000002-00000003 [262659]
+165781074 <- 00040203-0000
+1496471938 <- 04030004 [67305476]
+pmdaCacheStoreKey: indom 42.42: instance "04030004" (1496471938) in cache [key=0x04030004] does not match new entry [key=0x3034303330303034]
+-12360 <- 04030004
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+697372241 <- 04030104-00000004 [67305732]
+418019767 <- 04030104-0000
+2110453054 <- 04030204-00000004-00000003 [67305988]
+2117555856 <- 04030204-0000
+360868066 <- 04030304-00000004-00000003-00000003 [67306244]
+568696113 <- 04030304-0000
+1117042815 <- 04040004 [67371012]
+pmdaCacheStoreKey: indom 42.42: instance "04040004" (1117042815) in cache [key=0x04040004] does not match new entry [key=0x3034303430303034]
+-12360 <- 04040004
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1908322944 <- 04040104-00000004 [67371268]
+1575161018 <- 04040104-0000
+317809446 <- 04040204-00000004-00000004 [67371524]
+220558980 <- 04040204-0000
+398910663 <- 04040304-00000004-00000004-00000003 [67371780]
+528529257 <- 04040304-0000
+pmdaCacheDump: indom 42.42: nentry=117 ins_mode=1 hstate=3 hsize=32
+ 35439323 active (nil) 00010203-00000001-00000002-00000003 [key=0x00010203]
+ 39260735 active (nil) 00040202-00000004-00000002 [key=0x00040202]
+ 64710806 active (nil) 00040200-00000000-00000004 [key=0x00040200]
+ 74630565 active (nil) 00040202-0000 [key=0x30303034303230322d30303030]
+ 104588964 active (nil) 01030301-0000 [key=0x30313033303330312d30303030]
+ 154213275 active (nil) 02040102-00000002 [key=0x02040102]
+ 165131426 active (nil) 00010202-00000001-00000002 [key=0x00010202]
+ 165781074 active (nil) 00040203-0000 [key=0x30303034303230332d30303030]
+ 176531567 active (nil) 00030000 [key=0x3030303330303030]
+ 182280771 active (nil) 03030303-00000003-00000003-00000003 [key=0x03030303]
+ 199045408 active (nil) 02040302-0000 [key=0x30323034303330322d30303030]
+ 220558980 active (nil) 04040204-0000 [key=0x30343034303230342d30303030]
+ 240779825 active (nil) 01030101-0000 [key=0x30313033303130312d30303030]
+ 257255419 active (nil) 01030001 [key=0x3031303330303031]
+ 279278835 active (nil) 00040201-0000 [key=0x30303034303230312d30303030]
+ 306260587 active (nil) 00000201 [key=0x3030303030323031]
+ 317809446 active (nil) 04040204-00000004-00000004 [key=0x04040204]
+ 341902007 active (nil) 00000201-00000000 [key=0x00000201]
+ 360868066 active (nil) 04030304-00000004-00000003-00000003 [key=0x04030304]
+ 384254102 active (nil) 02030202-0000 [key=0x30323033303230322d30303030]
+ 392010465 active (nil) 00020201-0000 [key=0x30303032303230312d30303030]
+ 398910663 active (nil) 04040304-00000004-00000004-00000003 [key=0x04040304]
+ 412123725 active (nil) 00040200-0000 [key=0x30303034303230302d30303030]
+ 418019767 active (nil) 04030104-0000 [key=0x30343033303130342d30303030]
+ 440045073 active (nil) 00020203-00000002-00000002-00000003 [key=0x00020203]
+ 450119154 active (nil) 02040302-00000002-00000004-00000003 [key=0x02040302]
+ 467540531 active (nil) 00000301-0000 [key=0x30303030303330312d30303030]
+ 506927615 active (nil) 00000401-0000 [key=0x30303030303430312d30303030]
+ 507343265 active (nil) 00020202-00000002-00000002 [key=0x00020202]
+ 528529257 active (nil) 04040304-0000 [key=0x30343034303330342d30303030]
+ 568696113 active (nil) 04030304-0000 [key=0x30343033303330342d30303030]
+ 582252600 active (nil) 01040201-00000001-00000004 [key=0x01040201]
+ 582316426 active (nil) 01040301-0000 [key=0x30313034303330312d30303030]
+ 596372403 active (nil) 03040103-00000003 [key=0x03040103]
+ 602762181 active (nil) 00040100-0000 [key=0x30303034303130302d30303030]
+ 608931894 active (nil) 00000001-0000 [key=0x30303030303030312d30303030]
+ 639936196 active (nil) 00030203-00000003-00000002-00000003 [key=0x00030203]
+ 681317689 active (nil) 02030302-0000 [key=0x30323033303330322d30303030]
+ 697372241 active (nil) 04030104-00000004 [key=0x04030104]
+ 716295270 active (nil) 02040202-0000 [key=0x30323034303230322d30303030]
+ 754588963 active (nil) 00030300-00000000-00000003-00000003 [key=0x00030300]
+ 764859324 active (nil) 00000101 [key=0x3030303030313031]
+ 784563584 active (nil) 00030201-00000003 [key=0x00030201]
+ 784897958 active (nil) 01040101-0000 [key=0x30313034303130312d30303030]
+ 790162309 active (nil) 01030101-00000001 [key=0x01030101]
+ 795844907 active (nil) 01030201-0000 [key=0x30313033303230312d30303030]
+ 798265046 active (nil) 00000001-00000000 [key=0x00000001]
+ 800932624 active (nil) 00030201-0000 [key=0x30303033303230312d30303030]
+ 831920480 active (nil) 03030203-00000003-00000003 [key=0x03030203]
+ 833786884 active (nil) 02030002 [key=0x3032303330303032]
+ 852259633 active (nil) 00030100-0000 [key=0x30303033303130302d30303030]
+ 861106868 active (nil) 00030203-0000 [key=0x30303033303230332d30303030]
+ 889580974 active (nil) 00000200 [key=0x3030303030323030]
+ 938653636 active (nil) 02040202-00000002-00000004 [key=0x02040202]
+ 966032096 active (nil) 01030301-00000001-00000003-00000003 [key=0x01030301]
+ 967182805 active (nil) 01040001 [key=0x01040001]
+ 973029041 active (nil) 00000203-0000 [key=0x30303030303230332d30303030]
+ 989848592 active (nil) 00000001 [key=0x3030303030303031]
+ 1000344165 active (nil) 00020202-0000 [key=0x30303032303230322d30303030]
+ 1066184170 active (nil) 02030102-00000002 [key=0x02030102]
+ 1080462772 active (nil) 00020203-0000 [key=0x30303032303230332d30303030]
+ 1081505025 active (nil) 00010202-0000 [key=0x30303031303230322d30303030]
+ 1097176083 active (nil) 00040200 [key=0x3030303430323030]
+ 1117042815 active (nil) 04040004 [key=0x04040004]
+ 1144050900 active (nil) 00010201-00000001 [key=0x00010201]
+ 1167330940 active (nil) 00040300-0000 [key=0x30303034303330302d30303030]
+ 1169240636 active (nil) 00000203-00000000-00000002-00000003 [key=0x00000203]
+ 1189137991 active (nil) 02030102-0000 [key=0x30323033303130322d30303030]
+ 1197057368 active (nil) 00020201-00000002 [key=0x00020201]
+ 1201067067 active (nil) 00020200 [key=0x3030303230323030]
+ 1235227824 active (nil) 00040203-00000004-00000002-00000003 [key=0x00040203]
+ 1287315193 active (nil) 03030103-00000003 [key=0x03030103]
+ 1297386275 active (nil) 00000401 [key=0x00000401]
+ 1314112165 active (nil) 02040102-0000 [key=0x30323034303130322d30303030]
+ 1335783113 active (nil) 00030300-0000 [key=0x30303033303330302d30303030]
+ 1347419426 active (nil) 01040101-00000001 [key=0x01040101]
+ 1363395010 active (nil) 03030303-0000 [key=0x30333033303330332d30303030]
+ 1425387246 active (nil) 03040203-0000 [key=0x30333034303230332d30303030]
+ 1434806112 active (nil) 03030203-0000 [key=0x30333033303230332d30303030]
+ 1437753510 active (nil) 03040203-00000003-00000004 [key=0x03040203]
+ 1479979693 active (nil) 00000202-00000000-00000002 [key=0x00000202]
+ 1496471938 active (nil) 04030004 [key=0x04030004]
+ 1512898519 active (nil) 00000101-0000 [key=0x30303030303130312d30303030]
+ 1536865381 active (nil) 03030103-0000 [key=0x30333033303130332d30303030]
+ 1561276095 active (nil) 03040003 [key=0x03040003]
+ 1575161018 active (nil) 04040104-0000 [key=0x30343034303130342d30303030]
+ 1592078974 active (nil) 00000201-0000 [key=0x30303030303230312d30303030]
+ 1602785539 active (nil) 00040300-00000000-00000004-00000003 [key=0x00040300]
+ 1623404338 active (nil) 00000101-00000001 [key=0x00000101]
+ 1630861860 active (nil) 00030200-00000000-00000003 [key=0x00030200]
+ 1633879510 active (nil) 03040103-0000 [key=0x30333034303130332d30303030]
+ 1648312053 active (nil) 00040201-00000004 [key=0x00040201]
+ 1660560434 active (nil) 00030200-0000 [key=0x30303033303230302d30303030]
+ 1699628683 active (nil) 00010203-0000 [key=0x30303031303230332d30303030]
+ 1708643668 active (nil) 01040301-00000001-00000004-00000003 [key=0x01040301]
+ 1711475810 active (nil) 02030302-00000002-00000003-00000003 [key=0x02030302]
+ 1712318676 active (nil) 02040002 [key=0x02040002]
+ 1763902175 active (nil) 00010201-0000 [key=0x30303031303230312d30303030]
+ 1807083480 active (nil) 03040303-00000003-00000004-00000003 [key=0x03040303]
+ 1861545753 active (nil) 01030201-00000001-00000003 [key=0x01030201]
+ 1908322944 active (nil) 04040104-00000004 [key=0x04040104]
+ 1908628640 active (nil) 02030202-00000002-00000003 [key=0x02030202]
+ 1916263269 active (nil) 00000202-0000 [key=0x30303030303230322d30303030]
+ 1918338688 active (nil) 00030202-00000003-00000002 [key=0x00030202]
+ 1947754439 active (nil) 00000301 [key=0x3030303030333031]
+ 1955482850 active (nil) 00000301-00000003 [key=0x00000301]
+ 1964458110 active (nil) 00030202-0000 [key=0x30303033303230322d30303030]
+ 1974874486 active (nil) 00030100-00000000 [key=0x00030100]
+ 2009833716 active (nil) 00030200 [key=0x3030303330323030]
+ 2021473012 active (nil) 00010200 [key=0x3030303130323030]
+ 2024943138 active (nil) 00040000 [key=0x00040000]
+ 2041836956 active (nil) 03030003 [key=0x3033303330303033]
+ 2043483434 active (nil) 01040201-0000 [key=0x30313034303230312d30303030]
+ 2110453054 active (nil) 04030204-00000004-00000003 [key=0x04030204]
+ 2117555856 active (nil) 04030204-0000 [key=0x30343033303230342d30303030]
+ 2137944949 active (nil) 00040100-00000000 [key=0x00040100]
+ 2138505132 active (nil) 03040303-0000 [key=0x30333034303330332d30303030]
+pmdaCacheStoreKey hash stats ...
+hash once: 86 times
+inst hash
+ [000] -> 1908322944 -> 831920480 -> 1918338688 -> 784563584 -> 199045408 -> 1908628640 -> 966032096 -> 1434806112
+ [001] -> 507343265 -> 392010465 -> 1081505025
+ [002] -> 360868066 -> 1496471938 -> 1363395010 -> 1955482850 -> 1711475810 -> 2024943138 -> 165131426 -> 1347419426
+ [003] -> 1297386275 -> 182280771 -> 754588963 -> 1602785539
+ [004] -> 220558980 -> 639936196 -> 938653636 -> 1630861860 -> 104588964 -> 833786884
+ [005] -> 74630565 -> 1314112165 -> 1916263269 -> 602762181 -> 790162309 -> 1000344165 -> 1536865381
+ [006] -> 317809446 -> 1437753510 -> 716295270 -> 784897958
+ [007] -> 398910663 -> 1189137991 -> 1947754439
+ [008]
+ [009] -> 528529257 -> 1335783113
+ [010] -> 1066184170 -> 2043483434 -> 582316426
+ [011] -> 306260587 -> 795844907 -> 1699628683
+ [012] -> 2138505132
+ [013] -> 1479979693 -> 412123725
+ [014] -> 1425387246 -> 889580974
+ [015] -> 176531567
+ [016] -> 2117555856 -> 1235227824 -> 989848592 -> 800932624
+ [017] -> 568696113 -> 697372241 -> 440045073 -> 240779825 -> 852259633 -> 973029041
+ [018] -> 165781074 -> 450119154 -> 1660560434 -> 1623404338
+ [019] -> 279278835 -> 1097176083 -> 596372403 -> 467540531
+ [020] -> 861106868 -> 1712318676 -> 1080462772 -> 2021473012 -> 1144050900 -> 1708643668 -> 2009833716
+ [021] -> 1648312053 -> 2137944949 -> 967182805
+ [022] -> 1633879510 -> 608931894 -> 798265046 -> 1974874486 -> 64710806 -> 384254102
+ [023] -> 418019767 -> 1512898519 -> 341902007
+ [024] -> 1807083480 -> 582252600 -> 1197057368
+ [025] -> 1287315193 -> 681317689 -> 1861545753
+ [026] -> 1575161018
+ [027] -> 154213275 -> 257255419 -> 1201067067 -> 35439323
+ [028] -> 764859324 -> 1169240636 -> 1167330940 -> 2041836956
+ [029]
+ [030] -> 2110453054 -> 1592078974 -> 1964458110
+ [031] -> 1117042815 -> 39260735 -> 506927615 -> 1561276095 -> 1763902175
+name hash
+ [000] -> 1496471938 -> 199045408 -> 1169240636 -> 1434806112
+ [001] -> 317809446 -> 1908322944 -> 507343265 -> 392010465 -> 1081505025 -> 1144050900
+ [002] -> 1363395010 -> 1066184170
+ [003] -> 784563584
+ [004] -> 220558980 -> 1561276095 -> 104588964 -> 1708643668 -> 833786884
+ [005] -> 398910663 -> 697372241 -> 74630565 -> 596372403 -> 1314112165 -> 1916263269 -> 602762181 -> 1000344165 -> 1536865381
+ [006] -> 182280771 -> 716295270 -> 1861545753 -> 966032096 -> 784897958
+ [007] -> 1235227824 -> 1479979693 -> 64710806 -> 790162309 -> 1189137991 -> 1947754439
+ [008] -> 154213275
+ [009] -> 528529257 -> 1335783113
+ [010] -> 1117042815 -> 582252600 -> 2043483434 -> 582316426
+ [011] -> 938653636 -> 306260587 -> 795844907 -> 1699628683
+ [012] -> 2138505132
+ [013] -> 831920480 -> 412123725 -> 1197057368
+ [014] -> 1425387246 -> 889580974 -> 1974874486
+ [015] -> 1918338688 -> 176531567
+ [016] -> 2117555856 -> 989848592 -> 800932624
+ [017] -> 568696113 -> 2110453054 -> 639936196 -> 1955482850 -> 240779825 -> 852259633 -> 973029041
+ [018] -> 165781074 -> 1711475810 -> 1660560434
+ [019] -> 279278835 -> 1097176083 -> 1347419426 -> 467540531
+ [020] -> 1437753510 -> 861106868 -> 1080462772 -> 2021473012 -> 754588963 -> 35439323 -> 2009833716
+ [021] -> 165131426
+ [022] -> 1633879510 -> 608931894 -> 1602785539 -> 384254102
+ [023] -> 360868066 -> 418019767 -> 1297386275 -> 1512898519
+ [024]
+ [025] -> 450119154 -> 681317689 -> 798265046 -> 967182805
+ [026] -> 1575161018 -> 1908628640 -> 440045073
+ [027] -> 257255419 -> 1201067067 -> 2024943138
+ [028] -> 1712318676 -> 764859324 -> 1167330940 -> 1623404338 -> 2041836956
+ [029] -> 39260735 -> 1648312053 -> 1630861860
+ [030] -> 1807083480 -> 1592078974 -> 341902007 -> 2137944949 -> 1964458110
+ [031] -> 506927615 -> 1287315193 -> 1763902175
+
+=== keycache -dk ===
+First few lines of output ...
+798265046 <- 00000001 [1]
+-12360 <- 00000001-00000000 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+-12360 <- 00000001-00000000-00000001 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+882072506 <- 00000200 [512]
+341902007 <- 00000201-00000000 [513]
+1479979693 <- 00000202-00000000-00000002 [514]
+1796761234 <- 00030000 [196608]
+1974874486 <- 00030100-00000000 [196864]
+1630861860 <- 00030200-00000000-00000003 [197120]
+1623404338 <- 00000101 [257]
+-12360 <- 00000101-00000001 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+-12360 <- 00000101-00000001-00000001 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1528964958 <- 00010200 [66048]
+1144050900 <- 00010201-00000001 [66049]
+165131426 <- 00010202-00000001-00000002 [66050]
+1624278317 <- 01030001 [16973825]
+
+Duplicate instance ids ... expect none
+pmdaCacheDump: indom 42.42: nentry=26 ins_mode=1 hstate=3 hsize=16
+ 165131426 active (nil) 00010202-00000001-00000002 [key=0x00010202]
+ 341902007 active (nil) 00000201-00000000 [key=0x00000201]
+ 458635465 active (nil) 02030002 [key=0x02030002]
+ 507343265 active (nil) 00020202-00000002-00000002 [key=0x00020202]
+ 637487991 active (nil) 00020200 [key=0x00020200]
+ 784563584 active (nil) 00030201-00000003 [key=0x00030201]
+ 790162309 active (nil) 01030101-00000001 [key=0x01030101]
+ 798265046 active (nil) 00000001 [key=0x00000001]
+ 831920480 active (nil) 03030203-00000003-00000003 [key=0x03030203]
+ 882072506 active (nil) 00000200 [key=0x00000200]
+ 1066184170 active (nil) 02030102-00000002 [key=0x02030102]
+ 1144050900 active (nil) 00010201-00000001 [key=0x00010201]
+ 1197057368 active (nil) 00020201-00000002 [key=0x00020201]
+ 1287315193 active (nil) 03030103-00000003 [key=0x03030103]
+ 1309639510 active (nil) 03030003 [key=0x03030003]
+ 1479979693 active (nil) 00000202-00000000-00000002 [key=0x00000202]
+ 1528964958 active (nil) 00010200 [key=0x00010200]
+ 1623404338 active (nil) 00000101 [key=0x00000101]
+ 1624278317 active (nil) 01030001 [key=0x01030001]
+ 1630861860 active (nil) 00030200-00000000-00000003 [key=0x00030200]
+ 1796761234 active (nil) 00030000 [key=0x00030000]
+ 1861545753 active (nil) 01030201-00000001-00000003 [key=0x01030201]
+ 1908628640 active (nil) 02030202-00000002-00000003 [key=0x02030202]
+ 1918338688 active (nil) 00030202-00000003-00000002 [key=0x00030202]
+ 1955482850 active (nil) 00000301 [key=0x00000301]
+ 1974874486 active (nil) 00030100-00000000 [key=0x00030100]
+pmdaCacheStoreKey hash stats ...
+hash once: 26 times
+inst hash
+ [000] -> 831920480 -> 1918338688 -> 784563584 -> 1908628640
+ [001] -> 507343265
+ [002] -> 1955482850 -> 165131426 -> 1623404338 -> 1796761234
+ [003]
+ [004] -> 1144050900 -> 1630861860
+ [005] -> 790162309
+ [006] -> 1309639510 -> 1974874486 -> 798265046
+ [007] -> 637487991 -> 341902007
+ [008] -> 1197057368
+ [009] -> 1287315193 -> 458635465 -> 1861545753
+ [010] -> 1066184170 -> 882072506
+ [011]
+ [012]
+ [013] -> 1624278317 -> 1479979693
+ [014] -> 1528964958
+ [015]
+name hash
+ [000] -> 798265046
+ [001] -> 507343265 -> 1144050900
+ [002] -> 1066184170
+ [003] -> 784563584
+ [004] -> 458635465 -> 1528964958
+ [005] -> 165131426
+ [006] -> 1861545753
+ [007] -> 1955482850 -> 790162309 -> 1479979693
+ [008]
+ [009]
+ [010] -> 1908628640
+ [011] -> 637487991 -> 1624278317
+ [012] -> 1309639510 -> 1623404338
+ [013] -> 831920480 -> 1197057368 -> 1630861860
+ [014] -> 1974874486 -> 341902007 -> 882072506
+ [015] -> 1287315193 -> 1918338688 -> 1796761234
+
+=== keycache -l -Dindom ===
+pmdaCacheDump: indom 42.42: nentry=26 ins_mode=1 hstate=0 hsize=16
+ 165131426 inactive (nil) 00010202-00000001-00000002 [key=0x00010202]
+ 341902007 inactive (nil) 00000201-00000000 [key=0x00000201]
+ 458635465 inactive (nil) 02030002 [key=0x02030002]
+ 507343265 inactive (nil) 00020202-00000002-00000002 [key=0x00020202]
+ 637487991 inactive (nil) 00020200 [key=0x00020200]
+ 784563584 inactive (nil) 00030201-00000003 [key=0x00030201]
+ 790162309 inactive (nil) 01030101-00000001 [key=0x01030101]
+ 798265046 inactive (nil) 00000001 [key=0x00000001]
+ 831920480 inactive (nil) 03030203-00000003-00000003 [key=0x03030203]
+ 882072506 inactive (nil) 00000200 [key=0x00000200]
+ 1066184170 inactive (nil) 02030102-00000002 [key=0x02030102]
+ 1144050900 inactive (nil) 00010201-00000001 [key=0x00010201]
+ 1197057368 inactive (nil) 00020201-00000002 [key=0x00020201]
+ 1287315193 inactive (nil) 03030103-00000003 [key=0x03030103]
+ 1309639510 inactive (nil) 03030003 [key=0x03030003]
+ 1479979693 inactive (nil) 00000202-00000000-00000002 [key=0x00000202]
+ 1528964958 inactive (nil) 00010200 [key=0x00010200]
+ 1623404338 inactive (nil) 00000101 [key=0x00000101]
+ 1624278317 inactive (nil) 01030001 [key=0x01030001]
+ 1630861860 inactive (nil) 00030200-00000000-00000003 [key=0x00030200]
+ 1796761234 inactive (nil) 00030000 [key=0x00030000]
+ 1861545753 inactive (nil) 01030201-00000001-00000003 [key=0x01030201]
+ 1908628640 inactive (nil) 02030202-00000002-00000003 [key=0x02030202]
+ 1918338688 inactive (nil) 00030202-00000003-00000002 [key=0x00030202]
+ 1955482850 inactive (nil) 00000301 [key=0x00000301]
+ 1974874486 inactive (nil) 00030100-00000000 [key=0x00030100]
+Cache loaded ...
+pmdaCacheDump: indom 42.42: nentry=26 ins_mode=1 hstate=0 hsize=16
+ 165131426 inactive (nil) 00010202-00000001-00000002 [key=0x00010202]
+ 341902007 inactive (nil) 00000201-00000000 [key=0x00000201]
+ 458635465 inactive (nil) 02030002 [key=0x02030002]
+ 507343265 inactive (nil) 00020202-00000002-00000002 [key=0x00020202]
+ 637487991 inactive (nil) 00020200 [key=0x00020200]
+ 784563584 inactive (nil) 00030201-00000003 [key=0x00030201]
+ 790162309 inactive (nil) 01030101-00000001 [key=0x01030101]
+ 798265046 inactive (nil) 00000001 [key=0x00000001]
+ 831920480 inactive (nil) 03030203-00000003-00000003 [key=0x03030203]
+ 882072506 inactive (nil) 00000200 [key=0x00000200]
+ 1066184170 inactive (nil) 02030102-00000002 [key=0x02030102]
+ 1144050900 inactive (nil) 00010201-00000001 [key=0x00010201]
+ 1197057368 inactive (nil) 00020201-00000002 [key=0x00020201]
+ 1287315193 inactive (nil) 03030103-00000003 [key=0x03030103]
+ 1309639510 inactive (nil) 03030003 [key=0x03030003]
+ 1479979693 inactive (nil) 00000202-00000000-00000002 [key=0x00000202]
+ 1528964958 inactive (nil) 00010200 [key=0x00010200]
+ 1623404338 inactive (nil) 00000101 [key=0x00000101]
+ 1624278317 inactive (nil) 01030001 [key=0x01030001]
+ 1630861860 inactive (nil) 00030200-00000000-00000003 [key=0x00030200]
+ 1796761234 inactive (nil) 00030000 [key=0x00030000]
+ 1861545753 inactive (nil) 01030201-00000001-00000003 [key=0x01030201]
+ 1908628640 inactive (nil) 02030202-00000002-00000003 [key=0x02030202]
+ 1918338688 inactive (nil) 00030202-00000003-00000002 [key=0x00030202]
+ 1955482850 inactive (nil) 00000301 [key=0x00000301]
+ 1974874486 inactive (nil) 00030100-00000000 [key=0x00030100]
+798265046 <- 00000001 [1]
+pmdaCacheStoreKey: indom 42.42: instance "00000001" (798265046) in cache [key=0x00000001] does not match new entry [key=0x3030303030303031]
+-12360 <- 00000001
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+pmdaCacheStoreKey: indom 42.42: instance 798265046 [key=0x00000001] in cache, name "00000001" does not match new entry "00000001-00000000"
+-12360 <- 00000001-00000000 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+608931894 <- 00000001-0000
+pmdaCacheStoreKey: indom 42.42: instance 798265046 [key=0x00000001] in cache, name "00000001" does not match new entry "00000001-00000000-00000001"
+-12360 <- 00000001-00000000-00000001 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+608931894 <- 00000001-0000
+pmdaCacheStoreKey: indom 42.42: instance 798265046 [key=0x00000001] in cache, name "00000001" does not match new entry "00000001-00000000-00000001-00000003"
+-12360 <- 00000001-00000000-00000001-00000003 [1]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+608931894 <- 00000001-0000
+882072506 <- 00000200 [512]
+pmdaCacheStoreKey: indom 42.42: instance "00000200" (882072506) in cache [key=0x00000200] does not match new entry [key=0x3030303030323030]
+-12360 <- 00000200
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+341902007 <- 00000201-00000000 [513]
+1592078974 <- 00000201-0000
+1479979693 <- 00000202-00000000-00000002 [514]
+1916263269 <- 00000202-0000
+1169240636 <- 00000203-00000000-00000002-00000003 [515]
+973029041 <- 00000203-0000
+1796761234 <- 00030000 [196608]
+pmdaCacheStoreKey: indom 42.42: instance "00030000" (1796761234) in cache [key=0x00030000] does not match new entry [key=0x3030303330303030]
+-12360 <- 00030000
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1974874486 <- 00030100-00000000 [196864]
+852259633 <- 00030100-0000
+1630861860 <- 00030200-00000000-00000003 [197120]
+1660560434 <- 00030200-0000
+754588963 <- 00030300-00000000-00000003-00000003 [197376]
+1335783113 <- 00030300-0000
+2024943138 <- 00040000 [262144]
+pmdaCacheStoreKey: indom 42.42: instance "00040000" (2024943138) in cache [key=0x00040000] does not match new entry [key=0x3030303430303030]
+-12360 <- 00040000
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+2137944949 <- 00040100-00000000 [262400]
+602762181 <- 00040100-0000
+64710806 <- 00040200-00000000-00000004 [262656]
+412123725 <- 00040200-0000
+1602785539 <- 00040300-00000000-00000004-00000003 [262912]
+1167330940 <- 00040300-0000
+1623404338 <- 00000101 [257]
+pmdaCacheStoreKey: indom 42.42: instance "00000101" (1623404338) in cache [key=0x00000101] does not match new entry [key=0x3030303030313031]
+-12360 <- 00000101
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+pmdaCacheStoreKey: indom 42.42: instance 1623404338 [key=0x00000101] in cache, name "00000101" does not match new entry "00000101-00000001"
+-12360 <- 00000101-00000001 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1512898519 <- 00000101-0000
+pmdaCacheStoreKey: indom 42.42: instance 1623404338 [key=0x00000101] in cache, name "00000101" does not match new entry "00000101-00000001-00000001"
+-12360 <- 00000101-00000001-00000001 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1512898519 <- 00000101-0000
+pmdaCacheStoreKey: indom 42.42: instance 1623404338 [key=0x00000101] in cache, name "00000101" does not match new entry "00000101-00000001-00000001-00000003"
+-12360 <- 00000101-00000001-00000001-00000003 [257]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1512898519 <- 00000101-0000
+1528964958 <- 00010200 [66048]
+pmdaCacheStoreKey: indom 42.42: instance "00010200" (1528964958) in cache [key=0x00010200] does not match new entry [key=0x3030303130323030]
+-12360 <- 00010200
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1144050900 <- 00010201-00000001 [66049]
+1763902175 <- 00010201-0000
+165131426 <- 00010202-00000001-00000002 [66050]
+1081505025 <- 00010202-0000
+35439323 <- 00010203-00000001-00000002-00000003 [66051]
+1699628683 <- 00010203-0000
+1624278317 <- 01030001 [16973825]
+pmdaCacheStoreKey: indom 42.42: instance "01030001" (1624278317) in cache [key=0x01030001] does not match new entry [key=0x3031303330303031]
+-12360 <- 01030001
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+790162309 <- 01030101-00000001 [16974081]
+240779825 <- 01030101-0000
+1861545753 <- 01030201-00000001-00000003 [16974337]
+795844907 <- 01030201-0000
+966032096 <- 01030301-00000001-00000003-00000003 [16974593]
+104588964 <- 01030301-0000
+967182805 <- 01040001 [17039361]
+pmdaCacheStoreKey: indom 42.42: instance "01040001" (967182805) in cache [key=0x01040001] does not match new entry [key=0x3031303430303031]
+-12360 <- 01040001
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1347419426 <- 01040101-00000001 [17039617]
+784897958 <- 01040101-0000
+582252600 <- 01040201-00000001-00000004 [17039873]
+2043483434 <- 01040201-0000
+1708643668 <- 01040301-00000001-00000004-00000003 [17040129]
+582316426 <- 01040301-0000
+pmdaCacheStoreKey: indom 42.42: instance 341902007 [key=0x00000201] in cache, name "00000201-00000000" does not match new entry "00000201"
+-12360 <- 00000201 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+306260587 <- 00000201
+pmdaCacheStoreKey: indom 42.42: instance 341902007 [key=0x00000201] in cache, name "00000201-00000000" does not match new entry "00000201-00000002"
+-12360 <- 00000201-00000002 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1592078974 <- 00000201-0000
+pmdaCacheStoreKey: indom 42.42: instance 341902007 [key=0x00000201] in cache, name "00000201-00000000" does not match new entry "00000201-00000002-00000001"
+-12360 <- 00000201-00000002-00000001 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1592078974 <- 00000201-0000
+pmdaCacheStoreKey: indom 42.42: instance 341902007 [key=0x00000201] in cache, name "00000201-00000000" does not match new entry "00000201-00000002-00000001-00000003"
+-12360 <- 00000201-00000002-00000001-00000003 [513]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1592078974 <- 00000201-0000
+637487991 <- 00020200 [131584]
+pmdaCacheStoreKey: indom 42.42: instance "00020200" (637487991) in cache [key=0x00020200] does not match new entry [key=0x3030303230323030]
+-12360 <- 00020200
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1197057368 <- 00020201-00000002 [131585]
+392010465 <- 00020201-0000
+507343265 <- 00020202-00000002-00000002 [131586]
+1000344165 <- 00020202-0000
+440045073 <- 00020203-00000002-00000002-00000003 [131587]
+1080462772 <- 00020203-0000
+458635465 <- 02030002 [33751042]
+pmdaCacheStoreKey: indom 42.42: instance "02030002" (458635465) in cache [key=0x02030002] does not match new entry [key=0x3032303330303032]
+-12360 <- 02030002
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1066184170 <- 02030102-00000002 [33751298]
+1189137991 <- 02030102-0000
+1908628640 <- 02030202-00000002-00000003 [33751554]
+384254102 <- 02030202-0000
+1711475810 <- 02030302-00000002-00000003-00000003 [33751810]
+681317689 <- 02030302-0000
+1712318676 <- 02040002 [33816578]
+pmdaCacheStoreKey: indom 42.42: instance "02040002" (1712318676) in cache [key=0x02040002] does not match new entry [key=0x3032303430303032]
+-12360 <- 02040002
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+154213275 <- 02040102-00000002 [33816834]
+1314112165 <- 02040102-0000
+938653636 <- 02040202-00000002-00000004 [33817090]
+716295270 <- 02040202-0000
+450119154 <- 02040302-00000002-00000004-00000003 [33817346]
+199045408 <- 02040302-0000
+1955482850 <- 00000301 [769]
+pmdaCacheStoreKey: indom 42.42: instance "00000301" (1955482850) in cache [key=0x00000301] does not match new entry [key=0x3030303030333031]
+-12360 <- 00000301
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+pmdaCacheStoreKey: indom 42.42: instance 1955482850 [key=0x00000301] in cache, name "00000301" does not match new entry "00000301-00000003"
+-12360 <- 00000301-00000003 [769]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+467540531 <- 00000301-0000
+pmdaCacheStoreKey: indom 42.42: instance 1955482850 [key=0x00000301] in cache, name "00000301" does not match new entry "00000301-00000003-00000001"
+-12360 <- 00000301-00000003-00000001 [769]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+467540531 <- 00000301-0000
+pmdaCacheStoreKey: indom 42.42: instance 1955482850 [key=0x00000301] in cache, name "00000301" does not match new entry "00000301-00000003-00000001-00000003"
+-12360 <- 00000301-00000003-00000001-00000003 [769]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+467540531 <- 00000301-0000
+pmdaCacheStoreKey: indom 42.42: instance 1630861860 [key=0x00030200] in cache, name "00030200-00000000-00000003" does not match new entry "00030200"
+-12360 <- 00030200 [197120]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+2009833716 <- 00030200
+784563584 <- 00030201-00000003 [197121]
+800932624 <- 00030201-0000
+1918338688 <- 00030202-00000003-00000002 [197122]
+1964458110 <- 00030202-0000
+639936196 <- 00030203-00000003-00000002-00000003 [197123]
+861106868 <- 00030203-0000
+1309639510 <- 03030003 [50528259]
+pmdaCacheStoreKey: indom 42.42: instance "03030003" (1309639510) in cache [key=0x03030003] does not match new entry [key=0x3033303330303033]
+-12360 <- 03030003
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1287315193 <- 03030103-00000003 [50528515]
+1536865381 <- 03030103-0000
+831920480 <- 03030203-00000003-00000003 [50528771]
+1434806112 <- 03030203-0000
+182280771 <- 03030303-00000003-00000003-00000003 [50529027]
+1363395010 <- 03030303-0000
+1561276095 <- 03040003 [50593795]
+pmdaCacheStoreKey: indom 42.42: instance "03040003" (1561276095) in cache [key=0x03040003] does not match new entry [key=0x3033303430303033]
+-12360 <- 03040003
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+596372403 <- 03040103-00000003 [50594051]
+1633879510 <- 03040103-0000
+1437753510 <- 03040203-00000003-00000004 [50594307]
+1425387246 <- 03040203-0000
+1807083480 <- 03040303-00000003-00000004-00000003 [50594563]
+2138505132 <- 03040303-0000
+1297386275 <- 00000401 [1025]
+pmdaCacheStoreKey: indom 42.42: instance "00000401" (1297386275) in cache [key=0x00000401] does not match new entry [key=0x3030303030343031]
+-12360 <- 00000401
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+pmdaCacheStoreKey: indom 42.42: instance 1297386275 [key=0x00000401] in cache, name "00000401" does not match new entry "00000401-00000004"
+-12360 <- 00000401-00000004 [1025]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+506927615 <- 00000401-0000
+pmdaCacheStoreKey: indom 42.42: instance 1297386275 [key=0x00000401] in cache, name "00000401" does not match new entry "00000401-00000004-00000001"
+-12360 <- 00000401-00000004-00000001 [1025]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+506927615 <- 00000401-0000
+pmdaCacheStoreKey: indom 42.42: instance 1297386275 [key=0x00000401] in cache, name "00000401" does not match new entry "00000401-00000004-00000001-00000003"
+-12360 <- 00000401-00000004-00000001-00000003 [1025]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+506927615 <- 00000401-0000
+pmdaCacheStoreKey: indom 42.42: instance 64710806 [key=0x00040200] in cache, name "00040200-00000000-00000004" does not match new entry "00040200"
+-12360 <- 00040200 [262656]
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1097176083 <- 00040200
+1648312053 <- 00040201-00000004 [262657]
+279278835 <- 00040201-0000
+39260735 <- 00040202-00000004-00000002 [262658]
+74630565 <- 00040202-0000
+1235227824 <- 00040203-00000004-00000002-00000003 [262659]
+165781074 <- 00040203-0000
+1496471938 <- 04030004 [67305476]
+pmdaCacheStoreKey: indom 42.42: instance "04030004" (1496471938) in cache [key=0x04030004] does not match new entry [key=0x3034303330303034]
+-12360 <- 04030004
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+697372241 <- 04030104-00000004 [67305732]
+418019767 <- 04030104-0000
+2110453054 <- 04030204-00000004-00000003 [67305988]
+2117555856 <- 04030204-0000
+360868066 <- 04030304-00000004-00000003-00000003 [67306244]
+568696113 <- 04030304-0000
+1117042815 <- 04040004 [67371012]
+pmdaCacheStoreKey: indom 42.42: instance "04040004" (1117042815) in cache [key=0x04040004] does not match new entry [key=0x3034303430303034]
+-12360 <- 04040004
+pmdaCacheStoreKey failed: Unknown or illegal instance identifier
+1908322944 <- 04040104-00000004 [67371268]
+1575161018 <- 04040104-0000
+317809446 <- 04040204-00000004-00000004 [67371524]
+220558980 <- 04040204-0000
+398910663 <- 04040304-00000004-00000004-00000003 [67371780]
+528529257 <- 04040304-0000
+pmdaCacheDump: indom 42.42: nentry=114 ins_mode=1 hstate=3 hsize=32
+ 35439323 active (nil) 00010203-00000001-00000002-00000003 [key=0x00010203]
+ 39260735 active (nil) 00040202-00000004-00000002 [key=0x00040202]
+ 64710806 active (nil) 00040200-00000000-00000004 [key=0x00040200]
+ 74630565 active (nil) 00040202-0000 [key=0x30303034303230322d30303030]
+ 104588964 active (nil) 01030301-0000 [key=0x30313033303330312d30303030]
+ 154213275 active (nil) 02040102-00000002 [key=0x02040102]
+ 165131426 active (nil) 00010202-00000001-00000002 [key=0x00010202]
+ 165781074 active (nil) 00040203-0000 [key=0x30303034303230332d30303030]
+ 182280771 active (nil) 03030303-00000003-00000003-00000003 [key=0x03030303]
+ 199045408 active (nil) 02040302-0000 [key=0x30323034303330322d30303030]
+ 220558980 active (nil) 04040204-0000 [key=0x30343034303230342d30303030]
+ 240779825 active (nil) 01030101-0000 [key=0x30313033303130312d30303030]
+ 279278835 active (nil) 00040201-0000 [key=0x30303034303230312d30303030]
+ 306260587 active (nil) 00000201 [key=0x3030303030323031]
+ 317809446 active (nil) 04040204-00000004-00000004 [key=0x04040204]
+ 341902007 active (nil) 00000201-00000000 [key=0x00000201]
+ 360868066 active (nil) 04030304-00000004-00000003-00000003 [key=0x04030304]
+ 384254102 active (nil) 02030202-0000 [key=0x30323033303230322d30303030]
+ 392010465 active (nil) 00020201-0000 [key=0x30303032303230312d30303030]
+ 398910663 active (nil) 04040304-00000004-00000004-00000003 [key=0x04040304]
+ 412123725 active (nil) 00040200-0000 [key=0x30303034303230302d30303030]
+ 418019767 active (nil) 04030104-0000 [key=0x30343033303130342d30303030]
+ 440045073 active (nil) 00020203-00000002-00000002-00000003 [key=0x00020203]
+ 450119154 active (nil) 02040302-00000002-00000004-00000003 [key=0x02040302]
+ 458635465 active (nil) 02030002 [key=0x02030002]
+ 467540531 active (nil) 00000301-0000 [key=0x30303030303330312d30303030]
+ 506927615 active (nil) 00000401-0000 [key=0x30303030303430312d30303030]
+ 507343265 active (nil) 00020202-00000002-00000002 [key=0x00020202]
+ 528529257 active (nil) 04040304-0000 [key=0x30343034303330342d30303030]
+ 568696113 active (nil) 04030304-0000 [key=0x30343033303330342d30303030]
+ 582252600 active (nil) 01040201-00000001-00000004 [key=0x01040201]
+ 582316426 active (nil) 01040301-0000 [key=0x30313034303330312d30303030]
+ 596372403 active (nil) 03040103-00000003 [key=0x03040103]
+ 602762181 active (nil) 00040100-0000 [key=0x30303034303130302d30303030]
+ 608931894 active (nil) 00000001-0000 [key=0x30303030303030312d30303030]
+ 637487991 active (nil) 00020200 [key=0x00020200]
+ 639936196 active (nil) 00030203-00000003-00000002-00000003 [key=0x00030203]
+ 681317689 active (nil) 02030302-0000 [key=0x30323033303330322d30303030]
+ 697372241 active (nil) 04030104-00000004 [key=0x04030104]
+ 716295270 active (nil) 02040202-0000 [key=0x30323034303230322d30303030]
+ 754588963 active (nil) 00030300-00000000-00000003-00000003 [key=0x00030300]
+ 784563584 active (nil) 00030201-00000003 [key=0x00030201]
+ 784897958 active (nil) 01040101-0000 [key=0x30313034303130312d30303030]
+ 790162309 active (nil) 01030101-00000001 [key=0x01030101]
+ 795844907 active (nil) 01030201-0000 [key=0x30313033303230312d30303030]
+ 798265046 active (nil) 00000001 [key=0x00000001]
+ 800932624 active (nil) 00030201-0000 [key=0x30303033303230312d30303030]
+ 831920480 active (nil) 03030203-00000003-00000003 [key=0x03030203]
+ 852259633 active (nil) 00030100-0000 [key=0x30303033303130302d30303030]
+ 861106868 active (nil) 00030203-0000 [key=0x30303033303230332d30303030]
+ 882072506 active (nil) 00000200 [key=0x00000200]
+ 938653636 active (nil) 02040202-00000002-00000004 [key=0x02040202]
+ 966032096 active (nil) 01030301-00000001-00000003-00000003 [key=0x01030301]
+ 967182805 active (nil) 01040001 [key=0x01040001]
+ 973029041 active (nil) 00000203-0000 [key=0x30303030303230332d30303030]
+ 1000344165 active (nil) 00020202-0000 [key=0x30303032303230322d30303030]
+ 1066184170 active (nil) 02030102-00000002 [key=0x02030102]
+ 1080462772 active (nil) 00020203-0000 [key=0x30303032303230332d30303030]
+ 1081505025 active (nil) 00010202-0000 [key=0x30303031303230322d30303030]
+ 1097176083 active (nil) 00040200 [key=0x3030303430323030]
+ 1117042815 active (nil) 04040004 [key=0x04040004]
+ 1144050900 active (nil) 00010201-00000001 [key=0x00010201]
+ 1167330940 active (nil) 00040300-0000 [key=0x30303034303330302d30303030]
+ 1169240636 active (nil) 00000203-00000000-00000002-00000003 [key=0x00000203]
+ 1189137991 active (nil) 02030102-0000 [key=0x30323033303130322d30303030]
+ 1197057368 active (nil) 00020201-00000002 [key=0x00020201]
+ 1235227824 active (nil) 00040203-00000004-00000002-00000003 [key=0x00040203]
+ 1287315193 active (nil) 03030103-00000003 [key=0x03030103]
+ 1297386275 active (nil) 00000401 [key=0x00000401]
+ 1309639510 active (nil) 03030003 [key=0x03030003]
+ 1314112165 active (nil) 02040102-0000 [key=0x30323034303130322d30303030]
+ 1335783113 active (nil) 00030300-0000 [key=0x30303033303330302d30303030]
+ 1347419426 active (nil) 01040101-00000001 [key=0x01040101]
+ 1363395010 active (nil) 03030303-0000 [key=0x30333033303330332d30303030]
+ 1425387246 active (nil) 03040203-0000 [key=0x30333034303230332d30303030]
+ 1434806112 active (nil) 03030203-0000 [key=0x30333033303230332d30303030]
+ 1437753510 active (nil) 03040203-00000003-00000004 [key=0x03040203]
+ 1479979693 active (nil) 00000202-00000000-00000002 [key=0x00000202]
+ 1496471938 active (nil) 04030004 [key=0x04030004]
+ 1512898519 active (nil) 00000101-0000 [key=0x30303030303130312d30303030]
+ 1528964958 active (nil) 00010200 [key=0x00010200]
+ 1536865381 active (nil) 03030103-0000 [key=0x30333033303130332d30303030]
+ 1561276095 active (nil) 03040003 [key=0x03040003]
+ 1575161018 active (nil) 04040104-0000 [key=0x30343034303130342d30303030]
+ 1592078974 active (nil) 00000201-0000 [key=0x30303030303230312d30303030]
+ 1602785539 active (nil) 00040300-00000000-00000004-00000003 [key=0x00040300]
+ 1623404338 active (nil) 00000101 [key=0x00000101]
+ 1624278317 active (nil) 01030001 [key=0x01030001]
+ 1630861860 active (nil) 00030200-00000000-00000003 [key=0x00030200]
+ 1633879510 active (nil) 03040103-0000 [key=0x30333034303130332d30303030]
+ 1648312053 active (nil) 00040201-00000004 [key=0x00040201]
+ 1660560434 active (nil) 00030200-0000 [key=0x30303033303230302d30303030]
+ 1699628683 active (nil) 00010203-0000 [key=0x30303031303230332d30303030]
+ 1708643668 active (nil) 01040301-00000001-00000004-00000003 [key=0x01040301]
+ 1711475810 active (nil) 02030302-00000002-00000003-00000003 [key=0x02030302]
+ 1712318676 active (nil) 02040002 [key=0x02040002]
+ 1763902175 active (nil) 00010201-0000 [key=0x30303031303230312d30303030]
+ 1796761234 active (nil) 00030000 [key=0x00030000]
+ 1807083480 active (nil) 03040303-00000003-00000004-00000003 [key=0x03040303]
+ 1861545753 active (nil) 01030201-00000001-00000003 [key=0x01030201]
+ 1908322944 active (nil) 04040104-00000004 [key=0x04040104]
+ 1908628640 active (nil) 02030202-00000002-00000003 [key=0x02030202]
+ 1916263269 active (nil) 00000202-0000 [key=0x30303030303230322d30303030]
+ 1918338688 active (nil) 00030202-00000003-00000002 [key=0x00030202]
+ 1955482850 active (nil) 00000301 [key=0x00000301]
+ 1964458110 active (nil) 00030202-0000 [key=0x30303033303230322d30303030]
+ 1974874486 active (nil) 00030100-00000000 [key=0x00030100]
+ 2009833716 active (nil) 00030200 [key=0x3030303330323030]
+ 2024943138 active (nil) 00040000 [key=0x00040000]
+ 2043483434 active (nil) 01040201-0000 [key=0x30313034303230312d30303030]
+ 2110453054 active (nil) 04030204-00000004-00000003 [key=0x04030204]
+ 2117555856 active (nil) 04030204-0000 [key=0x30343033303230342d30303030]
+ 2137944949 active (nil) 00040100-00000000 [key=0x00040100]
+ 2138505132 active (nil) 03040303-0000 [key=0x30333034303330332d30303030]
+pmdaCacheStoreKey hash stats ...
+hash once: 88 times
+inst hash
+ [000] -> 1908322944 -> 1434806112 -> 199045408 -> 1908628640 -> 966032096 -> 784563584 -> 831920480 -> 1918338688
+ [001] -> 507343265 -> 1081505025 -> 392010465
+ [002] -> 360868066 -> 1496471938 -> 1363395010 -> 1711475810 -> 165131426 -> 2024943138 -> 1347419426 -> 1955482850
+ [003] -> 1297386275 -> 182280771 -> 754588963 -> 1602785539
+ [004] -> 220558980 -> 639936196 -> 938653636 -> 1630861860 -> 104588964
+ [005] -> 74630565 -> 1536865381 -> 1314112165 -> 790162309 -> 1916263269 -> 602762181 -> 1000344165
+ [006] -> 317809446 -> 1437753510 -> 716295270 -> 784897958
+ [007] -> 398910663 -> 1189137991
+ [008]
+ [009] -> 528529257 -> 458635465 -> 1335783113
+ [010] -> 1066184170 -> 2043483434 -> 582316426
+ [011] -> 1699628683 -> 795844907 -> 306260587
+ [012] -> 2138505132
+ [013] -> 1479979693 -> 1624278317 -> 412123725
+ [014] -> 1425387246
+ [015]
+ [016] -> 2117555856 -> 1235227824 -> 800932624
+ [017] -> 568696113 -> 697372241 -> 973029041 -> 852259633 -> 240779825 -> 440045073
+ [018] -> 165781074 -> 450119154 -> 1623404338 -> 1796761234 -> 1660560434
+ [019] -> 279278835 -> 1097176083 -> 596372403 -> 467540531
+ [020] -> 861106868 -> 2009833716 -> 1712318676 -> 1144050900 -> 1708643668 -> 1080462772
+ [021] -> 1648312053 -> 2137944949 -> 967182805
+ [022] -> 1633879510 -> 384254102 -> 798265046 -> 1974874486 -> 608931894 -> 64710806 -> 1309639510
+ [023] -> 418019767 -> 341902007 -> 637487991 -> 1512898519
+ [024] -> 1807083480 -> 1197057368 -> 582252600
+ [025] -> 681317689 -> 1861545753 -> 1287315193
+ [026] -> 1575161018 -> 882072506
+ [027] -> 154213275 -> 35439323
+ [028] -> 1169240636 -> 1167330940
+ [029]
+ [030] -> 2110453054 -> 1964458110 -> 1528964958 -> 1592078974
+ [031] -> 1117042815 -> 39260735 -> 506927615 -> 1561276095 -> 1763902175
+name hash
+ [000] -> 1496471938 -> 1434806112 -> 199045408 -> 1169240636
+ [001] -> 317809446 -> 1908322944 -> 507343265 -> 1144050900 -> 1081505025 -> 392010465
+ [002] -> 1363395010 -> 1066184170
+ [003] -> 784563584
+ [004] -> 220558980 -> 1561276095 -> 458635465 -> 104588964 -> 1708643668
+ [005] -> 398910663 -> 697372241 -> 74630565 -> 596372403 -> 1536865381 -> 1314112165 -> 1916263269 -> 602762181 -> 1000344165
+ [006] -> 182280771 -> 716295270 -> 1861545753 -> 966032096 -> 784897958
+ [007] -> 1235227824 -> 790162309 -> 1479979693 -> 64710806 -> 1189137991 -> 1955482850
+ [008] -> 154213275
+ [009] -> 528529257 -> 1335783113
+ [010] -> 1117042815 -> 582252600 -> 2043483434 -> 582316426
+ [011] -> 938653636 -> 1699628683 -> 795844907 -> 306260587
+ [012] -> 2138505132
+ [013] -> 1197057368 -> 412123725 -> 831920480
+ [014] -> 1425387246 -> 882072506 -> 1974874486
+ [015] -> 1796761234 -> 1918338688
+ [016] -> 2117555856 -> 800932624 -> 798265046
+ [017] -> 568696113 -> 2110453054 -> 639936196 -> 973029041 -> 852259633 -> 240779825
+ [018] -> 165781074 -> 1711475810 -> 1660560434
+ [019] -> 279278835 -> 1097176083 -> 467540531 -> 1347419426
+ [020] -> 1437753510 -> 861106868 -> 2009833716 -> 1528964958 -> 754588963 -> 35439323 -> 1080462772
+ [021] -> 165131426
+ [022] -> 1633879510 -> 384254102 -> 608931894 -> 1602785539
+ [023] -> 360868066 -> 418019767 -> 1297386275 -> 1512898519
+ [024]
+ [025] -> 450119154 -> 681317689 -> 967182805
+ [026] -> 1575161018 -> 1908628640 -> 440045073
+ [027] -> 637487991 -> 1624278317 -> 2024943138
+ [028] -> 1712318676 -> 1623404338 -> 1167330940 -> 1309639510
+ [029] -> 39260735 -> 1648312053 -> 1630861860
+ [030] -> 1807083480 -> 1964458110 -> 341902007 -> 1592078974 -> 2137944949
+ [031] -> 506927615 -> 1763902175 -> 1287315193
diff --git a/qa/490 b/qa/490
new file mode 100755
index 0000000..3203c13
--- /dev/null
+++ b/qa/490
@@ -0,0 +1,175 @@
+#!/bin/sh
+# PCP QA Test No. 490
+# check for mem leaks in pmlogrewrite
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+_check_valgrind
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ if [ ! -f "$1.0" ]
+ then
+ echo "Arrgh ... $1.0 missing" | _filter
+ return
+ fi
+ if [ ! -f "$2.0" ]
+ then
+ echo "Arrgh ... $2.0 missing" | _filter
+ return
+ fi
+ pmdumplog -z -a $1 | tee -a $seq.full | sed -e '/\[[0-9][0-9]* bytes]/d' >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full | sed -e '/\[[0-9][0-9]* bytes]/d' >$tmp.out
+ if [ -n "$oldfilter" ]
+ then
+ $oldfilter <$tmp.in >$tmp.tmp
+ mv $tmp.tmp $tmp.in
+ fi
+ if [ -n "$newfilter" ]
+ then
+ $newfilter <$tmp.out >$tmp.tmp
+ mv $tmp.tmp $tmp.out
+ fi
+ echo "pmdumplog diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# find sample.mirage values and rescale like pmlogrewrite is expected to
+#
+# 10:47:07.419 29.0.37 (sample.mirage):
+# inst [0 or "m-00"] value 27
+# inst [12 or "m-12"] value 1226
+# inst [13 or "m-13"] value 1325
+# inst [15 or "m-15"] value 1524
+# inst [16 or "m-16"] value 1623
+# 29.0.7 (sample.drift): value 88
+_scale()
+{
+ $PCP_AWK_PROG '
+/\(sample.mirage\):/ { xlate=1; print; next }
+xlate == 1 && $1 != "inst" { xlate = 0 }
+xlate == 1 && $1 == "inst" { $6 = int((3600*$6 + 512)/1024) }
+ { print }'
+}
+
+# same as _scale, w/out scale conversion ... copy awk whitespace rewriting
+_noscale()
+{
+ $PCP_AWK_PROG '
+/\(sample.mirage\):/ { xlate=1; print; next }
+xlate == 1 && $1 != "inst" { xlate = 0 }
+xlate == 1 && $1 == "inst" { $6 = $6+0 }
+ { print }'
+}
+
+# real QA test starts here
+
+cat <<End-of-File >$tmp.conf
+global {
+ hostname -> whizz-bang.engr.sgi.com
+ TZ -> "GMT+10"
+ Time -> +30
+}
+indom 1.5 {
+ indom -> 42.10
+ iname "15 minute" -> "forever"
+ iname "1 minute" -> "1 minute is not very long unlike this string"
+ inst 15 -> 9999
+}
+metric 1.*.* { pmid -> 42.*.* }
+metric irix.kernel.all.load { name->load type->double }
+metric hinv.ncpu { name->hinv.number_of_cpus type->U64 }
+End-of-File
+rm -f $tmp.new.*
+cat $tmp.conf >>$seq.full
+_run_valgrind pmlogrewrite -c $tmp.conf src/rattle $tmp.new 2>$tmp.err | _filter
+cat $tmp.err >>$seq.full
+_cmp src/rattle $tmp.new
+
+cat <<End-of-File >$tmp.conf
+metric sample.mirage_longlong { type->U32 indom->NULL }
+metric sample.scale_step.time_up_secs { type->FLOAT units->0,1,0,0,MSEC,0 }
+End-of-File
+rm -f $tmp.new.*
+cat $tmp.conf >>$seq.full
+_run_valgrind pmlogrewrite -c $tmp.conf src/sample_expr $tmp.new 2>$tmp.err | _filter
+cat $tmp.err >>$seq.full
+_cmp src/sample_expr $tmp.new
+
+cat <<End-of-File >$tmp.conf
+metric sample.bin { name -> x23456789.sample.bin type -> 64 }
+metric sample.mirage { type -> FLOAT units -> 1,-1,0,MBYTE,HOUR,0 }
+metric sample.drift { delete }
+indom 29.2 {
+ iname "bin-100" -> delete
+ iname "bin-400" -> delete
+ iname "bin-500" -> delete
+ iname "bin-600" -> delete
+ inst 900 -> delete }
+indom 29.3 { iname "m-00" -> delete inst 33 -> delete }
+End-of-File
+rm -f $tmp.new.*
+cat $tmp.conf >>$seq.full
+_run_valgrind pmlogrewrite -s -c $tmp.conf src/mirage $tmp.new 2>$tmp.err | _filter
+cat $tmp.err >>$seq.full
+oldfilter=_scale
+newfilter=_noscale
+_cmp src/mirage $tmp.new
+
+echo
+echo "=== correctness checked in QA 493 ... only care about valgrind here ==="
+cat <<End-of-File >$tmp.conf
+metric sample.ulong.bin_ctr {
+ indom -> NULL output MIN
+ type -> DOUBLE
+ units -> 1,0,0,BYTE,0,0
+}
+metric sample.ulonglong.bin_ctr {
+ indom -> NULL output MAX
+ type -> 32
+ units -> 1,0,0,BYTE,0,0
+}
+metric sampledso.double.bin_ctr {
+ indom -> NULL output AVG
+ type -> FLOAT
+}
+metric sample.float.bin_ctr {
+ indom -> NULL output SUM
+ type -> U64
+}
+metric sample.longlong.bin_ctr {
+ indom -> NULL output FIRST
+ type -> 64
+ units -> 1,-1,0,KBYTE,SEC,0
+}
+indom 29.2 { inst 200 -> DELETE }
+indom 30.2 { inst 800 -> DELETE }
+End-of-File
+rm -f $tmp.new.*
+cat $tmp.conf >>$seq.full
+_run_valgrind pmlogrewrite -s -c $tmp.conf src/mirage $tmp.new 2>$tmp.err | _filter
+cat $tmp.err >>$seq.full
+
+# success, all done
+exit
diff --git a/qa/490.out b/qa/490.out
new file mode 100644
index 0000000..883609d
--- /dev/null
+++ b/qa/490.out
@@ -0,0 +1,1065 @@
+QA output created by 490
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pmlogrewrite -c TMP.conf src/rattle TMP.new
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,18 +1,18 @@
+-Note: timezone set to local timezone of host "rattle" from archive
++Note: timezone set to local timezone of host "whizz-bang.engr.sgi.com" from archive
+
+ Log Label (Log Format Version 2)
+-Performance metrics from host rattle
+- commencing Sat May 17 22:22:42.025 1997
+- ending Mon May 19 11:22:42.021 1997
++Performance metrics from host whizz-bang.engr.sgi.com
++ commencing Sat May 17 01:23:12.025 1997
++ ending Sun May 18 14:23:12.021 1997
+
+ Descriptions for Metrics in the Log ...
+-PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++PMID: 42.18.3 (load)
++ Data Type: double InDom: 42.10 0xa80000a
+ Semantics: instant Units: none
+-PMID: 1.18.2 (hinv.ncpu)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++PMID: 42.18.2 (hinv.number_of_cpus)
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+-PMID: 1.26.7 (hinv.ndisk)
++PMID: 42.26.7 (hinv.ndisk)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+@@ -26,99 +26,99 @@
+ Semantics: instant Units: none
+
+ Instance Domains in the Log ...
+-InDom: 1.5
+-23:22:42.011 3 instances
+- 1 or "1 minute"
++InDom: 42.10
++02:23:12.011 3 instances
++ 1 or "1 minute is not very long unlike this string"
+ 5 or "5 minute"
+- 15 or "15 minute"
++ 9999 or "forever"
+ InDom: 2.1
+-22:22:42.025 1 instances
++01:23:12.025 1 instances
+ 19856 or "19856"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-22:22:42.025 0 132 132
+-22:22:42.060 0 351 284
+-23:22:42.011 0 450 344
+-11:22:42.021 0 590 1784
++01:23:12.025 0 132 132
++01:23:12.060 0 351 284
++02:23:12.011 0 460 356
++14:23:12.021 0 618 2228
+
+-22:22:42.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
++01:23:12.025 2.3.3 (pmcd.pmlogger.host): inst [19856 or "19856"] value "rattle.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [19856 or "19856"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [19856 or "19856"] value "/var/adm/pcplog/rattle/970517.22.22"
+
+-22:22:42.060 1.26.7 (hinv.ndisk): value 2
+- 1.18.2 (hinv.ncpu): value 1
++01:23:12.060 42.26.7 (hinv.ndisk): value 2
++ 42.18.2 (hinv.number_of_cpus): value 1
+
+-23:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++02:23:12.011 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-00:22:42.011 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++03:23:12.011 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-01:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++04:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-02:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++05:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-03:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.013671875
++06:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.013671875
+
+-04:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.01953125
++07:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.01953125
+
+-05:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
++08:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 1
+
+-06:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2
++09:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 2
+
+-07:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++10:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-08:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++11:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-09:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.043945312
++12:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.0439453125
+
+-10:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.015625
++13:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.015625
+
+-11:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++14:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-12:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++15:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-13:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++16:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-14:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++17:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-15:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++18:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-16:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
++19:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 1
+
+-17:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++20:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-18:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++21:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-19:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++22:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-20:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.025390625
++23:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.025390625
+
+-21:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2.0019531
++00:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 2.001953125
+
+-22:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
++01:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 1
+
+-23:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 1
++02:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 1
+
+-00:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2
++03:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 2
+
+-01:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.01171875
++04:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.01171875
+
+-02:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.0087890625
++05:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.0087890625
+
+-03:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++06:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-04:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2
++07:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 2
+
+-05:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++08:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-06:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 2.9785156
++09:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 2.978515625
+
+-07:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++10:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-08:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++11:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-09:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++12:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-10:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0
++13:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0
+
+-11:22:42.021 1.18.3 (irix.kernel.all.load): inst [1 or "1 minute"] value 0.032226562
++14:23:12.021 42.18.3 (load): inst [1 or "1 minute is not very long unlike this string"] value 0.0322265625
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pmlogrewrite -c TMP.conf src/sample_expr TMP.new
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -37,7 +37,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / hour
+ PMID: 29.0.38 (sample.mirage_longlong)
+- Data Type: 64-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / millisec
+ PMID: 29.0.68 (sample.scale_step.count_down)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+@@ -46,8 +46,8 @@
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+ PMID: 29.0.69 (sample.scale_step.time_up_secs)
+- Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: instant Units: sec
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
++ Semantics: instant Units: millisec
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+@@ -74,7 +74,7 @@
+ Log Vol end(meta) end(log)
+ 21:58:59.005 0 132 132
+ 21:58:59.505 0 350 284
+-21:59:04.005 0 1305 5432
++21:59:04.005 0 1305 4028
+
+ 21:58:59.005 2.3.3 (pmcd.pmlogger.host): inst [3931 or "3931"] value "bozo.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [3931 or "3931"] value 4331
+@@ -91,15 +91,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 34000000
+- inst [46 or "m-46"] value 4633000000
+- inst [47 or "m-47"] value 4732000000
+- inst [10 or "m-10"] value 1031000000
+- inst [15 or "m-15"] value 1530000000
+- inst [16 or "m-16"] value 1629000000
+- inst [17 or "m-17"] value 1728000000
+- inst [18 or "m-18"] value 1827000000
++ 29.0.38 (sample.mirage_longlong): value 34000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 26
+ inst [46 or "m-46"] value 4625
+@@ -121,15 +113,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 18000000
+- inst [46 or "m-46"] value 4617000000
+- inst [47 or "m-47"] value 4716000000
+- inst [10 or "m-10"] value 1015000000
+- inst [15 or "m-15"] value 1514000000
+- inst [16 or "m-16"] value 1613000000
+- inst [17 or "m-17"] value 1712000000
+- inst [18 or "m-18"] value 1811000000
++ 29.0.38 (sample.mirage_longlong): value 18000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 10
+ inst [46 or "m-46"] value 4609
+@@ -151,15 +135,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 2000000
+- inst [46 or "m-46"] value 4601000000
+- inst [47 or "m-47"] value 4800000000
+- inst [10 or "m-10"] value 1099000000
+- inst [15 or "m-15"] value 1598000000
+- inst [16 or "m-16"] value 1697000000
+- inst [17 or "m-17"] value 1796000000
+- inst [18 or "m-18"] value 1895000000
++ 29.0.38 (sample.mirage_longlong): value 2000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 94
+ inst [46 or "m-46"] value 4693
+@@ -181,15 +157,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 1
+ 29.0.66 (sample.scale_step.bytes_down): value 1
+ 29.0.65 (sample.scale_step.bytes_up): value 1
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 86000000
+- inst [46 or "m-46"] value 4685000000
+- inst [47 or "m-47"] value 4784000000
+- inst [10 or "m-10"] value 1083000000
+- inst [15 or "m-15"] value 1582000000
+- inst [16 or "m-16"] value 1681000000
+- inst [17 or "m-17"] value 1780000000
+- inst [18 or "m-18"] value 1879000000
++ 29.0.38 (sample.mirage_longlong): value 86000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 78
+ inst [46 or "m-46"] value 4677
+@@ -211,15 +179,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 70000000
+- inst [46 or "m-46"] value 4669000000
+- inst [47 or "m-47"] value 4768000000
+- inst [10 or "m-10"] value 1067000000
+- inst [15 or "m-15"] value 1566000000
+- inst [16 or "m-16"] value 1665000000
+- inst [17 or "m-17"] value 1764000000
+- inst [18 or "m-18"] value 1863000000
++ 29.0.38 (sample.mirage_longlong): value 70000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 62
+ inst [46 or "m-46"] value 4661
+@@ -241,15 +201,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 54000000
+- inst [46 or "m-46"] value 4653000000
+- inst [47 or "m-47"] value 4752000000
+- inst [10 or "m-10"] value 1051000000
+- inst [15 or "m-15"] value 1550000000
+- inst [16 or "m-16"] value 1649000000
+- inst [17 or "m-17"] value 1748000000
+- inst [18 or "m-18"] value 1847000000
++ 29.0.38 (sample.mirage_longlong): value 54000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 46
+ inst [46 or "m-46"] value 4645
+@@ -271,15 +223,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 38000000
+- inst [46 or "m-46"] value 4637000000
+- inst [47 or "m-47"] value 4736000000
+- inst [10 or "m-10"] value 1035000000
+- inst [15 or "m-15"] value 1534000000
+- inst [16 or "m-16"] value 1633000000
+- inst [17 or "m-17"] value 1732000000
+- inst [18 or "m-18"] value 1831000000
++ 29.0.38 (sample.mirage_longlong): value 38000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 30
+ inst [46 or "m-46"] value 4629
+@@ -301,15 +245,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 22000000
+- inst [46 or "m-46"] value 4621000000
+- inst [47 or "m-47"] value 4720000000
+- inst [10 or "m-10"] value 1019000000
+- inst [15 or "m-15"] value 1518000000
+- inst [16 or "m-16"] value 1617000000
+- inst [17 or "m-17"] value 1716000000
+- inst [18 or "m-18"] value 1815000000
++ 29.0.38 (sample.mirage_longlong): value 22000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 14
+ inst [46 or "m-46"] value 4613
+@@ -331,15 +267,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 10
+ 29.0.66 (sample.scale_step.bytes_down): value 1099511627776
+ 29.0.65 (sample.scale_step.bytes_up): value 2
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 6000000
+- inst [46 or "m-46"] value 4605000000
+- inst [47 or "m-47"] value 4704000000
+- inst [10 or "m-10"] value 1003000000
+- inst [15 or "m-15"] value 1502000000
+- inst [16 or "m-16"] value 1601000000
+- inst [17 or "m-17"] value 1800000000
+- inst [18 or "m-18"] value 1899000000
++ 29.0.38 (sample.mirage_longlong): value 6000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 98
+ inst [46 or "m-46"] value 4697
+@@ -361,15 +289,7 @@
+ 29.0.67 (sample.scale_step.count_up): value 100
+ 29.0.66 (sample.scale_step.bytes_down): value 549755813888
+ 29.0.65 (sample.scale_step.bytes_up): value 4
+- 29.0.38 (sample.mirage_longlong):
+- inst [0 or "m-00"] value 90000000
+- inst [46 or "m-46"] value 4689000000
+- inst [47 or "m-47"] value 4788000000
+- inst [10 or "m-10"] value 1087000000
+- inst [15 or "m-15"] value 1586000000
+- inst [16 or "m-16"] value 1685000000
+- inst [17 or "m-17"] value 1784000000
+- inst [18 or "m-18"] value 1883000000
++ 29.0.38 (sample.mirage_longlong): value 90000000
+ 29.0.37 (sample.mirage):
+ inst [0 or "m-00"] value 82
+ inst [46 or "m-46"] value 4681
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pmlogrewrite -s -c TMP.conf src/mirage TMP.new
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -6,15 +6,12 @@
+ ending Tue Feb 25 11:05:07.411 1997
+
+ Descriptions for Metrics in the Log ...
+-PMID: 29.0.6 (sample.bin)
+- Data Type: 32-bit int InDom: 29.2 0x7400002
+- Semantics: instant Units: none
+-PMID: 29.0.7 (sample.drift)
+- Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
++PMID: 29.0.6 (x23456789.sample.bin)
++ Data Type: 64-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
+- Semantics: instant Units: Kbyte / sec
++ Data Type: float InDom: 29.3 0x7400003
++ Semantics: instant Units: Mbyte / hour
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+@@ -27,39 +24,30 @@
+
+ Instance Domains in the Log ...
+ InDom: 29.2
+-10:46:07.406 9 instances
+- 100 or "bin-100"
++10:46:07.406 4 instances
+ 200 or "bin-200"
+ 300 or "bin-300"
+- 400 or "bin-400"
+- 500 or "bin-500"
+- 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+- 900 or "bin-900"
+ InDom: 29.3
+-10:46:07.406 5 instances
+- 0 or "m-00"
++10:46:07.406 4 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 14 or "m-14"
+ 15 or "m-15"
+-10:47:07.419 5 instances
+- 0 or "m-00"
++10:47:07.419 4 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+ 16 or "m-16"
+-10:48:07.406 7 instances
+- 0 or "m-00"
++10:48:07.406 6 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+ 16 or "m-16"
+ 17 or "m-17"
+ 18 or "m-18"
+-10:49:07.407 8 instances
+- 0 or "m-00"
++10:49:07.407 7 instances
+ 12 or "m-12"
+ 13 or "m-13"
+ 15 or "m-15"
+@@ -67,8 +55,7 @@
+ 18 or "m-18"
+ 19 or "m-19"
+ 20 or "m-20"
+-10:50:07.407 8 instances
+- 0 or "m-00"
++10:50:07.407 7 instances
+ 12 or "m-12"
+ 15 or "m-15"
+ 17 or "m-17"
+@@ -76,23 +63,20 @@
+ 19 or "m-19"
+ 20 or "m-20"
+ 21 or "m-21"
+-10:51:07.407 6 instances
+- 0 or "m-00"
++10:51:07.407 5 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+-10:53:07.408 7 instances
+- 0 or "m-00"
++10:53:07.408 6 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+ 19 or "m-19"
+ 21 or "m-21"
+ 22 or "m-22"
+-10:54:07.408 8 instances
+- 0 or "m-00"
++10:54:07.408 7 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 18 or "m-18"
+@@ -100,80 +84,67 @@
+ 21 or "m-21"
+ 22 or "m-22"
+ 23 or "m-23"
+-10:55:07.409 7 instances
+- 0 or "m-00"
++10:55:07.409 6 instances
+ 15 or "m-15"
+ 17 or "m-17"
+ 19 or "m-19"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+-10:56:07.409 6 instances
+- 0 or "m-00"
++10:56:07.409 5 instances
+ 17 or "m-17"
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 25 or "m-25"
+-10:57:07.409 5 instances
+- 0 or "m-00"
++10:57:07.409 4 instances
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 25 or "m-25"
+-10:58:07.409 5 instances
+- 0 or "m-00"
++10:58:07.409 4 instances
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 26 or "m-26"
+-10:59:07.410 7 instances
+- 0 or "m-00"
++10:59:07.410 6 instances
+ 22 or "m-22"
+ 23 or "m-23"
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+-11:00:07.410 6 instances
+- 0 or "m-00"
++11:00:07.410 5 instances
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+ 29 or "m-29"
+-11:01:07.410 5 instances
+- 0 or "m-00"
++11:01:07.410 4 instances
+ 24 or "m-24"
+ 26 or "m-26"
+ 27 or "m-27"
+ 28 or "m-28"
+-11:02:07.411 5 instances
+- 0 or "m-00"
++11:02:07.411 4 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 28 or "m-28"
+ 30 or "m-30"
+-11:03:07.411 6 instances
+- 0 or "m-00"
++11:03:07.411 5 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 28 or "m-28"
+ 30 or "m-30"
+ 31 or "m-31"
+-11:04:07.411 6 instances
+- 0 or "m-00"
++11:04:07.411 4 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 30 or "m-30"
+ 32 or "m-32"
+- 33 or "m-33"
+-11:05:07.411 5 instances
+- 0 or "m-00"
++11:05:07.411 3 instances
+ 24 or "m-24"
+ 27 or "m-27"
+ 30 or "m-30"
+- 33 or "m-33"
+ InDom: 2.1
+ 10:45:08.440 1 instances
+ 24763 or "24763"
+@@ -182,87 +153,65 @@
+ Log Vol end(meta) end(log)
+ 10:45:08.440 0 132 132
+ 10:46:07.406 0 351 288
+-10:47:07.419 0 771 464
+-10:48:07.406 0 864 640
+-10:49:07.407 0 983 832
+-10:50:07.407 0 1115 1032
+-10:51:07.407 0 1247 1232
+-10:53:07.408 0 1353 1600
+-10:54:07.408 0 1472 1792
+-10:55:07.409 0 1604 1992
+-10:56:07.409 0 1723 2184
+-10:57:07.409 0 1829 2368
+-10:58:07.409 0 1922 2544
+-10:59:07.410 0 2015 2720
+-11:00:07.410 0 2134 2912
+-11:01:07.410 0 2240 3096
+-11:02:07.411 0 2333 3272
+-11:03:07.411 0 2426 3448
+-11:04:07.411 0 2532 3632
+-11:05:07.411 0 2638 3816
++10:47:07.419 0 636 476
++10:48:07.406 0 716 664
++10:49:07.407 0 822 884
++10:50:07.407 0 941 1120
++10:51:07.407 0 1060 1356
++10:53:07.408 0 1153 1764
++10:54:07.408 0 1259 1984
++10:55:07.409 0 1378 2220
++10:56:07.409 0 1484 2440
++10:57:07.409 0 1577 2644
++10:58:07.409 0 1657 2832
++10:59:07.410 0 1737 3020
++11:00:07.410 0 1843 3240
++11:01:07.410 0 1936 3444
++11:02:07.411 0 2016 3632
++11:03:07.411 0 2096 3820
++11:04:07.411 0 2189 4024
++11:05:07.411 0 2269 4212
+
+ 10:45:08.440 2.3.3 (pmcd.pmlogger.host): inst [24763 or "24763"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [24763 or "24763"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [24763 or "24763"] value "/usr/people/kenmcd/isms/pcp/qa/src/mirage"
+
+ 10:46:07.406 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 113
+ inst [12 or "m-12"] value 4328
+ inst [13 or "m-13"] value 4676
+ inst [14 or "m-14"] value 5024
+ inst [15 or "m-15"] value 5372
+- 29.0.7 (sample.drift): value 111
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:47:07.419 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 95
+ inst [12 or "m-12"] value 4310
+ inst [13 or "m-13"] value 4658
+ inst [15 or "m-15"] value 5358
+ inst [16 or "m-16"] value 5706
+- 29.0.7 (sample.drift): value 88
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:48:07.406 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 77
+ inst [12 or "m-12"] value 4293
+ inst [13 or "m-13"] value 4641
+ inst [15 or "m-15"] value 5340
+ inst [16 or "m-16"] value 5688
+ inst [17 or "m-17"] value 6036
+ inst [18 or "m-18"] value 6384
+- 29.0.7 (sample.drift): value 83
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:49:07.407 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 53
+ inst [12 or "m-12"] value 4268
+ inst [13 or "m-13"] value 4616
+ inst [15 or "m-15"] value 5316
+@@ -270,20 +219,13 @@
+ inst [18 or "m-18"] value 6363
+ inst [19 or "m-19"] value 6711
+ inst [20 or "m-20"] value 7059
+- 29.0.7 (sample.drift): value 58
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:50:07.407 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 25
+ inst [12 or "m-12"] value 4240
+ inst [15 or "m-15"] value 5291
+ inst [17 or "m-17"] value 5991
+@@ -291,78 +233,50 @@
+ inst [19 or "m-19"] value 6687
+ inst [20 or "m-20"] value 7035
+ inst [21 or "m-21"] value 7734
+- 29.0.7 (sample.drift): value 26
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:51:07.407 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 348
+ inst [15 or "m-15"] value 5618
+ inst [17 or "m-17"] value 6318
+ inst [18 or "m-18"] value 6666
+ inst [19 or "m-19"] value 7014
+ inst [21 or "m-21"] value 7713
+- 29.0.7 (sample.drift): value 74
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:52:07.407 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 327
+ inst [15 or "m-15"] value 5597
+ inst [17 or "m-17"] value 6296
+ inst [18 or "m-18"] value 6645
+ inst [19 or "m-19"] value 6993
+ inst [21 or "m-21"] value 7692
+- 29.0.7 (sample.drift): value 75
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:53:07.408 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 306
+ inst [15 or "m-15"] value 5576
+ inst [17 or "m-17"] value 6275
+ inst [18 or "m-18"] value 6623
+ inst [19 or "m-19"] value 6971
+ inst [21 or "m-21"] value 7671
+ inst [22 or "m-22"] value 8019
+- 29.0.7 (sample.drift): value 86
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:54:07.408 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 281
+ inst [15 or "m-15"] value 5551
+ inst [17 or "m-17"] value 6251
+ inst [18 or "m-18"] value 6599
+@@ -370,220 +284,135 @@
+ inst [21 or "m-21"] value 7646
+ inst [22 or "m-22"] value 7995
+ inst [23 or "m-23"] value 8343
+- 29.0.7 (sample.drift): value 119
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:55:07.409 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 253
+ inst [15 or "m-15"] value 5523
+ inst [17 or "m-17"] value 6223
+ inst [19 or "m-19"] value 6922
+ inst [22 or "m-22"] value 7973
+ inst [23 or "m-23"] value 8321
+ inst [24 or "m-24"] value 8670
+- 29.0.7 (sample.drift): value 150
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:56:07.409 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 229
+ inst [17 or "m-17"] value 6202
+ inst [22 or "m-22"] value 7956
+ inst [23 or "m-23"] value 8304
+ inst [24 or "m-24"] value 8652
+ inst [25 or "m-25"] value 9000
+- 29.0.7 (sample.drift): value 153
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:57:07.409 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 207
+ inst [22 or "m-22"] value 7938
+ inst [23 or "m-23"] value 8286
+ inst [24 or "m-24"] value 8634
+ inst [25 or "m-25"] value 8982
+- 29.0.7 (sample.drift): value 189
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:58:07.409 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 190
+ inst [22 or "m-22"] value 7921
+ inst [23 or "m-23"] value 8269
+ inst [24 or "m-24"] value 8617
+ inst [26 or "m-26"] value 9316
+- 29.0.7 (sample.drift): value 234
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 10:59:07.410 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 172
+ inst [22 or "m-22"] value 7903
+ inst [23 or "m-23"] value 8251
+ inst [24 or "m-24"] value 8599
+ inst [26 or "m-26"] value 9299
+ inst [27 or "m-27"] value 9647
+ inst [28 or "m-28"] value 9995
+- 29.0.7 (sample.drift): value 282
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 11:00:07.410 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 148
+ inst [24 or "m-24"] value 8582
+ inst [26 or "m-26"] value 9281
+ inst [27 or "m-27"] value 9629
+ inst [28 or "m-28"] value 9977
+ inst [29 or "m-29"] value 10325
+- 29.0.7 (sample.drift): value 303
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 11:01:07.410 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 127
+ inst [24 or "m-24"] value 8561
+ inst [26 or "m-26"] value 9260
+ inst [27 or "m-27"] value 9608
+ inst [28 or "m-28"] value 9956
+- 29.0.7 (sample.drift): value 271
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 11:02:07.411 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 109
+ inst [24 or "m-24"] value 8543
+ inst [27 or "m-27"] value 9594
+ inst [28 or "m-28"] value 9942
+ inst [30 or "m-30"] value 10642
+- 29.0.7 (sample.drift): value 267
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 11:03:07.411 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 91
+ inst [24 or "m-24"] value 8525
+ inst [27 or "m-27"] value 9577
+ inst [28 or "m-28"] value 9925
+ inst [30 or "m-30"] value 10624
+ inst [31 or "m-31"] value 10972
+- 29.0.7 (sample.drift): value 249
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 11:04:07.411 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 70
+ inst [24 or "m-24"] value 8504
+ inst [27 or "m-27"] value 9555
+ inst [30 or "m-30"] value 10607
+ inst [32 or "m-32"] value 11306
+-inst [33 or "m-33"] value 11654
+- 29.0.7 (sample.drift): value 242
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+ 11:05:07.411 29.0.37 (sample.mirage):
+-inst [0 or "m-00"] value 49
+ inst [24 or "m-24"] value 8483
+ inst [27 or "m-27"] value 9534
+ inst [30 or "m-30"] value 10586
+-inst [33 or "m-33"] value 11637
+- 29.0.7 (sample.drift): value 208
+- 29.0.6 (sample.bin):
+- inst [100 or "bin-100"] value 100
++ 29.0.6 (x23456789.sample.bin):
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+- inst [400 or "bin-400"] value 400
+- inst [500 or "bin-500"] value 500
+- inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+- inst [900 or "bin-900"] value 900
+
+=== correctness checked in QA 493 ... only care about valgrind here ===
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pmlogrewrite -s -c TMP.conf src/mirage TMP.new
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/491 b/qa/491
new file mode 100755
index 0000000..ebbd61d
--- /dev/null
+++ b/qa/491
@@ -0,0 +1,38 @@
+#!/bin/sh
+# PCP QA Test No. 491
+# Checkout the pmdaCacheLookup*() routines in libpcp_pmda
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+endian=`_get_endian`
+ln $seq.out.$endian $seq.out
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e 's/0x[0-9a-f][0-9a-f]*/ADDR/'
+}
+
+# real QA test starts here
+echo "=== with keys ==="
+src/keycache2 -k 2>&1 | _filter
+
+echo
+echo "=== using name for keys ==="
+src/keycache2 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/491.out.be b/qa/491.out.be
new file mode 100644
index 0000000..d5366e3
--- /dev/null
+++ b/qa/491.out.be
@@ -0,0 +1,171 @@
+QA output created by 491
+=== with keys ===
+keys 104648 & 121065 hash to 1647692332
+key-104648 -> 1647692332
+key-121065 -> 1282769657
+keys 62831 & 82985 hash to 1557163883
+key-62831 -> 1557163883
+key-82985 -> 21264990
+keys 44933 & 50116 hash to 1291483080
+key-44933 -> 1291483080
+key-50116 -> 2113555902
+keys 124570 & 140345 hash to 1118443963
+key-124570 -> 1118443963
+key-140345 -> 862081995
+keys 112382 & 195571 hash to 1036361398
+key-112382 -> 1036361398
+key-195571 -> 1168156210
+keys 74669 & 144694 hash to 861192088
+key-74669 -> 861192088
+key-144694 -> 2106252883
+keys 29350 & 170645 hash to 453529695
+key-29350 -> 453529695
+key-170645 -> 836831287
+keys 29598 & 44747 hash to 59162087
+key-29598 -> 59162087
+key-44747 -> 171200188
+pmdaCacheDump: indom 42.42: nentry=16 ins_mode=1 hstate=3 hsize=16
+ 21264990 active ADDR key-82985 [key=0x00014429]
+ 59162087 active ADDR key-29598 [key=0x0000739e]
+ 171200188 inactive ADDR key-44747 [key=0x0000aecb]
+ 453529695 active ADDR key-29350 [key=0x000072a6]
+ 836831287 active ADDR key-170645 [key=0x00029a95]
+ 861192088 active ADDR key-74669 [key=0x000123ad]
+ 862081995 active ADDR key-140345 [key=0x00022439]
+(1036361398) empty
+ 1118443963 active ADDR key-124570 [key=0x0001e69a]
+ 1168156210 active ADDR key-195571 [key=0x0002fbf3]
+ 1282769657 active ADDR key-121065 [key=0x0001d8e9]
+ 1291483080 active ADDR key-44933 [key=0x0000af85]
+ 1557163883 active ADDR key-62831 [key=0x0000f56f]
+ 1647692332 inactive ADDR key-104648 [key=0x000198c8]
+ 2106252883 active ADDR key-144694 [key=0x00023536]
+ 2113555902 active ADDR key-50116 [key=0x0000c3c4]
+pmdaCacheLookup(... 1647692332, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-104648", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-104648", ...) -> inactive name ok inst ok private ok
+pmdaCacheLookup(... 1282769657, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-121065", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-121065", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1557163883, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-62831", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-62831", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 21264990, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-82985", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-82985", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1291483080, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-44933", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-44933", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 2113555902, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-50116", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-50116", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1118443963, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-124570", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-124570", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 862081995, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-140345", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-140345", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1036361398, ...): Unknown or illegal instance identifier
+pmdaCacheLookupName(... "key-112382", ...): Unknown or illegal instance identifier
+pmdaCacheLookupKey(... "key-112382", ...): Unknown or illegal instance identifier
+pmdaCacheLookup(... 1168156210, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-195571", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-195571", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 861192088, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-74669", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-74669", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 2106252883, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-144694", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-144694", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 453529695, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-29350", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-29350", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 836831287, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-170645", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-170645", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 59162087, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-29598", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-29598", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 171200188, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-44747", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-44747", ...) -> inactive name ok inst ok private ok
+
+=== using name for keys ===
+keys "key-12780" & "key-116750" hash to 1842416211
+key-12780 -> 1842416211
+key-116750 -> 1309066689
+keys "key-45093" & "key-178068" hash to 1416647232
+key-45093 -> 1416647232
+key-178068 -> 1645868327
+keys "key-15595" & "key-65203" hash to 909705253
+key-15595 -> 909705253
+key-65203 -> 1994776240
+keys "key-118963" & "key-125060" hash to 778132648
+key-118963 -> 778132648
+key-125060 -> 444095471
+keys "key-61869" & "key-175587" hash to 667967004
+key-61869 -> 667967004
+key-175587 -> 1780904285
+keys "key-79471" & "key-102085" hash to 578887890
+key-79471 -> 578887890
+key-102085 -> 74367884
+keys "key-70250" & "key-117052" hash to 246132620
+key-70250 -> 246132620
+key-117052 -> 2124395298
+pmdaCacheDump: indom 42.42: nentry=14 ins_mode=1 hstate=3 hsize=16
+ 74367884 active ADDR key-102085 [key=0x6b65792d313032303835]
+ 246132620 active ADDR key-70250 [key=0x6b65792d3730323530]
+( 444095471) empty
+ 578887890 active ADDR key-79471 [key=0x6b65792d3739343731]
+ 667967004 active ADDR key-61869 [key=0x6b65792d3631383639]
+ 778132648 active ADDR key-118963 [key=0x6b65792d313138393633]
+ 909705253 active ADDR key-15595 [key=0x6b65792d3135353935]
+ 1309066689 active ADDR key-116750 [key=0x6b65792d313136373530]
+ 1416647232 active ADDR key-45093 [key=0x6b65792d3435303933]
+ 1645868327 active ADDR key-178068 [key=0x6b65792d313738303638]
+ 1780904285 active ADDR key-175587 [key=0x6b65792d313735353837]
+ 1842416211 inactive ADDR key-12780 [key=0x6b65792d3132373830]
+ 1994776240 active ADDR key-65203 [key=0x6b65792d3635323033]
+ 2124395298 inactive ADDR key-117052 [key=0x6b65792d313137303532]
+pmdaCacheLookup(... 1842416211, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-12780", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-12780", ...) -> inactive name ok inst ok private ok
+pmdaCacheLookup(... 1309066689, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-116750", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-116750", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1416647232, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-45093", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-45093", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1645868327, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-178068", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-178068", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 909705253, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-15595", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-15595", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1994776240, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-65203", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-65203", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 778132648, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-118963", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-118963", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 444095471, ...): Unknown or illegal instance identifier
+pmdaCacheLookupName(... "key-125060", ...): Unknown or illegal instance identifier
+pmdaCacheLookupKey(... "key-125060", ...): Unknown or illegal instance identifier
+pmdaCacheLookup(... 667967004, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-61869", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-61869", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1780904285, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-175587", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-175587", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 578887890, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-79471", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-79471", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 74367884, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-102085", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-102085", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 246132620, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-70250", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-70250", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 2124395298, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-117052", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-117052", ...) -> inactive name ok inst ok private ok
diff --git a/qa/491.out.le b/qa/491.out.le
new file mode 100644
index 0000000..5ba1261
--- /dev/null
+++ b/qa/491.out.le
@@ -0,0 +1,171 @@
+QA output created by 491
+=== with keys ===
+keys 104649 & 121066 hash to 1647692332
+key-104649 -> 1647692332
+key-121066 -> 1282769657
+keys 62832 & 82985 hash to 1557163883
+key-62832 -> 1557163883
+key-82985 -> 21264990
+keys 44934 & 50117 hash to 1291483080
+key-44934 -> 1291483080
+key-50117 -> 2113555902
+keys 124571 & 140345 hash to 1118443963
+key-124571 -> 1118443963
+key-140345 -> 862081995
+keys 112383 & 195572 hash to 1036361398
+key-112383 -> 1036361398
+key-195572 -> 1168156210
+keys 74669 & 144694 hash to 861192088
+key-74669 -> 861192088
+key-144694 -> 2106252883
+keys 29350 & 170646 hash to 453529695
+key-29350 -> 453529695
+key-170646 -> 836831287
+keys 29598 & 44748 hash to 59162087
+key-29598 -> 59162087
+key-44748 -> 171200188
+pmdaCacheDump: indom 42.42: nentry=16 ins_mode=1 hstate=3 hsize=16
+ 21264990 active ADDR key-82985 [key=0x00014429]
+ 59162087 active ADDR key-29598 [key=0x0000739e]
+ 171200188 inactive ADDR key-44748 [key=0x0000aecc]
+ 453529695 active ADDR key-29350 [key=0x000072a6]
+ 836831287 active ADDR key-170646 [key=0x00029a96]
+ 861192088 active ADDR key-74669 [key=0x000123ad]
+ 862081995 active ADDR key-140345 [key=0x00022439]
+(1036361398) empty
+ 1118443963 active ADDR key-124571 [key=0x0001e69b]
+ 1168156210 active ADDR key-195572 [key=0x0002fbf4]
+ 1282769657 active ADDR key-121066 [key=0x0001d8ea]
+ 1291483080 active ADDR key-44934 [key=0x0000af86]
+ 1557163883 active ADDR key-62832 [key=0x0000f570]
+ 1647692332 inactive ADDR key-104649 [key=0x000198c9]
+ 2106252883 active ADDR key-144694 [key=0x00023536]
+ 2113555902 active ADDR key-50117 [key=0x0000c3c5]
+pmdaCacheLookup(... 1647692332, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-104649", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-104649", ...) -> inactive name ok inst ok private ok
+pmdaCacheLookup(... 1282769657, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-121066", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-121066", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1557163883, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-62832", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-62832", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 21264990, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-82985", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-82985", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1291483080, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-44934", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-44934", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 2113555902, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-50117", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-50117", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1118443963, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-124571", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-124571", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 862081995, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-140345", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-140345", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1036361398, ...): Unknown or illegal instance identifier
+pmdaCacheLookupName(... "key-112383", ...): Unknown or illegal instance identifier
+pmdaCacheLookupKey(... "key-112383", ...): Unknown or illegal instance identifier
+pmdaCacheLookup(... 1168156210, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-195572", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-195572", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 861192088, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-74669", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-74669", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 2106252883, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-144694", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-144694", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 453529695, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-29350", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-29350", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 836831287, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-170646", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-170646", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 59162087, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-29598", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-29598", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 171200188, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-44748", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-44748", ...) -> inactive name ok inst ok private ok
+
+=== using name for keys ===
+keys "key-12780" & "key-116750" hash to 1842416211
+key-12780 -> 1842416211
+key-116750 -> 1309066689
+keys "key-45093" & "key-178068" hash to 1416647232
+key-45093 -> 1416647232
+key-178068 -> 1645868327
+keys "key-15595" & "key-65203" hash to 909705253
+key-15595 -> 909705253
+key-65203 -> 1994776240
+keys "key-118963" & "key-125060" hash to 778132648
+key-118963 -> 778132648
+key-125060 -> 444095471
+keys "key-61869" & "key-175587" hash to 667967004
+key-61869 -> 667967004
+key-175587 -> 1780904285
+keys "key-79471" & "key-102085" hash to 578887890
+key-79471 -> 578887890
+key-102085 -> 74367884
+keys "key-70250" & "key-117052" hash to 246132620
+key-70250 -> 246132620
+key-117052 -> 2124395298
+pmdaCacheDump: indom 42.42: nentry=14 ins_mode=1 hstate=3 hsize=16
+ 74367884 active ADDR key-102085 [key=0x6b65792d313032303835]
+ 246132620 active ADDR key-70250 [key=0x6b65792d3730323530]
+( 444095471) empty
+ 578887890 active ADDR key-79471 [key=0x6b65792d3739343731]
+ 667967004 active ADDR key-61869 [key=0x6b65792d3631383639]
+ 778132648 active ADDR key-118963 [key=0x6b65792d313138393633]
+ 909705253 active ADDR key-15595 [key=0x6b65792d3135353935]
+ 1309066689 active ADDR key-116750 [key=0x6b65792d313136373530]
+ 1416647232 active ADDR key-45093 [key=0x6b65792d3435303933]
+ 1645868327 active ADDR key-178068 [key=0x6b65792d313738303638]
+ 1780904285 active ADDR key-175587 [key=0x6b65792d313735353837]
+ 1842416211 inactive ADDR key-12780 [key=0x6b65792d3132373830]
+ 1994776240 active ADDR key-65203 [key=0x6b65792d3635323033]
+ 2124395298 inactive ADDR key-117052 [key=0x6b65792d313137303532]
+pmdaCacheLookup(... 1842416211, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-12780", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-12780", ...) -> inactive name ok inst ok private ok
+pmdaCacheLookup(... 1309066689, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-116750", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-116750", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1416647232, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-45093", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-45093", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1645868327, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-178068", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-178068", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 909705253, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-15595", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-15595", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1994776240, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-65203", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-65203", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 778132648, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-118963", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-118963", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 444095471, ...): Unknown or illegal instance identifier
+pmdaCacheLookupName(... "key-125060", ...): Unknown or illegal instance identifier
+pmdaCacheLookupKey(... "key-125060", ...): Unknown or illegal instance identifier
+pmdaCacheLookup(... 667967004, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-61869", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-61869", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 1780904285, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-175587", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-175587", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 578887890, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-79471", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-79471", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 74367884, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-102085", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-102085", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 246132620, ...) -> active name ok private ok
+pmdaCacheLookupName(... "key-70250", ...) -> active inst ok private ok
+pmdaCacheLookupKey(... "key-70250", ...) -> active name ok inst ok private ok
+pmdaCacheLookup(... 2124395298, ...) -> inactive name ok private ok
+pmdaCacheLookupName(... "key-117052", ...) -> inactive inst ok private ok
+pmdaCacheLookupKey(... "key-117052", ...) -> inactive name ok inst ok private ok
diff --git a/qa/492 b/qa/492
new file mode 100755
index 0000000..f9277ce
--- /dev/null
+++ b/qa/492
@@ -0,0 +1,121 @@
+#!/bin/sh
+# PCP QA Test No. 492
+# pmlogrewrite error cases
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g"
+}
+
+_filter_usage()
+{
+ sed \
+ -e '/illegal option/{
+s/illegal/invalid/
+s/.$/'"'&'"'/
+}' \
+ -e '/invalid option/s/[^'"'"']$/'"'&'"'/'
+}
+
+
+_cnt_logrecs()
+{
+ if [ ! -f $1.0 ]
+ then
+ echo no file
+ else
+ pmdumplog $1 2>/dev/null | grep '^[0-9]' | wc -l | sed -e 's/ //g'
+ fi
+}
+
+# real QA test starts here
+echo "=== usage cases ==="
+pmlogrewrite -x in out 2>&1 | _filter_usage
+echo
+pmlogrewrite in out foo
+echo
+pmlogrewrite -c no.such.file in out
+echo
+pmlogrewrite -c /dev/tty in out
+echo
+touch $tmp.forbidden
+chmod 0 $tmp.forbidden
+pmlogrewrite -c $tmp.forbidden src/rattle $tmp.new 2>&1 | _filter
+rm -f $tmp.new.* $tmp.forbidden
+echo
+mkdir $tmp.forbiddendir
+chmod 0 $tmp.forbiddendir
+pmlogrewrite -c $tmp.forbiddendir in out 2>&1 | _filter
+echo
+pmlogrewrite -c $tmp.forbiddendir/blah in out 2>&1 | _filter
+chmod 755 $tmp.forbiddendir
+rm -rf $tmp.forbiddendir
+echo
+mkdir $tmp.configdir
+touch $tmp.configdir/forbidden
+chmod 0 $tmp.configdir/forbidden
+pmlogrewrite -v -c $tmp.configdir src/rattle $tmp.new 2>&1 | _filter
+echo
+ln -s $tmp.configdir/forbidden $tmp.link
+pmlogrewrite -v -c $tmp.link src/rattle $tmp.new 2>&1 | _filter
+rm -rf $tmp.config $tmp.forbidden
+echo
+rm -f $tmp.link
+ln -s $tmp.configdir $tmp.link
+pmlogrewrite -v -c $tmp.link src/rattle $tmp.new 2>&1 | _filter
+rm -rf $tmp.configdir $tmp.link
+
+echo
+echo "=== truncated archive ==="
+pmlogrewrite src/ok-truncbin $tmp.new 2>&1 | _filter
+echo "input records: `_cnt_logrecs src/ok-truncbin`"
+echo "output records: `_cnt_logrecs $tmp.new`"
+
+echo
+echo "=== truncated archive -d ==="
+rm -f $tmp.new.*
+pmlogrewrite -d src/ok-truncbin $tmp.new 2>&1 | _filter
+echo "input records: `_cnt_logrecs src/ok-truncbin`"
+echo "output records: `_cnt_logrecs $tmp.new`"
+
+echo
+echo "=== bad label ==="
+rm -f $tmp.new.*
+pmlogrewrite -d src/badlen-8 $tmp.new 2>&1 | _filter
+echo "input records: `_cnt_logrecs src/badlen-8`"
+echo "output records: `_cnt_logrecs $tmp.new`"
+
+echo
+echo "=== truncated metadata ==="
+rm -f $tmp.new.*
+pmlogrewrite -d src/badlen-9 $tmp.new 2>&1 | _filter
+echo "input records: `_cnt_logrecs src/badlen-9`"
+echo "output records: `_cnt_logrecs $tmp.new`"
+
+echo
+echo "=== bad version ==="
+rm -f $tmp.new.*
+pmlogrewrite -d src/err_v1 $tmp.new 2>&1 | _filter
+echo "input records: `_cnt_logrecs src/err_v1`"
+echo "output records: `_cnt_logrecs $tmp.new`"
+
+rm -f $tmp.new.*
+
+# success, all done
+exit
diff --git a/qa/492.out b/qa/492.out
new file mode 100644
index 0000000..9047c99
--- /dev/null
+++ b/qa/492.out
@@ -0,0 +1,134 @@
+QA output created by 492
+=== usage cases ===
+pmlogrewrite: invalid option -- 'x'
+Usage: pmlogrewrite [options] input-archive [output-archive]
+
+Options:
+ -c PATH, --config=PATH
+ file or directory to load rules from
+ -C, --check parse config file(s) and quit (verbose warnings also)
+ -d, --desperate desperate, save output archive even after error
+ -i rewrite in place, input-archive will be over-written
+ -q, --quick quick mode, no output if no change
+ -s, --scale do scale conversion
+ -v, --verbose increased diagnostic verbosity
+ -w, --warnings emit warnings [default is silence]
+
+output-archive is required unless -i is specified
+
+Usage: pmlogrewrite [options] input-archive [output-archive]
+
+Options:
+ -c PATH, --config=PATH
+ file or directory to load rules from
+ -C, --check parse config file(s) and quit (verbose warnings also)
+ -d, --desperate desperate, save output archive even after error
+ -i rewrite in place, input-archive will be over-written
+ -q, --quick quick mode, no output if no change
+ -s, --scale do scale conversion
+ -v, --verbose increased diagnostic verbosity
+ -w, --warnings emit warnings [default is silence]
+
+output-archive is required unless -i is specified
+
+pmlogrewrite: stat(no.such.file) failed: No such file or directory
+Usage: pmlogrewrite [options] input-archive [output-archive]
+
+Options:
+ -c PATH, --config=PATH
+ file or directory to load rules from
+ -C, --check parse config file(s) and quit (verbose warnings also)
+ -d, --desperate desperate, save output archive even after error
+ -i rewrite in place, input-archive will be over-written
+ -q, --quick quick mode, no output if no change
+ -s, --scale do scale conversion
+ -v, --verbose increased diagnostic verbosity
+ -w, --warnings emit warnings [default is silence]
+
+output-archive is required unless -i is specified
+
+pmlogrewrite: Error: -c config /dev/tty is not a file or directory
+Usage: pmlogrewrite [options] input-archive [output-archive]
+
+Options:
+ -c PATH, --config=PATH
+ file or directory to load rules from
+ -C, --check parse config file(s) and quit (verbose warnings also)
+ -d, --desperate desperate, save output archive even after error
+ -i rewrite in place, input-archive will be over-written
+ -q, --quick quick mode, no output if no change
+ -s, --scale do scale conversion
+ -v, --verbose increased diagnostic verbosity
+ -w, --warnings emit warnings [default is silence]
+
+output-archive is required unless -i is specified
+
+pmlogrewrite: Cannot open config file "TMP.forbidden": Permission denied
+
+pmlogrewrite: opendir(TMP.forbiddendir) failed: Permission denied
+Usage: pmlogrewrite [options] input-archive [output-archive]
+
+Options:
+ -c PATH, --config=PATH
+ file or directory to load rules from
+ -C, --check parse config file(s) and quit (verbose warnings also)
+ -d, --desperate desperate, save output archive even after error
+ -i rewrite in place, input-archive will be over-written
+ -q, --quick quick mode, no output if no change
+ -s, --scale do scale conversion
+ -v, --verbose increased diagnostic verbosity
+ -w, --warnings emit warnings [default is silence]
+
+output-archive is required unless -i is specified
+
+pmlogrewrite: stat(TMP.forbiddendir/blah) failed: Permission denied
+Usage: pmlogrewrite [options] input-archive [output-archive]
+
+Options:
+ -c PATH, --config=PATH
+ file or directory to load rules from
+ -C, --check parse config file(s) and quit (verbose warnings also)
+ -d, --desperate desperate, save output archive even after error
+ -i rewrite in place, input-archive will be over-written
+ -q, --quick quick mode, no output if no change
+ -s, --scale do scale conversion
+ -v, --verbose increased diagnostic verbosity
+ -w, --warnings emit warnings [default is silence]
+
+output-archive is required unless -i is specified
+
+pmlogrewrite: Cannot open config file "TMP.configdir/forbidden": Permission denied
+
+pmlogrewrite: Cannot open config file "TMP.link": Permission denied
+
+pmlogrewrite: Cannot open config file "TMP.link/forbidden": Permission denied
+
+=== truncated archive ===
+pmlogrewrite: Error: __pmLogRead[log src/ok-truncbin]: Corrupted record in a PCP archive log
+pmlogrewrite: Error occurred at byte offset 204456 into a file of 204800 bytes.
+Archive "TMP.new" not created.
+input records: 416
+output records: no file
+
+=== truncated archive -d ===
+pmlogrewrite: Error: __pmLogRead[log src/ok-truncbin]: Corrupted record in a PCP archive log
+pmlogrewrite: Error occurred at byte offset 204456 into a file of 204800 bytes.
+The last record, and the remainder of this file will not be processed.
+Archive "TMP.new" creation truncated.
+input records: 416
+output records: 416
+
+=== bad label ===
+pmlogrewrite: Error: cannot open archive "src/badlen-8": Illegal label record at start of a PCP archive log file
+input records: 0
+output records: no file
+
+=== truncated metadata ===
+pmlogrewrite: Error: cannot open archive "src/badlen-9": Corrupted record in a PCP archive log
+input records: 0
+output records: no file
+
+=== bad version ===
+pmlogrewrite: Error: cannot open archive "src/err_v1": Illegal label record at start of a PCP archive log file
+input records: 0
+output records: no file
diff --git a/qa/493 b/qa/493
new file mode 100755
index 0000000..3ee0b54
--- /dev/null
+++ b/qa/493
@@ -0,0 +1,90 @@
+#!/bin/sh
+# PCP QA Test No. 493
+# pmlogrewrite serious rewriting cases
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ if [ ! -f "$1.0" ]
+ then
+ echo "Arrgh ... $1.0 missing" | _filter
+ return
+ fi
+ if [ ! -f "$2.0" ]
+ then
+ echo "Arrgh ... $2.0 missing" | _filter
+ return
+ fi
+ pmval -zr -f 1 -w 12 -U $1 $3 2>$tmp.err | tee -a $seq.full | _filter >$tmp.in
+ cat $tmp.err >>$seq.full
+ pmval -zr -f 1 -w 12 -U $2 $3 2>$tmp.err | tee -a $seq.full | _filter >$tmp.out
+ cat $tmp.err >>$seq.full
+ echo
+ echo "=== pmval $3 diffs ==="
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+
+cat <<End-of-File >$tmp.conf
+metric sample.ulong.bin_ctr {
+ indom -> NULL output MIN
+ type -> DOUBLE
+ units -> 1,0,0,BYTE,0,0
+}
+metric sample.ulonglong.bin_ctr {
+ indom -> NULL output MAX
+ type -> 32
+ units -> 1,0,0,BYTE,0,0
+}
+metric sampledso.double.bin_ctr {
+ indom -> NULL output AVG
+ type -> FLOAT
+}
+metric sample.float.bin_ctr {
+ indom -> NULL output SUM
+ type -> U64
+}
+metric sample.longlong.bin_ctr {
+ indom -> NULL output FIRST
+ type -> 64
+ units -> 1,-1,0,KBYTE,SEC,0
+}
+indom 29.2 { inst 200 -> DELETE }
+indom 30.2 { inst 800 -> DELETE }
+End-of-File
+rm -f $tmp.new.*
+cat $tmp.conf >>$seq.full
+pmlogrewrite -ws -c $tmp.conf src/rewrite $tmp.new 2>$tmp.err | _filter
+cat $tmp.err >>$seq.full
+for m in sample.ulong.bin_ctr sample.ulonglong.bin_ctr \
+ sampledso.double.bin_ctr sample.float.bin_ctr sample.longlong.bin_ctr
+do
+ _cmp src/rewrite $tmp.new $m
+done
+
+# success, all done
+exit
diff --git a/qa/493.out b/qa/493.out
new file mode 100644
index 0000000..a39254e
--- /dev/null
+++ b/qa/493.out
@@ -0,0 +1,120 @@
+QA output created by 493
+
+=== pmval sample.ulong.bin_ctr diffs ===
+--- TMP.in
++++ TMP.out
+@@ -1,15 +1,13 @@
+ Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+ metric: sample.ulong.bin_ctr
+-archive: src/rewrite
++archive: TMP.new
+ host: bozo-laptop
+ start: Sat Oct 1 21:10:11 2011
+ end: Sat Oct 1 21:10:12 2011
+ semantics: cumulative counter
+-units: Kbyte
++units: byte
+ samples: all
+-
+- bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+-21:10:11.878 100 200 300 400 500 600 700 800 900
+-21:10:12.003 100 200 300 400 500 600 700 800 900
+-21:10:12.128 100 200 300 400 500 600 700 800 900
++21:10:11.878 102400.0
++21:10:12.003 102400.0
++21:10:12.128 102400.0
+
+=== pmval sample.ulonglong.bin_ctr diffs ===
+--- TMP.in
++++ TMP.out
+@@ -1,15 +1,13 @@
+ Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+ metric: sample.ulonglong.bin_ctr
+-archive: src/rewrite
++archive: TMP.new
+ host: bozo-laptop
+ start: Sat Oct 1 21:10:11 2011
+ end: Sat Oct 1 21:10:12 2011
+ semantics: cumulative counter
+-units: Kbyte
++units: byte
+ samples: all
+-
+- bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+-21:10:11.878 100 200 300 400 500 600 700 800 900
+-21:10:12.003 100 200 300 400 500 600 700 800 900
+-21:10:12.128 100 200 300 400 500 600 700 800 900
++21:10:11.878 921600
++21:10:12.003 921600
++21:10:12.128 921600
+
+=== pmval sampledso.double.bin_ctr diffs ===
+--- TMP.in
++++ TMP.out
+@@ -1,15 +1,13 @@
+ Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+ metric: sampledso.double.bin_ctr
+-archive: src/rewrite
++archive: TMP.new
+ host: bozo-laptop
+ start: Sat Oct 1 21:10:11 2011
+ end: Sat Oct 1 21:10:12 2011
+ semantics: cumulative counter
+ units: Kbyte
+ samples: all
+-
+- bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+-21:10:11.876 100.0 200.0 ? ? ? ? ? 800.0 900.0
+-21:10:12.001 100.0 200.0 ? ? ? ? ? 800.0 900.0
+-21:10:12.126 100.0 200.0 ? ? ? ? ? 800.0 900.0
++21:10:11.876 500.0
++21:10:12.001 500.0
++21:10:12.126 500.0
+
+=== pmval sample.float.bin_ctr diffs ===
+--- TMP.in
++++ TMP.out
+@@ -1,14 +1,12 @@
+ Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+ metric: sample.float.bin_ctr
+-archive: src/rewrite
++archive: TMP.new
+ host: bozo-laptop
+ start: Sat Oct 1 21:10:11 2011
+ end: Sat Oct 1 21:10:12 2011
+ semantics: cumulative counter
+ units: Kbyte
+ samples: all
+-
+- bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+-21:10:11.889 100.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0 900.0
+-21:10:12.047 100.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0 900.0
++21:10:11.889 4500
++21:10:12.047 4500
+
+=== pmval sample.longlong.bin_ctr diffs ===
+--- TMP.in
++++ TMP.out
+@@ -1,14 +1,12 @@
+ Note: timezone set to local timezone of host "bozo-laptop" from archive
+
+ metric: sample.longlong.bin_ctr
+-archive: src/rewrite
++archive: TMP.new
+ host: bozo-laptop
+ start: Sat Oct 1 21:10:11 2011
+ end: Sat Oct 1 21:10:12 2011
+ semantics: cumulative counter
+-units: Kbyte
++units: Kbyte / sec
+ samples: all
+-
+- bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+-21:10:11.889 100 200 300 400 500 600 700 800 900
+-21:10:12.047 100 200 300 400 500 600 700 800 900
++21:10:11.889 100
++21:10:12.047 100
diff --git a/qa/494 b/qa/494
new file mode 100755
index 0000000..0768caa
--- /dev/null
+++ b/qa/494
@@ -0,0 +1,152 @@
+#!/bin/sh
+# PCP QA Test No. 494
+# pmlogrewrite man page examples
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ if [ ! -f $1.0 ]
+ then
+ echo "Arrgh ... cannot find $1.0" | _filter
+ return
+ fi
+ if [ ! -f $2.0 ]
+ then
+ echo "Arrgh ... cannot find $2.0" | _filter
+ return
+ fi
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ echo "pmdumplog diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+_cmp2()
+{
+ if [ ! -f $1.0 ]
+ then
+ echo "Arrgh ... cannot find $1.0" | _filter
+ return
+ fi
+ if [ ! -f $2.0 ]
+ then
+ echo "Arrgh ... cannot find $2.0" | _filter
+ return
+ fi
+ echo "--- input metadata ---"
+ pminfo -d -a $1 $3
+ echo "--- output metadata ---"
+ pminfo -d -a $2 $3
+ pmval -zr -f 1 -w 12 -U $1 $3 | tee -a $seq.full >$tmp.in
+ pmval -zr -f 1 -w 12 -U $2 $3 | tee -a $seq.full >$tmp.out
+ echo "pmval diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] spec
+# double ->
+src/rewrite global { time -> 30 }
+src/rewrite global { time -> -23:59:59.999 }
+src/rewrite indom 29.* { indom -> 109.* }
+src/rewrite metric 30.*.* { pmid -> 123.*.* }
+src/rewrite indom 29.* { indom -> 109.* } metric sample.bin { indom -> 109.2 }
+src/rewrite indom 29.* { indom -> 109.* } metric sample.bin { indom -> 123.2 }
+src/proc indom 60.2 { inst 1 -> 60 iname "1 minute" -> "60 second" inst 5 -> 300 iname "5 minute" -> "300 second" inst 15 -> 900 iname "15 minute" -> "900 second" }
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -ws -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ _cmp `echo $arch_args | sed -e 's/|.*//'` $tmp.new
+done
+
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] spec|metric...
+# double ->
+src/babylon.pmview_v2 metric disk.dev.read { type -> U64 } metric disk.dev.write { type -> U64 } metric disk.dev.total { type -> U64 }|disk.dev.read disk.dev.write disk.dev.total
+End-of-File
+do
+ echo | tee -a $seq.full
+ metrics=`echo "$spec" | sed -e 's/.*|//'`
+ spec=`echo "$spec" | sed -e 's/|.*//'`
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -ws -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ for m in $metrics
+ do
+ _cmp2 `echo $arch_args | sed -e 's/|.*//'` $tmp.new $m
+ done
+done
+
+echo | tee -a $seq.full
+echo "=== proc metrics migration ===" | tee -a $seq.full
+cat <<End-of-File >$tmp.config
+# proc metrics are all in 7 clusters
+metric 60.8.* { pmid -> 123.*.* }
+metric 60.9.* { pmid -> 123.*.* }
+metric 60.13.* { pmid -> 123.*.* }
+metric 60.24.* { pmid -> 123.*.* }
+metric 60.31.* { pmid -> 123.*.* }
+metric 60.32.* { pmid -> 123.*.* }
+metric 60.51.* { pmid -> 123.*.* }
+# only one instance domain for Linux proc metrics
+indom 60.9 { indom -> 123.0 }
+End-of-File
+rm -f $tmp.new.*
+pmlogrewrite -ws -c $tmp.config src/proc $tmp.new 2>&1 | _filter
+
+pminfo -m -a src/proc | LC_COLLATE=POSIX sort >$tmp.in
+pminfo -m -a $tmp.new | LC_COLLATE=POSIX sort >$tmp.out
+echo
+echo "pmns diffs ..."
+diff -u $tmp.in $tmp.out | _filter
+
+for arg in -i -m
+do
+ pmdumplog -z $arg src/proc >$tmp.in 2>$tmp.err
+ if [ -s $tmp.err ]
+ then
+ echo "stderr from pmdumplog -z $arg src/proc ..."
+ cat $tmp.err
+ fi
+ pmdumplog -z $arg $tmp.new >$tmp.out 2>$tmp.err
+ if [ -s $tmp.err ]
+ then
+ echo "stderr from pmdumplog -z $arg $tmp.new ..." | _filter
+ cat $tmp.err
+ fi
+ echo
+ echo "pmdumplog $arg diffs ..."
+ diff -u $tmp.in $tmp.out | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/494.out b/qa/494.out
new file mode 100644
index 0000000..2d9b343
--- /dev/null
+++ b/qa/494.out
@@ -0,0 +1,2415 @@
+QA output created by 494
+
+=== global { time -> 30 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -2,8 +2,8 @@
+
+ Log Label (Log Format Version 2)
+ Performance metrics from host bozo-laptop
+- commencing Sat Oct 1 21:10:11.751 2011
+- ending Sat Oct 1 21:10:12.128 2011
++ commencing Sat Oct 1 21:10:41.751 2011
++ ending Sat Oct 1 21:10:42.128 2011
+
+ Descriptions for Metrics in the Log ...
+ PMID: 29.0.100 (sample.ulonglong.hundred)
+@@ -69,7 +69,7 @@
+
+ Instance Domains in the Log ...
+ InDom: 29.2
+-21:10:11.878 9 instances
++21:10:41.878 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+@@ -80,7 +80,7 @@
+ 800 or "bin-800"
+ 900 or "bin-900"
+ InDom: 30.2
+-21:10:11.876 9 instances
++21:10:41.876 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+@@ -91,23 +91,23 @@
+ 800 or "bin-800"
+ 900 or "bin-900"
+ InDom: 2.1
+-21:10:11.751 1 instances
++21:10:41.751 1 instances
+ 1933 or "1933"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-21:10:11.751 0 132 132
+-21:10:11.876 0 350 284
+-21:10:11.878 0 652 428
+-21:10:12.128 0 1727 2924
++21:10:41.751 0 132 132
++21:10:41.876 0 350 284
++21:10:41.878 0 652 428
++21:10:42.128 0 1727 2924
+
+ [152 bytes]
+-21:10:11.751 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
++21:10:41.751 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [1933 or "1933"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1933 or "1933"] value "/home/kenj/src/pcpqa/src/rewrite"
+
+ [144 bytes]
+-21:10:11.876 30.0.114 (sampledso.double.bin_ctr):
++21:10:41.876 30.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -115,7 +115,7 @@
+ 30.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:11.878 30.0.95 (sampledso.ulong.hundred): value 100
++21:10:41.878 30.0.95 (sampledso.ulong.hundred): value 100
+ 30.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+@@ -156,7 +156,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [592 bytes]
+-21:10:11.889 30.0.104 (sampledso.long.bin_ctr):
++21:10:41.889 30.0.104 (sampledso.long.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -197,7 +197,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [144 bytes]
+-21:10:12.001 30.0.114 (sampledso.double.bin_ctr):
++21:10:42.001 30.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -205,7 +205,7 @@
+ 30.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:12.003 30.0.95 (sampledso.ulong.hundred): value 100
++21:10:42.003 30.0.95 (sampledso.ulong.hundred): value 100
+ 30.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+@@ -246,7 +246,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [592 bytes]
+-21:10:12.047 30.0.104 (sampledso.long.bin_ctr):
++21:10:42.047 30.0.104 (sampledso.long.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -287,7 +287,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [144 bytes]
+-21:10:12.126 30.0.114 (sampledso.double.bin_ctr):
++21:10:42.126 30.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -295,7 +295,7 @@
+ 30.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:12.128 30.0.95 (sampledso.ulong.hundred): value 100
++21:10:42.128 30.0.95 (sampledso.ulong.hundred): value 100
+ 30.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+
+=== global { time -> -23:59:59.999 } ===
+Warning [TMP.config, line 1]
+Seconds (59.999000) in time clause more than 59
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -2,8 +2,8 @@
+
+ Log Label (Log Format Version 2)
+ Performance metrics from host bozo-laptop
+- commencing Sat Oct 1 21:10:11.751 2011
+- ending Sat Oct 1 21:10:12.128 2011
++ commencing Fri Sep 30 21:10:11.752 2011
++ ending Fri Sep 30 21:10:12.129 2011
+
+ Descriptions for Metrics in the Log ...
+ PMID: 29.0.100 (sample.ulonglong.hundred)
+@@ -69,7 +69,7 @@
+
+ Instance Domains in the Log ...
+ InDom: 29.2
+-21:10:11.878 9 instances
++21:10:11.879 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+@@ -80,7 +80,7 @@
+ 800 or "bin-800"
+ 900 or "bin-900"
+ InDom: 30.2
+-21:10:11.876 9 instances
++21:10:11.877 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+@@ -91,23 +91,23 @@
+ 800 or "bin-800"
+ 900 or "bin-900"
+ InDom: 2.1
+-21:10:11.751 1 instances
++21:10:11.752 1 instances
+ 1933 or "1933"
+
+ Temporal Index
+ Log Vol end(meta) end(log)
+-21:10:11.751 0 132 132
+-21:10:11.876 0 350 284
+-21:10:11.878 0 652 428
+-21:10:12.128 0 1727 2924
++21:10:11.752 0 132 132
++21:10:11.877 0 350 284
++21:10:11.879 0 652 428
++21:10:12.129 0 1727 2924
+
+ [152 bytes]
+-21:10:11.751 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
++21:10:11.752 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [1933 or "1933"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [1933 or "1933"] value "/home/kenj/src/pcpqa/src/rewrite"
+
+ [144 bytes]
+-21:10:11.876 30.0.114 (sampledso.double.bin_ctr):
++21:10:11.877 30.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -115,7 +115,7 @@
+ 30.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:11.878 30.0.95 (sampledso.ulong.hundred): value 100
++21:10:11.879 30.0.95 (sampledso.ulong.hundred): value 100
+ 30.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+@@ -156,7 +156,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [592 bytes]
+-21:10:11.889 30.0.104 (sampledso.long.bin_ctr):
++21:10:11.890 30.0.104 (sampledso.long.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -197,7 +197,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [144 bytes]
+-21:10:12.001 30.0.114 (sampledso.double.bin_ctr):
++21:10:12.002 30.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -205,7 +205,7 @@
+ 30.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:12.003 30.0.95 (sampledso.ulong.hundred): value 100
++21:10:12.004 30.0.95 (sampledso.ulong.hundred): value 100
+ 30.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+@@ -246,7 +246,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [592 bytes]
+-21:10:12.047 30.0.104 (sampledso.long.bin_ctr):
++21:10:12.048 30.0.104 (sampledso.long.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -287,7 +287,7 @@
+ inst [900 or "bin-900"] value 900
+
+ [144 bytes]
+-21:10:12.126 30.0.114 (sampledso.double.bin_ctr):
++21:10:12.127 30.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -295,7 +295,7 @@
+ 30.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:12.128 30.0.95 (sampledso.ulong.hundred): value 100
++21:10:12.129 30.0.95 (sampledso.ulong.hundred): value 100
+ 30.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+
+=== indom 29.* { indom -> 109.* } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -16,22 +16,22 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.106 (sample.ulong.bin_ctr)
+- Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
++ Data Type: 32-bit unsigned int InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.112 (sample.ulonglong.bin_ctr)
+- Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
++ Data Type: 64-bit unsigned int InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 30.0.114 (sampledso.double.bin_ctr)
+ Data Type: double InDom: 30.2 0x7800002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.108 (sample.float.bin_ctr)
+- Data Type: float InDom: 29.2 0x7400002
++ Data Type: float InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 30.0.104 (sampledso.long.bin_ctr)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.6 (sample.bin)
+- Data Type: 32-bit int InDom: 29.2 0x7400002
++ Data Type: 32-bit int InDom: 109.2 0x1b400002
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -46,10 +46,10 @@
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ PMID: 29.0.50 (sample.part_bin)
+- Data Type: 32-bit int InDom: 29.2 0x7400002
++ Data Type: 32-bit int InDom: 109.2 0x1b400002
+ Semantics: instant Units: none
+ PMID: 29.0.110 (sample.longlong.bin_ctr)
+- Data Type: 64-bit int InDom: 29.2 0x7400002
++ Data Type: 64-bit int InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -68,7 +68,7 @@
+ Semantics: instant Units: none
+
+ Instance Domains in the Log ...
+-InDom: 29.2
++InDom: 109.2
+ 21:10:11.878 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+
+=== metric 30.*.* { pmid -> 123.*.* } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -9,10 +9,10 @@
+ PMID: 29.0.100 (sample.ulonglong.hundred)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+-PMID: 30.0.6 (sampledso.bin)
++PMID: 123.0.6 (sampledso.bin)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+-PMID: 30.0.12 (sampledso.long.hundred)
++PMID: 123.0.12 (sampledso.long.hundred)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.106 (sample.ulong.bin_ctr)
+@@ -21,13 +21,13 @@
+ PMID: 29.0.112 (sample.ulonglong.bin_ctr)
+ Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+-PMID: 30.0.114 (sampledso.double.bin_ctr)
++PMID: 123.0.114 (sampledso.double.bin_ctr)
+ Data Type: double InDom: 30.2 0x7800002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.108 (sample.float.bin_ctr)
+ Data Type: float InDom: 29.2 0x7400002
+ Semantics: counter Units: Kbyte
+-PMID: 30.0.104 (sampledso.long.bin_ctr)
++PMID: 123.0.104 (sampledso.long.bin_ctr)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.6 (sample.bin)
+@@ -36,13 +36,13 @@
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+-PMID: 30.0.50 (sampledso.part_bin)
++PMID: 123.0.50 (sampledso.part_bin)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+-PMID: 30.0.27 (sampledso.double.hundred)
++PMID: 123.0.27 (sampledso.double.hundred)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+-PMID: 30.0.3 (sampledso.milliseconds)
++PMID: 123.0.3 (sampledso.milliseconds)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ PMID: 29.0.50 (sample.part_bin)
+@@ -54,16 +54,16 @@
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+-PMID: 30.0.22 (sampledso.longlong.hundred)
++PMID: 123.0.22 (sampledso.longlong.hundred)
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+-PMID: 30.0.17 (sampledso.float.hundred)
++PMID: 123.0.17 (sampledso.float.hundred)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+-PMID: 30.0.95 (sampledso.ulong.hundred)
++PMID: 123.0.95 (sampledso.ulong.hundred)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+@@ -107,23 +107,23 @@
+ 2.3.2 (pmcd.pmlogger.archive): inst [1933 or "1933"] value "/home/kenj/src/pcpqa/src/rewrite"
+
+ [144 bytes]
+-21:10:11.876 30.0.114 (sampledso.double.bin_ctr):
++21:10:11.876 123.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 30.0.22 (sampledso.longlong.hundred): value 100
++ 123.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:11.878 30.0.95 (sampledso.ulong.hundred): value 100
+- 30.0.50 (sampledso.part_bin):
++21:10:11.878 123.0.95 (sampledso.ulong.hundred): value 100
++ 123.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [500 or "bin-500"] value 500
+ inst [700 or "bin-700"] value 700
+ inst [900 or "bin-900"] value 900
+- 30.0.17 (sampledso.float.hundred): value 100
+- 30.0.3 (sampledso.milliseconds): value 100192636.573
++ 123.0.17 (sampledso.float.hundred): value 100
++ 123.0.3 (sampledso.milliseconds): value 100192636.573
+ 29.0.112 (sample.ulonglong.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -156,14 +156,14 @@
+ inst [900 or "bin-900"] value 900
+
+ [592 bytes]
+-21:10:11.889 30.0.104 (sampledso.long.bin_ctr):
++21:10:11.889 123.0.104 (sampledso.long.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 30.0.27 (sampledso.double.hundred): value 100
+- 30.0.12 (sampledso.long.hundred): value 100
+- 30.0.6 (sampledso.bin):
++ 123.0.27 (sampledso.double.hundred): value 100
++ 123.0.12 (sampledso.long.hundred): value 100
++ 123.0.6 (sampledso.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -197,23 +197,23 @@
+ inst [900 or "bin-900"] value 900
+
+ [144 bytes]
+-21:10:12.001 30.0.114 (sampledso.double.bin_ctr):
++21:10:12.001 123.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 30.0.22 (sampledso.longlong.hundred): value 100
++ 123.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:12.003 30.0.95 (sampledso.ulong.hundred): value 100
+- 30.0.50 (sampledso.part_bin):
++21:10:12.003 123.0.95 (sampledso.ulong.hundred): value 100
++ 123.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [500 or "bin-500"] value 500
+ inst [700 or "bin-700"] value 700
+ inst [900 or "bin-900"] value 900
+- 30.0.17 (sampledso.float.hundred): value 100
+- 30.0.3 (sampledso.milliseconds): value 100192760.932
++ 123.0.17 (sampledso.float.hundred): value 100
++ 123.0.3 (sampledso.milliseconds): value 100192760.932
+ 29.0.112 (sample.ulonglong.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -246,14 +246,14 @@
+ inst [900 or "bin-900"] value 900
+
+ [592 bytes]
+-21:10:12.047 30.0.104 (sampledso.long.bin_ctr):
++21:10:12.047 123.0.104 (sampledso.long.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 30.0.27 (sampledso.double.hundred): value 100
+- 30.0.12 (sampledso.long.hundred): value 100
+- 30.0.6 (sampledso.bin):
++ 123.0.27 (sampledso.double.hundred): value 100
++ 123.0.12 (sampledso.long.hundred): value 100
++ 123.0.6 (sampledso.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+@@ -287,23 +287,23 @@
+ inst [900 or "bin-900"] value 900
+
+ [144 bytes]
+-21:10:12.126 30.0.114 (sampledso.double.bin_ctr):
++21:10:12.126 123.0.114 (sampledso.double.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 30.0.22 (sampledso.longlong.hundred): value 100
++ 123.0.22 (sampledso.longlong.hundred): value 100
+
+ [512 bytes]
+-21:10:12.128 30.0.95 (sampledso.ulong.hundred): value 100
+- 30.0.50 (sampledso.part_bin):
++21:10:12.128 123.0.95 (sampledso.ulong.hundred): value 100
++ 123.0.50 (sampledso.part_bin):
+ inst [100 or "bin-100"] value 100
+ inst [300 or "bin-300"] value 300
+ inst [500 or "bin-500"] value 500
+ inst [700 or "bin-700"] value 700
+ inst [900 or "bin-900"] value 900
+- 30.0.17 (sampledso.float.hundred): value 100
+- 30.0.3 (sampledso.milliseconds): value 100192885.979
++ 123.0.17 (sampledso.float.hundred): value 100
++ 123.0.3 (sampledso.milliseconds): value 100192885.979
+ 29.0.112 (sample.ulonglong.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== indom 29.* { indom -> 109.* } metric sample.bin { indom -> 109.2 } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -16,22 +16,22 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.106 (sample.ulong.bin_ctr)
+- Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
++ Data Type: 32-bit unsigned int InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.112 (sample.ulonglong.bin_ctr)
+- Data Type: 64-bit unsigned int InDom: 29.2 0x7400002
++ Data Type: 64-bit unsigned int InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 30.0.114 (sampledso.double.bin_ctr)
+ Data Type: double InDom: 30.2 0x7800002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.108 (sample.float.bin_ctr)
+- Data Type: float InDom: 29.2 0x7400002
++ Data Type: float InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 30.0.104 (sampledso.long.bin_ctr)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: counter Units: Kbyte
+ PMID: 29.0.6 (sample.bin)
+- Data Type: 32-bit int InDom: 29.2 0x7400002
++ Data Type: 32-bit int InDom: 109.2 0x1b400002
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -46,10 +46,10 @@
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ PMID: 29.0.50 (sample.part_bin)
+- Data Type: 32-bit int InDom: 29.2 0x7400002
++ Data Type: 32-bit int InDom: 109.2 0x1b400002
+ Semantics: instant Units: none
+ PMID: 29.0.110 (sample.longlong.bin_ctr)
+- Data Type: 64-bit int InDom: 29.2 0x7400002
++ Data Type: 64-bit int InDom: 109.2 0x1b400002
+ Semantics: counter Units: Kbyte
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -68,7 +68,7 @@
+ Semantics: instant Units: none
+
+ Instance Domains in the Log ...
+-InDom: 29.2
++InDom: 109.2
+ 21:10:11.878 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+
+=== indom 29.* { indom -> 109.* } metric sample.bin { indom -> 123.2 } ===
+Semantic error in configuration file (TMP.config)
+Conflicting indom change for metric sample.bin (123.2 from metric clause, 109.2 from indom clause)
+Arrgh ... cannot find TMP.new.0
+
+=== indom 60.2 { inst 1 -> 60 iname "1 minute" -> "60 second" inst 5 -> 300 iname "5 minute" -> "300 second" inst 15 -> 900 iname "15 minute" -> "900 second" } ===
+pmdumplog diffs ...
+--- TMP.in
++++ TMP.out
+@@ -664,9 +664,9 @@
+ 0 or "sda"
+ InDom: 60.2
+ 20:10:22.959 3 instances
+- 1 or "1 minute"
+- 5 or "5 minute"
+- 15 or "15 minute"
++ 60 or "60 second"
++ 300 or "300 second"
++ 900 or "900 second"
+ InDom: 60.10
+ 20:10:22.959 7 instances
+ 0 or "sda1"
+@@ -998,7 +998,7 @@
+ Log Vol end(meta) end(log)
+ 20:10:22.289 0 132 132
+ 20:10:22.959 0 350 280
+-20:10:24.305 0 28161 42316
++20:10:24.305 0 28165 42316
+
+ [148 bytes]
+ 20:10:22.289 2.3.3 (pmcd.pmlogger.host): inst [2950 or "2950"] value "localhost.localdomain"
+@@ -1555,9 +1555,9 @@
+ 60.2.2 (kernel.all.runnable): value 1
+ 60.2.1 (kernel.all.lastpid): value 2950
+ 60.2.0 (kernel.all.load):
+- inst [1 or "1 minute"] value 0
+- inst [5 or "5 minute"] value 0.02
+- inst [15 or "15 minute"] value 0.050000001
++ inst [60 or "60 second"] value 0
++ inst [300 or "300 second"] value 0.02
++ inst [900 or "900 second"] value 0.050000001
+ 60.1.11 (hinv.pagesize): value 4096
+ 60.1.9 (hinv.physmem): value 3021
+ 60.0.71 (kernel.pernode.cpu.irq.hard): No values returned!
+@@ -2194,9 +2194,9 @@
+ 60.2.2 (kernel.all.runnable): value 1
+ 60.2.1 (kernel.all.lastpid): value 2950
+ 60.2.0 (kernel.all.load):
+- inst [1 or "1 minute"] value 0
+- inst [5 or "5 minute"] value 0.02
+- inst [15 or "15 minute"] value 0.050000001
++ inst [60 or "60 second"] value 0
++ inst [300 or "300 second"] value 0.02
++ inst [900 or "900 second"] value 0.050000001
+ 60.1.11 (hinv.pagesize): value 4096
+ 60.1.9 (hinv.physmem): value 3021
+ 60.0.71 (kernel.pernode.cpu.irq.hard): No values returned!
+@@ -2833,9 +2833,9 @@
+ 60.2.2 (kernel.all.runnable): value 1
+ 60.2.1 (kernel.all.lastpid): value 2950
+ 60.2.0 (kernel.all.load):
+- inst [1 or "1 minute"] value 0
+- inst [5 or "5 minute"] value 0.02
+- inst [15 or "15 minute"] value 0.050000001
++ inst [60 or "60 second"] value 0
++ inst [300 or "300 second"] value 0.02
++ inst [900 or "900 second"] value 0.050000001
+ 60.1.11 (hinv.pagesize): value 4096
+ 60.1.9 (hinv.physmem): value 3021
+ 60.0.71 (kernel.pernode.cpu.irq.hard): No values returned!
+@@ -3472,9 +3472,9 @@
+ 60.2.2 (kernel.all.runnable): value 1
+ 60.2.1 (kernel.all.lastpid): value 2950
+ 60.2.0 (kernel.all.load):
+- inst [1 or "1 minute"] value 0
+- inst [5 or "5 minute"] value 0.02
+- inst [15 or "15 minute"] value 0.050000001
++ inst [60 or "60 second"] value 0
++ inst [300 or "300 second"] value 0.02
++ inst [900 or "900 second"] value 0.050000001
+ 60.1.11 (hinv.pagesize): value 4096
+ 60.1.9 (hinv.physmem): value 3021
+ 60.0.71 (kernel.pernode.cpu.irq.hard): No values returned!
+
+=== metric disk.dev.read { type -> U64 } metric disk.dev.write { type -> U64 } metric disk.dev.total { type -> U64 } ===
+--- input metadata ---
+
+disk.dev.read
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+--- output metadata ---
+
+disk.dev.read
+ Data Type: 64-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval: pmFetchArchive: End of PCP archive log
+pmval diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+ Note: timezone set to local timezone of host "babylon" from archive
+
+ metric: disk.dev.read
+-archive: src/babylon.pmview_v2
++archive: TMP.new
+ host: babylon
+ start: Tue Mar 12 11:19:10 1996
+ end: Tue Mar 12 11:25:07 1996
+--- input metadata ---
+
+disk.dev.write
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+--- output metadata ---
+
+disk.dev.write
+ Data Type: 64-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval: pmFetchArchive: End of PCP archive log
+pmval diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+ Note: timezone set to local timezone of host "babylon" from archive
+
+ metric: disk.dev.write
+-archive: src/babylon.pmview_v2
++archive: TMP.new
+ host: babylon
+ start: Tue Mar 12 11:19:10 1996
+ end: Tue Mar 12 11:25:07 1996
+--- input metadata ---
+
+disk.dev.total
+ Data Type: 32-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+--- output metadata ---
+
+disk.dev.total
+ Data Type: 64-bit unsigned int InDom: 1.2 0x400002
+ Semantics: counter Units: count
+
+pmval: pmFetchArchive: End of PCP archive log
+
+pmval: pmFetchArchive: End of PCP archive log
+pmval diffs ...
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+ Note: timezone set to local timezone of host "babylon" from archive
+
+ metric: disk.dev.total
+-archive: src/babylon.pmview_v2
++archive: TMP.new
+ host: babylon
+ start: Tue Mar 12 11:19:10 1996
+ end: Tue Mar 12 11:25:07 1996
+
+=== proc metrics migration ===
+
+pmns diffs ...
+--- TMP.in
++++ TMP.out
+@@ -128,90 +128,90 @@
+ pmcd.pmlogger.archive PMID: 2.3.2
+ pmcd.pmlogger.host PMID: 2.3.3
+ pmcd.pmlogger.port PMID: 2.3.0
+-proc.fd.count PMID: 60.51.0
+-proc.id.egid PMID: 60.24.5
+-proc.id.egid_nm PMID: 60.24.13
+-proc.id.euid PMID: 60.24.1
+-proc.id.euid_nm PMID: 60.24.9
+-proc.id.fsgid PMID: 60.24.7
+-proc.id.fsgid_nm PMID: 60.24.15
+-proc.id.fsuid PMID: 60.24.3
+-proc.id.fsuid_nm PMID: 60.24.11
+-proc.id.gid PMID: 60.24.4
+-proc.id.gid_nm PMID: 60.24.12
+-proc.id.sgid PMID: 60.24.6
+-proc.id.sgid_nm PMID: 60.24.14
+-proc.id.suid PMID: 60.24.2
+-proc.id.suid_nm PMID: 60.24.10
+-proc.id.uid PMID: 60.24.0
+-proc.id.uid_nm PMID: 60.24.8
+-proc.io.cancelled_write_bytes PMID: 60.32.6
+-proc.io.rchar PMID: 60.32.0
+-proc.io.read_bytes PMID: 60.32.4
+-proc.io.syscr PMID: 60.32.2
+-proc.io.syscw PMID: 60.32.3
+-proc.io.wchar PMID: 60.32.1
+-proc.io.write_bytes PMID: 60.32.5
+-proc.memory.datrss PMID: 60.9.5
+-proc.memory.dirty PMID: 60.9.6
+-proc.memory.librss PMID: 60.9.4
+-proc.memory.maps PMID: 60.9.7
+-proc.memory.rss PMID: 60.9.1
+-proc.memory.share PMID: 60.9.2
+-proc.memory.size PMID: 60.9.0
+-proc.memory.textrss PMID: 60.9.3
+-proc.memory.vmdata PMID: 60.24.23
+-proc.memory.vmexe PMID: 60.24.25
+-proc.memory.vmlib PMID: 60.24.26
+-proc.memory.vmlock PMID: 60.24.21
+-proc.memory.vmrss PMID: 60.24.22
+-proc.memory.vmsize PMID: 60.24.20
+-proc.memory.vmstack PMID: 60.24.24
+-proc.psinfo.blocked PMID: 60.8.31
+-proc.psinfo.blocked_s PMID: 60.24.17
+-proc.psinfo.cmaj_flt PMID: 60.8.12
+-proc.psinfo.cmd PMID: 60.8.1
+-proc.psinfo.cmin_flt PMID: 60.8.10
+-proc.psinfo.cnswap PMID: 60.8.36
+-proc.psinfo.cstime PMID: 60.8.16
+-proc.psinfo.cutime PMID: 60.8.15
+-proc.psinfo.eip PMID: 60.8.29
+-proc.psinfo.end_code PMID: 60.8.26
+-proc.psinfo.esp PMID: 60.8.28
+-proc.psinfo.exit_signal PMID: 60.8.37
+-proc.psinfo.flags PMID: 60.8.8
+-proc.psinfo.it_real_value PMID: 60.8.20
+-proc.psinfo.maj_flt PMID: 60.8.11
+-proc.psinfo.minflt PMID: 60.8.9
+-proc.psinfo.nice PMID: 60.8.18
+-proc.psinfo.nswap PMID: 60.8.35
+-proc.psinfo.pgrp PMID: 60.8.4
+-proc.psinfo.pid PMID: 60.8.0
+-proc.psinfo.ppid PMID: 60.8.3
+-proc.psinfo.priority PMID: 60.8.17
+-proc.psinfo.processor PMID: 60.8.38
+-proc.psinfo.psargs PMID: 60.8.41
+-proc.psinfo.rss PMID: 60.8.23
+-proc.psinfo.rss_rlim PMID: 60.8.24
+-proc.psinfo.session PMID: 60.8.5
+-proc.psinfo.sigcatch PMID: 60.8.33
+-proc.psinfo.sigcatch_s PMID: 60.24.19
+-proc.psinfo.sigignore PMID: 60.8.32
+-proc.psinfo.sigignore_s PMID: 60.24.18
+-proc.psinfo.signal PMID: 60.8.30
+-proc.psinfo.signal_s PMID: 60.24.16
+-proc.psinfo.sname PMID: 60.8.2
+-proc.psinfo.start_code PMID: 60.8.25
+-proc.psinfo.start_stack PMID: 60.8.27
+-proc.psinfo.start_time PMID: 60.8.21
+-proc.psinfo.stime PMID: 60.8.14
+-proc.psinfo.tty PMID: 60.8.6
+-proc.psinfo.tty_pgrp PMID: 60.8.7
+-proc.psinfo.ttyname PMID: 60.8.39
+-proc.psinfo.utime PMID: 60.8.13
+-proc.psinfo.vsize PMID: 60.8.22
+-proc.psinfo.wchan PMID: 60.8.34
+-proc.psinfo.wchan_s PMID: 60.8.40
+-proc.schedstat.cpu_time PMID: 60.31.0
+-proc.schedstat.pcount PMID: 60.31.2
+-proc.schedstat.run_delay PMID: 60.31.1
++proc.fd.count PMID: 123.51.0
++proc.id.egid PMID: 123.24.5
++proc.id.egid_nm PMID: 123.24.13
++proc.id.euid PMID: 123.24.1
++proc.id.euid_nm PMID: 123.24.9
++proc.id.fsgid PMID: 123.24.7
++proc.id.fsgid_nm PMID: 123.24.15
++proc.id.fsuid PMID: 123.24.3
++proc.id.fsuid_nm PMID: 123.24.11
++proc.id.gid PMID: 123.24.4
++proc.id.gid_nm PMID: 123.24.12
++proc.id.sgid PMID: 123.24.6
++proc.id.sgid_nm PMID: 123.24.14
++proc.id.suid PMID: 123.24.2
++proc.id.suid_nm PMID: 123.24.10
++proc.id.uid PMID: 123.24.0
++proc.id.uid_nm PMID: 123.24.8
++proc.io.cancelled_write_bytes PMID: 123.32.6
++proc.io.rchar PMID: 123.32.0
++proc.io.read_bytes PMID: 123.32.4
++proc.io.syscr PMID: 123.32.2
++proc.io.syscw PMID: 123.32.3
++proc.io.wchar PMID: 123.32.1
++proc.io.write_bytes PMID: 123.32.5
++proc.memory.datrss PMID: 123.9.5
++proc.memory.dirty PMID: 123.9.6
++proc.memory.librss PMID: 123.9.4
++proc.memory.maps PMID: 123.9.7
++proc.memory.rss PMID: 123.9.1
++proc.memory.share PMID: 123.9.2
++proc.memory.size PMID: 123.9.0
++proc.memory.textrss PMID: 123.9.3
++proc.memory.vmdata PMID: 123.24.23
++proc.memory.vmexe PMID: 123.24.25
++proc.memory.vmlib PMID: 123.24.26
++proc.memory.vmlock PMID: 123.24.21
++proc.memory.vmrss PMID: 123.24.22
++proc.memory.vmsize PMID: 123.24.20
++proc.memory.vmstack PMID: 123.24.24
++proc.psinfo.blocked PMID: 123.8.31
++proc.psinfo.blocked_s PMID: 123.24.17
++proc.psinfo.cmaj_flt PMID: 123.8.12
++proc.psinfo.cmd PMID: 123.8.1
++proc.psinfo.cmin_flt PMID: 123.8.10
++proc.psinfo.cnswap PMID: 123.8.36
++proc.psinfo.cstime PMID: 123.8.16
++proc.psinfo.cutime PMID: 123.8.15
++proc.psinfo.eip PMID: 123.8.29
++proc.psinfo.end_code PMID: 123.8.26
++proc.psinfo.esp PMID: 123.8.28
++proc.psinfo.exit_signal PMID: 123.8.37
++proc.psinfo.flags PMID: 123.8.8
++proc.psinfo.it_real_value PMID: 123.8.20
++proc.psinfo.maj_flt PMID: 123.8.11
++proc.psinfo.minflt PMID: 123.8.9
++proc.psinfo.nice PMID: 123.8.18
++proc.psinfo.nswap PMID: 123.8.35
++proc.psinfo.pgrp PMID: 123.8.4
++proc.psinfo.pid PMID: 123.8.0
++proc.psinfo.ppid PMID: 123.8.3
++proc.psinfo.priority PMID: 123.8.17
++proc.psinfo.processor PMID: 123.8.38
++proc.psinfo.psargs PMID: 123.8.41
++proc.psinfo.rss PMID: 123.8.23
++proc.psinfo.rss_rlim PMID: 123.8.24
++proc.psinfo.session PMID: 123.8.5
++proc.psinfo.sigcatch PMID: 123.8.33
++proc.psinfo.sigcatch_s PMID: 123.24.19
++proc.psinfo.sigignore PMID: 123.8.32
++proc.psinfo.sigignore_s PMID: 123.24.18
++proc.psinfo.signal PMID: 123.8.30
++proc.psinfo.signal_s PMID: 123.24.16
++proc.psinfo.sname PMID: 123.8.2
++proc.psinfo.start_code PMID: 123.8.25
++proc.psinfo.start_stack PMID: 123.8.27
++proc.psinfo.start_time PMID: 123.8.21
++proc.psinfo.stime PMID: 123.8.14
++proc.psinfo.tty PMID: 123.8.6
++proc.psinfo.tty_pgrp PMID: 123.8.7
++proc.psinfo.ttyname PMID: 123.8.39
++proc.psinfo.utime PMID: 123.8.13
++proc.psinfo.vsize PMID: 123.8.22
++proc.psinfo.wchan PMID: 123.8.34
++proc.psinfo.wchan_s PMID: 123.8.40
++proc.schedstat.cpu_time PMID: 123.31.0
++proc.schedstat.pcount PMID: 123.31.2
++proc.schedstat.run_delay PMID: 123.31.1
+
+pmdumplog -i diffs ...
+--- TMP.in
++++ TMP.out
+@@ -27,7 +27,7 @@
+ 20:10:22.959 2 instances
+ 0 or "cpu0"
+ 1 or "cpu1"
+-InDom: 60.9
++InDom: 123.0
+ 20:10:22.959 304 instances
+ 1 or "000001 /sbin/init"
+ 2 or "000002 (kthreadd)"
+
+pmdumplog -m diffs ...
+--- TMP.in
++++ TMP.out
+@@ -5,7 +5,7 @@
+ 2.3.0 (pmcd.pmlogger.port): inst [2950 or "2950"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2950 or "2950"] value "/home/kenj/src/pcpqa/src/proc"
+
+-20:10:22.959 60.51.0 (proc.fd.count):
++20:10:22.959 123.51.0 (proc.fd.count):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 8
+ 60.50.10 (kernel.percpu.interrupts.MCP):
+@@ -92,118 +92,118 @@
+ 60.49.0 (kernel.percpu.interrupts.line0):
+ inst [0 or "cpu0"] value 101072282
+ inst [1 or "cpu1"] value 2
+- 60.32.6 (proc.io.cancelled_write_bytes):
++ 123.32.6 (proc.io.cancelled_write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.5 (proc.io.write_bytes):
++ 123.32.5 (proc.io.write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4096
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 151552
+- 60.32.4 (proc.io.read_bytes):
++ 123.32.4 (proc.io.read_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 36864
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.3 (proc.io.syscw):
++ 123.32.3 (proc.io.syscw):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17320
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 51
+- 60.32.2 (proc.io.syscr):
++ 123.32.2 (proc.io.syscr):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 19453
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 38
+- 60.32.1 (proc.io.wchar):
++ 123.32.1 (proc.io.wchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 294203
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3173
+- 60.32.0 (proc.io.rchar):
++ 123.32.0 (proc.io.rchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 626350
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 24441
+- 60.31.2 (proc.schedstat.pcount):
++ 123.31.2 (proc.schedstat.pcount):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 56854
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 108
+- 60.31.1 (proc.schedstat.run_delay):
++ 123.31.1 (proc.schedstat.run_delay):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 291173802
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 21324203
+- 60.31.0 (proc.schedstat.cpu_time):
++ 123.31.0 (proc.schedstat.cpu_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2587762538
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 14361861
+ 60.26.1 (kernel.all.idletime): value 358966
+ 60.26.0 (kernel.all.uptime): value 516660
+ 60.25.0 (kernel.all.nusers): value 4
+- 60.24.26 (proc.memory.vmlib):
++ 123.24.26 (proc.memory.vmlib):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.24.25 (proc.memory.vmexe):
++ 123.24.25 (proc.memory.vmexe):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 136
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 136
+- 60.24.24 (proc.memory.vmstack):
++ 123.24.24 (proc.memory.vmstack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 396
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 200
+- 60.24.23 (proc.memory.vmdata):
++ 123.24.23 (proc.memory.vmdata):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1720
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.22 (proc.memory.vmrss):
++ 123.24.22 (proc.memory.vmrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1720
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.21 (proc.memory.vmlock):
++ 123.24.21 (proc.memory.vmlock):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.20 (proc.memory.vmsize):
++ 123.24.20 (proc.memory.vmsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3008
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.24.19 (proc.psinfo.sigcatch_s):
++ 123.24.19 (proc.psinfo.sigcatch_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000381000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.18 (proc.psinfo.sigignore_s):
++ 123.24.18 (proc.psinfo.sigignore_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.17 (proc.psinfo.blocked_s):
++ 123.24.17 (proc.psinfo.blocked_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.16 (proc.psinfo.signal_s):
++ 123.24.16 (proc.psinfo.signal_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.15 (proc.id.fsgid_nm):
++ 123.24.15 (proc.id.fsgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.14 (proc.id.sgid_nm):
++ 123.24.14 (proc.id.sgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.13 (proc.id.egid_nm):
++ 123.24.13 (proc.id.egid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.12 (proc.id.gid_nm):
++ 123.24.12 (proc.id.gid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.11 (proc.id.fsuid_nm):
++ 123.24.11 (proc.id.fsuid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.10 (proc.id.suid_nm):
++ 123.24.10 (proc.id.suid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.9 (proc.id.euid_nm):
++ 123.24.9 (proc.id.euid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.8 (proc.id.uid_nm):
++ 123.24.8 (proc.id.uid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.7 (proc.id.fsgid):
++ 123.24.7 (proc.id.fsgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.6 (proc.id.sgid):
++ 123.24.6 (proc.id.sgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.5 (proc.id.egid):
++ 123.24.5 (proc.id.egid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.4 (proc.id.gid):
++ 123.24.4 (proc.id.gid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.3 (proc.id.fsuid):
++ 123.24.3 (proc.id.fsuid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.2 (proc.id.suid):
++ 123.24.2 (proc.id.suid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.1 (proc.id.euid):
++ 123.24.1 (proc.id.euid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.0 (proc.id.uid):
++ 123.24.0 (proc.id.uid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+ 60.18.8 (hinv.map.cpu_node):
+@@ -312,7 +312,7 @@
+ inst [4 or "sda5"] value 71326
+ inst [5 or "sda6"] value 70
+ inst [6 or "sr0"] value 0
+- 60.9.7 (proc.memory.maps):
++ 123.9.7 (proc.memory.maps):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "00110000-0011b000 r-xp 00000000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011b000-0011c000 r--p 0000b000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011c000-0011f000 rw-p 0000c000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+@@ -404,148 +404,148 @@
+ b78a2000-b78a8000 rw-p 00000000 00:00 0
+ bface000-bfaef000 rw-p 00000000 00:00 0 [stack]
+ "
+- 60.9.6 (proc.memory.dirty):
++ 123.9.6 (proc.memory.dirty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.5 (proc.memory.datrss):
++ 123.9.5 (proc.memory.datrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 540
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 336
+- 60.9.4 (proc.memory.librss):
++ 123.9.4 (proc.memory.librss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.3 (proc.memory.textrss):
++ 123.9.3 (proc.memory.textrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.9.2 (proc.memory.share):
++ 123.9.2 (proc.memory.share):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1276
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 912
+- 60.9.1 (proc.memory.rss):
++ 123.9.1 (proc.memory.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1824
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.9.0 (proc.memory.size):
++ 123.9.0 (proc.memory.size):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3176
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.41 (proc.psinfo.psargs):
++ 123.8.41 (proc.psinfo.psargs):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "/usr/lib/pcp/bin/pmcd -T 3"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger -P -c config.default 20110930.17.20"
+- 60.8.40 (proc.psinfo.wchan_s):
++ 123.8.40 (proc.psinfo.wchan_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "poll_schedule_timeout"
+- 60.8.39 (proc.psinfo.ttyname):
++ 123.8.39 (proc.psinfo.ttyname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "?"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "?"
+- 60.8.38 (proc.psinfo.processor):
++ 123.8.38 (proc.psinfo.processor):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.37 (proc.psinfo.exit_signal):
++ 123.8.37 (proc.psinfo.exit_signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 17
+- 60.8.36 (proc.psinfo.cnswap):
++ 123.8.36 (proc.psinfo.cnswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.35 (proc.psinfo.nswap):
++ 123.8.35 (proc.psinfo.nswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.34 (proc.psinfo.wchan):
++ 123.8.34 (proc.psinfo.wchan):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3239277694
+- 60.8.33 (proc.psinfo.sigcatch):
++ 123.8.33 (proc.psinfo.sigcatch):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17475
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1468137215
+- 60.8.32 (proc.psinfo.sigignore):
++ 123.8.32 (proc.psinfo.sigignore):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3674112
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.31 (proc.psinfo.blocked):
++ 123.8.31 (proc.psinfo.blocked):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.30 (proc.psinfo.signal):
++ 123.8.30 (proc.psinfo.signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.29 (proc.psinfo.eip):
++ 123.8.29 (proc.psinfo.eip):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 11981846
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3142678
+- 60.8.28 (proc.psinfo.esp):
++ 123.8.28 (proc.psinfo.esp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220486852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215896556
+- 60.8.27 (proc.psinfo.start_stack):
++ 123.8.27 (proc.psinfo.start_stack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220489952
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215901280
+- 60.8.26 (proc.psinfo.end_code):
++ 123.8.26 (proc.psinfo.end_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134600844
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134596584
+- 60.8.25 (proc.psinfo.start_code):
++ 123.8.25 (proc.psinfo.start_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134512640
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134512640
+- 60.8.24 (proc.psinfo.rss_rlim):
++ 123.8.24 (proc.psinfo.rss_rlim):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4194303
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4194303
+- 60.8.23 (proc.psinfo.rss):
++ 123.8.23 (proc.psinfo.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1824
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.8.22 (proc.psinfo.vsize):
++ 123.8.22 (proc.psinfo.vsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3176
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.21 (proc.psinfo.start_time):
++ 123.8.21 (proc.psinfo.start_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 25084983
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 25084993
+- 60.8.20 (proc.psinfo.it_real_value):
++ 123.8.20 (proc.psinfo.it_real_value):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.18 (proc.psinfo.nice):
++ 123.8.18 (proc.psinfo.nice):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.17 (proc.psinfo.priority):
++ 123.8.17 (proc.psinfo.priority):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 20
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 20
+- 60.8.16 (proc.psinfo.cstime):
++ 123.8.16 (proc.psinfo.cstime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.15 (proc.psinfo.cutime):
++ 123.8.15 (proc.psinfo.cutime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.14 (proc.psinfo.stime):
++ 123.8.14 (proc.psinfo.stime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1640
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.13 (proc.psinfo.utime):
++ 123.8.13 (proc.psinfo.utime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 940
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.12 (proc.psinfo.cmaj_flt):
++ 123.8.12 (proc.psinfo.cmaj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.11 (proc.psinfo.maj_flt):
++ 123.8.11 (proc.psinfo.maj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.10 (proc.psinfo.cmin_flt):
++ 123.8.10 (proc.psinfo.cmin_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.9 (proc.psinfo.minflt):
++ 123.8.9 (proc.psinfo.minflt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 750
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 386
+- 60.8.8 (proc.psinfo.flags):
++ 123.8.8 (proc.psinfo.flags):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4202560
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4202496
+- 60.8.7 (proc.psinfo.tty_pgrp):
++ 123.8.7 (proc.psinfo.tty_pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4294967295
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4294967295
+- 60.8.6 (proc.psinfo.tty):
++ 123.8.6 (proc.psinfo.tty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.5 (proc.psinfo.session):
++ 123.8.5 (proc.psinfo.session):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3041
+- 60.8.4 (proc.psinfo.pgrp):
++ 123.8.4 (proc.psinfo.pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+- 60.8.3 (proc.psinfo.ppid):
++ 123.8.3 (proc.psinfo.ppid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1
+- 60.8.2 (proc.psinfo.sname):
++ 123.8.2 (proc.psinfo.sname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "R"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "S"
+- 60.8.1 (proc.psinfo.cmd):
++ 123.8.1 (proc.psinfo.cmd):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "pmcd"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger"
+- 60.8.0 (proc.psinfo.pid):
++ 123.8.0 (proc.psinfo.pid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+ 60.5.0 (hinv.nfilesys): value 1
+@@ -643,7 +643,7 @@
+ inst [0 or "cpu0"] value 2822500
+ inst [1 or "cpu1"] value 2782080
+
+-20:10:23.300 60.51.0 (proc.fd.count):
++20:10:23.300 123.51.0 (proc.fd.count):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 8
+ 60.50.10 (kernel.percpu.interrupts.MCP):
+@@ -730,118 +730,118 @@
+ 60.49.0 (kernel.percpu.interrupts.line0):
+ inst [0 or "cpu0"] value 101072335
+ inst [1 or "cpu1"] value 2
+- 60.32.6 (proc.io.cancelled_write_bytes):
++ 123.32.6 (proc.io.cancelled_write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.5 (proc.io.write_bytes):
++ 123.32.5 (proc.io.write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4096
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 151552
+- 60.32.4 (proc.io.read_bytes):
++ 123.32.4 (proc.io.read_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 40960
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.3 (proc.io.syscw):
++ 123.32.3 (proc.io.syscw):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17320
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 51
+- 60.32.2 (proc.io.syscr):
++ 123.32.2 (proc.io.syscr):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 19533
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 38
+- 60.32.1 (proc.io.wchar):
++ 123.32.1 (proc.io.wchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 294203
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3173
+- 60.32.0 (proc.io.rchar):
++ 123.32.0 (proc.io.rchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 657096
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 24441
+- 60.31.2 (proc.schedstat.pcount):
++ 123.31.2 (proc.schedstat.pcount):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 56866
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 108
+- 60.31.1 (proc.schedstat.run_delay):
++ 123.31.1 (proc.schedstat.run_delay):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 291393899
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 21324203
+- 60.31.0 (proc.schedstat.cpu_time):
++ 123.31.0 (proc.schedstat.cpu_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2604852681
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 14361861
+ 60.26.1 (kernel.all.idletime): value 358967
+ 60.26.0 (kernel.all.uptime): value 516660
+ 60.25.0 (kernel.all.nusers): value 4
+- 60.24.26 (proc.memory.vmlib):
++ 123.24.26 (proc.memory.vmlib):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.24.25 (proc.memory.vmexe):
++ 123.24.25 (proc.memory.vmexe):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 136
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 136
+- 60.24.24 (proc.memory.vmstack):
++ 123.24.24 (proc.memory.vmstack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 500
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 200
+- 60.24.23 (proc.memory.vmdata):
++ 123.24.23 (proc.memory.vmdata):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.22 (proc.memory.vmrss):
++ 123.24.22 (proc.memory.vmrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.21 (proc.memory.vmlock):
++ 123.24.21 (proc.memory.vmlock):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.20 (proc.memory.vmsize):
++ 123.24.20 (proc.memory.vmsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.24.19 (proc.psinfo.sigcatch_s):
++ 123.24.19 (proc.psinfo.sigcatch_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000381000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.18 (proc.psinfo.sigignore_s):
++ 123.24.18 (proc.psinfo.sigignore_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.17 (proc.psinfo.blocked_s):
++ 123.24.17 (proc.psinfo.blocked_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.16 (proc.psinfo.signal_s):
++ 123.24.16 (proc.psinfo.signal_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.15 (proc.id.fsgid_nm):
++ 123.24.15 (proc.id.fsgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.14 (proc.id.sgid_nm):
++ 123.24.14 (proc.id.sgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.13 (proc.id.egid_nm):
++ 123.24.13 (proc.id.egid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.12 (proc.id.gid_nm):
++ 123.24.12 (proc.id.gid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.11 (proc.id.fsuid_nm):
++ 123.24.11 (proc.id.fsuid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.10 (proc.id.suid_nm):
++ 123.24.10 (proc.id.suid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.9 (proc.id.euid_nm):
++ 123.24.9 (proc.id.euid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.8 (proc.id.uid_nm):
++ 123.24.8 (proc.id.uid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.7 (proc.id.fsgid):
++ 123.24.7 (proc.id.fsgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.6 (proc.id.sgid):
++ 123.24.6 (proc.id.sgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.5 (proc.id.egid):
++ 123.24.5 (proc.id.egid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.4 (proc.id.gid):
++ 123.24.4 (proc.id.gid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.3 (proc.id.fsuid):
++ 123.24.3 (proc.id.fsuid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.2 (proc.id.suid):
++ 123.24.2 (proc.id.suid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.1 (proc.id.euid):
++ 123.24.1 (proc.id.euid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.0 (proc.id.uid):
++ 123.24.0 (proc.id.uid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+ 60.18.8 (hinv.map.cpu_node):
+@@ -950,7 +950,7 @@
+ inst [4 or "sda5"] value 71327
+ inst [5 or "sda6"] value 70
+ inst [6 or "sr0"] value 0
+- 60.9.7 (proc.memory.maps):
++ 123.9.7 (proc.memory.maps):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "00110000-0011b000 r-xp 00000000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011b000-0011c000 r--p 0000b000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011c000-0011f000 rw-p 0000c000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+@@ -1042,148 +1042,148 @@
+ b78a2000-b78a8000 rw-p 00000000 00:00 0
+ bface000-bfaef000 rw-p 00000000 00:00 0 [stack]
+ "
+- 60.9.6 (proc.memory.dirty):
++ 123.9.6 (proc.memory.dirty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.5 (proc.memory.datrss):
++ 123.9.5 (proc.memory.datrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 636
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 336
+- 60.9.4 (proc.memory.librss):
++ 123.9.4 (proc.memory.librss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.3 (proc.memory.textrss):
++ 123.9.3 (proc.memory.textrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.9.2 (proc.memory.share):
++ 123.9.2 (proc.memory.share):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1292
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 912
+- 60.9.1 (proc.memory.rss):
++ 123.9.1 (proc.memory.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.9.0 (proc.memory.size):
++ 123.9.0 (proc.memory.size):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.41 (proc.psinfo.psargs):
++ 123.8.41 (proc.psinfo.psargs):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "/usr/lib/pcp/bin/pmcd -T 3"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger -P -c config.default 20110930.17.20"
+- 60.8.40 (proc.psinfo.wchan_s):
++ 123.8.40 (proc.psinfo.wchan_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "poll_schedule_timeout"
+- 60.8.39 (proc.psinfo.ttyname):
++ 123.8.39 (proc.psinfo.ttyname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "?"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "?"
+- 60.8.38 (proc.psinfo.processor):
++ 123.8.38 (proc.psinfo.processor):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.37 (proc.psinfo.exit_signal):
++ 123.8.37 (proc.psinfo.exit_signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 17
+- 60.8.36 (proc.psinfo.cnswap):
++ 123.8.36 (proc.psinfo.cnswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.35 (proc.psinfo.nswap):
++ 123.8.35 (proc.psinfo.nswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.34 (proc.psinfo.wchan):
++ 123.8.34 (proc.psinfo.wchan):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3239277694
+- 60.8.33 (proc.psinfo.sigcatch):
++ 123.8.33 (proc.psinfo.sigcatch):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17475
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1468137215
+- 60.8.32 (proc.psinfo.sigignore):
++ 123.8.32 (proc.psinfo.sigignore):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3674112
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.31 (proc.psinfo.blocked):
++ 123.8.31 (proc.psinfo.blocked):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.30 (proc.psinfo.signal):
++ 123.8.30 (proc.psinfo.signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.29 (proc.psinfo.eip):
++ 123.8.29 (proc.psinfo.eip):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 11981846
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3142678
+- 60.8.28 (proc.psinfo.esp):
++ 123.8.28 (proc.psinfo.esp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220486852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215896556
+- 60.8.27 (proc.psinfo.start_stack):
++ 123.8.27 (proc.psinfo.start_stack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220489952
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215901280
+- 60.8.26 (proc.psinfo.end_code):
++ 123.8.26 (proc.psinfo.end_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134600844
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134596584
+- 60.8.25 (proc.psinfo.start_code):
++ 123.8.25 (proc.psinfo.start_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134512640
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134512640
+- 60.8.24 (proc.psinfo.rss_rlim):
++ 123.8.24 (proc.psinfo.rss_rlim):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4194303
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4194303
+- 60.8.23 (proc.psinfo.rss):
++ 123.8.23 (proc.psinfo.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.8.22 (proc.psinfo.vsize):
++ 123.8.22 (proc.psinfo.vsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.21 (proc.psinfo.start_time):
++ 123.8.21 (proc.psinfo.start_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 25084983
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 25084993
+- 60.8.20 (proc.psinfo.it_real_value):
++ 123.8.20 (proc.psinfo.it_real_value):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.18 (proc.psinfo.nice):
++ 123.8.18 (proc.psinfo.nice):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.17 (proc.psinfo.priority):
++ 123.8.17 (proc.psinfo.priority):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 20
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 20
+- 60.8.16 (proc.psinfo.cstime):
++ 123.8.16 (proc.psinfo.cstime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.15 (proc.psinfo.cutime):
++ 123.8.15 (proc.psinfo.cutime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.14 (proc.psinfo.stime):
++ 123.8.14 (proc.psinfo.stime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1660
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.13 (proc.psinfo.utime):
++ 123.8.13 (proc.psinfo.utime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 940
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.12 (proc.psinfo.cmaj_flt):
++ 123.8.12 (proc.psinfo.cmaj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.11 (proc.psinfo.maj_flt):
++ 123.8.11 (proc.psinfo.maj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.10 (proc.psinfo.cmin_flt):
++ 123.8.10 (proc.psinfo.cmin_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.9 (proc.psinfo.minflt):
++ 123.8.9 (proc.psinfo.minflt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 780
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 386
+- 60.8.8 (proc.psinfo.flags):
++ 123.8.8 (proc.psinfo.flags):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4202560
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4202496
+- 60.8.7 (proc.psinfo.tty_pgrp):
++ 123.8.7 (proc.psinfo.tty_pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4294967295
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4294967295
+- 60.8.6 (proc.psinfo.tty):
++ 123.8.6 (proc.psinfo.tty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.5 (proc.psinfo.session):
++ 123.8.5 (proc.psinfo.session):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3041
+- 60.8.4 (proc.psinfo.pgrp):
++ 123.8.4 (proc.psinfo.pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+- 60.8.3 (proc.psinfo.ppid):
++ 123.8.3 (proc.psinfo.ppid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1
+- 60.8.2 (proc.psinfo.sname):
++ 123.8.2 (proc.psinfo.sname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "R"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "S"
+- 60.8.1 (proc.psinfo.cmd):
++ 123.8.1 (proc.psinfo.cmd):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "pmcd"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger"
+- 60.8.0 (proc.psinfo.pid):
++ 123.8.0 (proc.psinfo.pid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+ 60.5.0 (hinv.nfilesys): value 1
+@@ -1281,7 +1281,7 @@
+ inst [0 or "cpu0"] value 2822510
+ inst [1 or "cpu1"] value 2782080
+
+-20:10:23.802 60.51.0 (proc.fd.count):
++20:10:23.802 123.51.0 (proc.fd.count):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 8
+ 60.50.10 (kernel.percpu.interrupts.MCP):
+@@ -1368,118 +1368,118 @@
+ 60.49.0 (kernel.percpu.interrupts.line0):
+ inst [0 or "cpu0"] value 101072390
+ inst [1 or "cpu1"] value 2
+- 60.32.6 (proc.io.cancelled_write_bytes):
++ 123.32.6 (proc.io.cancelled_write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.5 (proc.io.write_bytes):
++ 123.32.5 (proc.io.write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4096
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 151552
+- 60.32.4 (proc.io.read_bytes):
++ 123.32.4 (proc.io.read_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 40960
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.3 (proc.io.syscw):
++ 123.32.3 (proc.io.syscw):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17320
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 51
+- 60.32.2 (proc.io.syscr):
++ 123.32.2 (proc.io.syscr):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 19596
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 38
+- 60.32.1 (proc.io.wchar):
++ 123.32.1 (proc.io.wchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 294203
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3173
+- 60.32.0 (proc.io.rchar):
++ 123.32.0 (proc.io.rchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 681597
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 24441
+- 60.31.2 (proc.schedstat.pcount):
++ 123.31.2 (proc.schedstat.pcount):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 56868
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 108
+- 60.31.1 (proc.schedstat.run_delay):
++ 123.31.1 (proc.schedstat.run_delay):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 291419979
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 21324203
+- 60.31.0 (proc.schedstat.cpu_time):
++ 123.31.0 (proc.schedstat.cpu_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2615438290
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 14361861
+ 60.26.1 (kernel.all.idletime): value 358968
+ 60.26.0 (kernel.all.uptime): value 516661
+ 60.25.0 (kernel.all.nusers): value 4
+- 60.24.26 (proc.memory.vmlib):
++ 123.24.26 (proc.memory.vmlib):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.24.25 (proc.memory.vmexe):
++ 123.24.25 (proc.memory.vmexe):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 136
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 136
+- 60.24.24 (proc.memory.vmstack):
++ 123.24.24 (proc.memory.vmstack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 500
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 200
+- 60.24.23 (proc.memory.vmdata):
++ 123.24.23 (proc.memory.vmdata):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.22 (proc.memory.vmrss):
++ 123.24.22 (proc.memory.vmrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.21 (proc.memory.vmlock):
++ 123.24.21 (proc.memory.vmlock):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.20 (proc.memory.vmsize):
++ 123.24.20 (proc.memory.vmsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.24.19 (proc.psinfo.sigcatch_s):
++ 123.24.19 (proc.psinfo.sigcatch_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000381000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.18 (proc.psinfo.sigignore_s):
++ 123.24.18 (proc.psinfo.sigignore_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.17 (proc.psinfo.blocked_s):
++ 123.24.17 (proc.psinfo.blocked_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.16 (proc.psinfo.signal_s):
++ 123.24.16 (proc.psinfo.signal_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.15 (proc.id.fsgid_nm):
++ 123.24.15 (proc.id.fsgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.14 (proc.id.sgid_nm):
++ 123.24.14 (proc.id.sgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.13 (proc.id.egid_nm):
++ 123.24.13 (proc.id.egid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.12 (proc.id.gid_nm):
++ 123.24.12 (proc.id.gid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.11 (proc.id.fsuid_nm):
++ 123.24.11 (proc.id.fsuid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.10 (proc.id.suid_nm):
++ 123.24.10 (proc.id.suid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.9 (proc.id.euid_nm):
++ 123.24.9 (proc.id.euid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.8 (proc.id.uid_nm):
++ 123.24.8 (proc.id.uid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.7 (proc.id.fsgid):
++ 123.24.7 (proc.id.fsgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.6 (proc.id.sgid):
++ 123.24.6 (proc.id.sgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.5 (proc.id.egid):
++ 123.24.5 (proc.id.egid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.4 (proc.id.gid):
++ 123.24.4 (proc.id.gid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.3 (proc.id.fsuid):
++ 123.24.3 (proc.id.fsuid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.2 (proc.id.suid):
++ 123.24.2 (proc.id.suid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.1 (proc.id.euid):
++ 123.24.1 (proc.id.euid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.0 (proc.id.uid):
++ 123.24.0 (proc.id.uid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+ 60.18.8 (hinv.map.cpu_node):
+@@ -1588,7 +1588,7 @@
+ inst [4 or "sda5"] value 71327
+ inst [5 or "sda6"] value 70
+ inst [6 or "sr0"] value 0
+- 60.9.7 (proc.memory.maps):
++ 123.9.7 (proc.memory.maps):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "00110000-0011b000 r-xp 00000000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011b000-0011c000 r--p 0000b000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011c000-0011f000 rw-p 0000c000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+@@ -1680,148 +1680,148 @@
+ b78a2000-b78a8000 rw-p 00000000 00:00 0
+ bface000-bfaef000 rw-p 00000000 00:00 0 [stack]
+ "
+- 60.9.6 (proc.memory.dirty):
++ 123.9.6 (proc.memory.dirty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.5 (proc.memory.datrss):
++ 123.9.5 (proc.memory.datrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 636
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 336
+- 60.9.4 (proc.memory.librss):
++ 123.9.4 (proc.memory.librss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.3 (proc.memory.textrss):
++ 123.9.3 (proc.memory.textrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.9.2 (proc.memory.share):
++ 123.9.2 (proc.memory.share):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1292
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 912
+- 60.9.1 (proc.memory.rss):
++ 123.9.1 (proc.memory.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.9.0 (proc.memory.size):
++ 123.9.0 (proc.memory.size):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.41 (proc.psinfo.psargs):
++ 123.8.41 (proc.psinfo.psargs):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "/usr/lib/pcp/bin/pmcd -T 3"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger -P -c config.default 20110930.17.20"
+- 60.8.40 (proc.psinfo.wchan_s):
++ 123.8.40 (proc.psinfo.wchan_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "poll_schedule_timeout"
+- 60.8.39 (proc.psinfo.ttyname):
++ 123.8.39 (proc.psinfo.ttyname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "?"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "?"
+- 60.8.38 (proc.psinfo.processor):
++ 123.8.38 (proc.psinfo.processor):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.37 (proc.psinfo.exit_signal):
++ 123.8.37 (proc.psinfo.exit_signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 17
+- 60.8.36 (proc.psinfo.cnswap):
++ 123.8.36 (proc.psinfo.cnswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.35 (proc.psinfo.nswap):
++ 123.8.35 (proc.psinfo.nswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.34 (proc.psinfo.wchan):
++ 123.8.34 (proc.psinfo.wchan):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3239277694
+- 60.8.33 (proc.psinfo.sigcatch):
++ 123.8.33 (proc.psinfo.sigcatch):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17475
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1468137215
+- 60.8.32 (proc.psinfo.sigignore):
++ 123.8.32 (proc.psinfo.sigignore):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3674112
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.31 (proc.psinfo.blocked):
++ 123.8.31 (proc.psinfo.blocked):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.30 (proc.psinfo.signal):
++ 123.8.30 (proc.psinfo.signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.29 (proc.psinfo.eip):
++ 123.8.29 (proc.psinfo.eip):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 11981846
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3142678
+- 60.8.28 (proc.psinfo.esp):
++ 123.8.28 (proc.psinfo.esp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220486852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215896556
+- 60.8.27 (proc.psinfo.start_stack):
++ 123.8.27 (proc.psinfo.start_stack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220489952
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215901280
+- 60.8.26 (proc.psinfo.end_code):
++ 123.8.26 (proc.psinfo.end_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134600844
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134596584
+- 60.8.25 (proc.psinfo.start_code):
++ 123.8.25 (proc.psinfo.start_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134512640
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134512640
+- 60.8.24 (proc.psinfo.rss_rlim):
++ 123.8.24 (proc.psinfo.rss_rlim):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4194303
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4194303
+- 60.8.23 (proc.psinfo.rss):
++ 123.8.23 (proc.psinfo.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1848
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.8.22 (proc.psinfo.vsize):
++ 123.8.22 (proc.psinfo.vsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.21 (proc.psinfo.start_time):
++ 123.8.21 (proc.psinfo.start_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 25084983
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 25084993
+- 60.8.20 (proc.psinfo.it_real_value):
++ 123.8.20 (proc.psinfo.it_real_value):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.18 (proc.psinfo.nice):
++ 123.8.18 (proc.psinfo.nice):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.17 (proc.psinfo.priority):
++ 123.8.17 (proc.psinfo.priority):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 20
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 20
+- 60.8.16 (proc.psinfo.cstime):
++ 123.8.16 (proc.psinfo.cstime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.15 (proc.psinfo.cutime):
++ 123.8.15 (proc.psinfo.cutime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.14 (proc.psinfo.stime):
++ 123.8.14 (proc.psinfo.stime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1660
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.13 (proc.psinfo.utime):
++ 123.8.13 (proc.psinfo.utime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 950
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.12 (proc.psinfo.cmaj_flt):
++ 123.8.12 (proc.psinfo.cmaj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.11 (proc.psinfo.maj_flt):
++ 123.8.11 (proc.psinfo.maj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.10 (proc.psinfo.cmin_flt):
++ 123.8.10 (proc.psinfo.cmin_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.9 (proc.psinfo.minflt):
++ 123.8.9 (proc.psinfo.minflt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 803
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 386
+- 60.8.8 (proc.psinfo.flags):
++ 123.8.8 (proc.psinfo.flags):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4202560
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4202496
+- 60.8.7 (proc.psinfo.tty_pgrp):
++ 123.8.7 (proc.psinfo.tty_pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4294967295
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4294967295
+- 60.8.6 (proc.psinfo.tty):
++ 123.8.6 (proc.psinfo.tty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.5 (proc.psinfo.session):
++ 123.8.5 (proc.psinfo.session):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3041
+- 60.8.4 (proc.psinfo.pgrp):
++ 123.8.4 (proc.psinfo.pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+- 60.8.3 (proc.psinfo.ppid):
++ 123.8.3 (proc.psinfo.ppid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1
+- 60.8.2 (proc.psinfo.sname):
++ 123.8.2 (proc.psinfo.sname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "R"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "S"
+- 60.8.1 (proc.psinfo.cmd):
++ 123.8.1 (proc.psinfo.cmd):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "pmcd"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger"
+- 60.8.0 (proc.psinfo.pid):
++ 123.8.0 (proc.psinfo.pid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+ 60.5.0 (hinv.nfilesys): value 1
+@@ -1919,7 +1919,7 @@
+ inst [0 or "cpu0"] value 2822510
+ inst [1 or "cpu1"] value 2782080
+
+-20:10:24.305 60.51.0 (proc.fd.count):
++20:10:24.305 123.51.0 (proc.fd.count):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 8
+ 60.50.10 (kernel.percpu.interrupts.MCP):
+@@ -2006,118 +2006,118 @@
+ 60.49.0 (kernel.percpu.interrupts.line0):
+ inst [0 or "cpu0"] value 101072434
+ inst [1 or "cpu1"] value 2
+- 60.32.6 (proc.io.cancelled_write_bytes):
++ 123.32.6 (proc.io.cancelled_write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.5 (proc.io.write_bytes):
++ 123.32.5 (proc.io.write_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4096
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 151552
+- 60.32.4 (proc.io.read_bytes):
++ 123.32.4 (proc.io.read_bytes):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 40960
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.32.3 (proc.io.syscw):
++ 123.32.3 (proc.io.syscw):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17320
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 51
+- 60.32.2 (proc.io.syscr):
++ 123.32.2 (proc.io.syscr):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 19659
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 38
+- 60.32.1 (proc.io.wchar):
++ 123.32.1 (proc.io.wchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 294203
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3173
+- 60.32.0 (proc.io.rchar):
++ 123.32.0 (proc.io.rchar):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 706098
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 24441
+- 60.31.2 (proc.schedstat.pcount):
++ 123.31.2 (proc.schedstat.pcount):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 56872
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 108
+- 60.31.1 (proc.schedstat.run_delay):
++ 123.31.1 (proc.schedstat.run_delay):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 291591704
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 21324203
+- 60.31.0 (proc.schedstat.cpu_time):
++ 123.31.0 (proc.schedstat.cpu_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2628207242
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 14361861
+ 60.26.1 (kernel.all.idletime): value 358969
+ 60.26.0 (kernel.all.uptime): value 516661
+ 60.25.0 (kernel.all.nusers): value 4
+- 60.24.26 (proc.memory.vmlib):
++ 123.24.26 (proc.memory.vmlib):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.24.25 (proc.memory.vmexe):
++ 123.24.25 (proc.memory.vmexe):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 136
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 136
+- 60.24.24 (proc.memory.vmstack):
++ 123.24.24 (proc.memory.vmstack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 500
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 200
+- 60.24.23 (proc.memory.vmdata):
++ 123.24.23 (proc.memory.vmdata):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.22 (proc.memory.vmrss):
++ 123.24.22 (proc.memory.vmrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.24.21 (proc.memory.vmlock):
++ 123.24.21 (proc.memory.vmlock):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.20 (proc.memory.vmsize):
++ 123.24.20 (proc.memory.vmsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.24.19 (proc.psinfo.sigcatch_s):
++ 123.24.19 (proc.psinfo.sigcatch_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000381000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.18 (proc.psinfo.sigignore_s):
++ 123.24.18 (proc.psinfo.sigignore_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.17 (proc.psinfo.blocked_s):
++ 123.24.17 (proc.psinfo.blocked_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.16 (proc.psinfo.signal_s):
++ 123.24.16 (proc.psinfo.signal_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0000000000000000"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "0000000000000000"
+- 60.24.15 (proc.id.fsgid_nm):
++ 123.24.15 (proc.id.fsgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.14 (proc.id.sgid_nm):
++ 123.24.14 (proc.id.sgid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.13 (proc.id.egid_nm):
++ 123.24.13 (proc.id.egid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.12 (proc.id.gid_nm):
++ 123.24.12 (proc.id.gid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.11 (proc.id.fsuid_nm):
++ 123.24.11 (proc.id.fsuid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.10 (proc.id.suid_nm):
++ 123.24.10 (proc.id.suid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.9 (proc.id.euid_nm):
++ 123.24.9 (proc.id.euid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.8 (proc.id.uid_nm):
++ 123.24.8 (proc.id.uid_nm):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "root"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "root"
+- 60.24.7 (proc.id.fsgid):
++ 123.24.7 (proc.id.fsgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.6 (proc.id.sgid):
++ 123.24.6 (proc.id.sgid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.5 (proc.id.egid):
++ 123.24.5 (proc.id.egid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.4 (proc.id.gid):
++ 123.24.4 (proc.id.gid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.3 (proc.id.fsuid):
++ 123.24.3 (proc.id.fsuid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.2 (proc.id.suid):
++ 123.24.2 (proc.id.suid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.1 (proc.id.euid):
++ 123.24.1 (proc.id.euid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.24.0 (proc.id.uid):
++ 123.24.0 (proc.id.uid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+ 60.18.8 (hinv.map.cpu_node):
+@@ -2226,7 +2226,7 @@
+ inst [4 or "sda5"] value 71327
+ inst [5 or "sda6"] value 70
+ inst [6 or "sr0"] value 0
+- 60.9.7 (proc.memory.maps):
++ 123.9.7 (proc.memory.maps):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "00110000-0011b000 r-xp 00000000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011b000-0011c000 r--p 0000b000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+ 0011c000-0011f000 rw-p 0000c000 08:05 2474030 /var/lib/pcp/pmdas/sample/pmda_sample.so
+@@ -2318,148 +2318,148 @@
+ b78a2000-b78a8000 rw-p 00000000 00:00 0
+ bface000-bfaef000 rw-p 00000000 00:00 0 [stack]
+ "
+- 60.9.6 (proc.memory.dirty):
++ 123.9.6 (proc.memory.dirty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.5 (proc.memory.datrss):
++ 123.9.5 (proc.memory.datrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 636
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 336
+- 60.9.4 (proc.memory.librss):
++ 123.9.4 (proc.memory.librss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.9.3 (proc.memory.textrss):
++ 123.9.3 (proc.memory.textrss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 88
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 84
+- 60.9.2 (proc.memory.share):
++ 123.9.2 (proc.memory.share):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1292
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 912
+- 60.9.1 (proc.memory.rss):
++ 123.9.1 (proc.memory.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.9.0 (proc.memory.size):
++ 123.9.0 (proc.memory.size):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.41 (proc.psinfo.psargs):
++ 123.8.41 (proc.psinfo.psargs):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "/usr/lib/pcp/bin/pmcd -T 3"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger -P -c config.default 20110930.17.20"
+- 60.8.40 (proc.psinfo.wchan_s):
++ 123.8.40 (proc.psinfo.wchan_s):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "0"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "poll_schedule_timeout"
+- 60.8.39 (proc.psinfo.ttyname):
++ 123.8.39 (proc.psinfo.ttyname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "?"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "?"
+- 60.8.38 (proc.psinfo.processor):
++ 123.8.38 (proc.psinfo.processor):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.37 (proc.psinfo.exit_signal):
++ 123.8.37 (proc.psinfo.exit_signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 17
+- 60.8.36 (proc.psinfo.cnswap):
++ 123.8.36 (proc.psinfo.cnswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.35 (proc.psinfo.nswap):
++ 123.8.35 (proc.psinfo.nswap):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.34 (proc.psinfo.wchan):
++ 123.8.34 (proc.psinfo.wchan):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3239277694
+- 60.8.33 (proc.psinfo.sigcatch):
++ 123.8.33 (proc.psinfo.sigcatch):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 17475
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1468137215
+- 60.8.32 (proc.psinfo.sigignore):
++ 123.8.32 (proc.psinfo.sigignore):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3674112
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.31 (proc.psinfo.blocked):
++ 123.8.31 (proc.psinfo.blocked):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.30 (proc.psinfo.signal):
++ 123.8.30 (proc.psinfo.signal):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.29 (proc.psinfo.eip):
++ 123.8.29 (proc.psinfo.eip):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 11981846
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3142678
+- 60.8.28 (proc.psinfo.esp):
++ 123.8.28 (proc.psinfo.esp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220486852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215896556
+- 60.8.27 (proc.psinfo.start_stack):
++ 123.8.27 (proc.psinfo.start_stack):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3220489952
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3215901280
+- 60.8.26 (proc.psinfo.end_code):
++ 123.8.26 (proc.psinfo.end_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134600844
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134596584
+- 60.8.25 (proc.psinfo.start_code):
++ 123.8.25 (proc.psinfo.start_code):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 134512640
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 134512640
+- 60.8.24 (proc.psinfo.rss_rlim):
++ 123.8.24 (proc.psinfo.rss_rlim):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4194303
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4194303
+- 60.8.23 (proc.psinfo.rss):
++ 123.8.23 (proc.psinfo.rss):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1852
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1072
+- 60.8.22 (proc.psinfo.vsize):
++ 123.8.22 (proc.psinfo.vsize):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 3272
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 2300
+- 60.8.21 (proc.psinfo.start_time):
++ 123.8.21 (proc.psinfo.start_time):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 25084983
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 25084993
+- 60.8.20 (proc.psinfo.it_real_value):
++ 123.8.20 (proc.psinfo.it_real_value):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.18 (proc.psinfo.nice):
++ 123.8.18 (proc.psinfo.nice):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.17 (proc.psinfo.priority):
++ 123.8.17 (proc.psinfo.priority):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 20
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 20
+- 60.8.16 (proc.psinfo.cstime):
++ 123.8.16 (proc.psinfo.cstime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.15 (proc.psinfo.cutime):
++ 123.8.15 (proc.psinfo.cutime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.14 (proc.psinfo.stime):
++ 123.8.14 (proc.psinfo.stime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1670
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.13 (proc.psinfo.utime):
++ 123.8.13 (proc.psinfo.utime):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 960
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.12 (proc.psinfo.cmaj_flt):
++ 123.8.12 (proc.psinfo.cmaj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.11 (proc.psinfo.maj_flt):
++ 123.8.11 (proc.psinfo.maj_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 2
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.10 (proc.psinfo.cmin_flt):
++ 123.8.10 (proc.psinfo.cmin_flt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.9 (proc.psinfo.minflt):
++ 123.8.9 (proc.psinfo.minflt):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 827
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 386
+- 60.8.8 (proc.psinfo.flags):
++ 123.8.8 (proc.psinfo.flags):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4202560
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4202496
+- 60.8.7 (proc.psinfo.tty_pgrp):
++ 123.8.7 (proc.psinfo.tty_pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 4294967295
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 4294967295
+- 60.8.6 (proc.psinfo.tty):
++ 123.8.6 (proc.psinfo.tty):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 0
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 0
+- 60.8.5 (proc.psinfo.session):
++ 123.8.5 (proc.psinfo.session):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 3041
+- 60.8.4 (proc.psinfo.pgrp):
++ 123.8.4 (proc.psinfo.pgrp):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+- 60.8.3 (proc.psinfo.ppid):
++ 123.8.3 (proc.psinfo.ppid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 1
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 1
+- 60.8.2 (proc.psinfo.sname):
++ 123.8.2 (proc.psinfo.sname):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "R"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "S"
+- 60.8.1 (proc.psinfo.cmd):
++ 123.8.1 (proc.psinfo.cmd):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value "pmcd"
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value "pmlogger"
+- 60.8.0 (proc.psinfo.pid):
++ 123.8.0 (proc.psinfo.pid):
+ inst [29922 or "029922 /usr/lib/pcp/bin/pmcd -T 3"] value 29922
+ inst [30016 or "030016 pmlogger -P -c config.default 20110930.17.20"] value 30016
+ 60.5.0 (hinv.nfilesys): value 1
diff --git a/qa/495 b/qa/495
new file mode 100755
index 0000000..edb95df
--- /dev/null
+++ b/qa/495
@@ -0,0 +1,171 @@
+#!/bin/sh
+# PCP QA Test No. 495
+# pmlogrewrite metric rule, indom clause - exercise all options
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e '/[-+ ]\[[0-9][0-9]* bytes]/d' \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ if [ ! -f "$1.0" ]
+ then
+ echo "Arrgh ... $1.0 missing" | _filter
+ return
+ fi
+ if [ ! -f "$2.0" ]
+ then
+ echo "Arrgh ... $2.0 missing" | _filter
+ return
+ fi
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# real QA test starts here
+
+echo "non-null -> non-null cases"
+rm -f $tmp.old.*
+pmlogextract -s 3 src/mirage-1 $tmp.old
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] metric spec ...
+$tmp.old metric sample.mirage { indom -> 29.8 }
+$tmp.old metric sample.mirage { indom -> 29.8 output inst 4 }
+$tmp.old metric sample.mirage { indom -> 29.8 output iname "m-04" }
+$tmp.old metric sample.mirage { indom -> 29.8 output first }
+$tmp.old metric sample.mirage { indom -> 29.8 output last }
+$tmp.old metric sample.mirage { indom -> 29.8 output min }
+$tmp.old metric sample.mirage { indom -> 29.8 output max }
+$tmp.old metric sample.mirage { indom -> 29.8 output sum }
+$tmp.old metric sample.mirage { indom -> 29.8 output avg }
+# warning cases
+$tmp.old metric sample.mirage { indom -> 29.8 output inst 12345 }
+$tmp.old metric sample.mirage { indom -> 29.8 output iname "m-12345" }
+$tmp.old metric sample.mirage { indom -> 29.8 output inst 11 }
+$tmp.old metric sample.mirage { indom -> 29.8 output inst 2 }
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -ws -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ _cmp `echo $arch_args | sed -e 's/|.*//'` $tmp.new
+done
+
+echo
+echo "non-null -> null cases"
+rm -f $tmp.old.*
+pmlogextract -s 3 src/ok-foo $tmp.old
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] metric spec ...
+$tmp.old metric sample.colour { indom -> NULL }
+$tmp.old metric sample.colour { indom -> NULL output inst 1 }
+$tmp.old metric sample.colour { indom -> NULL output iname "green with extra text for no value" }
+$tmp.old metric sample.colour { indom -> NULL output first }
+$tmp.old metric sample.colour { indom -> NULL output last }
+$tmp.old metric sample.colour { indom -> NULL output min }
+$tmp.old metric sample.colour { indom -> NULL output max }
+$tmp.old metric sample.colour { indom -> NULL output sum }
+$tmp.old metric sample.colour { indom -> NULL output avg }
+# warning cases
+$tmp.old metric sample.colour { indom -> NULL output inst 12345 }
+$tmp.old metric sample.colour { indom -> NULL output iname "purple" }
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -ws -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ _cmp `echo $arch_args | sed -e 's/|.*//'` $tmp.new
+done
+
+echo
+echo "null -> non-null cases"
+rm -f $tmp.old.*
+pmlogextract -s 3 src/ok-foo $tmp.old
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] metric spec ...
+$tmp.old metric sample.seconds { indom -> 29.2 }
+$tmp.old metric sample.seconds { indom -> 29.2 output inst 100 }
+$tmp.old metric sample.seconds { indom -> 29.2 output iname "bin-300" }
+$tmp.old metric sample.seconds { indom -> 29.2 output first }
+$tmp.old metric sample.seconds { indom -> 29.2 output last }
+$tmp.old metric sample.seconds { indom -> 29.2 output min }
+$tmp.old metric sample.seconds { indom -> 29.2 output max }
+$tmp.old metric sample.seconds { indom -> 29.2 output sum }
+$tmp.old metric sample.seconds { indom -> 29.2 output avg }
+# warning cases
+$tmp.old metric sample.seconds { indom -> 29.2 output inst 12345 }
+$tmp.old metric sample.seconds { indom -> 29.2 output iname "purple" }
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -ws -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ _cmp `echo $arch_args | sed -e 's/|.*//'` $tmp.new
+done
+
+echo
+echo "spaces in inames cases"
+rm -f $tmp.old.*
+pmlogextract -s 3 src/moomba.pmkstat $tmp.old
+sed -e '/^#/d' <<End-of-File | while read arch_args spec
+# archive[|arg1[|arg2[|...]]] metric spec ...
+# non-null -> null (so input side selection)
+$tmp.old metric irix.kernel.all.load { indom -> NULL }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output inst 5 }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output iname "1" }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output iname "1 minute" }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output iname "1 xxx" }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output iname "15" }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output iname "15 " }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output iname "15 min but no one looks at this" }
+$tmp.old metric irix.kernel.all.load { indom -> NULL output iname "159" }
+# null -> non-null (so output side selection)
+$tmp.old metric irix.disk.all.read { indom -> 1.5 }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output inst 5 }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output iname "1" }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output iname "1 minute" }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output iname "1 xxx" }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output iname "15" }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output iname "15 " }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output iname "15 min but no one looks at this" }
+$tmp.old metric irix.disk.all.read { indom -> 1.5 output iname "159" }
+End-of-File
+do
+ echo | tee -a $seq.full
+ echo "$spec" >$tmp.config
+ echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+ rm -f $tmp.new.*
+ pmlogrewrite -ws -c $tmp.config `echo $arch_args | sed -e 's/|/ /g'` $tmp.new 2>&1 | _filter
+ _cmp `echo $arch_args | sed -e 's/|.*//'` $tmp.new
+done
+
+# success, all done
+exit
diff --git a/qa/495.out b/qa/495.out
new file mode 100644
index 0000000..bfb4fef
--- /dev/null
+++ b/qa/495.out
@@ -0,0 +1,2356 @@
+QA output created by 495
+non-null -> non-null cases
+
+=== metric sample.mirage { indom -> 29.8 } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -74,11 +74,11 @@
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ inst [0 or "i-0"] value 99
++ inst [4 or "i-4"] value 498
++ inst [9 or ???] value 997
++ inst [10 or ???] value 1096
++ inst [11 or ???] value 1195
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -98,11 +98,11 @@
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ inst [0 or "i-0"] value 94
++ inst [4 or "i-4"] value 493
++ inst [9 or ???] value 992
++ inst [10 or ???] value 1091
++ inst [11 or ???] value 1190
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output inst 4 } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [4 or "i-4"] value 498
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [4 or "i-4"] value 493
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output iname "m-04" } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [4 or "i-4"] value 498
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [4 or "i-4"] value 493
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output first } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 99
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 94
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output last } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [11 or ???] value 1195
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [11 or ???] value 1190
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output min } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 99
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 94
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output max } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [11 or ???] value 1195
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [11 or ???] value 1190
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output sum } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 3885
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 3860
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output avg } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 777
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [0 or "i-0"] value 772
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output inst 12345 } ===
+Warning [TMP.config, line 2]
+Instance 12345 from OUTPUT clause not found in old indom 29.3
+Warning [TMP.config, line 2]
+Instance 12345 from OUTPUT clause not found in new indom 29.8
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 444
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): No values returned!
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): No values returned!
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output iname "m-12345" } ===
+Warning [TMP.config, line 2]
+Instance "m-12345" from OUTPUT clause not found in old indom 29.3
+Warning [TMP.config, line 2]
+Instance "m-12345" from OUTPUT clause not found in new indom 29.8
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 444
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): No values returned!
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): No values returned!
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output inst 11 } ===
+Warning [TMP.config, line 2]
+Instance 11 from OUTPUT clause not found in new indom 29.8
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 456
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): inst [11 or ???] value 1195
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): inst [11 or ???] value 1190
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+=== metric sample.mirage { indom -> 29.8 output inst 2 } ===
+Warning [TMP.config, line 2]
+Instance 2 from OUTPUT clause not found in old indom 29.3
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+ PMID: 29.0.37 (sample.mirage)
+- Data Type: 32-bit int InDom: 29.3 0x7400003
++ Data Type: 32-bit int InDom: 29.8 0x7400008
+ Semantics: instant Units: Kbyte / sec
+ PMID: 29.0.80 (sample.many.int)
+ Data Type: 32-bit int InDom: 29.8 0x7400008
+@@ -59,26 +59,21 @@
+ Log Vol end(meta) end(log)
+ 13:33:44.278 0 132 132
+ 13:33:47.240 0 351 280
+-13:33:50.240 0 862 488
++13:33:50.240 0 862 444
+
+ 13:33:44.278 2.3.3 (pmcd.pmlogger.host): inst [32221 or "32221"] value "ken.engr.acx"
+ 2.3.0 (pmcd.pmlogger.port): inst [32221 or "32221"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [32221 or "32221"] value "/home/kmcdonell/src/pcpqa/src/mirage-1"
+
+ 13:33:47.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 99
+- inst [4 or "m-04"] value 498
+- inst [9 or "m-09"] value 997
+- inst [10 or "m-10"] value 1096
+- inst [11 or "m-11"] value 1195
++ 29.0.37 (sample.mirage): No values returned!
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+@@ -90,19 +85,14 @@
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+ 13:33:50.240 29.0.80 (sample.many.int):
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+- 29.0.37 (sample.mirage):
+- inst [0 or "m-00"] value 94
+- inst [4 or "m-04"] value 493
+- inst [9 or "m-09"] value 992
+- inst [10 or "m-10"] value 1091
+- inst [11 or "m-11"] value 1190
++ 29.0.37 (sample.mirage): No values returned!
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+
+non-null -> null cases
+
+=== metric sample.colour { indom -> NULL } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 119
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 122
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output inst 1 } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 220
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 223
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output iname "green with extra text for no value" } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 220
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 223
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output first } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 119
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 122
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output last } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 321
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 324
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output min } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 119
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 122
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output max } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 321
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 324
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output sum } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 660
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 669
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output avg } ===
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 480
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): value 220
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): value 223
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output inst 12345 } ===
+Warning [TMP.config, line 2]
+Instance 12345 from OUTPUT clause not found in old indom 29.1
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 468
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): No values returned!
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): No values returned!
+ 29.0.2 (sample.seconds): value 891
+
+=== metric sample.colour { indom -> NULL output iname "purple" } ===
+Warning [TMP.config, line 2]
+Instance "purple" from OUTPUT clause not found in old indom 29.1
+--- TMP.in
++++ TMP.out
+@@ -10,7 +10,7 @@
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ PMID: 29.0.5 (sample.colour)
+- Data Type: 32-bit int InDom: 29.1 0x7400001
++ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+@@ -56,14 +56,14 @@
+ Log Vol end(meta) end(log)
+ 04:34:32.257 0 132 132
+ 04:34:33.248 0 350 284
+-04:34:34.248 0 851 496
++04:34:34.248 0 851 468
+
+ 04:34:32.257 2.3.3 (pmcd.pmlogger.host): inst [5403 or "5403"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5403 or "5403"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [5403 or "5403"] value "/usr/people/kenmcd/isms/pcp/qa/src/foo"
+
+ 04:34:33.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 150
+ 29.0.6 (sample.bin):
+@@ -76,13 +76,10 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 119
+- inst [1 or "green"] value 220
+- inst [2 or "blue"] value 321
++ 29.0.5 (sample.colour): No values returned!
+ 29.0.2 (sample.seconds): value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+ 29.0.7 (sample.drift): value 108
+ 29.0.6 (sample.bin):
+@@ -95,8 +92,5 @@
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.5 (sample.colour):
+- inst [0 or "red"] value 122
+- inst [1 or "green"] value 223
+- inst [2 or "blue"] value 324
++ 29.0.5 (sample.colour): No values returned!
+ 29.0.2 (sample.seconds): value 891
+
+null -> non-null cases
+
+=== metric sample.seconds { indom -> 29.2 } ===
+Warning [TMP.config, line 2]
+Instance 0 from OUTPUT clause not found in new indom 29.2
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output inst 100 } ===
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [100 or "bin-100"] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [100 or "bin-100"] value 891
+
+=== metric sample.seconds { indom -> 29.2 output iname "bin-300" } ===
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [300 or "bin-300"] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [300 or "bin-300"] value 891
+
+=== metric sample.seconds { indom -> 29.2 output first } ===
+Warning [TMP.config, line 2]
+Instance 0 from OUTPUT clause not found in new indom 29.2
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output last } ===
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output min } ===
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output max } ===
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output sum } ===
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output avg } ===
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output inst 12345 } ===
+Warning [TMP.config, line 2]
+Instance 12345 from OUTPUT clause not found in new indom 29.2
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [12345 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [12345 or ???] value 891
+
+=== metric sample.seconds { indom -> 29.2 output iname "purple" } ===
+Warning [TMP.config, line 2]
+Instance "purple" from OUTPUT clause not found in new indom 29.2
+--- TMP.in
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 32-bit unsigned int InDom: 29.2 0x7400002
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -80,7 +80,7 @@
+ inst [0 or "red"] value 119
+ inst [1 or "green"] value 220
+ inst [2 or "blue"] value 321
+- 29.0.2 (sample.seconds): value 890
++ 29.0.2 (sample.seconds): inst [0 or ???] value 890
+
+ 04:34:34.248 29.0.46 (sample.lights): value "yellow"
+@@ -99,4 +99,4 @@
+ inst [0 or "red"] value 122
+ inst [1 or "green"] value 223
+ inst [2 or "blue"] value 324
+- 29.0.2 (sample.seconds): value 891
++ 29.0.2 (sample.seconds): inst [0 or ???] value 891
+
+spaces in inames cases
+
+=== metric irix.kernel.all.load { indom -> NULL } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.76855469
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.796875
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output inst 5 } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 1.3691406
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 1.3574219
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output iname "1" } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.76855469
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.796875
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output iname "1 minute" } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.76855469
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.796875
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output iname "1 xxx" } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.76855469
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.796875
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output iname "15" } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.87109375
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.87109375
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output iname "15 " } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.87109375
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.87109375
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output iname "15 min but no one looks at this" } ===
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 716
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.87109375
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): value 0.87109375
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.kernel.all.load { indom -> NULL output iname "159" } ===
+Warning [TMP.config, line 2]
+Instance "159" from OUTPUT clause not found in old indom 1.5
+--- TMP.in
++++ TMP.out
+@@ -28,7 +28,7 @@
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.18.3 (irix.kernel.all.load)
+- Data Type: float InDom: 1.5 0x400005
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 1.10.12 (irix.kernel.all.cpu.wait.total)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -84,20 +84,17 @@
+ Log Vol end(meta) end(log)
+ 08:20:43.084 0 132 132
+ 08:20:47.964 0 350 304
+-08:20:54.341 0 1563 748
++08:20:54.341 0 1563 696
+
+ 08:20:43.084 2.3.3 (pmcd.pmlogger.host): inst [2006 or "2006"] value "bozo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [2006 or "2006"] value 4331
+ 2.3.2 (pmcd.pmlogger.archive): inst [2006 or "2006"] value "/usr/people/kenmcd/isms/pcp/demo/Archives/moomba.pmkstat"
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+ 1.82.10 (irix.disk.all.read): value 3741558
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.76855469
+- inst [5 or "5 minute"] value 1.3691406
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): No values returned!
+ 1.18.1 (irix.mem.freemem): value 42176
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784109926
+ 1.10.19 (irix.kernel.all.syscall): value 741706296
+@@ -114,13 +111,10 @@
+ 1.10.3 (irix.kernel.all.pswitch): value 154960095
+ 1.10.2 (irix.swap.pagesout): value 651
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+ 1.82.10 (irix.disk.all.read): value 3741643
+- 1.18.3 (irix.kernel.all.load):
+- inst [1 or "1 minute"] value 0.796875
+- inst [5 or "5 minute"] value 1.3574219
+- inst [15 or "15 minute"] value 0.87109375
++ 1.18.3 (irix.kernel.all.load): No values returned!
+ 1.18.1 (irix.mem.freemem): value 43200
+ 1.10.52 (irix.kernel.all.intr.non_vme): value 784116855
+ 1.10.19 (irix.kernel.all.syscall): value 741717716
+
+=== metric irix.disk.all.read { indom -> 1.5 } ===
+Warning [TMP.config, line 2]
+Instance 0 from OUTPUT clause not found in new indom 1.5
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [0 or ???] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [0 or ???] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output inst 5 } ===
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [5 or "5 minute"] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [5 or "5 minute"] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output iname "1" } ===
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [1 or "1 minute"] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [1 or "1 minute"] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output iname "1 minute" } ===
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [1 or "1 minute"] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [1 or "1 minute"] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output iname "1 xxx" } ===
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [1 or "1 minute"] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [1 or "1 minute"] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output iname "15" } ===
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [15 or "15 minute"] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [15 or "15 minute"] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output iname "15 " } ===
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [15 or "15 minute"] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [15 or "15 minute"] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output iname "15 min but no one looks at this" } ===
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [15 or "15 minute"] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [15 or "15 minute"] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
+
+=== metric irix.disk.all.read { indom -> 1.5 output iname "159" } ===
+Warning [TMP.config, line 2]
+Instance "159" from OUTPUT clause not found in new indom 1.5
+--- TMP.in
++++ TMP.out
+@@ -16,7 +16,7 @@
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 1.82.10 (irix.disk.all.read)
+- Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: 1.5 0x400005
+ Semantics: counter Units: count
+ PMID: 1.10.11 (irix.kernel.all.cpu.user)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+@@ -93,7 +93,7 @@
+
+ 08:20:47.964 1.82.11 (irix.disk.all.write): value 2158394
+- 1.82.10 (irix.disk.all.read): value 3741558
++ 1.82.10 (irix.disk.all.read): inst [0 or ???] value 3741558
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.76855469
+ inst [5 or "5 minute"] value 1.3691406
+@@ -116,7 +116,7 @@
+
+ 08:20:54.341 1.82.11 (irix.disk.all.write): value 2158411
+- 1.82.10 (irix.disk.all.read): value 3741643
++ 1.82.10 (irix.disk.all.read): inst [0 or ???] value 3741643
+ 1.18.3 (irix.kernel.all.load):
+ inst [1 or "1 minute"] value 0.796875
+ inst [5 or "5 minute"] value 1.3574219
diff --git a/qa/496 b/qa/496
new file mode 100755
index 0000000..ed064ba
--- /dev/null
+++ b/qa/496
@@ -0,0 +1,134 @@
+#!/bin/sh
+# PCP QA Test No. 496
+# pmlogrewrite - multiple -c options and -c dir option
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s;/$seq-$$\.;/SEQ-PID.;g" \
+ -e '/[-+ ]\[[0-9][0-9]* bytes]/d' \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ if [ ! -f "$1.0" ]
+ then
+ echo "Arrgh ... $1.0 missing" | _filter
+ return
+ fi
+ if [ ! -f "$2.0" ]
+ then
+ echo "Arrgh ... $2.0 missing" | _filter
+ return
+ fi
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+cat <<End-of-File >$tmp.conf.1
+metric sample.ulong.bin_ctr {
+ indom -> NULL output MIN
+ type -> DOUBLE
+ units -> 1,0,0,BYTE,0,0
+}
+metric sample.ulonglong.bin_ctr {
+ indom -> NULL output MAX
+ type -> 32
+ units -> 1,0,0,BYTE,0,0
+}
+End-of-File
+cat <<End-of-File >$tmp.conf.2
+metric sampledso.double.bin_ctr {
+ indom -> NULL output AVG
+ type -> FLOAT
+}
+metric sample.float.bin_ctr {
+ indom -> NULL output SUM
+ type -> U64
+}
+metric sample.longlong.bin_ctr {
+ indom -> NULL output FIRST
+ type -> 64
+ units -> 1,-1,0,KBYTE,SEC,0
+}
+End-of-File
+cat <<End-of-File >$tmp.conf.3
+indom 29.2 { inst 200 -> DELETE }
+indom 30.2 { inst 800 -> DELETE }
+End-of-File
+
+cat $tmp.conf.? >$tmp.conf.all
+
+# real QA test starts here
+
+# Note - correctness of this archive and config is established in QA 493
+#
+echo "=== baseline ==="
+rm -f $tmp.baseline.*
+pmlogrewrite -ws -c $tmp.conf.all src/rewrite $tmp.baseline 2>&1 | _filter
+
+echo
+echo "=== one config file ==="
+rm -f $tmp.new.*
+pmlogrewrite -ws -c $tmp.conf.all src/rewrite $tmp.new 2>&1 | _filter
+_cmp $tmp.baseline $tmp.new
+
+echo
+echo "=== three config files ==="
+rm -f $tmp.new.*
+pmlogrewrite -ws -c $tmp.conf.1 -c $tmp.conf.2 -c $tmp.conf.3 src/rewrite $tmp.new 2>&1 | _filter
+_cmp $tmp.baseline $tmp.new
+
+echo
+echo "=== config dir with regular files ==="
+mkdir $tmp.conf.dir
+cp $tmp.conf.[123] $tmp.conf.dir
+rm -f $tmp.new.*
+pmlogrewrite -ws -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 | _filter
+_cmp $tmp.baseline $tmp.new
+
+echo
+echo "=== config dir with symlinks files and hidden files ==="
+rm -f $tmp.conf.dir/*
+for i in 1 2 3
+do
+ ln -s $tmp.conf.$i $tmp.conf.dir
+done
+echo "metric sampledso.ulong.hundred { type -> U32 }" >$tmp.conf.dir/.$seq-$$.conf.4
+rm -f $tmp.new.*
+pmlogrewrite -ws -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 | _filter
+_cmp $tmp.baseline $tmp.new
+
+echo
+echo "=== config dir unhide bad file ==="
+mv $tmp.conf.dir/.$seq-$$.conf.4 $tmp.conf.dir/$seq-$$.conf.4
+rm -f $tmp.new.*
+# need to sort here because the order in which the files are processed
+# depends in readdir() and is not deterministic
+pmlogrewrite -ws -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| LC_COLLATE=POSIX sort \
+| _filter
+_cmp $tmp.baseline $tmp.new
+
+# success, all done
+exit
diff --git a/qa/496.out b/qa/496.out
new file mode 100644
index 0000000..1dc15fa
--- /dev/null
+++ b/qa/496.out
@@ -0,0 +1,26 @@
+QA output created by 496
+=== baseline ===
+Warning [TMP.conf.all, line 21]
+Metric: sample.longlong.bin_ctr (29.0.110): type: PM_TYPE_64: No change
+
+=== one config file ===
+Warning [TMP.conf.all, line 21]
+Metric: sample.longlong.bin_ctr (29.0.110): type: PM_TYPE_64: No change
+
+=== three config files ===
+Warning [TMP.conf.2, line 11]
+Metric: sample.longlong.bin_ctr (29.0.110): type: PM_TYPE_64: No change
+
+=== config dir with regular files ===
+Warning [TMP.conf.dir/SEQ-PID.conf.2, line 11]
+Metric: sample.longlong.bin_ctr (29.0.110): type: PM_TYPE_64: No change
+
+=== config dir with symlinks files and hidden files ===
+Warning [TMP.conf.dir/SEQ-PID.conf.2, line 11]
+Metric: sample.longlong.bin_ctr (29.0.110): type: PM_TYPE_64: No change
+
+=== config dir unhide bad file ===
+Metric: sample.longlong.bin_ctr (29.0.110): type: PM_TYPE_64: No change
+Metric: sampledso.ulong.hundred (30.0.95): type: PM_TYPE_U32: No change
+Warning [TMP.conf.dir/SEQ-PID.conf.2, line 11]
+Warning [TMP.conf.dir/SEQ-PID.conf.4, line 1]
diff --git a/qa/497 b/qa/497
new file mode 100755
index 0000000..fa7f8fa
--- /dev/null
+++ b/qa/497
@@ -0,0 +1,145 @@
+#!/bin/sh
+# PCP QA Test No. 497
+# pmlogconf - error handling in pmlogconf-setup
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ -f $PCP_BINADM_DIR/pmlogconf-setup ] || \
+ _notrun "pmlogconf version 2.0 not installed"
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3901 ]
+then
+ suffix=2
+else
+ suffix=1
+fi
+ln $seq.out.$suffix $seq.out || exit 1
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+mkdir $tmp
+
+# need to handle diff-c lines like this
+# *** TMP.conf 2010-06-17 06:36:00.000000000 +1000
+# --- /var/tmp/26102.ctl 2010-06-17 06:36:01.000000000 +1000
+#
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e '/^\*\*\* TMP\.conf/s/\.conf.*/.orig .../' \
+ -e '/^--- .*\.ctl/s/ .*/ TMP.new .../'
+}
+
+cat <<End-of-File >$tmp/01
+#pmlogconf-setup 2.0
+probe sample.long.ten ? include : exclude
+ident qa group one
+ident this one contains no errors
+ sample.long.million
+End-of-File
+
+# real QA test starts here
+
+pmlogconf -d $tmp $tmp.conf \
+| _filter
+
+echo "--- start initial config file ---"
+cat $tmp.conf | _filter
+echo "--- end initial config file ---"
+
+echo
+echo "=== bad condition in probe clause ==="
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten bozo ? include : exclude
+ident foo
+ sample.ulong.ten
+End-of-File
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+echo
+echo "=== missing val in probe condition ==="
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten == ? include : exclude
+ident foo
+ sample.ulong.ten
+End-of-File
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+echo
+echo "=== bad keyword in probe state rule ==="
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten exists ? include : foo
+ident foo
+ sample.ulong.ten
+End-of-File
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+echo
+echo "=== missing : probe state rule ==="
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten exists ? include exclude
+ident foo
+ sample.ulong.ten
+End-of-File
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+echo
+echo "=== bad probe state rule ==="
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten exists ? include ! exclude
+ident foo
+ sample.ulong.ten
+End-of-File
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+echo
+echo "=== extra text in probe state rule ==="
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+probe sample.ulong.ten exists ? include : exclude foo
+ident foo
+ sample.ulong.ten
+End-of-File
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+echo
+echo "=== bad force clause ==="
+cat <<End-of-File >$tmp/02
+#pmlogconf-setup 2.0
+force foo
+ident foo
+ sample.ulong.ten
+End-of-File
+( echo q ; echo '') | pmlogconf -v -d $tmp $tmp.conf \
+| _filter
+
+echo "--- start final config file ---"
+cat $tmp.conf | _filter
+echo "--- end final config file ---"
+
+# success, all done
+exit
diff --git a/qa/497.out.1 b/qa/497.out.1
new file mode 100644
index 0000000..4e07cfb
--- /dev/null
+++ b/qa/497.out.1
@@ -0,0 +1,136 @@
+QA output created by 497
+Creating config file "TMP.conf" using default settings ...
+.
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one this one contains no errors
+log advisory on default {
+ sample.long.million
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow * : all;
+allow localhost : enquire;
+--- end initial config file ---
+
+=== bad condition in probe clause ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten bozo ? include : exclude
+TMP/02: Error: condition operator "bozo" not recognized
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== missing val in probe condition ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten == ? include : exclude
+TMP/02: Error: expected "?" after condition, found "include : exclude"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== bad keyword in probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include : foo
+TMP/02: Error: failure state "foo" not recognized
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== missing : probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include exclude
+TMP/02: Error: missing state rule components: "? include exclude"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== bad probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include ! exclude
+TMP/02: Error: expected ":" in state rule, found "!"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== extra text in probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include : exclude foo
+TMP/02: Error: extra state rule components: "? include : exclude foo"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== bad force clause ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+force foo
+TMP/02: Error: force state "foo" not recognized
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+--- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one this one contains no errors
+log advisory on default {
+ sample.long.million
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow * : all;
+allow localhost : enquire;
+--- end final config file ---
diff --git a/qa/497.out.2 b/qa/497.out.2
new file mode 100644
index 0000000..5bb1a19
--- /dev/null
+++ b/qa/497.out.2
@@ -0,0 +1,138 @@
+QA output created by 497
+Creating config file "TMP.conf" using default settings ...
+.
+--- start initial config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one this one contains no errors
+log advisory on default {
+ sample.long.million
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow .* : all;
+disallow :* : all;
+allow local:* : enquire;
+--- end initial config file ---
+
+=== bad condition in probe clause ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten bozo ? include : exclude
+TMP/02: Error: condition operator "bozo" not recognized
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== missing val in probe condition ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten == ? include : exclude
+TMP/02: Error: expected "?" after condition, found "include : exclude"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== bad keyword in probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include : foo
+TMP/02: Error: failure state "foo" not recognized
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== missing : probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include exclude
+TMP/02: Error: missing state rule components: "? include exclude"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== bad probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include ! exclude
+TMP/02: Error: expected ":" in state rule, found "!"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== extra text in probe state rule ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+probe sample.ulong.ten exists ? include : exclude foo
+TMP/02: Error: extra state rule components: "? include : exclude foo"
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+
+=== bad force clause ===
+need to add new group tag=02
+pmlogconf: Warning: TMP/02: pmlogconf-setup failed
+TMP/02:
+force foo
+TMP/02: Error: force state "foo" not recognized
+
+Group: qa group one this one contains no errors
+Log this group? [y]
+No changes
+--- start final config file ---
+#pmlogconf 2.0
+#
+# pmlogger(1) config file created and updated by pmlogconf
+#
+# DO NOT UPDATE THE INITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf is used
+# on this file.
+#
+#+ groupdir TMP
+#
+#+ 01:y:default:
+## qa group one this one contains no errors
+log advisory on default {
+ sample.long.million
+}
+#----
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+[access]
+disallow .* : all;
+disallow :* : all;
+allow local:* : enquire;
+--- end final config file ---
diff --git a/qa/498 b/qa/498
new file mode 100755
index 0000000..3a68e44
--- /dev/null
+++ b/qa/498
@@ -0,0 +1,151 @@
+#!/bin/sh
+# PCP QA Test No. 498
+# exercise pmdaEventQueue interfaces
+#
+# Copyright (c) 2011 Nathan Scott. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3604 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+elif [ $PCP_VER -lt 3605 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.3 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATE]/' \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/[TIME]/' \
+ -e 's/event=0x0$/event=(nil)/' \
+ -e 's/0x[0-9a-f][0-9a-f]*/0xADDR/' \
+ -e 's/queue([0-9][0-9]*)/queue(PID)/' \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;"
+}
+
+_queue_test()
+{
+ # always enable library debugging, stash raw results and output filtered
+ src/pmdaqueue -Dlibpmda $@ 2>&1 | tee -a $seq.full | _filter
+}
+
+# real QA test starts here
+echo
+echo "events arriving with no queues setup yet (fail)"
+_queue_test -E 0,1024
+
+echo
+echo "attempt to register duplicate queue names (fail)"
+_queue_test -q queue1,1024 -q queue1,1024
+
+echo
+echo "attempt queue creation without memory limit (fail)"
+_queue_test -q queue1,0
+
+echo
+echo "create one queue, events arriving with no clients yet"
+_queue_test -q queue1,1024 -e queue1,128 -e queue1,42 -e queue1,18 -s queue1
+
+echo
+echo "multiple queues, events arriving without clients"
+_queue_test \
+ -q queue0,1024 -q queue1,512 \
+ -e queue0,128 -e queue1,24 -e queue0,18 \
+ -e queue1,228 -e queue0,142 -e queue1,28 \
+ -s queue0 -s queue1 \
+ -q queue2,356 \
+ -e queue2,328 -e queue2,32 -e queue0,17 -e queue1,227 \
+ -s queue0 -s queue1 -s queue2
+
+echo
+echo "single queue, single client, coming and going, no events arriving"
+_queue_test -q queue0,1024 -c 1 -S 1,queue0 -s queue0 -C 1 -s queue0
+
+echo
+echo "single queue, single client, coming and going, with events arriving"
+_queue_test \
+ -q queue0,1024 \
+ -c 1 -A1,queue0 \
+ -s queue0 -S 1,queue0 \
+ -e queue0,24 \
+ -s queue0 -S 1,queue0 \
+ -C 1 \
+ -s queue0
+
+echo
+echo "single queue, single client, queue filling up"
+_queue_test \
+ -q queue0,42 \
+ -c 1 \
+ -A 1,queue0 \
+ -s queue0 -S 1,queue0 \
+ -e queue0,24 \
+ -e queue0,2 \
+ -e queue0,8 \
+ -s queue0 -S 1,queue0 \
+ -e queue0,28 \
+ -e queue0,28 \
+ -s queue0 -S 1,queue0
+
+echo
+echo "single queue, single filtering client"
+_queue_test \
+ -q queue0,42 \
+ -c 1 -A1,queue0 \
+ -f 1,queue0,10 \
+ -s queue0 -S 1,queue0 \
+ -e queue0,24 \
+ -e queue0,2 \
+ -e queue0,8 \
+ -s queue0 -S 1,queue0 \
+ -e queue0,28 \
+ -e queue0,28 \
+ -s queue0 -S 1,queue0
+
+echo
+echo "multiple queues, multiple clients coming and going, queues filling"
+_queue_test \
+ -q queue0,1024 -q queue1,512 -q queue2,356 \
+ -c 84 -A 84,queue0 -c 42 -A 42,queue1 -c 21 -A 21,queue1 \
+ -S 84,queue0 -S 42,queue1 -S 21,queue1 \
+ -e queue0,128 -e queue1,24 -e queue0,18 \
+ -e queue1,228 -e queue0,142 -e queue1,28 \
+ -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2 \
+ -C 84 \
+ -e queue2,328 -e queue2,32 -e queue0,17 -e queue1,227 \
+ -c 84 -C 42 -c 21 \
+ -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2
+
+echo
+echo "ad-hoc queues, multiple clients coming and going, queues filling"
+_queue_test \
+ -q queue0,1024 -q queue1,512 \
+ -c 84 -A 84,queue0 -c 42 -A 42,queue1 -c 21 -A 21,queue1 \
+ -S 84,queue0 -S 42,queue1 -S 21,queue1 \
+ -e queue0,128 -e queue1,24 -e queue0,18 \
+ -e queue1,228 -e queue0,142 -e queue1,28 \
+ -q queue2,356 \
+ -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2 \
+ -C 84 \
+ -e queue2,328 -e queue2,32 -e queue0,17 -e queue1,227 \
+ -c 84 -C 42 -c 21 \
+ -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2
+
+# success, all done
+exit
diff --git a/qa/498.out.1 b/qa/498.out.1
new file mode 100644
index 0000000..1ee0a8a
--- /dev/null
+++ b/qa/498.out.1
@@ -0,0 +1,381 @@
+QA output created by 498
+
+events arriving with no queues setup yet (fail)
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "?" (1024 bytes)
+add queue#0 event(0,1024) -> -22 Invalid argument
+
+attempt to register duplicate queue names (fail)
+new queue(queue1,1024) -> 0
+new queue(queue1,1024) -> -17 File exists
+
+attempt queue creation without memory limit (fail)
+new queue(queue1,0) -> -22 Invalid argument
+
+create one queue, events arriving with no clients yet
+new queue(queue1,1024) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (128 bytes)
+add event(queue1,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (42 bytes)
+add event(queue1,42) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (18 bytes)
+add event(queue1,18) -> 0 [TIME]
+event queue#0 count=3, bytes=188, clients=0, mem=0
+
+multiple queues, events arriving without clients
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+add event(queue1,28) -> 0 [TIME]
+event queue#0 count=3, bytes=288, clients=0, mem=0
+event queue#1 count=3, bytes=280, clients=0, mem=0
+new queue(queue2,356) -> 2
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+add event(queue1,227) -> 0 [TIME]
+event queue#0 count=4, bytes=305, clients=0, mem=0
+event queue#1 count=4, bytes=507, clients=0, mem=0
+event queue#2 count=2, bytes=360, clients=0, mem=0
+
+single queue, single client, coming and going, no events arriving
+new queue(queue0,1024) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#0 count=0, bytes=0, clients=1, mem=0
+pmdaEventEndClient: ctx=1 slot=0
+end client(1) -> 0
+event queue#0 count=0, bytes=0, clients=0, mem=0
+
+single queue, single client, coming and going, with events arriving
+new queue(queue0,1024) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+event queue#0 count=1, bytes=24, clients=1, mem=24
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#0 client#1 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+pmdaEventEndClient: ctx=1 slot=0
+end client(1) -> 0
+event queue#0 count=1, bytes=24, clients=0, mem=0
+
+single queue, single client, queue filling up
+new queue(queue0,42) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (2 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (2 bytes) clients = 1.
+add event(queue0,2) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (8 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (8 bytes) clients = 1.
+add event(queue0,8) -> 0 [TIME]
+event queue#0 count=3, bytes=34, clients=1, mem=34
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#0 client#1 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=2): " "
+queue#0 client#1 event: 0xADDR, size=2 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=8): " "
+queue#0 client#1 event: 0xADDR, size=8 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=28 max=42 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+event queue#0 count=5, bytes=90, clients=1, mem=28
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=28): " "
+queue#0 client#1 event: 0xADDR, size=28 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+
+single queue, single filtering client
+new queue(queue0,42) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+client#1 set filter(sz<10) on queue#0-> 0
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (2 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (2 bytes) clients = 1.
+add event(queue0,2) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (8 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (8 bytes) clients = 1.
+add event(queue0,8) -> 0 [TIME]
+event queue#0 count=3, bytes=34, clients=1, mem=34
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+=> apply-filter(10<24) -> 1
+[DATE] pmdaqueue(PID) Info: Culling event (sz=24): " "
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+=> apply-filter(10<2) -> 0
+[DATE] pmdaqueue(PID) Info: Adding event (sz=2): " "
+queue#0 client#1 event: 0xADDR, size=2 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+=> apply-filter(10<8) -> 0
+[DATE] pmdaqueue(PID) Info: Adding event (sz=8): " "
+queue#0 client#1 event: 0xADDR, size=8 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=28 max=42 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+event queue#0 count=5, bytes=90, clients=1, mem=28
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+=> apply-filter(10<28) -> 1
+[DATE] pmdaqueue(PID) Info: Culling event (sz=28): " "
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+
+multiple queues, multiple clients coming and going, queues filling
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+new queue(queue2,356) -> 2
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(84) -> 0
+enable queue#0 access(84) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=1 (total=2)
+new client(42) -> 1
+enable queue#1 access(42) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=2 (total=3)
+new client(21) -> 2
+enable queue#1 access(21) -> 1
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+walking queue#1 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (128 bytes) clients = 1.
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (24 bytes) clients = 2.
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (18 bytes) clients = 1.
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (228 bytes) clients = 2.
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (142 bytes) clients = 1.
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (28 bytes) clients = 2.
+add event(queue1,28) -> 0 [TIME]
+event queue#0 count=3, bytes=288, clients=1, mem=288
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=128): " "
+queue#0 client#84 event: 0xADDR, size=128 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=18): " "
+queue#0 client#84 event: 0xADDR, size=18 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=142): " "
+queue#0 client#84 event: 0xADDR, size=142 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+event queue#1 count=3, bytes=280, clients=2, mem=280
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#1 client#42 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Adding event (sz=228): " "
+queue#1 client#42 event: 0xADDR, size=228 check=ok
+[DATE] pmdaqueue(PID) Info: Adding event (sz=28): " "
+queue#1 client#42 event: 0xADDR, size=28 check=ok
+end walk queue#1
+event queue#2 count=0, bytes=0, clients=0, mem=0
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#2
+pmdaEventEndClient: ctx=84 slot=0
+end client(84) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (328 bytes) clients = 1.
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue2: e=0xADDR sz=328 max=356 qsz=328
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (32 bytes) clients = 1.
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (227 bytes) clients = 2.
+add event(queue1,227) -> 0 [TIME]
+new client(84) -> 0
+pmdaEventEndClient: ctx=42 slot=1
+end client(42) -> 0
+new client(21) -> 2
+event queue#0 count=4, bytes=305, clients=0, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=4, bytes=507, clients=1, mem=507
+walking queue#1 events for client#42
+end walk queue#1
+event queue#2 count=2, bytes=360, clients=1, mem=32
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Culling event (sz=32): " "
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR in fetch
+end walk queue#2
+
+ad-hoc queues, multiple clients coming and going, queues filling
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(84) -> 0
+enable queue#0 access(84) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=1 (total=2)
+new client(42) -> 1
+enable queue#1 access(42) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=2 (total=3)
+new client(21) -> 2
+enable queue#1 access(21) -> 1
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+walking queue#1 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (128 bytes) clients = 1.
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (24 bytes) clients = 2.
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (18 bytes) clients = 1.
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (228 bytes) clients = 2.
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (142 bytes) clients = 1.
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (28 bytes) clients = 2.
+add event(queue1,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=128 max=1024 qsz=288
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (128 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=18 max=1024 qsz=160
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (18 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=142 max=1024 qsz=142
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (142 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=24 max=512 qsz=280
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (24 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=228 max=512 qsz=256
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (228 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=28 max=512 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (28 bytes)
+new queue(queue2,356) -> 2
+event queue#0 count=3, bytes=288, clients=1, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=3, bytes=280, clients=2, mem=0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+event queue#2 count=0, bytes=0, clients=0, mem=0
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#2
+pmdaEventEndClient: ctx=84 slot=0
+end client(84) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (328 bytes) clients = 1.
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue2: e=0xADDR sz=328 max=356 qsz=328
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (32 bytes) clients = 1.
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (227 bytes) clients = 2.
+add event(queue1,227) -> 0 [TIME]
+new client(84) -> 0
+pmdaEventEndClient: ctx=42 slot=1
+end client(42) -> 0
+new client(21) -> 2
+event queue#0 count=4, bytes=305, clients=0, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=4, bytes=507, clients=1, mem=227
+walking queue#1 events for client#42
+end walk queue#1
+event queue#2 count=2, bytes=360, clients=1, mem=32
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Culling event (sz=32): " "
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR in fetch
+end walk queue#2
diff --git a/qa/498.out.2 b/qa/498.out.2
new file mode 100644
index 0000000..34838e6
--- /dev/null
+++ b/qa/498.out.2
@@ -0,0 +1,386 @@
+QA output created by 498
+
+events arriving with no queues setup yet (fail)
+add queue#0 event(0,1024) -> -22 Invalid argument
+
+attempt to register duplicate queue names (fail)
+new queue(queue1,1024) -> 0
+new queue(queue1,1024) -> -17 File exists
+
+attempt queue creation without memory limit (fail)
+new queue(queue1,0) -> -22 Invalid argument
+
+create one queue, events arriving with no clients yet
+new queue(queue1,1024) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (128 bytes)
+add event(queue1,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (42 bytes)
+add event(queue1,42) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (18 bytes)
+add event(queue1,18) -> 0 [TIME]
+event queue#0 count=3, bytes=188, clients=0, mem=0
+
+multiple queues, events arriving without clients
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+add event(queue1,28) -> 0 [TIME]
+event queue#0 count=3, bytes=288, clients=0, mem=0
+event queue#1 count=3, bytes=280, clients=0, mem=0
+new queue(queue2,356) -> 2
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+add event(queue1,227) -> 0 [TIME]
+event queue#0 count=4, bytes=305, clients=0, mem=0
+event queue#1 count=4, bytes=507, clients=0, mem=0
+event queue#2 count=2, bytes=360, clients=0, mem=0
+
+single queue, single client, coming and going, no events arriving
+new queue(queue0,1024) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#0 count=0, bytes=0, clients=1, mem=0
+pmdaEventEndClient: ctx=1 slot=0
+end client(1) -> 0
+event queue#0 count=0, bytes=0, clients=0, mem=0
+
+single queue, single client, coming and going, with events arriving
+new queue(queue0,1024) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+event queue#0 count=1, bytes=24, clients=1, mem=24
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#0 client#1 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+pmdaEventEndClient: ctx=1 slot=0
+end client(1) -> 0
+event queue#0 count=1, bytes=24, clients=0, mem=0
+
+single queue, single client, queue filling up
+new queue(queue0,42) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (2 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (2 bytes) clients = 1.
+add event(queue0,2) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (8 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (8 bytes) clients = 1.
+add event(queue0,8) -> 0 [TIME]
+event queue#0 count=3, bytes=34, clients=1, mem=34
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#0 client#1 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=2): " "
+queue#0 client#1 event: 0xADDR, size=2 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=8): " "
+queue#0 client#1 event: 0xADDR, size=8 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=28 max=42 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+event queue#0 count=5, bytes=90, clients=1, mem=28
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=28): " "
+queue#0 client#1 event: 0xADDR, size=28 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+
+single queue, single filtering client
+new queue(queue0,42) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+client#1 set filter(sz<10) on queue#0-> 0
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (2 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (2 bytes) clients = 1.
+add event(queue0,2) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (8 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (8 bytes) clients = 1.
+add event(queue0,8) -> 0 [TIME]
+event queue#0 count=3, bytes=34, clients=1, mem=34
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+=> apply-filter(10<24) -> 1
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (1)
+[DATE] pmdaqueue(PID) Info: Culling event (sz=24): " "
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+=> apply-filter(10<2) -> 0
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (0)
+[DATE] pmdaqueue(PID) Info: Adding event (sz=2): " "
+queue#0 client#1 event: 0xADDR, size=2 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+=> apply-filter(10<8) -> 0
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (0)
+[DATE] pmdaqueue(PID) Info: Adding event (sz=8): " "
+queue#0 client#1 event: 0xADDR, size=8 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=28 max=42 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+event queue#0 count=5, bytes=90, clients=1, mem=28
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+=> apply-filter(10<28) -> 1
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (1)
+[DATE] pmdaqueue(PID) Info: Culling event (sz=28): " "
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+
+multiple queues, multiple clients coming and going, queues filling
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+new queue(queue2,356) -> 2
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(84) -> 0
+enable queue#0 access(84) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=1 (total=2)
+new client(42) -> 1
+enable queue#1 access(42) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=2 (total=3)
+new client(21) -> 2
+enable queue#1 access(21) -> 1
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+walking queue#1 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (128 bytes) clients = 1.
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (24 bytes) clients = 2.
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (18 bytes) clients = 1.
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (228 bytes) clients = 2.
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (142 bytes) clients = 1.
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (28 bytes) clients = 2.
+add event(queue1,28) -> 0 [TIME]
+event queue#0 count=3, bytes=288, clients=1, mem=288
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=128): " "
+queue#0 client#84 event: 0xADDR, size=128 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=18): " "
+queue#0 client#84 event: 0xADDR, size=18 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=142): " "
+queue#0 client#84 event: 0xADDR, size=142 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+event queue#1 count=3, bytes=280, clients=2, mem=280
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#1 client#42 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Adding event (sz=228): " "
+queue#1 client#42 event: 0xADDR, size=228 check=ok
+[DATE] pmdaqueue(PID) Info: Adding event (sz=28): " "
+queue#1 client#42 event: 0xADDR, size=28 check=ok
+end walk queue#1
+event queue#2 count=0, bytes=0, clients=0, mem=0
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#2
+pmdaEventEndClient: ctx=84 slot=0
+end client(84) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (328 bytes) clients = 1.
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue2: e=0xADDR sz=328 max=356 qsz=328
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (32 bytes) clients = 1.
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (227 bytes) clients = 2.
+add event(queue1,227) -> 0 [TIME]
+new client(84) -> 0
+pmdaEventEndClient: ctx=42 slot=1
+end client(42) -> 0
+new client(21) -> 2
+event queue#0 count=4, bytes=305, clients=0, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=4, bytes=507, clients=1, mem=507
+walking queue#1 events for client#42
+end walk queue#1
+event queue#2 count=2, bytes=360, clients=1, mem=32
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Clientq access denied
+[DATE] pmdaqueue(PID) Info: Culling event (sz=32): " "
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR in fetch
+end walk queue#2
+
+ad-hoc queues, multiple clients coming and going, queues filling
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(84) -> 0
+enable queue#0 access(84) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=1 (total=2)
+new client(42) -> 1
+enable queue#1 access(42) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=2 (total=3)
+new client(21) -> 2
+enable queue#1 access(21) -> 1
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+walking queue#1 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (128 bytes) clients = 1.
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (24 bytes) clients = 2.
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (18 bytes) clients = 1.
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (228 bytes) clients = 2.
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (142 bytes) clients = 1.
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (28 bytes) clients = 2.
+add event(queue1,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=128 max=1024 qsz=288
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (128 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=18 max=1024 qsz=160
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (18 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=142 max=1024 qsz=142
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (142 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=24 max=512 qsz=280
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (24 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=228 max=512 qsz=256
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (228 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=28 max=512 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (28 bytes)
+new queue(queue2,356) -> 2
+event queue#0 count=3, bytes=288, clients=1, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=3, bytes=280, clients=2, mem=0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+event queue#2 count=0, bytes=0, clients=0, mem=0
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#2
+pmdaEventEndClient: ctx=84 slot=0
+end client(84) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (328 bytes) clients = 1.
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue2: e=0xADDR sz=328 max=356 qsz=328
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (32 bytes) clients = 1.
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (227 bytes) clients = 2.
+add event(queue1,227) -> 0 [TIME]
+new client(84) -> 0
+pmdaEventEndClient: ctx=42 slot=1
+end client(42) -> 0
+new client(21) -> 2
+event queue#0 count=4, bytes=305, clients=0, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=4, bytes=507, clients=1, mem=227
+walking queue#1 events for client#42
+end walk queue#1
+event queue#2 count=2, bytes=360, clients=1, mem=32
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Clientq access denied
+[DATE] pmdaqueue(PID) Info: Culling event (sz=32): " "
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR in fetch
+end walk queue#2
diff --git a/qa/498.out.3 b/qa/498.out.3
new file mode 100644
index 0000000..34838e6
--- /dev/null
+++ b/qa/498.out.3
@@ -0,0 +1,386 @@
+QA output created by 498
+
+events arriving with no queues setup yet (fail)
+add queue#0 event(0,1024) -> -22 Invalid argument
+
+attempt to register duplicate queue names (fail)
+new queue(queue1,1024) -> 0
+new queue(queue1,1024) -> -17 File exists
+
+attempt queue creation without memory limit (fail)
+new queue(queue1,0) -> -22 Invalid argument
+
+create one queue, events arriving with no clients yet
+new queue(queue1,1024) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (128 bytes)
+add event(queue1,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (42 bytes)
+add event(queue1,42) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue1" (18 bytes)
+add event(queue1,18) -> 0 [TIME]
+event queue#0 count=3, bytes=188, clients=0, mem=0
+
+multiple queues, events arriving without clients
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+add event(queue1,28) -> 0 [TIME]
+event queue#0 count=3, bytes=288, clients=0, mem=0
+event queue#1 count=3, bytes=280, clients=0, mem=0
+new queue(queue2,356) -> 2
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+add event(queue1,227) -> 0 [TIME]
+event queue#0 count=4, bytes=305, clients=0, mem=0
+event queue#1 count=4, bytes=507, clients=0, mem=0
+event queue#2 count=2, bytes=360, clients=0, mem=0
+
+single queue, single client, coming and going, no events arriving
+new queue(queue0,1024) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#0 count=0, bytes=0, clients=1, mem=0
+pmdaEventEndClient: ctx=1 slot=0
+end client(1) -> 0
+event queue#0 count=0, bytes=0, clients=0, mem=0
+
+single queue, single client, coming and going, with events arriving
+new queue(queue0,1024) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+event queue#0 count=1, bytes=24, clients=1, mem=24
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#0 client#1 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+pmdaEventEndClient: ctx=1 slot=0
+end client(1) -> 0
+event queue#0 count=1, bytes=24, clients=0, mem=0
+
+single queue, single client, queue filling up
+new queue(queue0,42) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (2 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (2 bytes) clients = 1.
+add event(queue0,2) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (8 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (8 bytes) clients = 1.
+add event(queue0,8) -> 0 [TIME]
+event queue#0 count=3, bytes=34, clients=1, mem=34
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#0 client#1 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=2): " "
+queue#0 client#1 event: 0xADDR, size=2 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=8): " "
+queue#0 client#1 event: 0xADDR, size=8 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=28 max=42 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+event queue#0 count=5, bytes=90, clients=1, mem=28
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=28): " "
+queue#0 client#1 event: 0xADDR, size=28 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+
+single queue, single filtering client
+new queue(queue0,42) -> 0
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(1) -> 0
+enable queue#0 access(1) -> 1
+client#1 set filter(sz<10) on queue#0-> 0
+event queue#0 count=0, bytes=0, clients=0, mem=0
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (24 bytes) clients = 1.
+add event(queue0,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (2 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (2 bytes) clients = 1.
+add event(queue0,2) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (8 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (8 bytes) clients = 1.
+add event(queue0,8) -> 0 [TIME]
+event queue#0 count=3, bytes=34, clients=1, mem=34
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+=> apply-filter(10<24) -> 1
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (1)
+[DATE] pmdaqueue(PID) Info: Culling event (sz=24): " "
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+=> apply-filter(10<2) -> 0
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (0)
+[DATE] pmdaqueue(PID) Info: Adding event (sz=2): " "
+queue#0 client#1 event: 0xADDR, size=2 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+=> apply-filter(10<8) -> 0
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (0)
+[DATE] pmdaqueue(PID) Info: Adding event (sz=8): " "
+queue#0 client#1 event: 0xADDR, size=8 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=28 max=42 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (28 bytes) clients = 1.
+add event(queue0,28) -> 0 [TIME]
+event queue#0 count=5, bytes=90, clients=1, mem=28
+walking queue#0 events for client#1
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+=> apply-filter(10<28) -> 1
+[DATE] pmdaqueue(PID) Info: Clientq filter applied (1)
+[DATE] pmdaqueue(PID) Info: Culling event (sz=28): " "
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+
+multiple queues, multiple clients coming and going, queues filling
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+new queue(queue2,356) -> 2
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(84) -> 0
+enable queue#0 access(84) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=1 (total=2)
+new client(42) -> 1
+enable queue#1 access(42) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=2 (total=3)
+new client(21) -> 2
+enable queue#1 access(21) -> 1
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+walking queue#1 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (128 bytes) clients = 1.
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (24 bytes) clients = 2.
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (18 bytes) clients = 1.
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (228 bytes) clients = 2.
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (142 bytes) clients = 1.
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (28 bytes) clients = 2.
+add event(queue1,28) -> 0 [TIME]
+event queue#0 count=3, bytes=288, clients=1, mem=288
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=128): " "
+queue#0 client#84 event: 0xADDR, size=128 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=18): " "
+queue#0 client#84 event: 0xADDR, size=18 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+[DATE] pmdaqueue(PID) Info: Adding event (sz=142): " "
+queue#0 client#84 event: 0xADDR, size=142 check=ok
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR in fetch
+end walk queue#0
+event queue#1 count=3, bytes=280, clients=2, mem=280
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Adding event (sz=24): " "
+queue#1 client#42 event: 0xADDR, size=24 check=ok
+[DATE] pmdaqueue(PID) Info: Adding event (sz=228): " "
+queue#1 client#42 event: 0xADDR, size=228 check=ok
+[DATE] pmdaqueue(PID) Info: Adding event (sz=28): " "
+queue#1 client#42 event: 0xADDR, size=28 check=ok
+end walk queue#1
+event queue#2 count=0, bytes=0, clients=0, mem=0
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#2
+pmdaEventEndClient: ctx=84 slot=0
+end client(84) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (328 bytes) clients = 1.
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue2: e=0xADDR sz=328 max=356 qsz=328
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (32 bytes) clients = 1.
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (227 bytes) clients = 2.
+add event(queue1,227) -> 0 [TIME]
+new client(84) -> 0
+pmdaEventEndClient: ctx=42 slot=1
+end client(42) -> 0
+new client(21) -> 2
+event queue#0 count=4, bytes=305, clients=0, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=4, bytes=507, clients=1, mem=507
+walking queue#1 events for client#42
+end walk queue#1
+event queue#2 count=2, bytes=360, clients=1, mem=32
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Clientq access denied
+[DATE] pmdaqueue(PID) Info: Culling event (sz=32): " "
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR in fetch
+end walk queue#2
+
+ad-hoc queues, multiple clients coming and going, queues filling
+new queue(queue0,1024) -> 0
+new queue(queue1,512) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=0 (total=1)
+new client(84) -> 0
+enable queue#0 access(84) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=1 (total=2)
+new client(42) -> 1
+enable queue#1 access(42) -> 1
+[DATE] pmdaqueue(PID) Info: pmdaEventNewClient: new client, slot=2 (total=3)
+new client(21) -> 2
+enable queue#1 access(21) -> 1
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+walking queue#1 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (128 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (128 bytes) clients = 1.
+add event(queue0,128) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (24 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (24 bytes) clients = 2.
+add event(queue1,24) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (18 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (18 bytes) clients = 1.
+add event(queue0,18) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (228 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (228 bytes) clients = 2.
+add event(queue1,228) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (142 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue0 event 0xADDR (142 bytes) clients = 1.
+add event(queue0,142) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (28 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (28 bytes) clients = 2.
+add event(queue1,28) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=128 max=1024 qsz=288
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (128 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=18 max=1024 qsz=160
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (18 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue0: e=0xADDR sz=142 max=1024 qsz=142
+[DATE] pmdaqueue(PID) Info: Removing queue0 event 0xADDR (142 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=24 max=512 qsz=280
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (24 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=228 max=512 qsz=256
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (228 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue1: e=0xADDR sz=28 max=512 qsz=28
+[DATE] pmdaqueue(PID) Info: Removing queue1 event 0xADDR (28 bytes)
+new queue(queue2,356) -> 2
+event queue#0 count=3, bytes=288, clients=1, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=3, bytes=280, clients=2, mem=0
+walking queue#1 events for client#42
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#1
+event queue#2 count=0, bytes=0, clients=0, mem=0
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#2
+pmdaEventEndClient: ctx=84 slot=0
+end client(84) -> 0
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (328 bytes) clients = 1.
+add event(queue2,328) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#2 "queue2" (32 bytes)
+[DATE] pmdaqueue(PID) Info: Dropping queue2: e=0xADDR sz=328 max=356 qsz=328
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR (328 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue2 event 0xADDR (32 bytes) clients = 1.
+add event(queue2,32) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#0 "queue0" (17 bytes)
+add event(queue0,17) -> 0 [TIME]
+[DATE] pmdaqueue(PID) Info: Appending event: queue#1 "queue1" (227 bytes)
+[DATE] pmdaqueue(PID) Info: Inserted queue1 event 0xADDR (227 bytes) clients = 2.
+add event(queue1,227) -> 0 [TIME]
+new client(84) -> 0
+pmdaEventEndClient: ctx=42 slot=1
+end client(42) -> 0
+new client(21) -> 2
+event queue#0 count=4, bytes=305, clients=0, mem=0
+walking queue#0 events for client#84
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=(nil)
+end walk queue#0
+event queue#1 count=4, bytes=507, clients=1, mem=227
+walking queue#1 events for client#42
+end walk queue#1
+event queue#2 count=2, bytes=360, clients=1, mem=32
+walking queue#2 events for client#21
+[DATE] pmdaqueue(PID) Info: queue_fetch start, last event=0xADDR
+[DATE] pmdaqueue(PID) Info: Clientq access denied
+[DATE] pmdaqueue(PID) Info: Culling event (sz=32): " "
+[DATE] pmdaqueue(PID) Info: Removing queue2 event 0xADDR in fetch
+end walk queue#2
diff --git a/qa/499 b/qa/499
new file mode 100755
index 0000000..aa87c1e
--- /dev/null
+++ b/qa/499
@@ -0,0 +1,182 @@
+#!/bin/sh
+# PCP QA Test No. 499
+# pmlogrewrite - -q option
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s;/$$\.;/PID.;g" \
+ -e '/[-+ ]\[[0-9][0-9]* bytes]/d' \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ ok=true
+ for ext in 0 index meta
+ do
+ if [ ! -f "$1.$ext" ]
+ then
+ echo "Arrgh ... $1.$ext missing" | _filter
+ ok=false
+ fi
+ if [ ! -f "$2.$ext" ]
+ then
+ echo "Warning: $2.$ext missing" | _filter
+ ok=false
+ fi
+ done
+ $ok || return
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+mkdir $tmp.conf.dir
+i=0
+
+# real QA test starts here
+
+echo "=== metric not in archive ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+metric kernel.all.load { pmid -> 1.2.3 }
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + indom not in archive ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+indom 1.2 { inst 0 -> 1 }
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + empty global clause ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+global { }
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + no-change global hostname clause ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+global { hostname -> bozo-laptop }
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + no-change global time clause ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+global { time -> 00:00:00.000000 }
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + no-change global timezone clause ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+global { tz -> "EST-10" }
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + no-change indom clause ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+indom 29.2 {
+ # no change ones
+ indom -> 29.2
+ iname "bin-300" -> "bin-300"
+ inst 800 -> 800
+ # no match ones
+ iname "bin-999" -> "bin-998"
+ inst 123 -> 456
+}
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + no-change metric clause ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+metric sample.ulonglong.hundred {
+ indom -> NULL
+ name -> sample.ulonglong.hundred
+ pmid -> 29.0.100
+ sem -> instant
+ type -> u64
+ units -> 0,0,0,0,0,0
+}
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+echo
+echo "=== + change pmid clause ==="
+cat <<'End-of-File' >$tmp.conf.dir/conf.$i
+metric sample.longlong.bin_ctr { pmid -> 1.2.3 }
+End-of-File
+i=`expr $i + 1`
+rm -f $tmp.new.*
+pmlogrewrite -qsvw -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+_cmp src/rewrite $tmp.new
+
+# success, all done
+exit
diff --git a/qa/499.out b/qa/499.out
new file mode 100644
index 0000000..9b596c2
--- /dev/null
+++ b/qa/499.out
@@ -0,0 +1,220 @@
+QA output created by 499
+=== metric not in archive ===
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + indom not in archive ===
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + empty global clause ===
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + no-change global hostname clause ===
+Global hostname (bozo-laptop): No change
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning [TMP.conf.dir/conf.3, line 1]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + no-change global time clause ===
+Global hostname (bozo-laptop): No change
+Global time: No change
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning [TMP.conf.dir/conf.3, line 1]
+Warning [TMP.conf.dir/conf.4, line 1]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + no-change global timezone clause ===
+Global hostname (bozo-laptop): No change
+Global time: No change
+Global timezone (EST-10): No change
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning [TMP.conf.dir/conf.3, line 1]
+Warning [TMP.conf.dir/conf.4, line 1]
+Warning [TMP.conf.dir/conf.5, line 1]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + no-change indom clause ===
+Global hostname (bozo-laptop): No change
+Global time: No change
+Global timezone (EST-10): No change
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Instance domain 29.2: Instance: "bin-300": No change
+Instance domain 29.2: Instance: 800: No change
+Instance domain 29.2: indom: No change
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Unknown instance "bin-999" in iname clause for indom 29.2
+Unknown instance 123 in inst clause for indom 29.2
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning [TMP.conf.dir/conf.3, line 1]
+Warning [TMP.conf.dir/conf.4, line 1]
+Warning [TMP.conf.dir/conf.5, line 1]
+Warning [TMP.conf.dir/conf.6, line 3]
+Warning [TMP.conf.dir/conf.6, line 4]
+Warning [TMP.conf.dir/conf.6, line 5]
+Warning [TMP.conf.dir/conf.6, line 7]
+Warning [TMP.conf.dir/conf.6, line 8]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + no-change metric clause ===
+Global hostname (bozo-laptop): No change
+Global time: No change
+Global timezone (EST-10): No change
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Instance domain 29.2: Instance: "bin-300": No change
+Instance domain 29.2: Instance: 800: No change
+Instance domain 29.2: indom: No change
+Metric: kernel.all.load: Unknown metric name
+Metric: sample.ulonglong.hundred (29.0.100): indom: PM_INDOM_NULL: No change
+Metric: sample.ulonglong.hundred (29.0.100): name: No change
+Metric: sample.ulonglong.hundred (29.0.100): pmid: No change
+Metric: sample.ulonglong.hundred (29.0.100): sem: instant: No change
+Metric: sample.ulonglong.hundred (29.0.100): type: PM_TYPE_U64: No change
+Metric: sample.ulonglong.hundred (29.0.100): units: : No change
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Unknown instance "bin-999" in iname clause for indom 29.2
+Unknown instance 123 in inst clause for indom 29.2
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning [TMP.conf.dir/conf.3, line 1]
+Warning [TMP.conf.dir/conf.4, line 1]
+Warning [TMP.conf.dir/conf.5, line 1]
+Warning [TMP.conf.dir/conf.6, line 3]
+Warning [TMP.conf.dir/conf.6, line 4]
+Warning [TMP.conf.dir/conf.6, line 5]
+Warning [TMP.conf.dir/conf.6, line 7]
+Warning [TMP.conf.dir/conf.6, line 8]
+Warning [TMP.conf.dir/conf.7, line 3]
+Warning [TMP.conf.dir/conf.7, line 3]
+Warning [TMP.conf.dir/conf.7, line 4]
+Warning [TMP.conf.dir/conf.7, line 5]
+Warning [TMP.conf.dir/conf.7, line 6]
+Warning [TMP.conf.dir/conf.7, line 8]
+Warning: TMP.new.0 missing
+Warning: TMP.new.index missing
+Warning: TMP.new.meta missing
+
+=== + change pmid clause ===
+
+Global hostname (bozo-laptop): No change
+Global time: No change
+Global timezone (EST-10): No change
+Instance domain 1.2: Instance domain identifier not defined in the PCP archive log
+Instance domain 29.2: Instance: "bin-300": No change
+Instance domain 29.2: Instance: 800: No change
+Instance domain 29.2: indom: No change
+Metric: kernel.all.load: Unknown metric name
+Metric: sample.longlong.bin_ctr (29.0.110)
+Metric: sample.ulonglong.hundred (29.0.100): indom: PM_INDOM_NULL: No change
+Metric: sample.ulonglong.hundred (29.0.100): name: No change
+Metric: sample.ulonglong.hundred (29.0.100): pmid: No change
+Metric: sample.ulonglong.hundred (29.0.100): sem: instant: No change
+Metric: sample.ulonglong.hundred (29.0.100): type: PM_TYPE_U64: No change
+Metric: sample.ulonglong.hundred (29.0.100): units: : No change
+PCP Archive Log Rewrite Specifications Summary
+Unknown instance "bin-999" in iname clause for indom 29.2
+Unknown instance 123 in inst clause for indom 29.2
+Warning [TMP.conf.dir/conf.0, line 1]
+Warning [TMP.conf.dir/conf.1, line 1]
+Warning [TMP.conf.dir/conf.3, line 1]
+Warning [TMP.conf.dir/conf.4, line 1]
+Warning [TMP.conf.dir/conf.5, line 1]
+Warning [TMP.conf.dir/conf.6, line 3]
+Warning [TMP.conf.dir/conf.6, line 4]
+Warning [TMP.conf.dir/conf.6, line 5]
+Warning [TMP.conf.dir/conf.6, line 7]
+Warning [TMP.conf.dir/conf.6, line 8]
+Warning [TMP.conf.dir/conf.7, line 3]
+Warning [TMP.conf.dir/conf.7, line 3]
+Warning [TMP.conf.dir/conf.7, line 4]
+Warning [TMP.conf.dir/conf.7, line 5]
+Warning [TMP.conf.dir/conf.7, line 6]
+Warning [TMP.conf.dir/conf.7, line 8]
+pmID: 29.0.110 -> 1.2.3
+--- TMP.in
++++ TMP.out
+@@ -39,6 +39,9 @@
+ PMID: 30.0.50 (sampledso.part_bin)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
++PMID: 1.2.3 (sample.longlong.bin_ctr)
++ Data Type: 64-bit int InDom: 29.2 0x7400002
++ Semantics: counter Units: Kbyte
+ PMID: 30.0.27 (sampledso.double.hundred)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+@@ -48,9 +51,6 @@
+ PMID: 29.0.50 (sample.part_bin)
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+-PMID: 29.0.110 (sample.longlong.bin_ctr)
+- Data Type: 64-bit int InDom: 29.2 0x7400002
+- Semantics: counter Units: Kbyte
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+@@ -168,7 +168,7 @@
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.110 (sample.longlong.bin_ctr):
++ 1.2.3 (sample.longlong.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+@@ -258,7 +258,7 @@
+ inst [200 or "bin-200"] value 200
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+- 29.0.110 (sample.longlong.bin_ctr):
++ 1.2.3 (sample.longlong.bin_ctr):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
diff --git a/qa/500 b/qa/500
new file mode 100755
index 0000000..119f3c1
--- /dev/null
+++ b/qa/500
@@ -0,0 +1,81 @@
+#! /bin/sh
+# PCP QA Test No. 500
+# #636417 - pmnewlog fails to accept all pmlogger options
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+newlog=$PCP_BINADM_DIR/pmnewlog
+status=1 # failure is the default!
+trap "cd $here; $sudo rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+mkdir -p -m 777 $tmp
+cd $tmp
+wai=`whoami`
+
+_filter_pmnewlog()
+{
+ sed \
+ -e 's/process [0-9][0-9]*/process PID/' \
+ -e "s/^ *$wai/ pcpqa/" \
+ -e '/^ *pcp*.*pmlogger -L.*.*-c null one/ s/.*/-- ps line removed --/' \
+ -e '/^ *root.*pmlogger -L.*.*-c null one/ s/.*/-- ps line removed --/' \
+ -e '/^[0-9][0-9]*.* pmlogger -L.*.*-c null one/ s/.*/-- ps line removed --/' \
+ -e 's/ SIG.* done/ signal stuff ... done/' \
+ -e "s;$tmp;TMP;g" \
+ -e 's/ -h [^ ]*/ -h HOST/g' \
+ -e '/pmlogger \[[0-9][0-9]*].*/{
+ s/\[.*/[PID] .../
+ q
+ }'
+}
+
+# real QA test starts here
+touch null
+_start_up_pmlogger -L -c null one
+pmlogger_pid=$pid
+
+for arg in '-D pdu' -r '-t 5sec' '-v 100k'
+do
+ echo
+ echo "pmnewlog args: -V -L -c null -p ... $arg one"
+ _wait_for_pmlogger $pmlogger_pid pmlogger.log
+ $sudo rm -f one.*
+ eval $sudo $newlog -V -L -c null -p $pmlogger_pid $arg one >out
+ _filter_pmnewlog <out
+
+ pmlogger_pid=`sed -n <out '/^pmlogger \[/{
+s/].*//
+s/.*\[//
+p
+}'`
+ if [ -z "$pmlogger_pid" ]
+ then
+ echo "Cannot extract pmlogger PID from ..."
+ cat out
+ echo
+ echo "... giving up!"
+ exit
+ fi
+
+done
+
+$sudo $signal -s TERM $pmlogger_pid
+_wait_pmlogger_end $pmlogger_pid
+
+echo
+echo "expect none of my pmloggers to be running ..."
+ps $PCP_PS_ALL_FLAGS | grep pmlogger | grep 'null one' | grep -v grep
+
+# success, all done
+status=0
+exit
diff --git a/qa/500.out b/qa/500.out
new file mode 100644
index 0000000..446bbdc
--- /dev/null
+++ b/qa/500.out
@@ -0,0 +1,44 @@
+QA output created by 500
+
+pmnewlog args: -V -L -c null -p ... -D pdu one
+Looking for pmlogger (process PID) ... found
+-- ps line removed --
+Getting logged host name from pmlogger (process PID) ... done
+Terminating pmlogger (process PID) ... signal stuff ... done
+Launching new pmlogger in directory "TMP" as ...
+pmlogger -L -D pdu -l pmlogger.log -h HOST -c null one
+Waiting for new pmlogger to start ... done
+New pmlogger status ...
+pmlogger [PID] ...
+
+pmnewlog args: -V -L -c null -p ... -r one
+Looking for pmlogger (process PID) ... found
+-- ps line removed --
+Terminating pmlogger (process PID) ... signal stuff ... done
+Launching new pmlogger in directory "TMP" as ...
+pmlogger -L -r -l pmlogger.log -h HOST -c null one
+Waiting for new pmlogger to start ... done
+New pmlogger status ...
+pmlogger [PID] ...
+
+pmnewlog args: -V -L -c null -p ... -t 5sec one
+Looking for pmlogger (process PID) ... found
+-- ps line removed --
+Terminating pmlogger (process PID) ... signal stuff ... done
+Launching new pmlogger in directory "TMP" as ...
+pmlogger -L -t 5sec -l pmlogger.log -h HOST -c null one
+Waiting for new pmlogger to start ... done
+New pmlogger status ...
+pmlogger [PID] ...
+
+pmnewlog args: -V -L -c null -p ... -v 100k one
+Looking for pmlogger (process PID) ... found
+-- ps line removed --
+Terminating pmlogger (process PID) ... signal stuff ... done
+Launching new pmlogger in directory "TMP" as ...
+pmlogger -L -v 100k -l pmlogger.log -h HOST -c null one
+Waiting for new pmlogger to start ... done
+New pmlogger status ...
+pmlogger [PID] ...
+
+expect none of my pmloggers to be running ...
diff --git a/qa/501 b/qa/501
new file mode 100755
index 0000000..cc6a726
--- /dev/null
+++ b/qa/501
@@ -0,0 +1,105 @@
+#! /bin/sh
+# PCP QA Test No. 501
+# COPY of PCP QA Test No. 413 with different 2.0/2.0+ output ...
+# #552517 pmie dumps core with bad metric and -V or -W
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix)
+ ln $seq-irix.out $seq.out || exit 1
+ ;;
+ linux|darwin|solaris)
+ ln $seq-linux.out $seq.out || exit 1
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+host=`hostname`
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+$sudo rm -f core* $seq.core*
+
+_filter()
+{
+ _filter_pmie_log \
+ | sed \
+ -e 's/: *[0-9][0-9]*\.[0-9]*e[-+][0-9][0-9]*/: NUMBER/' \
+ -e 's/: *[0-9][0-9]*e[-+][0-9][0-9]*/: NUMBER/' \
+ -e 's/: *[0-9][0-9]*\.[0-9]*/: NUMBER/' \
+ -e 's/: *[0-9][0-9]*/: NUMBER/' \
+ -e "s/$host/HOST/" \
+ -e "s/local:/HOST/"
+}
+
+# real QA test starts here
+
+for arg in -v -V -W
+do
+ echo
+ echo "=== pmie $arg ... ==="
+ cat <<End-of-File | pmie -f -l $tmp.log $arg -t 2sec -T 3sec >$tmp.out
+// arithmetic expressions
+valid_a = hinv.ncpu;
+alone_a = no.such.metric;
+sum1_a = mem.physmem + no.such.metric;
+sum2_a = no.such.metric + mem.physmem;
+product_a = no.such.metric * hinv.physmem;
+compound1_a = mem.physmem + no.such.metric * hinv.ncpu;
+compound2_a = (no.such.metric + mem.physmem) * hinv.ncpu;
+
+// boolean expressions
+valid_b = 0 < hinv.ncpu;
+alone_b = 0 < no.such.metric;
+sum1_b = 0 < mem.physmem + no.such.metric;
+sum2_b = 0 < no.such.metric + mem.physmem;
+product_b = 0 < no.such.metric * hinv.physmem;
+compound1_b = 0 < mem.physmem + no.such.metric * hinv.ncpu;
+compound2_b = 0 < (no.such.metric + mem.physmem) * hinv.ncpu;
+
+// existential expressions
+valid_s = some_inst 500 < sample.bin;
+alone_s = some_inst 0 < no.such.metric;
+sum1_s = some_inst 0 < sample.bin + no.such.metric;
+sum2_s = some_inst 0 < no.such.metric + sample;
+product_s = some_inst 0 < no.such.metric * sample.bin;
+compound1_s = some_inst 0 < sample.bin + no.such.metric * sample.bin;
+compound2_s = some_inst 0 < (no.such.metric + mem.physmem) * hinv.ncpu;
+
+// no support
+one = sample.long.one;
+no1 = sample.bad.nosupport;
+no2 = sample.long.one + sample.bad.nosupport;
+mill = -1 * (sample.long.one - (sample.long.one + sample.long.ten + sample.long.million)) / sample.long.one;
+no3 = (sample.long.one - (sample.long.one + sample.long.ten + sample.bad.nosupport)) / sample.long.one;
+no4 = (sample.long.one - (sample.long.one + sample.long.ten + sample.long.million)) / sample.bad.nosupport;
+
+// not-numeric
+notnum1 = sample.string.hullo;
+notnum2 = 1 != sample.string.hullo;
+notnum3 = (sample.long.one - (sample.long.one + sample.long.ten + sample.string.hullo)) / sample.long.one;
+notnum4 = (sample.long.one - (sample.long.one + sample.long.ten + sample.long.million)) / sample.string.hullo;
+
+
+End-of-File
+
+ cat $tmp.out $tmp.log | _filter
+
+ echo
+ _check_core
+done
+
+exit
diff --git a/qa/501-irix.out b/qa/501-irix.out
new file mode 100644
index 0000000..48e5ac9
--- /dev/null
+++ b/qa/501-irix.out
@@ -0,0 +1,351 @@
+QA output created by 501
+
+=== pmie -v ... ===
+valid_a: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b: true
+alone_b: ?
+sum1_b: ?
+sum2_b: ?
+product_b: ?
+compound1_b: ?
+compound2_b: ?
+valid_s: true
+alone_s: ?
+sum1_s: ?
+sum2_s: ?
+product_s: ?
+compound1_s: ?
+compound2_s: ?
+one: NUMBER
+no1: ?
+no2: ?
+mill: NUMBER
+no3: ?
+no4: ?
+
+valid_a: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b: true
+alone_b: ?
+sum1_b: ?
+sum2_b: ?
+product_b: ?
+compound1_b: ?
+compound2_b: ?
+valid_s: true
+alone_s: ?
+sum1_s: ?
+sum2_s: ?
+product_s: ?
+compound1_s: ?
+compound2_s: ?
+one: NUMBER
+no1: ?
+no2: ?
+mill: NUMBER
+no3: ?
+no4: ?
+
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample not in namespace for host HOST
+pmLookupName failed: Metric name is not a leaf in PMNS
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+Log finished DATE
+
+
+=== pmie -V ... ===
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: true
+alone_b: ?
+sum1_b: ?
+sum2_b: ?
+product_b: ?
+compound1_b: ?
+compound2_b: ?
+valid_s:
+ HOST: true
+alone_s: ?
+sum1_s: ?
+sum2_s: ?
+product_s: ?
+compound1_s: ?
+compound2_s: ?
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: true
+alone_b: ?
+sum1_b: ?
+sum2_b: ?
+product_b: ?
+compound1_b: ?
+compound2_b: ?
+valid_s:
+ HOST: true
+alone_s: ?
+sum1_s: ?
+sum2_s: ?
+product_s: ?
+compound1_s: ?
+compound2_s: ?
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample not in namespace for host HOST
+pmLookupName failed: Metric name is not a leaf in PMNS
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+Log finished DATE
+
+
+=== pmie -W ... ===
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: NUMBER
+alone_b: ?
+sum1_b: ?
+sum2_b: ?
+product_b: ?
+compound1_b: ?
+compound2_b: ?
+valid_s:
+ HOST: [bin-600] 600
+ HOST: [bin-700] 700
+ HOST: [bin-800] 800
+ HOST: [bin-900] 900
+alone_s: ?
+sum1_s: ?
+sum2_s: ?
+product_s: ?
+compound1_s: ?
+compound2_s: ?
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: NUMBER
+alone_b: ?
+sum1_b: ?
+sum2_b: ?
+product_b: ?
+compound1_b: ?
+compound2_b: ?
+valid_s:
+ HOST: [bin-600] 600
+ HOST: [bin-700] 700
+ HOST: [bin-800] 800
+ HOST: [bin-900] 900
+alone_s: ?
+sum1_s: ?
+sum2_s: ?
+product_s: ?
+compound1_s: ?
+compound2_s: ?
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample not in namespace for host HOST
+pmLookupName failed: Metric name is not a leaf in PMNS
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+Log finished DATE
+
diff --git a/qa/501-linux.out b/qa/501-linux.out
new file mode 100644
index 0000000..35a5e65
--- /dev/null
+++ b/qa/501-linux.out
@@ -0,0 +1,351 @@
+QA output created by 501
+
+=== pmie -v ... ===
+valid_a: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b: true
+alone_b: unknown
+sum1_b: unknown
+sum2_b: unknown
+product_b: unknown
+compound1_b: unknown
+compound2_b: unknown
+valid_s: true
+alone_s: unknown
+sum1_s: unknown
+sum2_s: unknown
+product_s: unknown
+compound1_s: unknown
+compound2_s: unknown
+one: NUMBER
+no1: ?
+no2: ?
+mill: NUMBER
+no3: ?
+no4: ?
+
+valid_a: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b: true
+alone_b: unknown
+sum1_b: unknown
+sum2_b: unknown
+product_b: unknown
+compound1_b: unknown
+compound2_b: unknown
+valid_s: true
+alone_s: unknown
+sum1_s: unknown
+sum2_s: unknown
+product_s: unknown
+compound1_s: unknown
+compound2_s: unknown
+one: NUMBER
+no1: ?
+no2: ?
+mill: NUMBER
+no3: ?
+no4: ?
+
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample not in namespace for host HOST
+pmLookupName failed: Metric name is not a leaf in PMNS
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+Log finished DATE
+
+
+=== pmie -V ... ===
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: true
+alone_b: unknown
+sum1_b: unknown
+sum2_b: unknown
+product_b: unknown
+compound1_b: unknown
+compound2_b: unknown
+valid_s:
+ HOST: true
+alone_s: unknown
+sum1_s: unknown
+sum2_s: unknown
+product_s: unknown
+compound1_s: unknown
+compound2_s: unknown
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: true
+alone_b: unknown
+sum1_b: unknown
+sum2_b: unknown
+product_b: unknown
+compound1_b: unknown
+compound2_b: unknown
+valid_s:
+ HOST: true
+alone_s: unknown
+sum1_s: unknown
+sum2_s: unknown
+product_s: unknown
+compound1_s: unknown
+compound2_s: unknown
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample not in namespace for host HOST
+pmLookupName failed: Metric name is not a leaf in PMNS
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+Log finished DATE
+
+
+=== pmie -W ... ===
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: NUMBER
+alone_b: unknown
+sum1_b: unknown
+sum2_b: unknown
+product_b: unknown
+compound1_b: unknown
+compound2_b: unknown
+valid_s:
+ HOST: [bin-600] 600
+ HOST: [bin-700] 700
+ HOST: [bin-800] 800
+ HOST: [bin-900] 900
+alone_s: unknown
+sum1_s: unknown
+sum2_s: unknown
+product_s: unknown
+compound1_s: unknown
+compound2_s: unknown
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+valid_a:
+ HOST: NUMBER
+alone_a: ?
+sum1_a: ?
+sum2_a: ?
+product_a: ?
+compound1_a: ?
+compound2_a: ?
+valid_b:
+ HOST: NUMBER
+alone_b: unknown
+sum1_b: unknown
+sum2_b: unknown
+product_b: unknown
+compound1_b: unknown
+compound2_b: unknown
+valid_s:
+ HOST: [bin-600] 600
+ HOST: [bin-700] 700
+ HOST: [bin-800] 800
+ HOST: [bin-900] 900
+alone_s: unknown
+sum1_s: unknown
+sum2_s: unknown
+product_s: unknown
+compound1_s: unknown
+compound2_s: unknown
+one:
+ HOST: NUMBER
+no1: ?
+no2: ?
+mill:
+ HOST: NUMBER
+no3: ?
+no4: ?
+
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample not in namespace for host HOST
+pmLookupName failed: Metric name is not a leaf in PMNS
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric no.such.metric not in namespace for host HOST
+pmLookupName failed: Unknown metric name
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+pmie: metric sample.string.hullo has non-numeric type
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+Log finished DATE
+
diff --git a/qa/502 b/qa/502
new file mode 100755
index 0000000..4e4a7aa
--- /dev/null
+++ b/qa/502
@@ -0,0 +1,154 @@
+#!/bin/sh
+# PCP QA Test No. 502
+# pmlogrewrite - -i option
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s;/$$\.;/PID.;g" \
+ -e '/^__pm/d' \
+ -e '/^_pm/d' \
+ -e '/^logputresult:/d' \
+ -e '/[-+ ]\[[0-9][0-9]* bytes]/d' \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
+}
+
+_cmp()
+{
+ ok=true
+ for ext in 0 index meta
+ do
+ if [ ! -f "$1.$ext" ]
+ then
+ echo "Arrgh ... $1.$ext missing" | _filter
+ ok=false
+ fi
+ if [ ! -f "$2.$ext" ]
+ then
+ echo "Warning: $2.$ext missing" | _filter
+ ok=false
+ fi
+ done
+ $ok || return
+ pmdumplog -z -a $1 | tee -a $seq.full >$tmp.in
+ pmdumplog -z -a $2 | tee -a $seq.full >$tmp.out
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+mkdir $tmp.arch
+
+# real QA test starts here
+
+echo "=== metric not in archive ===" | tee -a $seq.full
+arch=rewrite
+rm -f $tmp.arch/*
+cp src/$arch.* $tmp.arch
+ls -l $tmp.arch | tee -a $seq.full >$tmp.before
+cat <<'End-of-File' >$tmp.conf
+metric kernel.all.load { pmid -> 1.2.3 }
+End-of-File
+pmlogrewrite -Dlog -iqsvw -c $tmp.conf $tmp.arch/$arch 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+ls $tmp.arch
+ls -l $tmp.arch | tee -a $seq.full >$tmp.after
+if diff $tmp.before $tmp.after >/dev/null
+then
+ :
+else
+ echo "Directory differences, before ..."
+ cat $tmp.before
+ echo "After ..."
+ cat $tmp.after
+fi
+_cmp src/$arch $tmp.arch/$arch
+
+echo | tee -a $seq.full
+echo "=== correctness checked in QA 493 ... only care about expected file contents here ===" | tee -a $seq.full
+cat <<End-of-File >$tmp.conf
+metric sample.ulong.bin_ctr {
+ indom -> NULL output MIN
+ type -> DOUBLE
+ units -> 1,0,0,BYTE,0,0
+}
+metric sample.ulonglong.bin_ctr {
+ indom -> NULL output MAX
+ type -> 32
+ units -> 1,0,0,BYTE,0,0
+}
+metric sampledso.double.bin_ctr {
+ indom -> NULL output AVG
+ type -> FLOAT
+}
+metric sample.float.bin_ctr {
+ indom -> NULL output SUM
+ type -> U64
+}
+metric sample.longlong.bin_ctr {
+ indom -> NULL output FIRST
+ type -> 64
+ units -> 1,-1,0,KBYTE,SEC,0
+}
+indom 29.2 { inst 200 -> DELETE }
+indom 30.2 { inst 800 -> DELETE }
+End-of-File
+cat $tmp.conf >>$seq.full
+arch=mirage
+rm -f $tmp.arch/*
+cp src/$arch.* $tmp.arch
+ls $tmp.arch
+ls -l $tmp.arch >>$seq.full
+pmlogrewrite -s -c $tmp.conf $tmp.arch/$arch $tmp.arch/$arch.expect 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+ls $tmp.arch
+ls -l $tmp.arch >>$seq.full
+pmlogrewrite -Dlog -si -c $tmp.conf $tmp.arch/$arch 2>&1 \
+| _filter \
+| LC_COLLATE=POSIX sort
+ls -l $tmp.arch >>$seq.full
+_cmp $tmp.arch/$arch $tmp.arch/$arch.expect
+
+echo | tee -a $seq.full
+echo "=== truncated archive ... expect no change ==="
+cat <<End-of-File >$tmp.conf
+indom 29.1 { iname "red" -> "really red" }
+End-of-File
+cat $tmp.conf >>$seq.full
+arch=ok-truncbin
+rm -f $tmp.arch/*
+cp src/$arch.* $tmp.arch
+ls -l $tmp.arch >>$seq.full
+pmlogrewrite -Dlog -iwv -c $tmp.conf $tmp.arch/$arch 2>$tmp.err >$tmp.out
+cat $tmp.out $tmp.err \
+| _filter \
+| sed -e '/inspect file/{
+s/\.meta/.EXT/
+s/\.index/.EXT/
+s/\.0/.EXT/
+}'
+ls $tmp.arch
+ls -l $tmp.arch >>$seq.full
+_cmp src/$arch $tmp.arch/$arch
+
+# success, all done
+exit
diff --git a/qa/502.out b/qa/502.out
new file mode 100644
index 0000000..a7c8eb7
--- /dev/null
+++ b/qa/502.out
@@ -0,0 +1,37 @@
+QA output created by 502
+=== metric not in archive ===
+Metric: kernel.all.load: Unknown metric name
+No changes
+PCP Archive Log Rewrite Specifications Summary
+Warning [TMP.conf, line 1]
+rewrite.0
+rewrite.index
+rewrite.meta
+
+=== correctness checked in QA 493 ... only care about expected file contents here ===
+mirage.0
+mirage.index
+mirage.meta
+mirage.0
+mirage.expect.0
+mirage.expect.index
+mirage.expect.meta
+mirage.index
+mirage.meta
+
+=== truncated archive ... expect no change ===
+PCP Archive Log Rewrite Specifications Summary
+
+Instance Domain: 29.1
+Instance: [0] "red" -> [0] "really red"
+
+Metric: sample.colour (29.0.5)
+Inst Changes: <- InDom 29.1
+Error: data fread got 340 expected 484
+pmlogrewrite: Error: __pmLogRead[log TMP.arch/ok-truncbin]: Corrupted record in a PCP archive log
+pmlogrewrite: Error occurred at byte offset 204456 into a file of 204800 bytes.
+ok-truncbin.0
+ok-truncbin.index
+ok-truncbin.meta
+pmdumplog: pmFetch: Corrupted record in a PCP archive log
+pmdumplog: pmFetch: Corrupted record in a PCP archive log
diff --git a/qa/503 b/qa/503
new file mode 100755
index 0000000..c08fe42
--- /dev/null
+++ b/qa/503
@@ -0,0 +1,192 @@
+#!/bin/sh
+# PCP QA Test No. 503
+# Test pmlogrewrite use with pmlogger_daily
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "$sudo rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+hostname=`hostname | sed -e 's/\..*//'`
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed \
+ -e "s/for host $hostname/for host HOSTNAME/g" \
+ -e "s/for host localhost/for host HOSTNAME/g" \
+ -e "s/for host localhost\.localdomain/for host HOSTNAME/g" \
+ -e "s/for host local:/for host HOSTNAME/g" \
+ -e "s/for host \"localhost\"/for host \"HOSTNAME\"/g" \
+ -e "s/for host \"localhost\.localdomain\"/for host \"HOSTNAME\"/g" \
+ -e "s/for host \"local:\"/for host \"HOSTNAME\"/g" \
+ -e "s/for host \"$hostname\"/for host \"HOSTNAME\"/g" \
+ -e "s;$tmp;TMP;g" \
+ -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/" \
+ -e '/^-rw-r--r--/s/-rw-r--r--.* 2011/-rw-r--r-- ... 2011/' \
+ -e `echo $PCP_LOG_DIR | sed -e 's/\//\\\\\//g'`'\/NOTICES/d'
+}
+
+_setup()
+{
+ rm -f $tmp.arch/*
+ for x in 0 meta index
+ do
+ cp src/rewrite.$x $tmp.arch/20111001.21.10.$x
+ cp src/rewrite.$x $tmp.arch/20111001.22.10.$x
+ done
+ echo "global { time -> +1:00:00 }" >$tmp.conf.time
+ pmlogrewrite -c $tmp.conf.time -i $tmp.arch/20111001.22.10
+}
+
+_cmp()
+{
+ ok=true
+ for ext in 0 index meta
+ do
+ if [ ! -f "$1.$ext" ]
+ then
+ echo "Arrgh ... $1.$ext missing" | _filter
+ ok=false
+ fi
+ if [ ! -f "$2.$ext" ]
+ then
+ echo "Warning: $2.$ext missing" | _filter
+ ok=false
+ fi
+ done
+ $ok || return
+ pmdumplog -z -a $1 \
+ | tee -a $seq.full \
+ | sed -e '/^\[[0-9][0-9]* bytes]/d' >$tmp.in
+
+ pmdumplog -z -a $2 \
+ | tee -a $seq.full \
+ | sed -e '/^\[[0-9][0-9]* bytes]/d' >$tmp.out
+ diff -u $tmp.in $tmp.out | _filter
+}
+
+# take explicit control of the umask
+#
+umask 022
+
+mkdir $tmp.arch
+
+# metrics in play from src/rewrite archive
+#
+# sample.bin PMID: 29.0.6
+# Data Type: 32-bit int InDom: 29.2 0x7400002
+# Semantics: instant Units: none
+# inst [100 or "bin-100"] value 100
+# inst [200 or "bin-200"] value 200
+# inst [300 or "bin-300"] value 300
+# inst [400 or "bin-400"] value 400
+# inst [500 or "bin-500"] value 500
+# inst [600 or "bin-600"] value 600
+# inst [700 or "bin-700"] value 700
+# inst [800 or "bin-800"] value 800
+# inst [900 or "bin-900"] value 900
+#
+# sampledso.double.hundred PMID: 30.0.27
+# Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+# Semantics: instant Units: none
+# value 100
+#
+# Log Label (Log Format Version 2)
+# Performance metrics from host bozo-laptop
+# commencing Sat Oct 1 21:10:11.751 2011
+# ending Sat Oct 1 21:10:12.128 2011
+# Archive timezone: EST-10
+#
+
+cat <<End-of-File >$tmp.control
+\$version=1.1
+LOCALHOSTNAME n n $tmp.arch -c $tmp.pmlogger
+End-of-File
+
+cat <<End-of-File >$tmp.pmlogger
+log mandatory on once { sample.bin }
+End-of-File
+
+# real QA test starts here
+echo "+++ should just work ... +++" | tee -a $seq.full
+_setup
+$sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter
+mkdir $tmp.ok
+mv $tmp.arch/20111001.* $tmp.ok
+
+cat <<'End-of-File' | while read conf
+global { hostname -> dreaming }
+metric sampledso.double.hundred { type -> float }
+End-of-File
+do
+ echo "$conf" >$tmp.conf
+ echo | tee -a $seq.full
+ echo "!!! $conf !!!" | tee -a $seq.full
+
+ echo | tee -a $seq.full
+ echo "+++ expect mismatch +++" | tee -a $seq.full
+ _setup
+ pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter
+
+ echo | tee -a $seq.full
+ echo "+++ expect fix via local config file +++" | tee -a $seq.full
+ _setup
+ pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10
+ cp $tmp.conf $tmp.arch/pmlogrewrite
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter
+ _cmp $tmp.ok/20111001 $tmp.arch/20111001
+
+ echo | tee -a $seq.full
+ echo "+++ expect fix via local symlink config file +++" | tee -a $seq.full
+ _setup
+ pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10
+ ln -s $tmp.conf $tmp.arch/pmlogrewrite
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter
+ _cmp $tmp.ok/20111001 $tmp.arch/20111001
+
+ echo | tee -a $seq.full
+ echo "+++ expect fix via global config dir +++" | tee -a $seq.full
+ _setup
+ pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10
+ $sudo mkdir -p $PCP_VAR_DIR/config/pmlogrewrite
+ $sudo cp $tmp.conf $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter
+ _cmp $tmp.ok/20111001 $tmp.arch/20111001
+ $sudo rm -f $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq
+
+ echo | tee -a $seq.full
+ echo "+++ expect fix via symlink to global config dir +++" | tee -a $seq.full
+ _setup
+ pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10
+ $sudo mkdir -p $PCP_VAR_DIR/config/pmlogrewrite
+ $sudo cp $tmp.conf $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq
+ ln -s $PCP_VAR_DIR/config/pmlogrewrite $tmp.arch/pmlogrewrite
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter
+ _cmp $tmp.ok/20111001 $tmp.arch/20111001
+ $sudo rm -f $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq
+
+done
+
+echo | tee -a $seq.full
+echo "+++ expect fail when -r used and local config file present +++" | tee -a $seq.full
+_setup
+pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10
+cp $tmp.conf $tmp.arch/pmlogrewrite
+$sudo $PCP_BINADM_DIR/pmlogger_daily -r -c $tmp.control -V 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/503.out b/qa/503.out
new file mode 100644
index 0000000..d427679
--- /dev/null
+++ b/qa/503.out
@@ -0,0 +1,362 @@
+QA output created by 503
++++ should just work ... +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+
+!!! global { hostname -> dreaming } !!!
+
++++ expect mismatch +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+pmlogextract: Error: host name mismatch for input archives
+archive: 20111001.21.10 host: bozo-laptop
+archive: 20111001.22.10 host: dreaming
+Archive "20111001" not created.
+pmlogger_merge: Directory: TMP.arch
+pmlogger_merge: Failed: pmlogextract 20111001.21.10 20111001.22.10 20111001
+pmlogger_merge: Trying to continue, although output archive may be corrupted.
+Output archive files:
+pmlogger_merge: Error: file "20111001.meta" not created
+pmlogger_merge: Error: file "20111001.index" not created
+pmlogger_merge: Error: file "20111001.0" not created
+
++++ expect fix via local config file +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+-Note: timezone set to local timezone of host "bozo-laptop" from archive
++Note: timezone set to local timezone of host "dreaming" from archive
+
+ Log Label (Log Format Version 2)
+-Performance metrics from host bozo-laptop
++Performance metrics from host dreaming
+ commencing Sat Oct 1 21:10:11.751 2011
+ ending Sat Oct 1 22:10:12.128 2011
+
+
++++ expect fix via local symlink config file +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+-Note: timezone set to local timezone of host "bozo-laptop" from archive
++Note: timezone set to local timezone of host "dreaming" from archive
+
+ Log Label (Log Format Version 2)
+-Performance metrics from host bozo-laptop
++Performance metrics from host dreaming
+ commencing Sat Oct 1 21:10:11.751 2011
+ ending Sat Oct 1 22:10:12.128 2011
+
+
++++ expect fix via global config dir +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+-Note: timezone set to local timezone of host "bozo-laptop" from archive
++Note: timezone set to local timezone of host "dreaming" from archive
+
+ Log Label (Log Format Version 2)
+-Performance metrics from host bozo-laptop
++Performance metrics from host dreaming
+ commencing Sat Oct 1 21:10:11.751 2011
+ ending Sat Oct 1 22:10:12.128 2011
+
+
++++ expect fix via symlink to global config dir +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -1,7 +1,7 @@
+-Note: timezone set to local timezone of host "bozo-laptop" from archive
++Note: timezone set to local timezone of host "dreaming" from archive
+
+ Log Label (Log Format Version 2)
+-Performance metrics from host bozo-laptop
++Performance metrics from host dreaming
+ commencing Sat Oct 1 21:10:11.751 2011
+ ending Sat Oct 1 22:10:12.128 2011
+
+
+!!! metric sampledso.double.hundred { type -> float } !!!
+
++++ expect mismatch +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+pmlogextract: Error: metric sampledso.double.hundred: type changed from DOUBLE to FLOAT!
+Archive "20111001" not created.
+pmlogger_merge: Directory: TMP.arch
+pmlogger_merge: Failed: pmlogextract 20111001.21.10 20111001.22.10 20111001
+pmlogger_merge: Trying to continue, although output archive may be corrupted.
+Output archive files:
+pmlogger_merge: Error: file "20111001.meta" not created
+pmlogger_merge: Error: file "20111001.index" not created
+pmlogger_merge: Error: file "20111001.0" not created
+
++++ expect fix via local config file +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -40,7 +40,7 @@
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+ PMID: 30.0.27 (sampledso.double.hundred)
+- Data Type: double InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 30.0.3 (sampledso.milliseconds)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+@@ -121,10 +121,10 @@
+ 21:10:11.751 0 132 132
+ 21:10:11.876 0 350 284
+ 21:10:11.878 0 652 428
+-22:10:11.751 0 1727 3456
+-22:10:11.876 0 1768 3608
+-22:10:11.878 0 1940 3752
+-22:10:12.128 0 2112 6248
++22:10:11.751 0 1727 3448
++22:10:11.876 0 1768 3600
++22:10:11.878 0 1940 3744
++22:10:12.128 0 2112 6232
+
+ 21:10:11.751 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [1933 or "1933"] value 4331
+
++++ expect fix via local symlink config file +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -40,7 +40,7 @@
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+ PMID: 30.0.27 (sampledso.double.hundred)
+- Data Type: double InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 30.0.3 (sampledso.milliseconds)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+@@ -121,10 +121,10 @@
+ 21:10:11.751 0 132 132
+ 21:10:11.876 0 350 284
+ 21:10:11.878 0 652 428
+-22:10:11.751 0 1727 3456
+-22:10:11.876 0 1768 3608
+-22:10:11.878 0 1940 3752
+-22:10:12.128 0 2112 6248
++22:10:11.751 0 1727 3448
++22:10:11.876 0 1768 3600
++22:10:11.878 0 1940 3744
++22:10:12.128 0 2112 6232
+
+ 21:10:11.751 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [1933 or "1933"] value 4331
+
++++ expect fix via global config dir +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -40,7 +40,7 @@
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+ PMID: 30.0.27 (sampledso.double.hundred)
+- Data Type: double InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 30.0.3 (sampledso.milliseconds)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+@@ -121,10 +121,10 @@
+ 21:10:11.751 0 132 132
+ 21:10:11.876 0 350 284
+ 21:10:11.878 0 652 428
+-22:10:11.751 0 1727 3456
+-22:10:11.876 0 1768 3608
+-22:10:11.878 0 1940 3752
+-22:10:12.128 0 2112 6248
++22:10:11.751 0 1727 3448
++22:10:11.876 0 1768 3600
++22:10:11.878 0 1940 3744
++22:10:12.128 0 2112 6232
+
+ 21:10:11.751 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [1933 or "1933"] value 4331
+
++++ expect fix via symlink to global config dir +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+Output archive files:
+-rw-r--r-- ... 20111001.meta
+-rw-r--r-- ... 20111001.index
+-rw-r--r-- ... 20111001.0
+Removing input archive files ... done
+--- TMP.in
++++ TMP.out
+@@ -40,7 +40,7 @@
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+ PMID: 30.0.27 (sampledso.double.hundred)
+- Data Type: double InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 30.0.3 (sampledso.milliseconds)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+@@ -121,10 +121,10 @@
+ 21:10:11.751 0 132 132
+ 21:10:11.876 0 350 284
+ 21:10:11.878 0 652 428
+-22:10:11.751 0 1727 3456
+-22:10:11.876 0 1768 3608
+-22:10:11.878 0 1940 3752
+-22:10:12.128 0 2112 6248
++22:10:11.751 0 1727 3448
++22:10:11.876 0 1768 3600
++22:10:11.878 0 1940 3744
++22:10:12.128 0 2112 6232
+
+ 21:10:11.751 2.3.3 (pmcd.pmlogger.host): inst [1933 or "1933"] value "localhost.localdomain"
+ 2.3.0 (pmcd.pmlogger.port): inst [1933 or "1933"] value 4331
+
++++ expect fail when -r used and local config file present +++
+
+=== daily maintenance of PCP archives for host HOSTNAME ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "HOSTNAME"
+[TMP.control:2] ... logging for host "HOSTNAME" unchanged
+
+Input archives to be merged:
+ 20111001.21.10
+ 20111001.22.10
+pmlogextract: Error: metric sampledso.double.hundred: type changed from DOUBLE to FLOAT!
+Archive "20111001" not created.
+pmlogger_merge: Directory: TMP.arch
+pmlogger_merge: Failed: pmlogextract 20111001.21.10 20111001.22.10 20111001
+pmlogger_merge: Trying to continue, although output archive may be corrupted.
+Output archive files:
+pmlogger_merge: Error: file "20111001.meta" not created
+pmlogger_merge: Error: file "20111001.index" not created
+pmlogger_merge: Error: file "20111001.0" not created
diff --git a/qa/504 b/qa/504
new file mode 100755
index 0000000..3aaa49a
--- /dev/null
+++ b/qa/504
@@ -0,0 +1,173 @@
+#! /bin/sh
+# PCP QA Test No. 504
+# exercises pmie_check functionality
+# Version of No. 115 ... this one uses pmsocks
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3810 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo "QA output created by $seq"
+
+if [ "`pmsocks echo ok 2>&1`" != ok ]
+then
+ echo "pmsocks is not installed and/or not configured" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+. ./common.config
+
+# Requires common.product:
+if [ "$PCP_VER" -lt 2200 ]
+then
+ echo "test aborted; known problem with pmsocks (#816862)" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+signal=$PCP_BINADM_DIR/pmsignal
+lhost=`hostname`
+host=`_get_fqdn`
+remote=`./getpmcdhosts -n 1 -L 2>/dev/null`
+if [ -z "$PCP_PMIECONTROL_PATH" ]
+then
+ echo "Arrgh: Botch: PCP_PMIECONTROL_PATH not defined"
+ exit 1
+fi
+needclean=false
+
+_cleanup()
+{
+ if $needclean
+ then
+ $sudo cp $tmp.control.bak $PCP_PMIECONTROL_PATH
+ $sudo chown pcp:pcp $PCP_PMIECONTROL_PATH
+ $sudo chmod 664 $PCP_PMIECONTROL_PATH
+ $sudo cp $tmp.pmcd.bak $PCP_PMCDCONF_PATH
+ needclean=false
+ fi
+ $sudo rm -f $tmp.*
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s/$seq-$$/PID/g" \
+ -e "s/$$/PID/g" \
+ -e "s/$remote/REMOTEHOST/g" \
+ -e "s/$host/LOCALHOST/g" \
+ -e "s/$lhost/LOCALHOST/g" \
+ -e "s/local:/LOCALHOST/g" \
+
+}
+
+_count_pmies()
+{
+ count=0
+ if [ -d $PCP_TMP_DIR/pmie ]
+ then cd $PCP_TMP_DIR/pmie
+ else return 0
+ fi
+
+ plist=`ls -1`
+ cd $here
+
+ for process in $plist
+ do
+ ps -p $process >/dev/null 2>&1
+ if [ $? = 1 ]
+ then
+ echo "urk, $PCP_TMP_DIR/pmie/$process has no running pmie instance"
+ else
+ count=`expr $count + 1`
+ fi
+ done
+
+ return $count
+}
+
+# create a basic pmcd config file
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+EOF
+
+# create a pmie config file
+cat >$tmp.conf << EOF
+foo = sample.long.one;
+doo = sample.long.ten;
+EOF
+
+# create pmie control file
+cat >$tmp.control << EOF
+\$version=1.0
+LOCALHOSTNAME y $tmp.log0 $tmp.conf
+$remote n $tmp.log1 -c $tmp.conf
+$remote y $tmp.log2 -c $tmp.conf
+EOF
+
+# real QA test starts here
+cp $PCP_PMIECONTROL_PATH $tmp.control.bak
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.bak
+needclean=true
+$sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+
+$sudo $signal -a -s TERM pmie >/dev/null 2>&1
+_change_config pmcd on
+_change_config pmie off
+$sudo rm -f $PCP_TMP_DIR/pmie/*
+
+_count_pmies
+echo "pmie count at start of QA testing: $?"
+echo
+
+SOCKS_SERVER=$PCPQA_SOCKS_SERVER
+export SOCKS_SERVER
+
+_change_config pmie on
+$sudo cp $tmp.control $PCP_PMIECONTROL_PATH
+$sudo chown pcp:pcp $PCP_PMIECONTROL_PATH
+$sudo chmod 664 $PCP_PMIECONTROL_PATH
+
+echo === check pmie_check and custom config ===
+pmie_check -V -V -N -c $tmp.control 2>&1 | _filter
+# don't bother counting pmie processes, as -N is used above!
+#
+echo
+
+echo === check customised control file ===
+$sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start
+sleep 30 # can take awhile, but in bg - TODO: really needs a "pmie_wait"
+_count_pmies
+echo "pmie count with custom config (expect 3): $?"
+echo
+
+$sudo $PCP_RC_DIR/pmie stop 2>&1 | _filter_pmie_start
+_change_config pmie off
+
+status=0
+exit
diff --git a/qa/504.out.1 b/qa/504.out.1
new file mode 100644
index 0000000..ad63bde
--- /dev/null
+++ b/qa/504.out.1
@@ -0,0 +1,32 @@
+QA output created by 504
+pmie count at start of QA testing: 0
+
+=== check pmie_check and custom config ===
+# $version=1.0
++ export version; version=1.0
+Check pmie -h LOCALHOST -l /tmp/PID.log0 ...
++ cd /tmp
+No current pmie process exists for:
+ host = LOCALHOST
+ log file = /tmp/PID.log0
+Restarting pmie for host "LOCALHOST" ...
++ pmsocks pmie -b -h LOCALHOST -l /tmp/PID.log0 /tmp/PID.conf
+Check pmie -h REMOTEHOST -l /tmp/PID.log1 ...
++ cd /tmp
+No current pmie process exists for:
+ host = REMOTEHOST
+ log file = /tmp/PID.log1
+Restarting pmie for host "REMOTEHOST" ...
++ pmie -b -h REMOTEHOST -l /tmp/PID.log1 -c /tmp/PID.conf
+Check pmie -h REMOTEHOST -l /tmp/PID.log2 ...
++ cd /tmp
+No current pmie process exists for:
+ host = REMOTEHOST
+ log file = /tmp/PID.log2
+Restarting pmie for host "REMOTEHOST" ...
++ pmsocks pmie -b -h REMOTEHOST -l /tmp/PID.log2 -c /tmp/PID.conf
+
+=== check customised control file ===
+Performance Co-Pilot starting inference engine(s) ...
+pmie count with custom config (expect 3): 3
+
diff --git a/qa/504.out.2 b/qa/504.out.2
new file mode 100644
index 0000000..bb2d5fb
--- /dev/null
+++ b/qa/504.out.2
@@ -0,0 +1,32 @@
+QA output created by 504
+pmie count at start of QA testing: 0
+
+=== check pmie_check and custom config ===
+# $version=1.0
++ export version; version=1.0
+Check pmie -h LOCALHOST -l /tmp/PID.log0 ...
++ cd /tmp
+No current pmie process exists for:
+ host = LOCALHOST
+ log file = /tmp/PID.log0
+Restarting pmie for host "LOCALHOST" ...
++ pmsocks pmie -b -h LOCALHOST -l /tmp/PID.log0 /tmp/PID.conf
+Check pmie -h REMOTEHOST -l /tmp/PID.log1 ...
++ cd /tmp
+No current pmie process exists for:
+ host = REMOTEHOST
+ log file = /tmp/PID.log1
+Restarting pmie for host "REMOTEHOST" ...
++ pmie -b -h REMOTEHOST -l /tmp/PID.log1 -c /tmp/PID.conf
+Check pmie -h REMOTEHOST -l /tmp/PID.log2 ...
++ cd /tmp
+No current pmie process exists for:
+ host = REMOTEHOST
+ log file = /tmp/PID.log2
+Restarting pmie for host "REMOTEHOST" ...
++ pmsocks pmie -b -h REMOTEHOST -l /tmp/PID.log2 -c /tmp/PID.conf
+
+=== check customised control file ===
+Starting pmie ...
+pmie count with custom config (expect 3): 3
+
diff --git a/qa/505 b/qa/505
new file mode 100755
index 0000000..3f694ca
--- /dev/null
+++ b/qa/505
@@ -0,0 +1,70 @@
+#!/bin/sh
+# PCP QA Test No. 505
+# pmlogrewrite - multi-volume archive tests
+#
+# Copyright (c) 2011 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g" \
+ -e '/[-+ ]\[[0-9][0-9]* bytes]/d' \
+ -e "s/^\([+-][+-][+-] TMP\.[a-z]*\).*/\1/"
+}
+
+_cmp()
+{
+ if [ ! -f "$1.0" ]
+ then
+ echo "Arrgh ... $1.0 missing" | _filter
+ return
+ fi
+ pmdumplog -z -a $1 \
+ | tee -a $seq.full \
+ | sed -e '/\[[0-9][0-9]* bytes]/d' >$tmp.out
+ diff -u $tmp.ref $tmp.out | _filter
+}
+
+# real QA test starts here
+
+pmdumplog -z -a src/ok-mv-foo \
+| tee -a $seq.full \
+| sed -e '/\[[0-9][0-9]* bytes]/d' >$tmp.ref
+
+echo | tee -a $seq.full
+echo "metric sample.seconds { type -> U64 }" >$tmp.config
+echo "=== `cat $tmp.config` ===" | tee -a $seq.full
+rm -f $tmp.new.*
+pmlogrewrite -ws -c $tmp.config src/ok-mv-foo $tmp.new 2>&1 | _filter
+echo "Output archive contains: `ls $tmp.new.* | tee -a $seq.full | wc -l | sed -e 's/ //g'` files"
+_cmp $tmp.new
+
+echo | tee -a $seq.full
+echo "metric sample.seconds { type -> U64 }" >$tmp.config
+echo "=== -i `cat $tmp.config` ===" | tee -a $seq.full
+rm -f $tmp.new.*
+for i in index meta 0 1 2
+do
+ cp src/ok-mv-foo.$i $tmp.new.$i
+done
+pmlogrewrite -iws -c $tmp.config $tmp.new 2>&1 | _filter
+echo "Output archive contains: `ls $tmp.new.* | tee -a $seq.full | wc -l | sed -e 's/ //g'` files"
+_cmp $tmp.new
+
+# success, all done
+exit
diff --git a/qa/505.out b/qa/505.out
new file mode 100644
index 0000000..0166c14
--- /dev/null
+++ b/qa/505.out
@@ -0,0 +1,47 @@
+QA output created by 505
+
+=== metric sample.seconds { type -> U64 } ===
+Output archive contains: 5 files
+--- TMP.ref
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -58,7 +58,7 @@
+ 04:34:41.358 0 350 288
+ 04:34:44.368 1 851 132
+ 04:34:47.381 2 851 132
+-04:34:48.368 2 851 340
++04:34:48.368 2 851 352
+
+ 04:34:40.368 2.3.3 (pmcd.pmlogger.host): inst [5407 or "5407"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5407 or "5407"] value 4332
+
+=== -i metric sample.seconds { type -> U64 } ===
+Output archive contains: 5 files
+--- TMP.ref
++++ TMP.out
+@@ -22,7 +22,7 @@
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ PMID: 29.0.2 (sample.seconds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+@@ -58,7 +58,7 @@
+ 04:34:41.358 0 350 288
+ 04:34:44.368 1 851 132
+ 04:34:47.381 2 851 132
+-04:34:48.368 2 851 340
++04:34:48.368 2 851 352
+
+ 04:34:40.368 2.3.3 (pmcd.pmlogger.host): inst [5407 or "5407"] value "gonzo.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [5407 or "5407"] value 4332
diff --git a/qa/506 b/qa/506
new file mode 100755
index 0000000..2e23952
--- /dev/null
+++ b/qa/506
@@ -0,0 +1,101 @@
+#!/bin/sh
+# PCP QA Test No. 506
+# check 2^31 volume switching for pmlogrewrite
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f src/big2.*
+rm -f $seq.full
+./src/mkbig1 > $seq.full 2>&1
+[ $? -eq 0 ] || _notrun `cat $seq.full`
+
+# 10GB should keep us out of trouble
+free=`_check_freespace 10240`
+[ -z "$free" ] || _notrun $free
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.* src/big2.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+_check()
+{
+ # expect 3 volumes, and all < 2^31 bytes in size
+ #
+ sts=0
+ limit=2147483648
+ nvol=`ls $1.? | wc -l | sed -e 's/ //g'`
+ if [ $nvol -ne 3 ]
+ then
+ ls -l $1.?
+ echo "Error: expecting 3 volumes, found $nvol"
+ sts=1
+ fi
+
+ for vol in $1.?
+ do
+ size=`_filesize $vol`
+ if [ -z "$size" ]
+ then
+ stat $vol
+ echo "Error: cannot extract size for volume $vol"
+ sts=1
+ elif [ "$size" -ge $limit ]
+ then
+ ls -l $vol
+ echo "Error: size ($size) exceeds limit ($limit)"
+ sts=1
+ fi
+ done
+ if [ $sts -eq 0 ]
+ then
+ echo "OK"
+ else
+ status=$sts
+ fi
+}
+
+echo "metric sample.hordes.one { type -> 64 }" >$tmp.config
+echo "metric sample.hordes.two { type -> 64 }" >>$tmp.config
+
+# real QA test starts here
+echo "rewrite and copy" | tee -a $seq.full
+rm -f src/big2*
+ls -l src/big1* >>$seq.full 2>&1
+pminfo -d -a src/big1 >>$seq.full
+pmlogrewrite -w -c $tmp.config src/big1 src/big2 2>&1 | _filter
+ls -l src/big2* >>$seq.full 2>&1
+pminfo -d -a src/big2 >>$seq.full
+_check src/big2
+
+echo | tee -a $seq.full
+echo "rewrite in place" | tee -a $seq.full
+rm -f src/big2*
+for file in src/big1.*
+do
+ cp $file `echo $file | sed -e 's/big1/big2/'`
+done
+ls -l src/big2* >>$seq.full 2>&1
+pminfo -d -a src/big2 >>$seq.full
+pmlogrewrite -iw -c $tmp.config src/big2 2>&1 | _filter
+ls -l src/big2* >>$seq.full 2>&1
+pminfo -d -a src/big2 >>$seq.full
+_check src/big2
+
+# success, all done
+exit
diff --git a/qa/506.out b/qa/506.out
new file mode 100644
index 0000000..6446c49
--- /dev/null
+++ b/qa/506.out
@@ -0,0 +1,6 @@
+QA output created by 506
+rewrite and copy
+OK
+
+rewrite in place
+OK
diff --git a/qa/507 b/qa/507
new file mode 100755
index 0000000..bcff019
--- /dev/null
+++ b/qa/507
@@ -0,0 +1,139 @@
+#! /bin/sh
+# PCP QA Test No. 507
+# exercises the pcp(1) works with an archive generates from
+# our own pmlogger config file for it. also checks bug #640234
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+
+qahost=`_get_fqdn`
+if [ -z "$qahost" ]
+then
+ echo "$seq: Arrgh: cannot determine fully qualified domain name for local host"
+ exit 1
+fi
+
+local=`uname -n`
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ if [ $PCP_PLATFORM = darwin ]
+ then
+ # this is bizarre, but the amount of RAM is not constant
+ # ... has been observed to randomly be 2046 or 2047 on
+ # the one system ... scale up RAM to next 128MB boundary
+ #
+ sed -e 's/MB RAM/ RAM/' \
+ | $PCP_AWK_PROG '
+$NF == "RAM" { x = $(NF-1); x = ((int)(x/128)+1)*128; $(NF-1) = x }
+ { print }'
+ else
+ cat
+ fi \
+ | sed \
+ -e "/^ licenses:.*/d" \
+ -e "s/$qahost/HOST/g" \
+ -e "s/$local/HOST/g" \
+ | fgrep -v "archive:"
+}
+
+_config()
+{
+ cat <<End-of-File
+log mandatory on once {
+ hinv.ncpu
+ hinv.ndisk
+ hinv.nnode
+ hinv.nrouter
+ hinv.nxbow
+ hinv.ncell
+ hinv.physmem
+ hinv.cputype
+ pmda.uname
+ pmcd.numagents
+ pmcd.numclients
+ pmcd.services
+ pmcd.version
+ pmcd.build
+ pmcd.timezone
+ pmcd.agent.status
+ pmcd.pmlogger
+ pmcd.pmie
+}
+End-of-File
+}
+
+#
+# check command args compatible:
+# -h local must be same as no args & just local
+# also, locally-generated archive must obviously be very similar also
+#
+# real QA test starts here
+_config > $tmp.config.pcp
+pmlogger -T 3sec -c $tmp.config.pcp $tmp.archive
+echo pmlogger status=$?
+
+pcp -a $tmp.archive | _filter >$tmp.arch
+echo status=$?
+
+# This loop deals with cases when pcp(1) reports that some condition has
+# changed between the three invokations of pcp(1). If a difference has
+# been detected, do the test again to see if the difference is repeated.
+itns=2
+isdiff=TRUE
+until [ $isdiff = FALSE -o $itns = 0 ]
+do
+ rm -f $tmp.noargs $tmp.local $tmp.localnoh \
+ $tmp.diffnoargslocal $tmp.noargslocalnoh
+ pcp | _filter > $tmp.noargs
+ statusna=$?
+ pcp -h $qahost | _filter > $tmp.local
+ statusll=$?
+ export PMCD_HOST=$qahost
+ pcp | _filter > $tmp.localnoh
+ statusln=$?
+ unset PMCD_HOST
+
+ diff $tmp.noargs $tmp.local > $tmp.diffnoargslocal
+ diff $tmp.noargs $tmp.localnoh > $tmp.noargslocalnoh
+
+ if [ -s $tmp.diffnoargslocal -o -s $tmp.noargslocalnoh ]
+ then
+ isdiff=TRUE
+ if [ $itns -gt 1 ] ; then sleep 5 ; fi
+ else
+ isdiff=FALSE
+ fi
+ itns=`expr $itns - 1`
+done
+echo status=$statusna
+echo status=$statusll
+echo status=$statusln
+echo === Comparing noargs and local
+if [ -s $tmp.diffnoargslocal ] ; then cat $tmp.diffnoargslocal ; fi
+echo === Comparing noargs and args
+if [ -s $tmp.noargslocalnoh ] ; then cat $tmp.noargslocalnoh ; fi
+
+echo === Checking for missing archive metrics
+egrep '(Unknown)|( unknown)' $tmp.arch
+
+echo === Checking bug 640234
+echo 'pminfo(1) output:'
+pminfo -fa src/pcpcmd pmcd.pmlogger
+echo
+echo 'pcp(1) output:'
+pcp -n src/root_irix -a src/pcpcmd | fgrep -v "$PCP_PMDAS_DIR/summary"
+# dont use services/pmie output here cos archive doesn't have all metrics
+
+# success, all done
+status=0
+exit
diff --git a/qa/507.out b/qa/507.out
new file mode 100644
index 0000000..b4a6968
--- /dev/null
+++ b/qa/507.out
@@ -0,0 +1,38 @@
+QA output created by 507
+pmlogger status=0
+status=0
+status=0
+status=0
+status=0
+=== Comparing noargs and local
+=== Comparing noargs and args
+=== Checking for missing archive metrics
+=== Checking bug 640234
+pminfo(1) output:
+
+pmcd.pmlogger.pmcd_host
+ inst [4139010 or "4139010"] value "wobbly.melbourne.sgi.com"
+ inst [4255198 or "4255198"] value "wobbly.melbourne.sgi.com"
+ inst [0 or "primary"] value "wobbly.melbourne.sgi.com"
+
+pmcd.pmlogger.archive
+ inst [4139010 or "4139010"] value "/tmp/foo"
+
+pmcd.pmlogger.port
+ inst [4139010 or "4139010"] value 4331
+
+pmcd.pmlogger.host
+ inst [4139010 or "4139010"] value "wobbly.melbourne.sgi.com"
+
+pcp(1) output:
+Performance Co-Pilot configuration on wobbly:
+
+ archive: src/pcpcmd
+ platform: IRIX wobbly 6.5 05190003 IP22
+ hardware: 1 R4400 cpu, 2 disks, 64MB RAM
+ timezone: EST-11EST-10,87/2:00,297/2:00
+ pmcd: Version 2.1 beta-1, 8 agents, 3 clients
+ pmda: irix pmcd proc cisco trace summary sample sampledso
+ pmlogger: primary logger: /var/adm/pcplog/wobbly/19981006.00.35
+ wobbly.melbourne.sgi.com: /tmp/foo
+ pmie: 0: 0
diff --git a/qa/508 b/qa/508
new file mode 100755
index 0000000..e1321f1
--- /dev/null
+++ b/qa/508
@@ -0,0 +1,175 @@
+#!/bin/sh
+# PCP QA Test No. 508
+# pmlogreduce workout (includes check for obscure interp.c bug reported
+# by Arthur Kepner @ sgi)
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_filter1()
+{
+ sed \
+ -e '/^archive:/d' \
+ -e '/^end:/d' \
+ -e '/^samples:/d'
+}
+
+_filter2()
+{
+ sed \
+ -e '/^[a-z]/d' \
+ -e '/^Note/s/.*/<<< pmval header >>>/'
+}
+
+_join()
+{
+ # Note: sed in the pipeline is because join(1) on ia64 SuSE SLES 11
+ # is broken and produces gratuitous white space in the output
+ #
+ join -a 1 -a 2 $1 $2 \
+ | sed -e 's/ */ /g' \
+ | awk '
+/No .* values available No .* values available/ { next }
+ { ok = 0 }
+NF % 2 == 1 { for (i = 2; i < 2+(NF-1)/2; i++) {
+ j = i+(NF-1)/2
+ if ($i == $j)
+ continue
+ if ($i+0 == $i && $j+0 == $j &&
+ 0.98*$i <= $j && $j <= 1.02*$i)
+ continue
+ break
+ }
+ if (i == 2+(NF-1)/2)
+ ok = 1
+ }
+ok == 0 { print }'
+}
+
+if pmlogreduce -A 3sec -t 3sec src/interpmark $tmp.reduce
+then
+ :
+else
+ echo "Arrgh: pmlogreduce failed!"
+ status=1
+ exit
+fi
+
+# from src/mkinterpmark ...
+#
+# metric semantics type indom sample
+# disk.dev.read counter U64 60.1 500msec
+# disk.dev.write counter U64 60.1 2sec
+# disk.dev.total counter U64 60.1 10sec
+# disk.all.read counter U64 NULL 500msec
+# disk.all.write counter U64 NULL 2sec
+# disk.all.total counter U64 NULL 10sec
+# disk.dev.read_bytes counter U32 60.1 500msec
+# disk.dev.write_bytes counter U32 60.1 2sec
+# disk.dev.total_bytes counter U32 60.1 10sec
+# disk.all.read_bytes counter U32 NULL 500msec
+# disk.all.write_bytes counter U32 NULL 2sec
+# disk.all.total_bytes counter U32 NULL 10sec
+#
+# filesys.used instant U64 60.5 500msec
+# sample.longlong.bin instant 64 29.2 2sec
+# filesys.free instant U64 60.5 10sec
+# sample.longlong.one instant 64 NULL 500msec
+# swap.length instant U64 NULL 2sec
+# mem.util.kernelStack instant U64 NULL 10sec
+# filesys.usedfiles instant U32 60.5 500msec
+# swapdev.free instant U32 60.6 2sec
+# pmcd.buf.alloc instant 32 2.5 10sec
+# sample.control instant 32 NULL 500msec
+# kernel.all.uptime instant U32 NULL 2sec
+# network.tcpconn.close instant U32 NULL 10sec
+#
+# filesys.capacity discrete U64 60.5 2sec
+# tmpfs.capacity discrete U64 60.18 once
+#
+# mem.physmem discrete U64 NULL 2sec
+#
+# filesys.capacity discrete U32 60.5 2sec
+# hinv.cpu.cache discrete U32 60.0 once
+# filesys.maxfiles discrete U32 60.5 once
+# hinv.physmem discrete U32 NULL 2sec
+# hinv.pagesize discrete U32 NULL once
+# hinv.ncpu discrete U32 NULL once
+
+for m in \
+ \#500msec \
+ disk.dev.read disk.all.read disk.dev.read_bytes disk.all.read_bytes \
+ filesys.used sample.longlong.one filesys.usedfiles sample.control \
+ \#2sec \
+ disk.all.write disk.dev.write_bytes disk.all.write_bytes \
+ sample.longlong.bin swap.length swapdev.free kernel.all.uptime \
+ filesys.capacity mem.physmem filesys.capacity hinv.physmem \
+ \#10sec \
+ disk.dev.total disk.all.total disk.dev.total_bytes \
+ disk.all.total_bytes filesys.free mem.util.kernelStack \
+ pmcd.buf.alloc network.tcpconn.close \
+ \#once \
+ tmpfs.capacity hinv.cpu.cache filesys.maxfiles hinv.pagesize \
+ hinv.ncpu
+do
+ case "$m"
+ in
+ \#*)
+ continue
+ ;;
+ esac
+ echo "=== $m ===" | tee -a $seq.full
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-a $m \
+ | _filter1 >$tmp.in
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-b $m \
+ | _filter2 >>$tmp.in
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-d $m \
+ | _filter2 >>$tmp.in
+ sed -n '/^[0-2]/{
+s/[ ]*$//
+s/No values/No input values/
+p
+}' $tmp.in >$tmp.in2
+ echo "--- inputs compared to merge ---" | tee -a $seq.full
+ pmval -rz -w 12 -f 3 -U src/interpmark $m >>$seq.full 2>&1
+
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/interpmark $m \
+ | tee -a $seq.full \
+ | _filter1 >$tmp.merge
+ sed -n '/^[0-2]/{
+s/[ ]*$//
+s/No values/No merge values/
+p
+}' $tmp.merge >$tmp.tmp
+ _join $tmp.in2 $tmp.tmp
+
+ echo "--- merge compared to reduce ---"
+ pmval -rz -w 12 -f 3 -U $tmp.reduce $m >>$seq.full 2>&1
+
+ pmval -Dfetch,log,interp -rz -w 12 -f 3 -A 3sec -t 3sec -a $tmp.reduce $m 2>&1 \
+ | tee -a $seq.full \
+ | sed -n '/^[0-2]/{
+s/[ ]*$//
+s/No values/No reduce values/
+p
+}' >$tmp.out
+ _join $tmp.tmp $tmp.out
+
+done
+
+# success, all done
+exit
diff --git a/qa/508.out b/qa/508.out
new file mode 100644
index 0000000..cbbfc83
--- /dev/null
+++ b/qa/508.out
@@ -0,0 +1,313 @@
+QA output created by 508
+=== disk.dev.read ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== disk.all.read ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== disk.dev.read_bytes ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== disk.all.read_bytes ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== filesys.used ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== sample.longlong.one ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== filesys.usedfiles ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== sample.control ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== disk.all.write ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== disk.dev.write_bytes ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== disk.all.write_bytes ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== sample.longlong.bin ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== swap.length ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== swapdev.free ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== kernel.all.uptime ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== filesys.capacity ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== mem.physmem ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== filesys.capacity ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== hinv.physmem ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== disk.dev.total ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 352442 250241 No reduce values available
+07:32:15.000 352446 250242 No reduce values available
+07:32:48.000 352496 250256 No reduce values available
+07:32:51.000 352498 250257 No reduce values available
+07:32:54.000 352500 250258 No reduce values available
+07:33:36.000 352648 250339 No reduce values available
+07:33:39.000 352652 250350 No reduce values available
+=== disk.all.total ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 602683 No reduce values available
+07:32:15.000 602687 No reduce values available
+07:32:48.000 602751 No reduce values available
+07:32:51.000 602755 No reduce values available
+07:32:54.000 602758 No reduce values available
+07:33:36.000 602988 No reduce values available
+07:33:39.000 603003 No reduce values available
+=== disk.dev.total_bytes ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 21383718 13771611 No reduce values available
+07:32:15.000 21383802 13771613 No reduce values available
+07:32:48.000 21384532 13771725 No reduce values available
+07:32:51.000 21384555 13771732 No reduce values available
+07:32:54.000 21384578 13771739 No reduce values available
+07:33:36.000 21388979 13772286 No reduce values available
+07:33:39.000 21389045 13772348 No reduce values available
+=== disk.all.total_bytes ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 35155329 No reduce values available
+07:32:15.000 35155415 No reduce values available
+07:32:48.000 35156257 No reduce values available
+07:32:51.000 35156287 No reduce values available
+07:32:54.000 35156317 No reduce values available
+07:33:36.000 35161265 No reduce values available
+07:33:39.000 35161393 No reduce values available
+=== filesys.free ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 2319004 2059264 3577332 2680848 458296796 368837924 4113016 2599540 270849020 No reduce values available
+07:32:15.000 2319004 2059264 3577332 2680848 458296796 368837924 4113016 2599540 270849020 No reduce values available
+07:32:48.000 2319004 2059264 3577332 2680848 458296728 368837924 4113016 2599548 270849020 No reduce values available
+07:32:51.000 2319004 2059264 3577332 2680848 458296728 368837924 4113016 2599548 270849020 No reduce values available
+07:32:54.000 2319004 2059264 3577332 2680848 458296728 368837924 4113016 2599548 270849020 No reduce values available
+07:33:36.000 2319000 2059264 3577332 2680848 458296644 368837924 4113016 2599544 270849020 No reduce values available
+07:33:39.000 2319000 2059264 3577332 2680848 458296644 368837924 4113016 2599544 270849020 No reduce values available
+=== mem.util.kernelStack ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 3528 No reduce values available
+07:32:15.000 3528 No reduce values available
+07:32:48.000 3520 No reduce values available
+07:32:51.000 3520 No reduce values available
+07:32:54.000 3520 No reduce values available
+07:33:36.000 3536 No reduce values available
+07:33:39.000 3536 No reduce values available
+=== pmcd.buf.alloc ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 14 0 0 3 0 0 0 No reduce values available
+07:32:15.000 14 0 0 3 0 0 0 No reduce values available
+07:32:48.000 14 0 0 3 0 0 0 No reduce values available
+07:32:51.000 14 0 0 3 0 0 0 No reduce values available
+07:32:54.000 14 0 0 3 0 0 0 No reduce values available
+07:33:36.000 14 0 0 3 0 0 0 No reduce values available
+07:33:39.000 14 0 0 3 0 0 0 No reduce values available
+=== network.tcpconn.close ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+07:32:12.000 0 No reduce values available
+07:32:15.000 0 No reduce values available
+07:32:48.000 0 No reduce values available
+07:32:51.000 0 No reduce values available
+07:32:54.000 0 No reduce values available
+07:33:36.000 0 No reduce values available
+07:33:39.000 0 No reduce values available
+=== tmpfs.capacity ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== hinv.cpu.cache ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== filesys.maxfiles ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== hinv.pagesize ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
+=== hinv.ncpu ===
+--- inputs compared to merge ---
+07:32:24.000 No merge values available
+07:33:00.000 No merge values available
+07:33:03.000 No merge values available
+07:33:06.000 No merge values available
+07:33:09.000 No merge values available
+--- merge compared to reduce ---
diff --git a/qa/509 b/qa/509
new file mode 100755
index 0000000..1409f75
--- /dev/null
+++ b/qa/509
@@ -0,0 +1,66 @@
+#!/bin/sh
+# PCP QA Test No. 509
+# Expose bug in pmcd/dbpmda handling of derived metrics and unknown
+# metrics in same pmLookupName request.
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+username=`id -u -n`
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.def
+my.derived = sample.bin
+End-of-File
+
+_filter()
+{
+ sed \
+ -e 's/0x[0-9a-f][0-9a-f]*/ADDR/g' \
+ -e "s; -U $username;;" \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e '/PMNS Checksums/s/=[0-9a-f][0-9a-f]*/=CHECKSUM/g' \
+ -e '/Loaded Version 1 or 2/s/ent = [0-9][0-9]/ent = NN/' \
+ -e '/pmResult dump/s/ [0-9][0-9]*:00:00/ HH:00:00/' \
+ | $PCP_AWK_PROG '
+BEGIN { state = 0; outf = "'$tmp.tmp'.0" }
+state == "0" && $1 == "pmLoadNameSpace:" { state = 1; outf = "'$tmp.tmp'.1" }
+state == "1" && $1 != "pmLoadNameSpace:" { state = 2; outf = "'$tmp.tmp'.2" }
+ { print >outf }'
+
+ [ -f $tmp.tmp.0 ] && cat $tmp.tmp.0
+ if [ -f $tmp.tmp.1 ]
+ then
+ grep ' 29' $tmp.tmp.1 \
+ | LC_COLLATE=POSIX sort
+ fi
+ [ -f $tmp.tmp.2 ] && cat $tmp.tmp.2
+}
+
+# real QA test starts here
+pminfo -D pmns -mf -c $tmp.def \
+ sample.secret.foo.one my.derived foo.bar sample.secret.foo.two \
+ >$tmp.out 2>$tmp.err
+_filter <$tmp.out
+_filter <$tmp.err
+
+pipeargs="-d 29"
+id pcp >/dev/null 2>&1 && pipeargs="$pipeargs -U $username"
+
+export PCP_DERIVED_CONFIG=$tmp.def
+cat <<End-of-File | dbpmda -D pmns -ie >$tmp.out 2>$tmp.err
+open pipe $PCP_PMDAS_DIR/sample/pmdasample $pipeargs
+fetch sample.secret.foo.one, my.derived, sample.secret.foo.two
+End-of-File
+_filter <$tmp.out
+_filter <$tmp.err
diff --git a/qa/509.out b/qa/509.out
new file mode 100644
index 0000000..aea7e4f
--- /dev/null
+++ b/qa/509.out
@@ -0,0 +1,234 @@
+QA output created by 509
+
+sample.secret.foo.one PMID: 29.0.1001
+ value 1
+
+my.derived PMID: 511.0.1
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
+sample.secret.foo.two PMID: 29.0.1002
+ value 2
+pmGetPMNSLocation() -> Remote
+pmLookupName: request_names -> [0] sample.bin
+__pmSendNameList
+namelist dump: numnames = 1
+ name[0]: "sample.bin"
+__pmDecodeIDList
+IDlist dump: numids = 1
+ PMID[0]: ADDR 29.0.6
+pmLookupName: receive_names <- [0] 29.0.6
+pmLookupName(1, ...) -> 1
+SendNameReq: from=0 name="sample.secret.foo.one" pdu=PMNS_TRAVERSE subtype=0
+__pmDecodeNameList
+namelist dump: numnames = 1
+ name[0]: "sample.secret.foo.one"
+SendNameReq: from=0 name="my.derived" pdu=PMNS_TRAVERSE subtype=0
+SendNameReq: from=0 name="foo.bar" pdu=PMNS_TRAVERSE subtype=0
+Error: foo.bar: Unknown metric name
+SendNameReq: from=0 name="sample.secret.foo.two" pdu=PMNS_TRAVERSE subtype=0
+__pmDecodeNameList
+namelist dump: numnames = 1
+ name[0]: "sample.secret.foo.two"
+pmLookupName: request_names -> [0] sample.secret.foo.one [1] my.derived [2] sample.secret.foo.two
+__pmSendNameList
+namelist dump: numnames = 3
+ name[0]: "sample.secret.foo.one"
+ name[1]: "my.derived"
+ name[2]: "sample.secret.foo.two"
+__pmDecodeIDList
+IDlist dump: numids = 3
+ PMID[0]: ADDR 29.0.1001
+ PMID[1]: ADDR PM_ID_NULL
+ PMID[2]: ADDR 29.0.1002
+pmLookupName: receive_names <- [0] 29.0.1001 [1] PM_ID_NULL [2] 29.0.1002
+pmLookupName(3, ...) -> 3
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 29
+dbpmda> fetch sample.secret.foo.one, my.derived, sample.secret.foo.two
+PMID(s): 29.0.1001 511.0.1 29.0.1002
+pmResult dump from ADDR timestamp: 0.000000 HH:00:00.000 numpmid: 3
+ 29.0.1001 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1 1.4012985e-45 ADDR
+ 511.0.1 (my.derived): No values returned!
+ 29.0.1002 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2 2.8025969e-45 ADDR
+dbpmda>
+load(name=(null), dupok=0) lic case=0 fname=/var/lib/pcp/pmns/root
+loadascii(file=/var/lib/pcp/pmns/root)
+pmLoadNameSpace: active -> 29.0.123
+pmLoadNameSpace: base -> 29.0.115
+pmLoadNameSpace: bigid -> 29.0.1023
+pmLoadNameSpace: bin -> 29.0.103
+pmLoadNameSpace: bin -> 29.0.105
+pmLoadNameSpace: bin -> 29.0.107
+pmLoadNameSpace: bin -> 29.0.109
+pmLoadNameSpace: bin -> 29.0.111
+pmLoadNameSpace: bin -> 29.0.113
+pmLoadNameSpace: bin -> 29.0.121
+pmLoadNameSpace: bin -> 29.0.6
+pmLoadNameSpace: bin_ctr -> 29.0.104
+pmLoadNameSpace: bin_ctr -> 29.0.106
+pmLoadNameSpace: bin_ctr -> 29.0.108
+pmLoadNameSpace: bin_ctr -> 29.0.110
+pmLoadNameSpace: bin_ctr -> 29.0.112
+pmLoadNameSpace: bin_ctr -> 29.0.114
+pmLoadNameSpace: bogus_bin -> 29.0.51
+pmLoadNameSpace: bucket -> 29.0.48
+pmLoadNameSpace: byte_ctr -> 29.0.81
+pmLoadNameSpace: byte_rate -> 29.0.82
+pmLoadNameSpace: byte_rate_perhour -> 29.0.85
+pmLoadNameSpace: bytes_down -> 29.0.66
+pmLoadNameSpace: bytes_up -> 29.0.65
+pmLoadNameSpace: colour -> 29.0.5
+pmLoadNameSpace: control -> 29.0.0
+pmLoadNameSpace: control -> 29.0.61
+pmLoadNameSpace: count -> 29.0.79
+pmLoadNameSpace: count_down -> 29.0.68
+pmLoadNameSpace: count_up -> 29.0.67
+pmLoadNameSpace: counter -> 29.0.76
+pmLoadNameSpace: ctx -> 29.0.122
+pmLoadNameSpace: daemon_pid -> 29.0.1
+pmLoadNameSpace: darkness -> 29.0.92
+pmLoadNameSpace: datasize -> 29.0.91
+pmLoadNameSpace: deca -> 29.0.116
+pmLoadNameSpace: discrete -> 29.0.77
+pmLoadNameSpace: drift -> 29.0.7
+pmLoadNameSpace: end -> 29.0.125
+pmLoadNameSpace: error_check -> 29.0.75
+pmLoadNameSpace: error_code -> 29.0.74
+pmLoadNameSpace: gradient -> 29.0.73
+pmLoadNameSpace: hecto -> 29.0.117
+pmLoadNameSpace: highres_records -> 29.0.139
+pmLoadNameSpace: hullo -> 29.0.31
+pmLoadNameSpace: hullo -> 29.0.34
+pmLoadNameSpace: hundred -> 29.0.100
+pmLoadNameSpace: hundred -> 29.0.12
+pmLoadNameSpace: hundred -> 29.0.17
+pmLoadNameSpace: hundred -> 29.0.22
+pmLoadNameSpace: hundred -> 29.0.27
+pmLoadNameSpace: hundred -> 29.0.95
+pmLoadNameSpace: indom -> 29.0.88
+pmLoadNameSpace: instant -> 29.0.78
+pmLoadNameSpace: int -> 29.0.80
+pmLoadNameSpace: kbyte_ctr -> 29.0.83
+pmLoadNameSpace: kbyte_rate -> 29.0.84
+pmLoadNameSpace: kilo -> 29.0.118
+pmLoadNameSpace: lights -> 29.0.46
+pmLoadNameSpace: load -> 29.0.4
+pmLoadNameSpace: long -> 29.0.57
+pmLoadNameSpace: longlong -> 29.0.59
+pmLoadNameSpace: magnitude -> 29.0.47
+pmLoadNameSpace: mega -> 29.0.119
+pmLoadNameSpace: metric -> 29.0.86
+pmLoadNameSpace: million -> 29.0.101
+pmLoadNameSpace: million -> 29.0.13
+pmLoadNameSpace: million -> 29.0.18
+pmLoadNameSpace: million -> 29.0.23
+pmLoadNameSpace: million -> 29.0.28
+pmLoadNameSpace: million -> 29.0.96
+pmLoadNameSpace: milliseconds -> 29.0.3
+pmLoadNameSpace: mirage -> 29.0.37
+pmLoadNameSpace: mirage_longlong -> 29.0.38
+pmLoadNameSpace: needprofile -> 29.0.49
+pmLoadNameSpace: no_indom_records -> 29.0.137
+pmLoadNameSpace: noinst -> 29.0.9
+pmLoadNameSpace: none_up -> 29.0.71
+pmLoadNameSpace: nosupport -> 29.0.55
+pmLoadNameSpace: not_ready -> 29.0.56
+pmLoadNameSpace: novalues -> 29.0.138
+pmLoadNameSpace: null -> 29.0.30
+pmLoadNameSpace: null -> 29.0.33
+pmLoadNameSpace: one -> 29.0.10
+pmLoadNameSpace: one -> 29.0.15
+pmLoadNameSpace: one -> 29.0.20
+pmLoadNameSpace: one -> 29.0.25
+pmLoadNameSpace: one -> 29.0.52
+pmLoadNameSpace: one -> 29.0.93
+pmLoadNameSpace: one -> 29.0.98
+pmLoadNameSpace: param_32 -> 29.0.128
+pmLoadNameSpace: param_64 -> 29.0.130
+pmLoadNameSpace: param_aggregate -> 29.0.135
+pmLoadNameSpace: param_double -> 29.0.133
+pmLoadNameSpace: param_float -> 29.0.132
+pmLoadNameSpace: param_string -> 29.0.134
+pmLoadNameSpace: param_u32 -> 29.0.129
+pmLoadNameSpace: param_u64 -> 29.0.131
+pmLoadNameSpace: part_bin -> 29.0.50
+pmLoadNameSpace: pdu -> 29.0.40
+pmLoadNameSpace: pdu -> 29.0.43
+pmLoadNameSpace: rapid -> 29.0.64
+pmLoadNameSpace: records -> 29.0.136
+pmLoadNameSpace: recv_pdu -> 29.0.41
+pmLoadNameSpace: recv_pdu -> 29.0.44
+pmLoadNameSpace: reset -> 29.0.126
+pmLoadNameSpace: reset_highres -> 29.0.140
+pmLoadNameSpace: seconds -> 29.0.2
+pmLoadNameSpace: secret -> 29.*.*
+pmLoadNameSpace: sem -> 29.0.89
+pmLoadNameSpace: start -> 29.0.124
+pmLoadNameSpace: step -> 29.0.8
+pmLoadNameSpace: step_counter -> 29.0.63
+pmLoadNameSpace: sysinfo -> 29.0.39
+pmLoadNameSpace: ten -> 29.0.11
+pmLoadNameSpace: ten -> 29.0.16
+pmLoadNameSpace: ten -> 29.0.21
+pmLoadNameSpace: ten -> 29.0.26
+pmLoadNameSpace: ten -> 29.0.94
+pmLoadNameSpace: ten -> 29.0.99
+pmLoadNameSpace: time_up_nanosecs -> 29.0.70
+pmLoadNameSpace: time_up_secs -> 29.0.69
+pmLoadNameSpace: two -> 29.0.53
+pmLoadNameSpace: type -> 29.0.127
+pmLoadNameSpace: type -> 29.0.87
+pmLoadNameSpace: ulong -> 29.0.58
+pmLoadNameSpace: ulonglong -> 29.0.60
+pmLoadNameSpace: units -> 29.0.90
+pmLoadNameSpace: unknown -> 29.0.54
+pmLoadNameSpace: value -> 29.0.62
+pmLoadNameSpace: value -> 29.0.72
+pmLoadNameSpace: version -> 29.0.120
+pmLoadNameSpace: write_me -> 29.0.102
+pmLoadNameSpace: write_me -> 29.0.14
+pmLoadNameSpace: write_me -> 29.0.19
+pmLoadNameSpace: write_me -> 29.0.24
+pmLoadNameSpace: write_me -> 29.0.29
+pmLoadNameSpace: write_me -> 29.0.32
+pmLoadNameSpace: write_me -> 29.0.35
+pmLoadNameSpace: write_me -> 29.0.36
+pmLoadNameSpace: write_me -> 29.0.97
+pmLoadNameSpace: xmit_pdu -> 29.0.42
+pmLoadNameSpace: xmit_pdu -> 29.0.45
+Loaded ASCII PMNS
+pmGetPMNSLocation() -> Local
+pmLookupName(1, ...) using local PMNS returns 1 and ...
+ name[0]: "sample.bin" PMID: ADDR 29.0.6
+pmLookupName(1, ...) -> 1
+pmLookupName(1, ...) using local PMNS returns 1 and ...
+ name[0]: "sample.secret.foo.one" PMID: ADDR 29.*.*
+pmLookupName(1, ...) -> 1
+__pmSendNameList
+namelist dump: numnames = 1
+ name[0]: "sample.secret.foo.one"
+__pmDecodeIDList
+IDlist dump: numids = 1
+ PMID[0]: ADDR 29.0.1001
+pmLookupName(1, ...) using local PMNS returns 0 and ...
+ name[0]: "my.derived" PMID: ADDR PM_ID_NULL
+pmLookupName(1, ...) -> 1
+pmLookupName(1, ...) using local PMNS returns 1 and ...
+ name[0]: "sample.secret.foo.two" PMID: ADDR 29.*.*
+pmLookupName(1, ...) -> 1
+__pmSendNameList
+namelist dump: numnames = 1
+ name[0]: "sample.secret.foo.two"
+__pmDecodeIDList
+IDlist dump: numids = 1
+ PMID[0]: ADDR 29.0.1002
diff --git a/qa/510 b/qa/510
new file mode 100755
index 0000000..834928a
--- /dev/null
+++ b/qa/510
@@ -0,0 +1,65 @@
+#!/bin/sh
+# PCP QA Test No. 510
+# pmlogger -Dall calls __pmDumpResult() which fails for usage with
+# pmlc control requests
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup" 0 1 2 3 15
+needclean=true
+
+_cleanup()
+{
+ if $needclean
+ then
+ if [ -s $PCP_PMLOGGERCONTROL_PATH.$seq ]
+ then
+ $sudo rm -f $PCP_PMLOGGERCONTROL_PATH
+ $sudo mv $PCP_PMLOGGERCONTROL_PATH.$seq $PCP_PMLOGGERCONTROL_PATH
+ fi
+ needclean=false
+ _restore_primary_logger
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_filter()
+{
+ sed \
+ -e 's/Version [0-9].*/Version VERSION/'
+}
+
+# stop primary logger, add -Dall to config file and restart pmlogger
+$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
+sed -e '/^LOCALHOSTNAME/s/$/ -Dall/' <$PCP_PMLOGGERCONTROL_PATH >$tmp.control
+$sudo mv $PCP_PMLOGGERCONTROL_PATH $PCP_PMLOGGERCONTROL_PATH.$seq
+$sudo mv $tmp.control $PCP_PMLOGGERCONTROL_PATH
+_writable_primary_logger
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+# real QA test starts here
+pmlc -ie <<End-of-File | _filter
+connect primary
+query sample.event
+log mandatory on once sample.event.records
+query sample.event
+End-of-File
+
+# success, all done
+status=0
+exit
diff --git a/qa/510.out b/qa/510.out
new file mode 100644
index 0000000..583eac4
--- /dev/null
+++ b/qa/510.out
@@ -0,0 +1,121 @@
+QA output created by 510
+Starting pmcd ...
+Starting pmlogger ...
+Performance Co-Pilot Logger Control (pmlc), Version VERSION
+
+pmlc commands
+
+ show loggers [@<host>] display <pid>s of running pmloggers
+ connect _logger_id [@<host>] connect to designated pmlogger
+ status information about connected pmlogger
+ query metric-list show logging state of metrics
+ new volume start a new log volume
+
+ log { mandatory | advisory } on <interval> _metric-list
+ log { mandatory | advisory } off _metric-list
+ log mandatory maybe _metric-list
+
+ timezone local|logger|'<timezone>' change reporting timezone
+ help print this help message
+ quit exit from pmlc
+
+ _logger_id is primary | <pid> | port <n>
+ _metric-list is _metric-spec | { _metric-spec ... }
+ _metric-spec is <metric-name> | <metric-name> [ <instance> ... ]
+
+pmlc> connect primary
+pmlc> query sample.event
+sample.event.records
+ adv off nl [0 or "fungus"]
+ adv off nl [1 or "bogus"]
+
+sample.event.highres_records
+ adv off nl [0 or "fungus"]
+ adv off nl [1 or "bogus"]
+
+sample.event.no_indom_records
+ adv off nl
+
+sample.event.reset
+ adv off nl
+
+sample.event.reset_highres
+ adv off nl
+
+sample.event.type
+ adv off nl
+
+sample.event.param_32
+ adv off nl
+
+sample.event.param_u32
+ adv off nl
+
+sample.event.param_64
+ adv off nl
+
+sample.event.param_u64
+ adv off nl
+
+sample.event.param_float
+ adv off nl
+
+sample.event.param_double
+ adv off nl
+
+sample.event.param_string
+ adv off nl
+
+sample.event.param_aggregate
+ adv off nl
+
+pmlc> log mandatory on once sample.event.records
+pmlc> query sample.event
+sample.event.records
+ mand on once [0 or "fungus"]
+ mand on once [1 or "bogus"]
+
+sample.event.highres_records
+ adv off nl [0 or "fungus"]
+ adv off nl [1 or "bogus"]
+
+sample.event.no_indom_records
+ adv off nl
+
+sample.event.reset
+ adv off nl
+
+sample.event.reset_highres
+ adv off nl
+
+sample.event.type
+ adv off nl
+
+sample.event.param_32
+ adv off nl
+
+sample.event.param_u32
+ adv off nl
+
+sample.event.param_64
+ adv off nl
+
+sample.event.param_u64
+ adv off nl
+
+sample.event.param_float
+ adv off nl
+
+sample.event.param_double
+ adv off nl
+
+sample.event.param_string
+ adv off nl
+
+sample.event.param_aggregate
+ adv off nl
+
+pmlc>
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/511 b/qa/511
new file mode 100755
index 0000000..f5be26c
--- /dev/null
+++ b/qa/511
@@ -0,0 +1,88 @@
+#!/bin/sh
+# PCP QA Test No. 511
+#
+# Exercise sar2pcp for RH BZ 859117
+# This may prove too optimistic (asking sadf to replay different sar
+# files, that sar generated ... backwards compatibility much?) - if
+# thats the case, we'll have to special case things.
+#
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which sadf >/dev/null 2>&1 || _notrun "sadf not installed (sysstat package)"
+[ $PCP_VER -ge 3610 ] || _notrun "Installed sar2pcp is too old"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+logcheck()
+{
+ safile="$1"
+ pcplog="$2"
+
+ # should be no errors/warnings and pcp tools should also not fail
+ pmdumplog -z -l $pcplog >>$seq.full
+ [ $? -eq 0 ] && echo "pmdumplog approved of the $safile conversion"
+
+ # this'll visit and examine in detail every single stored result,
+ # as well as all metadata associates with the generated archive.
+ pmlogsummary $pcplog >>$seq.full
+ [ $? -eq 0 ] && echo "pmlogsummary approved of the $safile conversion"
+}
+
+# backwards compatibility route - silence is golden
+silence()
+{
+ safile="$1"
+ echo "sar2pcp thinks $safile is going well so far"
+ echo "pmdumplog approved of the $safile conversion"
+ echo "pmlogsummary approved of the $safile conversion"
+}
+
+# real QA test starts here
+cd $here
+rm -f $seq.full
+
+for sadist in \
+ 859117-rhel5.bin 859117-rhel5.xml f16-sa20.bin \
+ fche-csb6-rhel6.bin fche-csb6-rhel6.xml \
+ rhel5-sa20.bin smash-rhel5.xml smash-rhel6.xml
+do
+ safile="sadist/$sadist"
+ echo "==> Checking $safile" | tee -a $seq.full
+ pcplog=$tmp.pcplog
+ sar2pcp $safile $pcplog > $tmp.out 2>&1
+ sts=$?
+
+ # this seems to be a common sadf fail message;
+ # happens when the installed sysutils is old:
+ grep 'Invalid system activity file' $tmp.out >/dev/null
+ if [ $? -eq 0 ]
+ then
+ echo "$safile is not parsable by the installed sysutils" >>$seq.full
+ silence $safile
+ else
+ if [ $sts -eq 0 ]
+ then
+ echo "sar2pcp thinks $safile is going well so far"
+ logcheck $safile $pcplog
+ else
+ echo "sar2pcp failed ..."
+ cat $tmp.out
+ fi
+ fi
+ rm -f $tmp.pcplog.*
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/511.out b/qa/511.out
new file mode 100644
index 0000000..f200d69
--- /dev/null
+++ b/qa/511.out
@@ -0,0 +1,33 @@
+QA output created by 511
+==> Checking sadist/859117-rhel5.bin
+sar2pcp thinks sadist/859117-rhel5.bin is going well so far
+pmdumplog approved of the sadist/859117-rhel5.bin conversion
+pmlogsummary approved of the sadist/859117-rhel5.bin conversion
+==> Checking sadist/859117-rhel5.xml
+sar2pcp thinks sadist/859117-rhel5.xml is going well so far
+pmdumplog approved of the sadist/859117-rhel5.xml conversion
+pmlogsummary approved of the sadist/859117-rhel5.xml conversion
+==> Checking sadist/f16-sa20.bin
+sar2pcp thinks sadist/f16-sa20.bin is going well so far
+pmdumplog approved of the sadist/f16-sa20.bin conversion
+pmlogsummary approved of the sadist/f16-sa20.bin conversion
+==> Checking sadist/fche-csb6-rhel6.bin
+sar2pcp thinks sadist/fche-csb6-rhel6.bin is going well so far
+pmdumplog approved of the sadist/fche-csb6-rhel6.bin conversion
+pmlogsummary approved of the sadist/fche-csb6-rhel6.bin conversion
+==> Checking sadist/fche-csb6-rhel6.xml
+sar2pcp thinks sadist/fche-csb6-rhel6.xml is going well so far
+pmdumplog approved of the sadist/fche-csb6-rhel6.xml conversion
+pmlogsummary approved of the sadist/fche-csb6-rhel6.xml conversion
+==> Checking sadist/rhel5-sa20.bin
+sar2pcp thinks sadist/rhel5-sa20.bin is going well so far
+pmdumplog approved of the sadist/rhel5-sa20.bin conversion
+pmlogsummary approved of the sadist/rhel5-sa20.bin conversion
+==> Checking sadist/smash-rhel5.xml
+sar2pcp thinks sadist/smash-rhel5.xml is going well so far
+pmdumplog approved of the sadist/smash-rhel5.xml conversion
+pmlogsummary approved of the sadist/smash-rhel5.xml conversion
+==> Checking sadist/smash-rhel6.xml
+sar2pcp thinks sadist/smash-rhel6.xml is going well so far
+pmdumplog approved of the sadist/smash-rhel6.xml conversion
+pmlogsummary approved of the sadist/smash-rhel6.xml conversion
diff --git a/qa/512 b/qa/512
new file mode 100755
index 0000000..764c348
--- /dev/null
+++ b/qa/512
@@ -0,0 +1,166 @@
+#!/bin/sh
+# PCP QA Test No. 512
+# lock recursion depth for some pcp apps
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3809 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo "QA output created by $seq"
+
+src/check_fault_injection >/dev/null 2>&1 || \
+ _notrun "libpcp not built with fault injection & lock tracing enabled"
+
+if [ -d ../src ]
+then
+ SRC=../src
+else
+ _notrun "PCP source not found at ../src"
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# we need to run part of the make to get headers and libraries setup
+# in $SRC
+#
+for dir in include libpcp/src
+do
+ echo "$SRC/$dir ..." >>$seq.full
+ cd $SRC/$dir
+ if make 2>$tmp.err >>$here/$seq.full
+ then
+ cat $tmp.err >>$here/$seq.full
+ else
+ echo "Arrgh ... make failed in $SRC/$dir"
+ cat $tmp.err
+ status=1
+ exit
+ fi
+ cd $here
+done
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed -n \
+ -e '/count=/s/^[^ ][^ ]* //p' \
+ | LC_COLLATE=POSIX sort \
+ | uniq
+}
+
+_pre()
+{
+ if [ ! -d $1 ]
+ then
+ echo "_pre: botch: $1 does not exist"
+ else
+ cd $1
+ make clean >/dev/null 2>&1
+ # This is a gross hack ...
+ # need to over-ride LDFLAGS from the PCP builddefs so we search for
+ # libpcp.so in the libpcp_fault directory
+ #
+ if LCFLAGS=-DPM_MULTI_THREAD_DEBUG=1 LDFLAGS="-L../../src/libpcp_fault/src" make $2 >$tmp.out 2>&1
+ then
+ mv $2 $2.debug
+ make clean >/dev/null 2>&1
+ else
+ echo "_pre: botch: make failed"
+ cat $tmp.out
+ fi
+ cd $here
+ fi
+}
+
+_post()
+{
+ if [ ! -d $1 ]
+ then
+ echo "_post: botch: $1 does not exist"
+ else
+ cd $1
+ rm -f $2.debug
+ cd $here
+ fi
+}
+
+# real QA test starts here
+export LD_PRELOAD=$PCP_LIB_DIR/libpcp_fault.so
+
+
+echo "== pminfo ==" | tee -a $seq.full
+_pre $SRC/pminfo pminfo
+$SRC/pminfo/pminfo.debug -v -Dlock >/dev/null 2>$tmp.trace
+_post $SRC/pminfo pminfo
+_filter <$tmp.trace
+
+echo | tee -a $seq.full
+echo "== pmlogger ==" | tee -a $seq.full
+sed -e 's/1 sec/50 msec/' <src/config.foo >$tmp.config
+_pre $SRC/pmlogger/src pmlogger
+$SRC/pmlogger/src/pmlogger.debug -Dlock -c $tmp.config -s 20 -l $tmp.log $tmp
+_post $SRC/pmlogger/src pmlogger
+_filter <$tmp.log
+
+echo | tee -a $seq.full
+echo "== pmlogextract ==" | tee -a $seq.full
+for arch in a b c
+do
+ for i in 0 index meta
+ do
+ cp src/foo.$i $tmp-$arch.$i
+ done
+done
+_pre $SRC/pmlogextract pmlogextract
+$SRC/pmlogextract/pmlogextract.debug -Dlock $tmp-a $tmp-b $tmp-c $tmp-out 2>$tmp.trace
+_post $SRC/pmlogextract pmlogextract
+_filter <$tmp.trace
+
+echo | tee -a $seq.full
+echo "== pmdumplog ==" | tee -a $seq.full
+_pre $SRC/pmdumplog pmdumplog
+$SRC/pmdumplog/pmdumplog.debug -a -Dlock $tmp-out >$tmp.trace 2>&1
+_post $SRC/pmdumplog pmdumplog
+_filter <$tmp.trace
+
+echo | tee -a $seq.full
+echo "== dbpmda ==" | tee -a $seq.full
+_pre $SRC/dbpmda/src dbpmda
+# based on QA 137
+$SRC/dbpmda/src/dbpmda.debug -Dlock -n $PCP_PMDAS_DIR/simple/root -ie >$tmp.trace 2>&1 <<End-of-File
+open dso $PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX simple_init 253
+getdesc on
+desc simple.numfetch
+fetch simple.numfetch
+desc simple.color
+fetch simple.color
+instance 253.0
+open pipe $PCP_PMDAS_DIR/simple/pmdasimple -d 253
+desc simple.numfetch
+fetch simple.numfetch
+desc simple.color
+fetch simple.color
+instance 253.0
+End-of-File
+_post $SRC/dbpmda/src dbpmda
+_filter <$tmp.trace
+
+
+# success, all done
+exit
diff --git a/qa/512.out.1 b/qa/512.out.1
new file mode 100644
index 0000000..c45e1ac
--- /dev/null
+++ b/qa/512.out.1
@@ -0,0 +1,28 @@
+QA output created by 512
+== pminfo ==
+lock(global_libpcp) [count=1]
+lock(global_libpcp) [count=2]
+unlock(global_libpcp) [count=2]
+unlock(global_libpcp) [count=3]
+
+== pmlogger ==
+lock(global_libpcp) [count=1]
+lock(global_libpcp) [count=2]
+unlock(global_libpcp) [count=2]
+unlock(global_libpcp) [count=3]
+
+== pmlogextract ==
+lock(global_libpcp) [count=1]
+unlock(global_libpcp) [count=2]
+
+== pmdumplog ==
+lock(ctx 0) [count=1]
+lock(global_libpcp) [count=1]
+unlock(ctx 0) [count=2]
+unlock(global_libpcp) [count=2]
+
+== dbpmda ==
+lock(ctx 0) [count=1]
+lock(global_libpcp) [count=1]
+unlock(ctx 0) [count=2]
+unlock(global_libpcp) [count=2]
diff --git a/qa/512.out.2 b/qa/512.out.2
new file mode 100644
index 0000000..cbdf4e1
--- /dev/null
+++ b/qa/512.out.2
@@ -0,0 +1,30 @@
+QA output created by 512
+== pminfo ==
+lock(global_libpcp) [count=1]
+lock(global_libpcp) [count=2]
+unlock(global_libpcp) [count=2]
+unlock(global_libpcp) [count=3]
+
+== pmlogger ==
+lock(ctx 0) [count=1]
+lock(global_libpcp) [count=1]
+lock(global_libpcp) [count=2]
+unlock(ctx 0) [count=2]
+unlock(global_libpcp) [count=2]
+unlock(global_libpcp) [count=3]
+
+== pmlogextract ==
+lock(global_libpcp) [count=1]
+unlock(global_libpcp) [count=2]
+
+== pmdumplog ==
+lock(ctx 0) [count=1]
+lock(global_libpcp) [count=1]
+unlock(ctx 0) [count=2]
+unlock(global_libpcp) [count=2]
+
+== dbpmda ==
+lock(ctx 0) [count=1]
+lock(global_libpcp) [count=1]
+unlock(ctx 0) [count=2]
+unlock(global_libpcp) [count=2]
diff --git a/qa/513 b/qa/513
new file mode 100755
index 0000000..38c5945
--- /dev/null
+++ b/qa/513
@@ -0,0 +1,25 @@
+#!/bin/sh
+# PCP QA Test No. 513
+# Verify handling of corrupt PDUs
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+rm -f $seq.out $seq.full
+if [ $PCP_VER -ge 3800 ]; then
+ ln $seq.out.2 $seq.out
+else
+ ln $seq.out.1 $seq.out
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_run_valgrind src/pducrash
diff --git a/qa/513.out.1 b/qa/513.out.1
new file mode 100644
index 0000000..43d0c84
--- /dev/null
+++ b/qa/513.out.1
@@ -0,0 +1,196 @@
+QA output created by 513
+=== std out ===
+=== std err ===
+[cred] checking all-zeroes structure
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[cred] checking large numcred field
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[cred] checking negative numcred field
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[cred] checking access beyond buffer
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[error] checking all-zeroes structure
+ __pmDecodeError: sts = -12366 (IPC protocol failure)
+[error] checking all-zeroes extended structure
+ __pmDecodeXtendError: sts = -12366 (IPC protocol failure)
+[error] checking access beyond buffer
+ __pmDecodeError: sts = -12366 (IPC protocol failure)
+[error] checking access beyond extended buffer
+ __pmDecodeXtendError: sts = -12366 (IPC protocol failure)
+[profile] checking all-zeroes structure
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking large numprof field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking negative numprof field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking access beyond basic buffer
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking large numinst field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking negative numinst field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking access beyond extended buffer
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[fetch] checking all-zeroes structure
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[fetch] checking large numpmid field
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[fetch] checking negative numpmid field
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[fetch] checking access beyond buffer
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[desc_req] checking all-zeroes structure
+ __pmDecodeDescReq: sts = -12366 (IPC protocol failure)
+[desc_req] checking access beyond buffer
+ __pmDecodeDescReq: sts = -12366 (IPC protocol failure)
+[desc] checking all-zeroes structure
+ __pmDecodeDesc: sts = -12366 (IPC protocol failure)
+[desc] checking access beyond buffer
+ __pmDecodeDesc: sts = -12366 (IPC protocol failure)
+[instance_req] checking all-zeroes structure
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking large namelen field
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking negative namelen field
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking access beyond basic buffer
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking access beyond extended buffer
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance] checking all-zeroes structure
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking large numinst field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking negative numinst field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking access beyond basic buffer
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking large namelen field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking negative namelen field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking access beyond extended buffer
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking all-zeroes structure
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking large numids field
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking negative numids field
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking access beyond buffer
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking all-zeroes structure
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large numnames field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative numnames field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large nstrbytes field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative nstrbytes field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking access beyond basic buffer
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large namelen field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative namelen field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking access beyond extended buffer
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large namelen field (+statuslist)
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative namelen field (+statuslist)
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking access beyond extended buffer (+statuslist)
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_child] checking all-zeroes structure
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking large namelen field
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking negative namelen field
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking access beyond basic buffer
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking access beyond extended buffer
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking all-zeroes structure
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking large namelen field
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking negative namelen field
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking access beyond basic buffer
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking access beyond extended buffer
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[log_control] checking all-zeroes structure
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking large numpmid field
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking negative numpmid field
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking access beyond basic buffer
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking large numval field
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking access beyond extended buffer
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_status] checking all-zeroes structure
+ __pmDecodeLogStatus: sts = -12366 (IPC protocol failure)
+[log_status] checking access beyond buffer
+ __pmDecodeLogStatus: sts = -12366 (IPC protocol failure)
+[log_request] checking all-zeroes structure
+ __pmDecodeLogRequest: sts = -12366 (IPC protocol failure)
+[log_request] checking access beyond buffer
+ __pmDecodeLogRequest: sts = -12366 (IPC protocol failure)
+[result] checking all-zeroes structure
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking large numpmid field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking negative numpmid field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking access beyond basic buffer
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking large numval field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking negative numval field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking access beyond extended buffer
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking insitu valfmt field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking non-insitu valfmt field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking access beyond non-insitu valfmt field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[text_req] checking all-zeroes structure
+ __pmDecodeTextReq: sts = -12366 (IPC protocol failure)
+[text_req] checking access beyond buffer
+ __pmDecodeTextReq: sts = -12366 (IPC protocol failure)
+[text] checking all-zeroes structure
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[text] checking large buflen field
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[text] checking negative buflen field
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[text] checking access beyond buffer
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[trace_ack] checking all-zeroes structure
+ __pmtracedecodeack: sts = -12006 (IPC protocol failure)
+[trace_ack] checking access beyond buffer
+ __pmtracedecodeack: sts = -12006 (IPC protocol failure)
+[trace_data] checking all-zeroes structure
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+[trace_data] checking large taglen field
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+[trace_data] checking negative taglen field
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+[trace_data] checking access beyond buffer
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/pducrash
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/513.out.2 b/qa/513.out.2
new file mode 100644
index 0000000..9732e8c
--- /dev/null
+++ b/qa/513.out.2
@@ -0,0 +1,204 @@
+QA output created by 513
+=== std out ===
+=== std err ===
+[cred] checking all-zeroes structure
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[cred] checking large numcred field
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[cred] checking negative numcred field
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[cred] checking access beyond buffer
+ __pmDecodeCreds: sts = -12366 (IPC protocol failure)
+[error] checking all-zeroes structure
+ __pmDecodeError: sts = -12366 (IPC protocol failure)
+[error] checking all-zeroes extended structure
+ __pmDecodeXtendError: sts = -12366 (IPC protocol failure)
+[error] checking access beyond buffer
+ __pmDecodeError: sts = -12366 (IPC protocol failure)
+[error] checking access beyond extended buffer
+ __pmDecodeXtendError: sts = -12366 (IPC protocol failure)
+[profile] checking all-zeroes structure
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking large numprof field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking negative numprof field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking access beyond basic buffer
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking large numinst field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking negative numinst field
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[profile] checking access beyond extended buffer
+ __pmDecodeProfile: sts = -12366 (IPC protocol failure)
+[fetch] checking all-zeroes structure
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[fetch] checking large numpmid field
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[fetch] checking negative numpmid field
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[fetch] checking access beyond buffer
+ __pmDecodeFetch: sts = -12366 (IPC protocol failure)
+[desc_req] checking all-zeroes structure
+ __pmDecodeDescReq: sts = -12366 (IPC protocol failure)
+[desc_req] checking access beyond buffer
+ __pmDecodeDescReq: sts = -12366 (IPC protocol failure)
+[desc] checking all-zeroes structure
+ __pmDecodeDesc: sts = -12366 (IPC protocol failure)
+[desc] checking access beyond buffer
+ __pmDecodeDesc: sts = -12366 (IPC protocol failure)
+[instance_req] checking all-zeroes structure
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking large namelen field
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking negative namelen field
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking access beyond basic buffer
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance_req] checking access beyond extended buffer
+ __pmDecodeInstanceReq: sts = -12366 (IPC protocol failure)
+[instance] checking all-zeroes structure
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking large numinst field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking negative numinst field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking access beyond basic buffer
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking large namelen field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking negative namelen field
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[instance] checking access beyond extended buffer
+ __pmDecodeInstance: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking all-zeroes structure
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking large numids field
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking negative numids field
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_ids] checking access beyond buffer
+ __pmDecodeIDList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking all-zeroes structure
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large numnames field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative numnames field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large nstrbytes field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative nstrbytes field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking access beyond basic buffer
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large namelen field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative namelen field
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking access beyond extended buffer
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking large namelen field (+statuslist)
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking negative namelen field (+statuslist)
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_names] checking access beyond extended buffer (+statuslist)
+ __pmDecodeNameList: sts = -12366 (IPC protocol failure)
+[pmns_child] checking all-zeroes structure
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking large namelen field
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking negative namelen field
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking access beyond basic buffer
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_child] checking access beyond extended buffer
+ __pmDecodeChildReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking all-zeroes structure
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking large namelen field
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking negative namelen field
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking access beyond basic buffer
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[pmns_traverse] checking access beyond extended buffer
+ __pmDecodeTraversePMNSReq: sts = -12366 (IPC protocol failure)
+[log_control] checking all-zeroes structure
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking large numpmid field
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking negative numpmid field
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking access beyond basic buffer
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking large numval field
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_control] checking access beyond extended buffer
+ __pmDecodeLogControl: sts = -12366 (IPC protocol failure)
+[log_status] checking all-zeroes structure
+ __pmDecodeLogStatus: sts = -12366 (IPC protocol failure)
+[log_status] checking access beyond buffer
+ __pmDecodeLogStatus: sts = -12366 (IPC protocol failure)
+[log_request] checking all-zeroes structure
+ __pmDecodeLogRequest: sts = -12366 (IPC protocol failure)
+[log_request] checking access beyond buffer
+ __pmDecodeLogRequest: sts = -12366 (IPC protocol failure)
+[result] checking all-zeroes structure
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking large numpmid field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking negative numpmid field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking access beyond basic buffer
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking large numval field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking negative numval field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking access beyond extended buffer
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking insitu valfmt field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking non-insitu valfmt field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[result] checking access beyond non-insitu valfmt field
+ __pmDecodeResult: sts = -12366 (IPC protocol failure)
+[text_req] checking all-zeroes structure
+ __pmDecodeTextReq: sts = -12366 (IPC protocol failure)
+[text_req] checking access beyond buffer
+ __pmDecodeTextReq: sts = -12366 (IPC protocol failure)
+[text] checking all-zeroes structure
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[text] checking large buflen field
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[text] checking negative buflen field
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[text] checking access beyond buffer
+ __pmDecodeText: sts = -12366 (IPC protocol failure)
+[trace_ack] checking all-zeroes structure
+ __pmtracedecodeack: sts = -12006 (IPC protocol failure)
+[trace_ack] checking access beyond buffer
+ __pmtracedecodeack: sts = -12006 (IPC protocol failure)
+[trace_data] checking all-zeroes structure
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+[trace_data] checking large taglen field
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+[trace_data] checking negative taglen field
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+[trace_data] checking access beyond buffer
+ __pmtracedecodedata: sts = -12006 (IPC protocol failure)
+[auth] checking all-zeroes structure
+ __pmDecodeAuth: sts = -12366 (IPC protocol failure)
+[auth] checking negative length
+ __pmDecodeAuth: sts = -12366 (IPC protocol failure)
+[auth] checking empty value
+ __pmDecodeAuth: sts = 0 (No error)
+[auth] checking access beyond limit
+ __pmDecodeAuth: sts = -12366 (IPC protocol failure)
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/pducrash
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/514 b/qa/514
new file mode 100755
index 0000000..510568e
--- /dev/null
+++ b/qa/514
@@ -0,0 +1,190 @@
+#!/bin/sh
+# PCP QA Test No. 514
+#
+# pmie - lots of expressions, checking pmie -d output and %v binding
+# - see also QA 520
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3702 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ if [ $PCP_VER -lt 3900 ]
+ then
+ ln $seq.out.2 $seq.out || exit 1
+ else
+ ln $seq.out.3 $seq.out || exit 1
+ fi
+fi
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+LOCALHOST=`hostname`
+
+case $PCP_PLATFORM
+in
+ irix|linux|solaris)
+ # same syslog options for Irix, Linux and OpenSolaris
+ SYSLOG_OPT='"-p daemon.info"'
+ ;;
+ darwin)
+ SYSLOG_OPT=''
+ ;;
+ *)
+ echo "Arrgh ... need syslog option for $PCP_PLATFORM"
+ exit 1
+ ;;
+esac
+
+SYSLOG=''
+for f in /var/adm/SYSLOG /var/log/daemon.log /var/log/messages /var/log/syslog /var/log/system.log
+do
+ if [ -f $f ]
+ then
+ SYSLOG=$f
+ break
+ fi
+done
+if [ -z "$SYSLOG" ]
+then
+ echo "Arrgh! Cannot find your syslog file"
+ exit 1
+fi
+
+_filter()
+{
+ sed \
+ -e "s/\([:@ ]\)$LOCALHOST/\1LOCALHOST/g" \
+ -e "s/\([:@ ]\)local:/\1LOCALHOST/g" \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/DATE [12][0-9][0-9][0-9]/DATE/' \
+ -e '/evaluator exiting/s/pmie([0-9][0-9]*)/pmie(PID)/' \
+ -e '/Performance Co-Pilot Inference Engine/s/Version .*/Version .../' \
+ -e 's/\[red] 1[0-9][0-9]/[red] >=100/' \
+ -e 's/\[green] 2[0-9][0-9]/[green] >=200/' \
+ -e 's/\[blue] 3[0-9][0-9]/[blue] >=300/'
+}
+
+_filter2()
+{
+ $PCP_AWK_PROG '
+$1 == "pmie:" { print; next }
+/failed: / { print; next }
+$1 == "initMetric:" { skip=1 }
+skip == 1 { if ($1 == "Rule:") skip = 0 }
+skip == 1 { next }
+ { print }' >$tmp.tmp
+ tr ' =' '\012' <$tmp.tmp \
+ | grep '0x' \
+ | $PCP_AWK_PROG >$tmp.sed '
+BEGIN { n = 0 }
+ { if (seen[$1] == 1) next
+ printf "s/%s/ADDR%03d/\n",$1,n
+ n++
+ seen[$1] = 1
+ }'
+ sed -f $tmp.sed <$tmp.tmp
+}
+
+cat <<End-of-File >$tmp.pmie
+some_inst sample.part_bin > 500 -> print "some > 500:" " [%i] %v";
+all_inst sample.part_bin > 0 -> shell "echo 'all > 0:'" " [%i] %v";
+some_sample hinv.ncpu @0..2 == hinv.ncpu -> syslog 10sec $SYSLOG_OPT "PCP QA $seq - please ignore: some sample ncpu equal" " [%i] %v";
+( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "arith %v";
+// true && true
+sample.long.one != 2 && ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean1 %v";
+// false && true
+sample.long.one <= 0 && ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean2 %v";
+// true && false
+sample.long.one < 9 && ! ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean3 %v";
+// false && false
+sample.long.one < 1 && ! ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean4 %v";
+// pmns error || true
+min_inst no_such_metric == 100 || sample.long.million > 0 -> print "error1 %v";
+// true || true
+min_inst sample.part_bin == 100 || ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean5:" " [%i] %v";
+// false || true
+// NOTE instance bindings here will be for the _left_ subexpression
+// (which is always false) ... this is odd but not unexpected
+max_inst sample.part_bin == 100 || ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean6:" " [%i] %v";
+// true || false
+sum_inst sample.part_bin > 500 || ! ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean7:" " [%i] %v";
+// false || false
+avg_inst(sample.part_bin) == 0 || ! ( sample.long.million + sample.long.one - sample.long.ten ) * sample.long.hundred / sample.long.ten >= 0 -> print "boolean8:" " [%i] %v";
+count_inst(sample.part_bin > 0) > 0 -> print "count_inst:" "[%i] %v";
+some_inst match_inst "bin-[12345]" sample.part_bin > 100 -> print "match_inst:" " [%i] %v";
+some_inst nomatch_inst "bin-[12345]" sample.part_bin > 200 -> print "nomatch_inst:" " [%i] %v";
+// rising, falling - see QA 515
+all_inst rate sample.bin == 0 -> print "rate:" " [%i] %v";
+66%_inst sample.colour >= 200 -> print "66%_inst:" " [%i] %v";
+all_sample sample.long.ten @0..2 == 10 -> print "all_sample: " " [%i] %v";
+60%_sample some_inst sample.part_bin #'bin-300' #'bin-500' #'bin-700' @0..1 >= 500 -> print "60%_sample: " " [%i] %v";
+min_sample sample.long.hundred @0..1 == 100 -> print "min_sample: " " [%i] %v";
+max_sample sample.long.hundred @0..1 == 100 -> print "max_sample: " " [%i] %v";
+sum_sample sample.bin #'bin-100' @0..3 == 400 -> print "sum_sample: " " [%i] %v";
+avg_sample sample.bin #'bin-200' @0..1 == 200 -> print "avg_sample: " " [%i] %v";
+count_sample(some_inst sample.bin #'bin-200' #'bin-300' #'bin-400' @0..2 == 300) == 3 -> print "count_sample: " " [%i] %v";
+min_inst sample.part_bin > 0 -> print "min_inst:" " @%h [%i] %v";
+max_inst sample.part_bin > 0 -> print "max_inst:" " @%h [%i] %v";
+sample.long.one == 1 -> shell "false" | print "false |: %v";
+sample.long.ten == 10 -> shell "true" & print "true &: %v";
+sample.long.hundred == 100 -> print "print |:" " %v" | print "bozo don't execute me!";
+
+// TODO at some other time ... alarm and stomp actions
+End-of-File
+
+# real QA test starts here
+cat <<End-of-File | pmie -t 250msec -d -Dappl1 >$tmp.out 2>$tmp.err &
+f $tmp.pmie
+l
+r 1sec
+v
+End-of-File
+
+wait
+
+echo >>$seq.full
+echo "pmie PID $!" >>$seq.full
+echo >>$seq.full
+echo "=== pmie output ===" >>$seq.full
+cat $tmp.out >>$seq.full
+echo >>$seq.full
+echo "=== pmie errors ===" >>$seq.full
+cat $tmp.err >>$seq.full
+
+_filter2 <$tmp.err | _filter
+_filter <$tmp.out
+
+echo
+echo "SYSLOG ..."
+$sudo tail -100 $SYSLOG >$tmp.tmp
+sed <$tmp.tmp -n \
+ -e 's/PCP QA '"$seq"'/PCP QA xxx/' \
+ -e '/ncpu equal/s/ [0-9][0-9]*/ N/g' \
+ -e 's/PCP QA xxx/PCP QA '"$seq"'/' \
+ -e '/\['$!']: PCP QA '"$seq"' - please ignore/{
+s/.*please ignore/.../
+p
+}' \
+| LC_COLLATE=POSIX sort -u
+
+echo >>$seq.full
+echo "=== tail SYSLOG ===" >>$seq.full
+cat $tmp.tmp >>$seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/514.out.1 b/qa/514.out.1
new file mode 100644
index 0000000..f95d498
--- /dev/null
+++ b/qa/514.out.1
@@ -0,0 +1,2430 @@
+QA output created by 514
+pmie: metric no_such_metric not in namespace for host LOCALHOST
+pmLookupName failed: Unknown metric name
+Rule: expr_1
+Expr dump @ ADDR000
+ op=0 (->) arg1=ADDR001 arg2=ADDR002 parent=(nil)
+ eval=rule metrics=ADDR003 ring=ADDR004
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR001
+.. op=54 (some_inst) arg1=ADDR005 arg2=(nil) parent=ADDR000
+.. eval=cndSome_inst metrics=ADDR003 ring=ADDR006
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR005
+.. .. op=34 (>) arg1=ADDR007 arg2=ADDR008 parent=ADDR001
+.. .. eval=cndGt_n_1 metrics=ADDR003 ring=ADDR009
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR007
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR005
+.. .. .. eval=cndFetch_all metrics=ADDR003 ring=ADDR010
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR008
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR005
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR011
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR011 500
+.. Expr dump @ ADDR002
+.. op=75 (print) arg1=ADDR012 arg2=(nil) parent=ADDR000
+.. eval=actPrint metrics=(nil) ring=ADDR013
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR012
+.. .. op=76 (<action arg node>) arg1=ADDR014 arg2=(nil) parent=ADDR002
+.. .. eval=actArg metrics=(nil) ring=ADDR015
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR014
+.. .. .. op=80 (<nop node>) arg1=ADDR016 arg2=(nil) parent=ADDR012
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR017
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR017 "some > 500:"
+.. .. .. .. Expr dump @ ADDR016
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR014
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR018
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR018 " [%i] %v"
+
+Rule: expr_2
+Expr dump @ ADDR019
+ op=0 (->) arg1=ADDR020 arg2=ADDR021 parent=(nil)
+ eval=rule metrics=ADDR022 ring=ADDR023
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR020
+.. op=51 (all_inst) arg1=ADDR024 arg2=(nil) parent=ADDR019
+.. eval=cndAll_inst metrics=ADDR022 ring=ADDR025
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR024
+.. .. op=34 (>) arg1=ADDR026 arg2=ADDR027 parent=ADDR020
+.. .. eval=cndGt_n_1 metrics=ADDR022 ring=ADDR028
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR026
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR024
+.. .. .. eval=cndFetch_all metrics=ADDR022 ring=ADDR029
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR027
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR024
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR030
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR030 0
+.. Expr dump @ ADDR021
+.. op=72 (shell) arg1=ADDR031 arg2=(nil) parent=ADDR019
+.. eval=actShell metrics=(nil) ring=ADDR032
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR031
+.. .. op=76 (<action arg node>) arg1=ADDR033 arg2=(nil) parent=ADDR021
+.. .. eval=actArg metrics=(nil) ring=ADDR034
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR033
+.. .. .. op=80 (<nop node>) arg1=ADDR035 arg2=(nil) parent=ADDR031
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR036
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=15
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR036 "echo 'all > 0:'"
+.. .. .. .. Expr dump @ ADDR035
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR033
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR037
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR037 " [%i] %v"
+
+Rule: expr_3
+Expr dump @ ADDR038
+ op=0 (->) arg1=ADDR039 arg2=ADDR040 parent=(nil)
+ eval=rule metrics=ADDR041 ring=ADDR042
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR039
+.. op=55 (some_sample) arg1=ADDR043 arg2=(nil) parent=ADDR038
+.. eval=cndSome_time metrics=ADDR041 ring=ADDR044
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR043
+.. .. op=30 (==) arg1=ADDR045 arg2=ADDR046 parent=ADDR039
+.. .. eval=cndEq_1_1 metrics=ADDR041 ring=ADDR047
+.. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR045
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR043
+.. .. .. eval=cndFetch_1 metrics=ADDR041 ring=ADDR048
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR046
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR043
+.. .. .. eval=cndFetch_1 metrics=ADDR049 ring=ADDR050
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. Expr dump @ ADDR040
+.. op=74 (syslog) arg1=ADDR051 arg2=ADDR052 parent=ADDR038
+.. eval=actSyslog metrics=(nil) ring=ADDR053
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR051
+.. .. op=76 (<action arg node>) arg1=ADDR054 arg2=ADDR055 parent=ADDR040
+.. .. eval=actArg metrics=(nil) ring=ADDR056
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR054
+.. .. .. op=80 (<nop node>) arg1=ADDR057 arg2=(nil) parent=ADDR051
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR058
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=50
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR058 "PCP QA 514 - please ignore: some sample ncpu equal"
+.. .. .. .. Expr dump @ ADDR057
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR054
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR059
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR059 " [%i] %v"
+.. .. .. Expr dump @ ADDR055
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR051
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR060
+.. .. .. valid=0 cardinality[H,I,T]=[0,0,0] tspan=0
+.. .. .. nsmpls=0 nvals=0 sem=UNKNOWN units=
+.. .. Expr dump @ ADDR052
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR040
+.. .. eval=(nil)() metrics=(nil) ring=ADDR061
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=sec
+.. .. smpls[0].ptr ADDR061 10
+
+Rule: expr_4
+Expr dump @ ADDR062
+ op=0 (->) arg1=ADDR063 arg2=ADDR064 parent=(nil)
+ eval=rule metrics=ADDR065 ring=ADDR066
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR063
+.. op=35 (>=) arg1=ADDR067 arg2=ADDR068 parent=ADDR062
+.. eval=cndGte_1_1 metrics=ADDR065 ring=ADDR069
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR067
+.. .. op=8 (/) arg1=ADDR070 arg2=ADDR071 parent=ADDR063
+.. .. eval=cndDiv_1_1 metrics=ADDR065 ring=ADDR072
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR070
+.. .. .. op=7 (*) arg1=ADDR073 arg2=ADDR074 parent=ADDR067
+.. .. .. eval=cndMul_1_1 metrics=ADDR065 ring=ADDR075
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR073
+.. .. .. .. op=6 (-) arg1=ADDR076 arg2=ADDR077 parent=ADDR070
+.. .. .. .. eval=cndSub_1_1 metrics=ADDR065 ring=ADDR078
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR076
+.. .. .. .. .. op=5 (+) arg1=ADDR079 arg2=ADDR080 parent=ADDR073
+.. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR065 ring=ADDR081
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR079
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR065 ring=ADDR082
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR080
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR083 ring=ADDR084
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR077
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR073
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR085 ring=ADDR086
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR074
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR070
+.. .. .. .. eval=cndFetch_1 metrics=ADDR087 ring=ADDR088
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR071
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR067
+.. .. .. eval=cndFetch_1 metrics=ADDR089 ring=ADDR090
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR068
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR063
+.. .. eval=(nil)() metrics=(nil) ring=ADDR091
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR091 0
+.. Expr dump @ ADDR064
+.. op=75 (print) arg1=ADDR092 arg2=(nil) parent=ADDR062
+.. eval=actPrint metrics=(nil) ring=ADDR093
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR092
+.. .. op=76 (<action arg node>) arg1=ADDR094 arg2=(nil) parent=ADDR064
+.. .. eval=actArg metrics=(nil) ring=ADDR095
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR094
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR092
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR096
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR096 "arith %v"
+
+Rule: expr_5
+Expr dump @ ADDR097
+ op=0 (->) arg1=ADDR098 arg2=ADDR099 parent=(nil)
+ eval=rule metrics=ADDR100 ring=ADDR101
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR098
+.. op=43 (&&) arg1=ADDR102 arg2=ADDR103 parent=ADDR097
+.. eval=cndAnd_1_1 metrics=ADDR100 ring=ADDR104
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR102
+.. .. op=31 (!=) arg1=ADDR105 arg2=ADDR106 parent=ADDR098
+.. .. eval=cndNeq_1_1 metrics=ADDR100 ring=ADDR107
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR105
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR102
+.. .. .. eval=cndFetch_1 metrics=ADDR100 ring=ADDR108
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR106
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR102
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR109
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR109 2
+.. .. Expr dump @ ADDR103
+.. .. op=35 (>=) arg1=ADDR110 arg2=ADDR111 parent=ADDR098
+.. .. eval=cndGte_1_1 metrics=ADDR112 ring=ADDR113
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR110
+.. .. .. op=8 (/) arg1=ADDR114 arg2=ADDR115 parent=ADDR103
+.. .. .. eval=cndDiv_1_1 metrics=ADDR112 ring=ADDR116
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR114
+.. .. .. .. op=7 (*) arg1=ADDR117 arg2=ADDR118 parent=ADDR110
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR112 ring=ADDR119
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR117
+.. .. .. .. .. op=6 (-) arg1=ADDR120 arg2=ADDR121 parent=ADDR114
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR112 ring=ADDR122
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR120
+.. .. .. .. .. .. op=5 (+) arg1=ADDR123 arg2=ADDR124 parent=ADDR117
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR112 ring=ADDR125
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR123
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR120
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR112 ring=ADDR126
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR124
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR120
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR127 ring=ADDR128
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR121
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR117
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR129 ring=ADDR130
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR118
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR114
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR131 ring=ADDR132
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR115
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR110
+.. .. .. .. eval=cndFetch_1 metrics=ADDR133 ring=ADDR134
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR111
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR103
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR135
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR135 0
+.. Expr dump @ ADDR099
+.. op=75 (print) arg1=ADDR136 arg2=(nil) parent=ADDR097
+.. eval=actPrint metrics=(nil) ring=ADDR137
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR136
+.. .. op=76 (<action arg node>) arg1=ADDR138 arg2=(nil) parent=ADDR099
+.. .. eval=actArg metrics=(nil) ring=ADDR139
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR138
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR136
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR140
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR140 "boolean1 %v"
+
+Rule: expr_6
+Expr dump @ ADDR141
+ op=0 (->) arg1=ADDR142 arg2=ADDR143 parent=(nil)
+ eval=rule metrics=ADDR144 ring=ADDR145
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR142
+.. op=43 (&&) arg1=ADDR146 arg2=ADDR147 parent=ADDR141
+.. eval=cndAnd_1_1 metrics=ADDR144 ring=ADDR148
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR146
+.. .. op=33 (<=) arg1=ADDR149 arg2=ADDR150 parent=ADDR142
+.. .. eval=cndLte_1_1 metrics=ADDR144 ring=ADDR151
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR149
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR146
+.. .. .. eval=cndFetch_1 metrics=ADDR144 ring=ADDR152
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR150
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR146
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR153
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR153 0
+.. .. Expr dump @ ADDR147
+.. .. op=35 (>=) arg1=ADDR154 arg2=ADDR155 parent=ADDR142
+.. .. eval=cndGte_1_1 metrics=ADDR156 ring=ADDR157
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR154
+.. .. .. op=8 (/) arg1=ADDR158 arg2=ADDR159 parent=ADDR147
+.. .. .. eval=cndDiv_1_1 metrics=ADDR156 ring=ADDR160
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR158
+.. .. .. .. op=7 (*) arg1=ADDR161 arg2=ADDR162 parent=ADDR154
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR156 ring=ADDR163
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR161
+.. .. .. .. .. op=6 (-) arg1=ADDR164 arg2=ADDR165 parent=ADDR158
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR156 ring=ADDR166
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR164
+.. .. .. .. .. .. op=5 (+) arg1=ADDR167 arg2=ADDR168 parent=ADDR161
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR156 ring=ADDR169
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR167
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR164
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR156 ring=ADDR170
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR168
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR164
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR171 ring=ADDR172
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR165
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR161
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR173 ring=ADDR174
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR162
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR158
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR175 ring=ADDR176
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR159
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR154
+.. .. .. .. eval=cndFetch_1 metrics=ADDR177 ring=ADDR178
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR155
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR147
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR179
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR179 0
+.. Expr dump @ ADDR143
+.. op=75 (print) arg1=ADDR180 arg2=(nil) parent=ADDR141
+.. eval=actPrint metrics=(nil) ring=ADDR181
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR180
+.. .. op=76 (<action arg node>) arg1=ADDR182 arg2=(nil) parent=ADDR143
+.. .. eval=actArg metrics=(nil) ring=ADDR183
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR182
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR180
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR184
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR184 "boolean2 %v"
+
+Rule: expr_7
+Expr dump @ ADDR185
+ op=0 (->) arg1=ADDR186 arg2=ADDR187 parent=(nil)
+ eval=rule metrics=ADDR188 ring=ADDR189
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR186
+.. op=43 (&&) arg1=ADDR190 arg2=ADDR191 parent=ADDR185
+.. eval=cndAnd_1_1 metrics=ADDR188 ring=ADDR192
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR190
+.. .. op=32 (<) arg1=ADDR193 arg2=ADDR194 parent=ADDR186
+.. .. eval=cndLt_1_1 metrics=ADDR188 ring=ADDR195
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR193
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. eval=cndFetch_1 metrics=ADDR188 ring=ADDR196
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR194
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR197
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR197 9
+.. .. Expr dump @ ADDR191
+.. .. op=40 (!) arg1=ADDR198 arg2=(nil) parent=ADDR186
+.. .. eval=cndNot_1 metrics=ADDR199 ring=ADDR200
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR198
+.. .. .. op=35 (>=) arg1=ADDR201 arg2=ADDR202 parent=ADDR191
+.. .. .. eval=cndGte_1_1 metrics=ADDR199 ring=ADDR203
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR201
+.. .. .. .. op=8 (/) arg1=ADDR204 arg2=ADDR205 parent=ADDR198
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR199 ring=ADDR206
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR204
+.. .. .. .. .. op=7 (*) arg1=ADDR207 arg2=ADDR208 parent=ADDR201
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR199 ring=ADDR209
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR207
+.. .. .. .. .. .. op=6 (-) arg1=ADDR210 arg2=ADDR211 parent=ADDR204
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR199 ring=ADDR212
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR210
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR213 arg2=ADDR214 parent=ADDR207
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR199 ring=ADDR215
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR213
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR210
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR199 ring=ADDR216
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR214
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR210
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR217 ring=ADDR218
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR211
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR207
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR219 ring=ADDR220
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR208
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR204
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR221 ring=ADDR222
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR205
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR201
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR223 ring=ADDR224
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR202
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR198
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR225
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR225 0
+.. Expr dump @ ADDR187
+.. op=75 (print) arg1=ADDR226 arg2=(nil) parent=ADDR185
+.. eval=actPrint metrics=(nil) ring=ADDR227
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR226
+.. .. op=76 (<action arg node>) arg1=ADDR228 arg2=(nil) parent=ADDR187
+.. .. eval=actArg metrics=(nil) ring=ADDR229
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR228
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR226
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR230
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR230 "boolean3 %v"
+
+Rule: expr_8
+Expr dump @ ADDR231
+ op=0 (->) arg1=ADDR232 arg2=ADDR233 parent=(nil)
+ eval=rule metrics=ADDR234 ring=ADDR235
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR232
+.. op=43 (&&) arg1=ADDR236 arg2=ADDR237 parent=ADDR231
+.. eval=cndAnd_1_1 metrics=ADDR234 ring=ADDR238
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR236
+.. .. op=32 (<) arg1=ADDR239 arg2=ADDR240 parent=ADDR232
+.. .. eval=cndLt_1_1 metrics=ADDR234 ring=ADDR241
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR239
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR236
+.. .. .. eval=cndFetch_1 metrics=ADDR234 ring=ADDR242
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR240
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR236
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR243
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR243 1
+.. .. Expr dump @ ADDR237
+.. .. op=40 (!) arg1=ADDR244 arg2=(nil) parent=ADDR232
+.. .. eval=cndNot_1 metrics=ADDR245 ring=ADDR246
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR244
+.. .. .. op=35 (>=) arg1=ADDR247 arg2=ADDR248 parent=ADDR237
+.. .. .. eval=cndGte_1_1 metrics=ADDR245 ring=ADDR249
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR247
+.. .. .. .. op=8 (/) arg1=ADDR250 arg2=ADDR251 parent=ADDR244
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR245 ring=ADDR252
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR250
+.. .. .. .. .. op=7 (*) arg1=ADDR253 arg2=ADDR254 parent=ADDR247
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR245 ring=ADDR255
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR253
+.. .. .. .. .. .. op=6 (-) arg1=ADDR256 arg2=ADDR257 parent=ADDR250
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR245 ring=ADDR258
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR256
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR259 arg2=ADDR260 parent=ADDR253
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR245 ring=ADDR261
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR259
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR256
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR245 ring=ADDR262
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR260
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR256
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR263 ring=ADDR264
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR257
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR253
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR265 ring=ADDR266
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR254
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR250
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR267 ring=ADDR268
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR251
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR247
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR269 ring=ADDR270
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR248
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR244
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR271
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR271 0
+.. Expr dump @ ADDR233
+.. op=75 (print) arg1=ADDR272 arg2=(nil) parent=ADDR231
+.. eval=actPrint metrics=(nil) ring=ADDR273
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR272
+.. .. op=76 (<action arg node>) arg1=ADDR274 arg2=(nil) parent=ADDR233
+.. .. eval=actArg metrics=(nil) ring=ADDR275
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR274
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR272
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR276
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR276 "boolean4 %v"
+
+Rule: expr_9
+Expr dump @ ADDR277
+ op=0 (->) arg1=ADDR278 arg2=ADDR279 parent=(nil)
+ eval=rule metrics=ADDR280 ring=ADDR281
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR278
+.. op=44 (||) arg1=ADDR282 arg2=ADDR283 parent=ADDR277
+.. eval=cndOr_n_1 metrics=ADDR280 ring=ADDR284
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR282
+.. .. op=30 (==) arg1=ADDR285 arg2=ADDR286 parent=ADDR278
+.. .. eval=cndEq_n_1 metrics=ADDR280 ring=ADDR287
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR285
+.. .. .. op=20 (min_inst) arg1=ADDR288 arg2=(nil) parent=ADDR282
+.. .. .. eval=cndMin_inst metrics=ADDR280 ring=ADDR289
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=UNKNOWN units=
+.. .. .. .. Expr dump @ ADDR288
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR285
+.. .. .. .. eval=cndFetch_1 metrics=ADDR280 ring=ADDR290
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=UNKNOWN units=
+.. .. .. Expr dump @ ADDR286
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR282
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR291
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR291 100
+.. .. Expr dump @ ADDR283
+.. .. op=34 (>) arg1=ADDR292 arg2=ADDR293 parent=ADDR278
+.. .. eval=cndGt_1_1 metrics=ADDR294 ring=ADDR295
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR292
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR283
+.. .. .. eval=cndFetch_1 metrics=ADDR294 ring=ADDR296
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR293
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR283
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR297
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR297 0
+.. Expr dump @ ADDR279
+.. op=75 (print) arg1=ADDR298 arg2=(nil) parent=ADDR277
+.. eval=actPrint metrics=(nil) ring=ADDR299
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR298
+.. .. op=76 (<action arg node>) arg1=ADDR300 arg2=(nil) parent=ADDR279
+.. .. eval=actArg metrics=(nil) ring=ADDR301
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR300
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR298
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR302
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR302 "error1 %v"
+
+Rule: expr_10
+Expr dump @ ADDR303
+ op=0 (->) arg1=ADDR304 arg2=ADDR305 parent=(nil)
+ eval=rule metrics=ADDR306 ring=ADDR307
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR304
+.. op=44 (||) arg1=ADDR308 arg2=ADDR309 parent=ADDR303
+.. eval=cndOr_n_1 metrics=ADDR306 ring=ADDR310
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR308
+.. .. op=30 (==) arg1=ADDR311 arg2=ADDR312 parent=ADDR304
+.. .. eval=cndEq_n_1 metrics=ADDR306 ring=ADDR313
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR311
+.. .. .. op=20 (min_inst) arg1=ADDR314 arg2=(nil) parent=ADDR308
+.. .. .. eval=cndMin_inst metrics=ADDR306 ring=ADDR315
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR314
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR311
+.. .. .. .. eval=cndFetch_all metrics=ADDR306 ring=ADDR316
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR312
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR308
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR317
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR317 100
+.. .. Expr dump @ ADDR309
+.. .. op=35 (>=) arg1=ADDR318 arg2=ADDR319 parent=ADDR304
+.. .. eval=cndGte_1_1 metrics=ADDR320 ring=ADDR321
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR318
+.. .. .. op=8 (/) arg1=ADDR322 arg2=ADDR323 parent=ADDR309
+.. .. .. eval=cndDiv_1_1 metrics=ADDR320 ring=ADDR324
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR322
+.. .. .. .. op=7 (*) arg1=ADDR325 arg2=ADDR326 parent=ADDR318
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR320 ring=ADDR327
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR325
+.. .. .. .. .. op=6 (-) arg1=ADDR328 arg2=ADDR329 parent=ADDR322
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR320 ring=ADDR330
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR328
+.. .. .. .. .. .. op=5 (+) arg1=ADDR331 arg2=ADDR332 parent=ADDR325
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR320 ring=ADDR333
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR331
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR328
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR320 ring=ADDR334
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR332
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR328
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR335 ring=ADDR336
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR329
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR325
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR337 ring=ADDR338
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR326
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR322
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR339 ring=ADDR340
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR323
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR318
+.. .. .. .. eval=cndFetch_1 metrics=ADDR341 ring=ADDR342
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR319
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR309
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR343
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR343 0
+.. Expr dump @ ADDR305
+.. op=75 (print) arg1=ADDR344 arg2=(nil) parent=ADDR303
+.. eval=actPrint metrics=(nil) ring=ADDR345
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR344
+.. .. op=76 (<action arg node>) arg1=ADDR346 arg2=(nil) parent=ADDR305
+.. .. eval=actArg metrics=(nil) ring=ADDR347
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR346
+.. .. .. op=80 (<nop node>) arg1=ADDR348 arg2=(nil) parent=ADDR344
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR349
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR349 "boolean5:"
+.. .. .. .. Expr dump @ ADDR348
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR346
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR350
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR350 " [%i] %v"
+
+Rule: expr_11
+Expr dump @ ADDR351
+ op=0 (->) arg1=ADDR352 arg2=ADDR353 parent=(nil)
+ eval=rule metrics=ADDR354 ring=ADDR355
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR352
+.. op=44 (||) arg1=ADDR356 arg2=ADDR357 parent=ADDR351
+.. eval=cndOr_n_1 metrics=ADDR354 ring=ADDR358
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR356
+.. .. op=30 (==) arg1=ADDR359 arg2=ADDR360 parent=ADDR352
+.. .. eval=cndEq_n_1 metrics=ADDR354 ring=ADDR361
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR359
+.. .. .. op=17 (max_inst) arg1=ADDR362 arg2=(nil) parent=ADDR356
+.. .. .. eval=cndMax_inst metrics=ADDR354 ring=ADDR363
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR362
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR359
+.. .. .. .. eval=cndFetch_all metrics=ADDR354 ring=ADDR364
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR360
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR356
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR365
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR365 100
+.. .. Expr dump @ ADDR357
+.. .. op=35 (>=) arg1=ADDR366 arg2=ADDR367 parent=ADDR352
+.. .. eval=cndGte_1_1 metrics=ADDR368 ring=ADDR369
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR366
+.. .. .. op=8 (/) arg1=ADDR370 arg2=ADDR371 parent=ADDR357
+.. .. .. eval=cndDiv_1_1 metrics=ADDR368 ring=ADDR372
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR370
+.. .. .. .. op=7 (*) arg1=ADDR373 arg2=ADDR374 parent=ADDR366
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR368 ring=ADDR375
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR373
+.. .. .. .. .. op=6 (-) arg1=ADDR376 arg2=ADDR377 parent=ADDR370
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR368 ring=ADDR378
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR376
+.. .. .. .. .. .. op=5 (+) arg1=ADDR379 arg2=ADDR380 parent=ADDR373
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR368 ring=ADDR381
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR379
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR376
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR368 ring=ADDR382
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR380
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR376
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR383 ring=ADDR384
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR377
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR373
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR385 ring=ADDR386
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR374
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR370
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR387 ring=ADDR388
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR371
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR366
+.. .. .. .. eval=cndFetch_1 metrics=ADDR389 ring=ADDR390
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR367
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR357
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR391
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR391 0
+.. Expr dump @ ADDR353
+.. op=75 (print) arg1=ADDR392 arg2=(nil) parent=ADDR351
+.. eval=actPrint metrics=(nil) ring=ADDR393
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR392
+.. .. op=76 (<action arg node>) arg1=ADDR394 arg2=(nil) parent=ADDR353
+.. .. eval=actArg metrics=(nil) ring=ADDR395
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR394
+.. .. .. op=80 (<nop node>) arg1=ADDR396 arg2=(nil) parent=ADDR392
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR397
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR397 "boolean6:"
+.. .. .. .. Expr dump @ ADDR396
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR394
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR398
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR398 " [%i] %v"
+
+Rule: expr_12
+Expr dump @ ADDR399
+ op=0 (->) arg1=ADDR400 arg2=ADDR401 parent=(nil)
+ eval=rule metrics=ADDR402 ring=ADDR403
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR400
+.. op=44 (||) arg1=ADDR404 arg2=ADDR405 parent=ADDR399
+.. eval=cndOr_n_1 metrics=ADDR402 ring=ADDR406
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR404
+.. .. op=34 (>) arg1=ADDR407 arg2=ADDR408 parent=ADDR400
+.. .. eval=cndGt_n_1 metrics=ADDR402 ring=ADDR409
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR407
+.. .. .. op=11 (sum_inst) arg1=ADDR410 arg2=(nil) parent=ADDR404
+.. .. .. eval=cndSum_inst metrics=ADDR402 ring=ADDR411
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR410
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR407
+.. .. .. .. eval=cndFetch_all metrics=ADDR402 ring=ADDR412
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR408
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR404
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR413
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR413 500
+.. .. Expr dump @ ADDR405
+.. .. op=40 (!) arg1=ADDR414 arg2=(nil) parent=ADDR400
+.. .. eval=cndNot_1 metrics=ADDR415 ring=ADDR416
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR414
+.. .. .. op=35 (>=) arg1=ADDR417 arg2=ADDR418 parent=ADDR405
+.. .. .. eval=cndGte_1_1 metrics=ADDR415 ring=ADDR419
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR417
+.. .. .. .. op=8 (/) arg1=ADDR420 arg2=ADDR421 parent=ADDR414
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR415 ring=ADDR422
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR420
+.. .. .. .. .. op=7 (*) arg1=ADDR423 arg2=ADDR424 parent=ADDR417
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR415 ring=ADDR425
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR423
+.. .. .. .. .. .. op=6 (-) arg1=ADDR426 arg2=ADDR427 parent=ADDR420
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR415 ring=ADDR428
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR426
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR429 arg2=ADDR430 parent=ADDR423
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR415 ring=ADDR431
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR429
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR426
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR415 ring=ADDR432
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR430
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR426
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR433 ring=ADDR434
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR427
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR423
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR435 ring=ADDR436
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR424
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR420
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR437 ring=ADDR438
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR421
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR417
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR439 ring=ADDR440
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR418
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR414
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR441
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR441 0
+.. Expr dump @ ADDR401
+.. op=75 (print) arg1=ADDR442 arg2=(nil) parent=ADDR399
+.. eval=actPrint metrics=(nil) ring=ADDR443
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR442
+.. .. op=76 (<action arg node>) arg1=ADDR444 arg2=(nil) parent=ADDR401
+.. .. eval=actArg metrics=(nil) ring=ADDR445
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR444
+.. .. .. op=80 (<nop node>) arg1=ADDR446 arg2=(nil) parent=ADDR442
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR447
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR447 "boolean7:"
+.. .. .. .. Expr dump @ ADDR446
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR444
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR448
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR448 " [%i] %v"
+
+Rule: expr_13
+Expr dump @ ADDR449
+ op=0 (->) arg1=ADDR450 arg2=ADDR451 parent=(nil)
+ eval=rule metrics=ADDR452 ring=ADDR453
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR450
+.. op=44 (||) arg1=ADDR454 arg2=ADDR455 parent=ADDR449
+.. eval=cndOr_n_1 metrics=ADDR452 ring=ADDR456
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR454
+.. .. op=30 (==) arg1=ADDR457 arg2=ADDR458 parent=ADDR450
+.. .. eval=cndEq_n_1 metrics=ADDR452 ring=ADDR459
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR457
+.. .. .. op=14 (avg_inst) arg1=ADDR460 arg2=(nil) parent=ADDR454
+.. .. .. eval=cndAvg_inst metrics=ADDR452 ring=ADDR461
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR460
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR457
+.. .. .. .. eval=cndFetch_all metrics=ADDR452 ring=ADDR462
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR458
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR454
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR463
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR463 0
+.. .. Expr dump @ ADDR455
+.. .. op=40 (!) arg1=ADDR464 arg2=(nil) parent=ADDR450
+.. .. eval=cndNot_1 metrics=ADDR465 ring=ADDR466
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR464
+.. .. .. op=35 (>=) arg1=ADDR467 arg2=ADDR468 parent=ADDR455
+.. .. .. eval=cndGte_1_1 metrics=ADDR465 ring=ADDR469
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR467
+.. .. .. .. op=8 (/) arg1=ADDR470 arg2=ADDR471 parent=ADDR464
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR465 ring=ADDR472
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR470
+.. .. .. .. .. op=7 (*) arg1=ADDR473 arg2=ADDR474 parent=ADDR467
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR465 ring=ADDR475
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR473
+.. .. .. .. .. .. op=6 (-) arg1=ADDR476 arg2=ADDR477 parent=ADDR470
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR465 ring=ADDR478
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR476
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR479 arg2=ADDR480 parent=ADDR473
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR465 ring=ADDR481
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR479
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR476
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR465 ring=ADDR482
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR480
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR476
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR483 ring=ADDR484
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR477
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR473
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR485 ring=ADDR486
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR474
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR470
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR487 ring=ADDR488
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR471
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR467
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR489 ring=ADDR490
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR468
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR464
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR491
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR491 0
+.. Expr dump @ ADDR451
+.. op=75 (print) arg1=ADDR492 arg2=(nil) parent=ADDR449
+.. eval=actPrint metrics=(nil) ring=ADDR493
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR492
+.. .. op=76 (<action arg node>) arg1=ADDR494 arg2=(nil) parent=ADDR451
+.. .. eval=actArg metrics=(nil) ring=ADDR495
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR494
+.. .. .. op=80 (<nop node>) arg1=ADDR496 arg2=(nil) parent=ADDR492
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR497
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR497 "boolean8:"
+.. .. .. .. Expr dump @ ADDR496
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR494
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR498
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR498 " [%i] %v"
+
+Rule: expr_14
+Expr dump @ ADDR499
+ op=0 (->) arg1=ADDR500 arg2=ADDR501 parent=(nil)
+ eval=rule metrics=ADDR502 ring=ADDR503
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR500
+.. op=34 (>) arg1=ADDR504 arg2=ADDR505 parent=ADDR499
+.. eval=cndGt_n_1 metrics=ADDR502 ring=ADDR506
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR504
+.. .. op=60 (count_inst) arg1=ADDR507 arg2=(nil) parent=ADDR500
+.. .. eval=cndCount_inst metrics=ADDR502 ring=ADDR508
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR507
+.. .. .. op=34 (>) arg1=ADDR509 arg2=ADDR510 parent=ADDR504
+.. .. .. eval=cndGt_n_1 metrics=ADDR502 ring=ADDR511
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR509
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR507
+.. .. .. .. eval=cndFetch_all metrics=ADDR502 ring=ADDR512
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR510
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR507
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR513
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR513 0
+.. .. Expr dump @ ADDR505
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR500
+.. .. eval=(nil)() metrics=(nil) ring=ADDR514
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR514 0
+.. Expr dump @ ADDR501
+.. op=75 (print) arg1=ADDR515 arg2=(nil) parent=ADDR499
+.. eval=actPrint metrics=(nil) ring=ADDR516
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR515
+.. .. op=76 (<action arg node>) arg1=ADDR517 arg2=(nil) parent=ADDR501
+.. .. eval=actArg metrics=(nil) ring=ADDR518
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR517
+.. .. .. op=80 (<nop node>) arg1=ADDR519 arg2=(nil) parent=ADDR515
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR520
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR520 "count_inst:"
+.. .. .. .. Expr dump @ ADDR519
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR517
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR521
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR521 "[%i] %v"
+
+Rule: expr_15
+Expr dump @ ADDR522
+ op=0 (->) arg1=ADDR523 arg2=ADDR524 parent=(nil)
+ eval=rule metrics=ADDR525 ring=ADDR526
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR523
+.. op=54 (some_inst) arg1=ADDR527 arg2=(nil) parent=ADDR522
+.. eval=cndSome_inst metrics=ADDR525 ring=ADDR528
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR527
+.. .. op=45 (match_inst) arg1=ADDR529 arg2=ADDR530 parent=ADDR523
+.. .. eval=ADDR531 metrics=ADDR525 ring=ADDR532
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR529
+.. .. .. op=34 (>) arg1=ADDR533 arg2=ADDR534 parent=ADDR527
+.. .. .. eval=cndGt_n_1 metrics=ADDR525 ring=ADDR535
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR533
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR529
+.. .. .. .. eval=cndFetch_all metrics=ADDR525 ring=ADDR536
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR534
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR529
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR537
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR537 100
+.. .. .. Expr dump @ ADDR530
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR527
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR538
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=REGEX units=
+.. .. .. handle=ADDR538
+.. Expr dump @ ADDR524
+.. op=75 (print) arg1=ADDR539 arg2=(nil) parent=ADDR522
+.. eval=actPrint metrics=(nil) ring=ADDR540
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR539
+.. .. op=76 (<action arg node>) arg1=ADDR541 arg2=(nil) parent=ADDR524
+.. .. eval=actArg metrics=(nil) ring=ADDR542
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR541
+.. .. .. op=80 (<nop node>) arg1=ADDR543 arg2=(nil) parent=ADDR539
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR544
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR544 "match_inst:"
+.. .. .. .. Expr dump @ ADDR543
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR541
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR545
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR545 " [%i] %v"
+
+Rule: expr_16
+Expr dump @ ADDR546
+ op=0 (->) arg1=ADDR547 arg2=ADDR548 parent=(nil)
+ eval=rule metrics=ADDR549 ring=ADDR550
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR547
+.. op=54 (some_inst) arg1=ADDR551 arg2=(nil) parent=ADDR546
+.. eval=cndSome_inst metrics=ADDR549 ring=ADDR552
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR551
+.. .. op=46 (nomatch_inst) arg1=ADDR553 arg2=ADDR554 parent=ADDR547
+.. .. eval=ADDR531 metrics=ADDR549 ring=ADDR555
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR553
+.. .. .. op=34 (>) arg1=ADDR556 arg2=ADDR557 parent=ADDR551
+.. .. .. eval=cndGt_n_1 metrics=ADDR549 ring=ADDR558
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR556
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR553
+.. .. .. .. eval=cndFetch_all metrics=ADDR549 ring=ADDR559
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR557
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR553
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR560
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR560 200
+.. .. .. Expr dump @ ADDR554
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR551
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR561
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=REGEX units=
+.. .. .. handle=ADDR561
+.. Expr dump @ ADDR548
+.. op=75 (print) arg1=ADDR562 arg2=(nil) parent=ADDR546
+.. eval=actPrint metrics=(nil) ring=ADDR563
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR562
+.. .. op=76 (<action arg node>) arg1=ADDR564 arg2=(nil) parent=ADDR548
+.. .. eval=actArg metrics=(nil) ring=ADDR565
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR564
+.. .. .. op=80 (<nop node>) arg1=ADDR566 arg2=(nil) parent=ADDR562
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR567
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=13
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR567 "nomatch_inst:"
+.. .. .. .. Expr dump @ ADDR566
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR564
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR568
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR568 " [%i] %v"
+
+Rule: expr_17
+Expr dump @ ADDR569
+ op=0 (->) arg1=ADDR570 arg2=ADDR571 parent=(nil)
+ eval=rule metrics=ADDR572 ring=ADDR573
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR570
+.. op=51 (all_inst) arg1=ADDR574 arg2=(nil) parent=ADDR569
+.. eval=cndAll_inst metrics=ADDR572 ring=ADDR575
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR574
+.. .. op=30 (==) arg1=ADDR576 arg2=ADDR577 parent=ADDR570
+.. .. eval=cndEq_n_1 metrics=ADDR572 ring=ADDR578
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR576
+.. .. .. op=3 (rate) arg1=ADDR579 arg2=(nil) parent=ADDR574
+.. .. .. eval=cndRate_n metrics=ADDR572 ring=ADDR580
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR579
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR576
+.. .. .. .. eval=cndFetch_all metrics=ADDR572 ring=ADDR581
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=2 nvals=18 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR577
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR574
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR582
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR582 0
+.. Expr dump @ ADDR571
+.. op=75 (print) arg1=ADDR583 arg2=(nil) parent=ADDR569
+.. eval=actPrint metrics=(nil) ring=ADDR584
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR583
+.. .. op=76 (<action arg node>) arg1=ADDR585 arg2=(nil) parent=ADDR571
+.. .. eval=actArg metrics=(nil) ring=ADDR586
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR585
+.. .. .. op=80 (<nop node>) arg1=ADDR587 arg2=(nil) parent=ADDR583
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR588
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=5
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR588 "rate:"
+.. .. .. .. Expr dump @ ADDR587
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR585
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR589
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR589 " [%i] %v"
+
+Rule: expr_18
+Expr dump @ ADDR590
+ op=0 (->) arg1=ADDR591 arg2=ADDR592 parent=(nil)
+ eval=rule metrics=ADDR593 ring=ADDR594
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR591
+.. op=57 (pcnt_inst) arg1=ADDR595 arg2=ADDR596 parent=ADDR590
+.. eval=cndPcnt_inst metrics=ADDR593 ring=ADDR597
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR595
+.. .. op=35 (>=) arg1=ADDR598 arg2=ADDR599 parent=ADDR591
+.. .. eval=cndGte_n_1 metrics=ADDR593 ring=ADDR600
+.. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. nsmpls=1 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR598
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR595
+.. .. .. eval=cndFetch_all metrics=ADDR593 ring=ADDR601
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. .. nsmpls=1 nvals=3 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR599
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR595
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR602
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR602 200
+.. .. Expr dump @ ADDR596
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR603
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR603 0.66
+.. Expr dump @ ADDR592
+.. op=75 (print) arg1=ADDR604 arg2=(nil) parent=ADDR590
+.. eval=actPrint metrics=(nil) ring=ADDR605
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR604
+.. .. op=76 (<action arg node>) arg1=ADDR606 arg2=(nil) parent=ADDR592
+.. .. eval=actArg metrics=(nil) ring=ADDR607
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR606
+.. .. .. op=80 (<nop node>) arg1=ADDR608 arg2=(nil) parent=ADDR604
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR609
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR609 "66%_inst:"
+.. .. .. .. Expr dump @ ADDR608
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR606
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR610
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR610 " [%i] %v"
+
+Rule: expr_19
+Expr dump @ ADDR611
+ op=0 (->) arg1=ADDR612 arg2=ADDR613 parent=(nil)
+ eval=rule metrics=ADDR614 ring=ADDR615
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR612
+.. op=52 (all_sample) arg1=ADDR616 arg2=(nil) parent=ADDR611
+.. eval=cndAll_time metrics=ADDR614 ring=ADDR617
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR616
+.. .. op=30 (==) arg1=ADDR618 arg2=ADDR619 parent=ADDR612
+.. .. eval=cndEq_1_1 metrics=ADDR614 ring=ADDR620
+.. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR618
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR616
+.. .. .. eval=cndFetch_1 metrics=ADDR614 ring=ADDR621
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR619
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR616
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR622
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR622 10
+.. Expr dump @ ADDR613
+.. op=75 (print) arg1=ADDR623 arg2=(nil) parent=ADDR611
+.. eval=actPrint metrics=(nil) ring=ADDR624
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR623
+.. .. op=76 (<action arg node>) arg1=ADDR625 arg2=(nil) parent=ADDR613
+.. .. eval=actArg metrics=(nil) ring=ADDR626
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR625
+.. .. .. op=80 (<nop node>) arg1=ADDR627 arg2=(nil) parent=ADDR623
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR628
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR628 "all_sample: "
+.. .. .. .. Expr dump @ ADDR627
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR625
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR629
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR629 " [%i] %v"
+
+Rule: expr_20
+Expr dump @ ADDR630
+ op=0 (->) arg1=ADDR631 arg2=ADDR632 parent=(nil)
+ eval=rule metrics=ADDR633 ring=ADDR634
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR631
+.. op=58 (pcnt_sample) arg1=ADDR635 arg2=ADDR636 parent=ADDR630
+.. eval=cndPcnt_time metrics=ADDR633 ring=ADDR637
+.. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR635
+.. .. op=54 (some_inst) arg1=ADDR638 arg2=(nil) parent=ADDR631
+.. .. eval=cndSome_inst metrics=ADDR633 ring=ADDR639
+.. .. valid=0 cardinality[H,I,T]=[1,-1,2] tspan=1
+.. .. nsmpls=2 nvals=2 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR638
+.. .. .. op=35 (>=) arg1=ADDR640 arg2=ADDR641 parent=ADDR635
+.. .. .. eval=cndGte_n_1 metrics=ADDR633 ring=ADDR642
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,2] tspan=3
+.. .. .. nsmpls=2 nvals=6 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR640
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR638
+.. .. .. .. eval=cndFetch_n metrics=ADDR633 ring=ADDR643
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,3,2] tspan=3
+.. .. .. .. nsmpls=2 nvals=6 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR641
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR638
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR644
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR644 500
+.. .. Expr dump @ ADDR636
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR645
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR645 0.6
+.. Expr dump @ ADDR632
+.. op=75 (print) arg1=ADDR646 arg2=(nil) parent=ADDR630
+.. eval=actPrint metrics=(nil) ring=ADDR647
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR646
+.. .. op=76 (<action arg node>) arg1=ADDR648 arg2=(nil) parent=ADDR632
+.. .. eval=actArg metrics=(nil) ring=ADDR649
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR648
+.. .. .. op=80 (<nop node>) arg1=ADDR650 arg2=(nil) parent=ADDR646
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR651
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR651 "60%_sample: "
+.. .. .. .. Expr dump @ ADDR650
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR648
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR652
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR652 " [%i] %v"
+
+Rule: expr_21
+Expr dump @ ADDR653
+ op=0 (->) arg1=ADDR654 arg2=ADDR655 parent=(nil)
+ eval=rule metrics=ADDR656 ring=ADDR657
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR654
+.. op=30 (==) arg1=ADDR658 arg2=ADDR659 parent=ADDR653
+.. eval=cndEq_1_1 metrics=ADDR656 ring=ADDR660
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR658
+.. .. op=21 (min_sample) arg1=ADDR661 arg2=(nil) parent=ADDR654
+.. .. eval=cndMin_time metrics=ADDR656 ring=ADDR662
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR661
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR658
+.. .. .. eval=cndFetch_1 metrics=ADDR656 ring=ADDR663
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR659
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR654
+.. .. eval=(nil)() metrics=(nil) ring=ADDR664
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR664 100
+.. Expr dump @ ADDR655
+.. op=75 (print) arg1=ADDR665 arg2=(nil) parent=ADDR653
+.. eval=actPrint metrics=(nil) ring=ADDR666
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR665
+.. .. op=76 (<action arg node>) arg1=ADDR667 arg2=(nil) parent=ADDR655
+.. .. eval=actArg metrics=(nil) ring=ADDR668
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR667
+.. .. .. op=80 (<nop node>) arg1=ADDR669 arg2=(nil) parent=ADDR665
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR670
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR670 "min_sample: "
+.. .. .. .. Expr dump @ ADDR669
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR667
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR671
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR671 " [%i] %v"
+
+Rule: expr_22
+Expr dump @ ADDR672
+ op=0 (->) arg1=ADDR673 arg2=ADDR674 parent=(nil)
+ eval=rule metrics=ADDR675 ring=ADDR676
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR673
+.. op=30 (==) arg1=ADDR677 arg2=ADDR678 parent=ADDR672
+.. eval=cndEq_1_1 metrics=ADDR675 ring=ADDR679
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR677
+.. .. op=18 (max_sample) arg1=ADDR680 arg2=(nil) parent=ADDR673
+.. .. eval=cndMax_time metrics=ADDR675 ring=ADDR681
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR680
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR677
+.. .. .. eval=cndFetch_1 metrics=ADDR675 ring=ADDR682
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR678
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR673
+.. .. eval=(nil)() metrics=(nil) ring=ADDR683
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR683 100
+.. Expr dump @ ADDR674
+.. op=75 (print) arg1=ADDR684 arg2=(nil) parent=ADDR672
+.. eval=actPrint metrics=(nil) ring=ADDR685
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR684
+.. .. op=76 (<action arg node>) arg1=ADDR686 arg2=(nil) parent=ADDR674
+.. .. eval=actArg metrics=(nil) ring=ADDR687
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR686
+.. .. .. op=80 (<nop node>) arg1=ADDR688 arg2=(nil) parent=ADDR684
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR689
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR689 "max_sample: "
+.. .. .. .. Expr dump @ ADDR688
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR686
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR690
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR690 " [%i] %v"
+
+Rule: expr_23
+Expr dump @ ADDR691
+ op=0 (->) arg1=ADDR692 arg2=ADDR693 parent=(nil)
+ eval=rule metrics=ADDR694 ring=ADDR695
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR692
+.. op=30 (==) arg1=ADDR696 arg2=ADDR697 parent=ADDR691
+.. eval=cndEq_1_1 metrics=ADDR694 ring=ADDR698
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR696
+.. .. op=12 (sum_sample) arg1=ADDR699 arg2=(nil) parent=ADDR692
+.. .. eval=cndSum_time metrics=ADDR694 ring=ADDR700
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR699
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR696
+.. .. .. eval=cndFetch_n metrics=ADDR694 ring=ADDR701
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,4] tspan=1
+.. .. .. nsmpls=4 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR697
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR692
+.. .. eval=(nil)() metrics=(nil) ring=ADDR702
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR702 400
+.. Expr dump @ ADDR693
+.. op=75 (print) arg1=ADDR703 arg2=(nil) parent=ADDR691
+.. eval=actPrint metrics=(nil) ring=ADDR704
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR703
+.. .. op=76 (<action arg node>) arg1=ADDR705 arg2=(nil) parent=ADDR693
+.. .. eval=actArg metrics=(nil) ring=ADDR706
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR705
+.. .. .. op=80 (<nop node>) arg1=ADDR707 arg2=(nil) parent=ADDR703
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR708
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR708 "sum_sample: "
+.. .. .. .. Expr dump @ ADDR707
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR705
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR709
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR709 " [%i] %v"
+
+Rule: expr_24
+Expr dump @ ADDR710
+ op=0 (->) arg1=ADDR711 arg2=ADDR712 parent=(nil)
+ eval=rule metrics=ADDR713 ring=ADDR714
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR711
+.. op=30 (==) arg1=ADDR715 arg2=ADDR716 parent=ADDR710
+.. eval=cndEq_1_1 metrics=ADDR713 ring=ADDR717
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR715
+.. .. op=15 (avg_sample) arg1=ADDR718 arg2=(nil) parent=ADDR711
+.. .. eval=cndAvg_time metrics=ADDR713 ring=ADDR719
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR718
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR715
+.. .. .. eval=cndFetch_n metrics=ADDR713 ring=ADDR720
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR716
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR711
+.. .. eval=(nil)() metrics=(nil) ring=ADDR721
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR721 200
+.. Expr dump @ ADDR712
+.. op=75 (print) arg1=ADDR722 arg2=(nil) parent=ADDR710
+.. eval=actPrint metrics=(nil) ring=ADDR723
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR722
+.. .. op=76 (<action arg node>) arg1=ADDR724 arg2=(nil) parent=ADDR712
+.. .. eval=actArg metrics=(nil) ring=ADDR725
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR724
+.. .. .. op=80 (<nop node>) arg1=ADDR726 arg2=(nil) parent=ADDR722
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR727
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR727 "avg_sample: "
+.. .. .. .. Expr dump @ ADDR726
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR724
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR728
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR728 " [%i] %v"
+
+Rule: expr_25
+Expr dump @ ADDR729
+ op=0 (->) arg1=ADDR730 arg2=ADDR731 parent=(nil)
+ eval=rule metrics=ADDR732 ring=ADDR733
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR730
+.. op=30 (==) arg1=ADDR734 arg2=ADDR735 parent=ADDR729
+.. eval=cndEq_1_1 metrics=ADDR732 ring=ADDR736
+.. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR734
+.. .. op=61 (count_sample) arg1=ADDR737 arg2=(nil) parent=ADDR730
+.. .. eval=cndCount_time metrics=ADDR732 ring=ADDR738
+.. .. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR737
+.. .. .. op=54 (some_inst) arg1=ADDR739 arg2=(nil) parent=ADDR734
+.. .. .. eval=cndSome_inst metrics=ADDR732 ring=ADDR740
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR739
+.. .. .. .. op=30 (==) arg1=ADDR741 arg2=ADDR742 parent=ADDR737
+.. .. .. .. eval=cndEq_n_1 metrics=ADDR732 ring=ADDR743
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,3,3] tspan=3
+.. .. .. .. nsmpls=3 nvals=9 sem=TRUTH units=
+.. .. .. .. .. Expr dump @ ADDR741
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR739
+.. .. .. .. .. eval=cndFetch_n metrics=ADDR732 ring=ADDR744
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,3,3] tspan=3
+.. .. .. .. .. nsmpls=3 nvals=9 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR742
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR739
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR745
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. .. smpls[0].ptr ADDR745 300
+.. .. Expr dump @ ADDR735
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR730
+.. .. eval=(nil)() metrics=(nil) ring=ADDR746
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR746 3
+.. Expr dump @ ADDR731
+.. op=75 (print) arg1=ADDR747 arg2=(nil) parent=ADDR729
+.. eval=actPrint metrics=(nil) ring=ADDR748
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR747
+.. .. op=76 (<action arg node>) arg1=ADDR749 arg2=(nil) parent=ADDR731
+.. .. eval=actArg metrics=(nil) ring=ADDR750
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR749
+.. .. .. op=80 (<nop node>) arg1=ADDR751 arg2=(nil) parent=ADDR747
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR752
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=14
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR752 "count_sample: "
+.. .. .. .. Expr dump @ ADDR751
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR749
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR753
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR753 " [%i] %v"
+
+Rule: expr_26
+Expr dump @ ADDR754
+ op=0 (->) arg1=ADDR755 arg2=ADDR756 parent=(nil)
+ eval=rule metrics=ADDR757 ring=ADDR758
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR755
+.. op=34 (>) arg1=ADDR759 arg2=ADDR760 parent=ADDR754
+.. eval=cndGt_n_1 metrics=ADDR757 ring=ADDR761
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR759
+.. .. op=20 (min_inst) arg1=ADDR762 arg2=(nil) parent=ADDR755
+.. .. eval=cndMin_inst metrics=ADDR757 ring=ADDR763
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR762
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR759
+.. .. .. eval=cndFetch_all metrics=ADDR757 ring=ADDR764
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. Expr dump @ ADDR760
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR755
+.. .. eval=(nil)() metrics=(nil) ring=ADDR765
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR765 0
+.. Expr dump @ ADDR756
+.. op=75 (print) arg1=ADDR766 arg2=(nil) parent=ADDR754
+.. eval=actPrint metrics=(nil) ring=ADDR767
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR766
+.. .. op=76 (<action arg node>) arg1=ADDR768 arg2=(nil) parent=ADDR756
+.. .. eval=actArg metrics=(nil) ring=ADDR769
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR768
+.. .. .. op=80 (<nop node>) arg1=ADDR770 arg2=(nil) parent=ADDR766
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR771
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR771 "min_inst:"
+.. .. .. .. Expr dump @ ADDR770
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR768
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR772
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR772 " @%h [%i] %v"
+
+Rule: expr_27
+Expr dump @ ADDR773
+ op=0 (->) arg1=ADDR774 arg2=ADDR775 parent=(nil)
+ eval=rule metrics=ADDR776 ring=ADDR777
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR774
+.. op=34 (>) arg1=ADDR778 arg2=ADDR779 parent=ADDR773
+.. eval=cndGt_n_1 metrics=ADDR776 ring=ADDR780
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR778
+.. .. op=17 (max_inst) arg1=ADDR781 arg2=(nil) parent=ADDR774
+.. .. eval=cndMax_inst metrics=ADDR776 ring=ADDR782
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR781
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR778
+.. .. .. eval=cndFetch_all metrics=ADDR776 ring=ADDR783
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. Expr dump @ ADDR779
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR774
+.. .. eval=(nil)() metrics=(nil) ring=ADDR784
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR784 0
+.. Expr dump @ ADDR775
+.. op=75 (print) arg1=ADDR785 arg2=(nil) parent=ADDR773
+.. eval=actPrint metrics=(nil) ring=ADDR786
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR785
+.. .. op=76 (<action arg node>) arg1=ADDR787 arg2=(nil) parent=ADDR775
+.. .. eval=actArg metrics=(nil) ring=ADDR788
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR787
+.. .. .. op=80 (<nop node>) arg1=ADDR789 arg2=(nil) parent=ADDR785
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR790
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR790 "max_inst:"
+.. .. .. .. Expr dump @ ADDR789
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR787
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR791
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR791 " @%h [%i] %v"
+
+Rule: expr_28
+Expr dump @ ADDR792
+ op=0 (->) arg1=ADDR793 arg2=ADDR794 parent=(nil)
+ eval=rule metrics=ADDR795 ring=ADDR796
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR793
+.. op=30 (==) arg1=ADDR797 arg2=ADDR798 parent=ADDR792
+.. eval=cndEq_1_1 metrics=ADDR795 ring=ADDR799
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR797
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR793
+.. .. eval=cndFetch_1 metrics=ADDR795 ring=ADDR800
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR798
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR793
+.. .. eval=(nil)() metrics=(nil) ring=ADDR801
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR801 1
+.. Expr dump @ ADDR794
+.. op=71 (|) arg1=ADDR802 arg2=ADDR803 parent=ADDR792
+.. eval=actOr metrics=(nil) ring=ADDR804
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR802
+.. .. op=72 (shell) arg1=ADDR805 arg2=(nil) parent=ADDR794
+.. .. eval=actShell metrics=(nil) ring=ADDR806
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR805
+.. .. .. op=76 (<action arg node>) arg1=ADDR807 arg2=(nil) parent=ADDR802
+.. .. .. eval=actArg metrics=(nil) ring=ADDR808
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR807
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR805
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR809
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=5
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR809 "false"
+.. .. Expr dump @ ADDR803
+.. .. op=75 (print) arg1=ADDR810 arg2=(nil) parent=ADDR794
+.. .. eval=actPrint metrics=(nil) ring=ADDR811
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR810
+.. .. .. op=76 (<action arg node>) arg1=ADDR812 arg2=(nil) parent=ADDR803
+.. .. .. eval=actArg metrics=(nil) ring=ADDR813
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR812
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR810
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR814
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR814 "false |: %v"
+
+Rule: expr_29
+Expr dump @ ADDR815
+ op=0 (->) arg1=ADDR816 arg2=ADDR817 parent=(nil)
+ eval=rule metrics=ADDR818 ring=ADDR819
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR816
+.. op=30 (==) arg1=ADDR820 arg2=ADDR821 parent=ADDR815
+.. eval=cndEq_1_1 metrics=ADDR818 ring=ADDR822
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR820
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR816
+.. .. eval=cndFetch_1 metrics=ADDR818 ring=ADDR823
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR821
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR816
+.. .. eval=(nil)() metrics=(nil) ring=ADDR824
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR824 10
+.. Expr dump @ ADDR817
+.. op=70 (&) arg1=ADDR825 arg2=ADDR826 parent=ADDR815
+.. eval=actAnd metrics=(nil) ring=ADDR827
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR825
+.. .. op=72 (shell) arg1=ADDR828 arg2=(nil) parent=ADDR817
+.. .. eval=actShell metrics=(nil) ring=ADDR829
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR828
+.. .. .. op=76 (<action arg node>) arg1=ADDR830 arg2=(nil) parent=ADDR825
+.. .. .. eval=actArg metrics=(nil) ring=ADDR831
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR830
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR828
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR832
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=4
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR832 "true"
+.. .. Expr dump @ ADDR826
+.. .. op=75 (print) arg1=ADDR833 arg2=(nil) parent=ADDR817
+.. .. eval=actPrint metrics=(nil) ring=ADDR834
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR833
+.. .. .. op=76 (<action arg node>) arg1=ADDR835 arg2=(nil) parent=ADDR826
+.. .. .. eval=actArg metrics=(nil) ring=ADDR836
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR835
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR833
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR837
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=10
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR837 "true &: %v"
+
+Rule: expr_30
+Expr dump @ ADDR838
+ op=0 (->) arg1=ADDR839 arg2=ADDR840 parent=(nil)
+ eval=rule metrics=ADDR841 ring=ADDR842
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR839
+.. op=30 (==) arg1=ADDR843 arg2=ADDR844 parent=ADDR838
+.. eval=cndEq_1_1 metrics=ADDR841 ring=ADDR845
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR843
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR839
+.. .. eval=cndFetch_1 metrics=ADDR841 ring=ADDR846
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR844
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR839
+.. .. eval=(nil)() metrics=(nil) ring=ADDR847
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR847 100
+.. Expr dump @ ADDR840
+.. op=71 (|) arg1=ADDR848 arg2=ADDR849 parent=ADDR838
+.. eval=actOr metrics=(nil) ring=ADDR850
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR848
+.. .. op=75 (print) arg1=ADDR851 arg2=(nil) parent=ADDR840
+.. .. eval=actPrint metrics=(nil) ring=ADDR852
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR851
+.. .. .. op=76 (<action arg node>) arg1=ADDR853 arg2=(nil) parent=ADDR848
+.. .. .. eval=actArg metrics=(nil) ring=ADDR854
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR853
+.. .. .. .. op=80 (<nop node>) arg1=ADDR855 arg2=(nil) parent=ADDR851
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR856
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR856 "print |:"
+.. .. .. .. .. Expr dump @ ADDR855
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR853
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR857
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=3
+.. .. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. .. smpls[0].ptr ADDR857 " %v"
+.. .. Expr dump @ ADDR849
+.. .. op=75 (print) arg1=ADDR858 arg2=(nil) parent=ADDR840
+.. .. eval=actPrint metrics=(nil) ring=ADDR859
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR858
+.. .. .. op=76 (<action arg node>) arg1=ADDR860 arg2=(nil) parent=ADDR849
+.. .. .. eval=actArg metrics=(nil) ring=ADDR861
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR860
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR858
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR862
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=22
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR862 "bozo don't execute me!"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> expr_1 =
+some_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 500) -> print "some > 500:" " [%i] %v";
+
+expr_2 =
+all_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 0) -> shell "echo 'all > 0:'" " [%i] %v";
+
+expr_3 =
+some_sample (hinv.ncpu :LOCALHOST @0..2 == hinv.ncpu :LOCALHOST) -> ([level=30 tag="pcp-pmie"] "PCP QA 514 - please ignore: some sample ncpu equal") syslog 10;
+
+expr_4 =
+((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0 -> print "arith %v";
+
+expr_5 =
+(sample.long.one :LOCALHOST != 2) && (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean1 %v";
+
+expr_6 =
+(sample.long.one :LOCALHOST <= 0) && (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean2 %v";
+
+expr_7 =
+(sample.long.one :LOCALHOST < 9) && (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean3 %v";
+
+expr_8 =
+(sample.long.one :LOCALHOST < 1) && (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean4 %v";
+
+expr_9 =
+(min_inst (no_such_metric :LOCALHOST) == 100) || (sample.long.million :LOCALHOST > 0) -> print "error1 %v";
+
+expr_10 =
+(min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 100) || (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean5:" " [%i] %v";
+
+expr_11 =
+(max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 100) || (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean6:" " [%i] %v";
+
+expr_12 =
+(sum_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 500) || (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean7:" " [%i] %v";
+
+expr_13 =
+(avg_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 0) || (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean8:" " [%i] %v";
+
+expr_14 =
+count_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 0) > 0 -> print "count_inst:" "[%i] %v";
+
+expr_15 =
+some_inst (match_inst /<regex>/ (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 100)) -> print "match_inst:" " [%i] %v";
+
+expr_16 =
+some_inst (nomatch_inst /<regex>/ (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 200)) -> print "nomatch_inst:" " [%i] %v";
+
+expr_17 =
+all_inst (rate (sample.bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 0) -> print "rate:" " [%i] %v";
+
+expr_18 =
+pcnt_inst 66% (sample.colour :LOCALHOST #red #green #blue >= 200) -> print "66%_inst:" " [%i] %v";
+
+expr_19 =
+all_sample (sample.long.ten :LOCALHOST @0..2 == 10) -> print "all_sample: " " [%i] %v";
+
+expr_20 =
+pcnt_sample 60% (some_inst (sample.part_bin :LOCALHOST #bin-300 #bin-500 #bin-700 @0..1 >= 500)) -> print "60%_sample: " " [%i] %v";
+
+expr_21 =
+min_sample (sample.long.hundred :LOCALHOST @0..1) == 100 -> print "min_sample: " " [%i] %v";
+
+expr_22 =
+max_sample (sample.long.hundred :LOCALHOST @0..1) == 100 -> print "max_sample: " " [%i] %v";
+
+expr_23 =
+sum_sample (sample.bin :LOCALHOST #bin-100 @0..3) == 400 -> print "sum_sample: " " [%i] %v";
+
+expr_24 =
+avg_sample (sample.bin :LOCALHOST #bin-200 @0..1) == 200 -> print "avg_sample: " " [%i] %v";
+
+expr_25 =
+count_sample (some_inst (sample.bin :LOCALHOST #bin-200 #bin-300 #bin-400 @0..2 == 300)) == 3 -> print "count_sample: " " [%i] %v";
+
+expr_26 =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 0 -> print "min_inst:" " @%h [%i] %v";
+
+expr_27 =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 0 -> print "max_inst:" " @%h [%i] %v";
+
+expr_28 =
+sample.long.one :LOCALHOST == 1 -> (shell "false") | (print "false |: %v");
+
+expr_29 =
+sample.long.ten :LOCALHOST == 10 -> (shell "true") & (print "true &: %v");
+
+expr_30 =
+sample.long.hundred :LOCALHOST == 100 -> (print "print |:" " %v") | (print "bozo don't execute me!");
+
+pmie> DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [%i] %v
+DATE: boolean6: [%i] %v
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: avg_sample: [bin-200] 200
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: sum_sample: [bin-100] 400
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: sum_sample: [bin-100] 400
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+pmie> expr_1 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+hinv.ncpu :LOCALHOST @0..2
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+(((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_7 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_8 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_9 (subexpression for %h, %i and %v bindings) =
+min_inst (no_such_metric :LOCALHOST)
+
+expr_10 (subexpression for %h, %i and %v bindings) =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_11 (subexpression for %h, %i and %v bindings) =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_12 (subexpression for %h, %i and %v bindings) =
+sum_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_13 (subexpression for %h, %i and %v bindings) =
+avg_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_14 (subexpression for %h, %i and %v bindings) =
+count_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900 > 0)
+
+expr_15 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_16 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_17 (subexpression for %h, %i and %v bindings) =
+rate (sample.bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900)
+
+expr_18 (subexpression for %h, %i and %v bindings) =
+sample.colour :LOCALHOST #red #green #blue
+
+expr_19 (subexpression for %h, %i and %v bindings) =
+sample.long.ten :LOCALHOST @0..2
+
+expr_20 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-300 #bin-500 #bin-700 @0..1
+
+expr_21 (subexpression for %h, %i and %v bindings) =
+min_sample (sample.long.hundred :LOCALHOST @0..1)
+
+expr_22 (subexpression for %h, %i and %v bindings) =
+max_sample (sample.long.hundred :LOCALHOST @0..1)
+
+expr_23 (subexpression for %h, %i and %v bindings) =
+sum_sample (sample.bin :LOCALHOST #bin-100 @0..3)
+
+expr_24 (subexpression for %h, %i and %v bindings) =
+avg_sample (sample.bin :LOCALHOST #bin-200 @0..1)
+
+expr_25 (subexpression for %h, %i and %v bindings) =
+count_sample (some_inst (sample.bin :LOCALHOST #bin-200 #bin-300 #bin-400 @0..2 == 300))
+
+expr_26 (subexpression for %h, %i and %v bindings) =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_27 (subexpression for %h, %i and %v bindings) =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_28 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_29 (subexpression for %h, %i and %v bindings) =
+sample.long.ten :LOCALHOST
+
+expr_30 (subexpression for %h, %i and %v bindings) =
+sample.long.hundred :LOCALHOST
+
+pmie>
+SYSLOG ...
+...: some sample ncpu equal [<%i undefined>] N N N
diff --git a/qa/514.out.2 b/qa/514.out.2
new file mode 100644
index 0000000..87004f4
--- /dev/null
+++ b/qa/514.out.2
@@ -0,0 +1,2430 @@
+QA output created by 514
+pmie: metric no_such_metric not in namespace for host LOCALHOST
+pmLookupName failed: Unknown metric name
+Rule: expr_1
+Expr dump @ ADDR000
+ op=0 (->) arg1=ADDR001 arg2=ADDR002 parent=(nil)
+ eval=rule metrics=ADDR003 ring=ADDR004
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR001
+.. op=54 (some_inst) arg1=ADDR005 arg2=(nil) parent=ADDR000
+.. eval=cndSome_inst metrics=ADDR003 ring=ADDR006
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR005
+.. .. op=34 (>) arg1=ADDR007 arg2=ADDR008 parent=ADDR001
+.. .. eval=cndGt_n_1 metrics=ADDR003 ring=ADDR009
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR007
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR005
+.. .. .. eval=cndFetch_all metrics=ADDR003 ring=ADDR010
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR008
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR005
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR011
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR011 500
+.. Expr dump @ ADDR002
+.. op=75 (print) arg1=ADDR012 arg2=(nil) parent=ADDR000
+.. eval=actPrint metrics=(nil) ring=ADDR013
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR012
+.. .. op=76 (<action arg node>) arg1=ADDR014 arg2=(nil) parent=ADDR002
+.. .. eval=actArg metrics=(nil) ring=ADDR015
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR014
+.. .. .. op=80 (<nop node>) arg1=ADDR016 arg2=(nil) parent=ADDR012
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR017
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR017 "some > 500:"
+.. .. .. .. Expr dump @ ADDR016
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR014
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR018
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR018 " [%i] %v"
+
+Rule: expr_2
+Expr dump @ ADDR019
+ op=0 (->) arg1=ADDR020 arg2=ADDR021 parent=(nil)
+ eval=rule metrics=ADDR022 ring=ADDR023
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR020
+.. op=51 (all_inst) arg1=ADDR024 arg2=(nil) parent=ADDR019
+.. eval=cndAll_inst metrics=ADDR022 ring=ADDR025
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR024
+.. .. op=34 (>) arg1=ADDR026 arg2=ADDR027 parent=ADDR020
+.. .. eval=cndGt_n_1 metrics=ADDR022 ring=ADDR028
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR026
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR024
+.. .. .. eval=cndFetch_all metrics=ADDR022 ring=ADDR029
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR027
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR024
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR030
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR030 0
+.. Expr dump @ ADDR021
+.. op=72 (shell) arg1=ADDR031 arg2=(nil) parent=ADDR019
+.. eval=actShell metrics=(nil) ring=ADDR032
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR031
+.. .. op=76 (<action arg node>) arg1=ADDR033 arg2=(nil) parent=ADDR021
+.. .. eval=actArg metrics=(nil) ring=ADDR034
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR033
+.. .. .. op=80 (<nop node>) arg1=ADDR035 arg2=(nil) parent=ADDR031
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR036
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=15
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR036 "echo 'all > 0:'"
+.. .. .. .. Expr dump @ ADDR035
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR033
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR037
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR037 " [%i] %v"
+
+Rule: expr_3
+Expr dump @ ADDR038
+ op=0 (->) arg1=ADDR039 arg2=ADDR040 parent=(nil)
+ eval=rule metrics=ADDR041 ring=ADDR042
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR039
+.. op=55 (some_sample) arg1=ADDR043 arg2=(nil) parent=ADDR038
+.. eval=cndSome_time metrics=ADDR041 ring=ADDR044
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR043
+.. .. op=30 (==) arg1=ADDR045 arg2=ADDR046 parent=ADDR039
+.. .. eval=cndEq_1_1 metrics=ADDR041 ring=ADDR047
+.. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR045
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR043
+.. .. .. eval=cndFetch_1 metrics=ADDR041 ring=ADDR048
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR046
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR043
+.. .. .. eval=cndFetch_1 metrics=ADDR049 ring=ADDR050
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. Expr dump @ ADDR040
+.. op=74 (syslog) arg1=ADDR051 arg2=ADDR052 parent=ADDR038
+.. eval=actSyslog metrics=(nil) ring=ADDR053
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR051
+.. .. op=76 (<action arg node>) arg1=ADDR054 arg2=ADDR055 parent=ADDR040
+.. .. eval=actArg metrics=(nil) ring=ADDR056
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR054
+.. .. .. op=80 (<nop node>) arg1=ADDR057 arg2=(nil) parent=ADDR051
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR058
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=50
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR058 "PCP QA 514 - please ignore: some sample ncpu equal"
+.. .. .. .. Expr dump @ ADDR057
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR054
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR059
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR059 " [%i] %v"
+.. .. .. Expr dump @ ADDR055
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR051
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR060
+.. .. .. valid=0 cardinality[H,I,T]=[0,0,0] tspan=0
+.. .. .. nsmpls=0 nvals=0 sem=UNKNOWN units=
+.. .. Expr dump @ ADDR052
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR040
+.. .. eval=(nil)() metrics=(nil) ring=ADDR061
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=sec
+.. .. smpls[0].ptr ADDR061 10
+
+Rule: expr_4
+Expr dump @ ADDR062
+ op=0 (->) arg1=ADDR063 arg2=ADDR064 parent=(nil)
+ eval=rule metrics=ADDR065 ring=ADDR066
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR063
+.. op=35 (>=) arg1=ADDR067 arg2=ADDR068 parent=ADDR062
+.. eval=cndGte_1_1 metrics=ADDR065 ring=ADDR069
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR067
+.. .. op=8 (/) arg1=ADDR070 arg2=ADDR071 parent=ADDR063
+.. .. eval=cndDiv_1_1 metrics=ADDR065 ring=ADDR072
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR070
+.. .. .. op=7 (*) arg1=ADDR073 arg2=ADDR074 parent=ADDR067
+.. .. .. eval=cndMul_1_1 metrics=ADDR065 ring=ADDR075
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR073
+.. .. .. .. op=6 (-) arg1=ADDR076 arg2=ADDR077 parent=ADDR070
+.. .. .. .. eval=cndSub_1_1 metrics=ADDR065 ring=ADDR078
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR076
+.. .. .. .. .. op=5 (+) arg1=ADDR079 arg2=ADDR080 parent=ADDR073
+.. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR065 ring=ADDR081
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR079
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR065 ring=ADDR082
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR080
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR083 ring=ADDR084
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR077
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR073
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR085 ring=ADDR086
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR074
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR070
+.. .. .. .. eval=cndFetch_1 metrics=ADDR087 ring=ADDR088
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR071
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR067
+.. .. .. eval=cndFetch_1 metrics=ADDR089 ring=ADDR090
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR068
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR063
+.. .. eval=(nil)() metrics=(nil) ring=ADDR091
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR091 0
+.. Expr dump @ ADDR064
+.. op=75 (print) arg1=ADDR092 arg2=(nil) parent=ADDR062
+.. eval=actPrint metrics=(nil) ring=ADDR093
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR092
+.. .. op=76 (<action arg node>) arg1=ADDR094 arg2=(nil) parent=ADDR064
+.. .. eval=actArg metrics=(nil) ring=ADDR095
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR094
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR092
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR096
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR096 "arith %v"
+
+Rule: expr_5
+Expr dump @ ADDR097
+ op=0 (->) arg1=ADDR098 arg2=ADDR099 parent=(nil)
+ eval=rule metrics=ADDR100 ring=ADDR101
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR098
+.. op=43 (&&) arg1=ADDR102 arg2=ADDR103 parent=ADDR097
+.. eval=cndAnd_1_1 metrics=ADDR100 ring=ADDR104
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR102
+.. .. op=31 (!=) arg1=ADDR105 arg2=ADDR106 parent=ADDR098
+.. .. eval=cndNeq_1_1 metrics=ADDR100 ring=ADDR107
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR105
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR102
+.. .. .. eval=cndFetch_1 metrics=ADDR100 ring=ADDR108
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR106
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR102
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR109
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR109 2
+.. .. Expr dump @ ADDR103
+.. .. op=35 (>=) arg1=ADDR110 arg2=ADDR111 parent=ADDR098
+.. .. eval=cndGte_1_1 metrics=ADDR112 ring=ADDR113
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR110
+.. .. .. op=8 (/) arg1=ADDR114 arg2=ADDR115 parent=ADDR103
+.. .. .. eval=cndDiv_1_1 metrics=ADDR112 ring=ADDR116
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR114
+.. .. .. .. op=7 (*) arg1=ADDR117 arg2=ADDR118 parent=ADDR110
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR112 ring=ADDR119
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR117
+.. .. .. .. .. op=6 (-) arg1=ADDR120 arg2=ADDR121 parent=ADDR114
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR112 ring=ADDR122
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR120
+.. .. .. .. .. .. op=5 (+) arg1=ADDR123 arg2=ADDR124 parent=ADDR117
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR112 ring=ADDR125
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR123
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR120
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR112 ring=ADDR126
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR124
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR120
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR127 ring=ADDR128
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR121
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR117
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR129 ring=ADDR130
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR118
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR114
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR131 ring=ADDR132
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR115
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR110
+.. .. .. .. eval=cndFetch_1 metrics=ADDR133 ring=ADDR134
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR111
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR103
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR135
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR135 0
+.. Expr dump @ ADDR099
+.. op=75 (print) arg1=ADDR136 arg2=(nil) parent=ADDR097
+.. eval=actPrint metrics=(nil) ring=ADDR137
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR136
+.. .. op=76 (<action arg node>) arg1=ADDR138 arg2=(nil) parent=ADDR099
+.. .. eval=actArg metrics=(nil) ring=ADDR139
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR138
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR136
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR140
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR140 "boolean1 %v"
+
+Rule: expr_6
+Expr dump @ ADDR141
+ op=0 (->) arg1=ADDR142 arg2=ADDR143 parent=(nil)
+ eval=rule metrics=ADDR144 ring=ADDR145
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR142
+.. op=43 (&&) arg1=ADDR146 arg2=ADDR147 parent=ADDR141
+.. eval=cndAnd_1_1 metrics=ADDR144 ring=ADDR148
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR146
+.. .. op=33 (<=) arg1=ADDR149 arg2=ADDR150 parent=ADDR142
+.. .. eval=cndLte_1_1 metrics=ADDR144 ring=ADDR151
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR149
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR146
+.. .. .. eval=cndFetch_1 metrics=ADDR144 ring=ADDR152
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR150
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR146
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR153
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR153 0
+.. .. Expr dump @ ADDR147
+.. .. op=35 (>=) arg1=ADDR154 arg2=ADDR155 parent=ADDR142
+.. .. eval=cndGte_1_1 metrics=ADDR156 ring=ADDR157
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR154
+.. .. .. op=8 (/) arg1=ADDR158 arg2=ADDR159 parent=ADDR147
+.. .. .. eval=cndDiv_1_1 metrics=ADDR156 ring=ADDR160
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR158
+.. .. .. .. op=7 (*) arg1=ADDR161 arg2=ADDR162 parent=ADDR154
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR156 ring=ADDR163
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR161
+.. .. .. .. .. op=6 (-) arg1=ADDR164 arg2=ADDR165 parent=ADDR158
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR156 ring=ADDR166
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR164
+.. .. .. .. .. .. op=5 (+) arg1=ADDR167 arg2=ADDR168 parent=ADDR161
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR156 ring=ADDR169
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR167
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR164
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR156 ring=ADDR170
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR168
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR164
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR171 ring=ADDR172
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR165
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR161
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR173 ring=ADDR174
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR162
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR158
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR175 ring=ADDR176
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR159
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR154
+.. .. .. .. eval=cndFetch_1 metrics=ADDR177 ring=ADDR178
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR155
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR147
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR179
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR179 0
+.. Expr dump @ ADDR143
+.. op=75 (print) arg1=ADDR180 arg2=(nil) parent=ADDR141
+.. eval=actPrint metrics=(nil) ring=ADDR181
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR180
+.. .. op=76 (<action arg node>) arg1=ADDR182 arg2=(nil) parent=ADDR143
+.. .. eval=actArg metrics=(nil) ring=ADDR183
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR182
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR180
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR184
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR184 "boolean2 %v"
+
+Rule: expr_7
+Expr dump @ ADDR185
+ op=0 (->) arg1=ADDR186 arg2=ADDR187 parent=(nil)
+ eval=rule metrics=ADDR188 ring=ADDR189
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR186
+.. op=43 (&&) arg1=ADDR190 arg2=ADDR191 parent=ADDR185
+.. eval=cndAnd_1_1 metrics=ADDR188 ring=ADDR192
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR190
+.. .. op=32 (<) arg1=ADDR193 arg2=ADDR194 parent=ADDR186
+.. .. eval=cndLt_1_1 metrics=ADDR188 ring=ADDR195
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR193
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. eval=cndFetch_1 metrics=ADDR188 ring=ADDR196
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR194
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR197
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR197 9
+.. .. Expr dump @ ADDR191
+.. .. op=40 (!) arg1=ADDR198 arg2=(nil) parent=ADDR186
+.. .. eval=cndNot_1 metrics=ADDR199 ring=ADDR200
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR198
+.. .. .. op=35 (>=) arg1=ADDR201 arg2=ADDR202 parent=ADDR191
+.. .. .. eval=cndGte_1_1 metrics=ADDR199 ring=ADDR203
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR201
+.. .. .. .. op=8 (/) arg1=ADDR204 arg2=ADDR205 parent=ADDR198
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR199 ring=ADDR206
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR204
+.. .. .. .. .. op=7 (*) arg1=ADDR207 arg2=ADDR208 parent=ADDR201
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR199 ring=ADDR209
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR207
+.. .. .. .. .. .. op=6 (-) arg1=ADDR210 arg2=ADDR211 parent=ADDR204
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR199 ring=ADDR212
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR210
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR213 arg2=ADDR214 parent=ADDR207
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR199 ring=ADDR215
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR213
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR210
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR199 ring=ADDR216
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR214
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR210
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR217 ring=ADDR218
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR211
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR207
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR219 ring=ADDR220
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR208
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR204
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR221 ring=ADDR222
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR205
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR201
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR223 ring=ADDR224
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR202
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR198
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR225
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR225 0
+.. Expr dump @ ADDR187
+.. op=75 (print) arg1=ADDR226 arg2=(nil) parent=ADDR185
+.. eval=actPrint metrics=(nil) ring=ADDR227
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR226
+.. .. op=76 (<action arg node>) arg1=ADDR228 arg2=(nil) parent=ADDR187
+.. .. eval=actArg metrics=(nil) ring=ADDR229
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR228
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR226
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR230
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR230 "boolean3 %v"
+
+Rule: expr_8
+Expr dump @ ADDR231
+ op=0 (->) arg1=ADDR232 arg2=ADDR233 parent=(nil)
+ eval=rule metrics=ADDR234 ring=ADDR235
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR232
+.. op=43 (&&) arg1=ADDR236 arg2=ADDR237 parent=ADDR231
+.. eval=cndAnd_1_1 metrics=ADDR234 ring=ADDR238
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR236
+.. .. op=32 (<) arg1=ADDR239 arg2=ADDR240 parent=ADDR232
+.. .. eval=cndLt_1_1 metrics=ADDR234 ring=ADDR241
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR239
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR236
+.. .. .. eval=cndFetch_1 metrics=ADDR234 ring=ADDR242
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR240
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR236
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR243
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR243 1
+.. .. Expr dump @ ADDR237
+.. .. op=40 (!) arg1=ADDR244 arg2=(nil) parent=ADDR232
+.. .. eval=cndNot_1 metrics=ADDR245 ring=ADDR246
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR244
+.. .. .. op=35 (>=) arg1=ADDR247 arg2=ADDR248 parent=ADDR237
+.. .. .. eval=cndGte_1_1 metrics=ADDR245 ring=ADDR249
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR247
+.. .. .. .. op=8 (/) arg1=ADDR250 arg2=ADDR251 parent=ADDR244
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR245 ring=ADDR252
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR250
+.. .. .. .. .. op=7 (*) arg1=ADDR253 arg2=ADDR254 parent=ADDR247
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR245 ring=ADDR255
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR253
+.. .. .. .. .. .. op=6 (-) arg1=ADDR256 arg2=ADDR257 parent=ADDR250
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR245 ring=ADDR258
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR256
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR259 arg2=ADDR260 parent=ADDR253
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR245 ring=ADDR261
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR259
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR256
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR245 ring=ADDR262
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR260
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR256
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR263 ring=ADDR264
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR257
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR253
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR265 ring=ADDR266
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR254
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR250
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR267 ring=ADDR268
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR251
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR247
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR269 ring=ADDR270
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR248
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR244
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR271
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR271 0
+.. Expr dump @ ADDR233
+.. op=75 (print) arg1=ADDR272 arg2=(nil) parent=ADDR231
+.. eval=actPrint metrics=(nil) ring=ADDR273
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR272
+.. .. op=76 (<action arg node>) arg1=ADDR274 arg2=(nil) parent=ADDR233
+.. .. eval=actArg metrics=(nil) ring=ADDR275
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR274
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR272
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR276
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR276 "boolean4 %v"
+
+Rule: expr_9
+Expr dump @ ADDR277
+ op=0 (->) arg1=ADDR278 arg2=ADDR279 parent=(nil)
+ eval=rule metrics=ADDR280 ring=ADDR281
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR278
+.. op=44 (||) arg1=ADDR282 arg2=ADDR283 parent=ADDR277
+.. eval=cndOr_n_1 metrics=ADDR280 ring=ADDR284
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR282
+.. .. op=30 (==) arg1=ADDR285 arg2=ADDR286 parent=ADDR278
+.. .. eval=cndEq_n_1 metrics=ADDR280 ring=ADDR287
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR285
+.. .. .. op=20 (min_inst) arg1=ADDR288 arg2=(nil) parent=ADDR282
+.. .. .. eval=cndMin_inst metrics=ADDR280 ring=ADDR289
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=UNKNOWN units=UNKNOWN
+.. .. .. .. Expr dump @ ADDR288
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR285
+.. .. .. .. eval=cndFetch_1 metrics=ADDR280 ring=ADDR290
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=UNKNOWN units=UNKNOWN
+.. .. .. Expr dump @ ADDR286
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR282
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR291
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR291 100
+.. .. Expr dump @ ADDR283
+.. .. op=34 (>) arg1=ADDR292 arg2=ADDR293 parent=ADDR278
+.. .. eval=cndGt_1_1 metrics=ADDR294 ring=ADDR295
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR292
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR283
+.. .. .. eval=cndFetch_1 metrics=ADDR294 ring=ADDR296
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR293
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR283
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR297
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR297 0
+.. Expr dump @ ADDR279
+.. op=75 (print) arg1=ADDR298 arg2=(nil) parent=ADDR277
+.. eval=actPrint metrics=(nil) ring=ADDR299
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR298
+.. .. op=76 (<action arg node>) arg1=ADDR300 arg2=(nil) parent=ADDR279
+.. .. eval=actArg metrics=(nil) ring=ADDR301
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR300
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR298
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR302
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR302 "error1 %v"
+
+Rule: expr_10
+Expr dump @ ADDR303
+ op=0 (->) arg1=ADDR304 arg2=ADDR305 parent=(nil)
+ eval=rule metrics=ADDR306 ring=ADDR307
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR304
+.. op=44 (||) arg1=ADDR308 arg2=ADDR309 parent=ADDR303
+.. eval=cndOr_n_1 metrics=ADDR306 ring=ADDR310
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR308
+.. .. op=30 (==) arg1=ADDR311 arg2=ADDR312 parent=ADDR304
+.. .. eval=cndEq_n_1 metrics=ADDR306 ring=ADDR313
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR311
+.. .. .. op=20 (min_inst) arg1=ADDR314 arg2=(nil) parent=ADDR308
+.. .. .. eval=cndMin_inst metrics=ADDR306 ring=ADDR315
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR314
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR311
+.. .. .. .. eval=cndFetch_all metrics=ADDR306 ring=ADDR316
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR312
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR308
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR317
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR317 100
+.. .. Expr dump @ ADDR309
+.. .. op=35 (>=) arg1=ADDR318 arg2=ADDR319 parent=ADDR304
+.. .. eval=cndGte_1_1 metrics=ADDR320 ring=ADDR321
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR318
+.. .. .. op=8 (/) arg1=ADDR322 arg2=ADDR323 parent=ADDR309
+.. .. .. eval=cndDiv_1_1 metrics=ADDR320 ring=ADDR324
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR322
+.. .. .. .. op=7 (*) arg1=ADDR325 arg2=ADDR326 parent=ADDR318
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR320 ring=ADDR327
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR325
+.. .. .. .. .. op=6 (-) arg1=ADDR328 arg2=ADDR329 parent=ADDR322
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR320 ring=ADDR330
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR328
+.. .. .. .. .. .. op=5 (+) arg1=ADDR331 arg2=ADDR332 parent=ADDR325
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR320 ring=ADDR333
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR331
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR328
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR320 ring=ADDR334
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR332
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR328
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR335 ring=ADDR336
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR329
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR325
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR337 ring=ADDR338
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR326
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR322
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR339 ring=ADDR340
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR323
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR318
+.. .. .. .. eval=cndFetch_1 metrics=ADDR341 ring=ADDR342
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR319
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR309
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR343
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR343 0
+.. Expr dump @ ADDR305
+.. op=75 (print) arg1=ADDR344 arg2=(nil) parent=ADDR303
+.. eval=actPrint metrics=(nil) ring=ADDR345
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR344
+.. .. op=76 (<action arg node>) arg1=ADDR346 arg2=(nil) parent=ADDR305
+.. .. eval=actArg metrics=(nil) ring=ADDR347
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR346
+.. .. .. op=80 (<nop node>) arg1=ADDR348 arg2=(nil) parent=ADDR344
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR349
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR349 "boolean5:"
+.. .. .. .. Expr dump @ ADDR348
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR346
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR350
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR350 " [%i] %v"
+
+Rule: expr_11
+Expr dump @ ADDR351
+ op=0 (->) arg1=ADDR352 arg2=ADDR353 parent=(nil)
+ eval=rule metrics=ADDR354 ring=ADDR355
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR352
+.. op=44 (||) arg1=ADDR356 arg2=ADDR357 parent=ADDR351
+.. eval=cndOr_n_1 metrics=ADDR354 ring=ADDR358
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR356
+.. .. op=30 (==) arg1=ADDR359 arg2=ADDR360 parent=ADDR352
+.. .. eval=cndEq_n_1 metrics=ADDR354 ring=ADDR361
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR359
+.. .. .. op=17 (max_inst) arg1=ADDR362 arg2=(nil) parent=ADDR356
+.. .. .. eval=cndMax_inst metrics=ADDR354 ring=ADDR363
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR362
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR359
+.. .. .. .. eval=cndFetch_all metrics=ADDR354 ring=ADDR364
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR360
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR356
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR365
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR365 100
+.. .. Expr dump @ ADDR357
+.. .. op=35 (>=) arg1=ADDR366 arg2=ADDR367 parent=ADDR352
+.. .. eval=cndGte_1_1 metrics=ADDR368 ring=ADDR369
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR366
+.. .. .. op=8 (/) arg1=ADDR370 arg2=ADDR371 parent=ADDR357
+.. .. .. eval=cndDiv_1_1 metrics=ADDR368 ring=ADDR372
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR370
+.. .. .. .. op=7 (*) arg1=ADDR373 arg2=ADDR374 parent=ADDR366
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR368 ring=ADDR375
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR373
+.. .. .. .. .. op=6 (-) arg1=ADDR376 arg2=ADDR377 parent=ADDR370
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR368 ring=ADDR378
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR376
+.. .. .. .. .. .. op=5 (+) arg1=ADDR379 arg2=ADDR380 parent=ADDR373
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR368 ring=ADDR381
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR379
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR376
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR368 ring=ADDR382
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR380
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR376
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR383 ring=ADDR384
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR377
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR373
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR385 ring=ADDR386
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR374
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR370
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR387 ring=ADDR388
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR371
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR366
+.. .. .. .. eval=cndFetch_1 metrics=ADDR389 ring=ADDR390
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR367
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR357
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR391
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR391 0
+.. Expr dump @ ADDR353
+.. op=75 (print) arg1=ADDR392 arg2=(nil) parent=ADDR351
+.. eval=actPrint metrics=(nil) ring=ADDR393
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR392
+.. .. op=76 (<action arg node>) arg1=ADDR394 arg2=(nil) parent=ADDR353
+.. .. eval=actArg metrics=(nil) ring=ADDR395
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR394
+.. .. .. op=80 (<nop node>) arg1=ADDR396 arg2=(nil) parent=ADDR392
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR397
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR397 "boolean6:"
+.. .. .. .. Expr dump @ ADDR396
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR394
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR398
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR398 " [%i] %v"
+
+Rule: expr_12
+Expr dump @ ADDR399
+ op=0 (->) arg1=ADDR400 arg2=ADDR401 parent=(nil)
+ eval=rule metrics=ADDR402 ring=ADDR403
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR400
+.. op=44 (||) arg1=ADDR404 arg2=ADDR405 parent=ADDR399
+.. eval=cndOr_n_1 metrics=ADDR402 ring=ADDR406
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR404
+.. .. op=34 (>) arg1=ADDR407 arg2=ADDR408 parent=ADDR400
+.. .. eval=cndGt_n_1 metrics=ADDR402 ring=ADDR409
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR407
+.. .. .. op=11 (sum_inst) arg1=ADDR410 arg2=(nil) parent=ADDR404
+.. .. .. eval=cndSum_inst metrics=ADDR402 ring=ADDR411
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR410
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR407
+.. .. .. .. eval=cndFetch_all metrics=ADDR402 ring=ADDR412
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR408
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR404
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR413
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR413 500
+.. .. Expr dump @ ADDR405
+.. .. op=40 (!) arg1=ADDR414 arg2=(nil) parent=ADDR400
+.. .. eval=cndNot_1 metrics=ADDR415 ring=ADDR416
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR414
+.. .. .. op=35 (>=) arg1=ADDR417 arg2=ADDR418 parent=ADDR405
+.. .. .. eval=cndGte_1_1 metrics=ADDR415 ring=ADDR419
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR417
+.. .. .. .. op=8 (/) arg1=ADDR420 arg2=ADDR421 parent=ADDR414
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR415 ring=ADDR422
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR420
+.. .. .. .. .. op=7 (*) arg1=ADDR423 arg2=ADDR424 parent=ADDR417
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR415 ring=ADDR425
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR423
+.. .. .. .. .. .. op=6 (-) arg1=ADDR426 arg2=ADDR427 parent=ADDR420
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR415 ring=ADDR428
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR426
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR429 arg2=ADDR430 parent=ADDR423
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR415 ring=ADDR431
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR429
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR426
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR415 ring=ADDR432
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR430
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR426
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR433 ring=ADDR434
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR427
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR423
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR435 ring=ADDR436
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR424
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR420
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR437 ring=ADDR438
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR421
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR417
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR439 ring=ADDR440
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR418
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR414
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR441
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR441 0
+.. Expr dump @ ADDR401
+.. op=75 (print) arg1=ADDR442 arg2=(nil) parent=ADDR399
+.. eval=actPrint metrics=(nil) ring=ADDR443
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR442
+.. .. op=76 (<action arg node>) arg1=ADDR444 arg2=(nil) parent=ADDR401
+.. .. eval=actArg metrics=(nil) ring=ADDR445
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR444
+.. .. .. op=80 (<nop node>) arg1=ADDR446 arg2=(nil) parent=ADDR442
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR447
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR447 "boolean7:"
+.. .. .. .. Expr dump @ ADDR446
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR444
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR448
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR448 " [%i] %v"
+
+Rule: expr_13
+Expr dump @ ADDR449
+ op=0 (->) arg1=ADDR450 arg2=ADDR451 parent=(nil)
+ eval=rule metrics=ADDR452 ring=ADDR453
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR450
+.. op=44 (||) arg1=ADDR454 arg2=ADDR455 parent=ADDR449
+.. eval=cndOr_n_1 metrics=ADDR452 ring=ADDR456
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR454
+.. .. op=30 (==) arg1=ADDR457 arg2=ADDR458 parent=ADDR450
+.. .. eval=cndEq_n_1 metrics=ADDR452 ring=ADDR459
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR457
+.. .. .. op=14 (avg_inst) arg1=ADDR460 arg2=(nil) parent=ADDR454
+.. .. .. eval=cndAvg_inst metrics=ADDR452 ring=ADDR461
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR460
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR457
+.. .. .. .. eval=cndFetch_all metrics=ADDR452 ring=ADDR462
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR458
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR454
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR463
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR463 0
+.. .. Expr dump @ ADDR455
+.. .. op=40 (!) arg1=ADDR464 arg2=(nil) parent=ADDR450
+.. .. eval=cndNot_1 metrics=ADDR465 ring=ADDR466
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR464
+.. .. .. op=35 (>=) arg1=ADDR467 arg2=ADDR468 parent=ADDR455
+.. .. .. eval=cndGte_1_1 metrics=ADDR465 ring=ADDR469
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR467
+.. .. .. .. op=8 (/) arg1=ADDR470 arg2=ADDR471 parent=ADDR464
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR465 ring=ADDR472
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR470
+.. .. .. .. .. op=7 (*) arg1=ADDR473 arg2=ADDR474 parent=ADDR467
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR465 ring=ADDR475
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR473
+.. .. .. .. .. .. op=6 (-) arg1=ADDR476 arg2=ADDR477 parent=ADDR470
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR465 ring=ADDR478
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR476
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR479 arg2=ADDR480 parent=ADDR473
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR465 ring=ADDR481
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR479
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR476
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR465 ring=ADDR482
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR480
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR476
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR483 ring=ADDR484
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR477
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR473
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR485 ring=ADDR486
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR474
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR470
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR487 ring=ADDR488
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR471
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR467
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR489 ring=ADDR490
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR468
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR464
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR491
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR491 0
+.. Expr dump @ ADDR451
+.. op=75 (print) arg1=ADDR492 arg2=(nil) parent=ADDR449
+.. eval=actPrint metrics=(nil) ring=ADDR493
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR492
+.. .. op=76 (<action arg node>) arg1=ADDR494 arg2=(nil) parent=ADDR451
+.. .. eval=actArg metrics=(nil) ring=ADDR495
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR494
+.. .. .. op=80 (<nop node>) arg1=ADDR496 arg2=(nil) parent=ADDR492
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR497
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR497 "boolean8:"
+.. .. .. .. Expr dump @ ADDR496
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR494
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR498
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR498 " [%i] %v"
+
+Rule: expr_14
+Expr dump @ ADDR499
+ op=0 (->) arg1=ADDR500 arg2=ADDR501 parent=(nil)
+ eval=rule metrics=ADDR502 ring=ADDR503
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR500
+.. op=34 (>) arg1=ADDR504 arg2=ADDR505 parent=ADDR499
+.. eval=cndGt_n_1 metrics=ADDR502 ring=ADDR506
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR504
+.. .. op=60 (count_inst) arg1=ADDR507 arg2=(nil) parent=ADDR500
+.. .. eval=cndCount_inst metrics=ADDR502 ring=ADDR508
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=count
+.. .. .. Expr dump @ ADDR507
+.. .. .. op=34 (>) arg1=ADDR509 arg2=ADDR510 parent=ADDR504
+.. .. .. eval=cndGt_n_1 metrics=ADDR502 ring=ADDR511
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR509
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR507
+.. .. .. .. eval=cndFetch_all metrics=ADDR502 ring=ADDR512
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR510
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR507
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR513
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR513 0
+.. .. Expr dump @ ADDR505
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR500
+.. .. eval=(nil)() metrics=(nil) ring=ADDR514
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR514 0
+.. Expr dump @ ADDR501
+.. op=75 (print) arg1=ADDR515 arg2=(nil) parent=ADDR499
+.. eval=actPrint metrics=(nil) ring=ADDR516
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR515
+.. .. op=76 (<action arg node>) arg1=ADDR517 arg2=(nil) parent=ADDR501
+.. .. eval=actArg metrics=(nil) ring=ADDR518
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR517
+.. .. .. op=80 (<nop node>) arg1=ADDR519 arg2=(nil) parent=ADDR515
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR520
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR520 "count_inst:"
+.. .. .. .. Expr dump @ ADDR519
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR517
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR521
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR521 "[%i] %v"
+
+Rule: expr_15
+Expr dump @ ADDR522
+ op=0 (->) arg1=ADDR523 arg2=ADDR524 parent=(nil)
+ eval=rule metrics=ADDR525 ring=ADDR526
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR523
+.. op=54 (some_inst) arg1=ADDR527 arg2=(nil) parent=ADDR522
+.. eval=cndSome_inst metrics=ADDR525 ring=ADDR528
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR527
+.. .. op=45 (match_inst) arg1=ADDR529 arg2=ADDR530 parent=ADDR523
+.. .. eval=ADDR531 metrics=ADDR525 ring=ADDR532
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR529
+.. .. .. op=34 (>) arg1=ADDR533 arg2=ADDR534 parent=ADDR527
+.. .. .. eval=cndGt_n_1 metrics=ADDR525 ring=ADDR535
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR533
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR529
+.. .. .. .. eval=cndFetch_all metrics=ADDR525 ring=ADDR536
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR534
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR529
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR537
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR537 100
+.. .. .. Expr dump @ ADDR530
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR527
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR538
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=REGEX units=
+.. .. .. handle=ADDR538
+.. Expr dump @ ADDR524
+.. op=75 (print) arg1=ADDR539 arg2=(nil) parent=ADDR522
+.. eval=actPrint metrics=(nil) ring=ADDR540
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR539
+.. .. op=76 (<action arg node>) arg1=ADDR541 arg2=(nil) parent=ADDR524
+.. .. eval=actArg metrics=(nil) ring=ADDR542
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR541
+.. .. .. op=80 (<nop node>) arg1=ADDR543 arg2=(nil) parent=ADDR539
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR544
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR544 "match_inst:"
+.. .. .. .. Expr dump @ ADDR543
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR541
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR545
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR545 " [%i] %v"
+
+Rule: expr_16
+Expr dump @ ADDR546
+ op=0 (->) arg1=ADDR547 arg2=ADDR548 parent=(nil)
+ eval=rule metrics=ADDR549 ring=ADDR550
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR547
+.. op=54 (some_inst) arg1=ADDR551 arg2=(nil) parent=ADDR546
+.. eval=cndSome_inst metrics=ADDR549 ring=ADDR552
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR551
+.. .. op=46 (nomatch_inst) arg1=ADDR553 arg2=ADDR554 parent=ADDR547
+.. .. eval=ADDR531 metrics=ADDR549 ring=ADDR555
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR553
+.. .. .. op=34 (>) arg1=ADDR556 arg2=ADDR557 parent=ADDR551
+.. .. .. eval=cndGt_n_1 metrics=ADDR549 ring=ADDR558
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR556
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR553
+.. .. .. .. eval=cndFetch_all metrics=ADDR549 ring=ADDR559
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR557
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR553
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR560
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR560 200
+.. .. .. Expr dump @ ADDR554
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR551
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR561
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=REGEX units=
+.. .. .. handle=ADDR561
+.. Expr dump @ ADDR548
+.. op=75 (print) arg1=ADDR562 arg2=(nil) parent=ADDR546
+.. eval=actPrint metrics=(nil) ring=ADDR563
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR562
+.. .. op=76 (<action arg node>) arg1=ADDR564 arg2=(nil) parent=ADDR548
+.. .. eval=actArg metrics=(nil) ring=ADDR565
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR564
+.. .. .. op=80 (<nop node>) arg1=ADDR566 arg2=(nil) parent=ADDR562
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR567
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=13
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR567 "nomatch_inst:"
+.. .. .. .. Expr dump @ ADDR566
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR564
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR568
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR568 " [%i] %v"
+
+Rule: expr_17
+Expr dump @ ADDR569
+ op=0 (->) arg1=ADDR570 arg2=ADDR571 parent=(nil)
+ eval=rule metrics=ADDR572 ring=ADDR573
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR570
+.. op=51 (all_inst) arg1=ADDR574 arg2=(nil) parent=ADDR569
+.. eval=cndAll_inst metrics=ADDR572 ring=ADDR575
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR574
+.. .. op=30 (==) arg1=ADDR576 arg2=ADDR577 parent=ADDR570
+.. .. eval=cndEq_n_1 metrics=ADDR572 ring=ADDR578
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR576
+.. .. .. op=3 (rate) arg1=ADDR579 arg2=(nil) parent=ADDR574
+.. .. .. eval=cndRate_n metrics=ADDR572 ring=ADDR580
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR579
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR576
+.. .. .. .. eval=cndFetch_all metrics=ADDR572 ring=ADDR581
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=2 nvals=18 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR577
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR574
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR582
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR582 0
+.. Expr dump @ ADDR571
+.. op=75 (print) arg1=ADDR583 arg2=(nil) parent=ADDR569
+.. eval=actPrint metrics=(nil) ring=ADDR584
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR583
+.. .. op=76 (<action arg node>) arg1=ADDR585 arg2=(nil) parent=ADDR571
+.. .. eval=actArg metrics=(nil) ring=ADDR586
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR585
+.. .. .. op=80 (<nop node>) arg1=ADDR587 arg2=(nil) parent=ADDR583
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR588
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=5
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR588 "rate:"
+.. .. .. .. Expr dump @ ADDR587
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR585
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR589
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR589 " [%i] %v"
+
+Rule: expr_18
+Expr dump @ ADDR590
+ op=0 (->) arg1=ADDR591 arg2=ADDR592 parent=(nil)
+ eval=rule metrics=ADDR593 ring=ADDR594
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR591
+.. op=57 (pcnt_inst) arg1=ADDR595 arg2=ADDR596 parent=ADDR590
+.. eval=cndPcnt_inst metrics=ADDR593 ring=ADDR597
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR595
+.. .. op=35 (>=) arg1=ADDR598 arg2=ADDR599 parent=ADDR591
+.. .. eval=cndGte_n_1 metrics=ADDR593 ring=ADDR600
+.. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. nsmpls=1 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR598
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR595
+.. .. .. eval=cndFetch_all metrics=ADDR593 ring=ADDR601
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. .. nsmpls=1 nvals=3 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR599
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR595
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR602
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR602 200
+.. .. Expr dump @ ADDR596
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR603
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR603 0.66
+.. Expr dump @ ADDR592
+.. op=75 (print) arg1=ADDR604 arg2=(nil) parent=ADDR590
+.. eval=actPrint metrics=(nil) ring=ADDR605
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR604
+.. .. op=76 (<action arg node>) arg1=ADDR606 arg2=(nil) parent=ADDR592
+.. .. eval=actArg metrics=(nil) ring=ADDR607
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR606
+.. .. .. op=80 (<nop node>) arg1=ADDR608 arg2=(nil) parent=ADDR604
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR609
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR609 "66%_inst:"
+.. .. .. .. Expr dump @ ADDR608
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR606
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR610
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR610 " [%i] %v"
+
+Rule: expr_19
+Expr dump @ ADDR611
+ op=0 (->) arg1=ADDR612 arg2=ADDR613 parent=(nil)
+ eval=rule metrics=ADDR614 ring=ADDR615
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR612
+.. op=52 (all_sample) arg1=ADDR616 arg2=(nil) parent=ADDR611
+.. eval=cndAll_time metrics=ADDR614 ring=ADDR617
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR616
+.. .. op=30 (==) arg1=ADDR618 arg2=ADDR619 parent=ADDR612
+.. .. eval=cndEq_1_1 metrics=ADDR614 ring=ADDR620
+.. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR618
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR616
+.. .. .. eval=cndFetch_1 metrics=ADDR614 ring=ADDR621
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR619
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR616
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR622
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR622 10
+.. Expr dump @ ADDR613
+.. op=75 (print) arg1=ADDR623 arg2=(nil) parent=ADDR611
+.. eval=actPrint metrics=(nil) ring=ADDR624
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR623
+.. .. op=76 (<action arg node>) arg1=ADDR625 arg2=(nil) parent=ADDR613
+.. .. eval=actArg metrics=(nil) ring=ADDR626
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR625
+.. .. .. op=80 (<nop node>) arg1=ADDR627 arg2=(nil) parent=ADDR623
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR628
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR628 "all_sample: "
+.. .. .. .. Expr dump @ ADDR627
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR625
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR629
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR629 " [%i] %v"
+
+Rule: expr_20
+Expr dump @ ADDR630
+ op=0 (->) arg1=ADDR631 arg2=ADDR632 parent=(nil)
+ eval=rule metrics=ADDR633 ring=ADDR634
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR631
+.. op=58 (pcnt_sample) arg1=ADDR635 arg2=ADDR636 parent=ADDR630
+.. eval=cndPcnt_time metrics=ADDR633 ring=ADDR637
+.. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR635
+.. .. op=54 (some_inst) arg1=ADDR638 arg2=(nil) parent=ADDR631
+.. .. eval=cndSome_inst metrics=ADDR633 ring=ADDR639
+.. .. valid=0 cardinality[H,I,T]=[1,-1,2] tspan=1
+.. .. nsmpls=2 nvals=2 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR638
+.. .. .. op=35 (>=) arg1=ADDR640 arg2=ADDR641 parent=ADDR635
+.. .. .. eval=cndGte_n_1 metrics=ADDR633 ring=ADDR642
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,2] tspan=3
+.. .. .. nsmpls=2 nvals=6 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR640
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR638
+.. .. .. .. eval=cndFetch_n metrics=ADDR633 ring=ADDR643
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,3,2] tspan=3
+.. .. .. .. nsmpls=2 nvals=6 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR641
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR638
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR644
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR644 500
+.. .. Expr dump @ ADDR636
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR645
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR645 0.6
+.. Expr dump @ ADDR632
+.. op=75 (print) arg1=ADDR646 arg2=(nil) parent=ADDR630
+.. eval=actPrint metrics=(nil) ring=ADDR647
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR646
+.. .. op=76 (<action arg node>) arg1=ADDR648 arg2=(nil) parent=ADDR632
+.. .. eval=actArg metrics=(nil) ring=ADDR649
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR648
+.. .. .. op=80 (<nop node>) arg1=ADDR650 arg2=(nil) parent=ADDR646
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR651
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR651 "60%_sample: "
+.. .. .. .. Expr dump @ ADDR650
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR648
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR652
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR652 " [%i] %v"
+
+Rule: expr_21
+Expr dump @ ADDR653
+ op=0 (->) arg1=ADDR654 arg2=ADDR655 parent=(nil)
+ eval=rule metrics=ADDR656 ring=ADDR657
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR654
+.. op=30 (==) arg1=ADDR658 arg2=ADDR659 parent=ADDR653
+.. eval=cndEq_1_1 metrics=ADDR656 ring=ADDR660
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR658
+.. .. op=21 (min_sample) arg1=ADDR661 arg2=(nil) parent=ADDR654
+.. .. eval=cndMin_time metrics=ADDR656 ring=ADDR662
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR661
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR658
+.. .. .. eval=cndFetch_1 metrics=ADDR656 ring=ADDR663
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR659
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR654
+.. .. eval=(nil)() metrics=(nil) ring=ADDR664
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR664 100
+.. Expr dump @ ADDR655
+.. op=75 (print) arg1=ADDR665 arg2=(nil) parent=ADDR653
+.. eval=actPrint metrics=(nil) ring=ADDR666
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR665
+.. .. op=76 (<action arg node>) arg1=ADDR667 arg2=(nil) parent=ADDR655
+.. .. eval=actArg metrics=(nil) ring=ADDR668
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR667
+.. .. .. op=80 (<nop node>) arg1=ADDR669 arg2=(nil) parent=ADDR665
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR670
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR670 "min_sample: "
+.. .. .. .. Expr dump @ ADDR669
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR667
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR671
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR671 " [%i] %v"
+
+Rule: expr_22
+Expr dump @ ADDR672
+ op=0 (->) arg1=ADDR673 arg2=ADDR674 parent=(nil)
+ eval=rule metrics=ADDR675 ring=ADDR676
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR673
+.. op=30 (==) arg1=ADDR677 arg2=ADDR678 parent=ADDR672
+.. eval=cndEq_1_1 metrics=ADDR675 ring=ADDR679
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR677
+.. .. op=18 (max_sample) arg1=ADDR680 arg2=(nil) parent=ADDR673
+.. .. eval=cndMax_time metrics=ADDR675 ring=ADDR681
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR680
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR677
+.. .. .. eval=cndFetch_1 metrics=ADDR675 ring=ADDR682
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR678
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR673
+.. .. eval=(nil)() metrics=(nil) ring=ADDR683
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR683 100
+.. Expr dump @ ADDR674
+.. op=75 (print) arg1=ADDR684 arg2=(nil) parent=ADDR672
+.. eval=actPrint metrics=(nil) ring=ADDR685
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR684
+.. .. op=76 (<action arg node>) arg1=ADDR686 arg2=(nil) parent=ADDR674
+.. .. eval=actArg metrics=(nil) ring=ADDR687
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR686
+.. .. .. op=80 (<nop node>) arg1=ADDR688 arg2=(nil) parent=ADDR684
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR689
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR689 "max_sample: "
+.. .. .. .. Expr dump @ ADDR688
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR686
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR690
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR690 " [%i] %v"
+
+Rule: expr_23
+Expr dump @ ADDR691
+ op=0 (->) arg1=ADDR692 arg2=ADDR693 parent=(nil)
+ eval=rule metrics=ADDR694 ring=ADDR695
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR692
+.. op=30 (==) arg1=ADDR696 arg2=ADDR697 parent=ADDR691
+.. eval=cndEq_1_1 metrics=ADDR694 ring=ADDR698
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR696
+.. .. op=12 (sum_sample) arg1=ADDR699 arg2=(nil) parent=ADDR692
+.. .. eval=cndSum_time metrics=ADDR694 ring=ADDR700
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR699
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR696
+.. .. .. eval=cndFetch_n metrics=ADDR694 ring=ADDR701
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,4] tspan=1
+.. .. .. nsmpls=4 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR697
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR692
+.. .. eval=(nil)() metrics=(nil) ring=ADDR702
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR702 400
+.. Expr dump @ ADDR693
+.. op=75 (print) arg1=ADDR703 arg2=(nil) parent=ADDR691
+.. eval=actPrint metrics=(nil) ring=ADDR704
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR703
+.. .. op=76 (<action arg node>) arg1=ADDR705 arg2=(nil) parent=ADDR693
+.. .. eval=actArg metrics=(nil) ring=ADDR706
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR705
+.. .. .. op=80 (<nop node>) arg1=ADDR707 arg2=(nil) parent=ADDR703
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR708
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR708 "sum_sample: "
+.. .. .. .. Expr dump @ ADDR707
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR705
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR709
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR709 " [%i] %v"
+
+Rule: expr_24
+Expr dump @ ADDR710
+ op=0 (->) arg1=ADDR711 arg2=ADDR712 parent=(nil)
+ eval=rule metrics=ADDR713 ring=ADDR714
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR711
+.. op=30 (==) arg1=ADDR715 arg2=ADDR716 parent=ADDR710
+.. eval=cndEq_1_1 metrics=ADDR713 ring=ADDR717
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR715
+.. .. op=15 (avg_sample) arg1=ADDR718 arg2=(nil) parent=ADDR711
+.. .. eval=cndAvg_time metrics=ADDR713 ring=ADDR719
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR718
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR715
+.. .. .. eval=cndFetch_n metrics=ADDR713 ring=ADDR720
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR716
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR711
+.. .. eval=(nil)() metrics=(nil) ring=ADDR721
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR721 200
+.. Expr dump @ ADDR712
+.. op=75 (print) arg1=ADDR722 arg2=(nil) parent=ADDR710
+.. eval=actPrint metrics=(nil) ring=ADDR723
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR722
+.. .. op=76 (<action arg node>) arg1=ADDR724 arg2=(nil) parent=ADDR712
+.. .. eval=actArg metrics=(nil) ring=ADDR725
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR724
+.. .. .. op=80 (<nop node>) arg1=ADDR726 arg2=(nil) parent=ADDR722
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR727
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR727 "avg_sample: "
+.. .. .. .. Expr dump @ ADDR726
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR724
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR728
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR728 " [%i] %v"
+
+Rule: expr_25
+Expr dump @ ADDR729
+ op=0 (->) arg1=ADDR730 arg2=ADDR731 parent=(nil)
+ eval=rule metrics=ADDR732 ring=ADDR733
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR730
+.. op=30 (==) arg1=ADDR734 arg2=ADDR735 parent=ADDR729
+.. eval=cndEq_1_1 metrics=ADDR732 ring=ADDR736
+.. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR734
+.. .. op=61 (count_sample) arg1=ADDR737 arg2=(nil) parent=ADDR730
+.. .. eval=cndCount_time metrics=ADDR732 ring=ADDR738
+.. .. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=count
+.. .. .. Expr dump @ ADDR737
+.. .. .. op=54 (some_inst) arg1=ADDR739 arg2=(nil) parent=ADDR734
+.. .. .. eval=cndSome_inst metrics=ADDR732 ring=ADDR740
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR739
+.. .. .. .. op=30 (==) arg1=ADDR741 arg2=ADDR742 parent=ADDR737
+.. .. .. .. eval=cndEq_n_1 metrics=ADDR732 ring=ADDR743
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,3,3] tspan=3
+.. .. .. .. nsmpls=3 nvals=9 sem=TRUTH units=
+.. .. .. .. .. Expr dump @ ADDR741
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR739
+.. .. .. .. .. eval=cndFetch_n metrics=ADDR732 ring=ADDR744
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,3,3] tspan=3
+.. .. .. .. .. nsmpls=3 nvals=9 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR742
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR739
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR745
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. .. smpls[0].ptr ADDR745 300
+.. .. Expr dump @ ADDR735
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR730
+.. .. eval=(nil)() metrics=(nil) ring=ADDR746
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR746 3
+.. Expr dump @ ADDR731
+.. op=75 (print) arg1=ADDR747 arg2=(nil) parent=ADDR729
+.. eval=actPrint metrics=(nil) ring=ADDR748
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR747
+.. .. op=76 (<action arg node>) arg1=ADDR749 arg2=(nil) parent=ADDR731
+.. .. eval=actArg metrics=(nil) ring=ADDR750
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR749
+.. .. .. op=80 (<nop node>) arg1=ADDR751 arg2=(nil) parent=ADDR747
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR752
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=14
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR752 "count_sample: "
+.. .. .. .. Expr dump @ ADDR751
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR749
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR753
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR753 " [%i] %v"
+
+Rule: expr_26
+Expr dump @ ADDR754
+ op=0 (->) arg1=ADDR755 arg2=ADDR756 parent=(nil)
+ eval=rule metrics=ADDR757 ring=ADDR758
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR755
+.. op=34 (>) arg1=ADDR759 arg2=ADDR760 parent=ADDR754
+.. eval=cndGt_n_1 metrics=ADDR757 ring=ADDR761
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR759
+.. .. op=20 (min_inst) arg1=ADDR762 arg2=(nil) parent=ADDR755
+.. .. eval=cndMin_inst metrics=ADDR757 ring=ADDR763
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR762
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR759
+.. .. .. eval=cndFetch_all metrics=ADDR757 ring=ADDR764
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. Expr dump @ ADDR760
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR755
+.. .. eval=(nil)() metrics=(nil) ring=ADDR765
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR765 0
+.. Expr dump @ ADDR756
+.. op=75 (print) arg1=ADDR766 arg2=(nil) parent=ADDR754
+.. eval=actPrint metrics=(nil) ring=ADDR767
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR766
+.. .. op=76 (<action arg node>) arg1=ADDR768 arg2=(nil) parent=ADDR756
+.. .. eval=actArg metrics=(nil) ring=ADDR769
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR768
+.. .. .. op=80 (<nop node>) arg1=ADDR770 arg2=(nil) parent=ADDR766
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR771
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR771 "min_inst:"
+.. .. .. .. Expr dump @ ADDR770
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR768
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR772
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR772 " @%h [%i] %v"
+
+Rule: expr_27
+Expr dump @ ADDR773
+ op=0 (->) arg1=ADDR774 arg2=ADDR775 parent=(nil)
+ eval=rule metrics=ADDR776 ring=ADDR777
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR774
+.. op=34 (>) arg1=ADDR778 arg2=ADDR779 parent=ADDR773
+.. eval=cndGt_n_1 metrics=ADDR776 ring=ADDR780
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR778
+.. .. op=17 (max_inst) arg1=ADDR781 arg2=(nil) parent=ADDR774
+.. .. eval=cndMax_inst metrics=ADDR776 ring=ADDR782
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR781
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR778
+.. .. .. eval=cndFetch_all metrics=ADDR776 ring=ADDR783
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. Expr dump @ ADDR779
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR774
+.. .. eval=(nil)() metrics=(nil) ring=ADDR784
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR784 0
+.. Expr dump @ ADDR775
+.. op=75 (print) arg1=ADDR785 arg2=(nil) parent=ADDR773
+.. eval=actPrint metrics=(nil) ring=ADDR786
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR785
+.. .. op=76 (<action arg node>) arg1=ADDR787 arg2=(nil) parent=ADDR775
+.. .. eval=actArg metrics=(nil) ring=ADDR788
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR787
+.. .. .. op=80 (<nop node>) arg1=ADDR789 arg2=(nil) parent=ADDR785
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR790
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR790 "max_inst:"
+.. .. .. .. Expr dump @ ADDR789
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR787
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR791
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR791 " @%h [%i] %v"
+
+Rule: expr_28
+Expr dump @ ADDR792
+ op=0 (->) arg1=ADDR793 arg2=ADDR794 parent=(nil)
+ eval=rule metrics=ADDR795 ring=ADDR796
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR793
+.. op=30 (==) arg1=ADDR797 arg2=ADDR798 parent=ADDR792
+.. eval=cndEq_1_1 metrics=ADDR795 ring=ADDR799
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR797
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR793
+.. .. eval=cndFetch_1 metrics=ADDR795 ring=ADDR800
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR798
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR793
+.. .. eval=(nil)() metrics=(nil) ring=ADDR801
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR801 1
+.. Expr dump @ ADDR794
+.. op=71 (|) arg1=ADDR802 arg2=ADDR803 parent=ADDR792
+.. eval=actOr metrics=(nil) ring=ADDR804
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR802
+.. .. op=72 (shell) arg1=ADDR805 arg2=(nil) parent=ADDR794
+.. .. eval=actShell metrics=(nil) ring=ADDR806
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR805
+.. .. .. op=76 (<action arg node>) arg1=ADDR807 arg2=(nil) parent=ADDR802
+.. .. .. eval=actArg metrics=(nil) ring=ADDR808
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR807
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR805
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR809
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=5
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR809 "false"
+.. .. Expr dump @ ADDR803
+.. .. op=75 (print) arg1=ADDR810 arg2=(nil) parent=ADDR794
+.. .. eval=actPrint metrics=(nil) ring=ADDR811
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR810
+.. .. .. op=76 (<action arg node>) arg1=ADDR812 arg2=(nil) parent=ADDR803
+.. .. .. eval=actArg metrics=(nil) ring=ADDR813
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR812
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR810
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR814
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR814 "false |: %v"
+
+Rule: expr_29
+Expr dump @ ADDR815
+ op=0 (->) arg1=ADDR816 arg2=ADDR817 parent=(nil)
+ eval=rule metrics=ADDR818 ring=ADDR819
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR816
+.. op=30 (==) arg1=ADDR820 arg2=ADDR821 parent=ADDR815
+.. eval=cndEq_1_1 metrics=ADDR818 ring=ADDR822
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR820
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR816
+.. .. eval=cndFetch_1 metrics=ADDR818 ring=ADDR823
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR821
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR816
+.. .. eval=(nil)() metrics=(nil) ring=ADDR824
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR824 10
+.. Expr dump @ ADDR817
+.. op=70 (&) arg1=ADDR825 arg2=ADDR826 parent=ADDR815
+.. eval=actAnd metrics=(nil) ring=ADDR827
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR825
+.. .. op=72 (shell) arg1=ADDR828 arg2=(nil) parent=ADDR817
+.. .. eval=actShell metrics=(nil) ring=ADDR829
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR828
+.. .. .. op=76 (<action arg node>) arg1=ADDR830 arg2=(nil) parent=ADDR825
+.. .. .. eval=actArg metrics=(nil) ring=ADDR831
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR830
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR828
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR832
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=4
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR832 "true"
+.. .. Expr dump @ ADDR826
+.. .. op=75 (print) arg1=ADDR833 arg2=(nil) parent=ADDR817
+.. .. eval=actPrint metrics=(nil) ring=ADDR834
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR833
+.. .. .. op=76 (<action arg node>) arg1=ADDR835 arg2=(nil) parent=ADDR826
+.. .. .. eval=actArg metrics=(nil) ring=ADDR836
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR835
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR833
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR837
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=10
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR837 "true &: %v"
+
+Rule: expr_30
+Expr dump @ ADDR838
+ op=0 (->) arg1=ADDR839 arg2=ADDR840 parent=(nil)
+ eval=rule metrics=ADDR841 ring=ADDR842
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR839
+.. op=30 (==) arg1=ADDR843 arg2=ADDR844 parent=ADDR838
+.. eval=cndEq_1_1 metrics=ADDR841 ring=ADDR845
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR843
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR839
+.. .. eval=cndFetch_1 metrics=ADDR841 ring=ADDR846
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR844
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR839
+.. .. eval=(nil)() metrics=(nil) ring=ADDR847
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR847 100
+.. Expr dump @ ADDR840
+.. op=71 (|) arg1=ADDR848 arg2=ADDR849 parent=ADDR838
+.. eval=actOr metrics=(nil) ring=ADDR850
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR848
+.. .. op=75 (print) arg1=ADDR851 arg2=(nil) parent=ADDR840
+.. .. eval=actPrint metrics=(nil) ring=ADDR852
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR851
+.. .. .. op=76 (<action arg node>) arg1=ADDR853 arg2=(nil) parent=ADDR848
+.. .. .. eval=actArg metrics=(nil) ring=ADDR854
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR853
+.. .. .. .. op=80 (<nop node>) arg1=ADDR855 arg2=(nil) parent=ADDR851
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR856
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR856 "print |:"
+.. .. .. .. .. Expr dump @ ADDR855
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR853
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR857
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=3
+.. .. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. .. smpls[0].ptr ADDR857 " %v"
+.. .. Expr dump @ ADDR849
+.. .. op=75 (print) arg1=ADDR858 arg2=(nil) parent=ADDR840
+.. .. eval=actPrint metrics=(nil) ring=ADDR859
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR858
+.. .. .. op=76 (<action arg node>) arg1=ADDR860 arg2=(nil) parent=ADDR849
+.. .. .. eval=actArg metrics=(nil) ring=ADDR861
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR860
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR858
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR862
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=22
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR862 "bozo don't execute me!"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> expr_1 =
+some_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 500) -> print "some > 500:" " [%i] %v";
+
+expr_2 =
+all_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 0) -> shell "echo 'all > 0:'" " [%i] %v";
+
+expr_3 =
+some_sample (hinv.ncpu :LOCALHOST @0..2 == hinv.ncpu :LOCALHOST) -> ([level=30 tag="pcp-pmie"] "PCP QA 514 - please ignore: some sample ncpu equal") syslog 10;
+
+expr_4 =
+((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0 -> print "arith %v";
+
+expr_5 =
+(sample.long.one :LOCALHOST != 2) && (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean1 %v";
+
+expr_6 =
+(sample.long.one :LOCALHOST <= 0) && (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean2 %v";
+
+expr_7 =
+(sample.long.one :LOCALHOST < 9) && (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean3 %v";
+
+expr_8 =
+(sample.long.one :LOCALHOST < 1) && (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean4 %v";
+
+expr_9 =
+(min_inst (no_such_metric :LOCALHOST) == 100) || (sample.long.million :LOCALHOST > 0) -> print "error1 %v";
+
+expr_10 =
+(min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 100) || (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean5:" " [%i] %v";
+
+expr_11 =
+(max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 100) || (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean6:" " [%i] %v";
+
+expr_12 =
+(sum_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 500) || (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean7:" " [%i] %v";
+
+expr_13 =
+(avg_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 0) || (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean8:" " [%i] %v";
+
+expr_14 =
+count_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 0) > 0 -> print "count_inst:" "[%i] %v";
+
+expr_15 =
+some_inst (match_inst /<regex>/ (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 100)) -> print "match_inst:" " [%i] %v";
+
+expr_16 =
+some_inst (nomatch_inst /<regex>/ (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 200)) -> print "nomatch_inst:" " [%i] %v";
+
+expr_17 =
+all_inst (rate (sample.bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 0) -> print "rate:" " [%i] %v";
+
+expr_18 =
+pcnt_inst 66% (sample.colour :LOCALHOST #red #green #blue >= 200) -> print "66%_inst:" " [%i] %v";
+
+expr_19 =
+all_sample (sample.long.ten :LOCALHOST @0..2 == 10) -> print "all_sample: " " [%i] %v";
+
+expr_20 =
+pcnt_sample 60% (some_inst (sample.part_bin :LOCALHOST #bin-300 #bin-500 #bin-700 @0..1 >= 500)) -> print "60%_sample: " " [%i] %v";
+
+expr_21 =
+min_sample (sample.long.hundred :LOCALHOST @0..1) == 100 -> print "min_sample: " " [%i] %v";
+
+expr_22 =
+max_sample (sample.long.hundred :LOCALHOST @0..1) == 100 -> print "max_sample: " " [%i] %v";
+
+expr_23 =
+sum_sample (sample.bin :LOCALHOST #bin-100 @0..3) == 400 -> print "sum_sample: " " [%i] %v";
+
+expr_24 =
+avg_sample (sample.bin :LOCALHOST #bin-200 @0..1) == 200 -> print "avg_sample: " " [%i] %v";
+
+expr_25 =
+count_sample (some_inst (sample.bin :LOCALHOST #bin-200 #bin-300 #bin-400 @0..2 == 300)) == 3 -> print "count_sample: " " [%i] %v";
+
+expr_26 =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 0 -> print "min_inst:" " @%h [%i] %v";
+
+expr_27 =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 0 -> print "max_inst:" " @%h [%i] %v";
+
+expr_28 =
+sample.long.one :LOCALHOST == 1 -> (shell "false") | (print "false |: %v");
+
+expr_29 =
+sample.long.ten :LOCALHOST == 10 -> (shell "true") & (print "true &: %v");
+
+expr_30 =
+sample.long.hundred :LOCALHOST == 100 -> (print "print |:" " %v") | (print "bozo don't execute me!");
+
+pmie> DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [%i] %v
+DATE: boolean6: [%i] %v
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: avg_sample: [bin-200] 200
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: sum_sample: [bin-100] 400
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: sum_sample: [bin-100] 400
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+pmie> expr_1 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+hinv.ncpu :LOCALHOST @0..2
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+(((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_7 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_8 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_9 (subexpression for %h, %i and %v bindings) =
+min_inst (no_such_metric :LOCALHOST)
+
+expr_10 (subexpression for %h, %i and %v bindings) =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_11 (subexpression for %h, %i and %v bindings) =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_12 (subexpression for %h, %i and %v bindings) =
+sum_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_13 (subexpression for %h, %i and %v bindings) =
+avg_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_14 (subexpression for %h, %i and %v bindings) =
+count_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900 > 0)
+
+expr_15 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_16 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_17 (subexpression for %h, %i and %v bindings) =
+rate (sample.bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900)
+
+expr_18 (subexpression for %h, %i and %v bindings) =
+sample.colour :LOCALHOST #red #green #blue
+
+expr_19 (subexpression for %h, %i and %v bindings) =
+sample.long.ten :LOCALHOST @0..2
+
+expr_20 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-300 #bin-500 #bin-700 @0..1
+
+expr_21 (subexpression for %h, %i and %v bindings) =
+min_sample (sample.long.hundred :LOCALHOST @0..1)
+
+expr_22 (subexpression for %h, %i and %v bindings) =
+max_sample (sample.long.hundred :LOCALHOST @0..1)
+
+expr_23 (subexpression for %h, %i and %v bindings) =
+sum_sample (sample.bin :LOCALHOST #bin-100 @0..3)
+
+expr_24 (subexpression for %h, %i and %v bindings) =
+avg_sample (sample.bin :LOCALHOST #bin-200 @0..1)
+
+expr_25 (subexpression for %h, %i and %v bindings) =
+count_sample (some_inst (sample.bin :LOCALHOST #bin-200 #bin-300 #bin-400 @0..2 == 300))
+
+expr_26 (subexpression for %h, %i and %v bindings) =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_27 (subexpression for %h, %i and %v bindings) =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_28 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_29 (subexpression for %h, %i and %v bindings) =
+sample.long.ten :LOCALHOST
+
+expr_30 (subexpression for %h, %i and %v bindings) =
+sample.long.hundred :LOCALHOST
+
+pmie>
+SYSLOG ...
+...: some sample ncpu equal [<%i undefined>] N N N
diff --git a/qa/514.out.3 b/qa/514.out.3
new file mode 100644
index 0000000..052d47d
--- /dev/null
+++ b/qa/514.out.3
@@ -0,0 +1,2438 @@
+QA output created by 514
+pmie: metric no_such_metric not in namespace for host LOCALHOST
+pmLookupName failed: Unknown metric name
+Rule: expr_1
+Expr dump @ ADDR000
+ op=0 (->) arg1=ADDR001 arg2=ADDR002 parent=(nil)
+ eval=rule metrics=ADDR003 ring=ADDR004
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR001
+.. op=54 (some_inst) arg1=ADDR005 arg2=(nil) parent=ADDR000
+.. eval=cndSome_inst metrics=ADDR003 ring=ADDR006
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR005
+.. .. op=34 (>) arg1=ADDR007 arg2=ADDR008 parent=ADDR001
+.. .. eval=cndGt_n_1 metrics=ADDR003 ring=ADDR009
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR007
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR005
+.. .. .. eval=cndFetch_all metrics=ADDR003 ring=ADDR010
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR008
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR005
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR011
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR011 500
+.. Expr dump @ ADDR002
+.. op=75 (print) arg1=ADDR012 arg2=(nil) parent=ADDR000
+.. eval=actPrint metrics=(nil) ring=ADDR013
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR012
+.. .. op=76 (<action arg node>) arg1=ADDR014 arg2=(nil) parent=ADDR002
+.. .. eval=actArg metrics=(nil) ring=ADDR015
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR014
+.. .. .. op=80 (<nop node>) arg1=ADDR016 arg2=(nil) parent=ADDR012
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR017
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR017 "some > 500:"
+.. .. .. .. Expr dump @ ADDR016
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR014
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR018
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR018 " [%i] %v"
+
+Rule: expr_2
+Expr dump @ ADDR019
+ op=0 (->) arg1=ADDR020 arg2=ADDR021 parent=(nil)
+ eval=rule metrics=ADDR022 ring=ADDR023
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR020
+.. op=51 (all_inst) arg1=ADDR024 arg2=(nil) parent=ADDR019
+.. eval=cndAll_inst metrics=ADDR022 ring=ADDR025
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR024
+.. .. op=34 (>) arg1=ADDR026 arg2=ADDR027 parent=ADDR020
+.. .. eval=cndGt_n_1 metrics=ADDR022 ring=ADDR028
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR026
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR024
+.. .. .. eval=cndFetch_all metrics=ADDR022 ring=ADDR029
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR027
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR024
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR030
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR030 0
+.. Expr dump @ ADDR021
+.. op=72 (shell) arg1=ADDR031 arg2=(nil) parent=ADDR019
+.. eval=actShell metrics=(nil) ring=ADDR032
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR031
+.. .. op=76 (<action arg node>) arg1=ADDR033 arg2=(nil) parent=ADDR021
+.. .. eval=actArg metrics=(nil) ring=ADDR034
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR033
+.. .. .. op=80 (<nop node>) arg1=ADDR035 arg2=(nil) parent=ADDR031
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR036
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=15
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR036 "echo 'all > 0:'"
+.. .. .. .. Expr dump @ ADDR035
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR033
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR037
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR037 " [%i] %v"
+
+Rule: expr_3
+Expr dump @ ADDR038
+ op=0 (->) arg1=ADDR039 arg2=ADDR040 parent=(nil)
+ eval=rule metrics=ADDR041 ring=ADDR042
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR039
+.. op=55 (some_sample) arg1=ADDR043 arg2=(nil) parent=ADDR038
+.. eval=cndSome_time metrics=ADDR041 ring=ADDR044
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR043
+.. .. op=30 (==) arg1=ADDR045 arg2=ADDR046 parent=ADDR039
+.. .. eval=cndEq_1_1 metrics=ADDR041 ring=ADDR047
+.. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR045
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR043
+.. .. .. eval=cndFetch_1 metrics=ADDR041 ring=ADDR048
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR046
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR043
+.. .. .. eval=cndFetch_1 metrics=ADDR049 ring=ADDR050
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. Expr dump @ ADDR040
+.. op=74 (syslog) arg1=ADDR051 arg2=ADDR052 parent=ADDR038
+.. eval=actSyslog metrics=(nil) ring=ADDR053
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR051
+.. .. op=76 (<action arg node>) arg1=ADDR054 arg2=ADDR055 parent=ADDR040
+.. .. eval=actArg metrics=(nil) ring=ADDR056
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR054
+.. .. .. op=80 (<nop node>) arg1=ADDR057 arg2=(nil) parent=ADDR051
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR058
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=50
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR058 "PCP QA 514 - please ignore: some sample ncpu equal"
+.. .. .. .. Expr dump @ ADDR057
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR054
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR059
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR059 " [%i] %v"
+.. .. .. Expr dump @ ADDR055
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR051
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR060
+.. .. .. valid=0 cardinality[H,I,T]=[0,0,0] tspan=0
+.. .. .. nsmpls=0 nvals=0 sem=UNKNOWN units=
+.. .. Expr dump @ ADDR052
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR040
+.. .. eval=(nil)() metrics=(nil) ring=ADDR061
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=sec
+.. .. smpls[0].ptr ADDR061 10
+
+Rule: expr_4
+Expr dump @ ADDR062
+ op=0 (->) arg1=ADDR063 arg2=ADDR064 parent=(nil)
+ eval=rule metrics=ADDR065 ring=ADDR066
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR063
+.. op=35 (>=) arg1=ADDR067 arg2=ADDR068 parent=ADDR062
+.. eval=cndGte_1_1 metrics=ADDR065 ring=ADDR069
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR067
+.. .. op=8 (/) arg1=ADDR070 arg2=ADDR071 parent=ADDR063
+.. .. eval=cndDiv_1_1 metrics=ADDR065 ring=ADDR072
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR070
+.. .. .. op=7 (*) arg1=ADDR073 arg2=ADDR074 parent=ADDR067
+.. .. .. eval=cndMul_1_1 metrics=ADDR065 ring=ADDR075
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR073
+.. .. .. .. op=6 (-) arg1=ADDR076 arg2=ADDR077 parent=ADDR070
+.. .. .. .. eval=cndSub_1_1 metrics=ADDR065 ring=ADDR078
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR076
+.. .. .. .. .. op=5 (+) arg1=ADDR079 arg2=ADDR080 parent=ADDR073
+.. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR065 ring=ADDR081
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR079
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR065 ring=ADDR082
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR080
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR083 ring=ADDR084
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR077
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR073
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR085 ring=ADDR086
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR074
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR070
+.. .. .. .. eval=cndFetch_1 metrics=ADDR087 ring=ADDR088
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR071
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR067
+.. .. .. eval=cndFetch_1 metrics=ADDR089 ring=ADDR090
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR068
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR063
+.. .. eval=(nil)() metrics=(nil) ring=ADDR091
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR091 0
+.. Expr dump @ ADDR064
+.. op=75 (print) arg1=ADDR092 arg2=(nil) parent=ADDR062
+.. eval=actPrint metrics=(nil) ring=ADDR093
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR092
+.. .. op=76 (<action arg node>) arg1=ADDR094 arg2=(nil) parent=ADDR064
+.. .. eval=actArg metrics=(nil) ring=ADDR095
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR094
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR092
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR096
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR096 "arith %v"
+
+Rule: expr_5
+Expr dump @ ADDR097
+ op=0 (->) arg1=ADDR098 arg2=ADDR099 parent=(nil)
+ eval=rule metrics=ADDR100 ring=ADDR101
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR098
+.. op=43 (&&) arg1=ADDR102 arg2=ADDR103 parent=ADDR097
+.. eval=cndAnd_1_1 metrics=ADDR100 ring=ADDR104
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR102
+.. .. op=31 (!=) arg1=ADDR105 arg2=ADDR106 parent=ADDR098
+.. .. eval=cndNeq_1_1 metrics=ADDR100 ring=ADDR107
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR105
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR102
+.. .. .. eval=cndFetch_1 metrics=ADDR100 ring=ADDR108
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR106
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR102
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR109
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR109 2
+.. .. Expr dump @ ADDR103
+.. .. op=35 (>=) arg1=ADDR110 arg2=ADDR111 parent=ADDR098
+.. .. eval=cndGte_1_1 metrics=ADDR112 ring=ADDR113
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR110
+.. .. .. op=8 (/) arg1=ADDR114 arg2=ADDR115 parent=ADDR103
+.. .. .. eval=cndDiv_1_1 metrics=ADDR112 ring=ADDR116
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR114
+.. .. .. .. op=7 (*) arg1=ADDR117 arg2=ADDR118 parent=ADDR110
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR112 ring=ADDR119
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR117
+.. .. .. .. .. op=6 (-) arg1=ADDR120 arg2=ADDR121 parent=ADDR114
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR112 ring=ADDR122
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR120
+.. .. .. .. .. .. op=5 (+) arg1=ADDR123 arg2=ADDR124 parent=ADDR117
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR112 ring=ADDR125
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR123
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR120
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR112 ring=ADDR126
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR124
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR120
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR127 ring=ADDR128
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR121
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR117
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR129 ring=ADDR130
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR118
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR114
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR131 ring=ADDR132
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR115
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR110
+.. .. .. .. eval=cndFetch_1 metrics=ADDR133 ring=ADDR134
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR111
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR103
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR135
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR135 0
+.. Expr dump @ ADDR099
+.. op=75 (print) arg1=ADDR136 arg2=(nil) parent=ADDR097
+.. eval=actPrint metrics=(nil) ring=ADDR137
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR136
+.. .. op=76 (<action arg node>) arg1=ADDR138 arg2=(nil) parent=ADDR099
+.. .. eval=actArg metrics=(nil) ring=ADDR139
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR138
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR136
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR140
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR140 "boolean1 %v"
+
+Rule: expr_6
+Expr dump @ ADDR141
+ op=0 (->) arg1=ADDR142 arg2=ADDR143 parent=(nil)
+ eval=rule metrics=ADDR144 ring=ADDR145
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR142
+.. op=43 (&&) arg1=ADDR146 arg2=ADDR147 parent=ADDR141
+.. eval=cndAnd_1_1 metrics=ADDR144 ring=ADDR148
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR146
+.. .. op=33 (<=) arg1=ADDR149 arg2=ADDR150 parent=ADDR142
+.. .. eval=cndLte_1_1 metrics=ADDR144 ring=ADDR151
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR149
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR146
+.. .. .. eval=cndFetch_1 metrics=ADDR144 ring=ADDR152
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR150
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR146
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR153
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR153 0
+.. .. Expr dump @ ADDR147
+.. .. op=35 (>=) arg1=ADDR154 arg2=ADDR155 parent=ADDR142
+.. .. eval=cndGte_1_1 metrics=ADDR156 ring=ADDR157
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR154
+.. .. .. op=8 (/) arg1=ADDR158 arg2=ADDR159 parent=ADDR147
+.. .. .. eval=cndDiv_1_1 metrics=ADDR156 ring=ADDR160
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR158
+.. .. .. .. op=7 (*) arg1=ADDR161 arg2=ADDR162 parent=ADDR154
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR156 ring=ADDR163
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR161
+.. .. .. .. .. op=6 (-) arg1=ADDR164 arg2=ADDR165 parent=ADDR158
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR156 ring=ADDR166
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR164
+.. .. .. .. .. .. op=5 (+) arg1=ADDR167 arg2=ADDR168 parent=ADDR161
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR156 ring=ADDR169
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR167
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR164
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR156 ring=ADDR170
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR168
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR164
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR171 ring=ADDR172
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR165
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR161
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR173 ring=ADDR174
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR162
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR158
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR175 ring=ADDR176
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR159
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR154
+.. .. .. .. eval=cndFetch_1 metrics=ADDR177 ring=ADDR178
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR155
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR147
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR179
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR179 0
+.. Expr dump @ ADDR143
+.. op=75 (print) arg1=ADDR180 arg2=(nil) parent=ADDR141
+.. eval=actPrint metrics=(nil) ring=ADDR181
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR180
+.. .. op=76 (<action arg node>) arg1=ADDR182 arg2=(nil) parent=ADDR143
+.. .. eval=actArg metrics=(nil) ring=ADDR183
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR182
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR180
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR184
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR184 "boolean2 %v"
+
+Rule: expr_7
+Expr dump @ ADDR185
+ op=0 (->) arg1=ADDR186 arg2=ADDR187 parent=(nil)
+ eval=rule metrics=ADDR188 ring=ADDR189
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR186
+.. op=43 (&&) arg1=ADDR190 arg2=ADDR191 parent=ADDR185
+.. eval=cndAnd_1_1 metrics=ADDR188 ring=ADDR192
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR190
+.. .. op=32 (<) arg1=ADDR193 arg2=ADDR194 parent=ADDR186
+.. .. eval=cndLt_1_1 metrics=ADDR188 ring=ADDR195
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR193
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. eval=cndFetch_1 metrics=ADDR188 ring=ADDR196
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR194
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR197
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR197 9
+.. .. Expr dump @ ADDR191
+.. .. op=40 (!) arg1=ADDR198 arg2=(nil) parent=ADDR186
+.. .. eval=cndNot_1 metrics=ADDR199 ring=ADDR200
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR198
+.. .. .. op=35 (>=) arg1=ADDR201 arg2=ADDR202 parent=ADDR191
+.. .. .. eval=cndGte_1_1 metrics=ADDR199 ring=ADDR203
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR201
+.. .. .. .. op=8 (/) arg1=ADDR204 arg2=ADDR205 parent=ADDR198
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR199 ring=ADDR206
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR204
+.. .. .. .. .. op=7 (*) arg1=ADDR207 arg2=ADDR208 parent=ADDR201
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR199 ring=ADDR209
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR207
+.. .. .. .. .. .. op=6 (-) arg1=ADDR210 arg2=ADDR211 parent=ADDR204
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR199 ring=ADDR212
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR210
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR213 arg2=ADDR214 parent=ADDR207
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR199 ring=ADDR215
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR213
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR210
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR199 ring=ADDR216
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR214
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR210
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR217 ring=ADDR218
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR211
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR207
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR219 ring=ADDR220
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR208
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR204
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR221 ring=ADDR222
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR205
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR201
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR223 ring=ADDR224
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR202
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR198
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR225
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR225 0
+.. Expr dump @ ADDR187
+.. op=75 (print) arg1=ADDR226 arg2=(nil) parent=ADDR185
+.. eval=actPrint metrics=(nil) ring=ADDR227
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR226
+.. .. op=76 (<action arg node>) arg1=ADDR228 arg2=(nil) parent=ADDR187
+.. .. eval=actArg metrics=(nil) ring=ADDR229
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR228
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR226
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR230
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR230 "boolean3 %v"
+
+Rule: expr_8
+Expr dump @ ADDR231
+ op=0 (->) arg1=ADDR232 arg2=ADDR233 parent=(nil)
+ eval=rule metrics=ADDR234 ring=ADDR235
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR232
+.. op=43 (&&) arg1=ADDR236 arg2=ADDR237 parent=ADDR231
+.. eval=cndAnd_1_1 metrics=ADDR234 ring=ADDR238
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR236
+.. .. op=32 (<) arg1=ADDR239 arg2=ADDR240 parent=ADDR232
+.. .. eval=cndLt_1_1 metrics=ADDR234 ring=ADDR241
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR239
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR236
+.. .. .. eval=cndFetch_1 metrics=ADDR234 ring=ADDR242
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR240
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR236
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR243
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR243 1
+.. .. Expr dump @ ADDR237
+.. .. op=40 (!) arg1=ADDR244 arg2=(nil) parent=ADDR232
+.. .. eval=cndNot_1 metrics=ADDR245 ring=ADDR246
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR244
+.. .. .. op=35 (>=) arg1=ADDR247 arg2=ADDR248 parent=ADDR237
+.. .. .. eval=cndGte_1_1 metrics=ADDR245 ring=ADDR249
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR247
+.. .. .. .. op=8 (/) arg1=ADDR250 arg2=ADDR251 parent=ADDR244
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR245 ring=ADDR252
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR250
+.. .. .. .. .. op=7 (*) arg1=ADDR253 arg2=ADDR254 parent=ADDR247
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR245 ring=ADDR255
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR253
+.. .. .. .. .. .. op=6 (-) arg1=ADDR256 arg2=ADDR257 parent=ADDR250
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR245 ring=ADDR258
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR256
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR259 arg2=ADDR260 parent=ADDR253
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR245 ring=ADDR261
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR259
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR256
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR245 ring=ADDR262
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR260
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR256
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR263 ring=ADDR264
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR257
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR253
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR265 ring=ADDR266
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR254
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR250
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR267 ring=ADDR268
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR251
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR247
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR269 ring=ADDR270
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR248
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR244
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR271
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR271 0
+.. Expr dump @ ADDR233
+.. op=75 (print) arg1=ADDR272 arg2=(nil) parent=ADDR231
+.. eval=actPrint metrics=(nil) ring=ADDR273
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR272
+.. .. op=76 (<action arg node>) arg1=ADDR274 arg2=(nil) parent=ADDR233
+.. .. eval=actArg metrics=(nil) ring=ADDR275
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR274
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR272
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR276
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR276 "boolean4 %v"
+
+Rule: expr_9
+Expr dump @ ADDR277
+ op=0 (->) arg1=ADDR278 arg2=ADDR279 parent=(nil)
+ eval=rule metrics=ADDR280 ring=ADDR281
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR278
+.. op=44 (||) arg1=ADDR282 arg2=ADDR283 parent=ADDR277
+.. eval=cndOr_n_1 metrics=ADDR280 ring=ADDR284
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR282
+.. .. op=30 (==) arg1=ADDR285 arg2=ADDR286 parent=ADDR278
+.. .. eval=cndEq_n_1 metrics=ADDR280 ring=ADDR287
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR285
+.. .. .. op=20 (min_inst) arg1=ADDR288 arg2=(nil) parent=ADDR282
+.. .. .. eval=cndMin_inst metrics=ADDR280 ring=ADDR289
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=UNKNOWN units=UNKNOWN
+.. .. .. .. Expr dump @ ADDR288
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR285
+.. .. .. .. eval=cndFetch_1 metrics=ADDR280 ring=ADDR290
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=UNKNOWN units=UNKNOWN
+.. .. .. Expr dump @ ADDR286
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR282
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR291
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR291 100
+.. .. Expr dump @ ADDR283
+.. .. op=34 (>) arg1=ADDR292 arg2=ADDR293 parent=ADDR278
+.. .. eval=cndGt_1_1 metrics=ADDR294 ring=ADDR295
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR292
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR283
+.. .. .. eval=cndFetch_1 metrics=ADDR294 ring=ADDR296
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR293
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR283
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR297
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR297 0
+.. Expr dump @ ADDR279
+.. op=75 (print) arg1=ADDR298 arg2=(nil) parent=ADDR277
+.. eval=actPrint metrics=(nil) ring=ADDR299
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR298
+.. .. op=76 (<action arg node>) arg1=ADDR300 arg2=(nil) parent=ADDR279
+.. .. eval=actArg metrics=(nil) ring=ADDR301
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR300
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR298
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR302
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR302 "error1 %v"
+
+Rule: expr_10
+Expr dump @ ADDR303
+ op=0 (->) arg1=ADDR304 arg2=ADDR305 parent=(nil)
+ eval=rule metrics=ADDR306 ring=ADDR307
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR304
+.. op=44 (||) arg1=ADDR308 arg2=ADDR309 parent=ADDR303
+.. eval=cndOr_n_1 metrics=ADDR306 ring=ADDR310
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR308
+.. .. op=30 (==) arg1=ADDR311 arg2=ADDR312 parent=ADDR304
+.. .. eval=cndEq_n_1 metrics=ADDR306 ring=ADDR313
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR311
+.. .. .. op=20 (min_inst) arg1=ADDR314 arg2=(nil) parent=ADDR308
+.. .. .. eval=cndMin_inst metrics=ADDR306 ring=ADDR315
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR314
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR311
+.. .. .. .. eval=cndFetch_all metrics=ADDR306 ring=ADDR316
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR312
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR308
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR317
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR317 100
+.. .. Expr dump @ ADDR309
+.. .. op=35 (>=) arg1=ADDR318 arg2=ADDR319 parent=ADDR304
+.. .. eval=cndGte_1_1 metrics=ADDR320 ring=ADDR321
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR318
+.. .. .. op=8 (/) arg1=ADDR322 arg2=ADDR323 parent=ADDR309
+.. .. .. eval=cndDiv_1_1 metrics=ADDR320 ring=ADDR324
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR322
+.. .. .. .. op=7 (*) arg1=ADDR325 arg2=ADDR326 parent=ADDR318
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR320 ring=ADDR327
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR325
+.. .. .. .. .. op=6 (-) arg1=ADDR328 arg2=ADDR329 parent=ADDR322
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR320 ring=ADDR330
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR328
+.. .. .. .. .. .. op=5 (+) arg1=ADDR331 arg2=ADDR332 parent=ADDR325
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR320 ring=ADDR333
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR331
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR328
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR320 ring=ADDR334
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR332
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR328
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR335 ring=ADDR336
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR329
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR325
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR337 ring=ADDR338
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR326
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR322
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR339 ring=ADDR340
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR323
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR318
+.. .. .. .. eval=cndFetch_1 metrics=ADDR341 ring=ADDR342
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR319
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR309
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR343
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR343 0
+.. Expr dump @ ADDR305
+.. op=75 (print) arg1=ADDR344 arg2=(nil) parent=ADDR303
+.. eval=actPrint metrics=(nil) ring=ADDR345
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR344
+.. .. op=76 (<action arg node>) arg1=ADDR346 arg2=(nil) parent=ADDR305
+.. .. eval=actArg metrics=(nil) ring=ADDR347
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR346
+.. .. .. op=80 (<nop node>) arg1=ADDR348 arg2=(nil) parent=ADDR344
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR349
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR349 "boolean5:"
+.. .. .. .. Expr dump @ ADDR348
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR346
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR350
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR350 " [%i] %v"
+
+Rule: expr_11
+Expr dump @ ADDR351
+ op=0 (->) arg1=ADDR352 arg2=ADDR353 parent=(nil)
+ eval=rule metrics=ADDR354 ring=ADDR355
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR352
+.. op=44 (||) arg1=ADDR356 arg2=ADDR357 parent=ADDR351
+.. eval=cndOr_n_1 metrics=ADDR354 ring=ADDR358
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR356
+.. .. op=30 (==) arg1=ADDR359 arg2=ADDR360 parent=ADDR352
+.. .. eval=cndEq_n_1 metrics=ADDR354 ring=ADDR361
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR359
+.. .. .. op=17 (max_inst) arg1=ADDR362 arg2=(nil) parent=ADDR356
+.. .. .. eval=cndMax_inst metrics=ADDR354 ring=ADDR363
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR362
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR359
+.. .. .. .. eval=cndFetch_all metrics=ADDR354 ring=ADDR364
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR360
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR356
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR365
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR365 100
+.. .. Expr dump @ ADDR357
+.. .. op=35 (>=) arg1=ADDR366 arg2=ADDR367 parent=ADDR352
+.. .. eval=cndGte_1_1 metrics=ADDR368 ring=ADDR369
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR366
+.. .. .. op=8 (/) arg1=ADDR370 arg2=ADDR371 parent=ADDR357
+.. .. .. eval=cndDiv_1_1 metrics=ADDR368 ring=ADDR372
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR370
+.. .. .. .. op=7 (*) arg1=ADDR373 arg2=ADDR374 parent=ADDR366
+.. .. .. .. eval=cndMul_1_1 metrics=ADDR368 ring=ADDR375
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR373
+.. .. .. .. .. op=6 (-) arg1=ADDR376 arg2=ADDR377 parent=ADDR370
+.. .. .. .. .. eval=cndSub_1_1 metrics=ADDR368 ring=ADDR378
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR376
+.. .. .. .. .. .. op=5 (+) arg1=ADDR379 arg2=ADDR380 parent=ADDR373
+.. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR368 ring=ADDR381
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR379
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR376
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR368 ring=ADDR382
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR380
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR376
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR383 ring=ADDR384
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR377
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR373
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR385 ring=ADDR386
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR374
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR370
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR387 ring=ADDR388
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR371
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR366
+.. .. .. .. eval=cndFetch_1 metrics=ADDR389 ring=ADDR390
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR367
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR357
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR391
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR391 0
+.. Expr dump @ ADDR353
+.. op=75 (print) arg1=ADDR392 arg2=(nil) parent=ADDR351
+.. eval=actPrint metrics=(nil) ring=ADDR393
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR392
+.. .. op=76 (<action arg node>) arg1=ADDR394 arg2=(nil) parent=ADDR353
+.. .. eval=actArg metrics=(nil) ring=ADDR395
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR394
+.. .. .. op=80 (<nop node>) arg1=ADDR396 arg2=(nil) parent=ADDR392
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR397
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR397 "boolean6:"
+.. .. .. .. Expr dump @ ADDR396
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR394
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR398
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR398 " [%i] %v"
+
+Rule: expr_12
+Expr dump @ ADDR399
+ op=0 (->) arg1=ADDR400 arg2=ADDR401 parent=(nil)
+ eval=rule metrics=ADDR402 ring=ADDR403
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR400
+.. op=44 (||) arg1=ADDR404 arg2=ADDR405 parent=ADDR399
+.. eval=cndOr_n_1 metrics=ADDR402 ring=ADDR406
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR404
+.. .. op=34 (>) arg1=ADDR407 arg2=ADDR408 parent=ADDR400
+.. .. eval=cndGt_n_1 metrics=ADDR402 ring=ADDR409
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR407
+.. .. .. op=11 (sum_inst) arg1=ADDR410 arg2=(nil) parent=ADDR404
+.. .. .. eval=cndSum_inst metrics=ADDR402 ring=ADDR411
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR410
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR407
+.. .. .. .. eval=cndFetch_all metrics=ADDR402 ring=ADDR412
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR408
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR404
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR413
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR413 500
+.. .. Expr dump @ ADDR405
+.. .. op=40 (!) arg1=ADDR414 arg2=(nil) parent=ADDR400
+.. .. eval=cndNot_1 metrics=ADDR415 ring=ADDR416
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR414
+.. .. .. op=35 (>=) arg1=ADDR417 arg2=ADDR418 parent=ADDR405
+.. .. .. eval=cndGte_1_1 metrics=ADDR415 ring=ADDR419
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR417
+.. .. .. .. op=8 (/) arg1=ADDR420 arg2=ADDR421 parent=ADDR414
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR415 ring=ADDR422
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR420
+.. .. .. .. .. op=7 (*) arg1=ADDR423 arg2=ADDR424 parent=ADDR417
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR415 ring=ADDR425
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR423
+.. .. .. .. .. .. op=6 (-) arg1=ADDR426 arg2=ADDR427 parent=ADDR420
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR415 ring=ADDR428
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR426
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR429 arg2=ADDR430 parent=ADDR423
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR415 ring=ADDR431
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR429
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR426
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR415 ring=ADDR432
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR430
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR426
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR433 ring=ADDR434
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR427
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR423
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR435 ring=ADDR436
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR424
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR420
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR437 ring=ADDR438
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR421
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR417
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR439 ring=ADDR440
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR418
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR414
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR441
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR441 0
+.. Expr dump @ ADDR401
+.. op=75 (print) arg1=ADDR442 arg2=(nil) parent=ADDR399
+.. eval=actPrint metrics=(nil) ring=ADDR443
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR442
+.. .. op=76 (<action arg node>) arg1=ADDR444 arg2=(nil) parent=ADDR401
+.. .. eval=actArg metrics=(nil) ring=ADDR445
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR444
+.. .. .. op=80 (<nop node>) arg1=ADDR446 arg2=(nil) parent=ADDR442
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR447
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR447 "boolean7:"
+.. .. .. .. Expr dump @ ADDR446
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR444
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR448
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR448 " [%i] %v"
+
+Rule: expr_13
+Expr dump @ ADDR449
+ op=0 (->) arg1=ADDR450 arg2=ADDR451 parent=(nil)
+ eval=rule metrics=ADDR452 ring=ADDR453
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR450
+.. op=44 (||) arg1=ADDR454 arg2=ADDR455 parent=ADDR449
+.. eval=cndOr_n_1 metrics=ADDR452 ring=ADDR456
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR454
+.. .. op=30 (==) arg1=ADDR457 arg2=ADDR458 parent=ADDR450
+.. .. eval=cndEq_n_1 metrics=ADDR452 ring=ADDR459
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR457
+.. .. .. op=14 (avg_inst) arg1=ADDR460 arg2=(nil) parent=ADDR454
+.. .. .. eval=cndAvg_inst metrics=ADDR452 ring=ADDR461
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR460
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR457
+.. .. .. .. eval=cndFetch_all metrics=ADDR452 ring=ADDR462
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR458
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR454
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR463
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR463 0
+.. .. Expr dump @ ADDR455
+.. .. op=40 (!) arg1=ADDR464 arg2=(nil) parent=ADDR450
+.. .. eval=cndNot_1 metrics=ADDR465 ring=ADDR466
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR464
+.. .. .. op=35 (>=) arg1=ADDR467 arg2=ADDR468 parent=ADDR455
+.. .. .. eval=cndGte_1_1 metrics=ADDR465 ring=ADDR469
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR467
+.. .. .. .. op=8 (/) arg1=ADDR470 arg2=ADDR471 parent=ADDR464
+.. .. .. .. eval=cndDiv_1_1 metrics=ADDR465 ring=ADDR472
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR470
+.. .. .. .. .. op=7 (*) arg1=ADDR473 arg2=ADDR474 parent=ADDR467
+.. .. .. .. .. eval=cndMul_1_1 metrics=ADDR465 ring=ADDR475
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR473
+.. .. .. .. .. .. op=6 (-) arg1=ADDR476 arg2=ADDR477 parent=ADDR470
+.. .. .. .. .. .. eval=cndSub_1_1 metrics=ADDR465 ring=ADDR478
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR476
+.. .. .. .. .. .. .. op=5 (+) arg1=ADDR479 arg2=ADDR480 parent=ADDR473
+.. .. .. .. .. .. .. eval=cndAdd_1_1 metrics=ADDR465 ring=ADDR481
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR479
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR476
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR465 ring=ADDR482
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. .. Expr dump @ ADDR480
+.. .. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR476
+.. .. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR483 ring=ADDR484
+.. .. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. .. Expr dump @ ADDR477
+.. .. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR473
+.. .. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR485 ring=ADDR486
+.. .. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. .. Expr dump @ ADDR474
+.. .. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR470
+.. .. .. .. .. .. eval=cndFetch_1 metrics=ADDR487 ring=ADDR488
+.. .. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR471
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR467
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR489 ring=ADDR490
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR468
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR464
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR491
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR491 0
+.. Expr dump @ ADDR451
+.. op=75 (print) arg1=ADDR492 arg2=(nil) parent=ADDR449
+.. eval=actPrint metrics=(nil) ring=ADDR493
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR492
+.. .. op=76 (<action arg node>) arg1=ADDR494 arg2=(nil) parent=ADDR451
+.. .. eval=actArg metrics=(nil) ring=ADDR495
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR494
+.. .. .. op=80 (<nop node>) arg1=ADDR496 arg2=(nil) parent=ADDR492
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR497
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR497 "boolean8:"
+.. .. .. .. Expr dump @ ADDR496
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR494
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR498
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR498 " [%i] %v"
+
+Rule: expr_14
+Expr dump @ ADDR499
+ op=0 (->) arg1=ADDR500 arg2=ADDR501 parent=(nil)
+ eval=rule metrics=ADDR502 ring=ADDR503
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR500
+.. op=34 (>) arg1=ADDR504 arg2=ADDR505 parent=ADDR499
+.. eval=cndGt_n_1 metrics=ADDR502 ring=ADDR506
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR504
+.. .. op=60 (count_inst) arg1=ADDR507 arg2=(nil) parent=ADDR500
+.. .. eval=cndCount_inst metrics=ADDR502 ring=ADDR508
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=count
+.. .. .. Expr dump @ ADDR507
+.. .. .. op=34 (>) arg1=ADDR509 arg2=ADDR510 parent=ADDR504
+.. .. .. eval=cndGt_n_1 metrics=ADDR502 ring=ADDR511
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR509
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR507
+.. .. .. .. eval=cndFetch_all metrics=ADDR502 ring=ADDR512
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR510
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR507
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR513
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR513 0
+.. .. Expr dump @ ADDR505
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR500
+.. .. eval=(nil)() metrics=(nil) ring=ADDR514
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR514 0
+.. Expr dump @ ADDR501
+.. op=75 (print) arg1=ADDR515 arg2=(nil) parent=ADDR499
+.. eval=actPrint metrics=(nil) ring=ADDR516
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR515
+.. .. op=76 (<action arg node>) arg1=ADDR517 arg2=(nil) parent=ADDR501
+.. .. eval=actArg metrics=(nil) ring=ADDR518
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR517
+.. .. .. op=80 (<nop node>) arg1=ADDR519 arg2=(nil) parent=ADDR515
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR520
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR520 "count_inst:"
+.. .. .. .. Expr dump @ ADDR519
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR517
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR521
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR521 "[%i] %v"
+
+Rule: expr_15
+Expr dump @ ADDR522
+ op=0 (->) arg1=ADDR523 arg2=ADDR524 parent=(nil)
+ eval=rule metrics=ADDR525 ring=ADDR526
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR523
+.. op=54 (some_inst) arg1=ADDR527 arg2=(nil) parent=ADDR522
+.. eval=cndSome_inst metrics=ADDR525 ring=ADDR528
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR527
+.. .. op=45 (match_inst) arg1=ADDR529 arg2=ADDR530 parent=ADDR523
+.. .. eval=ADDR531 metrics=ADDR525 ring=ADDR532
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR529
+.. .. .. op=34 (>) arg1=ADDR533 arg2=ADDR534 parent=ADDR527
+.. .. .. eval=cndGt_n_1 metrics=ADDR525 ring=ADDR535
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR533
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR529
+.. .. .. .. eval=cndFetch_all metrics=ADDR525 ring=ADDR536
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR534
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR529
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR537
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR537 100
+.. .. .. Expr dump @ ADDR530
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR527
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR538
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=REGEX units=
+.. .. .. handle=ADDR538
+.. Expr dump @ ADDR524
+.. op=75 (print) arg1=ADDR539 arg2=(nil) parent=ADDR522
+.. eval=actPrint metrics=(nil) ring=ADDR540
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR539
+.. .. op=76 (<action arg node>) arg1=ADDR541 arg2=(nil) parent=ADDR524
+.. .. eval=actArg metrics=(nil) ring=ADDR542
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR541
+.. .. .. op=80 (<nop node>) arg1=ADDR543 arg2=(nil) parent=ADDR539
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR544
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR544 "match_inst:"
+.. .. .. .. Expr dump @ ADDR543
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR541
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR545
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR545 " [%i] %v"
+
+Rule: expr_16
+Expr dump @ ADDR546
+ op=0 (->) arg1=ADDR547 arg2=ADDR548 parent=(nil)
+ eval=rule metrics=ADDR549 ring=ADDR550
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR547
+.. op=54 (some_inst) arg1=ADDR551 arg2=(nil) parent=ADDR546
+.. eval=cndSome_inst metrics=ADDR549 ring=ADDR552
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR551
+.. .. op=46 (nomatch_inst) arg1=ADDR553 arg2=ADDR554 parent=ADDR547
+.. .. eval=ADDR531 metrics=ADDR549 ring=ADDR555
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR553
+.. .. .. op=34 (>) arg1=ADDR556 arg2=ADDR557 parent=ADDR551
+.. .. .. eval=cndGt_n_1 metrics=ADDR549 ring=ADDR558
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR556
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR553
+.. .. .. .. eval=cndFetch_all metrics=ADDR549 ring=ADDR559
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR557
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR553
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR560
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR560 200
+.. .. .. Expr dump @ ADDR554
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR551
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR561
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=REGEX units=
+.. .. .. handle=ADDR561
+.. Expr dump @ ADDR548
+.. op=75 (print) arg1=ADDR562 arg2=(nil) parent=ADDR546
+.. eval=actPrint metrics=(nil) ring=ADDR563
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR562
+.. .. op=76 (<action arg node>) arg1=ADDR564 arg2=(nil) parent=ADDR548
+.. .. eval=actArg metrics=(nil) ring=ADDR565
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR564
+.. .. .. op=80 (<nop node>) arg1=ADDR566 arg2=(nil) parent=ADDR562
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR567
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=13
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR567 "nomatch_inst:"
+.. .. .. .. Expr dump @ ADDR566
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR564
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR568
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR568 " [%i] %v"
+
+Rule: expr_17
+Expr dump @ ADDR569
+ op=0 (->) arg1=ADDR570 arg2=ADDR571 parent=(nil)
+ eval=rule metrics=ADDR572 ring=ADDR573
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR570
+.. op=51 (all_inst) arg1=ADDR574 arg2=(nil) parent=ADDR569
+.. eval=cndAll_inst metrics=ADDR572 ring=ADDR575
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR574
+.. .. op=30 (==) arg1=ADDR576 arg2=ADDR577 parent=ADDR570
+.. .. eval=cndEq_n_1 metrics=ADDR572 ring=ADDR578
+.. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR576
+.. .. .. op=3 (rate) arg1=ADDR579 arg2=(nil) parent=ADDR574
+.. .. .. eval=cndRate_n metrics=ADDR572 ring=ADDR580
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR579
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR576
+.. .. .. .. eval=cndFetch_all metrics=ADDR572 ring=ADDR581
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=2 nvals=18 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR577
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR574
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR582
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR582 0
+.. Expr dump @ ADDR571
+.. op=75 (print) arg1=ADDR583 arg2=(nil) parent=ADDR569
+.. eval=actPrint metrics=(nil) ring=ADDR584
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR583
+.. .. op=76 (<action arg node>) arg1=ADDR585 arg2=(nil) parent=ADDR571
+.. .. eval=actArg metrics=(nil) ring=ADDR586
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR585
+.. .. .. op=80 (<nop node>) arg1=ADDR587 arg2=(nil) parent=ADDR583
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR588
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=5
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR588 "rate:"
+.. .. .. .. Expr dump @ ADDR587
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR585
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR589
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR589 " [%i] %v"
+
+Rule: expr_18
+Expr dump @ ADDR590
+ op=0 (->) arg1=ADDR591 arg2=ADDR592 parent=(nil)
+ eval=rule metrics=ADDR593 ring=ADDR594
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR591
+.. op=57 (pcnt_inst) arg1=ADDR595 arg2=ADDR596 parent=ADDR590
+.. eval=cndPcnt_inst metrics=ADDR593 ring=ADDR597
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR595
+.. .. op=35 (>=) arg1=ADDR598 arg2=ADDR599 parent=ADDR591
+.. .. eval=cndGte_n_1 metrics=ADDR593 ring=ADDR600
+.. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. nsmpls=1 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR598
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR595
+.. .. .. eval=cndFetch_all metrics=ADDR593 ring=ADDR601
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. .. nsmpls=1 nvals=3 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR599
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR595
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR602
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR602 200
+.. .. Expr dump @ ADDR596
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR603
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR603 0.66
+.. Expr dump @ ADDR592
+.. op=75 (print) arg1=ADDR604 arg2=(nil) parent=ADDR590
+.. eval=actPrint metrics=(nil) ring=ADDR605
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR604
+.. .. op=76 (<action arg node>) arg1=ADDR606 arg2=(nil) parent=ADDR592
+.. .. eval=actArg metrics=(nil) ring=ADDR607
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR606
+.. .. .. op=80 (<nop node>) arg1=ADDR608 arg2=(nil) parent=ADDR604
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR609
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR609 "66%_inst:"
+.. .. .. .. Expr dump @ ADDR608
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR606
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR610
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR610 " [%i] %v"
+
+Rule: expr_19
+Expr dump @ ADDR611
+ op=0 (->) arg1=ADDR612 arg2=ADDR613 parent=(nil)
+ eval=rule metrics=ADDR614 ring=ADDR615
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR612
+.. op=52 (all_sample) arg1=ADDR616 arg2=(nil) parent=ADDR611
+.. eval=cndAll_time metrics=ADDR614 ring=ADDR617
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR616
+.. .. op=30 (==) arg1=ADDR618 arg2=ADDR619 parent=ADDR612
+.. .. eval=cndEq_1_1 metrics=ADDR614 ring=ADDR620
+.. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR618
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR616
+.. .. .. eval=cndFetch_1 metrics=ADDR614 ring=ADDR621
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR619
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR616
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR622
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR622 10
+.. Expr dump @ ADDR613
+.. op=75 (print) arg1=ADDR623 arg2=(nil) parent=ADDR611
+.. eval=actPrint metrics=(nil) ring=ADDR624
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR623
+.. .. op=76 (<action arg node>) arg1=ADDR625 arg2=(nil) parent=ADDR613
+.. .. eval=actArg metrics=(nil) ring=ADDR626
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR625
+.. .. .. op=80 (<nop node>) arg1=ADDR627 arg2=(nil) parent=ADDR623
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR628
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR628 "all_sample: "
+.. .. .. .. Expr dump @ ADDR627
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR625
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR629
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR629 " [%i] %v"
+
+Rule: expr_20
+Expr dump @ ADDR630
+ op=0 (->) arg1=ADDR631 arg2=ADDR632 parent=(nil)
+ eval=rule metrics=ADDR633 ring=ADDR634
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR631
+.. op=58 (pcnt_sample) arg1=ADDR635 arg2=ADDR636 parent=ADDR630
+.. eval=cndPcnt_time metrics=ADDR633 ring=ADDR637
+.. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR635
+.. .. op=54 (some_inst) arg1=ADDR638 arg2=(nil) parent=ADDR631
+.. .. eval=cndSome_inst metrics=ADDR633 ring=ADDR639
+.. .. valid=0 cardinality[H,I,T]=[1,-1,2] tspan=1
+.. .. nsmpls=2 nvals=2 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR638
+.. .. .. op=35 (>=) arg1=ADDR640 arg2=ADDR641 parent=ADDR635
+.. .. .. eval=cndGte_n_1 metrics=ADDR633 ring=ADDR642
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,2] tspan=3
+.. .. .. nsmpls=2 nvals=6 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR640
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR638
+.. .. .. .. eval=cndFetch_n metrics=ADDR633 ring=ADDR643
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,3,2] tspan=3
+.. .. .. .. nsmpls=2 nvals=6 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR641
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR638
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR644
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR644 500
+.. .. Expr dump @ ADDR636
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR645
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR645 0.6
+.. Expr dump @ ADDR632
+.. op=75 (print) arg1=ADDR646 arg2=(nil) parent=ADDR630
+.. eval=actPrint metrics=(nil) ring=ADDR647
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR646
+.. .. op=76 (<action arg node>) arg1=ADDR648 arg2=(nil) parent=ADDR632
+.. .. eval=actArg metrics=(nil) ring=ADDR649
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR648
+.. .. .. op=80 (<nop node>) arg1=ADDR650 arg2=(nil) parent=ADDR646
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR651
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR651 "60%_sample: "
+.. .. .. .. Expr dump @ ADDR650
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR648
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR652
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR652 " [%i] %v"
+
+Rule: expr_21
+Expr dump @ ADDR653
+ op=0 (->) arg1=ADDR654 arg2=ADDR655 parent=(nil)
+ eval=rule metrics=ADDR656 ring=ADDR657
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR654
+.. op=30 (==) arg1=ADDR658 arg2=ADDR659 parent=ADDR653
+.. eval=cndEq_1_1 metrics=ADDR656 ring=ADDR660
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR658
+.. .. op=21 (min_sample) arg1=ADDR661 arg2=(nil) parent=ADDR654
+.. .. eval=cndMin_time metrics=ADDR656 ring=ADDR662
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR661
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR658
+.. .. .. eval=cndFetch_1 metrics=ADDR656 ring=ADDR663
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR659
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR654
+.. .. eval=(nil)() metrics=(nil) ring=ADDR664
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR664 100
+.. Expr dump @ ADDR655
+.. op=75 (print) arg1=ADDR665 arg2=(nil) parent=ADDR653
+.. eval=actPrint metrics=(nil) ring=ADDR666
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR665
+.. .. op=76 (<action arg node>) arg1=ADDR667 arg2=(nil) parent=ADDR655
+.. .. eval=actArg metrics=(nil) ring=ADDR668
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR667
+.. .. .. op=80 (<nop node>) arg1=ADDR669 arg2=(nil) parent=ADDR665
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR670
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR670 "min_sample: "
+.. .. .. .. Expr dump @ ADDR669
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR667
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR671
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR671 " [%i] %v"
+
+Rule: expr_22
+Expr dump @ ADDR672
+ op=0 (->) arg1=ADDR673 arg2=ADDR674 parent=(nil)
+ eval=rule metrics=ADDR675 ring=ADDR676
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR673
+.. op=30 (==) arg1=ADDR677 arg2=ADDR678 parent=ADDR672
+.. eval=cndEq_1_1 metrics=ADDR675 ring=ADDR679
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR677
+.. .. op=18 (max_sample) arg1=ADDR680 arg2=(nil) parent=ADDR673
+.. .. eval=cndMax_time metrics=ADDR675 ring=ADDR681
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR680
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR677
+.. .. .. eval=cndFetch_1 metrics=ADDR675 ring=ADDR682
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR678
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR673
+.. .. eval=(nil)() metrics=(nil) ring=ADDR683
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR683 100
+.. Expr dump @ ADDR674
+.. op=75 (print) arg1=ADDR684 arg2=(nil) parent=ADDR672
+.. eval=actPrint metrics=(nil) ring=ADDR685
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR684
+.. .. op=76 (<action arg node>) arg1=ADDR686 arg2=(nil) parent=ADDR674
+.. .. eval=actArg metrics=(nil) ring=ADDR687
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR686
+.. .. .. op=80 (<nop node>) arg1=ADDR688 arg2=(nil) parent=ADDR684
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR689
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR689 "max_sample: "
+.. .. .. .. Expr dump @ ADDR688
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR686
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR690
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR690 " [%i] %v"
+
+Rule: expr_23
+Expr dump @ ADDR691
+ op=0 (->) arg1=ADDR692 arg2=ADDR693 parent=(nil)
+ eval=rule metrics=ADDR694 ring=ADDR695
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR692
+.. op=30 (==) arg1=ADDR696 arg2=ADDR697 parent=ADDR691
+.. eval=cndEq_1_1 metrics=ADDR694 ring=ADDR698
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR696
+.. .. op=12 (sum_sample) arg1=ADDR699 arg2=(nil) parent=ADDR692
+.. .. eval=cndSum_time metrics=ADDR694 ring=ADDR700
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR699
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR696
+.. .. .. eval=cndFetch_n metrics=ADDR694 ring=ADDR701
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,4] tspan=1
+.. .. .. nsmpls=4 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR697
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR692
+.. .. eval=(nil)() metrics=(nil) ring=ADDR702
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR702 400
+.. Expr dump @ ADDR693
+.. op=75 (print) arg1=ADDR703 arg2=(nil) parent=ADDR691
+.. eval=actPrint metrics=(nil) ring=ADDR704
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR703
+.. .. op=76 (<action arg node>) arg1=ADDR705 arg2=(nil) parent=ADDR693
+.. .. eval=actArg metrics=(nil) ring=ADDR706
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR705
+.. .. .. op=80 (<nop node>) arg1=ADDR707 arg2=(nil) parent=ADDR703
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR708
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR708 "sum_sample: "
+.. .. .. .. Expr dump @ ADDR707
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR705
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR709
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR709 " [%i] %v"
+
+Rule: expr_24
+Expr dump @ ADDR710
+ op=0 (->) arg1=ADDR711 arg2=ADDR712 parent=(nil)
+ eval=rule metrics=ADDR713 ring=ADDR714
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR711
+.. op=30 (==) arg1=ADDR715 arg2=ADDR716 parent=ADDR710
+.. eval=cndEq_1_1 metrics=ADDR713 ring=ADDR717
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR715
+.. .. op=15 (avg_sample) arg1=ADDR718 arg2=(nil) parent=ADDR711
+.. .. eval=cndAvg_time metrics=ADDR713 ring=ADDR719
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR718
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR715
+.. .. .. eval=cndFetch_n metrics=ADDR713 ring=ADDR720
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,2] tspan=1
+.. .. .. nsmpls=2 nvals=2 sem=INSTANT units=
+.. .. Expr dump @ ADDR716
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR711
+.. .. eval=(nil)() metrics=(nil) ring=ADDR721
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR721 200
+.. Expr dump @ ADDR712
+.. op=75 (print) arg1=ADDR722 arg2=(nil) parent=ADDR710
+.. eval=actPrint metrics=(nil) ring=ADDR723
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR722
+.. .. op=76 (<action arg node>) arg1=ADDR724 arg2=(nil) parent=ADDR712
+.. .. eval=actArg metrics=(nil) ring=ADDR725
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR724
+.. .. .. op=80 (<nop node>) arg1=ADDR726 arg2=(nil) parent=ADDR722
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR727
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR727 "avg_sample: "
+.. .. .. .. Expr dump @ ADDR726
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR724
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR728
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR728 " [%i] %v"
+
+Rule: expr_25
+Expr dump @ ADDR729
+ op=0 (->) arg1=ADDR730 arg2=ADDR731 parent=(nil)
+ eval=rule metrics=ADDR732 ring=ADDR733
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR730
+.. op=30 (==) arg1=ADDR734 arg2=ADDR735 parent=ADDR729
+.. eval=cndEq_1_1 metrics=ADDR732 ring=ADDR736
+.. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR734
+.. .. op=61 (count_sample) arg1=ADDR737 arg2=(nil) parent=ADDR730
+.. .. eval=cndCount_time metrics=ADDR732 ring=ADDR738
+.. .. valid=0 cardinality[H,I,T]=[1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=count
+.. .. .. Expr dump @ ADDR737
+.. .. .. op=54 (some_inst) arg1=ADDR739 arg2=(nil) parent=ADDR734
+.. .. .. eval=cndSome_inst metrics=ADDR732 ring=ADDR740
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR739
+.. .. .. .. op=30 (==) arg1=ADDR741 arg2=ADDR742 parent=ADDR737
+.. .. .. .. eval=cndEq_n_1 metrics=ADDR732 ring=ADDR743
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,3,3] tspan=3
+.. .. .. .. nsmpls=3 nvals=9 sem=TRUTH units=
+.. .. .. .. .. Expr dump @ ADDR741
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR739
+.. .. .. .. .. eval=cndFetch_n metrics=ADDR732 ring=ADDR744
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,3,3] tspan=3
+.. .. .. .. .. nsmpls=3 nvals=9 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR742
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR739
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR745
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. .. smpls[0].ptr ADDR745 300
+.. .. Expr dump @ ADDR735
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR730
+.. .. eval=(nil)() metrics=(nil) ring=ADDR746
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR746 3
+.. Expr dump @ ADDR731
+.. op=75 (print) arg1=ADDR747 arg2=(nil) parent=ADDR729
+.. eval=actPrint metrics=(nil) ring=ADDR748
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR747
+.. .. op=76 (<action arg node>) arg1=ADDR749 arg2=(nil) parent=ADDR731
+.. .. eval=actArg metrics=(nil) ring=ADDR750
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR749
+.. .. .. op=80 (<nop node>) arg1=ADDR751 arg2=(nil) parent=ADDR747
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR752
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=14
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR752 "count_sample: "
+.. .. .. .. Expr dump @ ADDR751
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR749
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR753
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR753 " [%i] %v"
+
+Rule: expr_26
+Expr dump @ ADDR754
+ op=0 (->) arg1=ADDR755 arg2=ADDR756 parent=(nil)
+ eval=rule metrics=ADDR757 ring=ADDR758
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR755
+.. op=34 (>) arg1=ADDR759 arg2=ADDR760 parent=ADDR754
+.. eval=cndGt_n_1 metrics=ADDR757 ring=ADDR761
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR759
+.. .. op=20 (min_inst) arg1=ADDR762 arg2=(nil) parent=ADDR755
+.. .. eval=cndMin_inst metrics=ADDR757 ring=ADDR763
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR762
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR759
+.. .. .. eval=cndFetch_all metrics=ADDR757 ring=ADDR764
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. Expr dump @ ADDR760
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR755
+.. .. eval=(nil)() metrics=(nil) ring=ADDR765
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR765 0
+.. Expr dump @ ADDR756
+.. op=75 (print) arg1=ADDR766 arg2=(nil) parent=ADDR754
+.. eval=actPrint metrics=(nil) ring=ADDR767
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR766
+.. .. op=76 (<action arg node>) arg1=ADDR768 arg2=(nil) parent=ADDR756
+.. .. eval=actArg metrics=(nil) ring=ADDR769
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR768
+.. .. .. op=80 (<nop node>) arg1=ADDR770 arg2=(nil) parent=ADDR766
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR771
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR771 "min_inst:"
+.. .. .. .. Expr dump @ ADDR770
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR768
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR772
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR772 " @%h [%i] %v"
+
+Rule: expr_27
+Expr dump @ ADDR773
+ op=0 (->) arg1=ADDR774 arg2=ADDR775 parent=(nil)
+ eval=rule metrics=ADDR776 ring=ADDR777
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR774
+.. op=34 (>) arg1=ADDR778 arg2=ADDR779 parent=ADDR773
+.. eval=cndGt_n_1 metrics=ADDR776 ring=ADDR780
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR778
+.. .. op=17 (max_inst) arg1=ADDR781 arg2=(nil) parent=ADDR774
+.. .. eval=cndMax_inst metrics=ADDR776 ring=ADDR782
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR781
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR778
+.. .. .. eval=cndFetch_all metrics=ADDR776 ring=ADDR783
+.. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. Expr dump @ ADDR779
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR774
+.. .. eval=(nil)() metrics=(nil) ring=ADDR784
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR784 0
+.. Expr dump @ ADDR775
+.. op=75 (print) arg1=ADDR785 arg2=(nil) parent=ADDR773
+.. eval=actPrint metrics=(nil) ring=ADDR786
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR785
+.. .. op=76 (<action arg node>) arg1=ADDR787 arg2=(nil) parent=ADDR775
+.. .. eval=actArg metrics=(nil) ring=ADDR788
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR787
+.. .. .. op=80 (<nop node>) arg1=ADDR789 arg2=(nil) parent=ADDR785
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR790
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR790 "max_inst:"
+.. .. .. .. Expr dump @ ADDR789
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR787
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR791
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR791 " @%h [%i] %v"
+
+Rule: expr_28
+Expr dump @ ADDR792
+ op=0 (->) arg1=ADDR793 arg2=ADDR794 parent=(nil)
+ eval=rule metrics=ADDR795 ring=ADDR796
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR793
+.. op=30 (==) arg1=ADDR797 arg2=ADDR798 parent=ADDR792
+.. eval=cndEq_1_1 metrics=ADDR795 ring=ADDR799
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR797
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR793
+.. .. eval=cndFetch_1 metrics=ADDR795 ring=ADDR800
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR798
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR793
+.. .. eval=(nil)() metrics=(nil) ring=ADDR801
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR801 1
+.. Expr dump @ ADDR794
+.. op=71 (|) arg1=ADDR802 arg2=ADDR803 parent=ADDR792
+.. eval=actOr metrics=(nil) ring=ADDR804
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR802
+.. .. op=72 (shell) arg1=ADDR805 arg2=(nil) parent=ADDR794
+.. .. eval=actShell metrics=(nil) ring=ADDR806
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR805
+.. .. .. op=76 (<action arg node>) arg1=ADDR807 arg2=(nil) parent=ADDR802
+.. .. .. eval=actArg metrics=(nil) ring=ADDR808
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR807
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR805
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR809
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=5
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR809 "false"
+.. .. Expr dump @ ADDR803
+.. .. op=75 (print) arg1=ADDR810 arg2=(nil) parent=ADDR794
+.. .. eval=actPrint metrics=(nil) ring=ADDR811
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR810
+.. .. .. op=76 (<action arg node>) arg1=ADDR812 arg2=(nil) parent=ADDR803
+.. .. .. eval=actArg metrics=(nil) ring=ADDR813
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR812
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR810
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR814
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR814 "false |: %v"
+
+Rule: expr_29
+Expr dump @ ADDR815
+ op=0 (->) arg1=ADDR816 arg2=ADDR817 parent=(nil)
+ eval=rule metrics=ADDR818 ring=ADDR819
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR816
+.. op=30 (==) arg1=ADDR820 arg2=ADDR821 parent=ADDR815
+.. eval=cndEq_1_1 metrics=ADDR818 ring=ADDR822
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR820
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR816
+.. .. eval=cndFetch_1 metrics=ADDR818 ring=ADDR823
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR821
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR816
+.. .. eval=(nil)() metrics=(nil) ring=ADDR824
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR824 10
+.. Expr dump @ ADDR817
+.. op=70 (&) arg1=ADDR825 arg2=ADDR826 parent=ADDR815
+.. eval=actAnd metrics=(nil) ring=ADDR827
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR825
+.. .. op=72 (shell) arg1=ADDR828 arg2=(nil) parent=ADDR817
+.. .. eval=actShell metrics=(nil) ring=ADDR829
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR828
+.. .. .. op=76 (<action arg node>) arg1=ADDR830 arg2=(nil) parent=ADDR825
+.. .. .. eval=actArg metrics=(nil) ring=ADDR831
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR830
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR828
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR832
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=4
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR832 "true"
+.. .. Expr dump @ ADDR826
+.. .. op=75 (print) arg1=ADDR833 arg2=(nil) parent=ADDR817
+.. .. eval=actPrint metrics=(nil) ring=ADDR834
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR833
+.. .. .. op=76 (<action arg node>) arg1=ADDR835 arg2=(nil) parent=ADDR826
+.. .. .. eval=actArg metrics=(nil) ring=ADDR836
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR835
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR833
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR837
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=10
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR837 "true &: %v"
+
+Rule: expr_30
+Expr dump @ ADDR838
+ op=0 (->) arg1=ADDR839 arg2=ADDR840 parent=(nil)
+ eval=rule metrics=ADDR841 ring=ADDR842
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR839
+.. op=30 (==) arg1=ADDR843 arg2=ADDR844 parent=ADDR838
+.. eval=cndEq_1_1 metrics=ADDR841 ring=ADDR845
+.. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR843
+.. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR839
+.. .. eval=cndFetch_1 metrics=ADDR841 ring=ADDR846
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. Expr dump @ ADDR844
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR839
+.. .. eval=(nil)() metrics=(nil) ring=ADDR847
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR847 100
+.. Expr dump @ ADDR840
+.. op=71 (|) arg1=ADDR848 arg2=ADDR849 parent=ADDR838
+.. eval=actOr metrics=(nil) ring=ADDR850
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR848
+.. .. op=75 (print) arg1=ADDR851 arg2=(nil) parent=ADDR840
+.. .. eval=actPrint metrics=(nil) ring=ADDR852
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR851
+.. .. .. op=76 (<action arg node>) arg1=ADDR853 arg2=(nil) parent=ADDR848
+.. .. .. eval=actArg metrics=(nil) ring=ADDR854
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR853
+.. .. .. .. op=80 (<nop node>) arg1=ADDR855 arg2=(nil) parent=ADDR851
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR856
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=8
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR856 "print |:"
+.. .. .. .. .. Expr dump @ ADDR855
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR853
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR857
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=3
+.. .. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. .. smpls[0].ptr ADDR857 " %v"
+.. .. Expr dump @ ADDR849
+.. .. op=75 (print) arg1=ADDR858 arg2=(nil) parent=ADDR840
+.. .. eval=actPrint metrics=(nil) ring=ADDR859
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR858
+.. .. .. op=76 (<action arg node>) arg1=ADDR860 arg2=(nil) parent=ADDR849
+.. .. .. eval=actArg metrics=(nil) ring=ADDR861
+.. .. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. Expr dump @ ADDR860
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR858
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR862
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=22
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR862 "bozo don't execute me!"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> expr_1 =
+some_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 500) -> print "some > 500:" " [%i] %v";
+
+expr_2 =
+all_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 0) -> shell "echo 'all > 0:'" " [%i] %v";
+
+expr_3 =
+some_sample (hinv.ncpu :LOCALHOST @0..2 == hinv.ncpu :LOCALHOST) -> ([level=30 tag="pcp-pmie"] "PCP QA 514 - please ignore: some sample ncpu equal") syslog 10;
+
+expr_4 =
+((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0 -> print "arith %v";
+
+expr_5 =
+(sample.long.one :LOCALHOST != 2) && (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean1 %v";
+
+expr_6 =
+(sample.long.one :LOCALHOST <= 0) && (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean2 %v";
+
+expr_7 =
+(sample.long.one :LOCALHOST < 9) && (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean3 %v";
+
+expr_8 =
+(sample.long.one :LOCALHOST < 1) && (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean4 %v";
+
+expr_9 =
+(min_inst (no_such_metric :LOCALHOST) == 100) || (sample.long.million :LOCALHOST > 0) -> print "error1 %v";
+
+expr_10 =
+(min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 100) || (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean5:" " [%i] %v";
+
+expr_11 =
+(max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 100) || (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0) -> print "boolean6:" " [%i] %v";
+
+expr_12 =
+(sum_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 500) || (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean7:" " [%i] %v";
+
+expr_13 =
+(avg_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 0) || (! (((((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST) >= 0)) -> print "boolean8:" " [%i] %v";
+
+expr_14 =
+count_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 0) > 0 -> print "count_inst:" "[%i] %v";
+
+expr_15 =
+some_inst (match_inst /<regex>/ (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 100)) -> print "match_inst:" " [%i] %v";
+
+expr_16 =
+some_inst (nomatch_inst /<regex>/ (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 200)) -> print "nomatch_inst:" " [%i] %v";
+
+expr_17 =
+all_inst (rate (sample.bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) == 0) -> print "rate:" " [%i] %v";
+
+expr_18 =
+pcnt_inst 66% (sample.colour :LOCALHOST #red #green #blue >= 200) -> print "66%_inst:" " [%i] %v";
+
+expr_19 =
+all_sample (sample.long.ten :LOCALHOST @0..2 == 10) -> print "all_sample: " " [%i] %v";
+
+expr_20 =
+pcnt_sample 60% (some_inst (sample.part_bin :LOCALHOST #bin-300 #bin-500 #bin-700 @0..1 >= 500)) -> print "60%_sample: " " [%i] %v";
+
+expr_21 =
+min_sample (sample.long.hundred :LOCALHOST @0..1) == 100 -> print "min_sample: " " [%i] %v";
+
+expr_22 =
+max_sample (sample.long.hundred :LOCALHOST @0..1) == 100 -> print "max_sample: " " [%i] %v";
+
+expr_23 =
+sum_sample (sample.bin :LOCALHOST #bin-100 @0..3) == 400 -> print "sum_sample: " " [%i] %v";
+
+expr_24 =
+avg_sample (sample.bin :LOCALHOST #bin-200 @0..1) == 200 -> print "avg_sample: " " [%i] %v";
+
+expr_25 =
+count_sample (some_inst (sample.bin :LOCALHOST #bin-200 #bin-300 #bin-400 @0..2 == 300)) == 3 -> print "count_sample: " " [%i] %v";
+
+expr_26 =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 0 -> print "min_inst:" " @%h [%i] %v";
+
+expr_27 =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900) > 0 -> print "max_inst:" " @%h [%i] %v";
+
+expr_28 =
+sample.long.one :LOCALHOST == 1 -> (shell "false") | (print "false |: %v");
+
+expr_29 =
+sample.long.ten :LOCALHOST == 10 -> (shell "true") & (print "true &: %v");
+
+expr_30 =
+sample.long.hundred :LOCALHOST == 100 -> (print "print |:" " %v") | (print "bozo don't execute me!");
+
+pmie> DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: avg_sample: [bin-200] 200
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: sum_sample: [bin-100] 400
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+DATE: some > 500: [bin-700] 700 [bin-900] 900
+all > 0: [bin-100] 100 [bin-300] 300 [bin-500] 500 [bin-700] 700 [bin-900] 900
+DATE: arith 9999910
+DATE: boolean1 1
+DATE: error1 %v
+DATE: boolean5: [bin-100] 100
+DATE: boolean6: [bin-900] 900
+DATE: boolean7: [<%i undefined>] 2500
+DATE: count_inst:[<%i undefined>] 5
+DATE: match_inst: [bin-300] 300 [bin-500] 500
+DATE: nomatch_inst: [bin-700] 700 [bin-900] 900
+DATE: rate: [bin-100] 0 [bin-200] 0 [bin-300] 0 [bin-400] 0 [bin-500] 0 [bin-600] 0 [bin-700] 0 [bin-800] 0 [bin-900] 0
+DATE: 66%_inst: [green] >=200 [blue] >=300
+DATE: all_sample: [<%i undefined>] 10 10 10
+DATE: 60%_sample: [bin-500] 500 500 [bin-700] 700 700
+DATE: min_sample: [<%i undefined>] 100
+DATE: max_sample: [<%i undefined>] 100
+DATE: sum_sample: [bin-100] 400
+DATE: avg_sample: [bin-200] 200
+DATE: count_sample: [<%i undefined>] 3
+DATE: min_inst: @LOCALHOST [bin-100] 100
+DATE: max_inst: @LOCALHOST [bin-900] 900
+DATE: false |: 1
+DATE: true &: 10
+DATE: print |: 100
+pmie> expr_1 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+hinv.ncpu :LOCALHOST @0..2
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+(((sample.long.million :LOCALHOST + sample.long.one :LOCALHOST) - sample.long.ten :LOCALHOST) * sample.long.hundred :LOCALHOST) / sample.long.ten :LOCALHOST
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_7 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_8 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_9 (subexpression for %h, %i and %v bindings) =
+min_inst (no_such_metric :LOCALHOST)
+
+expr_10 (subexpression for %h, %i and %v bindings) =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_11 (subexpression for %h, %i and %v bindings) =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_12 (subexpression for %h, %i and %v bindings) =
+sum_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_13 (subexpression for %h, %i and %v bindings) =
+avg_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_14 (subexpression for %h, %i and %v bindings) =
+count_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900 > 0)
+
+expr_15 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_16 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900
+
+expr_17 (subexpression for %h, %i and %v bindings) =
+rate (sample.bin :LOCALHOST #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900)
+
+expr_18 (subexpression for %h, %i and %v bindings) =
+sample.colour :LOCALHOST #red #green #blue
+
+expr_19 (subexpression for %h, %i and %v bindings) =
+sample.long.ten :LOCALHOST @0..2
+
+expr_20 (subexpression for %h, %i and %v bindings) =
+sample.part_bin :LOCALHOST #bin-300 #bin-500 #bin-700 @0..1
+
+expr_21 (subexpression for %h, %i and %v bindings) =
+min_sample (sample.long.hundred :LOCALHOST @0..1)
+
+expr_22 (subexpression for %h, %i and %v bindings) =
+max_sample (sample.long.hundred :LOCALHOST @0..1)
+
+expr_23 (subexpression for %h, %i and %v bindings) =
+sum_sample (sample.bin :LOCALHOST #bin-100 @0..3)
+
+expr_24 (subexpression for %h, %i and %v bindings) =
+avg_sample (sample.bin :LOCALHOST #bin-200 @0..1)
+
+expr_25 (subexpression for %h, %i and %v bindings) =
+count_sample (some_inst (sample.bin :LOCALHOST #bin-200 #bin-300 #bin-400 @0..2 == 300))
+
+expr_26 (subexpression for %h, %i and %v bindings) =
+min_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_27 (subexpression for %h, %i and %v bindings) =
+max_inst (sample.part_bin :LOCALHOST #bin-100 #bin-300 #bin-500 #bin-700 #bin-900)
+
+expr_28 (subexpression for %h, %i and %v bindings) =
+sample.long.one :LOCALHOST
+
+expr_29 (subexpression for %h, %i and %v bindings) =
+sample.long.ten :LOCALHOST
+
+expr_30 (subexpression for %h, %i and %v bindings) =
+sample.long.hundred :LOCALHOST
+
+pmie>
+SYSLOG ...
+...: some sample ncpu equal [<%i undefined>] N N N
diff --git a/qa/515 b/qa/515
new file mode 100755
index 0000000..fda8ced
--- /dev/null
+++ b/qa/515
@@ -0,0 +1,81 @@
+#!/bin/sh
+# PCP QA Test No. 515
+# pmie rising/falling test
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+# Based on bug report http://oss.sgi.com/bugzilla/show_bug.cgi?id=936
+# from azzurrow@gmail.com
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_err()
+{
+ sed \
+ -e 's/.*Info: evaluator exiting/pmie: note - evaluator exiting/g'
+}
+
+_filter()
+{
+ _filter_pmie_log
+}
+
+cat <<'End-of-File' >$tmp.rules
+some_inst pmcd.control.register > 0 -> print "some_inst:" " control[%i]=%v";
+some_inst match_inst "^1[0-5]\$" pmcd.control.register > 0 -> print "some_inst match_inst:" " control[%i]=%v";
+some_inst rising pmcd.control.register > 0 -> print "some_inst rising:" " control[%i]=%v";
+some_inst rising match_inst "^1[0-5]\$" pmcd.control.register > 0 -> print "some_inst rising match_inst:" " control[%i]=%v";
+some_inst match_inst "^1[0-5]\$" rising pmcd.control.register > 0 -> print "some_inst match_inst rising:" " control[%i]=%v";
+some_inst falling pmcd.control.register > 0 -> print "some_inst falling:" " control[%i]=%v";
+some_inst falling match_inst "^1[0-5]\$" pmcd.control.register > 0 -> print "some_inst falling match_inst:" " control[%i]=%v";
+some_inst match_inst "^1[0-5]\$" falling pmcd.control.register > 0 -> print "some_inst match_inst falling:" " control[%i]=%v";
+rising some_inst pmcd.control.register > 0 -> print "rising some_inst:" " control[%i]=%v";
+rising some_inst match_inst "^1[0-5]\$" pmcd.control.register > 0 -> print "rising some_inst match_inst:" " control[%i]=%v";
+falling some_inst pmcd.control.register > 0 -> print "falling some_inst:" " control[%i]=%v";
+falling some_inst match_inst "^1[0-5]\$" pmcd.control.register > 0 -> print "falling some_inst match_inst:" " control[%i]=%v";
+End-of-File
+
+pmstore pmcd.control.register 0 >>$seq.full
+
+# real QA test starts here
+
+# duration has to be longer than the sum of the sleep's below
+# and sample frequency has to be small enough to ensure several evaluations
+# within each sleep period
+#
+pmie -c $tmp.rules >$tmp.out 2>$tmp.err -t 0.4sec -T 10sec &
+
+sleep 2
+pmstore pmcd.control.register 1 >>$seq.full
+sleep 2
+pmstore pmcd.control.register 0 >>$seq.full
+sleep 2
+pmstore -i 8,9,10,11 pmcd.control.register 4 >>$seq.full
+sleep 2
+pmstore pmcd.control.register 0 >>$seq.full
+wait
+
+echo "=== stderr ===" | tee -a $seq.full
+cat $tmp.err >>$seq.full
+_filter_err <$tmp.err
+echo "=== stdout ===" | tee -a $seq.full
+cat $tmp.out >>$seq.full
+_filter <$tmp.out \
+| LC_COLLATE=POSIX sort \
+| uniq -c \
+| sed -e 's/ [456] DATE/4-6 DATE/'
+
+# success, all done
+status=0
+exit
diff --git a/qa/515.out b/qa/515.out
new file mode 100644
index 0000000..cb2840a
--- /dev/null
+++ b/qa/515.out
@@ -0,0 +1,26 @@
+QA output created by 515
+=== stderr ===
+pmie: note - evaluator exiting
+=== stdout ===
+ 2 DATE: falling some_inst match_inst:
+ 2 DATE: falling some_inst:
+ 1 DATE: rising some_inst match_inst: control[10]=1 control[11]=1 control[12]=1 control[13]=1 control[14]=1 control[15]=1
+ 1 DATE: rising some_inst match_inst: control[10]=4 control[11]=4
+ 1 DATE: rising some_inst: control[0]=1 control[1]=1 control[2]=1 control[3]=1 control[4]=1 control[5]=1 control[6]=1 control[7]=1 control[8]=1 control[9]=1 control[10]=1 control[11]=1 control[12]=1 control[13]=1 control[14]=1 control[15]=1
+ 1 DATE: rising some_inst: control[8]=4 control[9]=4 control[10]=4 control[11]=4
+ 1 DATE: some_inst falling match_inst: control[10]=0 control[11]=0
+ 1 DATE: some_inst falling match_inst: control[10]=0 control[11]=0 control[12]=0 control[13]=0 control[14]=0 control[15]=0
+ 1 DATE: some_inst falling: control[0]=0 control[1]=0 control[2]=0 control[3]=0 control[4]=0 control[5]=0 control[6]=0 control[7]=0 control[8]=0 control[9]=0 control[10]=0 control[11]=0 control[12]=0 control[13]=0 control[14]=0 control[15]=0
+ 1 DATE: some_inst falling: control[8]=0 control[9]=0 control[10]=0 control[11]=0
+ 1 DATE: some_inst match_inst falling: control[10]=0 control[11]=0
+ 1 DATE: some_inst match_inst falling: control[10]=0 control[11]=0 control[12]=0 control[13]=0 control[14]=0 control[15]=0
+ 1 DATE: some_inst match_inst rising: control[10]=1 control[11]=1 control[12]=1 control[13]=1 control[14]=1 control[15]=1
+ 1 DATE: some_inst match_inst rising: control[10]=4 control[11]=4
+ 4-6 DATE: some_inst match_inst: control[10]=1 control[11]=1 control[12]=1 control[13]=1 control[14]=1 control[15]=1
+ 4-6 DATE: some_inst match_inst: control[10]=4 control[11]=4
+ 1 DATE: some_inst rising match_inst: control[10]=1 control[11]=1 control[12]=1 control[13]=1 control[14]=1 control[15]=1
+ 1 DATE: some_inst rising match_inst: control[10]=4 control[11]=4
+ 1 DATE: some_inst rising: control[0]=1 control[1]=1 control[2]=1 control[3]=1 control[4]=1 control[5]=1 control[6]=1 control[7]=1 control[8]=1 control[9]=1 control[10]=1 control[11]=1 control[12]=1 control[13]=1 control[14]=1 control[15]=1
+ 1 DATE: some_inst rising: control[8]=4 control[9]=4 control[10]=4 control[11]=4
+ 4-6 DATE: some_inst: control[0]=1 control[1]=1 control[2]=1 control[3]=1 control[4]=1 control[5]=1 control[6]=1 control[7]=1 control[8]=1 control[9]=1 control[10]=1 control[11]=1 control[12]=1 control[13]=1 control[14]=1 control[15]=1
+ 4-6 DATE: some_inst: control[8]=4 control[9]=4 control[10]=4 control[11]=4
diff --git a/qa/516 b/qa/516
new file mode 100755
index 0000000..b7d1f3e
--- /dev/null
+++ b/qa/516
@@ -0,0 +1,38 @@
+#!/bin/sh
+# PCP QA Test No. 516
+# pmie dumps core on this
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+cat >$tmp.conf <<'End-of-File'
+// bad summary pmda config ... summary.ncpu.sum defined twice
+hosts = ":localhost :localhost";
+summary.ncpu.sum = sum_host hinv.ncpu $hosts;
+summary.ncpu.avg = avg_host hinv.ncpu $hosts;
+summary.ncpu.sum = max_host hinv.ncpu $hosts;
+End-of-File
+pmie -v -t 1 -T 1 <$tmp.conf >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err \
+| sed \
+ -e 's/ */ /g' \
+ -e '/^summary/s/[0-9][0-9]*$/N/' \
+| _show_pmie_errors
+
+# all done
+status=0
+exit
diff --git a/qa/516.out b/qa/516.out
new file mode 100644
index 0000000..6e74e9e
--- /dev/null
+++ b/qa/516.out
@@ -0,0 +1,8 @@
+QA output created by 516
+summary.ncpu.sum: N
+summary.ncpu.avg: N
+summary.ncpu.sum: N
+summary.ncpu.avg: N
+pmie: syntax error - at end of file
+rule "summary.ncpu.sum" multiply defined
+pmie: note - evaluator exiting
diff --git a/qa/517 b/qa/517
new file mode 100755
index 0000000..43ee06d
--- /dev/null
+++ b/qa/517
@@ -0,0 +1,156 @@
+#!/bin/sh
+# PCP QA Test No. 517
+# Test logic for config file migration, harvesting, cleanup as
+# part of a packaged install.
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# ... copied directly from ../debian/cleanconfigs
+#
+
+# Function to do all of the configuration file migration work
+#
+_clean_configs()
+{
+ #
+ # Usage: _clean_configs [-v] new_dir old_dir ...
+ #
+ # Across all the files in the new_dir and old_dir args, match
+ # names and pick the most recently modified version and leave
+ # this (same mode and modification date) in new_dir
+ #
+ # -v option is verbose mode for debugging
+ #
+
+ _verbose=false
+ if [ $# -gt 0 -a X"$1" = "X-v" ]
+ then
+ _verbose=true
+ shift
+ fi
+
+ if [ $# -lt 2 ]
+ then
+ echo >&2 "Usage: _clean_configs [-v] new_dir old_dir ..."
+ return
+ fi
+
+ _new="$1"
+ if [ ! -d "$_new" ]
+ then
+ $verbose && echo >&2 + mkdir -p "$_new"
+ mkdir -p "$_new"
+ fi
+
+ shift
+ for _dir
+ do
+ [ "$_dir" = "$_new" ] && continue
+ if [ -d "$_dir" ]
+ then
+ ( cd "$_dir" ; find . -type f -print ) \
+ | sed -e 's/^\.\///' \
+ | while read _file
+ do
+ _want=false
+ if [ -f "$_new/$_file" ]
+ then
+ # file exists in both directories, pick the more
+ # recently modified one
+ #
+ _try=`find "$_dir/$_file" -newer "$_new/$_file" -print`
+ [ -n "$_try" ] && _want=true
+ else
+ _want=true
+ fi
+ if $_want
+ then
+ _dest=`dirname $_new/$_file`
+ if [ ! -d "$_dest" ]
+ then
+ $verbose && >&2 echo + mkdir "$_dest"
+ mkdir "$_dest"
+ fi
+ $_verbose && echo >&2 + cp -p "$_dir/$_file" "$_new/$_file"
+ cp -p "$_dir/$_file" "$_new/$_file"
+ fi
+ done
+ fi
+ done
+}
+
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;/TMP;g" \
+ | LC_COLLATE=POSIX sort
+}
+
+_show()
+{
+ cd $1
+ find * -type f \
+ | while read x
+ do
+ $PCP_ECHO_PROG $PCP_ECHO_N "$x: ""$PCP_ECHO_C"
+ cat $x
+ done
+ cd $here
+}
+
+# real QA test starts here
+echo "Usage cases ..."
+_clean_configs
+_clean_configs "one_arg"
+_clean_configs -v "-v+one_arg"
+
+echo; echo "No dirs exist"
+_clean_configs -v $tmp.new old1 old2 2>&1 | _filter
+
+echo; echo "Empty new dir, harvest all, no name matches"
+mkdir $tmp.old1
+mkdir $tmp.old2
+echo foo >$tmp.old1/foo
+echo bar >$tmp.old1/bar
+echo mumble >$tmp.old2/mumble
+echo fumble >$tmp.old2/fumble
+echo stumble >$tmp.old2/stumble
+_clean_configs -v $tmp.new $tmp.old1 $tmp.old2 2>&1 | _filter
+_show $tmp.new
+
+yesterday=`pmdate -1d %Y%m%d%H%M`
+echo; echo "All names match, some older files"
+touch -t $yesterday $tmp.new/mumble
+echo "newer mumble" >$tmp.old2/mumble
+touch -t $yesterday $tmp.old1/bar
+echo "newer bar" >$tmp.new/bar
+_clean_configs -v $tmp.new $tmp.old1 $tmp.old2 2>&1 | _filter
+_show $tmp.new
+
+echo; echo "Hybid cases"
+echo "older bar" >$tmp.old2/bar
+touch -t $yesterday $tmp.old2/bar
+rm $tmp.new/foo
+echo "older foo" >$tmp.old1/foo
+touch -t $yesterday $tmp.old1/foo
+echo foo >$tmp.old2/foo
+rm $tmp.new/fumble
+_clean_configs -v $tmp.new $tmp.old1 $tmp.old2 2>&1 | _filter
+_show $tmp.new
+
+status=0
+exit
diff --git a/qa/517.out b/qa/517.out
new file mode 100644
index 0000000..894b23a
--- /dev/null
+++ b/qa/517.out
@@ -0,0 +1,38 @@
+QA output created by 517
+Usage cases ...
+Usage: _clean_configs [-v] new_dir old_dir ...
+Usage: _clean_configs [-v] new_dir old_dir ...
+Usage: _clean_configs [-v] new_dir old_dir ...
+
+No dirs exist
++ mkdir -p /TMP.new
+
+Empty new dir, harvest all, no name matches
++ cp -p /TMP.old1/bar /TMP.new/bar
++ cp -p /TMP.old1/foo /TMP.new/foo
++ cp -p /TMP.old2/fumble /TMP.new/fumble
++ cp -p /TMP.old2/mumble /TMP.new/mumble
++ cp -p /TMP.old2/stumble /TMP.new/stumble
+bar: bar
+foo: foo
+fumble: fumble
+mumble: mumble
+stumble: stumble
+
+All names match, some older files
++ cp -p /TMP.old2/mumble /TMP.new/mumble
+bar: newer bar
+foo: foo
+fumble: fumble
+mumble: newer mumble
+stumble: stumble
+
+Hybid cases
++ cp -p /TMP.old1/foo /TMP.new/foo
++ cp -p /TMP.old2/foo /TMP.new/foo
++ cp -p /TMP.old2/fumble /TMP.new/fumble
+bar: newer bar
+foo: foo
+fumble: fumble
+mumble: newer mumble
+stumble: stumble
diff --git a/qa/518 b/qa/518
new file mode 100755
index 0000000..94ac83a
--- /dev/null
+++ b/qa/518
@@ -0,0 +1,71 @@
+#!/bin/sh
+# PCP QA Test No. 518
+# pcp -P workout
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+signal=$PCP_BINADM_DIR/pmsignal
+$sudo rm -rf $tmp.* $seq.full
+trap "$sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.pmie
+hinv.ncpu > 0 -> print "we have cpus, no surprise here!";
+hinv.ncpu < 0 -> print "whoa ... no cpus!";
+End-of-File
+
+# real QA test starts here
+$sudo $signal -a pmie >/dev/null 2>&1
+
+# prefer to run as "pcp", must ensure we can write stats files
+# to PCP_TMP_DIR which is no longer a world-writable directory
+#
+user=pcp
+id pcp >/dev/null 2>/dev/null || user=root
+$sudo -u $user pmie -t 1 -c $tmp.pmie 2>$tmp.err >$tmp.out &
+pid=$!
+
+sleep 2 # let stats accumulate via rule firings
+
+# pcp -P output ...
+# pmie: bozo-vm: /tmp/518-28812.pmie (2 rules)
+# evaluations true=2 false=2 unknown=0 (actions=2)
+# expected evaluation rate=2.00 rules/sec
+# bozo-vm: /var/log/pcp/pmmgr/bozo-vm/config.pmie (12 rules)
+# evaluations true=0 false=3 unknown=9 (actions=0)
+# expected evaluation rate=0.10 rules/sec
+#
+# want the our pmie, not any other pmie processes
+#
+pcp -P \
+| tee -a $seq.full \
+| $PCP_AWK_PROG '
+/pmie:/ { state=1 }
+state==1 && /'`echo $tmp.pmie | sed -e s@/@\\\\\\\\/@g`' \(2 rules\)/ { print; want = 1; next }
+state==1 && / rules\)/ { want = 0 }
+want==1 { print }' \
+| sed \
+ -e "s;$tmp;TMP;" \
+ -e "s;/privateTMP;TMP;g" \
+ -e '/TMP/{
+s/ (.*//
+s/.*:/HOST:/
+}'
+
+$sudo $signal $pid
+wait
+
+cat $tmp.out >>$seq.full
+cat $tmp.err >>$seq.full
+
+status=0
+exit
diff --git a/qa/518.out b/qa/518.out
new file mode 100644
index 0000000..aab0b71
--- /dev/null
+++ b/qa/518.out
@@ -0,0 +1,4 @@
+QA output created by 518
+HOST: TMP.pmie
+ evaluations true=2 false=2 unknown=0 (actions=2)
+ expected evaluation rate=2.00 rules/sec
diff --git a/qa/519 b/qa/519
new file mode 100755
index 0000000..217d0f6
--- /dev/null
+++ b/qa/519
@@ -0,0 +1,128 @@
+#! /bin/sh
+# PCP QA Test No. 519
+# exercise new action args (no limit of 2) for pmie ... caused
+# pmie to dump core initially
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+#
+# Solaris Note (OpenIndiana specifically)
+#
+# Need to edit /etc/syslog.conf and add these lines
+# # for PCP QA
+# daemon.info /var/log/syslog
+#
+# then kill -HUP <pid-for-syslogd>
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix|linux)
+ ln $seq.$PCP_PLATFORM $seq.out || exit 1
+ SYSLOG_OPT='"-p daemon.info"'
+ ;;
+ darwin)
+ ln $seq.linux $seq.out || exit 1
+ SYSLOG_OPT=''
+ ;;
+ solaris)
+ ln $seq.linux $seq.out || exit 1
+ SYSLOG_OPT='"-p daemon.info"'
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e 's/[A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e "s/`hostname | sed -e 's/\..*//'`/HOST/" \
+ -e 's/[0-9][A-Z]:HOST/HOST/' \
+ -e 's/\(pmie[([]\)[0-9][0-9]*/\1PID/' \
+ -e 's/ \[ID [0-9][0-9]* daemon.info]//'
+}
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+PMCD_CONNECT_TIMEOUT=60
+PMCD_REQUEST_TIMEOUT=60
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT
+
+eval `./getpmcdhosts -n 2 -L | sed -e 's/ / other2=/' -e 's/^/other1=/'`
+if [ -z "$other1" ]
+then
+ _notrun "Cannot find first remote host running pmcd"
+fi
+if [ -z "$other2" ]
+then
+ _notrun "Cannot find second remote host running pmcd"
+ exit
+fi
+
+# real QA test starts here
+$sudo rm -f core* $seq.core*
+
+cat <<End-of-File | pmie -T 10sec >$tmp.out 2>$tmp.err
+// use hosts not in QA circus
+//
+
+hosts = ":'$other1' :'$other2'";
+
+some_host (
+ some_inst (
+ ( 100 * filesys.used \$hosts / filesys.capacity \$hosts ) > 0 ) )
+-> shell 15 "src/show-args -c SYSMON -t PERF_INFO_SYSTEM -m 'file system over half-full" "\n%h:[%i] %v% " "'"
+ & syslog 15 $SYSLOG_OPT "PCP QA $seq - please ignore - ..." " %h:[%i] %v% ";
+
+End-of-File
+
+echo "pmie output ..."
+sed <$tmp.out \
+ -e "/^$other1:/d" \
+ -e "/^$other2:/d"
+grep "^$other1:" <$tmp.out >/dev/null && echo "... at least one line for other1 host"
+grep "^$other2:" <$tmp.out >/dev/null && echo "... at least one line for other2 host"
+
+echo
+echo "pmie stderr ..."
+_filter <$tmp.err
+
+echo
+echo "SYSLOG ..."
+SYSLOG=''
+for f in /var/adm/SYSLOG /var/log/daemon.log /var/log/messages /var/log/syslog /var/log/system.log
+do
+ if [ -f $f ]
+ then
+ SYSLOG=$f
+ break
+ fi
+done
+if [ -z "$SYSLOG" ]
+then
+ echo "Arrgh! Cannot find your syslog file"
+ exit 1
+fi
+
+$sudo tail -100 $SYSLOG \
+| sed -n '/PCP QA '"$seq"' - please ignore/s/\.\.\..*/.../p' \
+| _filter \
+| sort -u
+
+_check_core
+
+exit
diff --git a/qa/519.irix b/qa/519.irix
new file mode 100644
index 0000000..44fe3b7
--- /dev/null
+++ b/qa/519.irix
@@ -0,0 +1,17 @@
+QA output created by 519
+pmie output ...
+src/show-args called
+arg[1] -c
+arg[2] SYSMON
+arg[3] -t
+arg[4] PERF_INFO_SYSTEM
+arg[5] -m
+arg[6] file system over half-full
+... at least one line for other1 host
+... at least one line for other2 host
+
+pmie stderr ...
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+SYSLOG ...
+TIMESTAMP HOST pcp-pmie[PID]: PCP QA 519 - please ignore - ...
diff --git a/qa/519.linux b/qa/519.linux
new file mode 100644
index 0000000..44fe3b7
--- /dev/null
+++ b/qa/519.linux
@@ -0,0 +1,17 @@
+QA output created by 519
+pmie output ...
+src/show-args called
+arg[1] -c
+arg[2] SYSMON
+arg[3] -t
+arg[4] PERF_INFO_SYSTEM
+arg[5] -m
+arg[6] file system over half-full
+... at least one line for other1 host
+... at least one line for other2 host
+
+pmie stderr ...
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+SYSLOG ...
+TIMESTAMP HOST pcp-pmie[PID]: PCP QA 519 - please ignore - ...
diff --git a/qa/520 b/qa/520
new file mode 100755
index 0000000..31420cc
--- /dev/null
+++ b/qa/520
@@ -0,0 +1,101 @@
+#!/bin/sh
+# PCP QA Test No. 520
+#
+# pmie - lots of expressions, checking pmie -d output and %v binding
+# - multihost cases, see also QA 514
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3702 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ if [ $PCP_VER -lt 3900 ]
+ then
+ ln $seq.out.2 $seq.out || exit 1
+ else
+ ln $seq.out.3 $seq.out || exit 1
+ fi
+fi
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/DATE [12][0-9][0-9][0-9]/DATE/' \
+ -e '/evaluator exiting/s/pmie([0-9][0-9]*)/pmie(PID)/' \
+ -e '/Performance Co-Pilot Inference Engine/s/Version .*/Version .../'
+}
+
+_filter2()
+{
+ $PCP_AWK_PROG '
+$1 == "pmie:" { print; next }
+/failed: / { print; next }
+$1 == "bundle:" { skip=1 }
+skip == 1 { if ($1 == "Rule:") skip = 0 }
+skip == 1 { next }
+ { print }' >$tmp.tmp
+ tr ' =' '\012' <$tmp.tmp \
+ | grep '0x' \
+ | $PCP_AWK_PROG >$tmp.sed '
+BEGIN { n = 0 }
+ { if (seen[$1] == 1) next
+ printf "s/%s/ADDR%03d/\n",$1,n
+ n++
+ seen[$1] = 1
+ }'
+ sed -f $tmp.sed <$tmp.tmp
+}
+
+cat <<'End-of-File' >$tmp.pmie
+hosts = ":vm00 :vm01 :vm02 :vm03";
+some_host sampledso.drift $hosts > 0 -> print "some_host:" " @%h %v";
+all_host 10 * sampledso.drift $hosts == sampledso.ulong.ten $hosts * sampledso.drift $hosts -> print "all_host:" " @%h %v";
+25%_host (hinv.physmem $hosts / (1024*1024)) > 512 -> print "25%_host:" " @%h %v";
+min_host hinv.physmem $hosts == 239 * 1024 Kbyte -> print "min_host:" " @%h %v";
+max_host sampledso.colour $hosts #'red' < max_host max_inst (sampledso.colour $hosts) -> print "max_host:" " @%h %v";
+sum_host hinv.ncpu $hosts == hinv.ncpu :vm00 + hinv.ncpu :vm01 + hinv.ncpu :vm02 + hinv.ncpu :vm03 -> print "sum_host:" " @%h %v";
+avg_host min_inst sampledso.bin $hosts == 100 -> print "avg_host:" " @%h [%i] %v";
+count_host (some_inst sampledso.part_bin > 300) > 0 -> print "count_host:" " @%h [%i] %v";
+End-of-File
+
+# real QA test starts here
+cat <<End-of-File | pmie -t 2sec -d -Dappl1 -a src/multi-vm00 -a src/multi-vm01 -a src/multi-vm02 -a src/multi-vm03 >$tmp.out 2>$tmp.err &
+f $tmp.pmie
+l
+r 10sec
+v
+End-of-File
+
+wait
+
+echo >>$seq.full
+echo "pmie PID $!" >>$seq.full
+echo >>$seq.full
+echo "=== pmie output ===" >>$seq.full
+cat $tmp.out >>$seq.full
+echo >>$seq.full
+echo "=== pmie errors ===" >>$seq.full
+cat $tmp.err >>$seq.full
+
+_filter2 <$tmp.err | _filter
+_filter <$tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/520.out.1 b/qa/520.out.1
new file mode 100644
index 0000000..226e5ca
--- /dev/null
+++ b/qa/520.out.1
@@ -0,0 +1,594 @@
+QA output created by 520
+findFetch: fetch=ADDR000 host=ADDR001 delta=2.000000 handle=0
+findFetch: fetch=ADDR002 host=ADDR003 delta=2.000000 handle=1
+findFetch: fetch=ADDR004 host=ADDR005 delta=2.000000 handle=2
+findFetch: fetch=ADDR006 host=ADDR007 delta=2.000000 handle=3
+Rule: expr_1
+Expr dump @ ADDR008
+ op=0 (->) arg1=ADDR009 arg2=ADDR010 parent=(nil)
+ eval=rule metrics=ADDR011 ring=ADDR012
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR009
+.. op=53 (some_host) arg1=ADDR013 arg2=(nil) parent=ADDR008
+.. eval=cndSome_host metrics=ADDR011 ring=ADDR014
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR013
+.. .. op=34 (>) arg1=ADDR015 arg2=ADDR016 parent=ADDR009
+.. .. eval=cndGt_n_1 metrics=ADDR011 ring=ADDR017
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR015
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR013
+.. .. .. eval=cndFetch_1 metrics=ADDR011 ring=ADDR018
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR016
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR013
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR019
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR019 0
+.. Expr dump @ ADDR010
+.. op=75 (print) arg1=ADDR020 arg2=(nil) parent=ADDR008
+.. eval=actFake metrics=(nil) ring=ADDR021
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR020
+.. .. op=76 (<action arg node>) arg1=ADDR022 arg2=(nil) parent=ADDR010
+.. .. eval=actArg metrics=(nil) ring=ADDR023
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR022
+.. .. .. op=80 (<nop node>) arg1=ADDR024 arg2=(nil) parent=ADDR020
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR025
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=10
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR025 "some_host:"
+.. .. .. .. Expr dump @ ADDR024
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR022
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR026
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR026 " @%h %v"
+
+Rule: expr_2
+Expr dump @ ADDR027
+ op=0 (->) arg1=ADDR028 arg2=ADDR029 parent=(nil)
+ eval=rule metrics=ADDR030 ring=ADDR031
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR028
+.. op=50 (all_host) arg1=ADDR032 arg2=(nil) parent=ADDR027
+.. eval=cndAll_host metrics=ADDR030 ring=ADDR033
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR032
+.. .. op=30 (==) arg1=ADDR034 arg2=ADDR035 parent=ADDR028
+.. .. eval=cndEq_n_n metrics=ADDR030 ring=ADDR036
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR034
+.. .. .. op=7 (*) arg1=ADDR037 arg2=ADDR038 parent=ADDR032
+.. .. .. eval=cndMul_1_n metrics=ADDR030 ring=ADDR039
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR037
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR040
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR040 10
+.. .. .. .. Expr dump @ ADDR038
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. .. .. eval=cndFetch_1 metrics=ADDR030 ring=ADDR041
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR035
+.. .. .. op=7 (*) arg1=ADDR042 arg2=ADDR043 parent=ADDR032
+.. .. .. eval=cndMul_n_n metrics=ADDR044 ring=ADDR045
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR042
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR035
+.. .. .. .. eval=cndFetch_1 metrics=ADDR044 ring=ADDR046
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR043
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR035
+.. .. .. .. eval=cndFetch_1 metrics=ADDR047 ring=ADDR048
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. Expr dump @ ADDR029
+.. op=75 (print) arg1=ADDR049 arg2=(nil) parent=ADDR027
+.. eval=actFake metrics=(nil) ring=ADDR050
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR049
+.. .. op=76 (<action arg node>) arg1=ADDR051 arg2=(nil) parent=ADDR029
+.. .. eval=actArg metrics=(nil) ring=ADDR052
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR051
+.. .. .. op=80 (<nop node>) arg1=ADDR053 arg2=(nil) parent=ADDR049
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR054
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR054 "all_host:"
+.. .. .. .. Expr dump @ ADDR053
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR051
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR055
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR055 " @%h %v"
+
+Rule: expr_3
+Expr dump @ ADDR056
+ op=0 (->) arg1=ADDR057 arg2=ADDR058 parent=(nil)
+ eval=rule metrics=ADDR059 ring=ADDR060
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR057
+.. op=56 (pcnt_host) arg1=ADDR061 arg2=ADDR062 parent=ADDR056
+.. eval=cndPcnt_host metrics=ADDR059 ring=ADDR063
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR061
+.. .. op=34 (>) arg1=ADDR064 arg2=ADDR065 parent=ADDR057
+.. .. eval=cndGt_n_1 metrics=ADDR059 ring=ADDR066
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR064
+.. .. .. op=8 (/) arg1=ADDR067 arg2=ADDR068 parent=ADDR061
+.. .. .. eval=cndDiv_n_1 metrics=ADDR059 ring=ADDR069
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=
+.. .. .. .. Expr dump @ ADDR067
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR064
+.. .. .. .. eval=cndFetch_1 metrics=ADDR059 ring=ADDR070
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. .. .. Expr dump @ ADDR068
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR064
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR071
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR071 1.04858e+06
+.. .. .. Expr dump @ ADDR065
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR061
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR072
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR072 512
+.. .. Expr dump @ ADDR062
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR073
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR073 0.25
+.. Expr dump @ ADDR058
+.. op=75 (print) arg1=ADDR074 arg2=(nil) parent=ADDR056
+.. eval=actFake metrics=(nil) ring=ADDR075
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR074
+.. .. op=76 (<action arg node>) arg1=ADDR076 arg2=(nil) parent=ADDR058
+.. .. eval=actArg metrics=(nil) ring=ADDR077
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR076
+.. .. .. op=80 (<nop node>) arg1=ADDR078 arg2=(nil) parent=ADDR074
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR079
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR079 "25%_host:"
+.. .. .. .. Expr dump @ ADDR078
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR080
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR080 " @%h %v"
+
+Rule: expr_4
+Expr dump @ ADDR081
+ op=0 (->) arg1=ADDR082 arg2=ADDR083 parent=(nil)
+ eval=rule metrics=ADDR084 ring=ADDR085
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR082
+.. op=30 (==) arg1=ADDR086 arg2=ADDR087 parent=ADDR081
+.. eval=cndEq_1_1 metrics=ADDR084 ring=ADDR088
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR086
+.. .. op=19 (min_host) arg1=ADDR089 arg2=(nil) parent=ADDR082
+.. .. eval=cndMin_host metrics=ADDR084 ring=ADDR090
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR089
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR086
+.. .. .. eval=cndFetch_1 metrics=ADDR084 ring=ADDR091
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. Expr dump @ ADDR087
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR082
+.. .. eval=(nil)() metrics=(nil) ring=ADDR092
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR092 2.5061e+08
+.. Expr dump @ ADDR083
+.. op=75 (print) arg1=ADDR093 arg2=(nil) parent=ADDR081
+.. eval=actFake metrics=(nil) ring=ADDR094
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR093
+.. .. op=76 (<action arg node>) arg1=ADDR095 arg2=(nil) parent=ADDR083
+.. .. eval=actArg metrics=(nil) ring=ADDR096
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR095
+.. .. .. op=80 (<nop node>) arg1=ADDR097 arg2=(nil) parent=ADDR093
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR098
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR098 "min_host:"
+.. .. .. .. Expr dump @ ADDR097
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR095
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR099
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR099 " @%h %v"
+
+Rule: expr_5
+Expr dump @ ADDR100
+ op=0 (->) arg1=ADDR101 arg2=ADDR102 parent=(nil)
+ eval=rule metrics=ADDR103 ring=ADDR104
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR101
+.. op=32 (<) arg1=ADDR105 arg2=ADDR106 parent=ADDR100
+.. eval=cndLt_1_n metrics=ADDR103 ring=ADDR107
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR105
+.. .. op=16 (max_host) arg1=ADDR108 arg2=(nil) parent=ADDR101
+.. .. eval=cndMax_host metrics=ADDR103 ring=ADDR109
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR108
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR105
+.. .. .. eval=cndFetch_n metrics=ADDR103 ring=ADDR110
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR106
+.. .. op=16 (max_host) arg1=ADDR111 arg2=(nil) parent=ADDR101
+.. .. eval=cndMax_host metrics=ADDR112 ring=ADDR113
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR111
+.. .. .. op=17 (max_inst) arg1=ADDR114 arg2=(nil) parent=ADDR106
+.. .. .. eval=cndMax_inst metrics=ADDR112 ring=ADDR115
+.. .. .. valid=0 cardinality[H,I,T]=[4,-1,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR114
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR111
+.. .. .. .. eval=cndFetch_all metrics=ADDR112 ring=ADDR116
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,12,1] tspan=12
+.. .. .. .. nsmpls=1 nvals=12 sem=INSTANT units=
+.. Expr dump @ ADDR102
+.. op=75 (print) arg1=ADDR117 arg2=(nil) parent=ADDR100
+.. eval=actFake metrics=(nil) ring=ADDR118
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR117
+.. .. op=76 (<action arg node>) arg1=ADDR119 arg2=(nil) parent=ADDR102
+.. .. eval=actArg metrics=(nil) ring=ADDR120
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR119
+.. .. .. op=80 (<nop node>) arg1=ADDR121 arg2=(nil) parent=ADDR117
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR122
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR122 "max_host:"
+.. .. .. .. Expr dump @ ADDR121
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR119
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR123
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR123 " @%h %v"
+
+Rule: expr_6
+Expr dump @ ADDR124
+ op=0 (->) arg1=ADDR125 arg2=ADDR126 parent=(nil)
+ eval=rule metrics=ADDR127 ring=ADDR128
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR125
+.. op=30 (==) arg1=ADDR129 arg2=ADDR130 parent=ADDR124
+.. eval=cndEq_1_1 metrics=ADDR127 ring=ADDR131
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR129
+.. .. op=10 (sum_host) arg1=ADDR132 arg2=(nil) parent=ADDR125
+.. .. eval=cndSum_host metrics=ADDR127 ring=ADDR133
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR132
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR129
+.. .. .. eval=cndFetch_1 metrics=ADDR127 ring=ADDR134
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=
+.. .. Expr dump @ ADDR130
+.. .. op=5 (+) arg1=ADDR135 arg2=ADDR136 parent=ADDR125
+.. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR138
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR135
+.. .. .. op=5 (+) arg1=ADDR139 arg2=ADDR140 parent=ADDR130
+.. .. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR141
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. Expr dump @ ADDR139
+.. .. .. .. op=5 (+) arg1=ADDR142 arg2=ADDR143 parent=ADDR135
+.. .. .. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR144
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. .. Expr dump @ ADDR142
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR139
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR137 ring=ADDR145
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. .. Expr dump @ ADDR143
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR139
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR146 ring=ADDR147
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. Expr dump @ ADDR140
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR135
+.. .. .. .. eval=cndFetch_1 metrics=ADDR148 ring=ADDR149
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR136
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR130
+.. .. .. eval=cndFetch_1 metrics=ADDR150 ring=ADDR151
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. Expr dump @ ADDR126
+.. op=75 (print) arg1=ADDR152 arg2=(nil) parent=ADDR124
+.. eval=actFake metrics=(nil) ring=ADDR153
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR152
+.. .. op=76 (<action arg node>) arg1=ADDR154 arg2=(nil) parent=ADDR126
+.. .. eval=actArg metrics=(nil) ring=ADDR155
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR154
+.. .. .. op=80 (<nop node>) arg1=ADDR156 arg2=(nil) parent=ADDR152
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR157
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR157 "sum_host:"
+.. .. .. .. Expr dump @ ADDR156
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR154
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR158
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR158 " @%h %v"
+
+Rule: expr_7
+Expr dump @ ADDR159
+ op=0 (->) arg1=ADDR160 arg2=ADDR161 parent=(nil)
+ eval=rule metrics=ADDR162 ring=ADDR163
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR160
+.. op=30 (==) arg1=ADDR164 arg2=ADDR165 parent=ADDR159
+.. eval=cndEq_n_1 metrics=ADDR162 ring=ADDR166
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR164
+.. .. op=13 (avg_host) arg1=ADDR167 arg2=(nil) parent=ADDR160
+.. .. eval=cndAvg_host metrics=ADDR162 ring=ADDR168
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR167
+.. .. .. op=20 (min_inst) arg1=ADDR169 arg2=(nil) parent=ADDR164
+.. .. .. eval=cndMin_inst metrics=ADDR162 ring=ADDR170
+.. .. .. valid=0 cardinality[H,I,T]=[4,-1,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR169
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR167
+.. .. .. .. eval=cndFetch_all metrics=ADDR162 ring=ADDR171
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,36,1] tspan=36
+.. .. .. .. nsmpls=1 nvals=36 sem=INSTANT units=
+.. .. Expr dump @ ADDR165
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR160
+.. .. eval=(nil)() metrics=(nil) ring=ADDR172
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR172 100
+.. Expr dump @ ADDR161
+.. op=75 (print) arg1=ADDR173 arg2=(nil) parent=ADDR159
+.. eval=actFake metrics=(nil) ring=ADDR174
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR173
+.. .. op=76 (<action arg node>) arg1=ADDR175 arg2=(nil) parent=ADDR161
+.. .. eval=actArg metrics=(nil) ring=ADDR176
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR175
+.. .. .. op=80 (<nop node>) arg1=ADDR177 arg2=(nil) parent=ADDR173
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR178
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR178 "avg_host:"
+.. .. .. .. Expr dump @ ADDR177
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR175
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR179
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR179 " @%h [%i] %v"
+
+Rule: expr_8
+Expr dump @ ADDR180
+ op=0 (->) arg1=ADDR181 arg2=ADDR182 parent=(nil)
+ eval=rule metrics=ADDR183 ring=ADDR184
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR181
+.. op=34 (>) arg1=ADDR185 arg2=ADDR186 parent=ADDR180
+.. eval=cndGt_n_1 metrics=ADDR183 ring=ADDR187
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR185
+.. .. op=59 (count_host) arg1=ADDR188 arg2=(nil) parent=ADDR181
+.. .. eval=cndCount_host metrics=ADDR183 ring=ADDR189
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR188
+.. .. .. op=54 (some_inst) arg1=ADDR190 arg2=(nil) parent=ADDR185
+.. .. .. eval=cndSome_inst metrics=ADDR183 ring=ADDR191
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR190
+.. .. .. .. op=34 (>) arg1=ADDR192 arg2=ADDR193 parent=ADDR188
+.. .. .. .. eval=cndGt_n_1 metrics=ADDR183 ring=ADDR194
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. .. Expr dump @ ADDR192
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. .. .. eval=cndFetch_all metrics=ADDR183 ring=ADDR195
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR193
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR196
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. .. smpls[0].ptr ADDR196 300
+.. .. Expr dump @ ADDR186
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR181
+.. .. eval=(nil)() metrics=(nil) ring=ADDR197
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR197 0
+.. Expr dump @ ADDR182
+.. op=75 (print) arg1=ADDR198 arg2=(nil) parent=ADDR180
+.. eval=actFake metrics=(nil) ring=ADDR199
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR198
+.. .. op=76 (<action arg node>) arg1=ADDR200 arg2=(nil) parent=ADDR182
+.. .. eval=actArg metrics=(nil) ring=ADDR201
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR200
+.. .. .. op=80 (<nop node>) arg1=ADDR202 arg2=(nil) parent=ADDR198
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR203
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR203 "count_host:"
+.. .. .. .. Expr dump @ ADDR202
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR200
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR204
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR204 " @%h [%i] %v"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> expr_1 =
+some_host (sampledso.drift :vm00 :vm01 :vm02 :vm03 > 0) -> print "some_host:" " @%h %v";
+
+expr_2 =
+all_host ((10 * sampledso.drift :vm00 :vm01 :vm02 :vm03) == (sampledso.ulong.ten :vm00 :vm01 :vm02 :vm03 * sampledso.drift :vm00 :vm01 :vm02 :vm03)) -> print "all_host:" " @%h %v";
+
+expr_3 =
+pcnt_host 25% ((hinv.physmem :vm00 :vm01 :vm02 :vm03 / 1048576) > 512) -> print "25%_host:" " @%h %v";
+
+expr_4 =
+min_host (hinv.physmem :vm00 :vm01 :vm02 :vm03) == 250609664 -> print "min_host:" " @%h %v";
+
+expr_5 =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red) < max_host (max_inst (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red #green #blue)) -> print "max_host:" " @%h %v";
+
+expr_6 =
+sum_host (hinv.ncpu :vm00 :vm01 :vm02 :vm03) == (((hinv.ncpu :vm00 + hinv.ncpu :vm01) + hinv.ncpu :vm02) + hinv.ncpu :vm03) -> print "sum_host:" " @%h %v";
+
+expr_7 =
+avg_host (min_inst (sampledso.bin :vm00 :vm01 :vm02 :vm03 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900)) == 100 -> print "avg_host:" " @%h [%i] %v";
+
+expr_8 =
+count_host (some_inst (sampledso.part_bin :vm00 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 300)) > 0 -> print "count_host:" " @%h [%i] %v";
+
+pmie> print DATE: some_host: @vm00 144 @vm01 57 @vm02 101 @vm03 125
+print DATE: all_host: @vm00 1440 @vm01 570 @vm02 1010 @vm03 1250
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: sum_host: @<%h undefined> 8
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 173 @vm01 50 @vm02 65 @vm03 170
+print DATE: all_host: @vm00 1730 @vm01 500 @vm02 650 @vm03 1700
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 119
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 179 @vm01 18 @vm02 62 @vm03 183
+print DATE: all_host: @vm00 1790 @vm01 180 @vm02 620 @vm03 1830
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 122
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 218 @vm02 14 @vm03 197
+print DATE: all_host: @vm00 2180 @vm01 0 @vm02 140 @vm03 1970
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 125
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+pmie> expr_1 (subexpression for %h, %i and %v bindings) =
+sampledso.drift :vm00 :vm01 :vm02 :vm03
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+10 * sampledso.drift :vm00 :vm01 :vm02 :vm03
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+hinv.physmem :vm00 :vm01 :vm02 :vm03 / 1048576
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+min_host (hinv.physmem :vm00 :vm01 :vm02 :vm03)
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red)
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+sum_host (hinv.ncpu :vm00 :vm01 :vm02 :vm03)
+
+expr_7 (subexpression for %h, %i and %v bindings) =
+avg_host (min_inst (sampledso.bin :vm00 :vm01 :vm02 :vm03 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900))
+
+expr_8 (subexpression for %h, %i and %v bindings) =
+count_host (some_inst (sampledso.part_bin :vm00 #bin-100 #bin-300 #bin-500 #bin-700 #bin-900 > 300))
+
+pmie> \ No newline at end of file
diff --git a/qa/520.out.2 b/qa/520.out.2
new file mode 100644
index 0000000..7cb4a6a
--- /dev/null
+++ b/qa/520.out.2
@@ -0,0 +1,594 @@
+QA output created by 520
+findFetch: fetch=ADDR000 host=ADDR001 delta=2.000000 handle=0
+findFetch: fetch=ADDR002 host=ADDR003 delta=2.000000 handle=1
+findFetch: fetch=ADDR004 host=ADDR005 delta=2.000000 handle=2
+findFetch: fetch=ADDR006 host=ADDR007 delta=2.000000 handle=3
+Rule: expr_1
+Expr dump @ ADDR008
+ op=0 (->) arg1=ADDR009 arg2=ADDR010 parent=(nil)
+ eval=rule metrics=ADDR011 ring=ADDR012
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR009
+.. op=53 (some_host) arg1=ADDR013 arg2=(nil) parent=ADDR008
+.. eval=cndSome_host metrics=ADDR011 ring=ADDR014
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR013
+.. .. op=34 (>) arg1=ADDR015 arg2=ADDR016 parent=ADDR009
+.. .. eval=cndGt_n_1 metrics=ADDR011 ring=ADDR017
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR015
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR013
+.. .. .. eval=cndFetch_1 metrics=ADDR011 ring=ADDR018
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR016
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR013
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR019
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR019 0
+.. Expr dump @ ADDR010
+.. op=75 (print) arg1=ADDR020 arg2=(nil) parent=ADDR008
+.. eval=actFake metrics=(nil) ring=ADDR021
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR020
+.. .. op=76 (<action arg node>) arg1=ADDR022 arg2=(nil) parent=ADDR010
+.. .. eval=actArg metrics=(nil) ring=ADDR023
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR022
+.. .. .. op=80 (<nop node>) arg1=ADDR024 arg2=(nil) parent=ADDR020
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR025
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=10
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR025 "some_host:"
+.. .. .. .. Expr dump @ ADDR024
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR022
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR026
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR026 " @%h %v"
+
+Rule: expr_2
+Expr dump @ ADDR027
+ op=0 (->) arg1=ADDR028 arg2=ADDR029 parent=(nil)
+ eval=rule metrics=ADDR030 ring=ADDR031
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR028
+.. op=50 (all_host) arg1=ADDR032 arg2=(nil) parent=ADDR027
+.. eval=cndAll_host metrics=ADDR030 ring=ADDR033
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR032
+.. .. op=30 (==) arg1=ADDR034 arg2=ADDR035 parent=ADDR028
+.. .. eval=cndEq_n_n metrics=ADDR030 ring=ADDR036
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR034
+.. .. .. op=7 (*) arg1=ADDR037 arg2=ADDR038 parent=ADDR032
+.. .. .. eval=cndMul_1_n metrics=ADDR030 ring=ADDR039
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR037
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR040
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR040 10
+.. .. .. .. Expr dump @ ADDR038
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. .. .. eval=cndFetch_1 metrics=ADDR030 ring=ADDR041
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR035
+.. .. .. op=7 (*) arg1=ADDR042 arg2=ADDR043 parent=ADDR032
+.. .. .. eval=cndMul_n_n metrics=ADDR044 ring=ADDR045
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR042
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR035
+.. .. .. .. eval=cndFetch_1 metrics=ADDR044 ring=ADDR046
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR043
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR035
+.. .. .. .. eval=cndFetch_1 metrics=ADDR047 ring=ADDR048
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. Expr dump @ ADDR029
+.. op=75 (print) arg1=ADDR049 arg2=(nil) parent=ADDR027
+.. eval=actFake metrics=(nil) ring=ADDR050
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR049
+.. .. op=76 (<action arg node>) arg1=ADDR051 arg2=(nil) parent=ADDR029
+.. .. eval=actArg metrics=(nil) ring=ADDR052
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR051
+.. .. .. op=80 (<nop node>) arg1=ADDR053 arg2=(nil) parent=ADDR049
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR054
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR054 "all_host:"
+.. .. .. .. Expr dump @ ADDR053
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR051
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR055
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR055 " @%h %v"
+
+Rule: expr_3
+Expr dump @ ADDR056
+ op=0 (->) arg1=ADDR057 arg2=ADDR058 parent=(nil)
+ eval=rule metrics=ADDR059 ring=ADDR060
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR057
+.. op=56 (pcnt_host) arg1=ADDR061 arg2=ADDR062 parent=ADDR056
+.. eval=cndPcnt_host metrics=ADDR059 ring=ADDR063
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR061
+.. .. op=34 (>) arg1=ADDR064 arg2=ADDR065 parent=ADDR057
+.. .. eval=cndGt_n_1 metrics=ADDR059 ring=ADDR066
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR064
+.. .. .. op=8 (/) arg1=ADDR067 arg2=ADDR068 parent=ADDR061
+.. .. .. eval=cndDiv_n_1 metrics=ADDR059 ring=ADDR069
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. .. .. Expr dump @ ADDR067
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR064
+.. .. .. .. eval=cndFetch_1 metrics=ADDR059 ring=ADDR070
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. .. .. Expr dump @ ADDR068
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR064
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR071
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR071 1.04858e+06
+.. .. .. Expr dump @ ADDR065
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR061
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR072
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR072 512
+.. .. Expr dump @ ADDR062
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR073
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR073 0.25
+.. Expr dump @ ADDR058
+.. op=75 (print) arg1=ADDR074 arg2=(nil) parent=ADDR056
+.. eval=actFake metrics=(nil) ring=ADDR075
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR074
+.. .. op=76 (<action arg node>) arg1=ADDR076 arg2=(nil) parent=ADDR058
+.. .. eval=actArg metrics=(nil) ring=ADDR077
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR076
+.. .. .. op=80 (<nop node>) arg1=ADDR078 arg2=(nil) parent=ADDR074
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR079
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR079 "25%_host:"
+.. .. .. .. Expr dump @ ADDR078
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR080
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR080 " @%h %v"
+
+Rule: expr_4
+Expr dump @ ADDR081
+ op=0 (->) arg1=ADDR082 arg2=ADDR083 parent=(nil)
+ eval=rule metrics=ADDR084 ring=ADDR085
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR082
+.. op=30 (==) arg1=ADDR086 arg2=ADDR087 parent=ADDR081
+.. eval=cndEq_1_1 metrics=ADDR084 ring=ADDR088
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR086
+.. .. op=19 (min_host) arg1=ADDR089 arg2=(nil) parent=ADDR082
+.. .. eval=cndMin_host metrics=ADDR084 ring=ADDR090
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=byte
+.. .. .. Expr dump @ ADDR089
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR086
+.. .. .. eval=cndFetch_1 metrics=ADDR084 ring=ADDR091
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. Expr dump @ ADDR087
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR082
+.. .. eval=(nil)() metrics=(nil) ring=ADDR092
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR092 2.5061e+08
+.. Expr dump @ ADDR083
+.. op=75 (print) arg1=ADDR093 arg2=(nil) parent=ADDR081
+.. eval=actFake metrics=(nil) ring=ADDR094
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR093
+.. .. op=76 (<action arg node>) arg1=ADDR095 arg2=(nil) parent=ADDR083
+.. .. eval=actArg metrics=(nil) ring=ADDR096
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR095
+.. .. .. op=80 (<nop node>) arg1=ADDR097 arg2=(nil) parent=ADDR093
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR098
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR098 "min_host:"
+.. .. .. .. Expr dump @ ADDR097
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR095
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR099
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR099 " @%h %v"
+
+Rule: expr_5
+Expr dump @ ADDR100
+ op=0 (->) arg1=ADDR101 arg2=ADDR102 parent=(nil)
+ eval=rule metrics=ADDR103 ring=ADDR104
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR101
+.. op=32 (<) arg1=ADDR105 arg2=ADDR106 parent=ADDR100
+.. eval=cndLt_1_n metrics=ADDR103 ring=ADDR107
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR105
+.. .. op=16 (max_host) arg1=ADDR108 arg2=(nil) parent=ADDR101
+.. .. eval=cndMax_host metrics=ADDR103 ring=ADDR109
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR108
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR105
+.. .. .. eval=cndFetch_n metrics=ADDR103 ring=ADDR110
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR106
+.. .. op=16 (max_host) arg1=ADDR111 arg2=(nil) parent=ADDR101
+.. .. eval=cndMax_host metrics=ADDR112 ring=ADDR113
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR111
+.. .. .. op=17 (max_inst) arg1=ADDR114 arg2=(nil) parent=ADDR106
+.. .. .. eval=cndMax_inst metrics=ADDR112 ring=ADDR115
+.. .. .. valid=0 cardinality[H,I,T]=[4,-1,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR114
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR111
+.. .. .. .. eval=cndFetch_all metrics=ADDR112 ring=ADDR116
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,12,1] tspan=12
+.. .. .. .. nsmpls=1 nvals=12 sem=INSTANT units=
+.. Expr dump @ ADDR102
+.. op=75 (print) arg1=ADDR117 arg2=(nil) parent=ADDR100
+.. eval=actFake metrics=(nil) ring=ADDR118
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR117
+.. .. op=76 (<action arg node>) arg1=ADDR119 arg2=(nil) parent=ADDR102
+.. .. eval=actArg metrics=(nil) ring=ADDR120
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR119
+.. .. .. op=80 (<nop node>) arg1=ADDR121 arg2=(nil) parent=ADDR117
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR122
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR122 "max_host:"
+.. .. .. .. Expr dump @ ADDR121
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR119
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR123
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR123 " @%h %v"
+
+Rule: expr_6
+Expr dump @ ADDR124
+ op=0 (->) arg1=ADDR125 arg2=ADDR126 parent=(nil)
+ eval=rule metrics=ADDR127 ring=ADDR128
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR125
+.. op=30 (==) arg1=ADDR129 arg2=ADDR130 parent=ADDR124
+.. eval=cndEq_1_1 metrics=ADDR127 ring=ADDR131
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR129
+.. .. op=10 (sum_host) arg1=ADDR132 arg2=(nil) parent=ADDR125
+.. .. eval=cndSum_host metrics=ADDR127 ring=ADDR133
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR132
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR129
+.. .. .. eval=cndFetch_1 metrics=ADDR127 ring=ADDR134
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=
+.. .. Expr dump @ ADDR130
+.. .. op=5 (+) arg1=ADDR135 arg2=ADDR136 parent=ADDR125
+.. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR138
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR135
+.. .. .. op=5 (+) arg1=ADDR139 arg2=ADDR140 parent=ADDR130
+.. .. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR141
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. Expr dump @ ADDR139
+.. .. .. .. op=5 (+) arg1=ADDR142 arg2=ADDR143 parent=ADDR135
+.. .. .. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR144
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. .. Expr dump @ ADDR142
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR139
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR137 ring=ADDR145
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. .. Expr dump @ ADDR143
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR139
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR146 ring=ADDR147
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. Expr dump @ ADDR140
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR135
+.. .. .. .. eval=cndFetch_1 metrics=ADDR148 ring=ADDR149
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR136
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR130
+.. .. .. eval=cndFetch_1 metrics=ADDR150 ring=ADDR151
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. Expr dump @ ADDR126
+.. op=75 (print) arg1=ADDR152 arg2=(nil) parent=ADDR124
+.. eval=actFake metrics=(nil) ring=ADDR153
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR152
+.. .. op=76 (<action arg node>) arg1=ADDR154 arg2=(nil) parent=ADDR126
+.. .. eval=actArg metrics=(nil) ring=ADDR155
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR154
+.. .. .. op=80 (<nop node>) arg1=ADDR156 arg2=(nil) parent=ADDR152
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR157
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR157 "sum_host:"
+.. .. .. .. Expr dump @ ADDR156
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR154
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR158
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR158 " @%h %v"
+
+Rule: expr_7
+Expr dump @ ADDR159
+ op=0 (->) arg1=ADDR160 arg2=ADDR161 parent=(nil)
+ eval=rule metrics=ADDR162 ring=ADDR163
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR160
+.. op=30 (==) arg1=ADDR164 arg2=ADDR165 parent=ADDR159
+.. eval=cndEq_n_1 metrics=ADDR162 ring=ADDR166
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR164
+.. .. op=13 (avg_host) arg1=ADDR167 arg2=(nil) parent=ADDR160
+.. .. eval=cndAvg_host metrics=ADDR162 ring=ADDR168
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR167
+.. .. .. op=20 (min_inst) arg1=ADDR169 arg2=(nil) parent=ADDR164
+.. .. .. eval=cndMin_inst metrics=ADDR162 ring=ADDR170
+.. .. .. valid=0 cardinality[H,I,T]=[4,-1,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR169
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR167
+.. .. .. .. eval=cndFetch_all metrics=ADDR162 ring=ADDR171
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,36,1] tspan=36
+.. .. .. .. nsmpls=1 nvals=36 sem=INSTANT units=
+.. .. Expr dump @ ADDR165
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR160
+.. .. eval=(nil)() metrics=(nil) ring=ADDR172
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR172 100
+.. Expr dump @ ADDR161
+.. op=75 (print) arg1=ADDR173 arg2=(nil) parent=ADDR159
+.. eval=actFake metrics=(nil) ring=ADDR174
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR173
+.. .. op=76 (<action arg node>) arg1=ADDR175 arg2=(nil) parent=ADDR161
+.. .. eval=actArg metrics=(nil) ring=ADDR176
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR175
+.. .. .. op=80 (<nop node>) arg1=ADDR177 arg2=(nil) parent=ADDR173
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR178
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR178 "avg_host:"
+.. .. .. .. Expr dump @ ADDR177
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR175
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR179
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR179 " @%h [%i] %v"
+
+Rule: expr_8
+Expr dump @ ADDR180
+ op=0 (->) arg1=ADDR181 arg2=ADDR182 parent=(nil)
+ eval=rule metrics=ADDR183 ring=ADDR184
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR181
+.. op=34 (>) arg1=ADDR185 arg2=ADDR186 parent=ADDR180
+.. eval=cndGt_n_1 metrics=ADDR183 ring=ADDR187
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR185
+.. .. op=59 (count_host) arg1=ADDR188 arg2=(nil) parent=ADDR181
+.. .. eval=cndCount_host metrics=ADDR183 ring=ADDR189
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=count
+.. .. .. Expr dump @ ADDR188
+.. .. .. op=54 (some_inst) arg1=ADDR190 arg2=(nil) parent=ADDR185
+.. .. .. eval=cndSome_inst metrics=ADDR183 ring=ADDR191
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR190
+.. .. .. .. op=34 (>) arg1=ADDR192 arg2=ADDR193 parent=ADDR188
+.. .. .. .. eval=cndGt_n_1 metrics=ADDR183 ring=ADDR194
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. .. Expr dump @ ADDR192
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. .. .. eval=cndFetch_all metrics=ADDR183 ring=ADDR195
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR193
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR196
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. .. smpls[0].ptr ADDR196 300
+.. .. Expr dump @ ADDR186
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR181
+.. .. eval=(nil)() metrics=(nil) ring=ADDR197
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR197 0
+.. Expr dump @ ADDR182
+.. op=75 (print) arg1=ADDR198 arg2=(nil) parent=ADDR180
+.. eval=actFake metrics=(nil) ring=ADDR199
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR198
+.. .. op=76 (<action arg node>) arg1=ADDR200 arg2=(nil) parent=ADDR182
+.. .. eval=actArg metrics=(nil) ring=ADDR201
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR200
+.. .. .. op=80 (<nop node>) arg1=ADDR202 arg2=(nil) parent=ADDR198
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR203
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR203 "count_host:"
+.. .. .. .. Expr dump @ ADDR202
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR200
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR204
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR204 " @%h [%i] %v"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> expr_1 =
+some_host (sampledso.drift :vm00 :vm01 :vm02 :vm03 > 0) -> print "some_host:" " @%h %v";
+
+expr_2 =
+all_host ((10 * sampledso.drift :vm00 :vm01 :vm02 :vm03) == (sampledso.ulong.ten :vm00 :vm01 :vm02 :vm03 * sampledso.drift :vm00 :vm01 :vm02 :vm03)) -> print "all_host:" " @%h %v";
+
+expr_3 =
+pcnt_host 25% ((hinv.physmem :vm00 :vm01 :vm02 :vm03 / 1048576) > 512) -> print "25%_host:" " @%h %v";
+
+expr_4 =
+min_host (hinv.physmem :vm00 :vm01 :vm02 :vm03) == 250609664 -> print "min_host:" " @%h %v";
+
+expr_5 =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red) < max_host (max_inst (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red #green #blue)) -> print "max_host:" " @%h %v";
+
+expr_6 =
+sum_host (hinv.ncpu :vm00 :vm01 :vm02 :vm03) == (((hinv.ncpu :vm00 + hinv.ncpu :vm01) + hinv.ncpu :vm02) + hinv.ncpu :vm03) -> print "sum_host:" " @%h %v";
+
+expr_7 =
+avg_host (min_inst (sampledso.bin :vm00 :vm01 :vm02 :vm03 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900)) == 100 -> print "avg_host:" " @%h [%i] %v";
+
+expr_8 =
+count_host (some_inst (sampledso.part_bin :vm00 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 300)) > 0 -> print "count_host:" " @%h [%i] %v";
+
+pmie> print DATE: some_host: @vm00 144 @vm01 57 @vm02 101 @vm03 125
+print DATE: all_host: @vm00 1440 @vm01 570 @vm02 1010 @vm03 1250
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: sum_host: @<%h undefined> 8
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 173 @vm01 50 @vm02 65 @vm03 170
+print DATE: all_host: @vm00 1730 @vm01 500 @vm02 650 @vm03 1700
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 119
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 179 @vm01 18 @vm02 62 @vm03 183
+print DATE: all_host: @vm00 1790 @vm01 180 @vm02 620 @vm03 1830
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 122
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 218 @vm02 14 @vm03 197
+print DATE: all_host: @vm00 2180 @vm01 0 @vm02 140 @vm03 1970
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 125
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+pmie> expr_1 (subexpression for %h, %i and %v bindings) =
+sampledso.drift :vm00 :vm01 :vm02 :vm03
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+10 * sampledso.drift :vm00 :vm01 :vm02 :vm03
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+hinv.physmem :vm00 :vm01 :vm02 :vm03 / 1048576
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+min_host (hinv.physmem :vm00 :vm01 :vm02 :vm03)
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red)
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+sum_host (hinv.ncpu :vm00 :vm01 :vm02 :vm03)
+
+expr_7 (subexpression for %h, %i and %v bindings) =
+avg_host (min_inst (sampledso.bin :vm00 :vm01 :vm02 :vm03 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900))
+
+expr_8 (subexpression for %h, %i and %v bindings) =
+count_host (some_inst (sampledso.part_bin :vm00 #bin-100 #bin-300 #bin-500 #bin-700 #bin-900 > 300))
+
+pmie> \ No newline at end of file
diff --git a/qa/520.out.3 b/qa/520.out.3
new file mode 100644
index 0000000..6e8e3ba
--- /dev/null
+++ b/qa/520.out.3
@@ -0,0 +1,597 @@
+QA output created by 520
+findFetch: fetch=ADDR000 host=ADDR001 delta=2.000000 handle=0
+findFetch: fetch=ADDR002 host=ADDR003 delta=2.000000 handle=1
+findFetch: fetch=ADDR004 host=ADDR005 delta=2.000000 handle=2
+findFetch: fetch=ADDR006 host=ADDR007 delta=2.000000 handle=3
+Rule: expr_1
+Expr dump @ ADDR008
+ op=0 (->) arg1=ADDR009 arg2=ADDR010 parent=(nil)
+ eval=rule metrics=ADDR011 ring=ADDR012
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR009
+.. op=53 (some_host) arg1=ADDR013 arg2=(nil) parent=ADDR008
+.. eval=cndSome_host metrics=ADDR011 ring=ADDR014
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR013
+.. .. op=34 (>) arg1=ADDR015 arg2=ADDR016 parent=ADDR009
+.. .. eval=cndGt_n_1 metrics=ADDR011 ring=ADDR017
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR015
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR013
+.. .. .. eval=cndFetch_1 metrics=ADDR011 ring=ADDR018
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR016
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR013
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR019
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR019 0
+.. Expr dump @ ADDR010
+.. op=75 (print) arg1=ADDR020 arg2=(nil) parent=ADDR008
+.. eval=actFake metrics=(nil) ring=ADDR021
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR020
+.. .. op=76 (<action arg node>) arg1=ADDR022 arg2=(nil) parent=ADDR010
+.. .. eval=actArg metrics=(nil) ring=ADDR023
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR022
+.. .. .. op=80 (<nop node>) arg1=ADDR024 arg2=(nil) parent=ADDR020
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR025
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=10
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR025 "some_host:"
+.. .. .. .. Expr dump @ ADDR024
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR022
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR026
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR026 " @%h %v"
+
+Rule: expr_2
+Expr dump @ ADDR027
+ op=0 (->) arg1=ADDR028 arg2=ADDR029 parent=(nil)
+ eval=rule metrics=ADDR030 ring=ADDR031
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR028
+.. op=50 (all_host) arg1=ADDR032 arg2=(nil) parent=ADDR027
+.. eval=cndAll_host metrics=ADDR030 ring=ADDR033
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR032
+.. .. op=30 (==) arg1=ADDR034 arg2=ADDR035 parent=ADDR028
+.. .. eval=cndEq_n_n metrics=ADDR030 ring=ADDR036
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR034
+.. .. .. op=7 (*) arg1=ADDR037 arg2=ADDR038 parent=ADDR032
+.. .. .. eval=cndMul_1_n metrics=ADDR030 ring=ADDR039
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR037
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR040
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR040 10
+.. .. .. .. Expr dump @ ADDR038
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. .. .. eval=cndFetch_1 metrics=ADDR030 ring=ADDR041
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR035
+.. .. .. op=7 (*) arg1=ADDR042 arg2=ADDR043 parent=ADDR032
+.. .. .. eval=cndMul_n_n metrics=ADDR044 ring=ADDR045
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR042
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR035
+.. .. .. .. eval=cndFetch_1 metrics=ADDR044 ring=ADDR046
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR043
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR035
+.. .. .. .. eval=cndFetch_1 metrics=ADDR047 ring=ADDR048
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. Expr dump @ ADDR029
+.. op=75 (print) arg1=ADDR049 arg2=(nil) parent=ADDR027
+.. eval=actFake metrics=(nil) ring=ADDR050
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR049
+.. .. op=76 (<action arg node>) arg1=ADDR051 arg2=(nil) parent=ADDR029
+.. .. eval=actArg metrics=(nil) ring=ADDR052
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR051
+.. .. .. op=80 (<nop node>) arg1=ADDR053 arg2=(nil) parent=ADDR049
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR054
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR054 "all_host:"
+.. .. .. .. Expr dump @ ADDR053
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR051
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR055
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR055 " @%h %v"
+
+Rule: expr_3
+Expr dump @ ADDR056
+ op=0 (->) arg1=ADDR057 arg2=ADDR058 parent=(nil)
+ eval=rule metrics=ADDR059 ring=ADDR060
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR057
+.. op=56 (pcnt_host) arg1=ADDR061 arg2=ADDR062 parent=ADDR056
+.. eval=cndPcnt_host metrics=ADDR059 ring=ADDR063
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR061
+.. .. op=34 (>) arg1=ADDR064 arg2=ADDR065 parent=ADDR057
+.. .. eval=cndGt_n_1 metrics=ADDR059 ring=ADDR066
+.. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. nsmpls=1 nvals=4 sem=TRUTH units=
+.. .. .. Expr dump @ ADDR064
+.. .. .. op=8 (/) arg1=ADDR067 arg2=ADDR068 parent=ADDR061
+.. .. .. eval=cndDiv_n_1 metrics=ADDR059 ring=ADDR069
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. .. .. Expr dump @ ADDR067
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR064
+.. .. .. .. eval=cndFetch_1 metrics=ADDR059 ring=ADDR070
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. .. .. Expr dump @ ADDR068
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR064
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR071
+.. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. smpls[0].ptr ADDR071 1.04858e+06
+.. .. .. Expr dump @ ADDR065
+.. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR061
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR072
+.. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. smpls[0].ptr ADDR072 512
+.. .. Expr dump @ ADDR062
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=(nil)
+.. .. eval=(nil)() metrics=(nil) ring=ADDR073
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR073 0.25
+.. Expr dump @ ADDR058
+.. op=75 (print) arg1=ADDR074 arg2=(nil) parent=ADDR056
+.. eval=actFake metrics=(nil) ring=ADDR075
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR074
+.. .. op=76 (<action arg node>) arg1=ADDR076 arg2=(nil) parent=ADDR058
+.. .. eval=actArg metrics=(nil) ring=ADDR077
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR076
+.. .. .. op=80 (<nop node>) arg1=ADDR078 arg2=(nil) parent=ADDR074
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR079
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR079 "25%_host:"
+.. .. .. .. Expr dump @ ADDR078
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR080
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR080 " @%h %v"
+
+Rule: expr_4
+Expr dump @ ADDR081
+ op=0 (->) arg1=ADDR082 arg2=ADDR083 parent=(nil)
+ eval=rule metrics=ADDR084 ring=ADDR085
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR082
+.. op=30 (==) arg1=ADDR086 arg2=ADDR087 parent=ADDR081
+.. eval=cndEq_1_1 metrics=ADDR084 ring=ADDR088
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR086
+.. .. op=19 (min_host) arg1=ADDR089 arg2=(nil) parent=ADDR082
+.. .. eval=cndMin_host metrics=ADDR084 ring=ADDR090
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=byte
+.. .. .. Expr dump @ ADDR089
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR086
+.. .. .. eval=cndFetch_1 metrics=ADDR084 ring=ADDR091
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=byte
+.. .. Expr dump @ ADDR087
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR082
+.. .. eval=(nil)() metrics=(nil) ring=ADDR092
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR092 2.5061e+08
+.. Expr dump @ ADDR083
+.. op=75 (print) arg1=ADDR093 arg2=(nil) parent=ADDR081
+.. eval=actFake metrics=(nil) ring=ADDR094
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR093
+.. .. op=76 (<action arg node>) arg1=ADDR095 arg2=(nil) parent=ADDR083
+.. .. eval=actArg metrics=(nil) ring=ADDR096
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR095
+.. .. .. op=80 (<nop node>) arg1=ADDR097 arg2=(nil) parent=ADDR093
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR098
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR098 "min_host:"
+.. .. .. .. Expr dump @ ADDR097
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR095
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR099
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR099 " @%h %v"
+
+Rule: expr_5
+Expr dump @ ADDR100
+ op=0 (->) arg1=ADDR101 arg2=ADDR102 parent=(nil)
+ eval=rule metrics=ADDR103 ring=ADDR104
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR101
+.. op=32 (<) arg1=ADDR105 arg2=ADDR106 parent=ADDR100
+.. eval=cndLt_1_n metrics=ADDR103 ring=ADDR107
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR105
+.. .. op=16 (max_host) arg1=ADDR108 arg2=(nil) parent=ADDR101
+.. .. eval=cndMax_host metrics=ADDR103 ring=ADDR109
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR108
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR105
+.. .. .. eval=cndFetch_n metrics=ADDR103 ring=ADDR110
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR106
+.. .. op=16 (max_host) arg1=ADDR111 arg2=(nil) parent=ADDR101
+.. .. eval=cndMax_host metrics=ADDR112 ring=ADDR113
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR111
+.. .. .. op=17 (max_inst) arg1=ADDR114 arg2=(nil) parent=ADDR106
+.. .. .. eval=cndMax_inst metrics=ADDR112 ring=ADDR115
+.. .. .. valid=0 cardinality[H,I,T]=[4,-1,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR114
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR111
+.. .. .. .. eval=cndFetch_all metrics=ADDR112 ring=ADDR116
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,12,1] tspan=12
+.. .. .. .. nsmpls=1 nvals=12 sem=INSTANT units=
+.. Expr dump @ ADDR102
+.. op=75 (print) arg1=ADDR117 arg2=(nil) parent=ADDR100
+.. eval=actFake metrics=(nil) ring=ADDR118
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR117
+.. .. op=76 (<action arg node>) arg1=ADDR119 arg2=(nil) parent=ADDR102
+.. .. eval=actArg metrics=(nil) ring=ADDR120
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR119
+.. .. .. op=80 (<nop node>) arg1=ADDR121 arg2=(nil) parent=ADDR117
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR122
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR122 "max_host:"
+.. .. .. .. Expr dump @ ADDR121
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR119
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR123
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR123 " @%h %v"
+
+Rule: expr_6
+Expr dump @ ADDR124
+ op=0 (->) arg1=ADDR125 arg2=ADDR126 parent=(nil)
+ eval=rule metrics=ADDR127 ring=ADDR128
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR125
+.. op=30 (==) arg1=ADDR129 arg2=ADDR130 parent=ADDR124
+.. eval=cndEq_1_1 metrics=ADDR127 ring=ADDR131
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR129
+.. .. op=10 (sum_host) arg1=ADDR132 arg2=(nil) parent=ADDR125
+.. .. eval=cndSum_host metrics=ADDR127 ring=ADDR133
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR132
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR129
+.. .. .. eval=cndFetch_1 metrics=ADDR127 ring=ADDR134
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=DISCRETE units=
+.. .. Expr dump @ ADDR130
+.. .. op=5 (+) arg1=ADDR135 arg2=ADDR136 parent=ADDR125
+.. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR138
+.. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR135
+.. .. .. op=5 (+) arg1=ADDR139 arg2=ADDR140 parent=ADDR130
+.. .. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR141
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. Expr dump @ ADDR139
+.. .. .. .. op=5 (+) arg1=ADDR142 arg2=ADDR143 parent=ADDR135
+.. .. .. .. eval=cndAdd_1_1 metrics=ADDR137 ring=ADDR144
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. .. Expr dump @ ADDR142
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR139
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR137 ring=ADDR145
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. .. Expr dump @ ADDR143
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR139
+.. .. .. .. .. eval=cndFetch_1 metrics=ADDR146 ring=ADDR147
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. .. Expr dump @ ADDR140
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR135
+.. .. .. .. eval=cndFetch_1 metrics=ADDR148 ring=ADDR149
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. .. .. Expr dump @ ADDR136
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR130
+.. .. .. eval=cndFetch_1 metrics=ADDR150 ring=ADDR151
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=DISCRETE units=
+.. Expr dump @ ADDR126
+.. op=75 (print) arg1=ADDR152 arg2=(nil) parent=ADDR124
+.. eval=actFake metrics=(nil) ring=ADDR153
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR152
+.. .. op=76 (<action arg node>) arg1=ADDR154 arg2=(nil) parent=ADDR126
+.. .. eval=actArg metrics=(nil) ring=ADDR155
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR154
+.. .. .. op=80 (<nop node>) arg1=ADDR156 arg2=(nil) parent=ADDR152
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR157
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR157 "sum_host:"
+.. .. .. .. Expr dump @ ADDR156
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR154
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR158
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=7
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR158 " @%h %v"
+
+Rule: expr_7
+Expr dump @ ADDR159
+ op=0 (->) arg1=ADDR160 arg2=ADDR161 parent=(nil)
+ eval=rule metrics=ADDR162 ring=ADDR163
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR160
+.. op=30 (==) arg1=ADDR164 arg2=ADDR165 parent=ADDR159
+.. eval=cndEq_n_1 metrics=ADDR162 ring=ADDR166
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR164
+.. .. op=13 (avg_host) arg1=ADDR167 arg2=(nil) parent=ADDR160
+.. .. eval=cndAvg_host metrics=ADDR162 ring=ADDR168
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR167
+.. .. .. op=20 (min_inst) arg1=ADDR169 arg2=(nil) parent=ADDR164
+.. .. .. eval=cndMin_inst metrics=ADDR162 ring=ADDR170
+.. .. .. valid=0 cardinality[H,I,T]=[4,-1,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. .. .. Expr dump @ ADDR169
+.. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR167
+.. .. .. .. eval=cndFetch_all metrics=ADDR162 ring=ADDR171
+.. .. .. .. valid=0 cardinality[H,I,T]=[4,36,1] tspan=36
+.. .. .. .. nsmpls=1 nvals=36 sem=INSTANT units=
+.. .. Expr dump @ ADDR165
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR160
+.. .. eval=(nil)() metrics=(nil) ring=ADDR172
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR172 100
+.. Expr dump @ ADDR161
+.. op=75 (print) arg1=ADDR173 arg2=(nil) parent=ADDR159
+.. eval=actFake metrics=(nil) ring=ADDR174
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR173
+.. .. op=76 (<action arg node>) arg1=ADDR175 arg2=(nil) parent=ADDR161
+.. .. eval=actArg metrics=(nil) ring=ADDR176
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR175
+.. .. .. op=80 (<nop node>) arg1=ADDR177 arg2=(nil) parent=ADDR173
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR178
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR178 "avg_host:"
+.. .. .. .. Expr dump @ ADDR177
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR175
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR179
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR179 " @%h [%i] %v"
+
+Rule: expr_8
+Expr dump @ ADDR180
+ op=0 (->) arg1=ADDR181 arg2=ADDR182 parent=(nil)
+ eval=rule metrics=ADDR183 ring=ADDR184
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR181
+.. op=34 (>) arg1=ADDR185 arg2=ADDR186 parent=ADDR180
+.. eval=cndGt_n_1 metrics=ADDR183 ring=ADDR187
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR185
+.. .. op=59 (count_host) arg1=ADDR188 arg2=(nil) parent=ADDR181
+.. .. eval=cndCount_host metrics=ADDR183 ring=ADDR189
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=count
+.. .. .. Expr dump @ ADDR188
+.. .. .. op=54 (some_inst) arg1=ADDR190 arg2=(nil) parent=ADDR185
+.. .. .. eval=cndSome_inst metrics=ADDR183 ring=ADDR191
+.. .. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. .. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. .. .. Expr dump @ ADDR190
+.. .. .. .. op=34 (>) arg1=ADDR192 arg2=ADDR193 parent=ADDR188
+.. .. .. .. eval=cndGt_n_1 metrics=ADDR183 ring=ADDR194
+.. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. nsmpls=1 nvals=9 sem=TRUTH units=
+.. .. .. .. .. Expr dump @ ADDR192
+.. .. .. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. .. .. eval=cndFetch_all metrics=ADDR183 ring=ADDR195
+.. .. .. .. .. valid=0 cardinality[H,I,T]=[1,9,1] tspan=9
+.. .. .. .. .. nsmpls=1 nvals=9 sem=INSTANT units=
+.. .. .. .. .. Expr dump @ ADDR193
+.. .. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR190
+.. .. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR196
+.. .. .. .. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. .. .. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. .. .. .. smpls[0].ptr ADDR196 300
+.. .. Expr dump @ ADDR186
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR181
+.. .. eval=(nil)() metrics=(nil) ring=ADDR197
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR197 0
+.. Expr dump @ ADDR182
+.. op=75 (print) arg1=ADDR198 arg2=(nil) parent=ADDR180
+.. eval=actFake metrics=(nil) ring=ADDR199
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR198
+.. .. op=76 (<action arg node>) arg1=ADDR200 arg2=(nil) parent=ADDR182
+.. .. eval=actArg metrics=(nil) ring=ADDR201
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR200
+.. .. .. op=80 (<nop node>) arg1=ADDR202 arg2=(nil) parent=ADDR198
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR203
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR203 "count_host:"
+.. .. .. .. Expr dump @ ADDR202
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR200
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR204
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR204 " @%h [%i] %v"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> expr_1 =
+some_host (sampledso.drift :vm00 :vm01 :vm02 :vm03 > 0) -> print "some_host:" " @%h %v";
+
+expr_2 =
+all_host ((10 * sampledso.drift :vm00 :vm01 :vm02 :vm03) == (sampledso.ulong.ten :vm00 :vm01 :vm02 :vm03 * sampledso.drift :vm00 :vm01 :vm02 :vm03)) -> print "all_host:" " @%h %v";
+
+expr_3 =
+pcnt_host 25% ((hinv.physmem :vm00 :vm01 :vm02 :vm03 / 1048576) > 512) -> print "25%_host:" " @%h %v";
+
+expr_4 =
+min_host (hinv.physmem :vm00 :vm01 :vm02 :vm03) == 250609664 -> print "min_host:" " @%h %v";
+
+expr_5 =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red) < max_host (max_inst (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red #green #blue)) -> print "max_host:" " @%h %v";
+
+expr_6 =
+sum_host (hinv.ncpu :vm00 :vm01 :vm02 :vm03) == (((hinv.ncpu :vm00 + hinv.ncpu :vm01) + hinv.ncpu :vm02) + hinv.ncpu :vm03) -> print "sum_host:" " @%h %v";
+
+expr_7 =
+avg_host (min_inst (sampledso.bin :vm00 :vm01 :vm02 :vm03 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900)) == 100 -> print "avg_host:" " @%h [%i] %v";
+
+expr_8 =
+count_host (some_inst (sampledso.part_bin :vm00 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900 > 300)) > 0 -> print "count_host:" " @%h [%i] %v";
+
+pmie> print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 144 @vm01 57 @vm02 101 @vm03 125
+print DATE: all_host: @vm00 1440 @vm01 570 @vm02 1010 @vm03 1250
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 116
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 173 @vm01 50 @vm02 65 @vm03 170
+print DATE: all_host: @vm00 1730 @vm01 500 @vm02 650 @vm03 1700
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 119
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 179 @vm01 18 @vm02 62 @vm03 183
+print DATE: all_host: @vm00 1790 @vm01 180 @vm02 620 @vm03 1830
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 122
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+print DATE: some_host: @vm00 218 @vm02 14 @vm03 197
+print DATE: all_host: @vm00 2180 @vm01 0 @vm02 140 @vm03 1970
+print DATE: 25%_host: @vm03 995
+print DATE: min_host: @vm00 250609664
+print DATE: max_host: @vm00 125
+print DATE: sum_host: @<%h undefined> 8
+print DATE: avg_host: @<%h undefined> [<%i undefined>] 100
+print DATE: count_host: @<%h undefined> [<%i undefined>] 1
+pmie> expr_1 (subexpression for %h, %i and %v bindings) =
+sampledso.drift :vm00 :vm01 :vm02 :vm03
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+10 * sampledso.drift :vm00 :vm01 :vm02 :vm03
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+hinv.physmem :vm00 :vm01 :vm02 :vm03 / 1048576
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+min_host (hinv.physmem :vm00 :vm01 :vm02 :vm03)
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red)
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+sum_host (hinv.ncpu :vm00 :vm01 :vm02 :vm03)
+
+expr_7 (subexpression for %h, %i and %v bindings) =
+avg_host (min_inst (sampledso.bin :vm00 :vm01 :vm02 :vm03 #bin-100 #bin-200 #bin-300 #bin-400 #bin-500 #bin-600 #bin-700 #bin-800 #bin-900))
+
+expr_8 (subexpression for %h, %i and %v bindings) =
+count_host (some_inst (sampledso.part_bin :vm00 #bin-100 #bin-300 #bin-500 #bin-700 #bin-900 > 300))
+
+pmie> \ No newline at end of file
diff --git a/qa/521 b/qa/521
new file mode 100755
index 0000000..9018058
--- /dev/null
+++ b/qa/521
@@ -0,0 +1,76 @@
+#!/bin/sh
+# PCP QA Test No. 521
+# pmie unit scale factors and predefined macro tests
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/DATE [12][0-9][0-9][0-9]/DATE/' \
+ -e '/evaluator exiting/s/pmie([0-9][0-9]*)/pmie(PID)/' \
+ -e '/Performance Co-Pilot Inference Engine/s/Version .*/Version .../' \
+ -e '/^raw_/d'
+}
+
+cat <<'End-of-File' >$tmp.pmie
+// scale factors
+nanosecond_microsecond = sample.long.hundred * 10nanosecond == 1microsecond;
+nanosec_microsec = sample.long.hundred * 10 nanosec == 1 microsec;
+nsec_usec = sample.long.hundred * 10nsec == 1usec;
+millisecond_second = sample.long.ten * 100millisecond == 1second;
+millisec_sec = sample.long.ten * 100 millisec == 1 sec;
+msec_min = sample.long.ten * 600msec == 6sec;
+second_minute = sample.long.one * 1second == 1minute / 60;
+sec_min = sample.long.one * 1 sec == 1 min / 60;
+hour_min = sample.long.one * 1 hour == 60 min;
+byte_Kbyte = sample.long.one * 1024 byte == 1 Kbyte;
+Mbyte_Gbyte = sample.long.one * 1024 Mbyte == 1 Gbyte;
+Gbyte_Tbyte = sample.long.one * 1024 Gbyte == 1 Tbyte;
+count_Kcount = sample.long.one * 1000 count == 1 Kcount;
+Kcount_Mcount = sample.long.one * 1Kcount == 1Mcount/1000;
+
+// predefined macros
+raw_minute_macro = $minute;
+minute_macro = ($minute >= 00) && ($minute <= 59);
+raw_hour_macro = $hour;
+hour_macro = ($hour >= 00) && ($hour <= 23);
+raw_day_macro = $day;
+day_macro = ($day >= 1) && ($day <= 31);
+raw_day_of_week_macro = $day_of_week;
+day_of_week_macro = ($day_of_week >= 0) && ($day_of_week <= 6);
+raw_year_macro = $year;
+year_macro = $year > 2012;
+raw_delta_macro = $delta;
+delta_macro = $delta == 0.5;
+End-of-File
+
+# real QA test starts here
+pmie -c $tmp.pmie -t 500msec -T900msec -v >$tmp.out 2>$tmp.err
+
+echo "=== pmie output ===" >>$seq.full
+cat $tmp.out >>$seq.full
+echo >>$seq.full
+echo "=== pmie errors ===" >>$seq.full
+cat $tmp.err >>$seq.full
+
+_filter <$tmp.err
+_filter <$tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/521.out b/qa/521.out
new file mode 100644
index 0000000..f137f2e
--- /dev/null
+++ b/qa/521.out
@@ -0,0 +1,44 @@
+QA output created by 521
+[DATE] pmie(PID) Info: evaluator exiting
+nanosecond_microsecond: true
+nanosec_microsec: true
+nsec_usec: true
+millisecond_second: true
+millisec_sec: true
+msec_min: true
+second_minute: true
+sec_min: true
+hour_min: true
+byte_Kbyte: true
+Mbyte_Gbyte: true
+Gbyte_Tbyte: true
+count_Kcount: true
+Kcount_Mcount: true
+minute_macro: true
+hour_macro: true
+day_macro: true
+day_of_week_macro: true
+year_macro: true
+delta_macro: true
+
+nanosecond_microsecond: true
+nanosec_microsec: true
+nsec_usec: true
+millisecond_second: true
+millisec_sec: true
+msec_min: true
+second_minute: true
+sec_min: true
+hour_min: true
+byte_Kbyte: true
+Mbyte_Gbyte: true
+Gbyte_Tbyte: true
+count_Kcount: true
+Kcount_Mcount: true
+minute_macro: true
+hour_macro: true
+day_macro: true
+day_of_week_macro: true
+year_macro: true
+delta_macro: true
+
diff --git a/qa/522 b/qa/522
new file mode 100755
index 0000000..62ad72f
--- /dev/null
+++ b/qa/522
@@ -0,0 +1,50 @@
+#!/bin/sh
+# PCP QA Test No. 522
+# #655108 $PCP_RC_DIR/pcp leaves files in /var/tmp
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo rm -f /var/tmp/*.pmcheck
+_change_config pmlogger on
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+
+_wait_for_pmlogger
+
+# and wait some more for other pmloggers and stuff pmlogger_check will
+# do before _start_pmcheck() in $PCP_RC_DIR/pcp actually gets to do
+# the "rm"
+#
+st=0; cnt=0; while [ $st -ne 1 ] ; do
+ sleep 10
+ ps $PCP_PS_ALL_FLAGS | grep pmcheck | grep -v grep > $tmp.ps
+ test -s $tmp.ps
+ st=$?
+ cnt=`expr $cnt + 1`;
+ if [ $cnt -gt 12 ] ; then
+ echo Waited too long for those ...
+ cat $tmp.ps
+ break
+ fi
+done
+
+rm -f $tmp.ps
+
+echo "Expect no files ..."
+echo /var/tmp/*.pmcheck
+
+# success, all done
+status=0
+exit
diff --git a/qa/522.out b/qa/522.out
new file mode 100644
index 0000000..8298906
--- /dev/null
+++ b/qa/522.out
@@ -0,0 +1,6 @@
+QA output created by 522
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Expect no files ...
+/var/tmp/*.pmcheck
diff --git a/qa/523 b/qa/523
new file mode 100755
index 0000000..a7bf8a2
--- /dev/null
+++ b/qa/523
@@ -0,0 +1,97 @@
+#!/bin/sh
+# PCP QA Test No. 523
+# more pmie max_* and min_* tests
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3900 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo "QA output created by $seq"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/DATE [12][0-9][0-9][0-9]/DATE/' \
+ -e '/evaluator exiting/s/pmie([0-9][0-9]*)/pmie(PID)/' \
+ -e '/Performance Co-Pilot Inference Engine/s/Version .*/Version .../'
+}
+
+_filter2()
+{
+ $PCP_AWK_PROG '
+$1 == "pmie:" { print; next }
+/failed: / { print; next }
+$1 == "bundle:" { skip=1 }
+skip == 1 { if ($1 == "Rule:") skip = 0 }
+skip == 1 { next }
+ { print }' >$tmp.tmp
+ tr ' =' '\012' <$tmp.tmp \
+ | grep '0x' \
+ | $PCP_AWK_PROG >$tmp.sed '
+BEGIN { n = 0 }
+ { if (seen[$1] == 1) next
+ printf "s/%s/ADDR%03d/\n",$1,n
+ n++
+ seen[$1] = 1
+ }'
+ sed -f $tmp.sed <$tmp.tmp
+}
+
+cat <<'End-of-File' >$tmp.pmie
+vm00 = sampledso.colour :vm00;
+vm01 = sampledso.colour :vm01;
+vm02 = sampledso.colour :vm02;
+vm03 = sampledso.colour :vm03;
+min_sample sampledso.colour #'red' @0..2 > 0 -> print "min_sample:" " @%h [%i] %v";
+min_inst sampledso.colour > 0 -> print "min_inst:" " @%h [%i] %v";
+min_host sampledso.colour :vm00 :vm01 :vm02 :vm03 #'red' > 0 -> print "min_host:" " @%h [%i] %v";
+
+max_sample sampledso.colour #'red' @0..2 > 0 -> print "max_sample:" " @%h [%i] %v";
+max_inst sampledso.colour > 0 -> print "max_inst:" " @%h [%i] %v";
+max_host sampledso.colour :vm00 :vm01 :vm02 :vm03 #'red' > 0 -> print "max_host:" " @%h [%i] %v";
+End-of-File
+
+# real QA test starts here
+cat <<End-of-File | pmie -v -t 2sec -d -Dappl1 -a src/multi-vm00 -a src/multi-vm01 -a src/multi-vm02 -a src/multi-vm03 >$tmp.out 2>$tmp.err &
+f $tmp.pmie
+l
+r 10sec
+v
+End-of-File
+
+wait
+
+echo >>$seq.full
+echo "pmie PID $!" >>$seq.full
+echo >>$seq.full
+echo "=== pmie output ===" >>$seq.full
+cat $tmp.out >>$seq.full
+echo >>$seq.full
+echo "=== pmie errors ===" >>$seq.full
+cat $tmp.err >>$seq.full
+
+_filter2 <$tmp.err | _filter
+_filter <$tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/523.out.1 b/qa/523.out.1
new file mode 100644
index 0000000..9f92d37
--- /dev/null
+++ b/qa/523.out.1
@@ -0,0 +1,497 @@
+QA output created by 523
+initMetric: sampledso.colour from vm00: instance domain specinst=0
+ indom[0] 0 "red"
+ indom[1] 1 "green"
+ indom[2] 2 "blue"
+findFetch: fetch=ADDR000 host=ADDR001 delta=2.000000 handle=0
+Rule: vm00
+Expr dump @ ADDR002
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR003 ring=ADDR004
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: vm01
+Expr dump @ ADDR005
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR006 ring=ADDR007
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: vm02
+Expr dump @ ADDR008
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR009 ring=ADDR010
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: vm03
+Expr dump @ ADDR011
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR012 ring=ADDR013
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: expr_1
+Expr dump @ ADDR014
+ op=0 (->) arg1=ADDR015 arg2=ADDR016 parent=(nil)
+ eval=rule metrics=ADDR017 ring=ADDR018
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR015
+.. op=34 (>) arg1=ADDR019 arg2=ADDR020 parent=ADDR014
+.. eval=cndGt_1_1 metrics=ADDR017 ring=ADDR021
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR019
+.. .. op=21 (min_sample) arg1=ADDR022 arg2=(nil) parent=ADDR015
+.. .. eval=cndMin_time metrics=ADDR017 ring=ADDR023
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR022
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR019
+.. .. .. eval=cndFetch_n metrics=ADDR017 ring=ADDR024
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR020
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR015
+.. .. eval=(nil)() metrics=(nil) ring=ADDR025
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR025 0
+.. Expr dump @ ADDR016
+.. op=75 (print) arg1=ADDR026 arg2=(nil) parent=ADDR014
+.. eval=actFake metrics=(nil) ring=ADDR027
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR026
+.. .. op=76 (<action arg node>) arg1=ADDR028 arg2=(nil) parent=ADDR016
+.. .. eval=actArg metrics=(nil) ring=ADDR029
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR028
+.. .. .. op=80 (<nop node>) arg1=ADDR030 arg2=(nil) parent=ADDR026
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR031
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR031 "min_sample:"
+.. .. .. .. Expr dump @ ADDR030
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR028
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR032
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR032 " @%h [%i] %v"
+
+Rule: expr_2
+Expr dump @ ADDR033
+ op=0 (->) arg1=ADDR034 arg2=ADDR035 parent=(nil)
+ eval=rule metrics=ADDR036 ring=ADDR037
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR034
+.. op=34 (>) arg1=ADDR038 arg2=ADDR039 parent=ADDR033
+.. eval=cndGt_n_1 metrics=ADDR036 ring=ADDR040
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR038
+.. .. op=20 (min_inst) arg1=ADDR041 arg2=(nil) parent=ADDR034
+.. .. eval=cndMin_inst metrics=ADDR036 ring=ADDR042
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR041
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR038
+.. .. .. eval=cndFetch_all metrics=ADDR036 ring=ADDR043
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. .. nsmpls=1 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR039
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. eval=(nil)() metrics=(nil) ring=ADDR044
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR044 0
+.. Expr dump @ ADDR035
+.. op=75 (print) arg1=ADDR045 arg2=(nil) parent=ADDR033
+.. eval=actFake metrics=(nil) ring=ADDR046
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR045
+.. .. op=76 (<action arg node>) arg1=ADDR047 arg2=(nil) parent=ADDR035
+.. .. eval=actArg metrics=(nil) ring=ADDR048
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR047
+.. .. .. op=80 (<nop node>) arg1=ADDR049 arg2=(nil) parent=ADDR045
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR050
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR050 "min_inst:"
+.. .. .. .. Expr dump @ ADDR049
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR047
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR051
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR051 " @%h [%i] %v"
+
+Rule: expr_3
+Expr dump @ ADDR052
+ op=0 (->) arg1=ADDR053 arg2=ADDR054 parent=(nil)
+ eval=rule metrics=ADDR055 ring=ADDR056
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR053
+.. op=34 (>) arg1=ADDR057 arg2=ADDR058 parent=ADDR052
+.. eval=cndGt_1_1 metrics=ADDR055 ring=ADDR059
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR057
+.. .. op=19 (min_host) arg1=ADDR060 arg2=(nil) parent=ADDR053
+.. .. eval=cndMin_host metrics=ADDR055 ring=ADDR061
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR060
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR057
+.. .. .. eval=cndFetch_n metrics=ADDR055 ring=ADDR062
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR058
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR053
+.. .. eval=(nil)() metrics=(nil) ring=ADDR063
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR063 0
+.. Expr dump @ ADDR054
+.. op=75 (print) arg1=ADDR064 arg2=(nil) parent=ADDR052
+.. eval=actFake metrics=(nil) ring=ADDR065
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR064
+.. .. op=76 (<action arg node>) arg1=ADDR066 arg2=(nil) parent=ADDR054
+.. .. eval=actArg metrics=(nil) ring=ADDR067
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR066
+.. .. .. op=80 (<nop node>) arg1=ADDR068 arg2=(nil) parent=ADDR064
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR069
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR069 "min_host:"
+.. .. .. .. Expr dump @ ADDR068
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR066
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR070
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR070 " @%h [%i] %v"
+
+Rule: expr_4
+Expr dump @ ADDR071
+ op=0 (->) arg1=ADDR072 arg2=ADDR073 parent=(nil)
+ eval=rule metrics=ADDR074 ring=ADDR075
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR072
+.. op=34 (>) arg1=ADDR076 arg2=ADDR077 parent=ADDR071
+.. eval=cndGt_1_1 metrics=ADDR074 ring=ADDR078
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR076
+.. .. op=18 (max_sample) arg1=ADDR079 arg2=(nil) parent=ADDR072
+.. .. eval=cndMax_time metrics=ADDR074 ring=ADDR080
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR079
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. eval=cndFetch_n metrics=ADDR074 ring=ADDR081
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR077
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR072
+.. .. eval=(nil)() metrics=(nil) ring=ADDR082
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR082 0
+.. Expr dump @ ADDR073
+.. op=75 (print) arg1=ADDR083 arg2=(nil) parent=ADDR071
+.. eval=actFake metrics=(nil) ring=ADDR084
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR083
+.. .. op=76 (<action arg node>) arg1=ADDR085 arg2=(nil) parent=ADDR073
+.. .. eval=actArg metrics=(nil) ring=ADDR086
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR085
+.. .. .. op=80 (<nop node>) arg1=ADDR087 arg2=(nil) parent=ADDR083
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR088
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR088 "max_sample:"
+.. .. .. .. Expr dump @ ADDR087
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR085
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR089
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR089 " @%h [%i] %v"
+
+Rule: expr_5
+Expr dump @ ADDR090
+ op=0 (->) arg1=ADDR091 arg2=ADDR092 parent=(nil)
+ eval=rule metrics=ADDR093 ring=ADDR094
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR091
+.. op=34 (>) arg1=ADDR095 arg2=ADDR096 parent=ADDR090
+.. eval=cndGt_n_1 metrics=ADDR093 ring=ADDR097
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR095
+.. .. op=17 (max_inst) arg1=ADDR098 arg2=(nil) parent=ADDR091
+.. .. eval=cndMax_inst metrics=ADDR093 ring=ADDR099
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR098
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR095
+.. .. .. eval=cndFetch_all metrics=ADDR093 ring=ADDR100
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. .. nsmpls=1 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR096
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR091
+.. .. eval=(nil)() metrics=(nil) ring=ADDR101
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR101 0
+.. Expr dump @ ADDR092
+.. op=75 (print) arg1=ADDR102 arg2=(nil) parent=ADDR090
+.. eval=actFake metrics=(nil) ring=ADDR103
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR102
+.. .. op=76 (<action arg node>) arg1=ADDR104 arg2=(nil) parent=ADDR092
+.. .. eval=actArg metrics=(nil) ring=ADDR105
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR104
+.. .. .. op=80 (<nop node>) arg1=ADDR106 arg2=(nil) parent=ADDR102
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR107
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR107 "max_inst:"
+.. .. .. .. Expr dump @ ADDR106
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR104
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR108
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR108 " @%h [%i] %v"
+
+Rule: expr_6
+Expr dump @ ADDR109
+ op=0 (->) arg1=ADDR110 arg2=ADDR111 parent=(nil)
+ eval=rule metrics=ADDR112 ring=ADDR113
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR110
+.. op=34 (>) arg1=ADDR114 arg2=ADDR115 parent=ADDR109
+.. eval=cndGt_1_1 metrics=ADDR112 ring=ADDR116
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR114
+.. .. op=16 (max_host) arg1=ADDR117 arg2=(nil) parent=ADDR110
+.. .. eval=cndMax_host metrics=ADDR112 ring=ADDR118
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR117
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR114
+.. .. .. eval=cndFetch_n metrics=ADDR112 ring=ADDR119
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR115
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR110
+.. .. eval=(nil)() metrics=(nil) ring=ADDR120
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR120 0
+.. Expr dump @ ADDR111
+.. op=75 (print) arg1=ADDR121 arg2=(nil) parent=ADDR109
+.. eval=actFake metrics=(nil) ring=ADDR122
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR121
+.. .. op=76 (<action arg node>) arg1=ADDR123 arg2=(nil) parent=ADDR111
+.. .. eval=actArg metrics=(nil) ring=ADDR124
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR123
+.. .. .. op=80 (<nop node>) arg1=ADDR125 arg2=(nil) parent=ADDR121
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR126
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR126 "max_host:"
+.. .. .. .. Expr dump @ ADDR125
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR123
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR127
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR127 " @%h [%i] %v"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> vm00 =
+sampledso.colour :vm00 #red #green #blue;
+
+vm01 =
+sampledso.colour :vm01 #red #green #blue;
+
+vm02 =
+sampledso.colour :vm02 #red #green #blue;
+
+vm03 =
+sampledso.colour :vm03 #red #green #blue;
+
+expr_1 =
+min_sample (sampledso.colour :vm00 #red @0..2) > 0 -> print "min_sample:" " @%h [%i] %v";
+
+expr_2 =
+min_inst (sampledso.colour :vm00 #red #green #blue) > 0 -> print "min_inst:" " @%h [%i] %v";
+
+expr_3 =
+min_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red) > 0 -> print "min_host:" " @%h [%i] %v";
+
+expr_4 =
+max_sample (sampledso.colour :vm00 #red @0..2) > 0 -> print "max_sample:" " @%h [%i] %v";
+
+expr_5 =
+max_inst (sampledso.colour :vm00 #red #green #blue) > 0 -> print "max_inst:" " @%h [%i] %v";
+
+expr_6 =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red) > 0 -> print "max_host:" " @%h [%i] %v";
+
+pmie> vm00 (DATE): ?
+vm01 (DATE): ?
+vm02 (DATE): ?
+vm03 (DATE): ?
+expr_1 (DATE): ?
+expr_2 (DATE): ?
+expr_3 (DATE): ?
+expr_4 (DATE): ?
+expr_5 (DATE): ?
+expr_6 (DATE): ?
+
+vm00 (DATE): ? ? ?
+vm01 (DATE): ?
+vm02 (DATE): ?
+vm03 (DATE): ?
+expr_1 (DATE): ?
+expr_2 (DATE): ?
+expr_3 (DATE): ?
+expr_4 (DATE): ?
+expr_5 (DATE): ?
+expr_6 (DATE): ?
+
+print DATE: min_inst: @vm00 [red] 116
+print DATE: min_host: @vm03 [<%i undefined>] 104
+print DATE: max_inst: @vm00 [blue] 318
+print DATE: max_host: @vm00 [<%i undefined>] 116
+vm00 (DATE): 116 217 318
+vm01 (DATE): ? ? ?
+vm02 (DATE): ? ? ?
+vm03 (DATE): ? ? ?
+expr_1 (DATE): ?
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): ?
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+print DATE: min_sample: @vm00 [red] 116
+print DATE: min_inst: @vm00 [red] 119
+print DATE: min_host: @vm03 [<%i undefined>] 107
+print DATE: max_sample: @vm00 [red] 119
+print DATE: max_inst: @vm00 [blue] 321
+print DATE: max_host: @vm00 [<%i undefined>] 119
+vm00 (DATE): 119 220 321
+vm01 (DATE): 116 217 318
+vm02 (DATE): 113 214 315
+vm03 (DATE): 107 208 309
+expr_1 (DATE): true
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): true
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+print DATE: min_sample: @vm00 [red] 116
+print DATE: min_inst: @vm00 [red] 122
+print DATE: min_host: @vm03 [<%i undefined>] 110
+print DATE: max_sample: @vm00 [red] 122
+print DATE: max_inst: @vm00 [blue] 324
+print DATE: max_host: @vm00 [<%i undefined>] 122
+vm00 (DATE): 122 223 324
+vm01 (DATE): 119 220 321
+vm02 (DATE): 116 217 318
+vm03 (DATE): 110 211 312
+expr_1 (DATE): true
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): true
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+print DATE: min_sample: @vm00 [red] 119
+print DATE: min_inst: @vm00 [red] 125
+print DATE: min_host: @vm03 [<%i undefined>] 113
+print DATE: max_sample: @vm00 [red] 125
+print DATE: max_inst: @vm00 [blue] 327
+print DATE: max_host: @vm00 [<%i undefined>] 125
+vm00 (DATE): 125 226 327
+vm01 (DATE): 122 223 324
+vm02 (DATE): 119 220 321
+vm03 (DATE): 113 214 315
+expr_1 (DATE): true
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): true
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+pmie> vm00 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm00 #red #green #blue
+
+vm01 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm01 #red #green #blue
+
+vm02 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm02 #red #green #blue
+
+vm03 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm03 #red #green #blue
+
+expr_1 (subexpression for %h, %i and %v bindings) =
+min_sample (sampledso.colour :vm00 #red @0..2)
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+min_inst (sampledso.colour :vm00 #red #green #blue)
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+min_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red)
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+max_sample (sampledso.colour :vm00 #red @0..2)
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+max_inst (sampledso.colour :vm00 #red #green #blue)
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red)
+
+pmie> \ No newline at end of file
diff --git a/qa/523.out.2 b/qa/523.out.2
new file mode 100644
index 0000000..d18832b
--- /dev/null
+++ b/qa/523.out.2
@@ -0,0 +1,499 @@
+QA output created by 523
+initMetric: sampledso.colour from vm00: instance domain specinst=0
+ indom[0] 0 "red"
+ indom[1] 1 "green"
+ indom[2] 2 "blue"
+findFetch: fetch=ADDR000 host=ADDR001 delta=2.000000 handle=0
+Rule: vm00
+Expr dump @ ADDR002
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR003 ring=ADDR004
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: vm01
+Expr dump @ ADDR005
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR006 ring=ADDR007
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: vm02
+Expr dump @ ADDR008
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR009 ring=ADDR010
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: vm03
+Expr dump @ ADDR011
+ op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=(nil)
+ eval=cndFetch_all metrics=ADDR012 ring=ADDR013
+ valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+ nsmpls=1 nvals=3 sem=INSTANT units=
+
+Rule: expr_1
+Expr dump @ ADDR014
+ op=0 (->) arg1=ADDR015 arg2=ADDR016 parent=(nil)
+ eval=rule metrics=ADDR017 ring=ADDR018
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR015
+.. op=34 (>) arg1=ADDR019 arg2=ADDR020 parent=ADDR014
+.. eval=cndGt_1_1 metrics=ADDR017 ring=ADDR021
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR019
+.. .. op=21 (min_sample) arg1=ADDR022 arg2=(nil) parent=ADDR015
+.. .. eval=cndMin_time metrics=ADDR017 ring=ADDR023
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR022
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR019
+.. .. .. eval=cndFetch_n metrics=ADDR017 ring=ADDR024
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR020
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR015
+.. .. eval=(nil)() metrics=(nil) ring=ADDR025
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR025 0
+.. Expr dump @ ADDR016
+.. op=75 (print) arg1=ADDR026 arg2=(nil) parent=ADDR014
+.. eval=actFake metrics=(nil) ring=ADDR027
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR026
+.. .. op=76 (<action arg node>) arg1=ADDR028 arg2=(nil) parent=ADDR016
+.. .. eval=actArg metrics=(nil) ring=ADDR029
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR028
+.. .. .. op=80 (<nop node>) arg1=ADDR030 arg2=(nil) parent=ADDR026
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR031
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR031 "min_sample:"
+.. .. .. .. Expr dump @ ADDR030
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR028
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR032
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR032 " @%h [%i] %v"
+
+Rule: expr_2
+Expr dump @ ADDR033
+ op=0 (->) arg1=ADDR034 arg2=ADDR035 parent=(nil)
+ eval=rule metrics=ADDR036 ring=ADDR037
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR034
+.. op=34 (>) arg1=ADDR038 arg2=ADDR039 parent=ADDR033
+.. eval=cndGt_n_1 metrics=ADDR036 ring=ADDR040
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR038
+.. .. op=20 (min_inst) arg1=ADDR041 arg2=(nil) parent=ADDR034
+.. .. eval=cndMin_inst metrics=ADDR036 ring=ADDR042
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR041
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR038
+.. .. .. eval=cndFetch_all metrics=ADDR036 ring=ADDR043
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. .. nsmpls=1 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR039
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR034
+.. .. eval=(nil)() metrics=(nil) ring=ADDR044
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR044 0
+.. Expr dump @ ADDR035
+.. op=75 (print) arg1=ADDR045 arg2=(nil) parent=ADDR033
+.. eval=actFake metrics=(nil) ring=ADDR046
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR045
+.. .. op=76 (<action arg node>) arg1=ADDR047 arg2=(nil) parent=ADDR035
+.. .. eval=actArg metrics=(nil) ring=ADDR048
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR047
+.. .. .. op=80 (<nop node>) arg1=ADDR049 arg2=(nil) parent=ADDR045
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR050
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR050 "min_inst:"
+.. .. .. .. Expr dump @ ADDR049
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR047
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR051
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR051 " @%h [%i] %v"
+
+Rule: expr_3
+Expr dump @ ADDR052
+ op=0 (->) arg1=ADDR053 arg2=ADDR054 parent=(nil)
+ eval=rule metrics=ADDR055 ring=ADDR056
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR053
+.. op=34 (>) arg1=ADDR057 arg2=ADDR058 parent=ADDR052
+.. eval=cndGt_1_1 metrics=ADDR055 ring=ADDR059
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR057
+.. .. op=19 (min_host) arg1=ADDR060 arg2=(nil) parent=ADDR053
+.. .. eval=cndMin_host metrics=ADDR055 ring=ADDR061
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR060
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR057
+.. .. .. eval=cndFetch_n metrics=ADDR055 ring=ADDR062
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR058
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR053
+.. .. eval=(nil)() metrics=(nil) ring=ADDR063
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR063 0
+.. Expr dump @ ADDR054
+.. op=75 (print) arg1=ADDR064 arg2=(nil) parent=ADDR052
+.. eval=actFake metrics=(nil) ring=ADDR065
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR064
+.. .. op=76 (<action arg node>) arg1=ADDR066 arg2=(nil) parent=ADDR054
+.. .. eval=actArg metrics=(nil) ring=ADDR067
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR066
+.. .. .. op=80 (<nop node>) arg1=ADDR068 arg2=(nil) parent=ADDR064
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR069
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR069 "min_host:"
+.. .. .. .. Expr dump @ ADDR068
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR066
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR070
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR070 " @%h [%i] %v"
+
+Rule: expr_4
+Expr dump @ ADDR071
+ op=0 (->) arg1=ADDR072 arg2=ADDR073 parent=(nil)
+ eval=rule metrics=ADDR074 ring=ADDR075
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR072
+.. op=34 (>) arg1=ADDR076 arg2=ADDR077 parent=ADDR071
+.. eval=cndGt_1_1 metrics=ADDR074 ring=ADDR078
+.. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR076
+.. .. op=18 (max_sample) arg1=ADDR079 arg2=(nil) parent=ADDR072
+.. .. eval=cndMax_time metrics=ADDR074 ring=ADDR080
+.. .. valid=0 cardinality[H,I,T]=[1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR079
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR076
+.. .. .. eval=cndFetch_n metrics=ADDR074 ring=ADDR081
+.. .. .. valid=0 cardinality[H,I,T]=[1,1,3] tspan=1
+.. .. .. nsmpls=3 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR077
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR072
+.. .. eval=(nil)() metrics=(nil) ring=ADDR082
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR082 0
+.. Expr dump @ ADDR073
+.. op=75 (print) arg1=ADDR083 arg2=(nil) parent=ADDR071
+.. eval=actFake metrics=(nil) ring=ADDR084
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR083
+.. .. op=76 (<action arg node>) arg1=ADDR085 arg2=(nil) parent=ADDR073
+.. .. eval=actArg metrics=(nil) ring=ADDR086
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR085
+.. .. .. op=80 (<nop node>) arg1=ADDR087 arg2=(nil) parent=ADDR083
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR088
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=11
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR088 "max_sample:"
+.. .. .. .. Expr dump @ ADDR087
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR085
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR089
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR089 " @%h [%i] %v"
+
+Rule: expr_5
+Expr dump @ ADDR090
+ op=0 (->) arg1=ADDR091 arg2=ADDR092 parent=(nil)
+ eval=rule metrics=ADDR093 ring=ADDR094
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR091
+.. op=34 (>) arg1=ADDR095 arg2=ADDR096 parent=ADDR090
+.. eval=cndGt_n_1 metrics=ADDR093 ring=ADDR097
+.. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR095
+.. .. op=17 (max_inst) arg1=ADDR098 arg2=(nil) parent=ADDR091
+.. .. eval=cndMax_inst metrics=ADDR093 ring=ADDR099
+.. .. valid=0 cardinality[H,I,T]=[1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR098
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR095
+.. .. .. eval=cndFetch_all metrics=ADDR093 ring=ADDR100
+.. .. .. valid=0 cardinality[H,I,T]=[1,3,1] tspan=3
+.. .. .. nsmpls=1 nvals=3 sem=INSTANT units=
+.. .. Expr dump @ ADDR096
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR091
+.. .. eval=(nil)() metrics=(nil) ring=ADDR101
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR101 0
+.. Expr dump @ ADDR092
+.. op=75 (print) arg1=ADDR102 arg2=(nil) parent=ADDR090
+.. eval=actFake metrics=(nil) ring=ADDR103
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR102
+.. .. op=76 (<action arg node>) arg1=ADDR104 arg2=(nil) parent=ADDR092
+.. .. eval=actArg metrics=(nil) ring=ADDR105
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR104
+.. .. .. op=80 (<nop node>) arg1=ADDR106 arg2=(nil) parent=ADDR102
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR107
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR107 "max_inst:"
+.. .. .. .. Expr dump @ ADDR106
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR104
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR108
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR108 " @%h [%i] %v"
+
+Rule: expr_6
+Expr dump @ ADDR109
+ op=0 (->) arg1=ADDR110 arg2=ADDR111 parent=(nil)
+ eval=rule metrics=ADDR112 ring=ADDR113
+ valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+ nsmpls=1 nvals=1 sem=TRUTH units=
+.. Expr dump @ ADDR110
+.. op=34 (>) arg1=ADDR114 arg2=ADDR115 parent=ADDR109
+.. eval=cndGt_1_1 metrics=ADDR112 ring=ADDR116
+.. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR114
+.. .. op=16 (max_host) arg1=ADDR117 arg2=(nil) parent=ADDR110
+.. .. eval=cndMax_host metrics=ADDR112 ring=ADDR118
+.. .. valid=0 cardinality[H,I,T]=[-1,-1,1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=INSTANT units=
+.. .. .. Expr dump @ ADDR117
+.. .. .. op=1 (<fetch node>) arg1=(nil) arg2=(nil) parent=ADDR114
+.. .. .. eval=cndFetch_n metrics=ADDR112 ring=ADDR119
+.. .. .. valid=0 cardinality[H,I,T]=[4,4,1] tspan=4
+.. .. .. nsmpls=1 nvals=4 sem=INSTANT units=
+.. .. Expr dump @ ADDR115
+.. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR110
+.. .. eval=(nil)() metrics=(nil) ring=ADDR120
+.. .. valid=1 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=NUMCONST units=
+.. .. smpls[0].ptr ADDR120 0
+.. Expr dump @ ADDR111
+.. op=75 (print) arg1=ADDR121 arg2=(nil) parent=ADDR109
+.. eval=actFake metrics=(nil) ring=ADDR122
+.. valid=0 cardinality[H,I,T]=[-1,-1,-1] tspan=1
+.. nsmpls=1 nvals=1 sem=TRUTH units=
+.. .. Expr dump @ ADDR121
+.. .. op=76 (<action arg node>) arg1=ADDR123 arg2=(nil) parent=ADDR111
+.. .. eval=actArg metrics=(nil) ring=ADDR124
+.. .. valid=0 cardinality[H,I,T]=[-1,1,-1] tspan=1
+.. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. Expr dump @ ADDR123
+.. .. .. op=80 (<nop node>) arg1=ADDR125 arg2=(nil) parent=ADDR121
+.. .. .. eval=(nil)() metrics=(nil) ring=ADDR126
+.. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=9
+.. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. smpls[0].ptr ADDR126 "max_host:"
+.. .. .. .. Expr dump @ ADDR125
+.. .. .. .. op=80 (<nop node>) arg1=(nil) arg2=(nil) parent=ADDR123
+.. .. .. .. eval=(nil)() metrics=(nil) ring=ADDR127
+.. .. .. .. valid=1 cardinality[H,I,T]=[0,0,0] tspan=12
+.. .. .. .. nsmpls=1 nvals=1 sem=CHAR units=
+.. .. .. .. smpls[0].ptr ADDR127 " @%h [%i] %v"
+[DATE] pmie(PID) Info: evaluator exiting
+Performance Co-Pilot Inference Engine (pmie), Version ...
+
+pmie debugger commands
+
+ f [file-name] - load expressions from given file or stdin
+ l [expr-name] - list named expression or all expressions
+ r [interval] - run for given or default interval
+ S time-spec - set start time for run
+ T time-spec - set default interval for run command
+ v [expr-name] - print subexpression used for %h, %i and
+ %v bindings
+ h or ? - print this menu of commands
+ q - quit
+
+pmie> pmie> vm00 =
+sampledso.colour :vm00 #red #green #blue;
+
+vm01 =
+sampledso.colour :vm01 #red #green #blue;
+
+vm02 =
+sampledso.colour :vm02 #red #green #blue;
+
+vm03 =
+sampledso.colour :vm03 #red #green #blue;
+
+expr_1 =
+min_sample (sampledso.colour :vm00 #red @0..2) > 0 -> print "min_sample:" " @%h [%i] %v";
+
+expr_2 =
+min_inst (sampledso.colour :vm00 #red #green #blue) > 0 -> print "min_inst:" " @%h [%i] %v";
+
+expr_3 =
+min_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red) > 0 -> print "min_host:" " @%h [%i] %v";
+
+expr_4 =
+max_sample (sampledso.colour :vm00 #red @0..2) > 0 -> print "max_sample:" " @%h [%i] %v";
+
+expr_5 =
+max_inst (sampledso.colour :vm00 #red #green #blue) > 0 -> print "max_inst:" " @%h [%i] %v";
+
+expr_6 =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red) > 0 -> print "max_host:" " @%h [%i] %v";
+
+pmie> vm00 (DATE): ?
+vm01 (DATE): ?
+vm02 (DATE): ?
+vm03 (DATE): ?
+expr_1 (DATE): unknown
+expr_2 (DATE): unknown
+expr_3 (DATE): unknown
+expr_4 (DATE): unknown
+expr_5 (DATE): unknown
+expr_6 (DATE): unknown
+
+print DATE: min_inst: @vm00 [red] 116
+print DATE: max_inst: @vm00 [blue] 318
+vm00 (DATE): 116 217 318
+vm01 (DATE): ?
+vm02 (DATE): ?
+vm03 (DATE): ?
+expr_1 (DATE): unknown
+expr_2 (DATE): true
+expr_3 (DATE): unknown
+expr_4 (DATE): unknown
+expr_5 (DATE): true
+expr_6 (DATE): unknown
+
+print DATE: min_inst: @vm00 [red] 116
+print DATE: min_host: @vm03 [<%i undefined>] 104
+print DATE: max_inst: @vm00 [blue] 318
+print DATE: max_host: @vm00 [<%i undefined>] 116
+vm00 (DATE): 116 217 318
+vm01 (DATE): 113 214 315
+vm02 (DATE): 110 211 312
+vm03 (DATE): 104 205 306
+expr_1 (DATE): unknown
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): unknown
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+print DATE: min_sample: @vm00 [red] 116
+print DATE: min_inst: @vm00 [red] 119
+print DATE: min_host: @vm03 [<%i undefined>] 107
+print DATE: max_sample: @vm00 [red] 119
+print DATE: max_inst: @vm00 [blue] 321
+print DATE: max_host: @vm00 [<%i undefined>] 119
+vm00 (DATE): 119 220 321
+vm01 (DATE): 116 217 318
+vm02 (DATE): 113 214 315
+vm03 (DATE): 107 208 309
+expr_1 (DATE): true
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): true
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+print DATE: min_sample: @vm00 [red] 116
+print DATE: min_inst: @vm00 [red] 122
+print DATE: min_host: @vm03 [<%i undefined>] 110
+print DATE: max_sample: @vm00 [red] 122
+print DATE: max_inst: @vm00 [blue] 324
+print DATE: max_host: @vm00 [<%i undefined>] 122
+vm00 (DATE): 122 223 324
+vm01 (DATE): 119 220 321
+vm02 (DATE): 116 217 318
+vm03 (DATE): 110 211 312
+expr_1 (DATE): true
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): true
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+print DATE: min_sample: @vm00 [red] 119
+print DATE: min_inst: @vm00 [red] 125
+print DATE: min_host: @vm03 [<%i undefined>] 113
+print DATE: max_sample: @vm00 [red] 125
+print DATE: max_inst: @vm00 [blue] 327
+print DATE: max_host: @vm00 [<%i undefined>] 125
+vm00 (DATE): 125 226 327
+vm01 (DATE): 122 223 324
+vm02 (DATE): 119 220 321
+vm03 (DATE): 113 214 315
+expr_1 (DATE): true
+expr_2 (DATE): true
+expr_3 (DATE): true
+expr_4 (DATE): true
+expr_5 (DATE): true
+expr_6 (DATE): true
+
+pmie> vm00 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm00 #red #green #blue
+
+vm01 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm01 #red #green #blue
+
+vm02 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm02 #red #green #blue
+
+vm03 (subexpression for %h, %i and %v bindings) =
+sampledso.colour :vm03 #red #green #blue
+
+expr_1 (subexpression for %h, %i and %v bindings) =
+min_sample (sampledso.colour :vm00 #red @0..2)
+
+expr_2 (subexpression for %h, %i and %v bindings) =
+min_inst (sampledso.colour :vm00 #red #green #blue)
+
+expr_3 (subexpression for %h, %i and %v bindings) =
+min_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red)
+
+expr_4 (subexpression for %h, %i and %v bindings) =
+max_sample (sampledso.colour :vm00 #red @0..2)
+
+expr_5 (subexpression for %h, %i and %v bindings) =
+max_inst (sampledso.colour :vm00 #red #green #blue)
+
+expr_6 (subexpression for %h, %i and %v bindings) =
+max_host (sampledso.colour :vm00 :vm01 :vm02 :vm03 #red)
+
+pmie> \ No newline at end of file
diff --git a/qa/524 b/qa/524
new file mode 100755
index 0000000..7d69efb
--- /dev/null
+++ b/qa/524
@@ -0,0 +1,99 @@
+#!/bin/sh
+# PCP QA Test No. 524
+# pmlogger silently exits when started in a directory that is
+# not writeable
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; chmod 755 $tmp.home; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# _check log archive
+#
+_check()
+{
+ if [ -f $1 ]
+ then
+ _filter_pmlogger_log <$1
+ else
+ echo "Error: no pmlogger.log created"
+ fi
+
+ if [ -f $2.0 -a -f $2.meta ]
+ then
+ pmdumplog $2 sampledso.colour \
+ | _filter_pmdumplog \
+ | sed -e '/green/s/[0-9][0-9]*$/NUMBER/'
+ else
+ echo "Error: no TEST archive created"
+ fi
+
+ for type in out err
+ do
+ if [ -f $tmp.$type ]
+ then
+ if [ -s $tmp.$type ]
+ then
+ echo "std$type contains ..."
+ _filter_pmlogger_log <$tmp.$type
+ else
+ echo "std$type is empty"
+ fi
+ else
+ echo "Error: std$type not created!"
+ fi
+ done
+}
+
+mkdir $tmp.home
+cat >$tmp.home/config <<End-of-File
+log mandatory on 1 sec {
+ sampledso.colour["green"]
+}
+End-of-File
+
+# real QA test starts here
+cd $tmp.home
+echo "default case ... should work"
+rm -f $tmp.out $tmp.err
+$PCP_BINADM_DIR/pmlogger -s 2 -c ./config -l ./pmlogger.log ./TEST >$tmp.out 2>$tmp.err
+_check ./pmlogger.log ./TEST
+
+echo
+echo "make current directory non-writeable and try again"
+rm -f TEST.* pmlogger.log
+rm -f $tmp.out $tmp.err
+chmod 555 .
+$PCP_BINADM_DIR/pmlogger -s 2 -c ./config -l ./pmlogger.log ./TEST >$tmp.out 2>$tmp.err
+_check ./pmlogger.log ./TEST
+
+echo
+echo "now try with log somewhere writeable"
+rm -f TEST.* $tmp.log
+rm -f $tmp.out $tmp.err
+chmod 555 .
+$PCP_BINADM_DIR/pmlogger -s 2 -c ./config -l $tmp.log ./TEST >$tmp.out 2>$tmp.err
+_check $tmp.log ./TEST
+
+echo
+echo "and finally with the archive somewhere writeable"
+rm -f $tmp.TEST.* pmlogger.log
+rm -f $tmp.out $tmp.err
+chmod 555 .
+$PCP_BINADM_DIR/pmlogger -s 2 -c ./config -l ./pmlogger.log $tmp.TEST >$tmp.out 2>$tmp.err
+_check ./pmlogger.log $tmp.TEST
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/524.out b/qa/524.out
new file mode 100644
index 0000000..269337d
--- /dev/null
+++ b/qa/524.out
@@ -0,0 +1,64 @@
+QA output created by 524
+default case ... should work
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+
+TIMESTAMP 30.0.5 (sampledso.colour): inst [1 or "green"] value NUMBER
+
+TIMESTAMP 30.0.5 (sampledso.colour): inst [1 or "green"] value NUMBER
+stdout is empty
+stderr is empty
+
+make current directory non-writeable and try again
+Error: no pmlogger.log created
+Error: no TEST archive created
+stdout is empty
+stderr contains ...
+pmlogger: cannot open log "./pmlogger.log" for writing : Permission denied
+Log for pmlogger on HOST started DATE
+
+pmlogger: Warning: log file (./pmlogger.log) creation failed
+Config parsed
+Starting logger for host "HOST"
+__pmLogNewFile: failed to create "./TEST.index": Permission denied
+__pmLogCreate: Permission denied
+
+Log finished DATE
+
+now try with log somewhere writeable
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+__pmLogNewFile: failed to create "./TEST.index": Permission denied
+__pmLogCreate: Permission denied
+
+Log finished DATE
+Error: no TEST archive created
+stdout is empty
+stderr is empty
+
+and finally with the archive somewhere writeable
+Error: no pmlogger.log created
+
+TIMESTAMP 30.0.5 (sampledso.colour): inst [1 or "green"] value NUMBER
+
+TIMESTAMP 30.0.5 (sampledso.colour): inst [1 or "green"] value NUMBER
+stdout is empty
+stderr contains ...
+pmlogger: cannot open log "./pmlogger.log" for writing : Permission denied
+Log for pmlogger on HOST started DATE
+
+pmlogger: Warning: log file (./pmlogger.log) creation failed
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
diff --git a/qa/525 b/qa/525
new file mode 100755
index 0000000..ebceba0
--- /dev/null
+++ b/qa/525
@@ -0,0 +1,99 @@
+#!/bin/sh
+# PCP QA Test No. 525
+# Units from summary botched after avg_host added to metric declaration.
+#
+# From a report by Jun Wang, junwang123@gmail.com
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# check if summary PMDA already installed
+#
+eval `pmprobe summary 2>&1 | awk '
+BEGIN { sts = "false" }
+$2 > 0 { sts = "true"; exit }
+END { print "reinstall=" sts }'`
+
+_cleanup()
+{
+ cd $PCP_VAR_DIR/pmdas/summary
+ for file in pmns expr.pmie help
+ do
+ [ -f $file.$seq ] && $sudo mv $file.$seq $file
+ done
+ if $reinstall
+ then
+ $sudo ./Install </dev/null >>$here/$seq.full 2>&1
+ else
+ $sudo ./Remove >>$here/$seq.full 2>&1
+ fi
+ cd $here
+ rm -rf $tmp.*
+}
+
+cat >$tmp.pmns <<End-of-File
+/* for QA $seq */
+summary {
+ mem SYSSUMMARY:0:0
+ avg_mem SYSSUMMARY:0:1
+ qa
+}
+summary.qa {
+ t01 SYSSUMMARY:1:1
+ t02 SYSSUMMARY:1:2
+ t03 SYSSUMMARY:1:3
+ t04 SYSSUMMARY:1:4
+ t05 SYSSUMMARY:1:5
+ t06 SYSSUMMARY:1:6
+}
+End-of-File
+
+cat >$tmp.expr.pmie <<End-of-File
+summary.mem = sample.kbyte_ctr;
+summary.avg_mem = avg_host sample.kbyte_ctr :'localhost' :'127.0.0.1';
+// now some extra tests after pmie has been fixed
+summary.qa.t01 = sample.kbyte_ctr + 1;
+summary.qa.t02 = sample.kbyte_ctr + 1 Kbyte / sec;
+summary.qa.t03 = some_inst sample.long.bin_ctr > 0;
+summary.qa.t04 = all_inst sample.long.bin_ctr > 0;
+summary.qa.t05 = min_inst sample.long.bin_ctr;
+summary.qa.t06 = max_inst sample.long.bin_ctr;
+End-of-File
+
+echo >$tmp.help
+
+cd $PCP_VAR_DIR/pmdas/summary
+
+for file in pmns expr.pmie help
+do
+ $sudo mv $file $file.$seq
+ $sudo mv $tmp.$file $file
+done
+$sudo ./Install </dev/null | _filter_pmda_install
+
+# real QA test starts here
+pminfo -d summary | tee -a $here/$seq.full
+pminfo -f summary >>$here/$seq.full
+
+cat $PCP_LOG_DIR/pmcd/summary.log >>$here/$seq.full
+
+echo >>$here/$seq.full
+echo "--- pmie directly ---" >>$here/$seq.full
+pmie -v -t 1 -T +2 -c expr.pmie >>$here/$seq.full 2>&1
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/525.out b/qa/525.out
new file mode 100644
index 0000000..f77e7c8
--- /dev/null
+++ b/qa/525.out
@@ -0,0 +1,46 @@
+QA output created by 525
+You will need to choose an appropriate configuration for installation of
+the "summary" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Interval between summary expression evaluation (seconds)? [10] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Wait 15 seconds for the summary agent to initialize ...
+Check summary metrics have appeared ... 8 metrics and 8 values
+
+summary.mem
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+
+summary.avg_mem
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+
+summary.qa.t01
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+
+summary.qa.t02
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+
+summary.qa.t03
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+summary.qa.t04
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+summary.qa.t05
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
+
+summary.qa.t06
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: byte / sec
diff --git a/qa/526 b/qa/526
new file mode 100755
index 0000000..3c10107
--- /dev/null
+++ b/qa/526
@@ -0,0 +1,31 @@
+#!/bin/sh
+# PCP QA Test No. 526
+# Exercise metric name validation in Log Import API
+#
+# Copyright (c) 2013, Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3800 ] || _notrun "Installed libpcp_import lacks name checks"
+_check_valgrind
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for name in '.' 'abc.123' '1bc.123' 'abc.xyz' 'a' '1' 'kernel.all.load' 'ab.cd.'
+do
+ echo
+ _run_valgrind src/check_import_name "$name"
+done
+
+status=0
+exit
diff --git a/qa/526.out b/qa/526.out
new file mode 100644
index 0000000..ca3dbf2
--- /dev/null
+++ b/qa/526.out
@@ -0,0 +1,121 @@
+QA output created by 526
+
+=== std out ===
+Checking metric name: "." ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: Error: Illegal metric name
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name .
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== std out ===
+Checking metric name: "abc.123" ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: Error: Illegal metric name
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name abc.123
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== std out ===
+Checking metric name: "1bc.123" ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: Error: Illegal metric name
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name 1bc.123
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== std out ===
+Checking metric name: "abc.xyz" ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: OK
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name abc.xyz
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== std out ===
+Checking metric name: "a" ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: OK
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name a
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== std out ===
+Checking metric name: "1" ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: Error: Illegal metric name
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name 1
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== std out ===
+Checking metric name: "kernel.all.load" ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: OK
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name kernel.all.load
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== std out ===
+Checking metric name: "ab.cd." ...
+=== std err ===
+pmiStart: OK -> 1
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiAddMetric: Error: Illegal metric name
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/check_import_name ab.cd.
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/527 b/qa/527
new file mode 100755
index 0000000..d86ab97
--- /dev/null
+++ b/qa/527
@@ -0,0 +1,136 @@
+#!/bin/sh
+# PCP QA Test No. 527
+# Check that timestamps are monotonic increasing for archives
+# created by libpcp_import. Based on
+# https://bugzilla.redhat.com/show_bug.cgi?id=958745
+#
+# Copyright (c) 2013 Red Hat, Inc. and Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3801 ] || _notrun libpcp_import fix is in PCP 3.8.1
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;g"
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# first data file
+#
+cat <<'End-of-File' >$tmp.gfs_inodes.csv
+Date,Time,Device,inodes
+2013-04-18,13:40,/dev/dm-12,102808
+2013-04-18,13:45,/dev/dm-12,102798
+2013-04-18,13:50,/dev/dm-12,102799
+2013-04-18,13:55,/dev/dm-12,102808
+2013-04-18,14:00,/dev/dm-12,102804
+2013-04-18,14:05,/dev/dm-12,103182
+2013-04-18,14:10,/dev/dm-12,102864
+2013-04-18,14:15,/dev/dm-12,102810
+2013-04-18,14:20,/dev/dm-12,102805
+End-of-File
+
+# second data file
+#
+cat <<'End-of-File' >$tmp.gfs_metadata.csv
+Date,Time,Device,fmb
+2013-04-18,13:40,/dev/dm-12,3712689
+2013-04-18,13:45,/dev/dm-12,3712699
+2013-04-18,13:50,/dev/dm-12,3712698
+2013-04-18,13:55,/dev/dm-12,3712689
+2013-04-18,14:00,/dev/dm-12,3712693
+2013-04-18,14:05,/dev/dm-12,3712273
+2013-04-18,14:10,/dev/dm-12,3712349
+2013-04-18,14:15,/dev/dm-12,3711980
+2013-04-18,14:20,/dev/dm-12,3711842
+End-of-File
+
+# Perl script
+#
+cat <<'End-of-File' >$tmp.pl
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Date::Parse;
+use Date::Format;
+use PCP::LogImport;
+
+End-of-File
+echo "pmiStart(\"$tmp.gfs\", 0);" >>$tmp.pl
+cat <<'End-of-File' >>$tmp.pl
+$_ = pmiSetTimezone('UTC');
+$_ == 0 || die "pmiSetTimezone(UTC): " . pmiErrStr($_);
+
+$_ = pmiAddMetric("gfs.inodes",
+ PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmiUnits(0,0,1,0,0,PM_COUNT_ONE));
+$_ == 0 || die "pmiAddMetric(gfs.inodes): " . pmiErrStr($_);
+
+
+End-of-File
+echo "open(INFILE, \"<$tmp.gfs_inodes.csv\");" >>$tmp.pl
+cat <<'End-of-File' >>$tmp.pl
+while (<INFILE>) {
+ next if $. == 1;
+ chomp;
+ my @part = split(/,/, $_);
+
+ $_ = pmiPutValue("gfs.inodes", "", $part[3]);
+ $_ == 0 || die "pmiPutValue(gfs.inodes): " . pmiErrStr($_);
+
+ $_ = pmiWrite(str2time($part[0] . "T" . $part[1] . ":00", 'UTC'), 0);
+ $_ == 0 || die "pmiWrite(gfs.fmb): " . pmiErrStr($_);
+}
+close(INFILE);
+
+
+$_ = pmiAddMetric("gfs.fmb",
+ PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmiUnits(0,0,1,0,0,PM_COUNT_ONE));
+$_ == 0 || die "pmiAddMetric(gfs.fmb): " . pmiErrStr($_);
+
+End-of-File
+echo "open(INFILE, \"<$tmp.gfs_metadata.csv\");" >>$tmp.pl
+cat <<'End-of-File' >>$tmp.pl
+while (<INFILE>) {
+ next if $. == 1;
+ chomp;
+ my @part = split(/,/, $_);
+
+ $_ = pmiPutValue("gfs.fmb", "", $part[3]);
+ $_ == 0 || die "pmiPutValue(gfs.fmb): " . pmiErrStr($_);
+
+ $_ = pmiWrite(str2time($part[0] . "T" . $part[1] . ":00", 'UTC'), 0);
+ $_ == 0 || die "pmiWrite(gfs.fmb): " . pmiErrStr($_);
+}
+close(INFILE);
+
+
+pmiEnd();
+End-of-File
+
+# real QA test starts here
+perl $tmp.pl 2>&1 | _filter
+
+for part in 0 meta index
+do
+ [ -f $tmp.$part ] && echo "oops, .$part file created"
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/527.out b/qa/527.out
new file mode 100644
index 0000000..e1a5836
--- /dev/null
+++ b/qa/527.out
@@ -0,0 +1,3 @@
+QA output created by 527
+Fatal Error: timestamp 2013-03-18 13:40:00.000000 not greater than previous valid timestamp 2013-03-18 14:20:00.000000
+pmiWrite(gfs.fmb): Illegal result timestamp at TMP.pl line 49, <INFILE> line 2.
diff --git a/qa/528 b/qa/528
new file mode 100755
index 0000000..8dca1b2
--- /dev/null
+++ b/qa/528
@@ -0,0 +1,68 @@
+#!/bin/sh
+# PCP QA Test No. 528
+# Exercising log import API batching extensions.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+test $PCP_VER -ge 3801 || _notrun "No support for log import batching"
+[ -f ${PCP_LIB_DIR}/libpcp_import.${DSO_SUFFIX} ] || \
+ _notrun "No support for libpcp_import"
+perl -e "use PCP::LogImport" 2>/dev/null || \
+ _notrun "Perl PCP::LogImport module is not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter1()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+ -e '/^EXPORT_FAIL$/d' \
+ -e '/::EXPORT_FAIL$/d'
+}
+
+_filter2()
+{
+ _filter_pmdumplog \
+ | sed \
+ -e '/PID for pmlogger:/s/[0-9][0-9]*/PID/'
+}
+
+_filter3()
+{
+ $PCP_AWK_PROG '
+BEGIN { part = "part1" }
+NF == 0 { part = "part2" }
+ { print >part }'
+ if [ -f part1 ]
+ then
+ # first part of output is in non-deterministic order, so sort it
+ #
+ _filter1 <part1 | LC_COLLATE=POSIX sort
+ fi
+ [ -f part2 ] && _filter1 <part2
+}
+
+mkdir $tmp.dir
+cd $tmp.dir
+
+# real QA test starts here
+rm -f myarchive.*
+perl $here/src/batch_import.perl 2>&1 | tee -a $here/$seq.full | _filter3
+pminfo -dm -a myarchive
+pmdumplog -a myarchive 2>&1 | _filter2
+
+# success, all done
+status=0
+exit
diff --git a/qa/528.out b/qa/528.out
new file mode 100644
index 0000000..873ab97
--- /dev/null
+++ b/qa/528.out
@@ -0,0 +1,88 @@
+QA output created by 528
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Data Type: 64-bit unsigned int InDom: 245.1 0x3d400001
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ Semantics: instant Units: Mbyte / sec
+ Semantics: instant Units: Mbyte / sec
+ Semantics: instant Units: none
+ Semantics: instant Units: none
+ Semantics: instant Units: none
+ Semantics: instant Units: none
+ No indoms.
+ No pmResult.
+ handle[0] metric=my.metric.string (245.0.5) instance=-1
+ handle[1] metric=my.metric.strung (245.0.7) instance=-1
+ metric[0] name=my.metric.foo pmid=245.0.1
+ metric[1] name=my.metric.bar pmid=245.0.2
+ metric[2] name=my.metric.long pmid=245.0.3
+ metric[3] name=my.metric.double pmid=245.0.4
+ metric[4] name=my.metric.string pmid=245.0.5
+ metric[5] name=my.metric.float pmid=245.0.6
+ metric[6] name=my.metric.strung pmid=245.0.7
+ state: 2 (active) hostname: batching.com timezone: GMT-12
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiAddMetric: OK
+pmiBatchEnd: OK
+pmiBatchPutValue: OK
+pmiBatchPutValue: OK
+pmiBatchPutValue: OK
+pmiBatchPutValueHandle: OK
+pmiBatchPutValueHandle: OK
+pmiBatchWrite: OK
+pmiBatchWrite: OK
+pmiBatchWrite: OK
+pmiDump: context 0 of 1 archive: myarchive
+pmiGetHandle: OK ->1
+pmiGetHandle: OK ->2
+pmiSetHostname: OK
+pmiSetTimezone: OK
+pmiStart: OK ->1
+pmiUseContext: OK
+
+my.metric.string PMID: 245.0.5
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+my.metric.strung PMID: 245.0.7
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 245.0.5 (my.metric.string)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 245.0.7 (my.metric.strung)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 244 132
+
+[116 bytes]
+TIMESTAMP 245.0.7 (my.metric.strung): value "a first string value"
+ 245.0.5 (my.metric.string): value "a second string value"
+
+[68 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a third string value"
+
+[116 bytes]
+TIMESTAMP 245.0.5 (my.metric.string): value "a fourth string value"
+ 245.0.7 (my.metric.strung): value "a fifth string value"
diff --git a/qa/529 b/qa/529
new file mode 100755
index 0000000..2ba0830
--- /dev/null
+++ b/qa/529
@@ -0,0 +1,161 @@
+#! /bin/sh
+# PCP QA Test No. 529
+# verify the pmcd.pmie metrics from the pmcd PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ if [ ! -z "$pid3" ]
+ then
+ $sudo rm -f $PCP_TMP_DIR/pmie/$pid3
+ $signal -s TERM $pid3
+ pid3=''
+ fi
+ if [ ! -z "$pid4" ]
+ then
+ $sudo rm -f $PCP_TMP_DIR/pmie/$pid4
+ $signal -s TERM $pid4
+ pid4=''
+ fi
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "_cleanup; $sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+username=`id -u -n`
+host=`pmhostname`
+
+_filter()
+{
+ sed \
+ -e 's/.*value //' \
+ -e "s,/var$tmp,TMP,g" \
+ -e "s,$tmp,TMP,g" \
+ -e "s;/privateTMP;TMP;g" \
+ -e "s/$host/HOST/g" \
+ -e "s/`hostname`/HOST/g" \
+ -e "s/localhost\.localdomain/MYHOST/g" \
+ -e "s/localhost/HOST/g" \
+ -e "s/local:/HOST/g" \
+ | $PCP_AWK_PROG '
+NR == 1 { big = $1; next }
+$1 > big { big = $1 }
+END { print big }'
+}
+
+rm -f $seq.full
+
+# real qa test starts here
+
+echo === checking unknown, numrules, actions, expected, true
+cat <<End-of-File >$tmp.conf
+// the rules
+//
+all_sample ( sample.long.ten @0..3 < 10 ) -> print "rule1: (BAD)" " %v < 10";
+all_sample ( sample.long.ten @0..3 >= 10 ) -> print "rule2: (OK)" " %v >= 10";
+sample.long.ten < 10 -> print "rule3: (BAD)" " %v < 10";
+sample.long.ten >= 10 -> print "rule4: (OK)" " %v >= 10";
+End-of-File
+
+__user=root
+id pcp >/dev/null 2>&1 && __user=pcp
+
+_start_up_pmie1()
+{
+ cat >$tmp.cmd1 <<End-of-File
+#!/bin/sh
+pmie \$@ &
+echo pid=\$!
+End-of-File
+
+ $sudo -u $__user sh $tmp.cmd1 $@ $tmp.conf >$tmp.pid
+ eval `cat $tmp.pid`
+}
+
+_start_up_pmie2()
+{
+ cat >$tmp.cmd2 <<End-of-File
+#!/bin/sh
+pmie \$@ <$tmp.conf &
+echo pid=\$!
+End-of-File
+
+ $sudo -u $__user sh $tmp.cmd2 $@ >$tmp.pid
+ eval `cat $tmp.pid`
+}
+
+pmieopts="-v -b"
+_start_up_pmie1 -t 1sec -T 4sec $pmieopts -l $tmp.out1
+pid1=$pid
+_start_up_pmie2 -t 1sec -T 4sec $pmieopts -l $tmp.out2
+pid2=$pid
+echo "self=$$ pid1=$pid1 and pid2=$pid2" >> $seq.full
+
+sleep 2
+
+# link the pmie mmap'd files so they persist after the pmie processes
+# exit
+#
+sleep 1000 &
+pid3=$!
+sleep 1000 &
+pid4=$!
+$sudo ln $PCP_TMP_DIR/pmie/$pid1 $PCP_TMP_DIR/pmie/$pid3
+$sudo ln $PCP_TMP_DIR/pmie/$pid2 $PCP_TMP_DIR/pmie/$pid4
+
+echo "log mandatory on default { pmcd.pmie }" \
+| pmlogger -t 0.25sec -T 5sec $tmp
+
+sleep 4
+
+echo "log from pid=$pid1" >> $seq.full
+cat $tmp.out1 >> $seq.full
+echo "log from pid=$pid2" >> $seq.full
+cat $tmp.out2 >> $seq.full
+
+# values at the end of the run should be deterministic for these metrics...
+# ... metrics are instantaneous, so 10 samples reported in 9 secs
+#
+# numrules = 4
+# expected = 4 rule evaluations every 1 sec (4.0)
+# configfile = "<stdin>" and /tmp/[PID].conf
+#
+# actual = 20
+# unknown = 6
+# true = 7
+# false = 7
+# actions = 7
+#
+
+for pid in $pid3 $pid4
+do
+ echo
+ [ $pid = $pid3 ] && echo "first pmie instance ..."
+ [ $pid = $pid4 ] && echo "second pmie instance ..."
+ echo "pid=$pid ..." >>$seq.full
+
+ for metric in configfile logfile pmcd_host numrules actions \
+ eval.true eval.false eval.unknown eval.expected eval.actual
+ do
+ $PCP_ECHO_PROG $PCP_ECHO_N "$metric ""$PCP_ECHO_C"
+ echo "$metric ..." >>$seq.full
+ pmdumplog $tmp pmcd.pmie.$metric \
+ | tee -a $seq.full \
+ | grep $pid \
+ | _filter
+ done
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/529.out b/qa/529.out
new file mode 100644
index 0000000..4d927ac
--- /dev/null
+++ b/qa/529.out
@@ -0,0 +1,26 @@
+QA output created by 529
+=== checking unknown, numrules, actions, expected, true
+
+first pmie instance ...
+configfile "TMP.conf"
+logfile "TMP.out1"
+pmcd_host "HOST"
+numrules 4
+actions 7
+eval.true 7
+eval.false 7
+eval.unknown 6
+eval.expected 4
+eval.actual 20
+
+second pmie instance ...
+configfile "<stdin>"
+logfile "TMP.out2"
+pmcd_host "HOST"
+numrules 4
+actions 7
+eval.true 7
+eval.false 7
+eval.unknown 6
+eval.expected 4
+eval.actual 20
diff --git a/qa/530 b/qa/530
new file mode 100755
index 0000000..0569fab
--- /dev/null
+++ b/qa/530
@@ -0,0 +1,150 @@
+#! /bin/sh
+# PCP QA Test No. 530
+# pmlogger_daily ... do you work at all?
+#
+# OLD VERSION for YYDDMM style naming convention (see also 338)
+#
+# NOTE - THIS TEST WILL FAIL IF RUN IN THE FIRST 5 MINUTES AFTER
+# MIDNIGHT - c'est la vie, I'm afraid.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ tee -a $seq.full \
+ | $PCP_AWK_PROG '
+/^Archive files older than/ { eatlines=1; longone=" "; print; next; }
+eatlines { if ( match ($0, "^ ") ) {
+ for ( i=1; i <=NF; i++ ) {
+ longone = sprintf ("%s %s",longone,$i);
+ }
+ } else {
+ print longone | "fmt -76";
+ close ("fmt -76");
+ longone = ""; eatlines = 0;
+ print;
+ }
+ next;
+ }
+END { if ( eatlines ) {
+ print longone | "fmt -76";
+ close ("fmt -76");
+ }
+ }
+ { print }' \
+ | sed -f $tmp/sed \
+ | sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/`hostname`/HOST/g" \
+ -e "s/localhost/HOST/g" \
+ -e "s/local:/HOST/g" \
+ -e "s/`hostname | sed -e 's/\..*//'`/HOST/g" \
+ -e '/\/var\/adm\/pcplog\/NOTICES/d' \
+ -e 's/-rw-r--r--\./-rw-r--r--/' \
+ | $PCP_AWK_PROG '
+/-rw-r--r--/ { print $1,"...",$5,"...",$9; next }
+ { print }' \
+ | _filter_cron_scripts
+}
+
+status=1 # failure is the default!
+trap "cd $here; $sudo rm -rf $tmp; $sudo mv $PCP_LOG_DIR/NOTICES.$$ $PCP_LOG_DIR/NOTICES; exit \$status" 0 1 2 3 15
+
+# take explicit control of the umask
+#
+umask 022
+
+$sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.$$
+rm -f $seq.full
+rm -rf $tmp
+mkdir $tmp
+
+# real QA test starts here
+unset verbose
+for loop in 1 2
+do
+ echo >$tmp/sed
+ for day in 0 1 2 3 4 5
+ do
+ fmt=%y%m%d
+ # aiming for the time to be 00:02 and 00:04 on each day,
+ # even if that is ahead of NOW for today
+ #
+ now_hr=`pmdate %H`
+ hour=-$now_hr
+ now_min=`pmdate %M`
+ min2=`expr 2 - $now_min`
+ [ "$min2" -ge 0 ] && min2="+$min2"
+ min4=`expr 4 - $now_min`
+ [ "$min4" -ge 0 ] && min4="+$min4"
+ namea=`pmdate -${day}d ${hour}H ${min2}M $fmt.%H.%M`
+ nameb=`pmdate -${day}d ${hour}H ${min4}M $fmt.%H.%M`
+ yesterday=`pmdate -1d ${hour}H ${min2}M $fmt`
+ stampa=`echo $namea | sed -e 's/\.//g'`
+ stampb=`echo $nameb | sed -e 's/\.//g'`
+ echo "s/$namea/NOW-$day.00.02/g" >>$tmp/sed
+ echo "s/$nameb/NOW-$day.00.04/g" >>$tmp/sed
+
+ for ext in 0 index meta
+ do
+ cp src/arch_a.$ext $tmp/$namea.$ext
+ touch -t $stampa $tmp/$namea.$ext
+ cp src/arch_b.$ext $tmp/$nameb.$ext
+ touch -t $stampb $tmp/$nameb.$ext
+ done
+ done
+ ls -lt $tmp >>$seq.full
+ echo "s/NOW-0/TODAY/g" >>$tmp/sed
+ echo "s/NOW-1/YESTERDAY/g" >>$tmp/sed
+ echo "s/`pmdate %y%m%d`/TODAY/g" >>$tmp/sed
+ echo "s/$yesterday/YESTERDAY/g" >>$tmp/sed
+
+ echo >$tmp/control '$version=1.1
+LOCALHOSTNAME n n '"$tmp"' ./config'
+
+ echo
+ echo "=== [${verbose+verbose}] regular show ==="
+ echo "=== [${verbose+verbose}] regular show ===" >>$seq.full
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -o -c $tmp/control -k 3 $verbose 2>&1 \
+ | _filter
+ ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort
+
+ echo
+ echo "=== [${verbose+verbose}] nothing to do but cull some more ==="
+ echo "=== [${verbose+verbose}] nothing to do but cull some more ===" >>$seq.full
+ for ext in 0 index meta
+ do
+ mv $tmp/$yesterday.$ext $tmp/save.$ext
+ done
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -o -c $tmp/control -k 2 $verbose 2>&1 \
+ | _filter
+ ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort
+
+ echo
+ echo "=== [${verbose+verbose}] error, output already exists ==="
+ echo "=== [${verbose+verbose}] error, output already exists ===" >>$seq.full
+ for ext in 0 index meta
+ do
+ cp src/arch_a.$ext $tmp/$yesterday.17.18.$ext
+ mv $tmp/save.$ext $tmp/$yesterday.$ext
+ done
+ $sudo $PCP_BINADM_DIR/pmlogger_daily -o -c $tmp/control -k 2 $verbose 2>&1 \
+ | _filter
+ ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort
+
+ verbose=-V
+ rm -f $tmp/*
+done
+
+# all done
+status=0
+exit
diff --git a/qa/530.out b/qa/530.out
new file mode 100644
index 0000000..fc39d61
--- /dev/null
+++ b/qa/530.out
@@ -0,0 +1,177 @@
+QA output created by 530
+
+=== [] regular show ===
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+NOW-3.00.02.0
+NOW-3.00.02.index
+NOW-3.00.02.meta
+NOW-3.00.04.0
+NOW-3.00.04.index
+NOW-3.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
+
+=== [] nothing to do but cull some more ===
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+control
+save.0
+save.index
+save.meta
+sed
+
+=== [] error, output already exists ===
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+PMLOGGER.DAILY: Warning: output archive (YESTERDAY) already exists
+[TMP/control:2] ... skip log merging, culling and compressing for host "HOST"
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.17.18.0
+YESTERDAY.17.18.index
+YESTERDAY.17.18.meta
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
+
+=== [verbose] regular show ===
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+Input archives to be merged:
+ YESTERDAY.00.02
+ YESTERDAY.00.04
+Output archive files:
+-rw-r--r-- ... 455 ... YESTERDAY.meta
+-rw-r--r-- ... 192 ... YESTERDAY.index
+-rw-r--r-- ... 864 ... YESTERDAY.0
+Removing input archive files ... done
+Archive files older than 3 days being removed ...
+ NOW-5.00.02.0 NOW-5.00.02.index NOW-5.00.02.meta NOW-5.00.04.0
+ NOW-5.00.04.index NOW-5.00.04.meta NOW-4.00.02.0 NOW-4.00.02.index
+ NOW-4.00.02.meta NOW-4.00.04.0 NOW-4.00.04.index NOW-4.00.04.meta
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+NOW-3.00.02.0
+NOW-3.00.02.index
+NOW-3.00.02.meta
+NOW-3.00.04.0
+NOW-3.00.04.index
+NOW-3.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
+
+=== [verbose] nothing to do but cull some more ===
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+PMLOGGER.DAILY: Warning: no archives found to merge
+Archive files older than 2 days being removed ...
+ NOW-3.00.02.0 NOW-3.00.02.index NOW-3.00.02.meta NOW-3.00.04.0
+ NOW-3.00.04.index NOW-3.00.04.meta
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+control
+save.0
+save.index
+save.meta
+sed
+
+=== [verbose] error, output already exists ===
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+PMLOGGER.DAILY: Warning: output archive (YESTERDAY) already exists
+[TMP/control:2] ... skip log merging, culling and compressing for host "HOST"
+NOW-2.00.02.0
+NOW-2.00.02.index
+NOW-2.00.02.meta
+NOW-2.00.04.0
+NOW-2.00.04.index
+NOW-2.00.04.meta
+TODAY.00.02.0
+TODAY.00.02.index
+TODAY.00.02.meta
+TODAY.00.04.0
+TODAY.00.04.index
+TODAY.00.04.meta
+YESTERDAY.0
+YESTERDAY.17.18.0
+YESTERDAY.17.18.index
+YESTERDAY.17.18.meta
+YESTERDAY.index
+YESTERDAY.meta
+control
+sed
diff --git a/qa/531 b/qa/531
new file mode 100755
index 0000000..dee36b0
--- /dev/null
+++ b/qa/531
@@ -0,0 +1,59 @@
+#!/bin/sh
+# PCP QA Test No. 531
+# Exercise inet socket open command in dbpmda
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3801 ] || _notrun "No dbpmda support for inet sockets"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+username=`id -u -n`
+port=`_get_port tcp 6161 6171`
+if [ -z "$port" ]
+then
+ echo "Arrggh ... no free TCP port in the range 6161 ... 6171"
+ netstat -an
+ exit
+fi
+
+_filter()
+{
+ tee -a $seq.full | \
+ sed \
+ -e "s/socket inet $port/socket inet PORT/g" \
+ -e "s/inet port $port/inet port PORT/g" \
+ -e "s/ value $pid/ value PID/g" \
+ | _filter_dumpresult
+}
+
+# real QA test starts here
+$PCP_PMDAS_DIR/sample/pmdasample -i $port -U $username -l $tmp.log &
+pid=$!
+echo "PMDA sample PID = $pid" > $seq.full
+sleep 2 # allow socket setup to occur
+
+dbpmda -n $PCP_PMDAS_DIR/sample/root -ie <<End-of-File 2>&1 | _filter
+open socket inet $port
+getdesc on
+desc sample.daemon_pid
+fetch sample.daemon_pid
+text sample.daemon_pid
+close
+End-of-File
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/531.out b/qa/531.out
new file mode 100644
index 0000000..a20eb82
--- /dev/null
+++ b/qa/531.out
@@ -0,0 +1,19 @@
+QA output created by 531
+dbpmda> open socket inet PORT
+Connect to PMDA on inet port PORT
+dbpmda> getdesc on
+dbpmda> desc sample.daemon_pid
+PMID: 29.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+dbpmda> fetch sample.daemon_pid
+PMID(s): 29.0.1
+pmResult ... numpmid: 1
+ 29.0.1 (sample.daemon_pid): numval: 1 valfmt: 0 vlist[]:
+ value PID
+dbpmda> text sample.daemon_pid
+PMID: 29.0.1
+[Process id of PMDA daemon]
+The process id of PMDA daemon, -1 if the daemon is a DSO.
+dbpmda> close
+dbpmda>
diff --git a/qa/532 b/qa/532
new file mode 100755
index 0000000..a402d8c
--- /dev/null
+++ b/qa/532
@@ -0,0 +1,152 @@
+#! /bin/sh
+# PCP QA Test No. 532
+# pmlogger_check with *-xx.* archives and .meta files in subdirs
+# (loosely based on 530 and 338)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Note: for reasons that are not understood, this test sometimes fails
+# but passes when rerun
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed -f $tmp/sed \
+ | sed \
+ -e "s;$tmp;TMP;g" \
+ -e "s/local:/HOST/g" \
+ -e "s/`hostname`/HOST/g" \
+ -e "s/`hostname | sed -e 's/\..*//'`/HOST/g" \
+ -e '/\/var\/adm\/pcplog\/NOTICES/d' \
+ -e 's/-rw-r--r--\./-rw-r--r--/' \
+ | $PCP_AWK_PROG '
+/-rw-r--r--/ { print $1,"...",$5,"...",$9; next }
+ { print }' \
+ | _filter_cron_scripts
+}
+
+status=1 # failure is the default!
+trap "cd $here; $sudo rm -rf $tmp $tmp.*; $sudo mv $PCP_LOG_DIR/NOTICES.$$ $PCP_LOG_DIR/NOTICES; exit \$status" 0 1 2 3 15
+
+# take explicit control of the umask
+#
+umask 022
+
+$sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.$$
+rm -f $seq.full
+rm -rf $tmp $tmp.*
+mkdir $tmp
+mkdir $tmp/foo
+
+# real QA test starts here
+verbose=-V
+echo >$tmp/sed
+for day in 0 1 2 3
+do
+ fmt=%Y%m%d
+
+ for hour in 1 4 16
+ do
+ [ $day -gt 0 -a $hour -gt 1 ] && continue
+ # aiming for the time to be hour:10, hour:20 and hour:30 on
+ # each day, even if that is ahead of NOW for today
+ #
+ now_hr=`pmdate %H`
+ hr_set=`expr $hour - $now_hr`
+ [ "$hr_set" -ge 0 ] && hr_set="+$hr_set"
+ now_min=`pmdate %M`
+ min_set10=`expr 10 - $now_min`
+ [ "$min_set10" -ge 0 ] && min_set10="+$min_set10"
+ min_set20=`expr 20 - $now_min`
+ [ "$min_set20" -ge 0 ] && min_set20="+$min_set20"
+ min_set30=`expr 30 - $now_min`
+ [ "$min_set30" -ge 0 ] && min_set30="+$min_set30"
+ namea=`pmdate -${day}d ${hr_set}H ${min_set10}M $fmt.%H.%M`
+ nameb=`pmdate -${day}d ${hr_set}H ${min_set20}M $fmt.%H.%M`
+ namec=`pmdate -${day}d ${hr_set}H ${min_set30}M $fmt.%H.%M`
+ yesterday=`pmdate -1d ${hr_set}H ${min_set10}M $fmt`
+ stampa=`echo $namea | sed -e 's/\.//g'`
+ stampb=`echo $nameb | sed -e 's/\.//g'`
+ stampc=`echo $namec | sed -e 's/\.//g'`
+ nameb=${namea}-00
+ namec=${namea}-01
+ echo "s/$namea/NOW-$day.${hour}H.MM/g" >>$tmp/sed
+ echo "s/$nameb/NOW-$day.${hour}H.MM-00/g" >>$tmp/sed
+ echo "s/$namec/NOW-$day.${hour}H.MM-01/g" >>$tmp/sed
+
+ for ext in 0 index meta
+ do
+ if [ $hour -ne 4 ]
+ then
+ cp src/arch_a.$ext $tmp/$namea.$ext
+ touch -t $stampa $tmp/$namea.$ext
+ fi
+ cp src/arch_b.$ext $tmp/$nameb.$ext
+ touch -t $stampb $tmp/$nameb.$ext
+ cp src/arch_b.$ext $tmp/$namec.$ext
+ touch -t $stampc $tmp/$namec.$ext
+ done
+ done
+done
+
+( cd $tmp; tar cf - *.0 *.meta *.index 2>/dev/null ) \
+| ( cd $tmp/foo; tar xpf - 2>/dev/null )
+
+echo "s/NOW-0/TODAY/g" >>$tmp/sed
+echo "s/NOW-1/YESTERDAY/g" >>$tmp/sed
+echo "s/`pmdate %Y%m%d`/TODAY/g" >>$tmp/sed
+echo "s/$yesterday/YESTERDAY/g" >>$tmp/sed
+
+echo >$tmp/control '$version=1.1
+LOCALHOSTNAME n n '"$tmp"' ./config'
+
+echo
+echo "Before ..."
+ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort | tee $tmp.before
+ls -l $tmp >>$seq.full
+
+# list of culled files is in directory order, hence the cut and sort
+# complexity at the end of this pipeline
+#
+echo
+$sudo $PCP_BINADM_DIR/pmlogger_daily -o -c $tmp/control -k 2 $verbose 2>&1 \
+| _filter \
+| $PCP_AWK_PROG '
+state == 0 { print >"'$tmp.out.0'"
+ if ($0 ~ /older than 2 days/) state = 1
+ next
+ }
+state == 1 && NF == 0 { state = 2 }
+state == 1 { for (i = 1; i <= NF; i++) print $i >"'$tmp.out.1'" }'
+cat $tmp.out.0
+LC_COLLATE=POSIX sort $tmp.out.1
+
+echo "out.0 ..." >>$seq.full
+cat $tmp.out.0 >>$seq.full
+echo "out.1 ..." >>$seq.full
+cat $tmp.out.1 >>$seq.full
+
+echo
+echo "After ..."
+ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort | tee $tmp.after
+
+pmdumplog -a $tmp/$yesterday >>$seq.full
+
+echo
+echo "Differences ..."
+diff $tmp.before $tmp.after
+
+rm -rf $tmp/* $tmp.*
+
+# all done
+status=0
+exit
diff --git a/qa/532.out b/qa/532.out
new file mode 100644
index 0000000..b6c79ee
--- /dev/null
+++ b/qa/532.out
@@ -0,0 +1,150 @@
+QA output created by 532
+
+Before ...
+NOW-2.1H.MM-00.0
+NOW-2.1H.MM-00.index
+NOW-2.1H.MM-00.meta
+NOW-2.1H.MM-01.0
+NOW-2.1H.MM-01.index
+NOW-2.1H.MM-01.meta
+NOW-2.1H.MM.0
+NOW-2.1H.MM.index
+NOW-2.1H.MM.meta
+NOW-3.1H.MM-00.0
+NOW-3.1H.MM-00.index
+NOW-3.1H.MM-00.meta
+NOW-3.1H.MM-01.0
+NOW-3.1H.MM-01.index
+NOW-3.1H.MM-01.meta
+NOW-3.1H.MM.0
+NOW-3.1H.MM.index
+NOW-3.1H.MM.meta
+TODAY.16H.MM-00.0
+TODAY.16H.MM-00.index
+TODAY.16H.MM-00.meta
+TODAY.16H.MM-01.0
+TODAY.16H.MM-01.index
+TODAY.16H.MM-01.meta
+TODAY.16H.MM.0
+TODAY.16H.MM.index
+TODAY.16H.MM.meta
+TODAY.1H.MM-00.0
+TODAY.1H.MM-00.index
+TODAY.1H.MM-00.meta
+TODAY.1H.MM-01.0
+TODAY.1H.MM-01.index
+TODAY.1H.MM-01.meta
+TODAY.1H.MM.0
+TODAY.1H.MM.index
+TODAY.1H.MM.meta
+TODAY.4H.MM-00.0
+TODAY.4H.MM-00.index
+TODAY.4H.MM-00.meta
+TODAY.4H.MM-01.0
+TODAY.4H.MM-01.index
+TODAY.4H.MM-01.meta
+YESTERDAY.1H.MM-00.0
+YESTERDAY.1H.MM-00.index
+YESTERDAY.1H.MM-00.meta
+YESTERDAY.1H.MM-01.0
+YESTERDAY.1H.MM-01.index
+YESTERDAY.1H.MM-01.meta
+YESTERDAY.1H.MM.0
+YESTERDAY.1H.MM.index
+YESTERDAY.1H.MM.meta
+control
+foo
+sed
+
+
+=== daily maintenance of PCP archives for host HOST ===
+
+PMLOGGER.DAILY: Error: no pmlogger instance running for host "HOST"
+[TMP/control:2] ... logging for host "HOST" unchanged
+
+Input archives to be merged:
+ YESTERDAY.1H.MM
+ YESTERDAY.1H.MM-00
+ YESTERDAY.1H.MM-01
+Output archive files:
+-rw-r--r-- ... 455 ... YESTERDAY.meta
+-rw-r--r-- ... 192 ... YESTERDAY.index
+-rw-r--r-- ... 1240 ... YESTERDAY.0
+Removing input archive files ... done
+Archive files older than 2 days being removed ...
+NOW-3.1H.MM-00.0
+NOW-3.1H.MM-00.index
+NOW-3.1H.MM-00.meta
+NOW-3.1H.MM-01.0
+NOW-3.1H.MM-01.index
+NOW-3.1H.MM-01.meta
+NOW-3.1H.MM.0
+NOW-3.1H.MM.index
+NOW-3.1H.MM.meta
+
+After ...
+NOW-2.1H.MM-00.0
+NOW-2.1H.MM-00.index
+NOW-2.1H.MM-00.meta
+NOW-2.1H.MM-01.0
+NOW-2.1H.MM-01.index
+NOW-2.1H.MM-01.meta
+NOW-2.1H.MM.0
+NOW-2.1H.MM.index
+NOW-2.1H.MM.meta
+TODAY.16H.MM-00.0
+TODAY.16H.MM-00.index
+TODAY.16H.MM-00.meta
+TODAY.16H.MM-01.0
+TODAY.16H.MM-01.index
+TODAY.16H.MM-01.meta
+TODAY.16H.MM.0
+TODAY.16H.MM.index
+TODAY.16H.MM.meta
+TODAY.1H.MM-00.0
+TODAY.1H.MM-00.index
+TODAY.1H.MM-00.meta
+TODAY.1H.MM-01.0
+TODAY.1H.MM-01.index
+TODAY.1H.MM-01.meta
+TODAY.1H.MM.0
+TODAY.1H.MM.index
+TODAY.1H.MM.meta
+TODAY.4H.MM-00.0
+TODAY.4H.MM-00.index
+TODAY.4H.MM-00.meta
+TODAY.4H.MM-01.0
+TODAY.4H.MM-01.index
+TODAY.4H.MM-01.meta
+YESTERDAY.0
+YESTERDAY.index
+YESTERDAY.meta
+control
+foo
+sed
+
+Differences ...
+10,18d9
+< NOW-3.1H.MM-00.0
+< NOW-3.1H.MM-00.index
+< NOW-3.1H.MM-00.meta
+< NOW-3.1H.MM-01.0
+< NOW-3.1H.MM-01.index
+< NOW-3.1H.MM-01.meta
+< NOW-3.1H.MM.0
+< NOW-3.1H.MM.index
+< NOW-3.1H.MM.meta
+43,51c34,36
+< YESTERDAY.1H.MM-00.0
+< YESTERDAY.1H.MM-00.index
+< YESTERDAY.1H.MM-00.meta
+< YESTERDAY.1H.MM-01.0
+< YESTERDAY.1H.MM-01.index
+< YESTERDAY.1H.MM-01.meta
+< YESTERDAY.1H.MM.0
+< YESTERDAY.1H.MM.index
+< YESTERDAY.1H.MM.meta
+---
+> YESTERDAY.0
+> YESTERDAY.index
+> YESTERDAY.meta
diff --git a/qa/533 b/qa/533
new file mode 100755
index 0000000..4268602
--- /dev/null
+++ b/qa/533
@@ -0,0 +1,64 @@
+#!/bin/sh
+# PCP QA Test No. 533
+# Exercise ipv6 socket open command in dbpmda
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$ipv6 || _notrun "No IPv6 support, so cannot test dbpmda IPv6 support"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+username=`id -u -n`
+port=`_get_port tcp 6261 6271`
+if [ -z "$port" ]
+then
+ echo "Arrggh ... no free TCP port in the range 6261 ... 6271"
+ netstat -an
+ exit
+fi
+
+_filter()
+{
+ tee -a $seq.full | \
+ sed \
+ -e "s/socket ipv6 $port/socket ipv6 PORT/g" \
+ -e "s/ipv6 port $port/ipv6 port PORT/g" \
+ -e "s/ value $pid/ value PID/g" \
+ | _filter_dumpresult
+}
+
+# real QA test starts here
+$PCP_PMDAS_DIR/sample/pmdasample -Dcontext,desperate -6 $port -U $username -l $tmp.log &
+pid=$!
+echo "PMDA sample PID = $pid" > $seq.full
+sleep 2 # allow socket setup to occur
+
+dbpmda -n $PCP_PMDAS_DIR/sample/root -ie <<End-of-File 2>&1 | _filter
+open socket ipv6 $port
+getdesc on
+desc sample.daemon_pid
+fetch sample.daemon_pid
+text sample.daemon_pid
+close
+End-of-File
+
+echo >>$seq.full
+echo "=== sample pmda log ===" >>$seq.full
+cat $tmp.log >>$seq.full
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/533.out b/qa/533.out
new file mode 100644
index 0000000..57a67c4
--- /dev/null
+++ b/qa/533.out
@@ -0,0 +1,19 @@
+QA output created by 533
+dbpmda> open socket ipv6 PORT
+Connect to PMDA on ipv6 port PORT
+dbpmda> getdesc on
+dbpmda> desc sample.daemon_pid
+PMID: 29.0.1
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+dbpmda> fetch sample.daemon_pid
+PMID(s): 29.0.1
+pmResult ... numpmid: 1
+ 29.0.1 (sample.daemon_pid): numval: 1 valfmt: 0 vlist[]:
+ value PID
+dbpmda> text sample.daemon_pid
+PMID: 29.0.1
+[Process id of PMDA daemon]
+The process id of PMDA daemon, -1 if the daemon is a DSO.
+dbpmda> close
+dbpmda>
diff --git a/qa/534 b/qa/534
new file mode 100755
index 0000000..b52209f
--- /dev/null
+++ b/qa/534
@@ -0,0 +1,71 @@
+#! /bin/sh
+# PCP QA Test No. 534
+# #566355 - Macros cannot be used to define a metric name
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f /tmp/echo-out $tmp.*; exit \$status" 0 1 2 3 15
+rm -f /tmp/echo-out
+
+# real QA test starts here
+cat <<'End-of-File' | pmie -v -t 2sec -T 1sec 2>$tmp.err
+// one level macro substitution
+//
+n1 = "sample.long";
+n2 = "long";
+n3 = "ple.long";
+n4 = "ple.long.";
+
+$n1.one + $n1.ten + $n1.million; // start of ident
+sample.$n2.one + sample.$n2.ten + sample.$n2.million; // middle of ident
+sam$n3.one + sam$n3.ten + sam$n3.million; // partial
+sam$'n4'one + sam$'n4'ten + sam$'n4'million; // macro-in-ident
+
+// nested macro substitution (from right)
+//
+m0 = "sample.long.ten+sample.long.million;";
+m1 = "+$m0";
+m2 = "one$m1";
+m3 = "long.$m2";
+m4 = "sample.$m3";
+$m4
+
+// nested macro substitution (from left)
+p0 = "sample.";
+p1 = "$'p0'long.";
+p2 = "$'p1'one+";
+p3 = "$p2$'p1'ten+";
+p4 = "$p3$'p1'million";
+$p4;
+
+// this is sick
+//
+d0 = "some";
+hash = "#'bin-";
+$'d0'_inst $'p0'bin $'hash'100' $'hash'200' $'hash'300' > 100
+ -> shell "echo >>/tmp/echo-out high:" " %i:%v";
+
+End-of-File
+
+# Allow some time fo echo-out to be created
+sleep 2
+
+cat /tmp/echo-out
+
+echo
+echo "errors? ..."
+_filter_pmie_log <$tmp.err
+
+# success, all done
+status=0
+exit
diff --git a/qa/534.out b/qa/534.out
new file mode 100644
index 0000000..7ea321d
--- /dev/null
+++ b/qa/534.out
@@ -0,0 +1,13 @@
+QA output created by 534
+expr_1: 1000011
+expr_2: 1000011
+expr_3: 1000011
+expr_4: 1000011
+expr_5: 1000011
+expr_6: 1000011
+expr_7: true
+
+high: bin-200:200 bin-300:300
+
+errors? ...
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
diff --git a/qa/535 b/qa/535
new file mode 100755
index 0000000..9780bfe
--- /dev/null
+++ b/qa/535
@@ -0,0 +1,158 @@
+#! /bin/sh
+# PCP QA Test No. 535
+# #535080 - dynamic indoms for pmie, uses sample.dynamic.*
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+control=$PCP_PMDAS_DIR/sample/dynamic.indom
+
+_cleanup()
+{
+ [ -f $control.qa-$seq ] && $sudo mv $control.qa-$seq $control
+ rm -f $tmp.*
+}
+
+$sudo rm -f $control.qa-$seq
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+[ -f $control ] && $sudo mv $control $control.qa-$seq
+
+# real QA test starts here
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+# prime the sample PMDA to refresh the dynamic indom
+#
+pminfo -f sample.dynamic >/dev/null 2>&1
+
+echo
+echo "=== pmprobe ==="
+
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+
+cat <<End-of-File | pmie -t 250msec >$tmp.out 2>&1 &
+some_inst ( sample.dynamic.counter > 0 ) -> shell "echo counter:" " %i:?";
+some_inst ( sample.dynamic.instant > 0 ) -> shell "echo instant:" " %i:?";
+some_inst ( sample.dynamic.discrete > 0 ) -> shell "echo discrete:" " %i:?";
+End-of-File
+pid=$!
+
+sleep 2
+
+# initial config
+#
+cat >$tmp.indom <<End-of-File
+10 one
+20 two
+30 three
+200 twenty
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+sleep 1
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+sleep 1
+
+# add one in the middle
+#
+cat >$tmp.indom <<End-of-File
+10 one
+20 two
+30 three
+40 four
+200 twenty
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+sleep 1
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+sleep 1
+
+# remove all but the first and last
+#
+cat >$tmp.indom <<End-of-File
+10 one
+200 twenty
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+sleep 1
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+sleep 1
+
+# re-instate previous state, with new ones at each end
+#
+cat >$tmp.indom <<End-of-File
+00 zero
+10 one
+20 two
+30 three
+40 four
+200 twenty
+210 twenty-one
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+sleep 1
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+sleep 1
+
+# replace every second one
+#
+cat >$tmp.indom <<End-of-File
+05 zero+
+10 one
+25 two+
+30 three
+45 four+
+200 twenty
+215 twenty-one+
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+sleep 1
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+sleep 1
+
+# replace every thing by one (different) instance
+#
+cat >$tmp.indom <<End-of-File
+1 singular
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+sleep 1
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+sleep 1
+
+$signal -s TERM $pid
+wait
+
+$sudo rm -f $control
+sleep 1
+pmprobe -I sample.dynamic.counter sample.dynamic.instant sample.dynamic.discrete
+sleep 1
+
+echo
+echo "=== pmie ==="
+
+LC_COLLATE=POSIX sort -u $tmp.out
+
+cp $tmp.out $seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/535.out b/qa/535.out
new file mode 100644
index 0000000..f8af0ec
--- /dev/null
+++ b/qa/535.out
@@ -0,0 +1,50 @@
+QA output created by 535
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== pmprobe ===
+sample.dynamic.counter 0
+sample.dynamic.instant 0
+sample.dynamic.discrete 0
+sample.dynamic.counter 4 "one" "two" "three" "twenty"
+sample.dynamic.instant 4 "one" "two" "three" "twenty"
+sample.dynamic.discrete 4 "one" "two" "three" "twenty"
+sample.dynamic.counter 5 "one" "two" "three" "four" "twenty"
+sample.dynamic.instant 5 "one" "two" "three" "four" "twenty"
+sample.dynamic.discrete 5 "one" "two" "three" "four" "twenty"
+sample.dynamic.counter 2 "one" "twenty"
+sample.dynamic.instant 2 "one" "twenty"
+sample.dynamic.discrete 2 "one" "twenty"
+sample.dynamic.counter 7 "zero" "one" "two" "three" "four" "twenty" "twenty-one"
+sample.dynamic.instant 7 "zero" "one" "two" "three" "four" "twenty" "twenty-one"
+sample.dynamic.discrete 7 "zero" "one" "two" "three" "four" "twenty" "twenty-one"
+sample.dynamic.counter 7 "zero+" "one" "two+" "three" "four+" "twenty" "twenty-one+"
+sample.dynamic.instant 7 "zero+" "one" "two+" "three" "four+" "twenty" "twenty-one+"
+sample.dynamic.discrete 7 "zero+" "one" "two+" "three" "four+" "twenty" "twenty-one+"
+sample.dynamic.counter 1 "singular"
+sample.dynamic.instant 1 "singular"
+sample.dynamic.discrete 1 "singular"
+sample.dynamic.counter 0
+sample.dynamic.instant 0
+sample.dynamic.discrete 0
+
+=== pmie ===
+counter: one:? twenty:?
+counter: one:? two:? three:? four:? twenty:?
+counter: one:? two:? three:? twenty:?
+counter: singular:?
+counter: zero+:? one:? two+:? three:? four+:? twenty:? twenty-one+:?
+counter: zero:? one:? two:? three:? four:? twenty:? twenty-one:?
+discrete: one:? twenty:?
+discrete: one:? two:? three:? four:? twenty:?
+discrete: one:? two:? three:? twenty:?
+discrete: singular:?
+discrete: zero+:? one:? two+:? three:? four+:? twenty:? twenty-one+:?
+discrete: zero:? one:? two:? three:? four:? twenty:? twenty-one:?
+instant: one:? twenty:?
+instant: one:? two:? three:? four:? twenty:?
+instant: one:? two:? three:? twenty:?
+instant: singular:?
+instant: zero+:? one:? two+:? three:? four+:? twenty:? twenty-one+:?
+instant: zero:? one:? two:? three:? four:? twenty:? twenty-one:?
diff --git a/qa/536 b/qa/536
new file mode 100755
index 0000000..bf10ad8
--- /dev/null
+++ b/qa/536
@@ -0,0 +1,77 @@
+#!/bin/sh
+# PCP QA Test No. 536
+# testing collectl2pcp functionality
+#
+# Copyright (c) 2013 Red Hat, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf testarchive.* $tmp.*; exit \$status" 0 1 2 3 15
+
+which collectl2pcp >$seq.full 2>&1 || _notrun collectl2pcp not installed
+
+C=./collectl
+TA=testarchive
+
+# real QA test starts here
+
+echo '## Testing host mismatch in headers'
+collectl2pcp -F $C/some_host.raw $C/wrong_host.raw $TA 2>&1
+
+echo '## Testing no archive overwrite'
+collectl2pcp $C/some_host.raw $TA
+
+echo '## Testing archive overwrite with F flag'
+collectl2pcp -F $C/some_host.raw $TA
+
+echo '## Testing correct temporal order of header timestamps'
+collectl2pcp -F $C/some_host.raw $C/some_host_later.raw $TA
+
+echo '## Testing incorrect temporal order of header timestamps'
+collectl2pcp -F $C/some_host_later.raw $C/some_host.raw $TA
+
+echo '## Testing timezone in archive label'
+collectl2pcp -F $C/some_host.raw $TA
+pmdumplog -L $TA | grep timezone
+awk '$6 == "TZ:" {print "collectl header timezone", $7}' $C/some_host.raw
+
+echo '## Testing RHEL64 conversion'
+collectl2pcp -F $C/rhel6.raw.gz $TA
+
+echo '## Testing Debian (sid) conversion, defaults'
+collectl2pcp -F $C/debian_sid_defaults.raw.gz $TA
+
+echo '## Testing load average metric values'
+pmval -z -f 2 -t 10 -a $TA kernel.all.load
+
+echo '## Testing Debian (sid) conversion, detailed'
+collectl2pcp -F $C/debian_sid_detailed.raw.gz $TA
+
+echo '## Testing network interface instance domain'
+pmprobe -I -a $TA network.interface.in.bytes
+
+echo '## Testing some hinv metrics'
+collectl2pcp -F $C/some_host.raw $TA
+pminfo -a $TA -f hinv.ncpu hinv.ndisk
+
+echo '## Testing handling of corrupted or truncated metric values'
+collectl2pcp -F $C/truncated.raw $TA 2>&1
+
+echo '## Testing per-CPU metrics'
+collectl2pcp -F $C/some_host.raw $TA
+pmval -z -r -t 10 -a $TA kernel.percpu.cpu.user'[cpu0]'
+awk '/cpu0/ {print "cpu0 raw msec value", $2 * 1000 / 100}' $C/some_host.raw
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/536.out b/qa/536.out
new file mode 100644
index 0000000..163a77d
--- /dev/null
+++ b/qa/536.out
@@ -0,0 +1,64 @@
+QA output created by 536
+## Testing host mismatch in headers
+FATAL Error: host mismatch: "./collectl/wrong_host.raw" contains data for host "wronghost", not "somehost"
+## Testing no archive overwrite
+__pmLogNewFile: "testarchive.index" already exists, not over-written
+Error: pmiWrite failed: error -17: File exists
+Error: File exists
+## Testing archive overwrite with F flag
+## Testing correct temporal order of header timestamps
+## Testing incorrect temporal order of header timestamps
+FATAL Error: input file order mismatch: "./collectl/some_host.raw" contains data at 1368076323, prior to 1378076323
+## Testing timezone in archive label
+Archive timezone: +1000
+collectl header timezone +1000
+## Testing RHEL64 conversion
+## Testing Debian (sid) conversion, defaults
+## Testing load average metric values
+Note: timezone set to local timezone of host "verge" from archive
+
+metric: kernel.all.load
+archive: testarchive
+host: verge
+start: Thu Jun 6 08:49:25 2013
+end: Thu Jun 6 08:49:55 2013
+semantics: instantaneous value
+units: none
+samples: 4
+interval: 10.00 sec
+
+ 1 minute 5 minute 15 minute
+08:49:25.001 0.05 0.06 0.05
+08:49:35.001 0.04 0.06 0.05
+08:49:45.001 0.03 0.05 0.05
+08:49:55.001 0.03 0.05 0.05
+## Testing Debian (sid) conversion, detailed
+## Testing network interface instance domain
+network.interface.in.bytes 3 "lo" "eth1" "wlan0"
+## Testing some hinv metrics
+
+hinv.ncpu
+ value 4
+
+hinv.ndisk
+ value 5
+## Testing handling of corrupted or truncated metric values
+Warning: put_str_value "kernel.all.load" inst:"15 minute" value:"somecrap" failed: err=-12362 Impossible value or scale conversion
+## Testing per-CPU metrics
+Note: timezone set to local timezone of host "somehost" from archive
+
+metric: kernel.percpu.cpu.user
+archive: testarchive
+host: somehost
+start: Thu May 9 15:13:00 2013
+end: Thu May 9 15:13:10 2013
+semantics: cumulative counter
+units: millisec
+samples: 2
+interval: 10.00 sec
+
+ cpu0
+15:13:00.001 244885950
+15:13:10.001 244885960
+cpu0 raw msec value 244885950
+cpu0 raw msec value 244885960
diff --git a/qa/537 b/qa/537
new file mode 100755
index 0000000..2d7346e
--- /dev/null
+++ b/qa/537
@@ -0,0 +1,39 @@
+#!/bin/sh
+# PCP QA Test No. 537
+# Exercises handling of pmimport PMID number boundaries.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3801 ] || _notrun "Too-old libpcp_import version"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+testdir=$tmp.dir
+mkdir $testdir || exit 1
+cd $testdir
+
+echo "Generating test archive"
+perl $here/src/import_limit_test.perl
+
+echo "Dumping test archive metric names and IDs"
+pminfo -m -a test-limit | \
+ LC_COLLATE=POSIX sort -n -k 2 | \
+ tee -a $seq.full | \
+ head -20
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/537.out b/qa/537.out
new file mode 100644
index 0000000..f95bcb2
--- /dev/null
+++ b/qa/537.out
@@ -0,0 +1,23 @@
+QA output created by 537
+Generating test archive
+Dumping test archive metric names and IDs
+t_1020 PMID: 245.0.1021
+t_1021 PMID: 245.0.1022
+t_1022 PMID: 245.0.1023
+t_1023 PMID: 245.1.0
+t_1024 PMID: 245.1.1
+t_1025 PMID: 245.1.2
+t_1026 PMID: 245.1.3
+t_1027 PMID: 245.1.4
+t_1028 PMID: 245.1.5
+t_1029 PMID: 245.1.6
+x_0 PMID: 245.0.1
+x_1 PMID: 245.0.2
+x_10 PMID: 245.0.11
+x_100 PMID: 245.0.101
+x_1000 PMID: 245.0.1001
+x_1001 PMID: 245.0.1002
+x_1002 PMID: 245.0.1003
+x_1003 PMID: 245.0.1004
+x_1004 PMID: 245.0.1005
+x_1005 PMID: 245.0.1006
diff --git a/qa/538 b/qa/538
new file mode 100755
index 0000000..5b3541c
--- /dev/null
+++ b/qa/538
@@ -0,0 +1,81 @@
+#! /bin/sh
+# PCP QA Test No. 538
+# check pmie atexit problem
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# create our own tmpdir to ensure we can write to it
+tmpdir=/tmp/$seq.$$
+rm -rf $tmpdir
+mkdir -p $tmpdir/pmlogger
+export PCP_TMP_DIR=$tmpdir
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+
+_cleanup()
+{
+ rm -fr $tmpdir
+ pmstore sample.write_me 2 >/dev/null # reset value
+}
+
+tmp=$tmpdir/$$
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+username=`id -u -n`
+sync
+pmstore sample.write_me 2 >/dev/null # initialise value
+
+cat <<End-of-File >$tmp.conf
+( sample.write_me != 2 ) -> shell "echo sample.write_me changed 1>&2" " %v != 2";
+End-of-File
+
+# real QA test starts here
+pmieopts="-b"
+id pcp >/dev/null 2>&1 && pmieopts="$pmieopts -U $username"
+pmie -t 0.5sec $pmieopts -l $tmp.out $tmp.conf &
+pid=$!
+
+sleep 2
+pmstore sample.write_me 5 >/dev/null
+sleep 2
+
+echo
+echo "PMIE IS RUNNING"
+echo "=== check data file still exists..."
+[ ! -f $PCP_TMP_DIR/pmie/$pid ] && echo "urk, data file has vanished!"
+echo "=== check log file after first exit..."
+_filter_pmie_log < $tmp.out | uniq
+
+$signal -s TERM $pid
+wait
+
+echo
+echo "PMIE HAS NOW EXITED"
+echo
+echo "=== check data file has gone..."
+[ -f $PCP_TMP_DIR/pmie/$pid ] && echo "urk, data file is still there!"
+echo "=== check log file after real exit..."
+cp $tmp.out $seq.full
+
+# $PCP_AWK_PROG filter filters out repeated messages from pmie - including the
+# odd one that occurs after or between the termination messages
+
+_filter_pmie_log < $tmp.out \
+| $PCP_AWK_PROG '
+ /write_me/ { if ($0 != before) print
+ before=$0
+ next
+ }
+ { print }
+'
+
+# success, all done
+status=0
+exit
diff --git a/qa/538.out b/qa/538.out
new file mode 100644
index 0000000..4344b80
--- /dev/null
+++ b/qa/538.out
@@ -0,0 +1,22 @@
+QA output created by 538
+
+PMIE IS RUNNING
+=== check data file still exists...
+=== check log file after first exit...
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+sample.write_me changed 5 != 2
+
+PMIE HAS NOW EXITED
+
+=== check data file has gone...
+=== check log file after real exit...
+Log for pmie on HOST started DATE
+
+pmie: PID,HOST
+
+sample.write_me changed 5 != 2
+
+Log finished DATE
diff --git a/qa/539 b/qa/539
new file mode 100755
index 0000000..27b58cf
--- /dev/null
+++ b/qa/539
@@ -0,0 +1,52 @@
+#! /bin/sh
+# PCP QA Test No. 539
+# pmpost race condition between check modified date and lock
+# #665984
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ [ -f $PCP_LOG_DIR/NOTICES.qa.$seq ] && $sudo mv $PCP_LOG_DIR/NOTICES.qa.$seq $PCP_LOG_DIR/NOTICES
+ rm -f $tmp.*
+}
+
+_filter()
+{
+ echo "DATE lines (expect 1) ..."
+ sed -n <$1 \
+ -e '/^DATE:/s/ .*/ .../p'
+ echo "pmpost lines (expect 20) ..."
+ sed -n <$1 \
+ -e "/qa-$seq/s/.*qa/... qa/p"
+}
+
+$sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.qa.$seq
+$sudo touch -t 199701020304.00 $PCP_LOG_DIR/NOTICES
+
+# real QA test starts here
+for i in 1 2 3 4 5
+do
+ $sudo $PCP_BINADM_DIR/pmpost qa-$seq & $sudo $PCP_BINADM_DIR/pmpost qa-$seq &
+ $sudo $PCP_BINADM_DIR/pmpost qa-$seq & $sudo $PCP_BINADM_DIR/pmpost qa-$seq &
+done
+
+wait
+
+_filter $PCP_LOG_DIR/NOTICES
+
+# success, all done
+status=0
+exit
diff --git a/qa/539.out b/qa/539.out
new file mode 100644
index 0000000..be824ff
--- /dev/null
+++ b/qa/539.out
@@ -0,0 +1,24 @@
+QA output created by 539
+DATE lines (expect 1) ...
+DATE: ...
+pmpost lines (expect 20) ...
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
+... qa-539
diff --git a/qa/540 b/qa/540
new file mode 100755
index 0000000..dd16586
--- /dev/null
+++ b/qa/540
@@ -0,0 +1,55 @@
+#! /bin/sh
+# PCP QA Test No. 540
+# Check Linux hinv.map.lvname metric
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ $PCP_PLATFORM = linux ] || _notrun "Depends on Linux logical volume manager"
+[ $PCP_VER -ge 3801 ] || _notrun "Requires more recent Linux kernel PMDA"
+[ -d /dev/mapper ] || _notrun "Requires kernel support for Device Mapper"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo >$seq.full
+
+# Get the device mapper names from /dev/mapper
+#
+echo "== /dev/mapper" >> $seq.full
+ls -l /dev/mapper | tee -a $seq.full \
+ | $PCP_AWK_PROG '/^l/ { print $11, $9 }' \
+ | sed -e 's/^\.\.\///' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.dev.mapper
+
+# Get the device mapper names from pmdalinux
+#
+echo "== pmdalinux" >> $seq.full
+pminfo -f hinv.map.lvname | tee -a $seq.full \
+ | $PCP_AWK_PROG '/inst/ { print $4, $6 }' \
+ | tr -d '"]' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.pcp.indom
+
+if diff $tmp.pcp.indom $tmp.dev.mapper >$tmp.indom.diff
+then
+ echo "Device mapper instance matches expected values"
+ status=0
+else
+ echo "Instance domain for hinv.map.lvname incorrect:"
+ echo "diff output (PCP first, then ifconfig):"
+ cat $tmp.indom.diff
+fi
+
+exit
diff --git a/qa/540.out b/qa/540.out
new file mode 100644
index 0000000..853e934
--- /dev/null
+++ b/qa/540.out
@@ -0,0 +1,2 @@
+QA output created by 540
+Device mapper instance matches expected values
diff --git a/qa/541 b/qa/541
new file mode 100755
index 0000000..02aef1a
--- /dev/null
+++ b/qa/541
@@ -0,0 +1,86 @@
+#! /bin/sh
+# PCP QA Test No. 541
+# another variant on ...
+# #535080 - dynamic indoms for pmie, uses sample.dynamic.*
+# this time, the problem is when the intial instance domain contains
+# one instance, the pmie expression tree uses the 1:1 operator instead
+# of the n:1 operator
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+control=$PCP_PMDAS_DIR/sample/dynamic.indom
+
+_cleanup()
+{
+ [ -f $control.$seq ] && $sudo mv $control.$seq $control
+ rm -f $tmp.*
+}
+
+$sudo rm -f $control.$seq
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+[ -f $control ] && $sudo mv $control $control.$seq
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+# prime the sample PMDA to refresh the dynamic indom
+#
+pminfo -f sample.dynamic >/dev/null 2>&1
+
+for op in some_inst all_inst
+do
+ echo
+ echo "=== operator $op ==="
+
+ # just one instance
+ #
+ cat >$tmp.indom <<End-of-File
+0 zero
+End-of-File
+ $sudo rm -f $control
+ $sudo cp $tmp.indom $control
+ pmprobe -I sample.dynamic.counter
+
+ cat <<End-of-File | pmie -t 250msec >$tmp.out 2>&1 &
+$op ( sample.dynamic.counter > 0 ) -> shell "echo counter:" " %i:?";
+End-of-File
+ pid=$!
+
+ sleep 3
+
+ # replace one instance by two others
+ #
+ cat >$tmp.indom <<End-of-File
+1 one
+2 two
+End-of-File
+ $sudo rm -f $control
+ $sudo cp $tmp.indom $control
+ pmprobe -I sample.dynamic.counter
+ sleep 2
+
+ $signal -s TERM $pid
+ wait
+
+ uniq $tmp.out
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/541.out b/qa/541.out
new file mode 100644
index 0000000..055c30f
--- /dev/null
+++ b/qa/541.out
@@ -0,0 +1,16 @@
+QA output created by 541
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== operator some_inst ===
+sample.dynamic.counter 1 "zero"
+sample.dynamic.counter 2 "one" "two"
+counter: zero:?
+counter: one:? two:?
+
+=== operator all_inst ===
+sample.dynamic.counter 1 "zero"
+sample.dynamic.counter 2 "one" "two"
+counter: zero:?
+counter: one:? two:?
diff --git a/qa/542 b/qa/542
new file mode 100755
index 0000000..b77ac9b
--- /dev/null
+++ b/qa/542
@@ -0,0 +1,87 @@
+#! /bin/sh
+# PCP QA Test No. 542
+# pmdate buffer overflow ... #666344
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for fmt in "%H:%M" "%A %B" "%c" "some stuff to pad: %c"
+do
+ echo
+ echo "=== $fmt ==="
+ match=false
+ echo >$tmp.err
+
+ # try 3 times to avoid clock changes between the date(1) and pmdate(1)
+ # executions
+ #
+ for i in 1 2 3
+ do
+ # need to dodge AM/PM and timezone abbreviation and move year
+ # to the end and change "16 May" to "May 16", and deal with
+ # leading spaces for days before the 10th, for %c on Linux
+ #
+ x1=`date +"$fmt" \
+ | sed \
+ -e 's/ AM//' \
+ -e '/ PM/{
+s/ PM//
+s/ 00:/ 12:/
+s/ 01:/ 13:/
+s/ 02:/ 14:/
+s/ 03:/ 15:/
+s/ 04:/ 16:/
+s/ 05:/ 17:/
+s/ 06:/ 18:/
+s/ 07:/ 19:/
+s/ 08:/ 20:/
+s/ 09:/ 21:/
+s/ 10:/ 22:/
+s/ 11:/ 23:/
+}' \
+ -e 's/ [A-Z][A-Z][A-Z]$//' \
+ -e 's/ \([1-2][0-9][0-9][0-9]\) \(.*\)/ \2 \1/' \
+ -e 's/\([A-Z][a-z][a-z]\) 0\([1-9]\) /\1 \2 /' \
+ -e 's/\([ 1-3][0-9]\) \([A-Z][a-z][a-z]\)/\2 \1/'`
+ x2=`pmdate "$fmt"`
+ if [ "$x1" = "$x2" ]
+ then
+ match=true
+ break
+ else
+ echo "date -> \"`date +"$fmt"`\" -> \"$x1\"" >>$tmp.err
+ echo "pmdate -> \"$x2\"" >>$tmp.err
+ fi
+ done
+ if $match
+ then
+ echo "match"
+ else
+ echo "errors ..."
+ cat $tmp.err
+ status=1
+ fi
+done
+
+# error checks
+#
+echo
+echo "=== error checks ==="
+
+$sudo rm -f core* $seq.core*
+pmdate "%A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B %A%B"
+_check_core
+
+exit
diff --git a/qa/542.out b/qa/542.out
new file mode 100644
index 0000000..fec42f9
--- /dev/null
+++ b/qa/542.out
@@ -0,0 +1,16 @@
+QA output created by 542
+
+=== %H:%M ===
+match
+
+=== %A %B ===
+match
+
+=== %c ===
+match
+
+=== some stuff to pad: %c ===
+match
+
+=== error checks ===
+pmdate: format too long
diff --git a/qa/543 b/qa/543
new file mode 100755
index 0000000..4149da8
--- /dev/null
+++ b/qa/543
@@ -0,0 +1,90 @@
+#! /bin/sh
+# PCP QA Test No. 543
+# exercises the -m option to pmlogger_daily
+#
+# Note: this test will fail in the few days after a daylight savings
+# change as the sample NOTICES file is not quite right
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=`hostname`
+NOTICES=$PCP_LOG_DIR/NOTICES
+MAIL=/var/mail/pcpqa
+HOME=`$PCP_AWK_PROG -F: '/^pcpqa/ { print $6 }' /etc/passwd`
+FORWARD="$HOME/.forward"
+
+echo | $PCP_BINADM_DIR/telnet-probe localhost 25 || _notrun "Noone listening on port 25"
+
+_cleanup()
+{
+ # put stuff we moved back in place
+ [ -f $tmp.notices ] && $sudo mv $tmp.notices $NOTICES
+ [ -f $tmp.mail ] && $sudo mv $tmp.mail $MAIL
+ [ -f $tmp.forward ] && $sudo mv $tmp.forward $FORWARD
+ rm -f $tmp.*
+}
+
+_filter()
+{
+ sed -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATESTAMP/' \
+ -e 's/^[0-9][0-9]:[0-9][0-9]/TIME/' \
+ -e "s,$PCP_RC_DIR,\$PCP_RC_DIR,"
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+# create a fake NOTICES file containing time-boundary entries
+#
+twodaysago=`pmdate -2d '%a %b %e %T %Z %Y'`
+earlyyesterday=`pmdate -1d '%a %b %e %T %Y'`
+timenow=`pmdate '%a %b %e %T %Y'`
+oneminago=`pmdate -1M '%H:%M'`
+intwomins=`pmdate +5M '%H:%M'`
+infourmins=`pmdate +6M '%H:%M'`
+
+# expect to get none from two days ago, 2 of 3 from yesterday,
+# and all (1) from today
+#
+cat >$tmp.new <<EOF
+Started by pmlogger_daily: $twodaysago
+09:38 stop pmcd from $PCP_RC_DIR/pcp
+11:54 start pmcd from $PCP_RC_DIR/pcp
+
+DATE: $earlyyesterday
+$oneminago stop pmcd from $PCP_RC_DIR/pcp
+$intwomins start pmcd from $PCP_RC_DIR/pcp
+$infourmins pmie: busy disk spindle 49.4:dks0d1@rattle
+
+DATE: $timenow
+$oneminago stop pmcd from $PCP_RC_DIR/pcp
+EOF
+
+# real QA test starts here
+$sudo mv $NOTICES $tmp.notices
+[ -f $MAIL ] && $sudo mv $MAIL $tmp.mail
+[ -f $FORWARD ] && $sudo mv $FORWARD $tmp.forward
+cp /dev/null $tmp.noconf
+$sudo cp $tmp.new $NOTICES
+cp $NOTICES $seq.full
+echo >>$seq.full
+$sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.noconf -m pcpqa@$host
+
+sleep 2 # let mail arrive (shouldn't take long)
+
+# see what we got ...
+cat $PCP_LOG_DIR/NOTICES.daily | tee -a $seq.full | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/543.out b/qa/543.out
new file mode 100644
index 0000000..7e9e814
--- /dev/null
+++ b/qa/543.out
@@ -0,0 +1,6 @@
+QA output created by 543
+DATE: DATESTAMP
+TIME start pmcd from $PCP_RC_DIR/pcp
+TIME pmie: busy disk spindle 49.4:dks0d1@rattle
+DATE: DATESTAMP
+TIME stop pmcd from $PCP_RC_DIR/pcp
diff --git a/qa/544 b/qa/544
new file mode 100755
index 0000000..5be4db2
--- /dev/null
+++ b/qa/544
@@ -0,0 +1,164 @@
+#!/bin/sh
+# PCP QA Test No. 544
+# testing collectl2pcp metrics extraction (proc indom, in particular)
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf testarchive.* $tmp.*; exit \$status" 0 1 2 3 15
+
+which collectl2pcp >$seq.full 2>&1 || _notrun collectl2pcp not installed
+
+# real QA test starts here
+
+C=./collectl
+TA=testarchive
+
+cat > $tmp.general <<End-of-General
+disk.dev.avactive
+disk.dev.aveq
+disk.dev.read
+disk.dev.read_bytes
+disk.dev.write
+disk.dev.write_bytes
+hinv.machine
+hinv.ncpu
+hinv.ndisk
+hinv.ninterface
+hinv.pagesize
+hinv.physmem
+kernel.all.cpu.idle
+kernel.all.cpu.intr
+kernel.all.cpu.irq.hard
+kernel.all.cpu.irq.soft
+kernel.all.cpu.sys
+kernel.all.cpu.user
+kernel.all.cpu.wait.total
+kernel.all.hz
+kernel.all.intr
+kernel.all.load
+kernel.all.nprocs
+kernel.uname.distro
+kernel.uname.machine
+kernel.uname.nodename
+kernel.uname.release
+kernel.uname.sysname
+mem.physmem
+mem.util.active
+mem.util.active_anon
+mem.util.active_file
+mem.util.anonpages
+mem.util.bounce
+mem.util.bufmem
+mem.util.cached
+mem.util.commitLimit
+mem.util.committed_AS
+mem.util.corrupthardware
+mem.util.directMap2M
+mem.util.directMap4k
+mem.util.dirty
+mem.util.free
+mem.util.hugepagesFree
+mem.util.hugepagesRsvd
+mem.util.hugepagesSurp
+mem.util.hugepagesTotal
+mem.util.inactive
+mem.util.inactive_anon
+mem.util.inactive_file
+mem.util.kernelStack
+mem.util.mapped
+mem.util.mlocked
+mem.util.NFS_Unstable
+mem.util.pageTables
+mem.util.shmem
+mem.util.slab
+mem.util.slabReclaimable
+mem.util.slabUnreclaimable
+mem.util.swapCached
+mem.util.swapFree
+mem.util.swapTotal
+mem.util.unevictable
+mem.util.vmallocChunk
+mem.util.vmallocTotal
+mem.util.vmallocUsed
+mem.util.writeback
+End-of-General
+
+cat > $tmp.cpus <<End-of-CPUs
+kernel.percpu.cpu.guest
+kernel.percpu.cpu.idle
+kernel.percpu.cpu.intr
+kernel.percpu.cpu.irq.hard
+kernel.percpu.cpu.irq.soft
+kernel.percpu.cpu.nice
+kernel.percpu.cpu.steal
+kernel.percpu.cpu.sys
+kernel.percpu.cpu.user
+kernel.percpu.cpu.wait.total
+End-of-CPUs
+
+cat > $tmp.disks <<End-of-Disks
+network.interface.in.bytes
+network.interface.in.packets
+network.interface.out.bytes
+network.interface.out.packets
+End-of-Disks
+
+cat > $tmp.nets <<End-of-Nets
+network.interface.in.bytes
+network.interface.in.packets
+network.interface.out.bytes
+network.interface.out.packets
+End-of-Nets
+
+cat > $tmp.procs <<End-of-Procs
+proc.psinfo.cmd
+proc.psinfo.psargs
+End-of-Procs
+
+checksums()
+{
+ $sudo rm -f $tmp.out.*
+
+ pminfo -f -a $TA `cat $tmp.general` | tee -a $seq.full > $tmp.out.general
+ pminfo -f -a $TA `cat $tmp.cpus` | tee -a $seq.full > $tmp.out.cpus
+ pminfo -f -a $TA `cat $tmp.disks` | tee -a $seq.full > $tmp.out.disks
+ pminfo -f -a $TA `cat $tmp.nets` | tee -a $seq.full > $tmp.out.nets
+ pminfo -f -a $TA `cat $tmp.procs` | tee -a $seq.full > $tmp.out.procs
+
+ SUM="sum -r"
+ [ $PCP_PLATFORM = darwin ] && SUM=sum
+ $SUM $tmp.out.* \
+ | sed -e 's/[ ][ ]*[0-9]*[ ]/ /' \
+ | sed -e 's/^00*//' \
+ | while read chksum path
+ do
+ printf "%05d %s\n" $chksum $path | sed -e "s,$tmp,TMP,g"
+ done
+ echo >> $seq.full
+}
+
+# real QA test starts here
+
+echo '## Testing RHEL6.4 inst/value extraction, checksums:' | tee -a $seq.full
+collectl2pcp -F $C/rhel6.raw.gz $TA
+checksums
+
+echo '## Testing Debian inst/value extraction, checksums:' | tee -a $seq.full
+collectl2pcp -F $C/debian_sid_detailed.raw.gz $TA
+checksums
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/544.out b/qa/544.out
new file mode 100644
index 0000000..c96de26
--- /dev/null
+++ b/qa/544.out
@@ -0,0 +1,13 @@
+QA output created by 544
+## Testing RHEL6.4 inst/value extraction, checksums:
+40722 TMP.out.cpus
+44436 TMP.out.disks
+34420 TMP.out.general
+44436 TMP.out.nets
+42863 TMP.out.procs
+## Testing Debian inst/value extraction, checksums:
+14808 TMP.out.cpus
+30729 TMP.out.disks
+24005 TMP.out.general
+30729 TMP.out.nets
+27879 TMP.out.procs
diff --git a/qa/545 b/qa/545
new file mode 100755
index 0000000..e1036ef
--- /dev/null
+++ b/qa/545
@@ -0,0 +1,32 @@
+#! /bin/sh
+# PCP QA Test No. 545
+# check pmsocks handling for quoted arguments
+# See bug #665408
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+if [ "`pmsocks echo ok 2>&1`" != ok ]
+then
+ echo "pmsocks is not installed and/or not configured" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+SOCKS_SERVER=198.29.75.75
+export SOCKS_SERVER
+echo "Expect the following line to be \"4\""
+pmsocks date "+%a %b %e %Y" | wc -w | sed -e 's/^[ \t]*//;'
+status=0
diff --git a/qa/545.out b/qa/545.out
new file mode 100644
index 0000000..14d03fd
--- /dev/null
+++ b/qa/545.out
@@ -0,0 +1,3 @@
+QA output created by 545
+Expect the following line to be "4"
+4
diff --git a/qa/546 b/qa/546
new file mode 100755
index 0000000..b4e2297
--- /dev/null
+++ b/qa/546
@@ -0,0 +1,102 @@
+#!/bin/sh
+# PCP QA Test No. 546
+# Check parsing of PMCD access section user/group extensions with errors
+#
+# Copyright (c) 2013 Red Hat.
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.secure
+
+_get_libpcp_config
+$unix_domain_sockets || _notrun "No unix domain socket support available"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ _filter_pmcd_log \
+ | sed \
+ -e "s:$tmp:TMP:g" \
+ -e "s:$userid $username:USERID USERNAME:g" \
+ -e "s:$groupid $groupname:GROUPID GROUPNAME:g" \
+ -e "s:$userid\($username\):USERID(USERNAME):g" \
+ -e "s:$groupid\($groupname\):GROUPID(GROUPNAME):g" \
+
+}
+
+# new access control cases, not checked in QA 051 or 454
+# real QA test starts here
+export PCP_PMCDCONF_PATH=$tmp.conf
+export PMCD_PORT=9876
+export PMCD_SOCKET=$tmp.pmcd.socket
+
+# user test cases
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow user nosuchuser ;
+allow user $username : ;
+allow user $username : fetch, ;
+allow user $username : fetch, maximum 7 connections, store, maximum 3 connections;
+allow user $username : fetch, maximum foo connections;
+End-of-File
+pmcd -f -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow user $username : store
+End-of-File
+pmcd -f -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow user $username, nosuchuser
+End-of-File
+pmcd -f -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+# group test cases
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow group nosuchgroup ;
+allow group $groupname : ;
+allow group $groupname : fetch, ;
+allow group $groupname : fetch, maximum 7 connections, store, maximum 3 connections;
+allow group $groupname : fetch, maximum foo connections;
+End-of-File
+pmcd -f -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow group $groupname : store
+End-of-File
+pmcd -f -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
+[access]
+allow group $groupname, nosuchgroup
+End-of-File
+pmcd -f -x $seq.full -l $tmp.log
+_filter <$tmp.log
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/546.out b/qa/546.out
new file mode 100644
index 0000000..e56d8b5
--- /dev/null
+++ b/qa/546.out
@@ -0,0 +1,45 @@
+QA output created by 546
+Log for pmcd on HOST started DATE
+
+pmcd config[line 3]: Error: ',' or ':' expected after "nosuchuser"
+pmcd config[line 4]: Error: empty or incomplete permissions list
+pmcd config[line 5]: Error: misplaced (trailing) ',' in permission list
+pmcd config[line 6]: Error: connection limit already specified
+pmcd config[line 7]: Error: maximum connection limit must be a positive number
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 4]: Error: ',' or ';' expected in permission list
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 4]: Error: ',' or ':' expected after "nosuchuser"
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 3]: Error: ',' or ':' expected after "nosuchgroup"
+pmcd config[line 4]: Error: empty or incomplete permissions list
+pmcd config[line 5]: Error: misplaced (trailing) ',' in permission list
+pmcd config[line 6]: Error: connection limit already specified
+pmcd config[line 7]: Error: maximum connection limit must be a positive number
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 4]: Error: ',' or ';' expected in permission list
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
+Log for pmcd on HOST started DATE
+
+pmcd config[line 4]: Error: ',' or ':' expected after "nosuchgroup"
+[DATE] pmcd(PID) Error: pmcd not started due to errors!
+
+Log finished DATE
diff --git a/qa/547 b/qa/547
new file mode 100755
index 0000000..4125019
--- /dev/null
+++ b/qa/547
@@ -0,0 +1,36 @@
+#!/bin/sh
+# PCP QA Test No. 547
+# Exercise past security flaws in PCP protocol implementation
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=localhost
+timeout=2
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cd secure
+for crash_test in crash-*
+do
+ echo "$crash_test checking: " | tee -a $here/$seq.full
+ python $crash_test $host
+ pmcd_wait -t $timeout -h $host
+ sts=$?
+ echo "$crash_test complete sts=$sts" | tee -a $here/$seq.full
+ [ $sts -ne 0 ] && exit
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/547.out b/qa/547.out
new file mode 100644
index 0000000..26a8995
--- /dev/null
+++ b/qa/547.out
@@ -0,0 +1,17 @@
+QA output created by 547
+crash-cred checking:
+crash-cred complete sts=0
+crash-fetch checking:
+crash-fetch complete sts=0
+crash-instancereq checking:
+crash-instancereq complete sts=0
+crash-namereq-child checking:
+crash-namereq-child complete sts=0
+crash-namereq-traverse checking:
+crash-namereq-traverse complete sts=0
+crash-pmns-names checking:
+crash-pmns-names complete sts=0
+crash-profile checking:
+crash-profile complete sts=0
+crash-profile-instances checking:
+crash-profile-instances complete sts=0
diff --git a/qa/548 b/qa/548
new file mode 100755
index 0000000..832470f
--- /dev/null
+++ b/qa/548
@@ -0,0 +1,46 @@
+#! /bin/sh
+# PCP QA Test No. 548
+# nomatch_inst for pmie
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmie -t 1sec -T 1sec <<End-of-File 2>/dev/null | LC_COLLATE=POSIX sort -u
+
+some_inst
+ match_inst "bin-[123579]00"
+ sample.bin >= 500
+-> shell "echo 'match_inst " " %i" "'";
+
+some_inst
+ ! match_inst "bin-[123579]00"
+ sample.bin >= 500
+-> shell "echo '! match_inst " " %i" "'";
+
+some_inst
+ nomatch_inst "bin-[123579]00"
+ sample.bin >= 500
+-> shell "echo 'nomatch_inst " " %i" "'";
+
+some_inst
+ ! nomatch_inst "bin-[123579]00"
+ sample.bin >= 500
+-> shell "echo '! nomatch_inst " " %i" "'";
+
+End-of-File
+
+# success, all done
+status=0
+exit
diff --git a/qa/548.out b/qa/548.out
new file mode 100644
index 0000000..5bc9021
--- /dev/null
+++ b/qa/548.out
@@ -0,0 +1,5 @@
+QA output created by 548
+! match_inst bin-100 bin-200 bin-300 bin-400 bin-600 bin-800
+! nomatch_inst bin-100 bin-200 bin-300 bin-400 bin-500 bin-700 bin-900
+match_inst bin-500 bin-700 bin-900
+nomatch_inst bin-600 bin-800
diff --git a/qa/549 b/qa/549
new file mode 100755
index 0000000..6b41d1b
--- /dev/null
+++ b/qa/549
@@ -0,0 +1,42 @@
+#! /bin/sh
+# PCP QA Test No. 549
+# Bad checking for non-numeric types in pmie
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+LOCALHOST=`hostname`
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmie -v -t 1sec -T 2sec 2>&1 <<End-of-File \
+| LC_COLLATE=POSIX sort -u \
+| sed \
+ -e '/Info: evaluator exiting/d' \
+ -e "s/$LOCALHOST/HOST/g" \
+ -e "s/local:/HOST/g" \
+ -e '/^pmie: /s/- on line/- near line/'
+notknown = sample.bad.unknown + 1;
+nosupport = sample.bad.nosupport - sample.long.one;
+noinst = sample.noinst / 1;
+needprofile = 100 * sample.needprofile;
+long = sample.long.one == 1;
+longlong = sample.longlong.one + 3;
+float = sample.float.one * 10;
+double = sample.double.one - 1;
+string = sample.string.hullo == "abc";
+aggregate = sample.aggregate.hullo / 4;
+End-of-File
+
+# success, all done
+status=0
+exit
diff --git a/qa/549.out b/qa/549.out
new file mode 100644
index 0000000..27fc638
--- /dev/null
+++ b/qa/549.out
@@ -0,0 +1,16 @@
+QA output created by 549
+
+arithmetic expression expected to follow ==
+double: 0
+float: 10
+long: true
+longlong: 4
+needprofile: ?
+noinst: ?
+nosupport: ?
+notknown: ?
+pmLookupDesc failed: Unknown or illegal metric identifier
+pmie: metric sample.aggregate.hullo has non-numeric type
+pmie: metric sample.bad.unknown not currently available from host HOST
+pmie: metric sample.string.hullo has non-numeric type
+pmie: syntax error - near line 9 of standard input
diff --git a/qa/550 b/qa/550
new file mode 100755
index 0000000..65e5843
--- /dev/null
+++ b/qa/550
@@ -0,0 +1,52 @@
+#!/bin/sh
+# PCP QA Test No. 550
+# Exercise fixes for remotely triggered memory leaks in pmcd
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=localhost
+iterate=1000
+timeout=2
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+pmcd_memory()
+{
+ pmprobe -h $host -v pmcd.datasize \
+ | tee -a $here/$seq.full \
+ | awk '{ print $3 }'
+}
+
+# real QA test starts here
+echo "Initial pmcd memory size:" > $seq.full
+MEMINIT=`pmcd_memory`
+cd secure
+for leak_test in leak-*
+do
+ echo "$leak_test checking: " | tee -a $here/$seq.full
+ python $leak_test $host $iterate
+ pmcd_wait -t $timeout -h $host
+ sts=$?
+ echo "$leak_test complete sts=$sts" | tee -a $here/$seq.full
+ [ $sts -ne 0 ] && exit
+ MEMUSED=`pmcd_memory`
+ # allow for max 64KB increase (several pages on 64KB systems)
+ MEMSLOP=`expr $MEMINIT + 640`
+ echo "init=$MEMINIT used=$MEMUSED slop=$MEMSLOP" >> $here/$seq.full
+ [ $MEMUSED -gt $MEMSLOP ] && exit
+ echo "$leak_test memory check=OK" | tee -a $here/$seq.full
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/550.out b/qa/550.out
new file mode 100644
index 0000000..f67e14a
--- /dev/null
+++ b/qa/550.out
@@ -0,0 +1,7 @@
+QA output created by 550
+leak-fetch checking:
+leak-fetch complete sts=0
+leak-fetch memory check=OK
+leak-getpdu checking:
+leak-getpdu complete sts=0
+leak-getpdu memory check=OK
diff --git a/qa/551 b/qa/551
new file mode 100755
index 0000000..2fb1ac7
--- /dev/null
+++ b/qa/551
@@ -0,0 +1,72 @@
+#!/bin/sh
+# PCP QA Test No. 551
+# Exercise fix for hanging-pmcd-by-drip-feeding-requests
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=localhost
+ppid=0
+count=5
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+cleanup()
+{
+ cd $here
+ rm -rf $tmp.*
+ [ $ppid -eq 0 ] || kill $ppid
+ ppid=0
+}
+
+cpu_count()
+{
+ pmprobe -h $host -v hinv.ncpu | tee -a $here/$seq.full | awk '{ print $3 }'
+}
+
+
+# real QA test starts here
+cd secure
+ncpu=`cpu_count`
+echo "Initial CPU count: $ncpu" > $here/$seq.full
+for hang_test in hang-*
+do
+ echo "$hang_test checking: " | tee -a $here/$seq.full
+ python $hang_test $host >$tmp.out 2>&1 &
+ ppid=$!
+ sts=0
+ n=0
+ while [ $n -lt $count ]
+ do
+ ncpunow=`cpu_count`
+ echo "Fetched CPU count: $ncpunow" >> $here/$seq.full
+ if [ $ncpunow != $ncpu ]
+ then
+ sts=1
+ break
+ fi
+ echo "[$n] check data matched" | tee -a $here/$seq.full
+ n=`expr $n + 1`
+ sleep 1
+ done
+ kill $ppid
+ wait $ppid
+ ppid=0
+ echo "$hang_test complete" | tee -a $here/$seq.full
+ echo "$hang_test output " >> $here/$seq.full
+ cat $tmp.out >> $here/$seq.full
+ [ $sts -eq 0 ] || exit
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/551.out b/qa/551.out
new file mode 100644
index 0000000..4b1b472
--- /dev/null
+++ b/qa/551.out
@@ -0,0 +1,8 @@
+QA output created by 551
+hang-pmcd checking:
+[0] check data matched
+[1] check data matched
+[2] check data matched
+[3] check data matched
+[4] check data matched
+hang-pmcd complete
diff --git a/qa/552 b/qa/552
new file mode 100755
index 0000000..aa7204f
--- /dev/null
+++ b/qa/552
@@ -0,0 +1,29 @@
+#!/bin/sh
+# PCP QA Test No. 552
+# Exercise pmNewContext parameter handling botch
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+echo "Checking pmNewContext with an empty hostname"
+pmprobe -h ''
+
+echo "Checking pmNewContext with an empty filename"
+pmprobe -a ''
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/552.out b/qa/552.out
new file mode 100644
index 0000000..b37e3ce
--- /dev/null
+++ b/qa/552.out
@@ -0,0 +1,5 @@
+QA output created by 552
+Checking pmNewContext with an empty hostname
+pmprobe: Cannot connect to PMCD on host "": Operation requires context with host source of metrics
+Checking pmNewContext with an empty filename
+pmprobe: Cannot open archive "": Missing PCP archive log file
diff --git a/qa/553 b/qa/553
new file mode 100755
index 0000000..5ac03ea
--- /dev/null
+++ b/qa/553
@@ -0,0 +1,116 @@
+#!/bin/sh
+# PCP QA Test No. 553
+# Exercise the gluster filesystem PMDA.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pmda_path="$PCP_PMDAS_DIR/gluster"
+pmda_script="$pmda_path/pmdagluster.python"
+test -f "$pmda_script" || _notrun "pmdagluster not supported"
+python -c "from pcp import pmda" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "python pcp pmda module not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ tee -a $seq.full | \
+ sed \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+
+ test -f gluster.log && cat gluster.log >> $seq.full
+}
+
+_filter_result()
+{
+ _filter | _filter_dumpresult
+}
+
+domain=118
+test="$here/gluster"
+export GLUSTER_HOME="$test"
+export GLUSTER_VOL_INFO="$test/test.sh info info-single"
+export GLUSTER_VOL_STATS="$test/test.sh stats profile-%s-info"
+export GLUSTER_VOL_STOP="$test/test.sh stop %s $seq $tmp.stop"
+export GLUSTER_VOL_START="$test/test.sh start %s $seq $tmp.start"
+
+# real QA test starts here
+PCP_PYTHON_PMNS=root python "$pmda_script" > $tmp.root
+
+echo "== Testing volume instance domain" | tee -a $seq.full
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+instance $domain.0
+End-of-File
+
+echo "== Testing volume information metrics" | tee -a $seq.full
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+getdesc on
+desc gluster.volume.dist.count
+desc gluster.volume.stripe.count
+desc gluster.volume.replica.count
+fetch gluster.volume.dist.count
+fetch gluster.volume.stripe.count
+fetch gluster.volume.replica.count
+End-of-File
+
+echo "== Testing volume control metric store" | tee -a $seq.full
+$sudo rm -f $tmp.start $tmp.stop
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+getdesc on
+desc gluster.volume.profile
+fetch gluster.volume.profile
+store gluster.volume.profile "1"
+store gluster.volume.profile "0"
+End-of-File
+# store should produce start/stop files via gluster/test.sh
+cat $tmp.start $tmp.stop
+$sudo rm -f $tmp.start $tmp.stop
+
+echo "== Testing brick instance domain" | tee -a $seq.full
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+instance $domain.1
+End-of-File
+
+echo "== Testing brick throughput metrics" | tee -a $seq.full
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+getdesc on
+desc gluster.brick.read_bytes
+fetch gluster.brick.read_bytes
+desc gluster.brick.write_bytes
+fetch gluster.brick.write_bytes
+End-of-File
+
+echo "== Testing brick file operation latency metrics" | tee -a $seq.full
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+getdesc on
+desc gluster.brick.latency.getxattr.avg
+desc gluster.brick.latency.getxattr.min
+desc gluster.brick.latency.getxattr.max
+desc gluster.brick.latency.getxattr.count
+fetch gluster.brick.latency.getxattr.avg
+fetch gluster.brick.latency.getxattr.min
+fetch gluster.brick.latency.getxattr.max
+fetch gluster.brick.latency.getxattr.count
+End-of-File
+
+status=0
+exit
diff --git a/qa/553.out b/qa/553.out
new file mode 100644
index 0000000..45cb846
--- /dev/null
+++ b/qa/553.out
@@ -0,0 +1,139 @@
+QA output created by 553
+== Testing volume instance domain
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+dbpmda> instance 118.0
+pmInDom: 118.0
+[ 0] inst: 0 name: "gv0"
+dbpmda>
+== Testing volume information metrics
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+dbpmda> getdesc on
+dbpmda> desc gluster.volume.dist.count
+PMID: 118.2.1
+ Data Type: 32-bit int InDom: 118.0 0x1d800000
+ Semantics: instant Units: none
+dbpmda> desc gluster.volume.stripe.count
+PMID: 118.2.2
+ Data Type: 32-bit int InDom: 118.0 0x1d800000
+ Semantics: instant Units: none
+dbpmda> desc gluster.volume.replica.count
+PMID: 118.2.3
+ Data Type: 32-bit int InDom: 118.0 0x1d800000
+ Semantics: instant Units: none
+dbpmda> fetch gluster.volume.dist.count
+PMID(s): 118.2.1
+pmResult ... numpmid: 1
+ 118.2.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or ???] value 1
+dbpmda> fetch gluster.volume.stripe.count
+PMID(s): 118.2.2
+pmResult ... numpmid: 1
+ 118.2.2 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or ???] value 2
+dbpmda> fetch gluster.volume.replica.count
+PMID(s): 118.2.3
+pmResult ... numpmid: 1
+ 118.2.3 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or ???] value 3
+dbpmda>
+== Testing volume control metric store
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+dbpmda> getdesc on
+dbpmda> desc gluster.volume.profile
+PMID: 118.2.0
+ Data Type: 32-bit int InDom: 118.0 0x1d800000
+ Semantics: instant Units: none
+dbpmda> fetch gluster.volume.profile
+PMID(s): 118.2.0
+pmResult ... numpmid: 1
+ 118.2.0 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ inst [0 or ???] value 1
+dbpmda> store gluster.volume.profile "1"
+PMID: 118.2.0
+Getting description...
+Getting Result Structure...
+118.2.0: 1 -> 1
+Sending Result...
+dbpmda> store gluster.volume.profile "0"
+PMID: 118.2.0
+Getting description...
+Getting Result Structure...
+118.2.0: 1 -> 0
+Sending Result...
+dbpmda>
+start gv0 - test 553
+stop gv0 - test 553
+== Testing brick instance domain
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+dbpmda> instance 118.1
+pmInDom: 118.1
+[ 0] inst: 0 name: "smash.scott.net.au:/export/brick1/glusterdev1"
+dbpmda>
+== Testing brick throughput metrics
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+dbpmda> getdesc on
+dbpmda> desc gluster.brick.read_bytes
+PMID: 118.0.0
+ Data Type: 64-bit unsigned int InDom: 118.1 0x1d800001
+ Semantics: counter Units: byte
+dbpmda> fetch gluster.brick.read_bytes
+PMID(s): 118.0.0
+pmResult ... numpmid: 1
+ 118.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or ???] value 42
+dbpmda> desc gluster.brick.write_bytes
+PMID: 118.0.1
+ Data Type: 64-bit unsigned int InDom: 118.1 0x1d800001
+ Semantics: counter Units: byte
+dbpmda> fetch gluster.brick.write_bytes
+PMID(s): 118.0.1
+pmResult ... numpmid: 1
+ 118.0.1 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or ???] value 24
+dbpmda>
+== Testing brick file operation latency metrics
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/gluster/pmdagluster.python
+dbpmda> getdesc on
+dbpmda> desc gluster.brick.latency.getxattr.avg
+PMID: 118.1.74
+ Data Type: float InDom: 118.1 0x1d800001
+ Semantics: instant Units: microsec
+dbpmda> desc gluster.brick.latency.getxattr.min
+PMID: 118.1.72
+ Data Type: 64-bit unsigned int InDom: 118.1 0x1d800001
+ Semantics: instant Units: microsec
+dbpmda> desc gluster.brick.latency.getxattr.max
+PMID: 118.1.73
+ Data Type: 64-bit unsigned int InDom: 118.1 0x1d800001
+ Semantics: instant Units: microsec
+dbpmda> desc gluster.brick.latency.getxattr.count
+PMID: 118.1.75
+ Data Type: 64-bit unsigned int InDom: 118.1 0x1d800001
+ Semantics: counter Units: count
+dbpmda> fetch gluster.brick.latency.getxattr.avg
+PMID(s): 118.1.74
+pmResult ... numpmid: 1
+ 118.1.74 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or ???] value 101.4
+dbpmda> fetch gluster.brick.latency.getxattr.min
+PMID(s): 118.1.72
+pmResult ... numpmid: 1
+ 118.1.72 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or ???] value 68
+dbpmda> fetch gluster.brick.latency.getxattr.max
+PMID(s): 118.1.73
+pmResult ... numpmid: 1
+ 118.1.73 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or ???] value 134
+dbpmda> fetch gluster.brick.latency.getxattr.count
+PMID(s): 118.1.75
+pmResult ... numpmid: 1
+ 118.1.75 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ inst [0 or ???] value 2
+dbpmda>
diff --git a/qa/554 b/qa/554
new file mode 100755
index 0000000..2943bd8
--- /dev/null
+++ b/qa/554
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 554
+# security hole via system() from pmie
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.* /tmp/ls; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "expect /tmp/ls ..."
+echo
+
+cd /tmp
+$sudo rm -f ls
+cat <<End-of-File >ls
+#!/bin/sh
+echo "Bingo! ... I have a shell now"
+id
+End-of-File
+chmod 755 ls
+
+PATH=.:$PATH
+export PATH
+cat <<End-of-File | $sudo pmie -t 2 -T 1 2>/dev/null
+hinv.ncpu > 0 -> shell "ls /tmp/ls";
+End-of-File
+
+sleep 2
+
+# success, all done
+status=0
+exit
diff --git a/qa/554.out b/qa/554.out
new file mode 100644
index 0000000..9c83b18
--- /dev/null
+++ b/qa/554.out
@@ -0,0 +1,4 @@
+QA output created by 554
+expect /tmp/ls ...
+
+/tmp/ls
diff --git a/qa/555 b/qa/555
new file mode 100755
index 0000000..9968833
--- /dev/null
+++ b/qa/555
@@ -0,0 +1,253 @@
+#!/bin/sh
+# PCP QA Test No. 555
+# pmie syslog(3) changes and parsing -t tag and -p pri arguments in
+# a syslog action
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix|linux)
+ ln $seq.$PCP_PLATFORM $seq.out || exit 1
+ ;;
+ darwin|solaris)
+ ln $seq.linux $seq.out || exit 1
+ ;;
+ *)
+ _notrun "No qualified output exists for $PCP_PLATFORM"
+ ;;
+esac
+
+$sudo rm -f $seq.full /tmp/syslog.full /tmp/syslog.out
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+
+update_config=true
+systemctl=false
+upstart=false
+if [ -f /etc/rsyslog.conf -a -f /var/run/*syslogd.pid ]
+then
+ # smells like rsyslogd
+ #
+ ( echo "smells like rsyslogd"; ls -l /etc/rsyslog.conf /var/run/*syslogd.pid ) >>/tmp/syslog.full
+ daemon=rsyslogd
+ config=/etc/rsyslog.d/pcpqa.conf
+ update_config=false
+ # For Ubuntu 9.10 (at least) SIGHUP to rsyslogd does not really
+ # restart rsyslogd ... worse, /etc/init.d/rsyslogd may have been
+ # converted to use "upstart"
+ #
+ if initctl version 2>&1 | grep -q upstart
+ then
+ upstart=true
+ elif [ -f /etc/init.d/rsyslog ]
+ then
+ init=/etc/init.d/rsyslog
+ elif [ -f /etc/init.d/syslog ]
+ then
+ # the SuSE way
+ upstart=false
+ init=/etc/init.d/syslog
+ else
+ if `which systemctl >/dev/null 2>&1`
+ then
+ systemctl=true
+ else
+ echo "Botch: using rsyslog, but I don't know how to stop/start it"
+ exit 1
+ fi
+ fi
+ echo "upstart=$upstart" >>/tmp/syslog.full
+ echo "systemctl=$systemctl" >>/tmp/syslog.full
+ echo "init=$init" >>/tmp/syslog.full
+elif [ -f /etc/syslog.conf ]
+then
+ # regular old syslogd
+ #
+ ( echo "smells like old syslogd"; ls -l /etc/rsyslog.conf ) >>/tmp/syslog.full
+ daemon=syslogd
+ config=/etc/syslog.conf
+else
+ _notrun "No /etc/*syslog.conf -- probably using a different syslog package"
+fi
+
+# avoid systemd/systemctl wrapper
+#
+[ -f /etc/SuSE-release ] && export SYSTEMD_NO_WRAP=1
+[ -f /etc/fedora-release ] && export SYSTEMCTL_SKIP_REDIRECT=1
+
+cleanup()
+{
+ if [ -f $config.$seq ]; then
+ if $update_config
+ then
+ $sudo mv $config.$seq $config
+ else
+ $sudo rm $config.$seq $config
+ fi
+ if [ $daemon = rsyslogd ]
+ then
+ if $upstart
+ then
+ $sudo service rsyslog restart >>/tmp/syslog.full 2>&1
+ elif $systemctl
+ then
+ $sudo systemctl restart rsyslog
+ else
+ # kill should be enough, but restart to be sure
+ #
+ # $sudo kill -HUP `cat /var/run/rsyslogd.pid` || exit
+ $sudo $init restart >>/tmp/syslog.full 2>&1
+ fi
+ else
+ $sudo $signal -a -s HUP $daemon || exit
+ fi
+ fi
+ $sudo mv /tmp/syslog.full $seq.full
+ $sudo rm -f /tmp/syslog.out
+ rm -f $tmp.*
+}
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+# move aside the current syslog configuration, as we have NFI
+# what kind of setup is in use and where our messages will go
+#
+setup()
+{
+ # let rsyslog create it, to ensure any security labels setup
+ if [ $daemon != rsyslogd ]
+ then
+ $sudo cp /dev/null /tmp/syslog.out || exit
+ $sudo chmod 666 /tmp/syslog.out || exit
+ fi
+ if $update_config
+ then
+ $sudo mv $config $config.$seq || exit
+ else
+ $sudo touch $config.$seq
+ fi
+ echo '*.* /tmp/syslog.out' >$tmp.syslog.conf
+ $sudo cp $tmp.syslog.conf $config || exit
+ echo "config=$config" >>/tmp/syslog.full
+ $sudo cat $config >>/tmp/syslog.full
+ if [ $daemon = rsyslogd ]
+ then
+ if $upstart
+ then
+ $sudo service rsyslog restart >>/tmp/syslog.full 2>&1
+ elif $systemctl
+ then
+ $sudo systemctl restart rsyslog >>/tmp/syslog.full 2>&1
+ else
+ # kill should be enough, but restart to be sure
+ #
+ # $sudo kill -HUP `cat /var/run/rsyslogd.pid` || exit
+ $sudo $init restart >>/tmp/syslog.full 2>&1
+ fi
+ else
+ $sudo $signal -a -s HUP $daemon || exit
+ fi
+}
+
+# real QA test starts here
+echo "ps before setup ..." >>/tmp/syslog.full
+$PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '([P]ID)|([s]yslog)' >>/tmp/syslog.full
+setup
+echo "ps after setup ..." >>/tmp/syslog.full
+$PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '([P]ID)|([s]yslog)' >>/tmp/syslog.full
+
+# syslog logger -p
+# 5D daemon.notice <--- default
+# 6D daemon.info
+# 4D daemon.warning
+# 5B user.notice
+# 6B user.info
+# 4B user.warning
+# 5Q local0.notice
+# 6Q local0.info
+# 4Q local0.warning
+
+cat <<'End-of-File' >$tmp.conf
+// errors
+hinv.ncpu > 0 -> syslog "-t";
+hinv.ncpu > 0 -> syslog "-ttag extra";
+hinv.ncpu > 0 -> syslog "-t" "tag extra";
+hinv.ncpu > 0 -> syslog "-p";
+hinv.ncpu > 0 -> syslog "-pinfo extra" "-pinfo [6D]" "{1}";
+hinv.ncpu > 0 -> syslog "-p" "info extra" "-pinfo [6D]" "{2}";
+hinv.ncpu > 0 -> syslog "-p" "evil" "-t" "bogus" "bad -p evil and -t" "{3}";
+hinv.ncpu > 0 -> syslog "-p" "evil.info" "bad facil for -p evil.info [6D]" "{4}";
+hinv.ncpu > 0 -> syslog "-p" "user.evil" "bad pri for -p user.evil [5B]" "{5}";
+
+// OK
+hinv.ncpu > 0 -> syslog "-t" "foo" "-p" "user.notice" "-t & -pinfo, 4 args [5B]" "{6}";
+hinv.ncpu > 0 -> syslog "-t" "foo" "-puser.notice" "-t & -pinfo, 3 args [5B]" "{7}";
+hinv.ncpu > 0 -> syslog "-tfoo" "-pinfo" "-t & -pinfo, 2 args [6D]" "{8}";
+hinv.ncpu > 0 -> syslog "-p" "user.info" "-p user.info, 2 args [6B]" "{9}";
+hinv.ncpu > 0 -> syslog "-pdaemon.info" "-pdaemon.info, 1 arg [6D]" "{10}";
+hinv.ncpu > 0 -> syslog "-t" "foo" "-t 2 args" "{11}";
+hinv.ncpu > 0 -> syslog "-tfoo" "-t 1 arg" "{12}";
+hinv.ncpu > 0 -> syslog "no -t or -p args" "{13}";
+
+
+// OK + holdoff
+hinv.ncpu > 0 -> syslog 1 min "-t" "foo" "-p" "local0.notice" "-t & -pinfo, 4 args [5Q] + holdoff" "{14}";
+hinv.ncpu > 0 -> syslog 1 min "-t" "foo" "-plocal0.notice" "-t & -pinfo, 3 args [5Q] + holdoff" "{14}";
+hinv.ncpu > 0 -> syslog 1 min "-tfoo" "-pinfo" "-t & -pinfo, 2 args [6D] + holdoff" "{15}";
+hinv.ncpu > 0 -> syslog 1 min "-p" "local0.info" "-p user.info, 2 args [6Q] + holdoff" "{16}";
+hinv.ncpu > 0 -> syslog 1 min "-pdaemon.info" "-pdaemon.info, 1 arg [6D] + holdoff" "{17}";
+hinv.ncpu > 0 -> syslog 1 min "-t" "foo" "-t 2 args + holdoff" "{18}";
+hinv.ncpu > 0 -> syslog 1 min "-tfoo" "-t 1 arg + holdoff" "{19}";
+hinv.ncpu > 0 -> syslog 1 min "no -t or -p args + holdoff" "{20}";
+
+End-of-File
+
+pmie -t 2sec -T 5sec >$tmp.log 2>&1 -c $tmp.conf &
+wait
+
+sed <$tmp.log \
+ -e "/Info: evaluator exiting/d" \
+ -e "s;$tmp;TMP;;"
+
+sleep 5
+echo
+
+# note - runpriv lines noticed on krelly with SGIconsole 2.0
+# note - agetty lines noticed on canary with SLES9 SP1 beta2
+# note - DHCPDISCOVER lines noticed on kenj-laptop with Ubuntu 8.10
+#
+echo "=== all of syslog ===" >>/tmp/syslog.full
+$sudo cat /tmp/syslog.out >>/tmp/syslog.full
+echo >>/tmp/syslog.full
+echo "=== syslog for pid $! ===" >>/tmp/syslog.full
+# More recent syslog format seen on Ubuntu 11.04
+# (high-precision rsyslog timestamps, traditional-mode no longer enabled)
+# 2011-07-09T10:38:40+10:00 HOST pcp-pmie[PID]:
+#
+$sudo grep '\['$!']:' /tmp/syslog.out \
+| tee -a /tmp/syslog.full \
+| sed \
+ -e 's/^[A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/^[0-9][0-9][0-9][0-9]-[0-9][0-9]*-[0-9][0-9]*T[0-9][0-9]:[0-9][0-9]:[0-9][0-9][^ ]* /DATE /' \
+ -e "s/\\[$!]/[PID]/" \
+ -e "s/`hostname | sed -e 's/\..*//'` /HOST /" \
+ -e 's/[0-9][A-Z]:HOST/HOST/' \
+ -e '/ sudo: .*syslog.out$/d' \
+ | LC_COLLATE=POSIX sort \
+ | uniq
+
+# success, all done
+status=0
+exit
diff --git a/qa/555.irix b/qa/555.irix
new file mode 100644
index 0000000..2ca7c4f
--- /dev/null
+++ b/qa/555.irix
@@ -0,0 +1,43 @@
+QA output created by 555
+pmie: warning - near line 3 of file TMP.conf
+Missing tag after -t in syslog action
+pmie: warning - near line 4 of file TMP.conf
+Ignoring extra text ( extra) after -t tag in syslog action
+pmie: warning - near line 5 of file TMP.conf
+Ignoring extra text ( extra) after -t tag in syslog action
+pmie: warning - near line 6 of file TMP.conf
+Missing [facility.]priority after -p in syslog action
+pmie: warning - near line 7 of file TMP.conf
+Ignoring extra text ( extra) after -p pri in syslog action
+pmie: warning - near line 8 of file TMP.conf
+Ignoring extra text ( extra) after -p pri in syslog action
+pmie: warning - near line 9 of file TMP.conf
+Ignoring unknown priority (evil) for -p in syslog action
+pmie: warning - near line 10 of file TMP.conf
+Ignoring unknown facility (evil) for -p in syslog action
+pmie: warning - near line 12 of file TMP.conf
+Ignoring unknown priority (evil) for -p in syslog action
+
+DATE HOST bogus[PID]: bad -p evil and -t{3}
+DATE HOST foo[PID]: -t & -pinfo, 2 args [6D] + holdoff{15}
+DATE HOST foo[PID]: -t & -pinfo, 2 args [6D]{8}
+DATE HOST foo[PID]: -t & -pinfo, 3 args [5B]{7}
+DATE HOST foo[PID]: -t & -pinfo, 3 args [5Q] + holdoff{14}
+DATE HOST foo[PID]: -t & -pinfo, 4 args [5B]{6}
+DATE HOST foo[PID]: -t & -pinfo, 4 args [5Q] + holdoff{14}
+DATE HOST foo[PID]: -t 1 arg + holdoff{19}
+DATE HOST foo[PID]: -t 1 arg{12}
+DATE HOST foo[PID]: -t 2 args + holdoff{18}
+DATE HOST foo[PID]: -t 2 args{11}
+DATE HOST pcp-pmie[PID]:
+DATE HOST pcp-pmie[PID]: -p user.info, 2 args [6B]{9}
+DATE HOST pcp-pmie[PID]: -p user.info, 2 args [6Q] + holdoff{16}
+DATE HOST pcp-pmie[PID]: -pdaemon.info, 1 arg [6D] + holdoff{17}
+DATE HOST pcp-pmie[PID]: -pdaemon.info, 1 arg [6D]{10}
+DATE HOST pcp-pmie[PID]: -pinfo [6D]{1}
+DATE HOST pcp-pmie[PID]: -pinfo [6D]{2}
+DATE HOST pcp-pmie[PID]: bad facil for -p evil.info [6D]{4}
+DATE HOST pcp-pmie[PID]: bad pri for -p user.evil [5B]{5}
+DATE HOST pcp-pmie[PID]: no -t or -p args + holdoff{20}
+DATE HOST pcp-pmie[PID]: no -t or -p args{13}
+DATE HOST tag[PID]:
diff --git a/qa/555.linux b/qa/555.linux
new file mode 100644
index 0000000..2ca7c4f
--- /dev/null
+++ b/qa/555.linux
@@ -0,0 +1,43 @@
+QA output created by 555
+pmie: warning - near line 3 of file TMP.conf
+Missing tag after -t in syslog action
+pmie: warning - near line 4 of file TMP.conf
+Ignoring extra text ( extra) after -t tag in syslog action
+pmie: warning - near line 5 of file TMP.conf
+Ignoring extra text ( extra) after -t tag in syslog action
+pmie: warning - near line 6 of file TMP.conf
+Missing [facility.]priority after -p in syslog action
+pmie: warning - near line 7 of file TMP.conf
+Ignoring extra text ( extra) after -p pri in syslog action
+pmie: warning - near line 8 of file TMP.conf
+Ignoring extra text ( extra) after -p pri in syslog action
+pmie: warning - near line 9 of file TMP.conf
+Ignoring unknown priority (evil) for -p in syslog action
+pmie: warning - near line 10 of file TMP.conf
+Ignoring unknown facility (evil) for -p in syslog action
+pmie: warning - near line 12 of file TMP.conf
+Ignoring unknown priority (evil) for -p in syslog action
+
+DATE HOST bogus[PID]: bad -p evil and -t{3}
+DATE HOST foo[PID]: -t & -pinfo, 2 args [6D] + holdoff{15}
+DATE HOST foo[PID]: -t & -pinfo, 2 args [6D]{8}
+DATE HOST foo[PID]: -t & -pinfo, 3 args [5B]{7}
+DATE HOST foo[PID]: -t & -pinfo, 3 args [5Q] + holdoff{14}
+DATE HOST foo[PID]: -t & -pinfo, 4 args [5B]{6}
+DATE HOST foo[PID]: -t & -pinfo, 4 args [5Q] + holdoff{14}
+DATE HOST foo[PID]: -t 1 arg + holdoff{19}
+DATE HOST foo[PID]: -t 1 arg{12}
+DATE HOST foo[PID]: -t 2 args + holdoff{18}
+DATE HOST foo[PID]: -t 2 args{11}
+DATE HOST pcp-pmie[PID]:
+DATE HOST pcp-pmie[PID]: -p user.info, 2 args [6B]{9}
+DATE HOST pcp-pmie[PID]: -p user.info, 2 args [6Q] + holdoff{16}
+DATE HOST pcp-pmie[PID]: -pdaemon.info, 1 arg [6D] + holdoff{17}
+DATE HOST pcp-pmie[PID]: -pdaemon.info, 1 arg [6D]{10}
+DATE HOST pcp-pmie[PID]: -pinfo [6D]{1}
+DATE HOST pcp-pmie[PID]: -pinfo [6D]{2}
+DATE HOST pcp-pmie[PID]: bad facil for -p evil.info [6D]{4}
+DATE HOST pcp-pmie[PID]: bad pri for -p user.evil [5B]{5}
+DATE HOST pcp-pmie[PID]: no -t or -p args + holdoff{20}
+DATE HOST pcp-pmie[PID]: no -t or -p args{13}
+DATE HOST tag[PID]:
diff --git a/qa/556 b/qa/556
new file mode 100755
index 0000000..14d20d6
--- /dev/null
+++ b/qa/556
@@ -0,0 +1,62 @@
+#!/bin/sh
+# PCP QA Test No. 556
+# pmie actions in archive mode
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+if [ $PCP_VER -lt 3600 ]
+then
+ # V1 archives supported
+ arch=src/ace
+else
+ # no support for V1 archives
+ arch=src/ace_v2
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# deal with an annoying libc error ... using TZ=:Australia/Melbourne
+# causes the -z option to report the wrong time, at least for some
+# times of the year
+#
+TZ=EST-10
+export TZ
+
+cat > $tmp.ns << EOF
+root { irix }
+irix { kernel }
+irix.kernel { all }
+irix.kernel.all { load 1:18:3 }
+EOF
+
+# real QA test starts here
+cat <<End-of-File | pmie -n $tmp.ns -z -a $arch -S '@14:25:10' -t 3sec -T 5sec >$tmp.log 2>&1
+irix.kernel.all.load #'1' > 0 -> syslog "test syslog";
+irix.kernel.all.load #'1' > 0 -> print "test print";
+irix.kernel.all.load #'1' > 0 -> shell "echo" " test shell";
+irix.kernel.all.load #'1' > 0 -> syslog 1 min "test syslog + holdoff";
+irix.kernel.all.load #'1' > 0 -> print 1 min "test print + holdoff";
+irix.kernel.all.load #'1' > 0 -> shell 1 min "echo" " test shell + holdoff";
+End-of-File
+
+sed <$tmp.log \
+ -e "/Info: evaluator exiting/d" \
+ -e "/note - evaluator exiting/d" \
+ -e '/note - timezone/{
+s/note - //
+s/"//g
+}'
+
+# success, all done
+status=0
+exit
diff --git a/qa/556.out b/qa/556.out
new file mode 100644
index 0000000..72d2cee
--- /dev/null
+++ b/qa/556.out
@@ -0,0 +1,11 @@
+QA output created by 556
+pmie: timezone set to local timezone of host moomba
+syslog Mon Oct 30 14:25:10 1995: test syslog
+print Mon Oct 30 14:25:10 1995: test print
+shell Mon Oct 30 14:25:10 1995: echo test shell
+syslog Mon Oct 30 14:25:10 1995: test syslog + holdoff
+print Mon Oct 30 14:25:10 1995: test print + holdoff
+shell Mon Oct 30 14:25:10 1995: echo test shell + holdoff
+syslog Mon Oct 30 14:25:13 1995: test syslog
+print Mon Oct 30 14:25:13 1995: test print
+shell Mon Oct 30 14:25:13 1995: echo test shell
diff --git a/qa/557 b/qa/557
new file mode 100755
index 0000000..c70b990
--- /dev/null
+++ b/qa/557
@@ -0,0 +1,50 @@
+#!/bin/sh
+# PCP QA Test No. 557
+# pmie problems where metrics not initially available and later become
+# available
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+$sudo rm -f core*
+DEBUG="-v -Dappl1,appl2"
+DEBUG=
+HOST=`hostname`
+
+# real QA test starts here
+
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+pmie -t 1sec $DEBUG << End-of-File >$tmp.log 2>&1 &
+pmcd.numclients > 0
+ -> print "PMCD is up and clients are in";
+End-of-File
+
+sleep 3
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+pmcd_wait
+sleep 10
+$signal -s TERM $!
+
+_filter_pmie_log <$tmp.log \
+| sed -e "s/$HOST/HOST/g" -e "s/local:/HOST/g" > $tmp.flog
+
+grep "Cannot connect" $tmp.flog | uniq
+grep "Re-established connection" $tmp.flog | sort | uniq
+grep "PMCD is up" $tmp.flog | uniq
+
+_check_core
+
+exit
diff --git a/qa/557.out b/qa/557.out
new file mode 100644
index 0000000..11e3c29
--- /dev/null
+++ b/qa/557.out
@@ -0,0 +1,7 @@
+QA output created by 557
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+[TIMESTAMP] pmie(PID) Info: Cannot connect to pmcd on host HOST
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST
+DATE: PMCD is up and clients are in
diff --git a/qa/558 b/qa/558
new file mode 100755
index 0000000..79178d0
--- /dev/null
+++ b/qa/558
@@ -0,0 +1,84 @@
+#! /bin/sh
+# PCP QA Test No. 558
+# pmie problems where metrics initially available and later become
+# unavailable
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+ln $seq.out.linux $seq.out
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+$sudo rm -f core
+DEBUG="-v -Dappl1,appl2"
+DEBUG=
+HOST=`hostname`
+
+target=""
+test $PCP_VER -ge 3803 && target="-h $HOST"
+
+PMCD_RECONNECT_TIMEOUT=1; export PMCD_RECONNECT_TIMEOUT
+
+# real QA test starts here
+
+cat <<End-of-File | pmie $target -t 1sec $DEBUG >$tmp.log 2>&1 &
+sample.long.million > hinv.ncpu
+ -> print 5 sec "singular" " %v";
+sample.float.million + sample.double.million >= sample.long.million
+ -> print 5 sec "expr" " %v";
+some_host sample.long.million > hinv.ncpu
+ -> print 5 sec "some_host" " %h:%v";
+some_inst sample.bin + sample.bin > 1000
+ -> print 5 sec "some_inst" " [%i]%v";
+some_host
+ some_inst
+ sample.bin :localhost :'$HOST'
+ + sample.bin :localhost :'$HOST'
+ > 1000
+ -> print 5 sec "some_host some_inst" " %h:[%i]%v";
+End-of-File
+
+sleep 3
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+sleep 10
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+pmcd_wait
+sleep 10
+$signal -s TERM $!
+wait
+
+cp $tmp.log $seq.full
+
+_filter_pmie_log <$tmp.log \
+| sed \
+ -e "s/ host $HOST/ host HOST\/localhost/g" \
+ -e "s/ from $HOST/ from HOST\/localhost/g" \
+ -e "s/$HOST/HOST/g" \
+ -e "s/local:/HOST/g" \
+ -e "s/ host localhost/ host HOST\/localhost/g" \
+ -e "s/ from localhost/ from HOST\/localhost/g" \
+ -e 's/failed: IPC protocol failure/failed: [IPC shutdown]/' \
+ -e 's/failed: Connection reset by peer/failed: [IPC shutdown]/' \
+| $PCP_AWK_PROG '
+$1 == "DATE:" && $2 == "singular" { if (state > 0) skip = 1
+ state++
+ }
+$1 != "DATE:" { skip = 0; state = 0 }
+skip == 0 { print }'
+
+_check_core
+
+exit
diff --git a/qa/558.out.irix b/qa/558.out.irix
new file mode 100644
index 0000000..793b584
--- /dev/null
+++ b/qa/558.out.irix
@@ -0,0 +1,20 @@
+QA output created by 558
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+DATE: singular 1000000
+DATE: expr 2000000
+DATE: some_host HOST:1000000
+DATE: some_inst [bin-600]1200 [bin-700]1400 [bin-800]1600 [bin-900]1800
+DATE: some_host some_inst localhost:[bin-600]1200 localhost:[bin-700]1400 localhost:[bin-800]1600 localhost:[bin-900]1800 HOST:[bin-600]1200 HOST:[bin-700]1400 HOST:[bin-800]1600 HOST:[bin-900]1800
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST/localhost failed: [IPC shutdown]
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST/localhost
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST/localhost failed: [IPC shutdown]
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST/localhost
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST/localhost
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST/localhost
+DATE: singular 1000000
+DATE: expr 2000000
+DATE: some_host HOST:1000000
+DATE: some_inst [bin-600]1200 [bin-700]1400 [bin-800]1600 [bin-900]1800
+DATE: some_host some_inst localhost:[bin-600]1200 localhost:[bin-700]1400 localhost:[bin-800]1600 localhost:[bin-900]1800 HOST:[bin-600]1200 HOST:[bin-700]1400 HOST:[bin-800]1600 HOST:[bin-900]1800
diff --git a/qa/558.out.linux b/qa/558.out.linux
new file mode 100644
index 0000000..793b584
--- /dev/null
+++ b/qa/558.out.linux
@@ -0,0 +1,20 @@
+QA output created by 558
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+DATE: singular 1000000
+DATE: expr 2000000
+DATE: some_host HOST:1000000
+DATE: some_inst [bin-600]1200 [bin-700]1400 [bin-800]1600 [bin-900]1800
+DATE: some_host some_inst localhost:[bin-600]1200 localhost:[bin-700]1400 localhost:[bin-800]1600 localhost:[bin-900]1800 HOST:[bin-600]1200 HOST:[bin-700]1400 HOST:[bin-800]1600 HOST:[bin-900]1800
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST/localhost failed: [IPC shutdown]
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST/localhost
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST/localhost failed: [IPC shutdown]
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST/localhost
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST/localhost
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST/localhost
+DATE: singular 1000000
+DATE: expr 2000000
+DATE: some_host HOST:1000000
+DATE: some_inst [bin-600]1200 [bin-700]1400 [bin-800]1600 [bin-900]1800
+DATE: some_host some_inst localhost:[bin-600]1200 localhost:[bin-700]1400 localhost:[bin-800]1600 localhost:[bin-900]1800 HOST:[bin-600]1200 HOST:[bin-700]1400 HOST:[bin-800]1600 HOST:[bin-900]1800
diff --git a/qa/559 b/qa/559
new file mode 100755
index 0000000..2c0a067
--- /dev/null
+++ b/qa/559
@@ -0,0 +1,49 @@
+#! /bin/sh
+# PCP QA Test No. 559
+# exercise pmlogsummary mark record handling - #556340
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+#
+# Note: markmerge archive created using this pmlogger config:
+#
+
+# #
+# # config for archives for pmlogsummary mark record QA testing ...
+# # (the rapid counter is used to push the mark record created by merging
+# # two of these files away from the interesting data - by default,
+# # pmlogextract appends it one millisecond after the last record in 1st
+# # archive - which is less useful for pmlogsummary stats calculations).
+# #
+#
+# log mandatory on 100 milliseconds
+# sample.const_rate.value # arbitrary metric
+#
+# log mandatory on once
+# sample.dynamic.discrete
+#
+# log mandatory on 2 seconds {
+# sample.dynamic.instant
+# sample.dynamic.counter
+# }
+#
+
+
+# real QA test starts here
+pmlogsummary -za src/markmerge
+
+# success, all done
+status=0
+exit
diff --git a/qa/559.out b/qa/559.out
new file mode 100644
index 0000000..31aaeba
--- /dev/null
+++ b/qa/559.out
@@ -0,0 +1,16 @@
+QA output created by 559
+Note: timezone set to local timezone of host "moomba" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host moomba
+ commencing Mon Mar 15 11:19:02.594 1999
+ ending Mon Mar 15 11:19:28.358 1999
+sample.const_rate.value 0.000 0.000 0.000 0.000 138 count / sec
+sample.dynamic.counter ["one"] 10.522 10.522 10.489 10.574 4 count / sec
+sample.dynamic.counter ["two"] 10.522 10.522 10.489 10.574 4 count / sec
+sample.dynamic.instant ["one"] 338.500 328.012 280.000 397.000 6 count
+sample.dynamic.instant ["two"] 338.500 328.012 280.000 397.000 6 count
+sample.dynamic.discrete ["one"] 295.500 295.525 258.000 333.000 2 count
+sample.dynamic.discrete ["two"] 295.500 295.525 258.000 333.000 2 count
+pmcd.pmlogger.port [12796] 4331.000 4331.000 4331.000 4331.000 1 none
+pmcd.pmlogger.port ["12797"] 4331.000 4331.000 4331.000 4331.000 1 none
diff --git a/qa/560 b/qa/560
new file mode 100755
index 0000000..4714a20
--- /dev/null
+++ b/qa/560
@@ -0,0 +1,75 @@
+#!/bin/sh
+# PCP QA Test No. 560
+# #681487 error handling in pmdaproc.sh dialogs
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cd $PCP_PMDAS_DIR/simple
+
+unset ROOT MAKEFLAGS
+
+$sudo make clobber >/dev/null 2>&1
+$sudo make >/dev/null 2>&1
+
+_filter_make()
+{
+ sed \
+ -e '/In function .vpmprintf./d' \
+ -e '/warning: the use of .tempnam./d' \
+ -e '/make: Nothing to be done/d'
+}
+
+cat <<End-of-File | $sudo ./Install -e >$tmp.out 2>&1
+foo
+both
+foo
+daemon
+foo
+socket
+foo
+Unix
+
+Internet
+
+End-of-File
+
+sed <$tmp.out \
+ -e 's/or perl //g' \
+ -e 's/or python //g' \
+ -e 's/daemon or dso,/"daemon" or "dso",/g' \
+ | _filter_pmda_install \
+ | _filter_make
+
+echo "in \$PCP_PMCDCONF_PATH ..."
+sed -n "/^simple/s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;p" <$PCP_PMCDCONF_PATH
+
+$sudo ./Remove
+
+echo
+if $sudo make >$tmp.tmp 2>$tmp.err
+then
+ cat $tmp.err | _filter_make
+else
+ cat $tmp.tmp
+ echo "make prior to Install failed!"
+fi
+$sudo ./Install </dev/null >$tmp.out 2>&1
+grep 'Check' $tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/560.out b/qa/560.out
new file mode 100644
index 0000000..cccac92
--- /dev/null
+++ b/qa/560.out
@@ -0,0 +1,40 @@
+QA output created by 560
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] foo
+Sorry, that is not acceptable response ...
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or dso agent? [daemon] foo
+Must choose one of "daemon" or "dso", please try again
+Install simple as a daemon or dso agent? [daemon] daemon
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] foo
+Must choose one of "pipe" or "socket", please try again
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] socket
+Use Internet, IPv6 or Unix domain sockets? [Internet] foo
+Must choose one of "Unix" or "Internet", please try again
+Use Internet, IPv6 or Unix domain sockets? [Internet] Unix
+Unix FIFO name?
+Must provide a name, please try again
+Use Internet, IPv6 or Unix domain sockets? [Internet] Internet
+Internet port number or service name? [2078]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+in $PCP_PMCDCONF_PATH ...
+simple 253 socket inet 2078 $PCP_PMDAS_DIR/simple/pmdasimple -d 253 -i 2078
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check simple metrics have gone away ... OK
+
+Check simple metrics have appeared ... 5 metrics and 9 values
diff --git a/qa/564 b/qa/564
new file mode 100755
index 0000000..c7c5df9
--- /dev/null
+++ b/qa/564
@@ -0,0 +1,83 @@
+#! /bin/sh
+# PCP QA Test No. 564
+# exercise archive compression thru pmlogger_daily
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+
+_cleanup()
+{
+ [ -d $tmp.distdir ] && rm -fr $tmp.distdir
+ [ -d $tmp.relaydir ] && rm -fr $tmp.relaydir
+ $sudo rm -f $tmp.*
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# create test control file, directories and populate with dummy archives
+cat >$tmp.ctl<<EOF
+\$version=1.1
+#Host P? S? directory args
+dist.engr n n $tmp.distdir -c config.default
+relay.engr n n $tmp.relaydir -c config.default
+EOF
+
+mkdir -p $tmp.distdir $tmp.relaydir
+
+# some archives for today...
+TODAY=`pmdate %Y%m%d.0`
+cp $tmp.ctl $tmp.distdir/$TODAY.0
+cp $tmp.ctl $tmp.distdir/$TODAY.meta
+cp $tmp.ctl $tmp.distdir/$TODAY.index
+cp $tmp.ctl $tmp.relaydir/$TODAY.0
+cp $tmp.ctl $tmp.relaydir/$TODAY.meta
+cp $tmp.ctl $tmp.relaydir/$TODAY.index
+
+# some archives for a five days ago...
+FIVEDAYS=`pmdate -5d %Y%m%d.0`
+cp $tmp.ctl $tmp.distdir/$FIVEDAYS.0
+cp $tmp.ctl $tmp.distdir/$FIVEDAYS.meta
+cp $tmp.ctl $tmp.distdir/$FIVEDAYS.index
+cp $tmp.ctl $tmp.relaydir/$FIVEDAYS.0
+cp $tmp.ctl $tmp.relaydir/$FIVEDAYS.1
+cp $tmp.ctl $tmp.relaydir/$FIVEDAYS.meta
+cp $tmp.ctl $tmp.relaydir/$FIVEDAYS.index
+cp $tmp.ctl $tmp.relaydir/mumble
+cp $tmp.ctl $tmp.relaydir/mumble.0
+STAMP=`pmdate -5d %Y%m%d`0010
+touch -t "$STAMP" $tmp.*/$FIVEDAYS.* $tmp.relaydir/mumble*
+
+# some archives for five months ago...
+FIVEMONTHS=`pmdate -5m %Y%m%d.0`
+cp $tmp.ctl $tmp.distdir/$FIVEMONTHS.0
+cp $tmp.ctl $tmp.distdir/$FIVEMONTHS.meta
+cp $tmp.ctl $tmp.distdir/$FIVEMONTHS.index
+cp $tmp.ctl $tmp.relaydir/$FIVEMONTHS.0
+cp $tmp.ctl $tmp.relaydir/$FIVEMONTHS.meta
+cp $tmp.ctl $tmp.relaydir/$FIVEMONTHS.index
+STAMP=`pmdate -5m %Y%m%d`0010
+touch -t "$STAMP" $tmp.*/$FIVEMONTHS.*
+
+# real QA test starts here
+$sudo $PCP_BINADM_DIR/pmlogger_daily -V -N -x 3 -X bzip2 -c $tmp.ctl | sed \
+ -e "s/$TODAY/TODAY/g" \
+ -e "s/$FIVEDAYS/FIVEDAYS/g" \
+ -e "s/$FIVEMONTHS/FIVEMONTHS/g" \
+ -e "s/$seq-$$/SEQ-PID/g" \
+ -e '/Warning: no archives found to merge/d' \
+ -e "s;/private/;/;g" \
+ -e "s,$PCP_TMP_DIR,TMP,g" \
+ -e "s,/var/tmp,TMP,g" \
+ -e "s,/tmp,TMP,g" \
+
+# success, all done
+status=0
+exit
diff --git a/qa/564.out b/qa/564.out
new file mode 100644
index 0000000..8a1c2e1
--- /dev/null
+++ b/qa/564.out
@@ -0,0 +1,29 @@
+QA output created by 564
+# $version=1.1
++ export version; version=1.1
++ cd TMP/SEQ-PID.distdir
+
+=== daily maintenance of PCP archives for host dist.engr ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "dist.engr"
+[TMP/SEQ-PID.ctl:3] ... logging for host "dist.engr" unchanged
+
+Archive files older than 14 days being removed ...
+ FIVEMONTHS.0 FIVEMONTHS.index FIVEMONTHS.meta
++ rm -f FIVEMONTHS.0 FIVEMONTHS.index FIVEMONTHS.meta
+Archive files older than 3 days being compressed ...
+ FIVEMONTHS.0 FIVEDAYS.0
++ bzip2 FIVEMONTHS.0 FIVEDAYS.0
++ cd TMP/SEQ-PID.relaydir
+
+=== daily maintenance of PCP archives for host relay.engr ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "relay.engr"
+[TMP/SEQ-PID.ctl:4] ... logging for host "relay.engr" unchanged
+
+Archive files older than 14 days being removed ...
+ FIVEMONTHS.0 FIVEMONTHS.index FIVEMONTHS.meta
++ rm -f FIVEMONTHS.0 FIVEMONTHS.index FIVEMONTHS.meta
+Archive files older than 3 days being compressed ...
+ FIVEMONTHS.0 FIVEDAYS.0 FIVEDAYS.1
++ bzip2 FIVEMONTHS.0 FIVEDAYS.0 FIVEDAYS.1
diff --git a/qa/565 b/qa/565
new file mode 100755
index 0000000..59602d4
--- /dev/null
+++ b/qa/565
@@ -0,0 +1,137 @@
+#! /bin/sh
+# PCP QA Test No. 565
+# Install/Remove for sendmail PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix)
+ ln $seq.irix $seq.out || exit 1
+ ;;
+ linux|darwin|solaris)
+ # same output for Linux, Mac OS X and OpenSolaris
+ if [ $PCP_VER -lt 3600 ]
+ then
+ ln $seq.linux $seq.out || exit 1
+ else
+ ln $seq.out.2 $seq.out || exit 1
+ fi
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+status=1 # failure is the default!
+done_clean=false
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/sendmail; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/sendmail; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo sendmail >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/' \
+ -e 's/[0-9][0-9]* warnings, //' \
+ -e 's/metrics and [0-9][0-9]*/metrics and N/' \
+ -e '/^sendmail\..* No value(s) available/d' \
+ -e "/make: Nothing to be done for .install./d" \
+ -e '/^Installing .mchart view*/d' \
+ -e '/Installing files \.\.\./d' \
+ -e '/Removing files \.\.\./d'
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=sendmail
+if [ ! -d $home/$iam ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+if [ -f Makefile ] ; then
+ if $sudo make clobber >$tmp.out 2>&1
+ then
+ :
+ else
+ cat $tmp.out
+ echo "Arrgh, make clobber failed"
+ exit
+ fi
+
+ if $sudo make >$tmp.out 2>&1
+ then
+ :
+ else
+ cat $tmp.out
+ echo "Arrgh, make failed"
+ exit
+ fi
+fi
+
+echo
+echo "=== default $iam agent installation ==="
+$sudo ./Remove >$tmp.out 2>&1
+$sudo ./Install </dev/null >>$tmp.out 2>&1
+
+# cp $tmp.out $here/$seq.full
+
+_filter <$tmp.out
+
+echo
+echo "=== validate pmns ==="
+pminfo $iam
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter <$tmp.out
+
+status=0
+exit
diff --git a/qa/565.irix b/qa/565.irix
new file mode 100644
index 0000000..0c87228
--- /dev/null
+++ b/qa/565.irix
@@ -0,0 +1,45 @@
+QA output created by 565
+
+=== default sendmail agent installation ===
+Culling the Performance Metrics Name Space ...
+sendmail ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Installing pmchart view(s) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have appeared ... 9 metrics and N values
+
+=== validate pmns ===
+sendmail.start_date
+sendmail.permailer.msgs_from
+sendmail.permailer.bytes_from
+sendmail.permailer.msgs_to
+sendmail.permailer.bytes_to
+sendmail.total.msgs_from
+sendmail.total.bytes_from
+sendmail.total.msgs_to
+sendmail.total.bytes_to
+
+=== remove sendmail agent ===
+Culling the Performance Metrics Name Space ...
+sendmail ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/565.linux b/qa/565.linux
new file mode 100644
index 0000000..7a471b8
--- /dev/null
+++ b/qa/565.linux
@@ -0,0 +1,43 @@
+QA output created by 565
+
+=== default sendmail agent installation ===
+Culling the Performance Metrics Name Space ...
+sendmail ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have appeared ... 9 metrics and N values
+
+=== validate pmns ===
+sendmail.start_date
+sendmail.permailer.msgs_from
+sendmail.permailer.bytes_from
+sendmail.permailer.msgs_to
+sendmail.permailer.bytes_to
+sendmail.total.msgs_from
+sendmail.total.bytes_from
+sendmail.total.msgs_to
+sendmail.total.bytes_to
+
+=== remove sendmail agent ===
+Culling the Performance Metrics Name Space ...
+sendmail ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/565.out.2 b/qa/565.out.2
new file mode 100644
index 0000000..781e230
--- /dev/null
+++ b/qa/565.out.2
@@ -0,0 +1,38 @@
+QA output created by 565
+
+=== default sendmail agent installation ===
+Culling the Performance Metrics Name Space ...
+sendmail ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have appeared ... 9 metrics and N values
+
+=== validate pmns ===
+sendmail.start_date
+sendmail.permailer.msgs_from
+sendmail.permailer.bytes_from
+sendmail.permailer.msgs_to
+sendmail.permailer.bytes_to
+sendmail.total.msgs_from
+sendmail.total.bytes_from
+sendmail.total.msgs_to
+sendmail.total.bytes_to
+
+=== remove sendmail agent ===
+Culling the Performance Metrics Name Space ...
+sendmail ... done
+Updating the PMCD control file, and notifying PMCD ...
+Check sendmail metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/566 b/qa/566
new file mode 100755
index 0000000..c49883d
--- /dev/null
+++ b/qa/566
@@ -0,0 +1,115 @@
+#!/bin/sh
+# PCP QA Test No. 566
+# basic pmlogcheck workout
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_notrun "pending reconciliation of old pmlogcheck with new pmlogcheck"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+mkdir $tmp
+
+_filter()
+{
+ echo >>$seq.full
+ echo "stdout" >>$seq.full
+ cat $tmp.out >>$seq.full
+ echo "stderr" >>$seq.full
+ cat $tmp.err >>$seq.full
+ sed $tmp.out -e "s;$tmp;TMP;g" | LC_COLLATE=POSIX sort
+ sed $tmp.err -e "s;$tmp;TMP;g"
+}
+
+# real QA test starts here
+echo "=== directory traversal and file checks ==="
+cp src/foo.index $tmp
+echo; echo "TMP/foo.index alone:"
+pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
+_filter
+cp src/foo.0 $tmp
+echo; echo "TMP/foo.meta missing:"
+pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
+_filter
+rm $tmp/foo.0
+cp src/foo.meta $tmp
+echo; echo "TMP/foo.0 missing:"
+pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
+_filter
+cp src/foo.0 $tmp
+touch $tmp/foo
+touch $tmp/foo.
+touch $tmp/foobar.0
+touch $tmp/foo.999999
+touch $tmp/foo.1
+chmod 0 $tmp/foo.1
+touch $tmp/foo.bar
+touch $tmp/foo.99x99
+echo; echo "TMP/bar:"
+pmlogcheck -v $tmp/bar >$tmp.out 2>$tmp.err
+_filter
+echo; echo "TMP/foo:"
+pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
+_filter
+cd $tmp
+echo; echo "foo:"
+pmlogcheck -v foo >$tmp.out 2>$tmp.err
+_filter
+chmod 644 $tmp/foo.1
+echo; echo "foo:"
+pmlogcheck -v foo.index >$tmp.out 2>$tmp.err
+_filter
+cd $here
+
+echo
+echo "=== pass 0 failures ==="
+for arch in src/badlen-*.meta src/badti-1
+do
+ # some of the bad archives do not have pass 0 style corruption,
+ # so skip these ones for now
+ #
+ case $arch
+ in
+ src/badlen-0.meta|src/badlen-8.meta)
+ ;;
+ *)
+ echo; echo "$arch:"
+ pmlogcheck -v $arch >$tmp.out 2>$tmp.err
+ _filter
+ ;;
+ esac
+done
+
+echo
+echo "=== pass 1 failures ==="
+for arch in src/badti-*.meta
+do
+ # some of the bad archives do not have pass 1 style corruption,
+ # so skip these ones for now
+ #
+ case $arch
+ in
+ src/badti-1.meta)
+ ;;
+ *)
+ echo; echo "$arch:"
+ pmlogcheck -v $arch >$tmp.out 2>$tmp.err
+ _filter
+ ;;
+ esac
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/566.out b/qa/566.out
new file mode 100644
index 0000000..7843348
--- /dev/null
+++ b/qa/566.out
@@ -0,0 +1,172 @@
+QA output created by 566
+=== directory traversal and file checks ===
+
+TMP/foo.index alone:
+Cannot continue ... bye
+Scanning for components of archive "TMP/foo"
+pass0: TMP/foo.index:
+pmlogcheck: Missing metadata file (TMP/foo.meta)
+pmlogcheck: Missing log file (TMP/foo.0 or similar)
+
+TMP/foo.meta missing:
+Cannot continue ... bye
+Scanning for components of archive "TMP/foo"
+pass0: TMP/foo.0:
+pass0: TMP/foo.index:
+pmlogcheck: Missing metadata file (TMP/foo.meta)
+
+TMP/foo.0 missing:
+Cannot continue ... bye
+Scanning for components of archive "TMP/foo"
+pass0: TMP/foo.index:
+pass0: TMP/foo.meta:
+pmlogcheck: Missing log file (TMP/foo.0 or similar)
+
+TMP/bar:
+Scanning for components of archive "TMP/bar"
+pmlogcheck: No PCP archive files match "TMP/bar"
+
+TMP/foo:
+Cannot continue ... bye
+Scanning for components of archive "TMP/foo"
+TMP/foo.999999: contains no PCP data
+pass0: TMP/foo.0:
+pass0: TMP/foo.1:
+pass0: TMP/foo.999999:
+pass0: TMP/foo.index:
+pass0: TMP/foo.meta:
+pmlogcheck: Cannot open "TMP/foo.1": Permission denied
+
+foo:
+./foo.999999: contains no PCP data
+Cannot continue ... bye
+Scanning for components of archive "foo"
+pass0: ./foo.0:
+pass0: ./foo.1:
+pass0: ./foo.999999:
+pass0: ./foo.index:
+pass0: ./foo.meta:
+pmlogcheck: Cannot open "./foo.1": Permission denied
+
+foo:
+./foo.1: contains no PCP data
+./foo.999999: contains no PCP data
+Scanning for components of archive "foo.index"
+pass0: ./foo.0:
+pass0: ./foo.1:
+pass0: ./foo.999999:
+pass0: ./foo.index:
+pass0: ./foo.meta:
+pass1: check temporal index
+
+=== pass 0 failures ===
+
+src/badlen-1.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-1.meta"
+pass0: src/badlen-1.0:
+pass0: src/badlen-1.index:
+pass0: src/badlen-1.meta:
+src/badlen-1.0[record 1]: length mismatch: header 132 != trailer 128
+
+src/badlen-10.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-10.meta"
+pass0: src/badlen-10.0:
+pass0: src/badlen-10.index:
+pass0: src/badlen-10.meta:
+src/badlen-10.0: unexpected EOF in label record trailer
+
+src/badlen-11.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-11.meta"
+pass0: src/badlen-11.0:
+pass0: src/badlen-11.index:
+pass0: src/badlen-11.meta:
+src/badlen-11.0[record 1]: unexpected EOF in record header
+
+src/badlen-2.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-2.meta"
+pass0: src/badlen-2.0:
+pass0: src/badlen-2.index:
+pass0: src/badlen-2.meta:
+src/badlen-2.0[record 1]: unexpected EOF in record trailer
+
+src/badlen-3.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-3.meta"
+pass0: src/badlen-3.0:
+pass0: src/badlen-3.index:
+pass0: src/badlen-3.meta:
+src/badlen-3.0[record 1]: unexpected EOF in record body
+
+src/badlen-4.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-4.meta"
+pass0: src/badlen-4.0:
+pass0: src/badlen-4.index:
+pass0: src/badlen-4.meta:
+src/badlen-4.0[record 0]: unexpected EOF in record header
+
+src/badlen-5.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-5.meta"
+pass0: src/badlen-5.0:
+pass0: src/badlen-5.index:
+pass0: src/badlen-5.meta:
+src/badlen-5.0: unexpected EOF in label record body
+
+src/badlen-6.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-6.meta"
+pass0: src/badlen-6.0:
+pass0: src/badlen-6.index:
+pass0: src/badlen-6.meta:
+src/badlen-6.0: label record length mismatch: header 64 != trailer 0
+
+src/badlen-7.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-7.meta"
+pass0: src/badlen-7.0:
+pass0: src/badlen-7.index:
+pass0: src/badlen-7.meta:
+src/badlen-7.0: label record length mismatch: header 132 != trailer 64
+
+src/badlen-9.meta:
+Cannot continue ... bye
+Scanning for components of archive "src/badlen-9.meta"
+pass0: src/badlen-9.0:
+pass0: src/badlen-9.index:
+pass0: src/badlen-9.meta:
+src/badlen-9.meta[record 11]: unexpected EOF in record body
+
+src/badti-1:
+Cannot continue ... bye
+Scanning for components of archive "src/badti-1"
+pass0: src/badti-1.0:
+pass0: src/badti-1.index:
+pass0: src/badti-1.meta:
+src/badti-1.index[record 2]: unexpected EOF in index entry
+
+=== pass 1 failures ===
+
+src/badti-2.meta:
+Scanning for components of archive "src/badti-2.meta"
+badti-2.index: timestamp went backwards in time 902428473.248687[entry 2]-> -2.-00004[entry 3]
+badti-2.index[entry 1]: Illegal timestamp value (902428472 sec, 1000000 usec)
+badti-2.index[entry 1]: illegal volume number -1
+badti-2.index[entry 3]: Illegal timestamp value (-2 sec, -4 usec)
+pass0: src/badti-2.0:
+pass0: src/badti-2.index:
+pass0: src/badti-2.meta:
+pass1: check temporal index
+
+src/badti-3.meta:
+Scanning for components of archive "src/badti-3.meta"
+badti-3.index[entry 3]: offset to log (1977) past end of file (1976)
+badti-3.index[entry 3]: offset to metadata (852) past end of file (851)
+pass0: src/badti-3.0:
+pass0: src/badti-3.index:
+pass0: src/badti-3.meta:
+pass1: check temporal index
diff --git a/qa/569 b/qa/569
new file mode 100755
index 0000000..5cf9a2f
--- /dev/null
+++ b/qa/569
@@ -0,0 +1,122 @@
+#!/bin/sh
+# PCP QA Test No. 569
+# exercise pmprobe, and pv 679693 in particular
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/^sample\.many\./d' \
+ -e '/^sample\.bigid/d' \
+ -e '/sample\.byte_/d' \
+ -e '/sample\.kbyte_/d' \
+ -e '/sample\.dynamic\.meta/d' \
+ -e '/sample\.datasize/d' \
+ -e '/sample\.darkness/d' \
+ -e '/sample\.scramble/d' \
+ -e '/^sample\.mirage/s/ [0-9].*/ NUMVAL VAL or INST .../' \
+ -e '/^sample\.dynamic\./s/ [0-9].*/ NUMVAL VAL or INST .../' \
+ -e '/sample\.wrap\./{
+s/ -*[0-9][0-9]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\.daemon_pid /{
+s/ [0-9][0-9]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\..*\.write_me /{
+s/ [0-9][0-9]*/ NUMBER/g
+s/ ".*"/ "STRING"/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\..*seconds /{
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\.colour /{
+s/ \([0-9]\)/ X\1/
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ X/ /
+}' \
+ -e '/sample\.drift /{
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\.step/{
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\..*pdu /{
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\.rapid /{
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\.dodgey\./{
+s/ \([0-9]\)/ X\1/
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ X/ /
+}' \
+ -e '/sample\.magnitude /{
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\.scale_step\./{
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ NUMBER/ 1/
+}' \
+ -e '/sample\.lights /s/ ".*"/ "STRING"/g' \
+ -e '/sample\.sysinfo 1/d' \
+ -e '/sample\.secret\.foo\.bar\.max\.redirect/{
+s/ [0-9][0-9.]*.*/ NUMBER .../g
+}' \
+ -e '/sample\.event\.records/s/\[.*/[RECORDS]/' \
+ -e '/sample\.event\.highres_records/s/\[.*/[RECORDS]/' \
+ -e '/sample\.event\.no_indom_records/s/\[.*/[RECORDS]/' \
+ -e '/sample\.event\.reset_highres/{
+s/ \([0-9]\)/ X\1/
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ X/ /
+}' \
+ -e '/sample\.event\.reset/{
+s/ \([0-9]\)/ X\1/
+s/ [0-9][0-9.]*/ NUMBER/g
+s/ X/ /
+}' \
+ | $PCP_AWK_PROG '
+( $1 == "sample.percontext.control.ctx" ||
+ $1 == "sample.percontext.control.active" ||
+ $1 == "sample.percontext.control.start" ||
+ $1 == "sample.percontext.control.end") &&
+$3 ~ /^[0-9][0-9]*$/ { $3 = "NUMBER" }
+ { print }' \
+ | fold -w160
+}
+
+# real QA test starts here
+for arg in '' -i -I -v -iI -iv -iIv
+do
+ echo
+ echo "=== $arg ==="
+ pmprobe $arg sample \
+ | _filter
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/569.out b/qa/569.out
new file mode 100644
index 0000000..ad94619
--- /dev/null
+++ b/qa/569.out
@@ -0,0 +1,879 @@
+QA output created by 569
+
+=== ===
+sample.control 1
+sample.daemon_pid 1
+sample.seconds 1
+sample.milliseconds 1
+sample.load 1
+sample.colour 3
+sample.bin 9
+sample.bucket 9
+sample.part_bin 5
+sample.bogus_bin 9
+sample.drift 1
+sample.step 1
+sample.step_counter 1
+sample.mirage NUMVAL VAL or INST ...
+sample.mirage_longlong NUMVAL VAL or INST ...
+sample.write_me 1
+sample.lights 1
+sample.magnitude 1
+sample.pdu 1
+sample.recv_pdu 1
+sample.xmit_pdu 1
+sample.noinst 0
+sample.needprofile -12365 Explicit instance identifier(s) required
+sample.not_ready 1
+sample.rapid 1
+sample.error_code 1
+sample.error_check 1
+sample.secret.foo.bar.max.redirect NUMBER ...
+sample.secret.bar 1
+sample.secret.foo.one 1
+sample.secret.foo.two 1
+sample.secret.foo.bar.three 1
+sample.secret.foo.bar.four 1
+sample.secret.foo.bar.grunt.five 1
+sample.secret.foo.bar.grunt.snort.six 1
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1
+sample.long.one 1
+sample.long.ten 1
+sample.long.hundred 1
+sample.long.million 1
+sample.long.write_me 1
+sample.long.bin 9
+sample.long.bin_ctr 9
+sample.ulong.one 1
+sample.ulong.ten 1
+sample.ulong.hundred 1
+sample.ulong.million 1
+sample.ulong.write_me 1
+sample.ulong.bin 9
+sample.ulong.bin_ctr 9
+sample.ulong.count.base 1
+sample.ulong.count.deca 1
+sample.ulong.count.hecto 1
+sample.ulong.count.kilo 1
+sample.ulong.count.mega 1
+sample.longlong.one 1
+sample.longlong.ten 1
+sample.longlong.hundred 1
+sample.longlong.million 1
+sample.longlong.write_me 1
+sample.longlong.bin 9
+sample.longlong.bin_ctr 9
+sample.ulonglong.one 1
+sample.ulonglong.ten 1
+sample.ulonglong.hundred 1
+sample.ulonglong.million 1
+sample.ulonglong.write_me 1
+sample.ulonglong.bin 9
+sample.ulonglong.bin_ctr 9
+sample.float.one 1
+sample.float.ten 1
+sample.float.hundred 1
+sample.float.million 1
+sample.float.write_me 1
+sample.float.bin 9
+sample.float.bin_ctr 9
+sample.double.one 1
+sample.double.ten 1
+sample.double.hundred 1
+sample.double.million 1
+sample.double.write_me 1
+sample.double.bin 9
+sample.double.bin_ctr 9
+sample.string.null 1
+sample.string.hullo 1
+sample.string.write_me 1
+sample.aggregate.null 1
+sample.aggregate.hullo 1
+sample.aggregate.write_me 1
+sample.hordes.one 500
+sample.hordes.two 500
+sample.bad.unknown -12358 Unknown or illegal metric identifier
+sample.bad.nosupport -12350 Metric not supported by this version of monitored application
+sample.bad.novalues 0
+sample.wrap.long 1
+sample.wrap.ulong 1
+sample.wrap.longlong 1
+sample.wrap.ulonglong 1
+sample.dodgey.control 1
+sample.dodgey.value 5
+sample.dynamic.counter NUMVAL VAL or INST ...
+sample.dynamic.discrete NUMVAL VAL or INST ...
+sample.dynamic.instant NUMVAL VAL or INST ...
+sample.scale_step.bytes_up 1
+sample.scale_step.bytes_down 1
+sample.scale_step.count_up 1
+sample.scale_step.count_down 1
+sample.scale_step.time_up_secs 1
+sample.scale_step.time_up_nanosecs 1
+sample.scale_step.none_up 1
+sample.const_rate.value 1
+sample.const_rate.gradient 1
+sample.percontext.pdu 1
+sample.percontext.recv_pdu 1
+sample.percontext.xmit_pdu 1
+sample.percontext.control.ctx 1
+sample.percontext.control.active 1
+sample.percontext.control.start 1
+sample.percontext.control.end 1
+sample.event.records 2
+sample.event.highres_records 2
+sample.event.no_indom_records 1
+sample.event.reset 1
+sample.event.reset_highres 1
+sample.event.type 0
+sample.event.param_32 0
+sample.event.param_u32 0
+sample.event.param_64 0
+sample.event.param_u64 0
+sample.event.param_float 0
+sample.event.param_double 0
+sample.event.param_string 0
+sample.event.param_aggregate 0
+
+=== -i ===
+sample.control 1 PM_IN_NULL
+sample.daemon_pid 1 PM_IN_NULL
+sample.seconds 1 PM_IN_NULL
+sample.milliseconds 1 PM_IN_NULL
+sample.load 1 PM_IN_NULL
+sample.colour 3 ?0 ?1 ?2
+sample.bin 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.bucket 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.part_bin 5 ?100 ?300 ?500 ?700 ?900
+sample.bogus_bin 9 ?100 ?250 ?300 ?450 ?500 ?650 ?700 ?850 ?900
+sample.drift 1 PM_IN_NULL
+sample.step 1 PM_IN_NULL
+sample.step_counter 1 PM_IN_NULL
+sample.mirage NUMVAL VAL or INST ...
+sample.mirage_longlong NUMVAL VAL or INST ...
+sample.write_me 1 PM_IN_NULL
+sample.lights 1 PM_IN_NULL
+sample.magnitude 1 PM_IN_NULL
+sample.pdu 1 PM_IN_NULL
+sample.recv_pdu 1 PM_IN_NULL
+sample.xmit_pdu 1 PM_IN_NULL
+sample.noinst 0
+sample.needprofile -12365 Explicit instance identifier(s) required
+sample.not_ready 1 PM_IN_NULL
+sample.rapid 1 PM_IN_NULL
+sample.error_code 1 PM_IN_NULL
+sample.error_check 1 PM_IN_NULL
+sample.secret.foo.bar.max.redirect NUMBER ...
+sample.secret.bar 1 PM_IN_NULL
+sample.secret.foo.one 1 PM_IN_NULL
+sample.secret.foo.two 1 PM_IN_NULL
+sample.secret.foo.bar.three 1 PM_IN_NULL
+sample.secret.foo.bar.four 1 PM_IN_NULL
+sample.secret.foo.bar.grunt.five 1 PM_IN_NULL
+sample.secret.foo.bar.grunt.snort.six 1 PM_IN_NULL
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1 PM_IN_NULL
+sample.long.one 1 PM_IN_NULL
+sample.long.ten 1 PM_IN_NULL
+sample.long.hundred 1 PM_IN_NULL
+sample.long.million 1 PM_IN_NULL
+sample.long.write_me 1 PM_IN_NULL
+sample.long.bin 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.long.bin_ctr 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.ulong.one 1 PM_IN_NULL
+sample.ulong.ten 1 PM_IN_NULL
+sample.ulong.hundred 1 PM_IN_NULL
+sample.ulong.million 1 PM_IN_NULL
+sample.ulong.write_me 1 PM_IN_NULL
+sample.ulong.bin 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.ulong.bin_ctr 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.ulong.count.base 1 PM_IN_NULL
+sample.ulong.count.deca 1 PM_IN_NULL
+sample.ulong.count.hecto 1 PM_IN_NULL
+sample.ulong.count.kilo 1 PM_IN_NULL
+sample.ulong.count.mega 1 PM_IN_NULL
+sample.longlong.one 1 PM_IN_NULL
+sample.longlong.ten 1 PM_IN_NULL
+sample.longlong.hundred 1 PM_IN_NULL
+sample.longlong.million 1 PM_IN_NULL
+sample.longlong.write_me 1 PM_IN_NULL
+sample.longlong.bin 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.longlong.bin_ctr 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.ulonglong.one 1 PM_IN_NULL
+sample.ulonglong.ten 1 PM_IN_NULL
+sample.ulonglong.hundred 1 PM_IN_NULL
+sample.ulonglong.million 1 PM_IN_NULL
+sample.ulonglong.write_me 1 PM_IN_NULL
+sample.ulonglong.bin 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.ulonglong.bin_ctr 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.float.one 1 PM_IN_NULL
+sample.float.ten 1 PM_IN_NULL
+sample.float.hundred 1 PM_IN_NULL
+sample.float.million 1 PM_IN_NULL
+sample.float.write_me 1 PM_IN_NULL
+sample.float.bin 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.float.bin_ctr 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.double.one 1 PM_IN_NULL
+sample.double.ten 1 PM_IN_NULL
+sample.double.hundred 1 PM_IN_NULL
+sample.double.million 1 PM_IN_NULL
+sample.double.write_me 1 PM_IN_NULL
+sample.double.bin 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.double.bin_ctr 9 ?100 ?200 ?300 ?400 ?500 ?600 ?700 ?800 ?900
+sample.string.null 1 PM_IN_NULL
+sample.string.hullo 1 PM_IN_NULL
+sample.string.write_me 1 PM_IN_NULL
+sample.aggregate.null 1 PM_IN_NULL
+sample.aggregate.hullo 1 PM_IN_NULL
+sample.aggregate.write_me 1 PM_IN_NULL
+sample.hordes.one 500 ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10 ?11 ?12 ?13 ?14 ?15 ?16 ?17 ?18 ?19 ?20 ?21 ?22 ?23 ?24 ?25 ?26 ?27 ?28 ?29 ?30 ?31 ?32 ?33 ?34 ?35 ?36
+?37 ?38 ?39 ?40 ?41 ?42 ?43 ?44 ?45 ?46 ?47 ?48 ?49 ?50 ?51 ?52 ?53 ?54 ?55 ?56 ?57 ?58 ?59 ?60 ?61 ?62 ?63 ?64 ?65 ?66 ?67 ?68 ?69 ?70 ?71 ?72 ?73 ?74 ?75 ?76
+?77 ?78 ?79 ?80 ?81 ?82 ?83 ?84 ?85 ?86 ?87 ?88 ?89 ?90 ?91 ?92 ?93 ?94 ?95 ?96 ?97 ?98 ?99 ?100 ?101 ?102 ?103 ?104 ?105 ?106 ?107 ?108 ?109 ?110 ?111 ?112 ?11
+3 ?114 ?115 ?116 ?117 ?118 ?119 ?120 ?121 ?122 ?123 ?124 ?125 ?126 ?127 ?128 ?129 ?130 ?131 ?132 ?133 ?134 ?135 ?136 ?137 ?138 ?139 ?140 ?141 ?142 ?143 ?144 ?14
+5 ?146 ?147 ?148 ?149 ?150 ?151 ?152 ?153 ?154 ?155 ?156 ?157 ?158 ?159 ?160 ?161 ?162 ?163 ?164 ?165 ?166 ?167 ?168 ?169 ?170 ?171 ?172 ?173 ?174 ?175 ?176 ?17
+7 ?178 ?179 ?180 ?181 ?182 ?183 ?184 ?185 ?186 ?187 ?188 ?189 ?190 ?191 ?192 ?193 ?194 ?195 ?196 ?197 ?198 ?199 ?200 ?201 ?202 ?203 ?204 ?205 ?206 ?207 ?208 ?20
+9 ?210 ?211 ?212 ?213 ?214 ?215 ?216 ?217 ?218 ?219 ?220 ?221 ?222 ?223 ?224 ?225 ?226 ?227 ?228 ?229 ?230 ?231 ?232 ?233 ?234 ?235 ?236 ?237 ?238 ?239 ?240 ?24
+1 ?242 ?243 ?244 ?245 ?246 ?247 ?248 ?249 ?250 ?251 ?252 ?253 ?254 ?255 ?256 ?257 ?258 ?259 ?260 ?261 ?262 ?263 ?264 ?265 ?266 ?267 ?268 ?269 ?270 ?271 ?272 ?27
+3 ?274 ?275 ?276 ?277 ?278 ?279 ?280 ?281 ?282 ?283 ?284 ?285 ?286 ?287 ?288 ?289 ?290 ?291 ?292 ?293 ?294 ?295 ?296 ?297 ?298 ?299 ?300 ?301 ?302 ?303 ?304 ?30
+5 ?306 ?307 ?308 ?309 ?310 ?311 ?312 ?313 ?314 ?315 ?316 ?317 ?318 ?319 ?320 ?321 ?322 ?323 ?324 ?325 ?326 ?327 ?328 ?329 ?330 ?331 ?332 ?333 ?334 ?335 ?336 ?33
+7 ?338 ?339 ?340 ?341 ?342 ?343 ?344 ?345 ?346 ?347 ?348 ?349 ?350 ?351 ?352 ?353 ?354 ?355 ?356 ?357 ?358 ?359 ?360 ?361 ?362 ?363 ?364 ?365 ?366 ?367 ?368 ?36
+9 ?370 ?371 ?372 ?373 ?374 ?375 ?376 ?377 ?378 ?379 ?380 ?381 ?382 ?383 ?384 ?385 ?386 ?387 ?388 ?389 ?390 ?391 ?392 ?393 ?394 ?395 ?396 ?397 ?398 ?399 ?400 ?40
+1 ?402 ?403 ?404 ?405 ?406 ?407 ?408 ?409 ?410 ?411 ?412 ?413 ?414 ?415 ?416 ?417 ?418 ?419 ?420 ?421 ?422 ?423 ?424 ?425 ?426 ?427 ?428 ?429 ?430 ?431 ?432 ?43
+3 ?434 ?435 ?436 ?437 ?438 ?439 ?440 ?441 ?442 ?443 ?444 ?445 ?446 ?447 ?448 ?449 ?450 ?451 ?452 ?453 ?454 ?455 ?456 ?457 ?458 ?459 ?460 ?461 ?462 ?463 ?464 ?46
+5 ?466 ?467 ?468 ?469 ?470 ?471 ?472 ?473 ?474 ?475 ?476 ?477 ?478 ?479 ?480 ?481 ?482 ?483 ?484 ?485 ?486 ?487 ?488 ?489 ?490 ?491 ?492 ?493 ?494 ?495 ?496 ?49
+7 ?498 ?499
+sample.hordes.two 500 ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10 ?11 ?12 ?13 ?14 ?15 ?16 ?17 ?18 ?19 ?20 ?21 ?22 ?23 ?24 ?25 ?26 ?27 ?28 ?29 ?30 ?31 ?32 ?33 ?34 ?35 ?36
+?37 ?38 ?39 ?40 ?41 ?42 ?43 ?44 ?45 ?46 ?47 ?48 ?49 ?50 ?51 ?52 ?53 ?54 ?55 ?56 ?57 ?58 ?59 ?60 ?61 ?62 ?63 ?64 ?65 ?66 ?67 ?68 ?69 ?70 ?71 ?72 ?73 ?74 ?75 ?76
+?77 ?78 ?79 ?80 ?81 ?82 ?83 ?84 ?85 ?86 ?87 ?88 ?89 ?90 ?91 ?92 ?93 ?94 ?95 ?96 ?97 ?98 ?99 ?100 ?101 ?102 ?103 ?104 ?105 ?106 ?107 ?108 ?109 ?110 ?111 ?112 ?11
+3 ?114 ?115 ?116 ?117 ?118 ?119 ?120 ?121 ?122 ?123 ?124 ?125 ?126 ?127 ?128 ?129 ?130 ?131 ?132 ?133 ?134 ?135 ?136 ?137 ?138 ?139 ?140 ?141 ?142 ?143 ?144 ?14
+5 ?146 ?147 ?148 ?149 ?150 ?151 ?152 ?153 ?154 ?155 ?156 ?157 ?158 ?159 ?160 ?161 ?162 ?163 ?164 ?165 ?166 ?167 ?168 ?169 ?170 ?171 ?172 ?173 ?174 ?175 ?176 ?17
+7 ?178 ?179 ?180 ?181 ?182 ?183 ?184 ?185 ?186 ?187 ?188 ?189 ?190 ?191 ?192 ?193 ?194 ?195 ?196 ?197 ?198 ?199 ?200 ?201 ?202 ?203 ?204 ?205 ?206 ?207 ?208 ?20
+9 ?210 ?211 ?212 ?213 ?214 ?215 ?216 ?217 ?218 ?219 ?220 ?221 ?222 ?223 ?224 ?225 ?226 ?227 ?228 ?229 ?230 ?231 ?232 ?233 ?234 ?235 ?236 ?237 ?238 ?239 ?240 ?24
+1 ?242 ?243 ?244 ?245 ?246 ?247 ?248 ?249 ?250 ?251 ?252 ?253 ?254 ?255 ?256 ?257 ?258 ?259 ?260 ?261 ?262 ?263 ?264 ?265 ?266 ?267 ?268 ?269 ?270 ?271 ?272 ?27
+3 ?274 ?275 ?276 ?277 ?278 ?279 ?280 ?281 ?282 ?283 ?284 ?285 ?286 ?287 ?288 ?289 ?290 ?291 ?292 ?293 ?294 ?295 ?296 ?297 ?298 ?299 ?300 ?301 ?302 ?303 ?304 ?30
+5 ?306 ?307 ?308 ?309 ?310 ?311 ?312 ?313 ?314 ?315 ?316 ?317 ?318 ?319 ?320 ?321 ?322 ?323 ?324 ?325 ?326 ?327 ?328 ?329 ?330 ?331 ?332 ?333 ?334 ?335 ?336 ?33
+7 ?338 ?339 ?340 ?341 ?342 ?343 ?344 ?345 ?346 ?347 ?348 ?349 ?350 ?351 ?352 ?353 ?354 ?355 ?356 ?357 ?358 ?359 ?360 ?361 ?362 ?363 ?364 ?365 ?366 ?367 ?368 ?36
+9 ?370 ?371 ?372 ?373 ?374 ?375 ?376 ?377 ?378 ?379 ?380 ?381 ?382 ?383 ?384 ?385 ?386 ?387 ?388 ?389 ?390 ?391 ?392 ?393 ?394 ?395 ?396 ?397 ?398 ?399 ?400 ?40
+1 ?402 ?403 ?404 ?405 ?406 ?407 ?408 ?409 ?410 ?411 ?412 ?413 ?414 ?415 ?416 ?417 ?418 ?419 ?420 ?421 ?422 ?423 ?424 ?425 ?426 ?427 ?428 ?429 ?430 ?431 ?432 ?43
+3 ?434 ?435 ?436 ?437 ?438 ?439 ?440 ?441 ?442 ?443 ?444 ?445 ?446 ?447 ?448 ?449 ?450 ?451 ?452 ?453 ?454 ?455 ?456 ?457 ?458 ?459 ?460 ?461 ?462 ?463 ?464 ?46
+5 ?466 ?467 ?468 ?469 ?470 ?471 ?472 ?473 ?474 ?475 ?476 ?477 ?478 ?479 ?480 ?481 ?482 ?483 ?484 ?485 ?486 ?487 ?488 ?489 ?490 ?491 ?492 ?493 ?494 ?495 ?496 ?49
+7 ?498 ?499
+sample.bad.unknown -12358 Unknown or illegal metric identifier (pmLookupDesc)
+sample.bad.nosupport -12350 Metric not supported by this version of monitored application
+sample.bad.novalues 0
+sample.wrap.long 1 PM_IN_NULL
+sample.wrap.ulong 1 PM_IN_NULL
+sample.wrap.longlong 1 PM_IN_NULL
+sample.wrap.ulonglong 1 PM_IN_NULL
+sample.dodgey.control 1 PM_IN_NULL
+sample.dodgey.value 5 ?1 ?2 ?3 ?4 ?5
+sample.dynamic.counter NUMVAL VAL or INST ...
+sample.dynamic.discrete NUMVAL VAL or INST ...
+sample.dynamic.instant NUMVAL VAL or INST ...
+sample.scale_step.bytes_up 1 PM_IN_NULL
+sample.scale_step.bytes_down 1 PM_IN_NULL
+sample.scale_step.count_up 1 PM_IN_NULL
+sample.scale_step.count_down 1 PM_IN_NULL
+sample.scale_step.time_up_secs 1 PM_IN_NULL
+sample.scale_step.time_up_nanosecs 1 PM_IN_NULL
+sample.scale_step.none_up 1 PM_IN_NULL
+sample.const_rate.value 1 PM_IN_NULL
+sample.const_rate.gradient 1 PM_IN_NULL
+sample.percontext.pdu 1 PM_IN_NULL
+sample.percontext.recv_pdu 1 PM_IN_NULL
+sample.percontext.xmit_pdu 1 PM_IN_NULL
+sample.percontext.control.ctx 1 PM_IN_NULL
+sample.percontext.control.active 1 PM_IN_NULL
+sample.percontext.control.start 1 PM_IN_NULL
+sample.percontext.control.end 1 PM_IN_NULL
+sample.event.records 2 ?0 ?1
+sample.event.highres_records 2 ?0 ?1
+sample.event.no_indom_records 1 PM_IN_NULL
+sample.event.reset 1 PM_IN_NULL
+sample.event.reset_highres 1 PM_IN_NULL
+sample.event.type 0
+sample.event.param_32 0
+sample.event.param_u32 0
+sample.event.param_64 0
+sample.event.param_u64 0
+sample.event.param_float 0
+sample.event.param_double 0
+sample.event.param_string 0
+sample.event.param_aggregate 0
+
+=== -I ===
+sample.control 1 PM_IN_NULL
+sample.daemon_pid 1 PM_IN_NULL
+sample.seconds 1 PM_IN_NULL
+sample.milliseconds 1 PM_IN_NULL
+sample.load 1 PM_IN_NULL
+sample.colour 3 "red" "green" "blue"
+sample.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.bucket 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.part_bin 5 "bin-100" "bin-300" "bin-500" "bin-700" "bin-900"
+sample.bogus_bin 9 "bin-100" ?250 "bin-300" ?450 "bin-500" ?650 "bin-700" ?850 "bin-900"
+sample.drift 1 PM_IN_NULL
+sample.step 1 PM_IN_NULL
+sample.step_counter 1 PM_IN_NULL
+sample.mirage NUMVAL VAL or INST ...
+sample.mirage_longlong NUMVAL VAL or INST ...
+sample.write_me 1 PM_IN_NULL
+sample.lights 1 PM_IN_NULL
+sample.magnitude 1 PM_IN_NULL
+sample.pdu 1 PM_IN_NULL
+sample.recv_pdu 1 PM_IN_NULL
+sample.xmit_pdu 1 PM_IN_NULL
+sample.noinst 0
+sample.needprofile -12365 Explicit instance identifier(s) required
+sample.not_ready 1 PM_IN_NULL
+sample.rapid 1 PM_IN_NULL
+sample.error_code 1 PM_IN_NULL
+sample.error_check 1 PM_IN_NULL
+sample.secret.foo.bar.max.redirect NUMBER ...
+sample.secret.bar 1 PM_IN_NULL
+sample.secret.foo.one 1 PM_IN_NULL
+sample.secret.foo.two 1 PM_IN_NULL
+sample.secret.foo.bar.three 1 PM_IN_NULL
+sample.secret.foo.bar.four 1 PM_IN_NULL
+sample.secret.foo.bar.grunt.five 1 PM_IN_NULL
+sample.secret.foo.bar.grunt.snort.six 1 PM_IN_NULL
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1 PM_IN_NULL
+sample.long.one 1 PM_IN_NULL
+sample.long.ten 1 PM_IN_NULL
+sample.long.hundred 1 PM_IN_NULL
+sample.long.million 1 PM_IN_NULL
+sample.long.write_me 1 PM_IN_NULL
+sample.long.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.long.bin_ctr 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.ulong.one 1 PM_IN_NULL
+sample.ulong.ten 1 PM_IN_NULL
+sample.ulong.hundred 1 PM_IN_NULL
+sample.ulong.million 1 PM_IN_NULL
+sample.ulong.write_me 1 PM_IN_NULL
+sample.ulong.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.ulong.bin_ctr 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.ulong.count.base 1 PM_IN_NULL
+sample.ulong.count.deca 1 PM_IN_NULL
+sample.ulong.count.hecto 1 PM_IN_NULL
+sample.ulong.count.kilo 1 PM_IN_NULL
+sample.ulong.count.mega 1 PM_IN_NULL
+sample.longlong.one 1 PM_IN_NULL
+sample.longlong.ten 1 PM_IN_NULL
+sample.longlong.hundred 1 PM_IN_NULL
+sample.longlong.million 1 PM_IN_NULL
+sample.longlong.write_me 1 PM_IN_NULL
+sample.longlong.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.longlong.bin_ctr 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.ulonglong.one 1 PM_IN_NULL
+sample.ulonglong.ten 1 PM_IN_NULL
+sample.ulonglong.hundred 1 PM_IN_NULL
+sample.ulonglong.million 1 PM_IN_NULL
+sample.ulonglong.write_me 1 PM_IN_NULL
+sample.ulonglong.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.ulonglong.bin_ctr 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.float.one 1 PM_IN_NULL
+sample.float.ten 1 PM_IN_NULL
+sample.float.hundred 1 PM_IN_NULL
+sample.float.million 1 PM_IN_NULL
+sample.float.write_me 1 PM_IN_NULL
+sample.float.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.float.bin_ctr 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.double.one 1 PM_IN_NULL
+sample.double.ten 1 PM_IN_NULL
+sample.double.hundred 1 PM_IN_NULL
+sample.double.million 1 PM_IN_NULL
+sample.double.write_me 1 PM_IN_NULL
+sample.double.bin 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.double.bin_ctr 9 "bin-100" "bin-200" "bin-300" "bin-400" "bin-500" "bin-600" "bin-700" "bin-800" "bin-900"
+sample.string.null 1 PM_IN_NULL
+sample.string.hullo 1 PM_IN_NULL
+sample.string.write_me 1 PM_IN_NULL
+sample.aggregate.null 1 PM_IN_NULL
+sample.aggregate.hullo 1 PM_IN_NULL
+sample.aggregate.write_me 1 PM_IN_NULL
+sample.hordes.one 500 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29
+" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" "60" "61
+" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" "90" "91" "92" "93
+" "94" "95" "96" "97" "98" "99" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120" "1
+21" "122" "123" "124" "125" "126" "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144" "145" "146" "147"
+"148" "149" "150" "151" "152" "153" "154" "155" "156" "157" "158" "159" "160" "161" "162" "163" "164" "165" "166" "167" "168" "169" "170" "171" "172" "173" "174
+" "175" "176" "177" "178" "179" "180" "181" "182" "183" "184" "185" "186" "187" "188" "189" "190" "191" "192" "193" "194" "195" "196" "197" "198" "199" "200" "2
+01" "202" "203" "204" "205" "206" "207" "208" "209" "210" "211" "212" "213" "214" "215" "216" "217" "218" "219" "220" "221" "222" "223" "224" "225" "226" "227"
+"228" "229" "230" "231" "232" "233" "234" "235" "236" "237" "238" "239" "240" "241" "242" "243" "244" "245" "246" "247" "248" "249" "250" "251" "252" "253" "254
+" "255" "256" "257" "258" "259" "260" "261" "262" "263" "264" "265" "266" "267" "268" "269" "270" "271" "272" "273" "274" "275" "276" "277" "278" "279" "280" "2
+81" "282" "283" "284" "285" "286" "287" "288" "289" "290" "291" "292" "293" "294" "295" "296" "297" "298" "299" "300" "301" "302" "303" "304" "305" "306" "307"
+"308" "309" "310" "311" "312" "313" "314" "315" "316" "317" "318" "319" "320" "321" "322" "323" "324" "325" "326" "327" "328" "329" "330" "331" "332" "333" "334
+" "335" "336" "337" "338" "339" "340" "341" "342" "343" "344" "345" "346" "347" "348" "349" "350" "351" "352" "353" "354" "355" "356" "357" "358" "359" "360" "3
+61" "362" "363" "364" "365" "366" "367" "368" "369" "370" "371" "372" "373" "374" "375" "376" "377" "378" "379" "380" "381" "382" "383" "384" "385" "386" "387"
+"388" "389" "390" "391" "392" "393" "394" "395" "396" "397" "398" "399" "400" "401" "402" "403" "404" "405" "406" "407" "408" "409" "410" "411" "412" "413" "414
+" "415" "416" "417" "418" "419" "420" "421" "422" "423" "424" "425" "426" "427" "428" "429" "430" "431" "432" "433" "434" "435" "436" "437" "438" "439" "440" "4
+41" "442" "443" "444" "445" "446" "447" "448" "449" "450" "451" "452" "453" "454" "455" "456" "457" "458" "459" "460" "461" "462" "463" "464" "465" "466" "467"
+"468" "469" "470" "471" "472" "473" "474" "475" "476" "477" "478" "479" "480" "481" "482" "483" "484" "485" "486" "487" "488" "489" "490" "491" "492" "493" "494
+" "495" "496" "497" "498" "499"
+sample.hordes.two 500 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29
+" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" "60" "61
+" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" "90" "91" "92" "93
+" "94" "95" "96" "97" "98" "99" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120" "1
+21" "122" "123" "124" "125" "126" "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144" "145" "146" "147"
+"148" "149" "150" "151" "152" "153" "154" "155" "156" "157" "158" "159" "160" "161" "162" "163" "164" "165" "166" "167" "168" "169" "170" "171" "172" "173" "174
+" "175" "176" "177" "178" "179" "180" "181" "182" "183" "184" "185" "186" "187" "188" "189" "190" "191" "192" "193" "194" "195" "196" "197" "198" "199" "200" "2
+01" "202" "203" "204" "205" "206" "207" "208" "209" "210" "211" "212" "213" "214" "215" "216" "217" "218" "219" "220" "221" "222" "223" "224" "225" "226" "227"
+"228" "229" "230" "231" "232" "233" "234" "235" "236" "237" "238" "239" "240" "241" "242" "243" "244" "245" "246" "247" "248" "249" "250" "251" "252" "253" "254
+" "255" "256" "257" "258" "259" "260" "261" "262" "263" "264" "265" "266" "267" "268" "269" "270" "271" "272" "273" "274" "275" "276" "277" "278" "279" "280" "2
+81" "282" "283" "284" "285" "286" "287" "288" "289" "290" "291" "292" "293" "294" "295" "296" "297" "298" "299" "300" "301" "302" "303" "304" "305" "306" "307"
+"308" "309" "310" "311" "312" "313" "314" "315" "316" "317" "318" "319" "320" "321" "322" "323" "324" "325" "326" "327" "328" "329" "330" "331" "332" "333" "334
+" "335" "336" "337" "338" "339" "340" "341" "342" "343" "344" "345" "346" "347" "348" "349" "350" "351" "352" "353" "354" "355" "356" "357" "358" "359" "360" "3
+61" "362" "363" "364" "365" "366" "367" "368" "369" "370" "371" "372" "373" "374" "375" "376" "377" "378" "379" "380" "381" "382" "383" "384" "385" "386" "387"
+"388" "389" "390" "391" "392" "393" "394" "395" "396" "397" "398" "399" "400" "401" "402" "403" "404" "405" "406" "407" "408" "409" "410" "411" "412" "413" "414
+" "415" "416" "417" "418" "419" "420" "421" "422" "423" "424" "425" "426" "427" "428" "429" "430" "431" "432" "433" "434" "435" "436" "437" "438" "439" "440" "4
+41" "442" "443" "444" "445" "446" "447" "448" "449" "450" "451" "452" "453" "454" "455" "456" "457" "458" "459" "460" "461" "462" "463" "464" "465" "466" "467"
+"468" "469" "470" "471" "472" "473" "474" "475" "476" "477" "478" "479" "480" "481" "482" "483" "484" "485" "486" "487" "488" "489" "490" "491" "492" "493" "494
+" "495" "496" "497" "498" "499"
+sample.bad.unknown -12358 Unknown or illegal metric identifier (pmLookupDesc)
+sample.bad.nosupport -12350 Metric not supported by this version of monitored application
+sample.bad.novalues 0
+sample.wrap.long 1 PM_IN_NULL
+sample.wrap.ulong 1 PM_IN_NULL
+sample.wrap.longlong 1 PM_IN_NULL
+sample.wrap.ulonglong 1 PM_IN_NULL
+sample.dodgey.control 1 PM_IN_NULL
+sample.dodgey.value 5 "d1" "d2" "d3" "d4" "d5"
+sample.dynamic.counter NUMVAL VAL or INST ...
+sample.dynamic.discrete NUMVAL VAL or INST ...
+sample.dynamic.instant NUMVAL VAL or INST ...
+sample.scale_step.bytes_up 1 PM_IN_NULL
+sample.scale_step.bytes_down 1 PM_IN_NULL
+sample.scale_step.count_up 1 PM_IN_NULL
+sample.scale_step.count_down 1 PM_IN_NULL
+sample.scale_step.time_up_secs 1 PM_IN_NULL
+sample.scale_step.time_up_nanosecs 1 PM_IN_NULL
+sample.scale_step.none_up 1 PM_IN_NULL
+sample.const_rate.value 1 PM_IN_NULL
+sample.const_rate.gradient 1 PM_IN_NULL
+sample.percontext.pdu 1 PM_IN_NULL
+sample.percontext.recv_pdu 1 PM_IN_NULL
+sample.percontext.xmit_pdu 1 PM_IN_NULL
+sample.percontext.control.ctx 1 PM_IN_NULL
+sample.percontext.control.active 1 PM_IN_NULL
+sample.percontext.control.start 1 PM_IN_NULL
+sample.percontext.control.end 1 PM_IN_NULL
+sample.event.records 2 "fungus" "bogus"
+sample.event.highres_records 2 "fungus" "bogus"
+sample.event.no_indom_records 1 PM_IN_NULL
+sample.event.reset 1 PM_IN_NULL
+sample.event.reset_highres 1 PM_IN_NULL
+sample.event.type 0
+sample.event.param_32 0
+sample.event.param_u32 0
+sample.event.param_64 0
+sample.event.param_u64 0
+sample.event.param_float 0
+sample.event.param_double 0
+sample.event.param_string 0
+sample.event.param_aggregate 0
+
+=== -v ===
+sample.control 1 0
+sample.daemon_pid 1 NUMBER
+sample.seconds 1 NUMBER
+sample.milliseconds 1 NUMBER
+sample.load 1 42
+sample.colour 3 NUMBER NUMBER NUMBER
+sample.bin 9 100 200 300 400 500 600 700 800 900
+sample.bucket 9 100 200 300 400 500 600 700 800 900
+sample.part_bin 5 100 300 500 700 900
+sample.bogus_bin 9 100 250 300 450 500 650 700 850 900
+sample.drift 1 NUMBER
+sample.step 1 NUMBER
+sample.step_counter 1 NUMBER
+sample.mirage NUMVAL VAL or INST ...
+sample.mirage_longlong NUMVAL VAL or INST ...
+sample.write_me 1 2
+sample.lights 1 "STRING"
+sample.magnitude 1 NUMBER
+sample.pdu 1 NUMBER
+sample.recv_pdu 1 NUMBER
+sample.xmit_pdu 1 NUMBER
+sample.noinst 0
+sample.needprofile -12365 Explicit instance identifier(s) required
+sample.not_ready 1 0
+sample.rapid 1 NUMBER
+sample.error_code 1 0
+sample.error_check 1 0
+sample.secret.foo.bar.max.redirect NUMBER ...
+sample.secret.bar 1 "foo"
+sample.secret.foo.one 1 1
+sample.secret.foo.two 1 2
+sample.secret.foo.bar.three 1 3
+sample.secret.foo.bar.four 1 4
+sample.secret.foo.bar.grunt.five 1 5
+sample.secret.foo.bar.grunt.snort.six 1 6
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1 7
+sample.long.one 1 1
+sample.long.ten 1 10
+sample.long.hundred 1 100
+sample.long.million 1 1000000
+sample.long.write_me 1 NUMBER
+sample.long.bin 9 100 200 300 400 500 600 700 800 900
+sample.long.bin_ctr 9 100 200 300 400 500 600 700 800 900
+sample.ulong.one 1 1
+sample.ulong.ten 1 10
+sample.ulong.hundred 1 100
+sample.ulong.million 1 1000000
+sample.ulong.write_me 1 NUMBER
+sample.ulong.bin 9 100 200 300 400 500 600 700 800 900
+sample.ulong.bin_ctr 9 100 200 300 400 500 600 700 800 900
+sample.ulong.count.base 1 42000000
+sample.ulong.count.deca 1 4200000
+sample.ulong.count.hecto 1 420000
+sample.ulong.count.kilo 1 42000
+sample.ulong.count.mega 1 42
+sample.longlong.one 1 1
+sample.longlong.ten 1 10
+sample.longlong.hundred 1 100
+sample.longlong.million 1 1000000
+sample.longlong.write_me 1 NUMBER
+sample.longlong.bin 9 100 200 300 400 500 600 700 800 900
+sample.longlong.bin_ctr 9 100 200 300 400 500 600 700 800 900
+sample.ulonglong.one 1 1
+sample.ulonglong.ten 1 10
+sample.ulonglong.hundred 1 100
+sample.ulonglong.million 1 1000000
+sample.ulonglong.write_me 1 NUMBER
+sample.ulonglong.bin 9 100 200 300 400 500 600 700 800 900
+sample.ulonglong.bin_ctr 9 100 200 300 400 500 600 700 800 900
+sample.float.one 1 1
+sample.float.ten 1 10
+sample.float.hundred 1 100
+sample.float.million 1 1000000
+sample.float.write_me 1 NUMBER
+sample.float.bin 9 100 200 300 400 500 600 700 800 900
+sample.float.bin_ctr 9 100 200 300 400 500 600 700 800 900
+sample.double.one 1 1
+sample.double.ten 1 10
+sample.double.hundred 1 100
+sample.double.million 1 1000000
+sample.double.write_me 1 NUMBER
+sample.double.bin 9 100 200 300 400 500 600 700 800 900
+sample.double.bin_ctr 9 100 200 300 400 500 600 700 800 900
+sample.string.null 1 ""
+sample.string.hullo 1 "hullo world!"
+sample.string.write_me 1 "STRING"
+sample.aggregate.null 1 "" []
+sample.aggregate.hullo 1 "hullo world!" [68756c6c6f20776f726c6421]
+sample.aggregate.write_me 1 "STRING" [3133]
+sample.hordes.one 500 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 4
+9 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
+102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
+142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
+182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
+222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
+262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
+302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
+342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381
+382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421
+422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461
+462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499
+sample.hordes.two 500 499 498 497 496 495 494 493 492 491 490 489 488 487 486 485 484 483 482 481 480 479 478 477 476 475 474 473 472 471 470 469 468 467 466 46
+5 464 463 462 461 460 459 458 457 456 455 454 453 452 451 450 449 448 447 446 445 444 443 442 441 440 439 438 437 436 435 434 433 432 431 430 429 428 427 426 42
+5 424 423 422 421 420 419 418 417 416 415 414 413 412 411 410 409 408 407 406 405 404 403 402 401 400 399 398 397 396 395 394 393 392 391 390 389 388 387 386 38
+5 384 383 382 381 380 379 378 377 376 375 374 373 372 371 370 369 368 367 366 365 364 363 362 361 360 359 358 357 356 355 354 353 352 351 350 349 348 347 346 34
+5 344 343 342 341 340 339 338 337 336 335 334 333 332 331 330 329 328 327 326 325 324 323 322 321 320 319 318 317 316 315 314 313 312 311 310 309 308 307 306 30
+5 304 303 302 301 300 299 298 297 296 295 294 293 292 291 290 289 288 287 286 285 284 283 282 281 280 279 278 277 276 275 274 273 272 271 270 269 268 267 266 26
+5 264 263 262 261 260 259 258 257 256 255 254 253 252 251 250 249 248 247 246 245 244 243 242 241 240 239 238 237 236 235 234 233 232 231 230 229 228 227 226 22
+5 224 223 222 221 220 219 218 217 216 215 214 213 212 211 210 209 208 207 206 205 204 203 202 201 200 199 198 197 196 195 194 193 192 191 190 189 188 187 186 18
+5 184 183 182 181 180 179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 14
+5 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 10
+5 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54
+53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+sample.bad.unknown -12358 Unknown or illegal metric identifier (pmLookupDesc)
+sample.bad.nosupport -12350 Metric not supported by this version of monitored application
+sample.bad.novalues 0
+sample.wrap.long 1 NUMBER
+sample.wrap.ulong 1 NUMBER
+sample.wrap.longlong 1 NUMBER
+sample.wrap.ulonglong 1 NUMBER
+sample.dodgey.control 1 NUMBER
+sample.dodgey.value 5 NUMBER NUMBER NUMBER NUMBER NUMBER
+sample.dynamic.counter NUMVAL VAL or INST ...
+sample.dynamic.discrete NUMVAL VAL or INST ...
+sample.dynamic.instant NUMVAL VAL or INST ...
+sample.scale_step.bytes_up 1 NUMBER
+sample.scale_step.bytes_down 1 NUMBER
+sample.scale_step.count_up 1 NUMBER
+sample.scale_step.count_down 1 NUMBER
+sample.scale_step.time_up_secs 1 NUMBER
+sample.scale_step.time_up_nanosecs 1 NUMBER
+sample.scale_step.none_up 1 NUMBER
+sample.const_rate.value 1 10485760
+sample.const_rate.gradient 1 0
+sample.percontext.pdu 1 NUMBER
+sample.percontext.recv_pdu 1 NUMBER
+sample.percontext.xmit_pdu 1 NUMBER
+sample.percontext.control.ctx 1 NUMBER
+sample.percontext.control.active 1 NUMBER
+sample.percontext.control.start 1 NUMBER
+sample.percontext.control.end 1 NUMBER
+sample.event.records 2 [RECORDS]
+sample.event.highres_records 2 [RECORDS]
+sample.event.no_indom_records 1 [RECORDS]
+sample.event.reset 1 NUMBER
+sample.event.reset_highres 1 NUMBER
+sample.event.type 0
+sample.event.param_32 0
+sample.event.param_u32 0
+sample.event.param_64 0
+sample.event.param_u64 0
+sample.event.param_float 0
+sample.event.param_double 0
+sample.event.param_string 0
+sample.event.param_aggregate 0
+
+=== -iI ===
+sample.control 1 PM_IN_NULL PM_IN_NULL
+sample.daemon_pid 1 PM_IN_NULL PM_IN_NULL
+sample.seconds 1 PM_IN_NULL PM_IN_NULL
+sample.milliseconds 1 PM_IN_NULL PM_IN_NULL
+sample.load 1 PM_IN_NULL PM_IN_NULL
+sample.colour 3 ?0 "red" ?1 "green" ?2 "blue"
+sample.bin 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.bucket 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.part_bin 5 ?100 "bin-100" ?300 "bin-300" ?500 "bin-500" ?700 "bin-700" ?900 "bin-900"
+sample.bogus_bin 9 ?100 "bin-100" ?250 ?250 ?300 "bin-300" ?450 ?450 ?500 "bin-500" ?650 ?650 ?700 "bin-700" ?850 ?850 ?900 "bin-900"
+sample.drift 1 PM_IN_NULL PM_IN_NULL
+sample.step 1 PM_IN_NULL PM_IN_NULL
+sample.step_counter 1 PM_IN_NULL PM_IN_NULL
+sample.mirage NUMVAL VAL or INST ...
+sample.mirage_longlong NUMVAL VAL or INST ...
+sample.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.lights 1 PM_IN_NULL PM_IN_NULL
+sample.magnitude 1 PM_IN_NULL PM_IN_NULL
+sample.pdu 1 PM_IN_NULL PM_IN_NULL
+sample.recv_pdu 1 PM_IN_NULL PM_IN_NULL
+sample.xmit_pdu 1 PM_IN_NULL PM_IN_NULL
+sample.noinst 0
+sample.needprofile -12365 Explicit instance identifier(s) required
+sample.not_ready 1 PM_IN_NULL PM_IN_NULL
+sample.rapid 1 PM_IN_NULL PM_IN_NULL
+sample.error_code 1 PM_IN_NULL PM_IN_NULL
+sample.error_check 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.bar.max.redirect NUMBER ...
+sample.secret.bar 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.one 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.two 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.bar.three 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.bar.four 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.bar.grunt.five 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.bar.grunt.snort.six 1 PM_IN_NULL PM_IN_NULL
+sample.secret.foo.bar.grunt.snort.huff.puff.seven 1 PM_IN_NULL PM_IN_NULL
+sample.long.one 1 PM_IN_NULL PM_IN_NULL
+sample.long.ten 1 PM_IN_NULL PM_IN_NULL
+sample.long.hundred 1 PM_IN_NULL PM_IN_NULL
+sample.long.million 1 PM_IN_NULL PM_IN_NULL
+sample.long.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.long.bin 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.long.bin_ctr 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.ulong.one 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.ten 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.hundred 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.million 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.bin 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.ulong.bin_ctr 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.ulong.count.base 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.count.deca 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.count.hecto 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.count.kilo 1 PM_IN_NULL PM_IN_NULL
+sample.ulong.count.mega 1 PM_IN_NULL PM_IN_NULL
+sample.longlong.one 1 PM_IN_NULL PM_IN_NULL
+sample.longlong.ten 1 PM_IN_NULL PM_IN_NULL
+sample.longlong.hundred 1 PM_IN_NULL PM_IN_NULL
+sample.longlong.million 1 PM_IN_NULL PM_IN_NULL
+sample.longlong.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.longlong.bin 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.longlong.bin_ctr 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.ulonglong.one 1 PM_IN_NULL PM_IN_NULL
+sample.ulonglong.ten 1 PM_IN_NULL PM_IN_NULL
+sample.ulonglong.hundred 1 PM_IN_NULL PM_IN_NULL
+sample.ulonglong.million 1 PM_IN_NULL PM_IN_NULL
+sample.ulonglong.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.ulonglong.bin 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.ulonglong.bin_ctr 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900
+"
+sample.float.one 1 PM_IN_NULL PM_IN_NULL
+sample.float.ten 1 PM_IN_NULL PM_IN_NULL
+sample.float.hundred 1 PM_IN_NULL PM_IN_NULL
+sample.float.million 1 PM_IN_NULL PM_IN_NULL
+sample.float.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.float.bin 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.float.bin_ctr 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.double.one 1 PM_IN_NULL PM_IN_NULL
+sample.double.ten 1 PM_IN_NULL PM_IN_NULL
+sample.double.hundred 1 PM_IN_NULL PM_IN_NULL
+sample.double.million 1 PM_IN_NULL PM_IN_NULL
+sample.double.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.double.bin 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.double.bin_ctr 9 ?100 "bin-100" ?200 "bin-200" ?300 "bin-300" ?400 "bin-400" ?500 "bin-500" ?600 "bin-600" ?700 "bin-700" ?800 "bin-800" ?900 "bin-900"
+sample.string.null 1 PM_IN_NULL PM_IN_NULL
+sample.string.hullo 1 PM_IN_NULL PM_IN_NULL
+sample.string.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.aggregate.null 1 PM_IN_NULL PM_IN_NULL
+sample.aggregate.hullo 1 PM_IN_NULL PM_IN_NULL
+sample.aggregate.write_me 1 PM_IN_NULL PM_IN_NULL
+sample.hordes.one 500 ?0 "0" ?1 "1" ?2 "2" ?3 "3" ?4 "4" ?5 "5" ?6 "6" ?7 "7" ?8 "8" ?9 "9" ?10 "10" ?11 "11" ?12 "12" ?13 "13" ?14 "14" ?15 "15" ?16 "16" ?17 "
+17" ?18 "18" ?19 "19" ?20 "20" ?21 "21" ?22 "22" ?23 "23" ?24 "24" ?25 "25" ?26 "26" ?27 "27" ?28 "28" ?29 "29" ?30 "30" ?31 "31" ?32 "32" ?33 "33" ?34 "34" ?35
+ "35" ?36 "36" ?37 "37" ?38 "38" ?39 "39" ?40 "40" ?41 "41" ?42 "42" ?43 "43" ?44 "44" ?45 "45" ?46 "46" ?47 "47" ?48 "48" ?49 "49" ?50 "50" ?51 "51" ?52 "52" ?
+53 "53" ?54 "54" ?55 "55" ?56 "56" ?57 "57" ?58 "58" ?59 "59" ?60 "60" ?61 "61" ?62 "62" ?63 "63" ?64 "64" ?65 "65" ?66 "66" ?67 "67" ?68 "68" ?69 "69" ?70 "70"
+ ?71 "71" ?72 "72" ?73 "73" ?74 "74" ?75 "75" ?76 "76" ?77 "77" ?78 "78" ?79 "79" ?80 "80" ?81 "81" ?82 "82" ?83 "83" ?84 "84" ?85 "85" ?86 "86" ?87 "87" ?88 "8
+8" ?89 "89" ?90 "90" ?91 "91" ?92 "92" ?93 "93" ?94 "94" ?95 "95" ?96 "96" ?97 "97" ?98 "98" ?99 "99" ?100 "100" ?101 "101" ?102 "102" ?103 "103" ?104 "104" ?10
+5 "105" ?106 "106" ?107 "107" ?108 "108" ?109 "109" ?110 "110" ?111 "111" ?112 "112" ?113 "113" ?114 "114" ?115 "115" ?116 "116" ?117 "117" ?118 "118" ?119 "119
+" ?120 "120" ?121 "121" ?122 "122" ?123 "123" ?124 "124" ?125 "125" ?126 "126" ?127 "127" ?128 "128" ?129 "129" ?130 "130" ?131 "131" ?132 "132" ?133 "133" ?134
+ "134" ?135 "135" ?136 "136" ?137 "137" ?138 "138" ?139 "139" ?140 "140" ?141 "141" ?142 "142" ?143 "143" ?144 "144" ?145 "145" ?146 "146" ?147 "147" ?148 "148"
+ ?149 "149" ?150 "150" ?151 "151" ?152 "152" ?153 "153" ?154 "154" ?155 "155" ?156 "156" ?157 "157" ?158 "158" ?159 "159" ?160 "160" ?161 "161" ?162 "162" ?163
+"163" ?164 "164" ?165 "165" ?166 "166" ?167 "167" ?168 "168" ?169 "169" ?170 "170" ?171 "171" ?172 "172" ?173 "173" ?174 "174" ?175 "175" ?176 "176" ?177 "177"
+?178 "178" ?179 "179" ?180 "180" ?181 "181" ?182 "182" ?183 "183" ?184 "184" ?185 "185" ?186 "186" ?187 "187" ?188 "188" ?189 "189" ?190 "190" ?191 "191" ?192 "
+192" ?193 "193" ?194 "194" ?195 "195" ?196 "196" ?197 "197" ?198 "198" ?199 "199" ?200 "200" ?201 "201" ?202 "202" ?203 "203" ?204 "204" ?205 "205" ?206 "206" ?
+207 "207" ?208 "208" ?209 "209" ?210 "210" ?211 "211" ?212 "212" ?213 "213" ?214 "214" ?215 "215" ?216 "216" ?217 "217" ?218 "218" ?219 "219" ?220 "220" ?221 "2
+21" ?222 "222" ?223 "223" ?224 "224" ?225 "225" ?226 "226" ?227 "227" ?228 "228" ?229 "229" ?230 "230" ?231 "231" ?232 "232" ?233 "233" ?234 "234" ?235 "235" ?2
+36 "236" ?237 "237" ?238 "238" ?239 "239" ?240 "240" ?241 "241" ?242 "242" ?243 "243" ?244 "244" ?245 "245" ?246 "246" ?247 "247" ?248 "248" ?249 "249" ?250 "25
+0" ?251 "251" ?252 "252" ?253 "253" ?254 "254" ?255 "255" ?256 "256" ?257 "257" ?258 "258" ?259 "259" ?260 "260" ?261 "261" ?262 "262" ?263 "263" ?264 "264" ?26
+5 "265" ?266 "266" ?267 "267" ?268 "268" ?269 "269" ?270 "270" ?271 "271" ?272 "272" ?273 "273" ?274 "274" ?275 "275" ?276 "276" ?277 "277" ?278 "278" ?279 "279
+" ?280 "280" ?281 "281" ?282 "282" ?283 "283" ?284 "284" ?285 "285" ?286 "286" ?287 "287" ?288 "288" ?289 "289" ?290 "290" ?291 "291" ?292 "292" ?293 "293" ?294
+ "294" ?295 "295" ?296 "296" ?297 "297" ?298 "298" ?299 "299" ?300 "300" ?301 "301" ?302 "302" ?303 "303" ?304 "304" ?305 "305" ?306 "306" ?307 "307" ?308 "308"
+ ?309 "309" ?310 "310" ?311 "311" ?312 "312" ?313 "313" ?314 "314" ?315 "315" ?316 "316" ?317 "317" ?318 "318" ?319 "319" ?320 "320" ?321 "321" ?322 "322" ?323
+"323" ?324 "324" ?325 "325" ?326 "326" ?327 "327" ?328 "328" ?329 "329" ?330 "330" ?331 "331" ?332 "332" ?333 "333" ?334 "334" ?335 "335" ?336 "336" ?337 "337"
+?338 "338" ?339 "339" ?340 "340" ?341 "341" ?342 "342" ?343 "343" ?344 "344" ?345 "345" ?346 "346" ?347 "347" ?348 "348" ?349 "349" ?350 "350" ?351 "351" ?352 "
+352" ?353 "353" ?354 "354" ?355 "355" ?356 "356" ?357 "357" ?358 "358" ?359 "359" ?360 "360" ?361 "361" ?362 "362" ?363 "363" ?364 "364" ?365 "365" ?366 "366" ?
+367 "367" ?368 "368" ?369 "369" ?370 "370" ?371 "371" ?372 "372" ?373 "373" ?374 "374" ?375 "375" ?376 "376" ?377 "377" ?378 "378" ?379 "379" ?380 "380" ?381 "3
+81" ?382 "382" ?383 "383" ?384 "384" ?385 "385" ?386 "386" ?387 "387" ?388 "388" ?389 "389" ?390 "390" ?391 "391" ?392 "392" ?393 "393" ?394 "394" ?395 "395" ?3
+96 "396" ?397 "397" ?398 "398" ?399 "399" ?400 "400" ?401 "401" ?402 "402" ?403 "403" ?404 "404" ?405 "405" ?406 "406" ?407 "407" ?408 "408" ?409 "409" ?410 "41
+0" ?411 "411" ?412 "412" ?413 "413" ?414 "414" ?415 "415" ?416 "416" ?417 "417" ?418 "418" ?419 "419" ?420 "420" ?421 "421" ?422 "422" ?423 "423" ?424 "424" ?42
+5 "425" ?426 "426" ?427 "427" ?428 "428" ?429 "429" ?430 "430" ?431 "431" ?432 "432" ?433 "433" ?434 "434" ?435 "435" ?436 "436" ?437 "437" ?438 "438" ?439 "439
+" ?440 "440" ?441 "441" ?442 "442" ?443 "443" ?444 "444" ?445 "445" ?446 "446" ?447 "447" ?448 "448" ?449 "449" ?450 "450" ?451 "451" ?452 "452" ?453 "453" ?454
+ "454" ?455 "455" ?456 "456" ?457 "457" ?458 "458" ?459 "459" ?460 "460" ?461 "461" ?462 "462" ?463 "463" ?464 "464" ?465 "465" ?466 "466" ?467 "467" ?468 "468"
+ ?469 "469" ?470 "470" ?471 "471" ?472 "472" ?473 "473" ?474 "474" ?475 "475" ?476 "476" ?477 "477" ?478 "478" ?479 "479" ?480 "480" ?481 "481" ?482 "482" ?483
+"483" ?484 "484" ?485 "485" ?486 "486" ?487 "487" ?488 "488" ?489 "489" ?490 "490" ?491 "491" ?492 "492" ?493 "493" ?494 "494" ?495 "495" ?496 "496" ?497 "497"
+?498 "498" ?499 "499"
+sample.hordes.two 500 ?0 "0" ?1 "1" ?2 "2" ?3 "3" ?4 "4" ?5 "5" ?6 "6" ?7 "7" ?8 "8" ?9 "9" ?10 "10" ?11 "11" ?12 "12" ?13 "13" ?14 "14" ?15 "15" ?16 "16" ?17 "
+17" ?18 "18" ?19 "19" ?20 "20" ?21 "21" ?22 "22" ?23 "23" ?24 "24" ?25 "25" ?26 "26" ?27 "27" ?28 "28" ?29 "29" ?30 "30" ?31 "31" ?32 "32" ?33 "33" ?34 "34" ?35
+ "35" ?36 "36" ?37 "37" ?38 "38" ?39 "39" ?40 "40" ?41 "41" ?42 "42" ?43 "43" ?44 "44" ?45 "45" ?46 "46" ?47 "47" ?48 "48" ?49 "49" ?50 "50" ?51 "51" ?52 "52" ?
+53 "53" ?54 "54" ?55 "55" ?56 "56" ?57 "57" ?58 "58" ?59 "59" ?60 "60" ?61 "61" ?62 "62" ?63 "63" ?64 "64" ?65 "65" ?66 "66" ?67 "67" ?68 "68" ?69 "69" ?70 "70"
+ ?71 "71" ?72 "72" ?73 "73" ?74 "74" ?75 "75" ?76 "76" ?77 "77" ?78 "78" ?79 "79" ?80 "80" ?81 "81" ?82 "82" ?83 "83" ?84 "84" ?85 "85" ?86 "86" ?87 "87" ?88 "8
+8" ?89 "89" ?90 "90" ?91 "91" ?92 "92" ?93 "93" ?94 "94" ?95 "95" ?96 "96" ?97 "97" ?98 "98" ?99 "99" ?100 "100" ?101 "101" ?102 "102" ?103 "103" ?104 "104" ?10
+5 "105" ?106 "106" ?107 "107" ?108 "108" ?109 "109" ?110 "110" ?111 "111" ?112 "112" ?113 "113" ?114 "114" ?115 "115" ?116 "116" ?117 "117" ?118 "118" ?119 "119
+" ?120 "120" ?121 "121" ?122 "122" ?123 "123" ?124 "124" ?125 "125" ?126 "126" ?127 "127" ?128 "128" ?129 "129" ?130 "130" ?131 "131" ?132 "132" ?133 "133" ?134
+ "134" ?135 "135" ?136 "136" ?137 "137" ?138 "138" ?139 "139" ?140 "140" ?141 "141" ?142 "142" ?143 "143" ?144 "144" ?145 "145" ?146 "146" ?147 "147" ?148 "148"
+ ?149 "149" ?150 "150" ?151 "151" ?152 "152" ?153 "153" ?154 "154" ?155 "155" ?156 "156" ?157 "157" ?158 "158" ?159 "159" ?160 "160" ?161 "161" ?162 "162" ?163
+"163" ?164 "164" ?165 "165" ?166 "166" ?167 "167" ?168 "168" ?169 "169" ?170 "170" ?171 "171" ?172 "172" ?173 "173" ?174 "174" ?175 "175" ?176 "176" ?177 "177"
+?178 "178" ?179 "179" ?180 "180" ?181 "181" ?182 "182" ?183 "183" ?184 "184" ?185 "185" ?186 "186" ?187 "187" ?188 "188" ?189 "189" ?190 "190" ?191 "191" ?192 "
+192" ?193 "193" ?194 "194" ?195 "195" ?196 "196" ?197 "197" ?198 "198" ?199 "199" ?200 "200" ?201 "201" ?202 "202" ?203 "203" ?204 "204" ?205 "205" ?206 "206" ?
+207 "207" ?208 "208" ?209 "209" ?210 "210" ?211 "211" ?212 "212" ?213 "213" ?214 "214" ?215 "215" ?216 "216" ?217 "217" ?218 "218" ?219 "219" ?220 "220" ?221 "2
+21" ?222 "222" ?223 "223" ?224 "224" ?225 "225" ?226 "226" ?227 "227" ?228 "228" ?229 "229" ?230 "230" ?231 "231" ?232 "232" ?233 "233" ?234 "234" ?235 "235" ?2
+36 "236" ?237 "237" ?238 "238" ?239 "239" ?240 "240" ?241 "241" ?242 "242" ?243 "243" ?244 "244" ?245 "245" ?246 "246" ?247 "247" ?248 "248" ?249 "249" ?250 "25
+0" ?251 "251" ?252 "252" ?253 "253" ?254 "254" ?255 "255" ?256 "256" ?257 "257" ?258 "258" ?259 "259" ?260 "260" ?261 "261" ?262 "262" ?263 "263" ?264 "264" ?26
+5 "265" ?266 "266" ?267 "267" ?268 "268" ?269 "269" ?270 "270" ?271 "271" ?272 "272" ?273 "273" ?274 "274" ?275 "275" ?276 "276" ?277 "277" ?278 "278" ?279 "279
+" ?280 "280" ?281 "281" ?282 "282" ?283 "283" ?284 "284" ?285 "285" ?286 "286" ?287 "287" ?288 "288" ?289 "289" ?290 "290" ?291 "291" ?292 "292" ?293 "293" ?294
+ "294" ?295 "295" ?296 "296" ?297 "297" ?298 "298" ?299 "299" ?300 "300" ?301 "301" ?302 "302" ?303 "303" ?304 "304" ?305 "305" ?306 "306" ?307 "307" ?308 "308"
+ ?309 "309" ?310 "310" ?311 "311" ?312 "312" ?313 "313" ?314 "314" ?315 "315" ?316 "316" ?317 "317" ?318 "318" ?319 "319" ?320 "320" ?321 "321" ?322 "322" ?323
+"323" ?324 "324" ?325 "325" ?326 "326" ?327 "327" ?328 "328" ?329 "329" ?330 "330" ?331 "331" ?332 "332" ?333 "333" ?334 "334" ?335 "335" ?336 "336" ?337 "337"
+?338 "338" ?339 "339" ?340 "340" ?341 "341" ?342 "342" ?343 "343" ?344 "344" ?345 "345" ?346 "346" ?347 "347" ?348 "348" ?349 "349" ?350 "350" ?351 "351" ?352 "
+352" ?353 "353" ?354 "354" ?355 "355" ?356 "356" ?357 "357" ?358 "358" ?359 "359" ?360 "360" ?361 "361" ?362 "362" ?363 "363" ?364 "364" ?365 "365" ?366 "366" ?
+367 "367" ?368 "368" ?369 "369" ?370 "370" ?371 "371" ?372 "372" ?373 "373" ?374 "374" ?375 "375" ?376 "376" ?377 "377" ?378 "378" ?379 "379" ?380 "380" ?381 "3
+81" ?382 "382" ?383 "383" ?384 "384" ?385 "385" ?386 "386" ?387 "387" ?388 "388" ?389 "389" ?390 "390" ?391 "391" ?392 "392" ?393 "393" ?394 "394" ?395 "395" ?3
+96 "396" ?397 "397" ?398 "398" ?399 "399" ?400 "400" ?401 "401" ?402 "402" ?403 "403" ?404 "404" ?405 "405" ?406 "406" ?407 "407" ?408 "408" ?409 "409" ?410 "41
+0" ?411 "411" ?412 "412" ?413 "413" ?414 "414" ?415 "415" ?416 "416" ?417 "417" ?418 "418" ?419 "419" ?420 "420" ?421 "421" ?422 "422" ?423 "423" ?424 "424" ?42
+5 "425" ?426 "426" ?427 "427" ?428 "428" ?429 "429" ?430 "430" ?431 "431" ?432 "432" ?433 "433" ?434 "434" ?435 "435" ?436 "436" ?437 "437" ?438 "438" ?439 "439
+" ?440 "440" ?441 "441" ?442 "442" ?443 "443" ?444 "444" ?445 "445" ?446 "446" ?447 "447" ?448 "448" ?449 "449" ?450 "450" ?451 "451" ?452 "452" ?453 "453" ?454
+ "454" ?455 "455" ?456 "456" ?457 "457" ?458 "458" ?459 "459" ?460 "460" ?461 "461" ?462 "462" ?463 "463" ?464 "464" ?465 "465" ?466 "466" ?467 "467" ?468 "468"
+ ?469 "469" ?470 "470" ?471 "471" ?472 "472" ?473 "473" ?474 "474" ?475 "475" ?476 "476" ?477 "477" ?478 "478" ?479 "479" ?480 "480" ?481 "481" ?482 "482" ?483
+"483" ?484 "484" ?485 "485" ?486 "486" ?487 "487" ?488 "488" ?489 "489" ?490 "490" ?491 "491" ?492 "492" ?493 "493" ?494 "494" ?495 "495" ?496 "496" ?497 "497"
+?498 "498" ?499 "499"
+sample.bad.unknown -12358 Unknown or illegal metric identifier (pmLookupDesc)
+sample.bad.nosupport -12350 Metric not supported by this version of monitored application
+sample.bad.novalues 0
+sample.wrap.long 1 PM_IN_NULL PM_IN_NULL
+sample.wrap.ulong 1 PM_IN_NULL PM_IN_NULL
+sample.wrap.longlong 1 PM_IN_NULL PM_IN_NULL
+sample.wrap.ulonglong 1 PM_IN_NULL PM_IN_NULL
+sample.dodgey.control 1 PM_IN_NULL PM_IN_NULL
+sample.dodgey.value 5 ?1 "d1" ?2 "d2" ?3 "d3" ?4 "d4" ?5 "d5"
+sample.dynamic.counter NUMVAL VAL or INST ...
+sample.dynamic.discrete NUMVAL VAL or INST ...
+sample.dynamic.instant NUMVAL VAL or INST ...
+sample.scale_step.bytes_up 1 PM_IN_NULL PM_IN_NULL
+sample.scale_step.bytes_down 1 PM_IN_NULL PM_IN_NULL
+sample.scale_step.count_up 1 PM_IN_NULL PM_IN_NULL
+sample.scale_step.count_down 1 PM_IN_NULL PM_IN_NULL
+sample.scale_step.time_up_secs 1 PM_IN_NULL PM_IN_NULL
+sample.scale_step.time_up_nanosecs 1 PM_IN_NULL PM_IN_NULL
+sample.scale_step.none_up 1 PM_IN_NULL PM_IN_NULL
+sample.const_rate.value 1 PM_IN_NULL PM_IN_NULL
+sample.const_rate.gradient 1 PM_IN_NULL PM_IN_NULL
+sample.percontext.pdu 1 PM_IN_NULL PM_IN_NULL
+sample.percontext.recv_pdu 1 PM_IN_NULL PM_IN_NULL
+sample.percontext.xmit_pdu 1 PM_IN_NULL PM_IN_NULL
+sample.percontext.control.ctx 1 PM_IN_NULL PM_IN_NULL
+sample.percontext.control.active 1 PM_IN_NULL PM_IN_NULL
+sample.percontext.control.start 1 PM_IN_NULL PM_IN_NULL
+sample.percontext.control.end 1 PM_IN_NULL PM_IN_NULL
+sample.event.records 2 ?0 "fungus" ?1 "bogus"
+sample.event.highres_records 2 ?0 "fungus" ?1 "bogus"
+sample.event.no_indom_records 1 PM_IN_NULL PM_IN_NULL
+sample.event.reset 1 PM_IN_NULL PM_IN_NULL
+sample.event.reset_highres 1 PM_IN_NULL PM_IN_NULL
+sample.event.type 0
+sample.event.param_32 0
+sample.event.param_u32 0
+sample.event.param_64 0
+sample.event.param_u64 0
+sample.event.param_float 0
+sample.event.param_double 0
+sample.event.param_string 0
+sample.event.param_aggregate 0
+
+=== -iv ===
+pmprobe: at most one of -v and (-i or -I) allowed
+Usage: pmprobe [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -?, --help show this usage message and exit
+
+Reporting options:
+ -f, --force report all pmGetIndom or pmGetInDomArchive instances
+ -I, --external list external instance names
+ -i, --internal list internal instance numbers
+ -V, --verbose report PDU operations (verbose)
+ -v, --values list metric values
+
+=== -iIv ===
+pmprobe: at most one of -v and (-i or -I) allowed
+Usage: pmprobe [options] [metricname ...]
+
+General options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -?, --help show this usage message and exit
+
+Reporting options:
+ -f, --force report all pmGetIndom or pmGetInDomArchive instances
+ -I, --external list external instance names
+ -i, --internal list internal instance numbers
+ -V, --verbose report PDU operations (verbose)
+ -v, --values list metric values
diff --git a/qa/570 b/qa/570
new file mode 100755
index 0000000..f54bda1
--- /dev/null
+++ b/qa/570
@@ -0,0 +1,161 @@
+#! /bin/sh
+# PCP QA Test No. 570
+# pmnscomp -f /dev/null et al, #690735
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3051 ]
+then
+ ln $seq.out.1 $seq.out
+elif [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.2 $seq.out
+else
+ _notrun "pmnscomp retired in PCP 3.6"
+fi
+
+status=1 # failure is the default!
+trap "cd $here; rm -rf $tmp; exit \$status" 0 1 2 3 15
+
+_ls()
+{
+if [ -r $1 -o -w $1 -o -x $1 ] ; then
+# filter ls -ld output
+#-rwxr-xr-x 1 kenmcd ptg 2386 Apr 29 04:52 570
+#drwxrwxr-x 13 kenmcd ptg 52736 Apr 29 04:33 .
+#crw-rw-rw- 1 root sys 1, 2 Apr 29 04:57 /dev/null
+#Cannot access nofile: No such file or directory
+ LC_TIME=POSIX ls -ld $1 \
+ | sed \
+ -e 's/-rw-r--r--\./-rw-r--r--/' \
+ -e 's/crw-rw-rw-\./crw-rw-rw-/' \
+ -e 's/drwxr-xr-x\./drwxr-xr-x/' \
+ | $PCP_AWK_PROG '
+NF == 9 && /^-/ { print $1,"...",$5,"...",$9; next }
+NF == 9 && /^d/ { print $1,"...",$9; next }
+NF == 10 && /^[cb]/ { print $1,"...",$10; next }
+ { print }'
+else
+echo "Cannot access $1: No such file or directory"
+fi
+}
+
+umask 022
+
+rm -rf $tmp
+mkdir $tmp
+chmod 755 $tmp
+cd $tmp
+
+cat >pmns <<End-of-File
+root {
+ one 0:1:1
+ node
+}
+
+node {
+ two 0:2:2
+}
+End-of-File
+
+# real QA test starts here
+
+echo
+echo "dir is writeable, output file does not exist"
+rm -f root.bin
+pmnscomp -n pmns -f root.bin
+_ls root.bin
+rm -rf root.bin
+
+echo
+echo "dir is writeable, output file exists and is writeable"
+touch root.bin
+chmod 644 root.bin
+pmnscomp -n pmns -f root.bin
+_ls root.bin
+rm -rf root.bin
+
+echo
+echo "dir is writeable, output file exists and is non-writeable"
+touch root.bin
+chmod 444 root.bin
+pmnscomp -n pmns -f root.bin
+_ls root.bin
+rm -rf root.bin
+
+echo
+echo "dir is writeable, output file exists but is hidden"
+mkdir hide
+touch hide/root.bin
+chmod 0 hide
+pmnscomp -n pmns -f hide/root.bin
+chmod 755 hide
+_ls hide/root.bin
+rm -rf hide
+
+echo
+echo "dir is writeable, output \"file\" is /dev/null"
+pmnscomp -n pmns -f /dev/null
+_ls /dev/null
+
+echo
+echo "dir is writeable, output \"file\" is a directory"
+rm -rf mydir
+mkdir mydir
+pmnscomp -n pmns -f mydir
+_ls mydir
+
+echo
+echo "dir is non-writeable, output file does not exist"
+rm -f root.bin
+chmod 555 .
+pmnscomp -n pmns -f root.bin
+chmod 755 .
+_ls root.bin
+rm -rf root.bin
+
+echo
+echo "dir is non-writeable, output file exists and is writeable"
+touch root.bin
+chmod 644 root.bin
+chmod 555 .
+pmnscomp -n pmns -f root.bin
+chmod 755 .
+_ls root.bin
+rm -rf root.bin
+
+echo
+echo "dir does not exist"
+pmnscomp -n pmns -f no/such/path/root.bin
+_ls no/such/path/root.bin
+
+echo
+echo "some options errors"
+pmnscomp -n pmns -v 3 -f root.bin 2| sed -e 's/0 or 1/0, 1 or 2/g'
+pmnscomp -n pmns
+pmnscomp
+
+echo
+echo "duplicate PMIDs in pmns"
+sed -e 's/2/1/g' pmns >pmns.dup
+pmnscomp -n pmns.dup -f root.bin
+_ls root.bin
+rm -rf root.bin
+echo "and again with -d"
+pmnscomp -n pmns.dup -f -d root.bin
+_ls root.bin
+rm -rf root.bin
+
+# success, all done
+status=0
+exit
diff --git a/qa/570.out.1 b/qa/570.out.1
new file mode 100644
index 0000000..642676b
--- /dev/null
+++ b/qa/570.out.1
@@ -0,0 +1,86 @@
+QA output created by 570
+
+dir is writeable, output file does not exist
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 358 ... root.bin
+
+dir is writeable, output file exists and is writeable
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 358 ... root.bin
+
+dir is writeable, output file exists and is non-writeable
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 358 ... root.bin
+
+dir is writeable, output file exists but is hidden
+pmnscomp: cannot stat "hide/root.bin": Permission denied
+-rw-r--r-- ... 0 ... hide/root.bin
+
+dir is writeable, output "file" is /dev/null
+pmnscomp: "/dev/null" is not a regular file
+crw-rw-rw- ... /dev/null
+
+dir is writeable, output "file" is a directory
+pmnscomp: "mydir" is not a regular file
+drwxr-xr-x ... mydir
+
+dir is non-writeable, output file does not exist
+pmnscomp: cannot create "root.bin": Permission denied
+Cannot access root.bin: No such file or directory
+
+dir is non-writeable, output file exists and is writeable
+pmnscomp: cannot unlink "root.bin": Permission denied
+-rw-r--r-- ... 0 ... root.bin
+
+dir does not exist
+pmnscomp: cannot create "no/such/path/root.bin": No such file or directory
+Cannot access no/such/path/root.bin: No such file or directory
+
+some options errors
+pmnscomp: version must be 0, 1 or 2
+Usage: pmnscomp [options] outfile
+
+Options:
+ -d duplicate PMIDs are allowed
+ -f force overwriting of an existing output file if it exists
+ -n pmnsfile use an alternative PMNS
+ -v version alternate output format version
+Usage: pmnscomp [options] outfile
+
+Options:
+ -d duplicate PMIDs are allowed
+ -f force overwriting of an existing output file if it exists
+ -n pmnsfile use an alternative PMNS
+ -v version alternate output format version
+Usage: pmnscomp [options] outfile
+
+Options:
+ -d duplicate PMIDs are allowed
+ -f force overwriting of an existing output file if it exists
+ -n pmnsfile use an alternative PMNS
+ -v version alternate output format version
+
+duplicate PMIDs in pmns
+Error Parsing ASCII PMNS: Duplicate metric id (0.1.1) in name space for metrics "node.two" and "one"
+
+pmLoadNameSpace: Problems parsing PMNS definitions
+Cannot access root.bin: No such file or directory
+and again with -d
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 358 ... root.bin
diff --git a/qa/570.out.2 b/qa/570.out.2
new file mode 100644
index 0000000..02d3c4a
--- /dev/null
+++ b/qa/570.out.2
@@ -0,0 +1,86 @@
+QA output created by 570
+
+dir is writeable, output file does not exist
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 362 ... root.bin
+
+dir is writeable, output file exists and is writeable
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 362 ... root.bin
+
+dir is writeable, output file exists and is non-writeable
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 362 ... root.bin
+
+dir is writeable, output file exists but is hidden
+pmnscomp: cannot stat "hide/root.bin": Permission denied
+-rw-r--r-- ... 0 ... hide/root.bin
+
+dir is writeable, output "file" is /dev/null
+pmnscomp: "/dev/null" is not a regular file
+crw-rw-rw- ... /dev/null
+
+dir is writeable, output "file" is a directory
+pmnscomp: "mydir" is not a regular file
+drwxr-xr-x ... mydir
+
+dir is non-writeable, output file does not exist
+pmnscomp: cannot create "root.bin": Permission denied
+Cannot access root.bin: No such file or directory
+
+dir is non-writeable, output file exists and is writeable
+pmnscomp: cannot unlink "root.bin": Permission denied
+-rw-r--r-- ... 0 ... root.bin
+
+dir does not exist
+pmnscomp: cannot create "no/such/path/root.bin": No such file or directory
+Cannot access no/such/path/root.bin: No such file or directory
+
+some options errors
+pmnscomp: output format version 3 not supported
+Usage: pmnscomp [options] outfile
+
+Options:
+ -d duplicate PMIDs are allowed
+ -f force overwriting of an existing output file if it exists
+ -n pmnsfile use an alternative PMNS
+ -v version alternate output format version [default 2]
+Usage: pmnscomp [options] outfile
+
+Options:
+ -d duplicate PMIDs are allowed
+ -f force overwriting of an existing output file if it exists
+ -n pmnsfile use an alternative PMNS
+ -v version alternate output format version [default 2]
+Usage: pmnscomp [options] outfile
+
+Options:
+ -d duplicate PMIDs are allowed
+ -f force overwriting of an existing output file if it exists
+ -n pmnsfile use an alternative PMNS
+ -v version alternate output format version [default 2]
+
+duplicate PMIDs in pmns
+Error Parsing ASCII PMNS: Duplicate metric id (0.1.1) in name space for metrics "node.two" and "one"
+
+pmLoadNameSpace: Problems parsing PMNS definitions
+Cannot access root.bin: No such file or directory
+and again with -d
+Compiled PMNS contains
+ 1 hash table entries
+ 2 leaf nodes
+ 2 non-leaf nodes
+ 18 bytes of symbol table
+-rw-r--r-- ... 362 ... root.bin
diff --git a/qa/571 b/qa/571
new file mode 100755
index 0000000..a7b8336
--- /dev/null
+++ b/qa/571
@@ -0,0 +1,148 @@
+#! /bin/sh
+# PCP QA Test No. 571
+#
+# #676245 - dynamic indoms for pmlogger, uses sample.dynamic.*
+# Check that when the instance domain changes for logged metrics
+# the new indom is only added once. The bug was for pmlogger
+# adding the indom once for each metric using it.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+control=$PCP_PMDAS_DIR/sample/dynamic.indom
+logger_pid=-1
+
+PMLOGGER=pmlogger
+SLEEPY=5
+
+_cleanup()
+{
+ if [ $logger_pid -gt 0 ]
+ then
+ $signal -s TERM $logger_pid
+ logger_pid=-1
+ fi
+
+ $sudo rm -f $control
+
+ [ -f $control.qa-$seq ] && $sudo mv $control.qa-$seq $control
+ rm -f $tmp.*
+}
+
+$sudo rm -f $control.qa-$seq
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+[ -f $control ] && $sudo mv $control $control.qa-$seq
+
+# real QA test starts here
+
+_start_logger()
+{
+ cat >$tmp.logconf <<End-of-File
+log advisory on 2 sec {
+ sample.dynamic
+}
+End-of-File
+
+ $PMLOGGER -c $tmp.logconf -l $tmp.log $tmp.logfile &
+ logger_pid=$!
+}
+
+_filter_unwanted_indom()
+{
+ _filter_pmdumplog | $PCP_AWK_PROG '
+/^InDom: 2.1/ && step == 0 { step = 1; next }
+step == 1 { step = 2; next }
+step == 2 { step = 0; next }
+ { print }'
+}
+
+_dumplog()
+{
+ sleep $SLEEPY
+ pmdumplog -i $tmp.logfile | _filter_unwanted_indom
+}
+
+# start the pmlogger
+#
+_start_logger
+
+# do the first instance dump
+#
+_dumplog
+
+# Change the instances
+#
+cat >$tmp.indom <<End-of-File
+10 one
+20 two
+30 three
+200 twenty
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+
+# do the instance dump
+#
+_dumplog
+
+# Add an instance
+#
+cat >$tmp.indom <<End-of-File
+10 one
+20 two
+30 three
+200 twenty
+400 fourty
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+
+# do the instance dump
+#
+_dumplog
+
+# Change an instance
+#
+cat >$tmp.indom <<End-of-File
+10 one
+20 two
+30 three
+200 twenty
+500 fifty
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+
+# do the instance dump
+#
+_dumplog
+
+# Remove some instances
+#
+cat >$tmp.indom <<End-of-File
+10 one
+20 two
+30 three
+End-of-File
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+
+# do the instance dump
+#
+_dumplog
+
+# success, all done
+status=0
+exit
diff --git a/qa/571.out b/qa/571.out
new file mode 100644
index 0000000..551b841
--- /dev/null
+++ b/qa/571.out
@@ -0,0 +1,65 @@
+QA output created by 571
+
+Instance Domains in the Log ...
+
+Instance Domains in the Log ...
+InDom: 29.7
+TIMESTAMP 4 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+
+Instance Domains in the Log ...
+InDom: 29.7
+TIMESTAMP 4 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+TIMESTAMP 5 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+ 400 or "fourty"
+
+Instance Domains in the Log ...
+InDom: 29.7
+TIMESTAMP 4 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+TIMESTAMP 5 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+ 400 or "fourty"
+TIMESTAMP 5 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+ 500 or "fifty"
+
+Instance Domains in the Log ...
+InDom: 29.7
+TIMESTAMP 4 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+TIMESTAMP 5 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+ 400 or "fourty"
+TIMESTAMP 5 instances
+ 10 or "one"
+ 20 or "two"
+ 30 or "three"
+ 200 or "twenty"
+ 500 or "fifty"
diff --git a/qa/572 b/qa/572
new file mode 100755
index 0000000..46f2be8
--- /dev/null
+++ b/qa/572
@@ -0,0 +1,145 @@
+#! /bin/sh
+# PCP QA Test No. 572
+# pmcd agent table relocation and libpcp_pmda botch for PMDA_INTERFACE_3.
+# linux PMDA returns no values after weblog Install was the original
+# observation.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pmcdconf=$PCP_PMCDCONF_PATH
+rootconf=$PCP_VAR_DIR/pmns/root
+needclean=false
+
+unset ROOT TOOLROOT MAKEFLAGS
+
+_cleanup()
+{
+ if $needclean
+ then
+ [ -f $tmp.pmcd.bak ] && $sudo cp $tmp.pmcd.bak $pmcdconf
+ [ -f $tmp.root.bak ] && $sudo cp $tmp.root.bak $rootconf
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ $sudo rm -f $tmp.*
+ needclean=false
+ fi
+}
+
+_filter_make()
+{
+ sed \
+ -e '/In function .vpmprintf./d' \
+ -e '/warning: the use of .tempnam./d' \
+ -e '/make: Nothing to be done/d'
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# create a basic pmcd config file
+if [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = solaris ]
+then
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+EOF
+elif [ $PCP_PLATFORM = irix ]
+then
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+pmcd 2 dso pmcd_init pmda_pmcd.so
+EOF
+elif [ $PCP_PLATFORM = darwin ]
+then
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+EOF
+else
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+fi
+
+# create my pmns
+cat <<End-of-File >$tmp.pmns
+root {
+ pmcd
+ sample
+ trivial
+ simple
+}
+pmcd {
+ numagents 2:0:2
+}
+sample {
+ string
+}
+sample.string {
+ write_me 29:0:32
+}
+trivial {
+ time 250:0:0
+}
+simple {
+ numfetch 253:0:0
+}
+End-of-File
+
+# real QA test starts here
+cp $pmcdconf $tmp.pmcd.bak
+cp $rootconf $tmp.root.bak
+
+needclean=true
+$sudo cp $tmp.pmcd.conf $pmcdconf
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+
+for pmda in '' sample trivial simple
+do
+ echo
+ if [ ! -z "$pmda" ]
+ then
+ echo "=== $pmda PMDA ==="
+ cd $PCP_PMDAS_DIR/$pmda
+ $sudo ./Install </dev/null >/dev/null 2> $tmp.stderr
+ # strip blank lines from stderr
+ # strip cc warning messages (assumed to be 4 non-blanks long)
+ cat $tmp.stderr | _filter_make | \
+ $PCP_AWK_PROG '
+ /^ *$/ {
+ next
+ }
+ /^cc-.*cc: WARNING/ {
+ getline ; getline ; getline ; getline
+ next
+ }
+ {
+ print
+ }
+ '
+ fi
+ pmstore -n $tmp.pmns sample.string.write_me "$pmda"
+ pminfo -n $tmp.pmns -f \
+ pmcd.numagents \
+ sample.string.write_me \
+ trivial.time \
+ simple.numfetch \
+ | $PCP_AWK_PROG '
+mask == 1 { if ($1 == "value") $2 = "NUMBER"
+ mask = 0
+ }
+ { print }
+/pmcd.numagents/ && "'"$pmda"'" == "" { mask = 1 }
+/trivial.time$/ { mask = 1 }'
+
+done
+
+status=0
+exit
diff --git a/qa/572.out b/qa/572.out
new file mode 100644
index 0000000..e56637e
--- /dev/null
+++ b/qa/572.out
@@ -0,0 +1,54 @@
+QA output created by 572
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+sample.string.write_me: pmLookupDesc: Unknown or illegal metric identifier
+
+pmcd.numagents
+value NUMBER
+sample.string.write_me: pmLookupDesc: Unknown or illegal metric identifier
+trivial.time: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+
+=== sample PMDA ===
+sample.string.write_me old value="13" new value="sample"
+
+pmcd.numagents
+ value 3
+
+sample.string.write_me
+ value "sample"
+trivial.time: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+
+=== trivial PMDA ===
+sample.string.write_me old value="sample" new value="trivial"
+
+pmcd.numagents
+ value 4
+
+sample.string.write_me
+ value "trivial"
+
+trivial.time
+value NUMBER
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+
+=== simple PMDA ===
+sample.string.write_me old value="trivial" new value="simple"
+
+pmcd.numagents
+ value 5
+
+sample.string.write_me
+ value "simple"
+
+trivial.time
+value NUMBER
+
+simple.numfetch
+ value 2
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/574 b/qa/574
new file mode 100755
index 0000000..c611611
--- /dev/null
+++ b/qa/574
@@ -0,0 +1,61 @@
+#! /bin/sh
+# PCP QA Test No. 574
+# Tests out the api (uses torture_api) in archive mode.
+# Main motivation is to test the PMNS in archives for distrib-PMNS.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./localconfig
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix|linux|darwin|solaris|freebsd)
+ ln $seq.out.$PCP_PLATFORM $seq.out || exit 1
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+rm -rf $seq.full
+rm -f $tmp.*
+
+#
+# Create new style version 2 log which includes
+# full-path names in the meta-data.
+#
+cat << EOF >> $tmp.conf
+#
+# pmlogger(1) configuration file
+# used for torture_api
+#
+log advisory on 1 secs {
+EOF
+# generate the metric names
+ src/torture_api -i -m >> $tmp.conf
+ cat << EOF >> $tmp.conf
+}
+EOF
+cat $tmp.conf >$seq.full
+echo "" >$seq.full
+
+pmlogger -c $tmp.conf -V2 -s 1 -l $tmp.pmlog $tmp.logv2
+
+src/torture_api -i -v -s2 -a $tmp.logv2 2>&1 | _filter_torture_api
+
+
+# success, all done
+status=0
+exit
diff --git a/qa/574.out.darwin b/qa/574.out.darwin
new file mode 100644
index 0000000..c3e8d37
--- /dev/null
+++ b/qa/574.out.darwin
@@ -0,0 +1,104 @@
+QA output created by 574
+
+pmid: 78.7.61 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: PM_ID_NULL name: kernel.all.pswitch
+pmGetChildren: Unknown metric name
+pmGetChildrenStatus: Unknown metric name
+
+pmid: 78.6.42 name: kernel.all.cpu.user
+
+pmid: PM_ID_NULL name: kernel.all.cpu.wait.total
+pmGetChildren: Unknown metric name
+pmGetChildrenStatus: Unknown metric name
+
+pmid: 78.8.71 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ pmcd <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+
+Archive result ...
+Fetch of disk.all.total:
+pmResult ... numpmid: 1
+ 78.7.61 (disk.all.total): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.cpu.user:
+pmResult ... numpmid: 1
+ 78.6.42 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of hinv.ncpu:
+pmResult ... numpmid: 1
+ 78.8.71 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sampledso.aggregate.hullo:
+pmResult ... numpmid: 1
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+Fetch of sample.seconds:
+pmResult ... numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sample.colour:
+pmResult ... numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+
+Unexpected failure for 4 of N PMAPI operations
diff --git a/qa/574.out.freebsd b/qa/574.out.freebsd
new file mode 100644
index 0000000..87ec2ff
--- /dev/null
+++ b/qa/574.out.freebsd
@@ -0,0 +1,106 @@
+QA output created by 574
+
+pmid: 85.2.8 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: 85.0.22 name: kernel.all.pswitch
+
+pmid: 85.0.3 name: kernel.all.cpu.user
+
+pmid: PM_ID_NULL name: kernel.all.cpu.wait.total
+pmGetChildren: Unknown metric name
+pmGetChildrenStatus: Unknown metric name
+
+pmid: 85.0.0 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ pmcd <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+
+Archive result ...
+Fetch of disk.all.total:
+pmResult ... numpmid: 1
+ 85.2.8 (disk.all.total): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.pswitch:
+pmResult ... numpmid: 1
+ 85.0.22 (kernel.all.pswitch): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.cpu.user:
+pmResult ... numpmid: 1
+ 85.0.3 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of hinv.ncpu:
+pmResult ... numpmid: 1
+ 85.0.0 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sampledso.aggregate.hullo:
+pmResult ... numpmid: 1
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+Fetch of sample.seconds:
+pmResult ... numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sample.colour:
+pmResult ... numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+
+Unexpected failure for 2 of N PMAPI operations
diff --git a/qa/574.out.irix b/qa/574.out.irix
new file mode 100644
index 0000000..9473b91
--- /dev/null
+++ b/qa/574.out.irix
@@ -0,0 +1,95 @@
+QA output created by 574
+
+pmid: 0xc00000 name: proc.nprocs
+
+pmid: 0x800000 name: pmcd.control.debug
+
+pmid: 0x800004 name: pmcd.control.timeout
+
+pmid: 0xffffffff name: proc.accounting.counts
+children of "proc.accounting.counts" ...
+ br <s = 0>
+ bw <s = 0>
+ chr <s = 0>
+ chw <s = 0>
+ mem <s = 0>
+ swaps <s = 0>
+ syscr <s = 0>
+ syscw <s = 0>
+
+pmid: 0x80000f name: pmcd.control.sighup
+
+pmid: 0x404802 name: hinv.ncpu
+
+pmid: 0xffffffff name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 0x7800022 name: sampledso.aggregate.hullo
+
+pmid: 0x7400002 name: sample.seconds
+
+pmid: 0x7400005 name: sample.colour
+
+pmid: 0xffffffff name: sample.longlong
+children of "sample.longlong" ...
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: 0xffffffff name: bozo.the.clown
+
+children of "" ...
+ hinv <s = 1>
+ pmcd <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+
+Archive result ...
+Fetch of proc.nprocs:
+pmResult ... numpmid: 1
+ 3.0.0 (proc.nprocs): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of pmcd.control.debug:
+pmResult ... numpmid: 1
+ 2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of pmcd.control.timeout:
+pmResult ... numpmid: 1
+ 2.0.4 (pmcd.control.timeout): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of pmcd.control.sighup:
+pmResult ... numpmid: 1
+ 2.0.15 (pmcd.control.sighup): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of hinv.ncpu:
+pmResult ... numpmid: 1
+ 1.18.2 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sampledso.aggregate.hullo:
+pmResult ... numpmid: 1
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+Fetch of sample.seconds:
+pmResult ... numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sample.colour:
+pmResult ... numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+
+Unexpected failure for 0 of N PMAPI operations
diff --git a/qa/574.out.linux b/qa/574.out.linux
new file mode 100644
index 0000000..42ed338
--- /dev/null
+++ b/qa/574.out.linux
@@ -0,0 +1,108 @@
+QA output created by 574
+
+pmid: 60.0.29 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: 60.0.13 name: kernel.all.pswitch
+
+pmid: 60.0.20 name: kernel.all.cpu.user
+
+pmid: 60.0.35 name: kernel.all.cpu.wait.total
+
+pmid: 60.0.32 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ pmcd <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+
+Archive result ...
+Fetch of disk.all.total:
+pmResult ... numpmid: 1
+ 60.0.29 (disk.all.total): numval: 1 valfmt: 1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.pswitch:
+pmResult ... numpmid: 1
+ 60.0.13 (kernel.all.pswitch): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.cpu.user:
+pmResult ... numpmid: 1
+ 60.0.20 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.cpu.wait.total:
+pmResult ... numpmid: 1
+ 60.0.35 (kernel.all.cpu.wait.total): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of hinv.ncpu:
+pmResult ... numpmid: 1
+ 60.0.32 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sampledso.aggregate.hullo:
+pmResult ... numpmid: 1
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+Fetch of sample.seconds:
+pmResult ... numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sample.colour:
+pmResult ... numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+
+Unexpected failure for 0 of N PMAPI operations
diff --git a/qa/574.out.solaris b/qa/574.out.solaris
new file mode 100644
index 0000000..f75af19
--- /dev/null
+++ b/qa/574.out.solaris
@@ -0,0 +1,108 @@
+QA output created by 574
+
+pmid: 75.1.2 name: disk.all.total
+
+pmid: PM_ID_NULL name: pmcd
+children of "pmcd" ...
+ agent <s = 1>
+ buf <s = 1>
+ build <s = 0>
+ client <s = 1>
+ control <s = 1>
+ cputime <s = 1>
+ datasize <s = 0>
+ numagents <s = 0>
+ numclients <s = 0>
+ openfds <s = 0>
+ pdu_in <s = 1>
+ pdu_out <s = 1>
+ pmie <s = 1>
+ pmlogger <s = 1>
+ simabi <s = 0>
+ timezone <s = 0>
+ version <s = 0>
+
+pmid: 75.0.23 name: kernel.all.pswitch
+
+pmid: 75.0.1 name: kernel.all.cpu.user
+
+pmid: 75.0.3 name: kernel.all.cpu.wait.total
+
+pmid: 75.0.56 name: hinv.ncpu
+
+pmid: PM_ID_NULL name: pmcd.control
+children of "pmcd.control" ...
+ debug <s = 0>
+ dumpconn <s = 0>
+ dumptrace <s = 0>
+ register <s = 0>
+ sighup <s = 0>
+ timeout <s = 0>
+ tracebufs <s = 0>
+ traceconn <s = 0>
+ tracenobuf <s = 0>
+ tracepdu <s = 0>
+
+pmid: 30.0.34 name: sampledso.aggregate.hullo
+
+pmid: 29.0.2 name: sample.seconds
+
+pmid: 29.0.5 name: sample.colour
+
+pmid: PM_ID_NULL name: sample.longlong
+children of "sample.longlong" ...
+ bin <s = 0>
+ bin_ctr <s = 0>
+ hundred <s = 0>
+ million <s = 0>
+ one <s = 0>
+ ten <s = 0>
+ write_me <s = 0>
+
+pmid: PM_ID_NULL name: bozo.the.clown
+
+children of "" ...
+ disk <s = 1>
+ hinv <s = 1>
+ kernel <s = 1>
+ pmcd <s = 1>
+ sample <s = 1>
+ sampledso <s = 1>
+
+Archive result ...
+Fetch of disk.all.total:
+pmResult ... numpmid: 1
+ 75.1.2 (disk.all.total): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of kernel.all.pswitch:
+pmResult ... numpmid: 1
+ 75.0.23 (kernel.all.pswitch): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.cpu.user:
+pmResult ... numpmid: 1
+ 75.0.1 (kernel.all.cpu.user): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of kernel.all.cpu.wait.total:
+pmResult ... numpmid: 1
+ 75.0.3 (kernel.all.cpu.wait.total): numval: 1 valfmt: 0-or-1 vlist[]:
+ value NUMBER
+Fetch of hinv.ncpu:
+pmResult ... numpmid: 1
+ 75.0.56 (hinv.ncpu): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sampledso.aggregate.hullo:
+pmResult ... numpmid: 1
+ 30.0.34 (sampledso.aggregate.hullo): numval: 1 valfmt: 1 vlist[]:
+ value STRING AGGREGATE
+Fetch of sample.seconds:
+pmResult ... numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+Fetch of sample.colour:
+pmResult ... numpmid: 1
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or "red"] value NUMBER
+ inst [1 or "green"] value NUMBER
+ inst [2 or "blue"] value NUMBER
+
+Unexpected failure for 0 of N PMAPI operations
diff --git a/qa/575 b/qa/575
new file mode 100755
index 0000000..828a888
--- /dev/null
+++ b/qa/575
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 575
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3810 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo "QA output created by $seq"
+
+_cleanup()
+{
+ _change_config pmie off
+ rm -f $tmp.*
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo $signal -a pmie >/dev/null 2>&1
+
+_change_config pmie on
+$sudo $PCP_RC_DIR/pmie stop | _filter_pmie_stop
+$sudo $PCP_RC_DIR/pmie start | _filter_pmie_start
+
+# success, all done
+status=0
+exit
diff --git a/qa/575.out.1 b/qa/575.out.1
new file mode 100644
index 0000000..3077d2a
--- /dev/null
+++ b/qa/575.out.1
@@ -0,0 +1,3 @@
+QA output created by 575
+$PCP_RC_DIR/pmie: PMIE not running
+Performance Co-Pilot starting inference engine(s) ...
diff --git a/qa/575.out.2 b/qa/575.out.2
new file mode 100644
index 0000000..c1d90d5
--- /dev/null
+++ b/qa/575.out.2
@@ -0,0 +1,3 @@
+QA output created by 575
+$PCP_RC_DIR/pmie: PMIE not running
+Starting pmie ...
diff --git a/qa/578 b/qa/578
new file mode 100755
index 0000000..7ec6b98
--- /dev/null
+++ b/qa/578
@@ -0,0 +1,362 @@
+#! /bin/sh
+# PCP QA Test No. 578
+# Test for Bug #660497, change openfds metric to be the
+# largest known file descriptor used by pmcd.
+# This means the file descriptor can only ever increase.
+# The following behaviour is expected:
+# the file descriptor will increase when a client or pmda connects
+# the file descriptor will stay the same when a client or pmda disconnects
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $seq.full
+
+signal=$PCP_BINADM_DIR/pmsignal
+simple_domain=253
+if [ -x pmobjstyle ]
+then
+ style=`pmobjstyle`
+else
+ style=''
+fi
+
+_start_client()
+{
+ pmval -T 10sec kernel.all.load >$tmp.tmp 2>&1 &
+ echo "=== Started client ===" | tee -a $here/$seq.full
+ sleep 3
+}
+
+# Remove the PMDA and restore pmcd.conf
+#
+_cleanup()
+{
+ [ -f $PCP_PMDAS_DIR/simple/simple.conf.$seq ] && $sudo mv -f $PCP_PMDAS_DIR/simple/simple.conf.$seq $PCP_PMDAS_DIR/simple/simple.conf
+
+ if [ -f $tmp.conf ]
+ then
+ echo "=== Resetting pmcd.conf back to original state ==="
+ $sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+ $sudo cp $tmp.root $PCP_VAR_DIR/pmns/root
+ fi
+ if [ -f $tmp.conf ]
+ then
+ echo "=== Restart PMCD ==="
+ unset PMCD_PORT
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ fi
+
+ if grep '^simple' $PCP_PMCDCONF_PATH >/dev/null
+ then
+ :
+ else
+ # simple was not installed, cull namespace
+ #
+ cd $PCP_PMDAS_DIR/simple
+ $sudo ./Remove >/dev/null
+ fi
+
+ if [ -f $tmp.log ]
+ then
+ echo '=== pmcd log' >>$here/$seq.full
+ cat $tmp.log >>$here/$seq.full
+ fi
+
+ rm -rf $tmp.*
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter_ins()
+{
+ sed \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/'
+}
+
+_filter_init()
+{
+ sed \
+ -e "s/$$/PID/g"
+}
+
+_filter_openfds_value()
+{
+ $PCP_AWK_PROG '
+BEGIN { fst_fds = "fst_fds"; sec_fds = "sec_fds"; thr_fds = "thr_fds"; step = 0 }
+$1 == "value" && step == 0 {
+ fst_fds = $2; step = 1; next }
+$1 == "value" && step == 1 {
+ sec_fds = $2; step = 2; next }
+$1 == "value" && step == 2 {
+ thr_fds = $2;
+ if (sec_fds > fst_fds)
+ printf("=== Info: After install, openfds has increased as expected ===\n");
+ else {
+ printf("=== Error: After install, openfds has unexpectedly decreased or stayed the same ===\n");
+ printf("\t previous value %d, current value %d\n", fst_fds, sec_fds);
+ }
+ if (sec_fds == thr_fds)
+ printf("=== Info: After remove, openfds has stayed the same as expected ===\n");
+ else {
+ printf("=== Error: After remove, openfds has unexpectedly changed ===\n")
+ printf("\t previous value %d, current value %d\n", sec_fds, thr_fds);
+ }
+ next;
+ }
+ { next } '
+}
+
+# no random clients, thanks
+#
+port=`_get_port tcp 6060 6070`
+if [ -z "$port" ]
+then
+ echo "Arrggh ... no free TCP port in the range 6060 ... 6070"
+ netstat -an
+ exit
+fi
+PMCD_PORT=$port
+export PMCD_PORT
+
+# Build simple agent
+#
+echo "=== Building simple agent ===" | tee -a $here/$seq.full
+unset ROOT TOOLROOT MAKEFLAGS
+cd $PCP_PMDAS_DIR/simple
+
+# get rid of warnings from simple if no config exists
+[ -f simple.conf ] && $sudo mv simple.conf simple.conf.$seq
+echo "sec,min,hour" >$tmp.simple.conf
+$sudo cp $tmp.simple.conf simple.conf
+
+# Install the simple namespace, I don't bother to remove it again
+#
+$sudo ./Install -N < /dev/null | _filter_ins 2>&1
+echo "Namespace installed"
+
+if $sudo make > $tmp.make 2>&1
+then
+ echo "PMDA built"
+else
+ echo "Unable to build the simple PMDA:"
+ cat $tmp.make
+ exit
+fi
+
+sed -e "/^@ SIMPLE/s/SIMPLE/$simple_domain/" < help \
+| $sudo $PCP_BINADM_DIR/newhelp -v 2 -o help
+echo "Help generated"
+cd $here
+
+# Refresh PMCD
+#
+_renew_pmcd()
+{
+ echo "=== Restarting PMCD with minimal PMDAs ===" | tee -a $here/$seq.full
+ if [ -f $tmp.newconf ]
+ then
+ $sudo cp $tmp.newconf $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd
+ sleep 4
+ _wait_for_pmcd
+ else
+ echo caller - $1 - has not created $tmp.newconf !!!
+ fi
+}
+
+# Install a standard pmda, but do not mess with the namespace
+#
+_agent_install()
+{
+ agent=$1
+ domain=$2
+ daemon=$3
+ path=$PCP_PMDAS_DIR/$agent
+
+ echo "=== Installing $agent ===" | tee -a $here/$seq.full
+ cp $tmp.newconf $tmp.latest
+ if $daemon
+ then
+ cat << end-of-file >> $tmp.latest
+$agent $domain pipe binary $path/pmda$agent -d $domain
+end-of-file
+ else
+ cat << end-of-file >> $tmp.latest
+$agent $domain dso ${agent}_init $path/${style}pmda_$agent.$DSO_SUFFIX
+end-of-file
+ fi
+
+ $sudo cp $tmp.latest $PCP_PMCDCONF_PATH
+
+ $sudo $signal -a -s HUP pmcd
+ sleep 4
+ _wait_for_pmcd
+
+ if _check_agent $agent true
+ then
+ echo "$agent is alive and well"
+ else
+ echo "Failed to install $agent"
+ exit
+ fi
+}
+
+# Remove a pmda
+#
+_agent_remove()
+{
+ agent=$1
+
+ echo "=== Removing $agent ===" | tee -a $here/$seq.full
+ _renew_pmcd _agent_remove
+
+ if _check_agent $agent true
+ then
+ echo "Failed to remove $agent"
+ exit
+ else
+ echo "$agent was removed"
+ fi
+}
+
+# real QA test starts here
+
+# Copy and replace pmcd.conf
+#
+cp $PCP_PMCDCONF_PATH $tmp.conf
+cp $PCP_VAR_DIR/pmns/root $tmp.root
+
+if [ $PCP_PLATFORM = linux ]
+then
+ cat << end-of-file > $tmp.newconf
+# pmcd.conf generated by QA $seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+end-of-file
+elif [ $PCP_PLATFORM = irix ]
+then
+ cat << end-of-file > $tmp.newconf
+# pmcd.conf generated by QA $seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+end-of-file
+elif [ $PCP_PLATFORM = darwin ]
+then
+ cat << end-of-file > $tmp.newconf
+# pmcd.conf generated by QA $seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+end-of-file
+elif [ $PCP_PLATFORM = solaris ]
+then
+ cat << end-of-file > $tmp.newconf
+# pmcd.conf generated by QA $seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+end-of-file
+else
+ echo "Arrgh ... need pmcd.conf output for $PCP_PLATFORM"
+ exit 1
+fi
+
+#_renew_pmcd main
+
+if [ -f $tmp.newconf ]
+then
+ $sudo cp $tmp.newconf $PCP_PMCDCONF_PATH
+fi
+
+# Start with a fresh pmcd log
+#
+# need to do this indirectly because system sudo cleanses the environment
+#
+echo "export PMCD_PORT=$PMCD_PORT" >$tmp.start
+echo "$PCP_RC_DIR/pcp restart" >>$tmp.start
+$sudo sh $tmp.start | _filter_pcp_start | _filter_init 2>&1
+_wait_for_pmcd
+
+_test_pmda()
+{
+ pmda_type=$1
+
+ # Test PMDA
+ #
+ echo
+ echo "=== Testing PMDA as a $pmda_type ===" | tee -a $here/$seq.full
+
+ rm -f $tmp.pminfo
+
+ pminfo -f pmcd.openfds >$tmp.pminfo
+ fst_openfds=$openfds_value
+
+ if [ "$pmda_type" != PIPE ]
+ then
+ _agent_install simple $simple_domain false
+ else
+ _agent_install simple $simple_domain true
+ fi
+
+ pminfo -f pmcd.openfds >>$tmp.pminfo
+
+ _agent_remove simple
+ pminfo -f pmcd.openfds >>$tmp.pminfo
+
+ cat $tmp.pminfo | _filter_openfds_value
+}
+
+_test_client()
+{
+ # Test a client
+ #
+ echo "=== Testing a Client ===" | tee -a $here/$seq.full
+
+ rm -f $tmp.pminfo
+
+ pminfo -f pmcd.openfds >$tmp.pminfo
+
+ _start_client
+ pminfo -f pmcd.openfds >>$tmp.pminfo
+
+ wait
+ pminfo -f pmcd.openfds >>$tmp.pminfo
+
+ echo "=== pmval output ===" >>$here/$seq.full
+ cat $tmp.tmp >>$here/$seq.full
+ echo "=== pminfo output ===" >>$here/$seq.full
+ cat $tmp.pminfo >>$here/$seq.full
+
+ cat $tmp.pminfo | _filter_openfds_value
+}
+
+_test_client
+_test_pmda DSO
+_test_pmda PIPE
+
+status=0
+# success, all done
+exit
+
diff --git a/qa/578.out.1 b/qa/578.out.1
new file mode 100644
index 0000000..fa535d1
--- /dev/null
+++ b/qa/578.out.1
@@ -0,0 +1,61 @@
+QA output created by 578
+=== Building simple agent ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Skipping PMDA install and PMCD re-configuration
+Namespace installed
+PMDA built
+Help generated
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+=== Testing a Client ===
+=== Started client ===
+=== Info: After install, openfds has increased as expected ===
+=== Info: After remove, openfds has stayed the same as expected ===
+
+=== Testing PMDA as a DSO ===
+=== Installing simple ===
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Info: After install, openfds has increased as expected ===
+=== Info: After remove, openfds has stayed the same as expected ===
+
+=== Testing PMDA as a PIPE ===
+=== Installing simple ===
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Info: After install, openfds has increased as expected ===
+=== Info: After remove, openfds has stayed the same as expected ===
+=== Resetting pmcd.conf back to original state ===
+=== Restart PMCD ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/578.out.2 b/qa/578.out.2
new file mode 100644
index 0000000..2ca632c
--- /dev/null
+++ b/qa/578.out.2
@@ -0,0 +1,56 @@
+QA output created by 578
+=== Building simple agent ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [m] Updating the Performance Metrics Name Space (PMNS) ...
+Skipping PMDA install and PMCD re-configuration
+Namespace installed
+PMDA built
+Help generated
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+=== Testing a Client ===
+=== Started client ===
+=== Info: After install, openfds has increased as expected ===
+=== Info: After remove, openfds has stayed the same as expected ===
+
+=== Testing PMDA as a DSO ===
+=== Installing simple ===
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Info: After install, openfds has increased as expected ===
+=== Info: After remove, openfds has stayed the same as expected ===
+
+=== Testing PMDA as a PIPE ===
+=== Installing simple ===
+simple is alive and well
+=== Removing simple ===
+=== Restarting PMCD with minimal PMDAs ===
+Warnings when fetching simple metrics:
+simple.color: pmLookupDesc: Unknown or illegal metric identifier
+simple.now: pmLookupDesc: Unknown or illegal metric identifier
+simple.numfetch: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.sys: pmLookupDesc: Unknown or illegal metric identifier
+simple.time.user: pmLookupDesc: Unknown or illegal metric identifier
+simple was removed
+=== Info: After install, openfds has increased as expected ===
+=== Info: After remove, openfds has stayed the same as expected ===
+=== Resetting pmcd.conf back to original state ===
+=== Restart PMCD ===
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/580 b/qa/580
new file mode 100755
index 0000000..a63b2a0
--- /dev/null
+++ b/qa/580
@@ -0,0 +1,75 @@
+#! /bin/sh
+# PCP QA Test No. 580
+# Compare pmGetInDom and pmNameIndom for instance names containing spaces
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.filter
+. ./common.check
+. ./common.product
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ linux)
+ # proc metrics may not be available
+ #
+ if pminfo proc.nprocs >/dev/null 2>&1
+ then
+ ln $seq.out.$PCP_PLATFORM $seq.out || exit 1
+ else
+ ln $seq.out.$PCP_PLATFORM.noproc $seq.out || exit 1
+ fi
+ ;;
+ irix|darwin)
+ ln $seq.out.$PCP_PLATFORM $seq.out || exit 1
+ ;;
+ solaris)
+ # same output for Mac OS X and OpenSolaris
+ ln $seq.out.darwin $seq.out || exit 1
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+# see if unix domain sockets are available (permissions)
+_get_libpcp_config
+target="-h localhost"
+$unix_domain_sockets && target="-h unix:"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e 's/ *$//'
+}
+
+# real QA test starts here
+src/indom -i 15 kernel.all.load | _filter
+if [ $PCP_PLATFORM != darwin -a $PCP_PLATFORM != solaris ]
+then
+ src/indom $target -i 1 proc.psinfo.pid \
+ | _filter \
+ | sed 's/<0*1/<ONE/g;
+s,/etc/init ,init,g;
+s,/etc/init,init,g;
+s,/sbin/init,init,g;
+s, /usr/lib/systemd/systemd\([ "]\), init\1,;
+s,init[^>]*,init,g;'
+ # Irix 6.2 has a space after the init, linux may have extra arguments
+ # And on some Linux systems (e.g. Fedora 18), pid 1 is not init, but
+ # /usr/lib/systemd/systemd --switched-root --system --deserialize ...
+fi
+src/indom -i 4 sample.needprofile sampledso.needprofile | _filter
+src/indom -i 500 sample.bin | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/580.out.darwin b/qa/580.out.darwin
new file mode 100644
index 0000000..f45959f
--- /dev/null
+++ b/qa/580.out.darwin
@@ -0,0 +1,17 @@
+QA output created by 580
+kernel.all.load:
+pm*InDom: inst=[15] iname=<15 minute> reverse lookup: inst=[15]
+pmGetInDom:
+ [15] <15 minute>
+sample.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sampledso.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sample.bin:
+pm*InDom: inst=[500] iname=<bin-500> reverse lookup: inst=[500]
+pmGetInDom:
+ [500] <bin-500>
diff --git a/qa/580.out.irix b/qa/580.out.irix
new file mode 100644
index 0000000..f1e9908
--- /dev/null
+++ b/qa/580.out.irix
@@ -0,0 +1,21 @@
+QA output created by 580
+kernel.all.load:
+pm*InDom: inst=[15] iname=<15 minute> reverse lookup: inst=[15]
+pmGetInDom:
+ [15] <15 minute>
+proc.psinfo.pid:
+pm*InDom: inst=[1] iname=<ONE> reverse lookup: inst=[1]
+pmGetInDom:
+ [1] <ONE init>
+sample.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sampledso.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sample.bin:
+pm*InDom: inst=[500] iname=<bin-500> reverse lookup: inst=[500]
+pmGetInDom:
+ [500] <bin-500>
diff --git a/qa/580.out.linux b/qa/580.out.linux
new file mode 100644
index 0000000..68c4b96
--- /dev/null
+++ b/qa/580.out.linux
@@ -0,0 +1,21 @@
+QA output created by 580
+kernel.all.load:
+pm*InDom: inst=[15] iname=<15 minute> reverse lookup: inst=[15]
+pmGetInDom:
+ [15] <15 minute>
+proc.psinfo.pid:
+pm*InDom: inst=[1] iname=<ONE init> reverse lookup: inst=[1]
+pmGetInDom:
+ [1] <ONE init>
+sample.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sampledso.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sample.bin:
+pm*InDom: inst=[500] iname=<bin-500> reverse lookup: inst=[500]
+pmGetInDom:
+ [500] <bin-500>
diff --git a/qa/580.out.linux.noproc b/qa/580.out.linux.noproc
new file mode 100644
index 0000000..4d20ba8
--- /dev/null
+++ b/qa/580.out.linux.noproc
@@ -0,0 +1,19 @@
+QA output created by 580
+kernel.all.load:
+pm*InDom: inst=[15] iname=<15 minute> reverse lookup: inst=[15]
+pmGetInDom:
+ [15] <15 minute>
+proc.psinfo.pid:
+Error: Unknown metric name
+sample.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sampledso.needprofile:
+pm*InDom: inst=[4] iname=<fat> reverse lookup: inst=[4]
+pmGetInDom:
+ [4] <fat bald bastard>
+sample.bin:
+pm*InDom: inst=[500] iname=<bin-500> reverse lookup: inst=[500]
+pmGetInDom:
+ [500] <bin-500>
diff --git a/qa/581 b/qa/581
new file mode 100755
index 0000000..73e4d61
--- /dev/null
+++ b/qa/581
@@ -0,0 +1,258 @@
+#! /bin/sh
+# PCP QA Test No. 581
+# pmie, #687355
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+control=$PCP_PMDAS_DIR/sample/dynamic.indom
+needclean=true
+
+HOST=`hostname`
+
+cat <<End-of-File >$tmp.pmie
+// disk indom
+some_inst disk.dev.total >= 0 -> print "\nDISK %i";
+
+// cpu indom
+some_inst kernel.percpu.cpu.user >= 0 -> print "\nCPU %i";
+End-of-File
+
+if [ $PCP_PLATFORM != solaris ]
+then
+ cat <<End-of-File >>$tmp.pmie
+
+// network interface indom
+some_inst network.interface.total.packets >= 0 -> print "\nNETWORK %i";
+
+// filesys indom
+some_inst filesys.capacity >= 0 -> print "\nFILESYS %i";
+End-of-File
+fi
+
+cat <<End-of-File >>$tmp.pmie
+
+// sample.mirage
+some_inst sample.mirage >= 0 -> print "\nMIRAGE %i";
+
+// the dynamic ones ...
+some_inst sample.dynamic.discrete >= 0 -> print "DYN_DISCRETE" " %i";
+some_inst sample.dynamic.instant >= 0 -> print "DYN_INSTANT" " %i";
+End-of-File
+
+_cleanup()
+{
+ if $needclean
+ then
+ $sudo rm -f $control
+ [ -f $control.$seq ] && $sudo mv $control.$seq $control
+ _restore_loggers
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ needlcean=false
+ fi
+ $sudo rm -f $tmp.*
+}
+
+_filter()
+{
+ sed \
+ -e '/value/s/ [0-9]*$/ N/'
+}
+
+$sudo rm -f $control.$seq
+trap "_cleanup; exit \$status" 0 1 2 3 15
+[ -f $control ] && $sudo mv $control $control.$seq
+
+PMCD_RECONNECT_TIMEOUT=1
+export PMCD_RECONNECT_TIMEOUT
+
+# instances - mk I
+#
+cat >$tmp.indom <<End-of-File
+10 ten
+20 twenty
+30 thirty
+End-of-File
+
+$sudo rm -f $control
+$sudo cp $tmp.indom $control
+_disable_loggers
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+pminfo -f sample.dynamic.instant | _filter
+echo
+
+# real QA test starts here
+
+pmie -t 250msec -c $tmp.pmie >$tmp.out 2>&1 &
+pid_pmie=$!
+
+# sleep_stop time to sleep before stopping pmcd
+# sleep_start time to sleep before starting pmcd
+sleep_start=4
+sleep_stop=5
+
+# and again with the same instances
+#
+sleep $sleep_stop
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+sleep $sleep_start
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+pminfo -f sample.dynamic.instant |_filter
+echo
+
+# instances - mk II
+#
+sleep $sleep_stop
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+cat >$tmp.indom <<End-of-File
+20 twenty
+25 twenty-five
+30 thirty
+40 forty
+49 forty-nine
+50 fifty
+58 fifty-eight
+106 one-hundred-and-six
+End-of-File
+$sudo cp $tmp.indom $control
+sleep $sleep_start
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+pminfo -f sample.dynamic.instant |_filter
+echo
+
+# instances - mk III
+#
+sleep $sleep_stop
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+cat >$tmp.indom <<End-of-File
+07 seven
+08 eight
+10 ten
+20 twenty
+30 thirty-*
+100 one-hundred
+End-of-File
+$sudo cp $tmp.indom $control
+sleep $sleep_start
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+pminfo -f sample.dynamic.instant |_filter
+echo
+
+# instances - mk IV
+#
+sleep $sleep_stop
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+cat >$tmp.indom <<End-of-File
+End-of-File
+$sudo cp $tmp.indom $control
+sleep $sleep_start
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+pminfo -f sample.dynamic.instant |_filter
+echo
+
+sleep $sleep_stop
+$signal -s TERM $pid_pmie
+wait
+
+cp $tmp.out $seq.full
+
+echo
+echo "Expect only connection lost/re-established and DYN_* lines ..."
+echo
+
+# in addition to the regular filtering, some versions of Linux return
+# ECONNRESET on the write() when pmcd is signald, rather than waiting
+# to return the error on the following read() ... as far as this test
+# is concerned, these are synonyms
+#
+_filter_pmie_log <$tmp.out \
+| sed \
+ -e "/ Error: /s/$HOST/HOST/g" \
+ -e "/ Error: /s/local:/HOST/g" \
+ -e "/ Error: /s/localhost/HOST/g" \
+ -e "/ Info: /s/$HOST/HOST/g" \
+ -e "/ Info: /s/localhost/HOST/g" \
+ -e "/ Info: /s/local:/HOST/g" \
+ -e 's/failed: Connection reset by peer/failed: IPC protocol failure/' \
+ -e '/^DATE: *$/d' \
+ -e '/^FILESYS \/dev\//d' \
+ -e '/^FILESYS \/dev$/d' \
+ -e '/^FILESYS none$/d' \
+ -e '/^FILESYS devfs$/d' \
+ -e '/^FILESYS map -hosts$/d' \
+ -e '/^FILESYS map auto_home$/d' \
+ -e '/^MIRAGE m-[0-9][0-9]*$/d' \
+ -e '/^DISK dks[0-9][0-9]*d[0-9][0-9]*/d' \
+ -e '/^DISK [a-f0-9][a-f0-9]*\/lun[0-9][0-9]*\/c[0-9][0-9]*p[0-9][0-9]*/d' \
+ -e '/^DISK hd[a-z]/d' \
+ -e '/^DISK sd[a-z0-9]/d' \
+ -e '/^DISK dasd[a-z]/d' \
+ -e '/^DISK cmdk[0-9]/d' \
+ -e '/^DISK rd\//d' \
+ -e '/^DISK scsi\/host/d' \
+ -e '/^DISK vd[a-z]/d' \
+ -e '/^DISK xscsi\/pci/d' \
+ -e '/^DISK xvm\//d' \
+ -e '/^DISK disk[0-9][0-9]*$/d' \
+ -e '/^CPU cpu[0-9][0-9]*$/d' \
+ -e '/^CPU cpu:[0-9][0-9]*\.[0-9][0-9]*\.[ab]$/d' \
+ -e '/^CPU cpu:[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[a-d]$/d' \
+ -e '/^NETWORK dummy[0-9]/d' \
+ -e '/^NETWORK br[0-9][0-9]*$/d' \
+ -e '/^NETWORK e[cfmnt][0-9][0-9]*$/d' \
+ -e '/^NETWORK ens[0-9]*$/d' \
+ -e '/^NETWORK enp[0-9][0-9]*s[0-9][0-9]*f[0-9][0-9]*$/d' \
+ -e '/^NETWORK enp[0-9][0-9]*s[0-9][0-9]*f[0-9][0-9]*u[0-9][0-9]*$/d' \
+ -e '/^NETWORK eth[0-9]/d' \
+ -e '/^NETWORK fw[0-9][0-9]*$/d' \
+ -e '/^NETWORK gif[0-9][0-9]*$/d' \
+ -e '/^NETWORK lo[0-9][0-9]*$/d' \
+ -e '/^NETWORK lo$/d' \
+ -e '/^NETWORK p[0-9][0-9]*p[0-9][0-9]*$/d' \
+ -e '/^NETWORK pan[0-9][0-9]*$/d' \
+ -e '/^NETWORK ppp[0-9][0-9]*$/d' \
+ -e '/^NETWORK sit[0-9]/d' \
+ -e '/^NETWORK sl[0-9][0-9]*$/d' \
+ -e '/^NETWORK stf[0-9][0-9]*$/d' \
+ -e '/^NETWORK tun[0-9][0-9]*$/d' \
+ -e '/^NETWORK usb[0-9][0-9]*$/d' \
+ -e '/^NETWORK vde[0-9][0-9]*$/d' \
+ -e '/^NETWORK vnet[0-9][0-9]*$/d' \
+ -e '/^NETWORK virbr[0-9][0-9]*$/d' \
+ -e '/^NETWORK virbr[0-9][0-9]*-nic$/d' \
+ -e '/^NETWORK wlan[0-9][0-9]*$/d' \
+ -e '/^NETWORK wlp[0-9][0-9]*s[0-9][0-9]*$/d' \
+ -e '/^NETWORK wwan[0-9][0-9]*$/d' \
+ -e '/^NETWORK wmaster[0-9][0-9]*$/d' \
+ -e '/^NETWORK xp[0-9][0-9]*$/d' \
+| $PCP_AWK_PROG '
+BEGIN { last["DYN_DISCRETE"] = last["DYN_INSTANT"] = "" }
+$2 ~ /DYN_/ { if (last[$2] != $0) {
+ print $0
+ last[$2] = $0
+ }
+ next
+ }
+ { print }
+/Lost connection/ { last["DYN_DISCRETE"] = last["DYN_INSTANT"] = "" }'
+
+# success, all done
+status=0
+exit
diff --git a/qa/581.out b/qa/581.out
new file mode 100644
index 0000000..2c96d89
--- /dev/null
+++ b/qa/581.out
@@ -0,0 +1,78 @@
+QA output created by 581
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+sample.dynamic.instant
+ inst [10 or "ten"] value N
+ inst [20 or "twenty"] value N
+ inst [30 or "thirty"] value N
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+sample.dynamic.instant
+ inst [10 or "ten"] value N
+ inst [20 or "twenty"] value N
+ inst [30 or "thirty"] value N
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+sample.dynamic.instant
+ inst [20 or "twenty"] value N
+ inst [25 or "twenty-five"] value N
+ inst [30 or "thirty"] value N
+ inst [40 or "forty"] value N
+ inst [49 or "forty-nine"] value N
+ inst [50 or "fifty"] value N
+ inst [58 or "fifty-eight"] value N
+ inst [106 or "one-hundred-and-six"] value N
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+sample.dynamic.instant
+ inst [7 or "seven"] value N
+ inst [8 or "eight"] value N
+ inst [10 or "ten"] value N
+ inst [20 or "twenty"] value N
+ inst [30 or "thirty-*"] value N
+ inst [100 or "one-hundred"] value N
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+sample.dynamic.instant
+No value(s) available!
+
+
+Expect only connection lost/re-established and DYN_* lines ...
+
+DATE: DYN_DISCRETE ten twenty thirty
+DATE: DYN_INSTANT ten twenty thirty
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST failed: IPC protocol failure
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST
+DATE: DYN_DISCRETE ten twenty thirty
+DATE: DYN_INSTANT ten twenty thirty
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST failed: IPC protocol failure
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST
+DATE: DYN_DISCRETE twenty twenty-five thirty forty forty-nine fifty fifty-eight one-hundred-and-six
+DATE: DYN_INSTANT twenty twenty-five thirty forty forty-nine fifty fifty-eight one-hundred-and-six
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST failed: IPC protocol failure
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST
+DATE: DYN_DISCRETE seven eight ten twenty thirty-* one-hundred
+DATE: DYN_INSTANT seven eight ten twenty thirty-* one-hundred
+[TIMESTAMP] pmie(PID) Error: pmFetch from HOST failed: IPC protocol failure
+[TIMESTAMP] pmie(PID) Info: Lost connection to pmcd on host HOST
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host HOST
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/583 b/qa/583
new file mode 100755
index 0000000..4bf8216
--- /dev/null
+++ b/qa/583
@@ -0,0 +1,149 @@
+#! /bin/sh
+# PCP QA Test No. 583
+# based on 519, caused pmie to dump core initially
+# also #698718
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+eval `./getpmcdhosts -n 2 -L | sed -e 's/ / other2=/' -e 's/^/other1=/'`
+if [ -z "$other1" ]
+then
+ echo "Cannot find first remote host running pmcd" >$seq.notrun
+ exit
+fi
+if [ -z "$other2" ]
+then
+ echo "Cannot find second remote host running pmcd" >$seq.notrun
+ exit
+fi
+
+case $PCP_PLATFORM
+in
+ irix|linux|solaris)
+ # same syslog options for Irix, Linux and OpenSolaris
+ SYSLOG_OPT='"-p daemon.info"'
+ ;;
+ darwin)
+ SYSLOG_OPT=''
+ ;;
+ *)
+ echo "Arrgh ... need syslog option for $PCP_PLATFORM"
+ exit 1
+ ;;
+esac
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e 's/[A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e "s/`hostname | sed -e 's/\..*//'` /HOST /" \
+ -e 's/[0-9][A-Z]:HOST/HOST/' \
+ -e 's/\(pmie[([]\)[0-9][0-9]*/\1PID/'
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+PMCD_CONNECT_TIMEOUT=60
+PMCD_REQUEST_TIMEOUT=60
+PMCD_RECONNECT_TIMEOUT=1,2
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT PMCD_RECONNECT_TIMEOUT
+
+SYSLOG=''
+for f in /var/adm/SYSLOG /var/log/daemon.log /var/log/messages /var/log/syslog /var/log/system.log
+do
+ if [ -f $f ]
+ then
+ SYSLOG=$f
+ break
+ fi
+done
+if [ -z "$SYSLOG" ]
+then
+ echo "Arrgh! Cannot find your syslog file"
+ exit 1
+fi
+
+# real QA test starts here
+$sudo rm -f core* $seq.core*
+
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+sleep 3
+
+# note the following is time sensitive, run it too long
+# and we'll get extraneous output...
+cat <<EOF >$tmp.in
+// use hosts not in QA circus
+//
+
+hosts = ":'$other1' :'$other2' :localhost";
+
+some_host (
+ some_inst (
+ ( 100 * filesys.used \$hosts / filesys.capacity \$hosts ) > 0 ) )
+-> print 5sec "full" " %h:[%i] %v% "
+ & syslog 5sec $SYSLOG_OPT "PCP QA $seq - please ignore - ..." " %h:[%i] %v% ";
+
+EOF
+
+rm -f $seq.full
+echo "=== pmie.conf ===" >$seq.full
+cat $tmp.in >>$seq.full
+
+pmie -t 1sec >$tmp.out 2>$tmp.err <$tmp.in &
+pmie_pid=$!
+
+sleep 5
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+sleep 15
+$signal -s TERM $pmie_pid
+wait
+
+echo "pmie output ..."
+sed <$tmp.out \
+ -e "/ $other1:/d" \
+ -e "/ $other2:/d" \
+ -e '/ localhost:/d'
+grep " $other1:" <$tmp.out >/dev/null && echo "... at least one line for other1 host"
+grep " $other2:" <$tmp.out >/dev/null && echo "... at least one line for other2 host"
+grep ' localhost:' <$tmp.out >/dev/null && echo "... at least one line for localhost"
+
+echo
+echo "pmie stderr ..."
+_filter <$tmp.err
+
+echo >>$seq.full
+echo "=== pmie stdout ===" >>$seq.full
+cat $tmp.out >>$seq.full
+echo >>$seq.full
+echo "=== pmie stderr ===" >>$seq.full
+cat $tmp.err >>$seq.full
+
+echo
+echo "SYSLOG ..."
+$sudo tail -100 $SYSLOG >$tmp.tmp
+sed <$tmp.tmp -n '/PCP QA '"$seq"' - please ignore/s/\.\.\..*/.../p' \
+| _filter \
+| LC_COLLATE=POSIX sort -u
+
+echo >>$seq.full
+echo "=== tail SYSLOG ($SYSLOG) ===" >>$seq.full
+cat $tmp.tmp >>$seq.full
+
+_check_core
+
+exit
diff --git a/qa/583.out b/qa/583.out
new file mode 100644
index 0000000..a0405b5
--- /dev/null
+++ b/qa/583.out
@@ -0,0 +1,16 @@
+QA output created by 583
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+pmie output ...
+... at least one line for other1 host
+... at least one line for other2 host
+... at least one line for localhost
+
+pmie stderr ...
+[TIMESTAMP] pmie(PID) Info: Cannot connect to pmcd on host localhost
+pmie: warning - pmcd on host localhost does not respond
+[TIMESTAMP] pmie(PID) Info: Re-established connection to pmcd on host localhost
+
+SYSLOG ...
+TIMESTAMP HOST pcp-pmie[PID]: PCP QA 583 - please ignore - ...
diff --git a/qa/584 b/qa/584
new file mode 100755
index 0000000..d21577c
--- /dev/null
+++ b/qa/584
@@ -0,0 +1,70 @@
+#! /bin/sh
+# $PMCD_RECONNECT_TIMEOUT set to "1" causes ABW Purify error?
+# #698774
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# check if pmie is stripped ... if so, skip this test
+#
+if elfdump -cr $PCP_BIN_DIR/pmie 2>&1 | head -5 | grep "No compact relocation" >/dev/null
+then
+ echo "pmie is stripped: can't purify" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+# check for a working purify - note purify no longer works on 7.3
+# compiled binaries - this isn't checked yet: fix-on-fail
+_check_purify $PCP_BIN_DIR/pmie
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd $here
+ $sudo rm -rf $tmp.*
+}
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e 's/[A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e "s/`hostname`/HOST/" \
+ -e 's/\(pmie.pure[([]\)[0-9][0-9]*/\1PID/'
+}
+
+_setup_purify $PCP_BIN_DIR/pmie
+
+# real QA test starts here
+PMCD_RECONNECT_TIMEOUT=1
+PURIFY_FILTER_EXTRA=1
+export PMCD_RECONNECT_TIMEOUT PURIFY_FILTER_EXTRA
+# ensure pmie runs for long enough to reliably reconnect (20 -> 25 seconds)
+echo "sample.bin > 0" | _run_purify -t 1sec -T 25sec >$tmp.purified 2>&1 &
+
+sleep 5
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+sleep 5
+$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+wait
+
+echo
+echo "=== stdout+stderr ==="
+cat $tmp.purified | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/584.out b/qa/584.out
new file mode 100644
index 0000000..cb29a71
--- /dev/null
+++ b/qa/584.out
@@ -0,0 +1,25 @@
+QA output created by 584
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== stdout+stderr ===
+[TIMESTAMP] pmie.pure(PID) Error: pmFetch from HOST failed: IPC protocol failure
+[TIMESTAMP] pmie.pure(PID) Info: Lost connection to pmcd on host HOST
+[TIMESTAMP] pmie.pure(PID) Info: Re-established connection to pmcd on host HOST
+[TIMESTAMP] pmie.pure(PID) Info: evaluator exiting
+
+**** Purify instrumented TMP/pmie.pure (pid PID) ****
+Current file descriptors in use: N
+...
+**** Purify instrumented TMP/pmie.pure (pid PID) ****
+Purify: Searching for all memory leaks...
+
+Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%)
+
+Purify Heap Analysis (combining suppressed and unsuppressed blocks)
+...
+**** Purify instrumented TMP/pmie.pure (pid PID) ****
+ * Program exited with status code 0.
+ * 0 access errors, 0 total occurrences.
+...
diff --git a/qa/587 b/qa/587
new file mode 100755
index 0000000..4458690
--- /dev/null
+++ b/qa/587
@@ -0,0 +1,151 @@
+#! /bin/sh
+# PCP QA Test No. 587
+# pmcd long line handling error
+# #754795 - pmcd botches handling of long lines in pmcd.conf
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+case $PCP_PLATFORM
+in
+ irix|linux|darwin|solaris)
+ ln $seq.$PCP_PLATFORM $seq.out || exit 1
+ ;;
+ *)
+ _notrun "Need qualified output for $PCP_PLATFORM"
+ ;;
+esac
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+
+install_on_cleanup=false
+pminfo trivial >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ ( cd $PCP_PMDAS_DIR/trivial ; $sudo make >/dev/null 2>&1 )
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/trivial; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/trivial; $sudo ./Remove >/dev/null 2>&1 )
+ fi
+ if [ -f $PCP_PMCDCONF_PATH.$seq ]
+ then
+ echo
+ $sudo rm -f $PCP_PMCDCONF_PATH
+ $sudo mv $PCP_PMCDCONF_PATH.$seq $PCP_PMCDCONF_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ else
+ $sudo $signal -a -s HUP pmcd
+ fi
+ rm -f $tmp.*
+ if [ -d $PCP_LOG_DIR/pmcd ]
+ then
+ $sudo rm -f $PCP_LOG_DIR/pmcd/this-is-not-a-filename-but-is-arbitrary-filler-to-make-the-lines-longer-than-*-bytes*
+ else
+ $sudo rm -f $PCP_LOG_DIR/this-is-not-a-filename-but-is-arbitrary-filler-to-make-the-lines-longer-than-*-bytes*
+ fi
+}
+
+# default case
+PMCDLOG=$PCP_LOG_DIR/pmcd/pmcd.log
+
+case "$PCP_PLATFORM" in
+irix)
+ PMCDLOG=$PCP_LOG_DIR/pmcd.log
+ cat <<End-of-File >$tmp.conf
+# temporary pmcd.conf for qa/$seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+End-of-File
+ ;;
+
+linux)
+ cat >> $tmp.conf << EOF
+# temporary pmcd.conf for qa/$seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+EOF
+ ;;
+
+darwin)
+ cat >> $tmp.conf << EOF
+# temporary pmcd.conf for qa/$seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+EOF
+ ;;
+
+solaris)
+ cat >> $tmp.conf << EOF
+# temporary pmcd.conf for qa/$seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+EOF
+ ;;
+
+*)
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+esac
+
+$sudo mv $PCP_PMCDCONF_PATH $PCP_PMCDCONF_PATH.$seq
+$sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+unset ROOT MAKEFLAGS
+cd $PCP_PMDAS_DIR/trivial
+$sudo ./Install </dev/null >/dev/null
+cd $here
+
+echo 'bogus 249 pipe binary '"$PCP_PMDAS_DIR/trivial/pmdatrivial"' -d 250 -l "this-is-not-a-filename-but-is-arbitrary-filler-to-make-the-lines-longer-than-200-bytes-------------------------------------------------------------------"' >>$tmp.conf
+
+echo 'fungus 248 pipe binary '"$PCP_PMDAS_DIR/trivial/pmdatrivial"' -d 250 -l "this-is-not-a-filename-but-is-arbitrary-filler-to-make-the-lines-longer-than-400-bytes-------------------------------------------------------------------fungus 248 pipe binary '"$PCP_PMDAS_DIR/trivial/pmdatrivial"' -d 250 -l this-is-not-a-filename-but-is-arbitrary-filler-to-make-the-lines-longer-than-500-bytes-------------------------------------------------------------------0123456768901234567689012345676890123456768901234567689012345676890123456768901234567689"' >>$tmp.conf
+
+echo 'humus 247 pipe binary '"$PCP_PMDAS_DIR/trivial/pmdatrivial"' -d 250 -l "this-is-not-a-filename-but-is-arbitrary-filler-to-make-the-lines-longer-than-2000-bytes------------------------------------------------------------------- 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"' >>$tmp.conf
+
+cp $tmp.conf $tmp.conf+trivial
+grep '^trivial' $PCP_PMCDCONF_PATH >>$tmp.conf+trivial
+
+# real QA test starts here
+for i in 1 2 3 4 5 6
+do
+ echo
+ echo "=== Cycle $i ==="
+ echo "add trivial PMDA ..."
+ $sudo cp $tmp.conf+trivial $PCP_PMCDCONF_PATH
+ $sudo touch $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd
+ sleep 1
+ _wait_for_pmcd
+ pminfo -f pmcd.agent.type
+ echo "cull trivial PMDA ..."
+ $sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+ $sudo touch $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd
+ sleep 1
+ _wait_for_pmcd
+ pminfo -f pmcd.agent.type
+done
+
+grep ridiculous $PMCDLOG
+
+# success, all done
+status=0
+exit
diff --git a/qa/587.darwin b/qa/587.darwin
new file mode 100644
index 0000000..e23725d
--- /dev/null
+++ b/qa/587.darwin
@@ -0,0 +1,122 @@
+QA output created by 587
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== Cycle 1 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 2 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 3 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 4 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 5 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 6 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [78 or "darwin"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/587.irix b/qa/587.irix
new file mode 100644
index 0000000..65ccf1b
--- /dev/null
+++ b/qa/587.irix
@@ -0,0 +1,134 @@
+QA output created by 587
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== Cycle 1 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 2 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 3 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 4 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 5 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 6 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [1 or "irix"] value 0
+ inst [2 or "pmcd"] value 0
+ inst [3 or "proc"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/587.linux b/qa/587.linux
new file mode 100644
index 0000000..12cd144
--- /dev/null
+++ b/qa/587.linux
@@ -0,0 +1,122 @@
+QA output created by 587
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== Cycle 1 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 2 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 3 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 4 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 5 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 6 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [60 or "linux"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/587.solaris b/qa/587.solaris
new file mode 100644
index 0000000..64ebad3
--- /dev/null
+++ b/qa/587.solaris
@@ -0,0 +1,122 @@
+QA output created by 587
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+
+=== Cycle 1 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 2 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 3 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 4 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 5 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+=== Cycle 6 ===
+add trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+ inst [250 or "trivial"] value 4
+cull trivial PMDA ...
+
+pmcd.agent.type
+ inst [2 or "pmcd"] value 0
+ inst [75 or "solaris"] value 0
+ inst [247 or "humus"] value 4
+ inst [248 or "fungus"] value 4
+ inst [249 or "bogus"] value 4
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/589 b/qa/589
new file mode 100755
index 0000000..215a8c0
--- /dev/null
+++ b/qa/589
@@ -0,0 +1,87 @@
+#!/bin/sh
+# PCP QA Test No. 589
+# make sure that telnet-probe does what its supposed to
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+host=`./getpmcdhosts -L -n 1 2>$seq.notrun`
+if [ -z "$host" ]
+then
+ cat $seq.notrun
+ exit
+fi
+rm -f $seq.notrun
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e 's;/[^ ]*/telnet-probe\([: ]\);.../telnet-probe\1;'
+}
+
+_filter2()
+{
+ sed \
+ -e 's/__pmGetAddrInfo/gethostbyname/g' \
+ -e 's/__pmGetHostByName/gethostbyname/g' \
+ -e '/gethostbyname:/s/ Resolver Error 0 (no error)/ Unknown host/' \
+ -e 's/No route to host/Connection refused/'
+}
+
+# real QA test starts here
+
+# simple error test
+echo; echo === 1st test
+echo quit | $PCP_BINADM_DIR/telnet-probe $host abc >$tmp.out 2>&1
+sts=$?
+cat $tmp.out | _filter
+echo "exit status is $sts (should be 1 with error msg)"
+echo quit | $PCP_BINADM_DIR/telnet-probe 1 2 3 >$tmp.out 2>&1
+sts=$?
+cat $tmp.out | _filter
+echo "exit status is $sts (should be 1 with error msg)"
+
+# should exit with good status
+echo; echo === 2nd test
+echo quit | $PCP_BINADM_DIR/telnet-probe localhost 22
+echo "exit status is $? (should be 0)"
+echo quit | $PCP_BINADM_DIR/telnet-probe $host 22
+echo "exit status is $? (should be 0)"
+
+# should fail to connect
+#
+# Note: [port] 26 below is unassigned by IANA although
+# http://www.speedguide.net reports it may be used for RSFTP (simple
+# FTP-like service) and perhaps an SMTP alternate ... for our
+# purposes we're looking for a port that has no one listening
+# on the remote end
+# Another note: some firewalls will respond with "No route to host"
+# rather than "Connection refused", so treat these as equivalent
+#
+echo; echo === 3rd test
+echo quit | $PCP_BINADM_DIR/telnet-probe -v localhost 26 >$tmp.out 2>$tmp.err
+sts=$?
+cat $tmp.err $tmp.out | _filter2
+echo "exit status is $sts (should be 1 with verbosity)"
+echo quit | $PCP_BINADM_DIR/telnet-probe -v $host 26 >$tmp.out 2>$tmp.err
+sts=$?
+cat $tmp.err $tmp.out | _filter2
+echo "exit status is $sts (should be 1 with verbosity)"
+echo quit | $PCP_BINADM_DIR/telnet-probe -v no.such.host 26 >$tmp.out 2>$tmp.err
+sts=$?
+cat $tmp.err $tmp.out | _filter2
+echo "exit status is $sts (should be 1 with verbosity)"
+
+# success, all done
+status=0
+exit
diff --git a/qa/589.out b/qa/589.out
new file mode 100644
index 0000000..1f9036d
--- /dev/null
+++ b/qa/589.out
@@ -0,0 +1,24 @@
+QA output created by 589
+
+=== 1st test
+.../telnet-probe: port must be a positive number
+Usage: .../telnet-probe [-c] [-v] host port
+exit status is 1 (should be 1 with error msg)
+.../telnet-probe: requires two arguments
+Usage: .../telnet-probe [-c] [-v] host port
+exit status is 1 (should be 1 with error msg)
+
+=== 2nd test
+exit status is 0 (should be 0)
+exit status is 0 (should be 0)
+
+=== 3rd test
+connect: Connection refused
+exit: 1
+exit status is 1 (should be 1 with verbosity)
+connect: Connection refused
+exit: 1
+exit status is 1 (should be 1 with verbosity)
+gethostbyname: Unknown host
+exit: 1
+exit status is 1 (should be 1 with verbosity)
diff --git a/qa/592 b/qa/592
new file mode 100755
index 0000000..a9a887f
--- /dev/null
+++ b/qa/592
@@ -0,0 +1,41 @@
+#! /bin/sh
+# PCP QA Test No. 592
+# test new "sample.many.{count,int}" metric
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+if [ $PCP_VER -le 2100 ]
+then
+ echo "needs sample.many metrics" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+cleanup()
+{
+ pmstore sample.many.count 5
+}
+
+trap "cleanup ; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+pminfo -t sample.many.count
+pminfo -t sample.many.int
+
+pminfo -f sample.many.count
+pminfo -f sample.many.int
+pmstore sample.many.count 13
+pminfo -f sample.many.count
+pminfo -f sample.many.int
+
diff --git a/qa/592.out b/qa/592.out
new file mode 100644
index 0000000..6ab8908
--- /dev/null
+++ b/qa/592.out
@@ -0,0 +1,33 @@
+QA output created by 592
+sample.many.count [number of instances in sample.many.int's domain]
+sample.many.int [variable sized instance domain]
+
+sample.many.count
+ value 5
+
+sample.many.int
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+sample.many.count old value=5 new value=13
+
+sample.many.count
+ value 13
+
+sample.many.int
+ inst [0 or "i-0"] value 0
+ inst [1 or "i-1"] value 1
+ inst [2 or "i-2"] value 2
+ inst [3 or "i-3"] value 3
+ inst [4 or "i-4"] value 4
+ inst [5 or "i-5"] value 5
+ inst [6 or "i-6"] value 6
+ inst [7 or "i-7"] value 7
+ inst [8 or "i-8"] value 8
+ inst [9 or "i-9"] value 9
+ inst [10 or "i-10"] value 10
+ inst [11 or "i-11"] value 11
+ inst [12 or "i-12"] value 12
+sample.many.count old value=13 new value=5
diff --git a/qa/593 b/qa/593
new file mode 100755
index 0000000..7872aa5
--- /dev/null
+++ b/qa/593
@@ -0,0 +1,48 @@
+#! /bin/sh
+# PCP QA Test No. 593
+# test pmlogger bug 779495
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+if [ $PCP_VER -lt 2200 -o \( $PCP_EOE_VER -ge 6500 -a $PCP_EOE_VER -lt 6508 \) -o $PCP_EOE_VER -lt 2200 ]
+then
+ echo "needs sample.many metrics & new pmlogger (pv#779495)" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+cleanup()
+{
+ pmstore sample.many.count 5
+}
+
+trap "cleanup ; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+status=1
+
+# real QA test starts here
+
+# if bug 779495 is outstanding, we'll fail a calloc
+
+pmstore sample.many.count 30000
+
+cat > $tmp.config << EOF
+log mandatory on once {
+ sample.many.int
+}
+EOF
+
+pmlogger -l $tmp.log -s 1 -c $tmp.config $tmp
+_filter_pmlogger_log <$tmp.log
+
+status=0
+exit
diff --git a/qa/593.out b/qa/593.out
new file mode 100644
index 0000000..6d9a5ad
--- /dev/null
+++ b/qa/593.out
@@ -0,0 +1,11 @@
+QA output created by 593
+sample.many.count old value=5 new value=30000
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+sample.many.count old value=30000 new value=5
diff --git a/qa/594 b/qa/594
new file mode 100755
index 0000000..9c85005
--- /dev/null
+++ b/qa/594
@@ -0,0 +1,48 @@
+#! /bin/sh
+# PCP QA Test No. 594
+# pv 779246/782029 test sample.sysinfo vtype / desc
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = darwin ] && _notrun "No sysinfo on darwin"
+[ $PCP_PLATFORM = solaris ] && _notrun "No sysinfo on solaris"
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# we need to replace the bytes output with an indication of how many there were
+
+src/779246 \
+ | \
+ sed -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ |
+ $PCP_AWK_PROG '
+ /\+\+\+ Expect/ { expsiz = $3; }
+ /value \"/ {
+ $2="\"<" length($2)/2-1 " CHARS>\""
+ $3="[<" length($3)/2-1 " BYTES>]"
+ }
+ /value \[/ {
+ if ( length($2)/2-1 == expsiz ) {
+ $2="[<expected number of BYTES>]"
+ } else {
+ $2=sprintf ("[<%d instead of expected %d BYTES>]",
+ length($2)/2-1, expsiz);
+ }
+ }
+ {
+ print
+ }' | sed -e '/+++ Expect/d'
+
+status=0
+
+exit
diff --git a/qa/594.out b/qa/594.out
new file mode 100644
index 0000000..73d0eb6
--- /dev/null
+++ b/qa/594.out
@@ -0,0 +1,7 @@
+QA output created by 594
+ Data Type: aggregate InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+sample.sysinfo vtype == 7
+pmResult ... numpmid: 1
+ 29.0.39 (sample.sysinfo): numval: 1 valfmt: 2 vlist[]:
+value [<expected number of BYTES>]
diff --git a/qa/597 b/qa/597
new file mode 100755
index 0000000..d98f150
--- /dev/null
+++ b/qa/597
@@ -0,0 +1,67 @@
+#! /bin/sh
+# PCP QA Test No. 597
+# Install/Remove of shping PMDA
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+_cleanup()
+{
+ _restore_pmda_install $iam
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_filter()
+{
+ $PCP_AWK_PROG '
+/--- end \.\/sample\.conf ---/ { skip = 0 }
+skip == 0 { print }
+/--- start \.\/sample\.conf ---/{ print "[deleted]"; skip = 1 }
+'
+}
+
+iam=shping
+status=1
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_pmda_install $iam
+
+echo
+echo "=== default $iam agent installation ==="
+$sudo ./Remove > $tmp.out 2>&1
+$sudo ./Install </dev/null >>$tmp.out 2>&1
+_filter_pmda_install <$tmp.out | _filter
+
+if pminfo -v $iam
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+status=0
+exit
diff --git a/qa/597.out.1 b/qa/597.out.1
new file mode 100644
index 0000000..4ad74e8
--- /dev/null
+++ b/qa/597.out.1
@@ -0,0 +1,46 @@
+QA output created by 597
+
+=== default shping agent installation ===
+Culling the Performance Metrics Name Space ...
+shping ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check shping metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "shping" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Possible configuration files to choose from:
+[1] ./sample.conf
+[2] Specify your own configuration file.
+[3] None of the above (abandon configuration file selection).
+Which configuration file do you want to use ? [1]
+Contents of the selected configuration file:
+--------------- start ./sample.conf ---------------
+[deleted]
+--------------- end ./sample.conf ---------------
+
+Use this configuration file? [y]
+All commands are run one after another as a group and the group is run
+once per "cycle" time. Enter the cycle time in seconds [120]
+Each command must complete within a timeout period, or it will be aborted
+by the "shping" PMDA. Enter the timeout period (in seconds) [20] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Wait 10 seconds for the shping agent to initialize ...
+Check shping metrics have appeared ... 11 metrics and 65 values
+
+=== remove shping agent ===
+Culling the Performance Metrics Name Space ...
+shping ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check shping metrics have gone away ... OK
diff --git a/qa/597.out.2 b/qa/597.out.2
new file mode 100644
index 0000000..2797640
--- /dev/null
+++ b/qa/597.out.2
@@ -0,0 +1,41 @@
+QA output created by 597
+
+=== default shping agent installation ===
+Culling the Performance Metrics Name Space ...
+shping ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Check shping metrics have gone away ... OK
+You will need to choose an appropriate configuration for installation of
+the "shping" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Possible configuration files to choose from:
+[1] ./sample.conf
+[2] Specify your own configuration file.
+[3] None of the above (abandon configuration file selection).
+Which configuration file do you want to use ? [1]
+Contents of the selected configuration file:
+--------------- start ./sample.conf ---------------
+[deleted]
+--------------- end ./sample.conf ---------------
+
+Use this configuration file? [y]
+All commands are run one after another as a group and the group is run
+once per "cycle" time. Enter the cycle time in seconds [120]
+Each command must complete within a timeout period, or it will be aborted
+by the "shping" PMDA. Enter the timeout period (in seconds) [20] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Wait 10 seconds for the shping agent to initialize ...
+Check shping metrics have appeared ... 11 metrics and 65 values
+
+=== remove shping agent ===
+Culling the Performance Metrics Name Space ...
+shping ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check shping metrics have gone away ... OK
diff --git a/qa/599 b/qa/599
new file mode 100755
index 0000000..5fd7a2e
--- /dev/null
+++ b/qa/599
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 599
+# pv#789425 pmie botches scheduling of archive fetches when delta changes
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/0x[0-9a-f][0-9a-f]*/ADDR/' \
+ -e '/pmie([0-9][0-9]*)/{
+s//pmie(PID)/
+s/^\[.*\] /[DATE] /
+}'
+}
+
+# real QA test starts here
+pmie -D fetch -Z EST-10 -v -a src/sample-secs <<End-of-File >$tmp.out 2>$tmp.err
+delta = 10sec;
+sample.seconds;
+delta = 15sec;
+sample.seconds;
+sample.milliseconds;
+End-of-File
+
+cat $tmp.out
+echo ----
+_filter <$tmp.err
+
+# success, all done
+status=0
+exit
diff --git a/qa/599.out b/qa/599.out
new file mode 100644
index 0000000..4655228
--- /dev/null
+++ b/qa/599.out
@@ -0,0 +1,87 @@
+QA output created by 599
+expr_1 (Mon May 1 20:36:45 2000): ?
+
+expr_2 (Mon May 1 20:36:45 2000): ?
+expr_3 (Mon May 1 20:36:45 2000): ?
+
+expr_1 (Mon May 1 20:36:55 2000): ?
+
+expr_2 (Mon May 1 20:37:00 2000): ?
+expr_3 (Mon May 1 20:37:00 2000): ?
+
+expr_1 (Mon May 1 20:37:05 2000): 1
+
+expr_1 (Mon May 1 20:37:15 2000): 1
+
+expr_2 (Mon May 1 20:37:15 2000): 1
+expr_3 (Mon May 1 20:37:15 2000): 1.00
+
+expr_1 (Mon May 1 20:37:25 2000): 1
+
+expr_2 (Mon May 1 20:37:30 2000): 1
+expr_3 (Mon May 1 20:37:30 2000): 1.00
+
+expr_1 (Mon May 1 20:37:35 2000): 1
+
+expr_1 (Mon May 1 20:37:45 2000): 1
+
+expr_2 (Mon May 1 20:37:45 2000): 1
+expr_3 (Mon May 1 20:37:45 2000): 1.00
+
+----
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177405.109313 20:36:45.109 numpmid: 1
+ 29.0.2 (sample.seconds): No values returned!
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177405.109313 20:36:45.109 numpmid: 2
+ 29.0.2 (sample.seconds): No values returned!
+ 29.0.3 (sample.milliseconds): No values returned!
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177415.109313 20:36:55.109 numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380442
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177420.109313 20:37:00.109 numpmid: 2
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380447
+ 29.0.3 (sample.milliseconds): numval: 1 valfmt: 1 vlist[]:
+ value 380446679.4060927
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177425.109313 20:37:05.109 numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380452
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177435.109313 20:37:15.109 numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380462
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177435.109313 20:37:15.109 numpmid: 2
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380462
+ 29.0.3 (sample.milliseconds): numval: 1 valfmt: 1 vlist[]:
+ value 380461679.4133077
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177445.109313 20:37:25.109 numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380472
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177450.109313 20:37:30.109 numpmid: 2
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380477
+ 29.0.3 (sample.milliseconds): numval: 1 valfmt: 1 vlist[]:
+ value 380476679.4082579
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177455.109313 20:37:35.109 numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380482
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177465.109313 20:37:45.109 numpmid: 1
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380492
+pmFetch returns ...
+pmResult dump from ADDR timestamp: 957177465.109313 20:37:45.109 numpmid: 2
+ 29.0.2 (sample.seconds): numval: 1 valfmt: 0 vlist[]:
+ value 380492
+ 29.0.3 (sample.milliseconds): numval: 1 valfmt: 1 vlist[]:
+ value 380491679.4140744
+[DATE] pmie(PID) Info: evaluator exiting
diff --git a/qa/600 b/qa/600
new file mode 100755
index 0000000..549913c
--- /dev/null
+++ b/qa/600
@@ -0,0 +1,179 @@
+#! /bin/sh
+# PCP QA Test No. 600
+# Test __pmTimezone
+#
+# This test looks like its tripping genuine bugs in Linux:
+# 1. for glibc-2.2.4 or earlier, Linux seems to invert the sense of the
+# daylight savings ranges (- is valid output, + is broken linux version):
+#
+# diff -c 600.out 600.out.bad:
+# ...
+# ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+# -In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+# +In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+# In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+# ...
+#
+# 2. linux appears to ignore invalid olsen style timezones
+# ...
+# -:Someplace/Somewhere -> ABC-10
+# +ABC-10 -> ABC-10
+# In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+# In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+# +
+# +:Someplace/Somewhere -> Someplace/Somewhere
+# +In March daylight saving is off, and the time is 01 March 2000 12:00 Someplace/Somewhere
+# +In September daylight saving is off, and the time is 01 September 2000 12:00 Someplace/Somewhere
+# ...
+#
+# 3. glibc 2.2.93 and 2.3.x just gets it wrong
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+. ./localconfig
+if [ $PCP_EOE_VER -le 2100 \
+ -o \( $PCP_EOE_VER -ge 6500 -a $PCP_EOE_VER -le 6508 \) ]
+then
+ echo "needs libpcp.so with TZ changes" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+rm -f $seq.out
+if [ $PCP_PLATFORM = linux ]
+then
+ a=''
+ which rpm >/dev/null 2>&1
+ if [ $? -eq 0 -a ! -f /etc/debian_version ]
+ then
+ eval `rpm -q glibc | sed -e 's/glibc-/a=/' -e 's/\./ b=/' -e 's/\./ c=/' -e 's/-.*//'`
+ elif which dpkg >/dev/null 2>&1
+ then
+ lib=`find /lib -name libc.so.\* | sed -e 1q`
+ if [ -n "$lib" ]
+ then
+ pkg=`dpkg -S $lib | sed -e 's/: .*//' -e 1q`
+ if [ -n "$pkg" ]
+ then
+ eval `dpkg -l $pkg \
+ | $PCP_AWK_PROG '$2 == "'$pkg'" { print $3 }' \
+ | sed -e 's/^/a=/' -e 's/\./ b=/' -e 's/[-.].*//'`
+ fi
+ fi
+ fi
+ if [ -z "$a" ]
+ then
+ eval `echo /lib/libc-*.so | sed -e 's/\.so.*//' -e 's/.*-//' -e 's/^/a=/' -e 's/\./ b=/' -e 's/\./ c=/'`
+ fi
+
+ if [ -z "$a" -o "$a" = "*" ]
+ then
+ #[ ! -f /etc/debian_version ] && rpm -q glibc
+ #ls -l /lib/libc-*.so
+ _notrun "Cannot find major version for libc"
+ fi
+
+ # Use glibc version
+ if [ "$a" -lt 2 ]
+ then
+ # a.?.?, a < 2
+ ln $seq.out.linux.0 $seq.out
+ elif [ "$a" -eq 2 ]
+ then
+ if [ -z "$b" -o "$b" = "*" ]
+ then
+ echo "Arrggh ... cannot get minor version for libc"
+ [ ! -f /etc/debian_version ] && rpm -q glibc
+ ls -l /lib/libc-*.so
+ exit 1
+ fi
+ if [ "$b" -lt 2 ]
+ then
+ # 2.b.?, b < 2
+ ln $seq.out.linux.0 $seq.out
+ elif [ "$b" -eq 2 ]
+ then
+ if [ -z "$c" -o "$c" = "*" ]
+ then
+ echo "Arrggh ... cannot get really minor version for libc"
+ [ ! -f /etc/debian_version ] && rpm -q glibc
+ ls -l /lib/libc-*.so
+ exit 1
+ fi
+ if [ "$c" -lt 4 ]
+ then
+ # 2.2.c, c < 4
+ ln $seq.out.linux.0 $seq.out
+ elif [ "$c" -eq 93 ]
+ then
+ # 2.2.93
+ ln $seq.out.linux.2 $seq.out
+ else
+ # 2.2.c, c >= 4
+ # need this one for LBS 2.1
+ ln $seq.out.linux.1 $seq.out
+ fi
+ elif [ "$b" -eq 3 ]
+ then
+ if [ "$c" -lt 2 ]
+ then
+ # 2.3.c, c < 2
+ ln $seq.out.linux.2 $seq.out
+ else
+ # 2.3.c, c >= 3
+ # glibc-2.3.2-95.20 PP3 SP2
+ # glibc-2.3.3-98.3 SuSE SLES9 beta4
+ ln $seq.out.linux.1 $seq.out
+ fi
+ elif [ "$b" -lt 8 ]
+ then
+ # 2.b.?, b > 3 and b < 8
+ ln $seq.out.linux.1 $seq.out
+ elif [ "$b" -lt 10 ]
+ then
+ # 2.b.?, b == 8 or 9
+ ln $seq.out.linux.3 $seq.out
+ else
+ # 2.b.?, b >= 10
+ ln $seq.out.linux.4 $seq.out
+ fi
+ else
+ # a.?.?, a > 2
+ ln $seq.out.linux.1 $seq.out
+ fi
+ #DEBUG# echo "glibc version $a.$b.$c"
+ #DEBUG# ls -l $seq*
+elif [ $PCP_PLATFORM = darwin ]
+then
+ ln $seq.out.darwin $seq.out
+elif [ $PCP_PLATFORM = solaris ]
+then
+ ln $seq.out.solaris $seq.out
+else
+ ln $seq.out.irix $seq.out
+fi
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+TZ=XYZ-11; export TZ
+
+# I don't understand the sed replacement below - Ken, Jul 2003
+#
+src/tztest \
+| tee $seq.full \
+| sed \
+ -e's|XYZ-11:03:04ABC-10:01:02,M12.5.0/3:04:05,M7.1.0/2:06:07|ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07|' \
+ -e's|XYZ-11ABC-10,M12.5.0/3:01:02,M7.1.0/2:03:04|ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04|'
+status=0
+exit
diff --git a/qa/600.out.darwin b/qa/600.out.darwin
new file mode 100644
index 0000000..b026b44
--- /dev/null
+++ b/qa/600.out.darwin
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> XYZ-11:03
+In March daylight saving is off, and the time is 01 March 2000 23:03 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:03 XYZ
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> XYZ-11
+In March daylight saving is off, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:00 XYZ
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> UTC
+In March daylight saving is off, and the time is 01 March 2000 12:00 UTC
+In September daylight saving is off, and the time is 01 September 2000 12:00 UTC
+
diff --git a/qa/600.out.irix b/qa/600.out.irix
new file mode 100644
index 0000000..f9614e4
--- /dev/null
+++ b/qa/600.out.irix
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> XYZ-11:03
+In March daylight saving is off, and the time is 01 March 2000 23:03 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:03 XYZ
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> XYZ-11
+In March daylight saving is off, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:00 XYZ
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
diff --git a/qa/600.out.linux.0 b/qa/600.out.linux.0
new file mode 100644
index 0000000..9fb1179
--- /dev/null
+++ b/qa/600.out.linux.0
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> XYZ-11:03
+In March daylight saving is off, and the time is 01 March 2000 23:03 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:03 XYZ
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> XYZ-11
+In March daylight saving is off, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:00 XYZ
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> Someplace/Somewhere
+In March daylight saving is off, and the time is 01 March 2000 12:00 Someplace/Somewhere
+In September daylight saving is off, and the time is 01 September 2000 12:00 Someplace/Somewhere
+
diff --git a/qa/600.out.linux.1 b/qa/600.out.linux.1
new file mode 100644
index 0000000..2372094
--- /dev/null
+++ b/qa/600.out.linux.1
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> XYZ-11:03
+In March daylight saving is off, and the time is 01 March 2000 23:03 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:03 XYZ
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> XYZ-11
+In March daylight saving is off, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:00 XYZ
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> Someplace/Somewhere
+In March daylight saving is off, and the time is 01 March 2000 12:00 Someplace/Somewhere
+In September daylight saving is off, and the time is 01 September 2000 12:00 Someplace/Somewhere
+
diff --git a/qa/600.out.linux.2 b/qa/600.out.linux.2
new file mode 100644
index 0000000..ce8213f
--- /dev/null
+++ b/qa/600.out.linux.2
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> ABC-10:01
+In March daylight saving is off, and the time is 01 March 2000 22:01 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:01 ABC
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> Someplace/Somewhere
+In March daylight saving is off, and the time is 01 March 2000 12:00 Someplace/Somewhere
+In September daylight saving is off, and the time is 01 September 2000 12:00 Someplace/Somewhere
+
diff --git a/qa/600.out.linux.3 b/qa/600.out.linux.3
new file mode 100644
index 0000000..b026b44
--- /dev/null
+++ b/qa/600.out.linux.3
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> XYZ-11:03
+In March daylight saving is off, and the time is 01 March 2000 23:03 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:03 XYZ
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> XYZ-11
+In March daylight saving is off, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:00 XYZ
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> UTC
+In March daylight saving is off, and the time is 01 March 2000 12:00 UTC
+In September daylight saving is off, and the time is 01 September 2000 12:00 UTC
+
diff --git a/qa/600.out.linux.4 b/qa/600.out.linux.4
new file mode 100644
index 0000000..9a1bc8e
--- /dev/null
+++ b/qa/600.out.linux.4
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> XYZ-11:03
+In March daylight saving is off, and the time is 01 March 2000 23:03 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:03 XYZ
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> XYZ-11
+In March daylight saving is off, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:00 XYZ
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> Someplace
+In March daylight saving is off, and the time is 01 March 2000 12:00 Someplace
+In September daylight saving is off, and the time is 01 September 2000 12:00 Someplace
+
diff --git a/qa/600.out.solaris b/qa/600.out.solaris
new file mode 100644
index 0000000..dd12de6
--- /dev/null
+++ b/qa/600.out.solaris
@@ -0,0 +1,30 @@
+QA output created by 600
+XYZ-11 -> XYZ-11
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07 -> XYZ-11:03
+In March daylight saving is off, and the time is 01 March 2000 23:03 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:03 XYZ
+
+ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.5.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00 -> ABC-10XYZ-11,M12.5.0/3,M7.1.0/2
+In March daylight saving is on, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04 -> XYZ-11
+In March daylight saving is off, and the time is 01 March 2000 23:00 XYZ
+In September daylight saving is off, and the time is 01 September 2000 23:00 XYZ
+
+ABC-10 -> ABC-10
+In March daylight saving is off, and the time is 01 March 2000 22:00 ABC
+In September daylight saving is off, and the time is 01 September 2000 22:00 ABC
+
+:Someplace/Somewhere -> GMT
+In March daylight saving is off, and the time is 01 March 2000 12:00 GMT
+In September daylight saving is off, and the time is 01 September 2000 12:00 GMT
+
diff --git a/qa/601 b/qa/601
new file mode 100755
index 0000000..85597b0
--- /dev/null
+++ b/qa/601
@@ -0,0 +1,206 @@
+#! /bin/sh
+# PCP QA Test No. 601
+# PCP 2.2 duplicate of 273 (pmdatrace, pmtrace, and libpcp_trace tests)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ cd $here
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ if $_needclean
+ then
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo trace >/dev/null 2>&1 && install_on_cleanup=true
+
+status=1 # failure is the default!
+_needclean=true
+trap "_cleanup" 0 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+thishost=`hostname`
+
+_filter_trace_install()
+{
+ # some warnings are *expected* - no trace values yet
+ _filter_pmda_install | sed \
+ -e 's/ *[0-9]+ warnings,//g'
+}
+
+# real QA test starts here
+
+cd $PCP_PMDAS_DIR/trace
+$sudo ./Install -R / </dev/null 2>&1 | _filter_trace_install
+cd $here
+
+_wait_for_pmcd
+
+period=`pminfo -f trace.control.period | fgrep value | sed -e 's/.*value //g'`
+interval=`pminfo -f trace.control.interval | fgrep value | sed -e 's/.*value //g'`
+
+if [ -z "$interval" -o -z "$period" ]
+then
+ echo "Cannot retrieve interval or update period."
+ exit 1
+else
+ echo "Initial values: period=$period,interval=$interval"
+fi
+
+echo "=== TRANSACTIONS ==="
+pmtrace -q -h $thishost -e 'sleep 1' sleep1
+pmtrace -q -h $thishost -e 'sleep 3' sleep2
+pmtrace -q -h $thishost -e 'sleep 2' 'third sleep'
+echo "Waiting for buffers to rotate (1/3) ..."
+sleep $interval
+pmtrace -q -h $thishost -e 'sleep 2' 'third sleep'
+echo "Waiting for buffers to rotate (2/3) ..."
+sleep $interval
+pmtrace -q -h $thishost -e 'sleep 2' sleep1
+pmtrace -q -h $thishost -e 'sleep 1' sleep1
+echo "Waiting for buffers to rotate (3/3) ..."
+sleep $interval
+
+# These are deterministic:
+pminfo -f trace.transact.count
+pminfo -f trace.transact.min_time trace.transact.max_time \
+ | sed -e 's/\.[0-9][0-9]*//g'
+
+# These fluctuate slightly above theoretical result (system() & trace overhead):
+rate=`pminfo -f trace.transact.rate | fgrep sleep1 | sed -e 's/.*value //g'`
+ave_time=`pminfo -f trace.transact.ave_time | fgrep sleep1 | sed -e 's/.*value //g'`
+
+# Use bc to get these as integers, and then compare in the shell ...
+rate=`bc << EOF
+scale=5
+(3 / $period) * 100000
+$rate * 100000
+EOF` | $PCP_AWK_PROG '
+{
+ if ($2 < $1) {
+ printf("Out of range - trace.transact.rate[sleep1] (%s < %s)\n",$2,$1);
+ }
+}'
+echo "Finished checking trace.transact.rate"
+
+ave_time=`bc << EOF
+scale=5
+(4 / 3) * 100000
+$ave_time * 100000
+EOF` | $PCP_AWK_PROG '
+{
+ if ($2 < $1) {
+ printf("Out of range - trace.transact.ave_time[sleep1] (%s < %s)\n",$2,$1);
+ }
+}'
+echo "Finished checking trace.transact.ave_time"
+
+echo "=== OBSERVATIONS ==="
+pmtrace -h $thishost -q -v 200 obs1
+pmtrace -h $thishost -q -v 0.765 obs2
+echo "Waiting for buffers to rotate (1/3) ..."
+sleep $interval
+pmtrace -h $thishost -q -v 210 obs1
+pmtrace -h $thishost -q -v 220 obs1
+echo "Waiting for buffers to rotate (2/3) ..."
+sleep $interval
+pmtrace -h $thishost -q -v 230 obs1
+pmtrace -h $thishost -q -v 240 obs1
+echo "Waiting for buffers to rotate (3/3) ..."
+sleep $interval
+
+pminfo -f trace.observe.count trace.observe.value
+rate=`pminfo -f trace.observe.rate | fgrep obs1 | sed -e 's/.*value //g'`
+rate=`bc << EOF
+scale=5
+(5 / $period) * 100000
+$rate * 100000
+EOF` | $PCP_AWK_PROG '
+{
+ if ($2 != $1) {
+ printf("Result mismatch - trace.observe.rate[obs1] (%s != %s)\n",$1,$2);
+ }
+}'
+echo "Finished checking trace.observe.rate"
+
+echo "=== COUNTERS ==="
+pmtrace -h $thishost -q -c 200 cnt1
+pmtrace -h $thishost -q -c 0.765 cnt2
+echo "Waiting for buffers to rotate (1/3) ..."
+sleep $interval
+pmtrace -h $thishost -q -c 210 cnt1
+pmtrace -h $thishost -q -c 220 cnt1
+echo "Waiting for buffers to rotate (2/3) ..."
+sleep $interval
+pmtrace -h $thishost -q -c 230 cnt1
+pmtrace -h $thishost -q -c 240 cnt1
+echo "Waiting for buffers to rotate (3/3) ..."
+sleep $interval
+
+pminfo -f trace.counter.count trace.counter.value
+rate=`pminfo -f trace.counter.rate | fgrep cnt1 | sed -e 's/.*value //g'`
+rate=`bc << EOF
+scale=5
+(5 / $period) * 100000
+$rate * 100000
+EOF` | $PCP_AWK_PROG '
+{
+ if ($2 != $1) {
+ printf("Result mismatch - trace.counter.rate[obs1] (%s != %s)\n",$1,$2); }
+}'
+echo "Finished checking trace.counter.rate"
+
+echo "=== POINT ==="
+# Point & observe rates calculated the same, so check pmtrace point works.
+pmtrace -h $thishost -q 'good point'
+sleep $interval
+pminfo -f trace.point
+echo "Finished checking trace.point"
+
+$PCP_ECHO_PROG $PCP_ECHO_N "Checking sample programs build - ""$PCP_ECHO_C"
+cd $PCP_DEMOS_DIR/trace
+$sudo make clobber 2>&1 >/dev/null
+$sudo make app1 app2 app3 pmtrace >$tmp.make 2>&1
+if [ $? -ne 0 ]
+then
+ $PCP_ECHO_PROG "demo trace programs make failed. Here is the make output ..."
+ cat $tmp.make
+ exit 1
+else
+ $PCP_ECHO_PROG make succeeded.
+fi
+
+$PCP_DEMOS_DIR/trace/app1 >/dev/null 2>&1
+sleep $interval
+pminfo -f trace.transact.count
+
+# success, all done
+status=0
+exit
diff --git a/qa/601.out b/qa/601.out
new file mode 100644
index 0000000..b0849d5
--- /dev/null
+++ b/qa/601.out
@@ -0,0 +1,75 @@
+QA output created by 601
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+Initial values: period=60,interval=12
+=== TRANSACTIONS ===
+Waiting for buffers to rotate (1/3) ...
+Waiting for buffers to rotate (2/3) ...
+Waiting for buffers to rotate (3/3) ...
+
+trace.transact.count
+ inst [1 or "sleep1"] value 3
+ inst [2 or "sleep2"] value 1
+ inst [3 or "third sleep"] value 2
+
+trace.transact.min_time
+ inst [1 or "sleep1"] value 1
+ inst [2 or "sleep2"] value 3
+ inst [3 or "third sleep"] value 2
+
+trace.transact.max_time
+ inst [1 or "sleep1"] value 2
+ inst [2 or "sleep2"] value 3
+ inst [3 or "third sleep"] value 2
+Finished checking trace.transact.rate
+Finished checking trace.transact.ave_time
+=== OBSERVATIONS ===
+Waiting for buffers to rotate (1/3) ...
+Waiting for buffers to rotate (2/3) ...
+Waiting for buffers to rotate (3/3) ...
+
+trace.observe.count
+ inst [1 or "obs1"] value 5
+ inst [2 or "obs2"] value 1
+
+trace.observe.value
+ inst [1 or "obs1"] value 240
+ inst [2 or "obs2"] value 0.765
+Finished checking trace.observe.rate
+=== COUNTERS ===
+Waiting for buffers to rotate (1/3) ...
+Waiting for buffers to rotate (2/3) ...
+Waiting for buffers to rotate (3/3) ...
+
+trace.counter.count
+ inst [1 or "cnt1"] value 5
+ inst [2 or "cnt2"] value 1
+
+trace.counter.value
+ inst [1 or "cnt1"] value 240
+ inst [2 or "cnt2"] value 0.765
+Finished checking trace.counter.rate
+=== POINT ===
+
+trace.point.count
+ inst [1 or "good point"] value 1
+
+trace.point.rate
+ inst [1 or "good point"] value 0.016666668
+Finished checking trace.point
+Checking sample programs build - make succeeded.
+
+trace.transact.count
+ inst [1 or "sleep1"] value 3
+ inst [2 or "sleep2"] value 1
+ inst [3 or "third sleep"] value 2
+ inst [4 or "simple"] value 1
+ inst [5 or "ascanbe"] value 1
diff --git a/qa/602 b/qa/602
new file mode 100755
index 0000000..66cdd38
--- /dev/null
+++ b/qa/602
@@ -0,0 +1,131 @@
+#! /bin/sh
+# PCP QA Test No. 602
+# PCP 2.2 duplicate of 348 (exercise trace PMDA options)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+status=1 # failure is the default!
+trap "_cleanup" 0 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+pminfo trace >/dev/null 2>&1
+remove=$?
+
+cat <<EOF > $tmp.conf1
+n
+
+
+
+no
+1 -1 0
+-1
+7
+0
+34
+foo
+3
+
+EOF
+
+cat <<EOF > $tmp.conf2
+n
+
+
+
+yes
+no
+1 -2 1
+0
+0
+foo
+-4
+
+EOF
+
+cat <<EOF > $tmp.default
+n
+
+
+
+
+
+EOF
+
+# real QA test starts here
+
+cd $PCP_PMDAS_DIR/trace
+
+_filter_trace_usage()
+{
+ # drop the (new) -M option so we have consistent output
+ grep -v 'user account'
+}
+
+echo "--- Usage message ---"
+./pmdatrace -\? 2>&1 | _filter_trace_usage
+echo
+
+echo "--- Bad units specification #1 ---"
+./pmdatrace -U 1,1,1 2>&1 | _filter_trace_usage
+echo
+
+echo "--- Bad units specification #2 ---"
+./pmdatrace -U 1,,1,1,1,1 2>&1 | _filter_trace_usage
+echo
+
+echo "--- Bad units specification #3 ---"
+./pmdatrace -U 1,3,foo,3,4,1 2>&1 | _filter_trace_usage
+echo
+
+_filter_trace_install()
+{
+ # some warnings are *expected* - no trace values yet
+ _filter_pmda_install | sed \
+ -e 's/ *[0-9]+ warnings,//g'
+}
+
+# Check units changes #1 ...
+$sudo ./Install -R / <$tmp.conf1 2>&1 | _filter_trace_install
+_wait_for_pmcd
+pminfo -d trace.observe.value
+
+# Check units changes #1 ...
+$sudo ./Install -R / <$tmp.conf2 2>&1 | _filter_trace_install
+_wait_for_pmcd
+pminfo -d trace.counter.value
+
+# Check a default install ...
+$sudo ./Install -R / <$tmp.default 2>&1 | _filter_trace_install
+_wait_for_pmcd
+pminfo -d trace.observe.value trace.counter.value
+
+[ $remove -eq 1 ] && $sudo $PCP_PMDAS_DIR/trace/Remove >/dev/null 2>&1
+
+cd $here
+
+# success, all done
+status=0
+exit
diff --git a/qa/602.out b/qa/602.out
new file mode 100644
index 0000000..d74f811
--- /dev/null
+++ b/qa/602.out
@@ -0,0 +1,235 @@
+QA output created by 602
+--- Usage message ---
+Usage: pmdatrace [options]
+
+Options:
+ -d domain use domain (numeric) for metrics domain of PMDA
+ -l logfile write log into logfile rather than using default file
+ -A access host based access control
+ -I port expect programs to connect on given inet port (number/name)
+ -N buckets number of historical data buffers maintained
+ -T period time over which samples are considered (default 60 seconds)
+ -U units export observation values using the given units
+ -V units export counter values using the given units
+
+--- Bad units specification #1 ---
+pmdatrace: token parse error in string "1,1,1"
+Usage: pmdatrace [options]
+
+Options:
+ -d domain use domain (numeric) for metrics domain of PMDA
+ -l logfile write log into logfile rather than using default file
+ -A access host based access control
+ -I port expect programs to connect on given inet port (number/name)
+ -N buckets number of historical data buffers maintained
+ -T period time over which samples are considered (default 60 seconds)
+ -U units export observation values using the given units
+ -V units export counter values using the given units
+
+--- Bad units specification #2 ---
+pmdatrace: token parse error in string "1,,1,1,1,1"
+Usage: pmdatrace [options]
+
+Options:
+ -d domain use domain (numeric) for metrics domain of PMDA
+ -l logfile write log into logfile rather than using default file
+ -A access host based access control
+ -I port expect programs to connect on given inet port (number/name)
+ -N buckets number of historical data buffers maintained
+ -T period time over which samples are considered (default 60 seconds)
+ -U units export observation values using the given units
+ -V units export counter values using the given units
+
+--- Bad units specification #3 ---
+pmdatrace: integer parse error for substring "foo"
+Usage: pmdatrace [options]
+
+Options:
+ -d domain use domain (numeric) for metrics domain of PMDA
+ -l logfile write log into logfile rather than using default file
+ -A access host based access control
+ -I port expect programs to connect on given inet port (number/name)
+ -N buckets number of historical data buffers maintained
+ -T period time over which samples are considered (default 60 seconds)
+ -U units export observation values using the given units
+ -V units export counter values using the given units
+
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Trace period (in seconds) [60]?
+Number of buckets [5]?
+Port number for client connections [4323]?
+The dimension and scale for the trace.observe.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+The dimension is expressed in terms of powers of Space, Time and Count.
+For example, bytes per second would be 1 -1 0, and milliseconds per message
+would be 0 1 -1.
+Enter the dimension for Space, Time and Count [0 0 0]: Scale for the Space dimension is expressed as:
+ 0 (bytes)
+ 1 (kilobytes)
+ 2 (megabytes)
+ 3 (gigabytes)
+ 4 (terabytes)
+Enter the scale for the Space dimension [0]: -- Sorry, Space scale must be between 0 and 4 --
+Scale for the Space dimension is expressed as:
+ 0 (bytes)
+ 1 (kilobytes)
+ 2 (megabytes)
+ 3 (gigabytes)
+ 4 (terabytes)
+Enter the scale for the Space dimension [0]: -- Sorry, Space scale must be between 0 and 4 --
+Scale for the Space dimension is expressed as:
+ 0 (bytes)
+ 1 (kilobytes)
+ 2 (megabytes)
+ 3 (gigabytes)
+ 4 (terabytes)
+Enter the scale for the Space dimension [0]: Scale for the Time dimension is expressed as:
+ 0 (nanoseconds)
+ 1 (microseconds)
+ 2 (milliseconds)
+ 3 (seconds)
+ 4 (minutes)
+ 5 (hours)
+Enter the scale for the Time dimension: -- Sorry, Time scale must be between 0 and 5 --
+Scale for the Time dimension is expressed as:
+ 0 (nanoseconds)
+ 1 (microseconds)
+ 2 (milliseconds)
+ 3 (seconds)
+ 4 (minutes)
+ 5 (hours)
+Enter the scale for the Time dimension: -- Sorry, Time scale must be numeric (not foo) --
+Scale for the Time dimension is expressed as:
+ 0 (nanoseconds)
+ 1 (microseconds)
+ 2 (milliseconds)
+ 3 (seconds)
+ 4 (minutes)
+ 5 (hours)
+Enter the scale for the Time dimension:
+Using the following units for trace.observe.value:
+ Dimensions: space=1 time=-1 count=0
+ Scale: space=0 time=3 count=0
+
+
+The dimension and scale for the trace.counter.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.counter.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+trace.observe.value
+ Data Type: double InDom: 10.2 0x2800002
+ Semantics: instant Units: byte / sec
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Trace period (in seconds) [60]?
+Number of buckets [5]?
+Port number for client connections [4323]?
+The dimension and scale for the trace.observe.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.observe.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+The dimension and scale for the trace.counter.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+The dimension is expressed in terms of powers of Space, Time and Count.
+For example, bytes per second would be 1 -1 0, and milliseconds per message
+would be 0 1 -1.
+Enter the dimension for Space, Time and Count [0 0 0]: Scale for the Space dimension is expressed as:
+ 0 (bytes)
+ 1 (kilobytes)
+ 2 (megabytes)
+ 3 (gigabytes)
+ 4 (terabytes)
+Enter the scale for the Space dimension [0]: Scale for the Time dimension is expressed as:
+ 0 (nanoseconds)
+ 1 (microseconds)
+ 2 (milliseconds)
+ 3 (seconds)
+ 4 (minutes)
+ 5 (hours)
+Enter the scale for the Time dimension: Scale for the Count dimension is expressed:
+ as a power of 10 (e.g. 6 for 10^6, or -3 for 10^-3) [0]: -- Sorry, Count scale must be numeric (not foo) --
+Scale for the Count dimension is expressed:
+ as a power of 10 (e.g. 6 for 10^6, or -3 for 10^-3) [0]:
+Using the following units for trace.counter.value:
+ Dimensions: space=1 time=-2 count=1
+ Scale: space=0 time=0 count=-4
+
+
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+trace.counter.value
+ Data Type: double InDom: 10.3 0x2800003
+ Semantics: counter Units: byte count x 10^-4 / nanosec^2
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Trace period (in seconds) [60]?
+Number of buckets [5]?
+Port number for client connections [4323]?
+The dimension and scale for the trace.observe.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.observe.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+The dimension and scale for the trace.counter.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.counter.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+trace.observe.value
+ Data Type: double InDom: 10.2 0x2800002
+ Semantics: instant Units: none
+
+trace.counter.value
+ Data Type: double InDom: 10.3 0x2800003
+ Semantics: counter Units: none
diff --git a/qa/603 b/qa/603
new file mode 100755
index 0000000..cd68d3b
--- /dev/null
+++ b/qa/603
@@ -0,0 +1,206 @@
+#! /bin/sh
+# PCP QA Test No. 603
+# PCP 2.2 duplicate of 349 (pmdatrace, pmtrace, and libpcp_trace tests)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+
+_cleanup()
+{
+ cd $here
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ if $_needclean
+ then
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/trace; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ _needclean=false
+ fi
+ rm -f $tmp.*
+ exit $status
+}
+
+_filter_trace_install()
+{
+ # some warnings are *expected* - no trace values yet
+ tee -a $here/$seq.full | \
+ _filter_pmda_install | sed \
+ -e 's/ *[0-9]+ warnings,//g' \
+ -e "s/$qahost/HOSTNAME/g"
+}
+
+install_on_cleanup=false
+pminfo trace >/dev/null 2>&1 && install_on_cleanup=true
+
+_needclean=true
+trap "_cleanup" 0 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+qahost=`_get_fqdn`
+otherhost=`./getpmcdhosts -L -n 1 2>$tmp.out`
+[ -z "$otherhost" ] && _notrun `cat $tmp.out`
+qanet=`_host_to_ipaddr $otherhost | sed -e 's/[0-9][0-9]*$/*/'`
+
+rm -f $seq.full
+echo "qahost=$qahost" >$seq.full
+echo "qanet=$qanet" >>$seq.full
+echo "otherhost=$otherhost" >>$seq.full
+
+cat > $tmp.conf1 << EOF
+n
+60
+10
+4323
+y
+y
+D
+$qahost
+
+EOF
+
+cat > $tmp.conf2 << EOF
+n
+60
+10
+4323
+y
+y
+D
+$qanet
+A
+$qahost
+1
+
+EOF
+
+# real QA test starts here
+cd $PCP_PMDAS_DIR/trace
+
+echo >>$here/$seq.full
+echo "=== first local trace PMDA config ===" >>$here/$seq.full
+cat $tmp.conf1 >>$here/$seq.full
+echo "===" >>$here/$seq.full
+
+$sudo ./Install -R / < $tmp.conf1 2>&1 \
+| _filter_trace_install
+_wait_for_pmcd
+grep trace $PCP_PMCDCONF_PATH >>$here/$seq.full
+
+echo '=== Attempting bad local access ==='
+echo "=== Attempting bad local access ===" >>$here/$seq.full
+# Error message mapping is for Linux
+#
+pmtrace -h $qahost $qahost 2>&1 \
+| tee -a $here/$seq.full \
+| sed \
+ -e "s/Connection reset by peer/Cannot connect to PMDA - permission denied/" \
+ -e "s/Connection refused/Cannot connect to PMDA - permission denied/"
+if [ -f $PCP_LOG_DIR/pmcd/trace.log ]
+then
+ cat $PCP_LOG_DIR/pmcd/trace.log >>$here/$seq.full
+elif [ -f $PCP_LOG_DIR/trace.log ]
+then
+ cat $PCP_LOG_DIR/trace.log >>$here/$seq.full
+else
+ echo "Arrggh! Cannot find log for trace PMDA!" >>$here/$seq.full
+fi
+
+echo
+
+echo >>$here/$seq.full
+echo "=== second local trace PMDA config ===" >>$here/$seq.full
+cat $tmp.conf2 >>$here/$seq.full
+echo "===" >>$here/$seq.full
+
+$sudo ./Install -R / < $tmp.conf2 2>&1 \
+| _filter_trace_install
+_wait_for_pmcd
+grep trace $PCP_PMCDCONF_PATH >>$here/$seq.full
+
+echo '=== Building demo program (app2) ==='
+cd $PCP_DEMOS_DIR/trace
+$sudo make app2 >$tmp.make 2>&1
+if [ $? -ne 0 ]
+then
+ echo "trace app2 make failed. Here is the make output ..."
+ cat $tmp.make
+ exit 1
+fi
+
+export PCP_TRACE_HOST=$qahost
+
+echo '=== Running demo program (app2) ==='
+# use app2 process to bump the number of connections.
+( ( $PCP_DEMOS_DIR/trace/app2 2>&1 >$tmp.out & ) )
+sleep 3
+
+echo '=== Check access limits ==='
+echo "=== Check access limits ===" >>$here/$seq.full
+# Error message mapping is for Linux
+#
+pmtrace -h $qahost 'limit exceeded' 2>&1 \
+| tee -a $here/$seq.full \
+| sed \
+ -e "s/Connection reset by peer/Cannot connect to PMDA - connection limit reached/"
+
+$signal -a -s KILL app2
+wait
+echo "=== app2 ===" >>$here/$seq.full
+cat $tmp.out >>$here/$seq.full
+
+unset PCP_TRACE_HOST
+
+echo '=== Attempting bad remote access ==='
+echo "=== Attempting bad remote access ===" >>$here/$seq.full
+# Error message mapping is for Linux
+#
+ssh -q pcpqa@$otherhost "sh -c 'PCP_TRACE_HOST=$qahost pmtrace -v 1 eek'" 2>&1 \
+| tee -a $here/$seq.full \
+| sed \
+ -e "s/Interrupted function call/Cannot connect to PMDA - permission denied/" \
+ -e "s/Connection refused/Cannot connect to PMDA - permission denied/"
+if [ -f $PCP_LOG_DIR/pmcd/trace.log ]
+then
+ cat $PCP_LOG_DIR/pmcd/trace.log >>$here/$seq.full
+elif [ -f $PCP_LOG_DIR/trace.log ]
+then
+ cat $PCP_LOG_DIR/trace.log >>$here/$seq.full
+else
+ echo "Arrggh! Cannot find log for trace PMDA!" >>$here/$seq.full
+fi
+
+echo
+
+# Reinstall defaults
+echo >>$here/$seq.full
+echo "=== Reinstall default config ===" >>$here/$seq.full
+cd $PCP_PMDAS_DIR/trace
+$sudo ./Install -R / < /dev/null 2>&1 \
+| _filter_trace_install
+_wait_for_pmcd
+cd $here
+
+# success, all done
+status=0
+exit
diff --git a/qa/603.out b/qa/603.out
new file mode 100644
index 0000000..b6e3e46
--- /dev/null
+++ b/qa/603.out
@@ -0,0 +1,92 @@
+QA output created by 603
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Trace period (in seconds) [60]?
+Number of buckets [5]?
+Port number for client connections [4323]?
+The dimension and scale for the trace.observe.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.observe.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+The dimension and scale for the trace.counter.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.counter.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Host specification (IP mask/Enter to cancel):
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+=== Attempting bad local access ===
+pmtrace: point error: Cannot connect to PMDA - permission denied
+
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Trace period (in seconds) [60]?
+Number of buckets [5]?
+Port number for client connections [4323]?
+The dimension and scale for the trace.observe.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.observe.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+The dimension and scale for the trace.counter.value metrics may be expressed
+in terms of Space, Time and Count (i.e. events or messages). The default
+dimension and scale is "None". Do you wish to accept the default dimension
+and scale [y]?
+Using the following units for trace.counter.value:
+ Dimensions: space=0 time=0 count=0
+ Scale: space=0 time=0 count=0
+
+
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Host specification (IP mask/Enter to cancel):
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Host specification (IP mask/Enter to cancel):
+Maximum number of connections from HOSTNAME (Enter for no limit):
+Client host access - (A)llow/(D)isallow [Enter to complete install]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+=== Building demo program (app2) ===
+=== Running demo program (app2) ===
+=== Check access limits ===
+pmtrace: point error: Cannot connect to PMDA - connection limit reached
+=== Attempting bad remote access ===
+pmtrace: observation error: Cannot connect to PMDA - permission denied
+
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check trace metrics have appeared ... 20 metrics and 6 values
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
diff --git a/qa/605 b/qa/605
new file mode 100755
index 0000000..c4ea9e8
--- /dev/null
+++ b/qa/605
@@ -0,0 +1,79 @@
+#! /bin/sh
+# PCP QA Test No.
+# checking trace stub library
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+rm -f $seq.out
+if [ $PCP_VER -lt 2200 ]; then
+ cat $seq.in >>$seq.out
+else
+ # tweak output for PCP 2.2...
+ cat $seq.in | perl -e '
+ @in=<>;
+ $"="";
+ print "@in[0..$#in-1]";
+ print "pmtracecounter: counter '\'counter\'', value=101.100000\n";
+ print "$in[$#in]";' >>$seq.out
+fi
+
+_cleanup()
+{
+ cd $here
+ if [ -n "$savedtracehost" ]
+ then
+ PCP_TRACE_HOST=$savedtracehost; export PCP_TRACE_HOST
+ fi
+ exit $status
+}
+
+_filter()
+{
+ sed -e "s#$PCP_DEMOS_DIR/trace/app1#app1#"
+}
+
+status=1 # failure is the default!
+trap "_cleanup" 0 1 2 3 15
+
+if [ -n "$PCP_TRACE_HOST" ]
+then
+ savedtracehost=$PCP_TRACE_HOST; unset PCP_TRACE_HOST
+fi
+
+# real QA test starts here
+
+echo "Checking trace stub library builds ..."
+cd $PCP_DEMOS_DIR/trace
+$sudo make -f Makefile.stub clobber >/dev/null 2>&1
+if [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = solaris ]
+then
+ $sudo make -f Makefile.stub lib/libpcp_trace.so >/dev/null 2>&1
+ export LD_PRELOAD=$PCP_DEMOS_DIR/trace/lib/libpcp_trace.so.2
+elif [ $PCP_PLATFORM = darwin ]
+then
+ $sudo make -f Makefile.stub >/dev/null 2>&1
+ DYLD_INSERT_LIBRARIES=$PCP_DEMOS_DIR/trace/lib/libpcp_trace.dylib
+ DYLD_FORCE_FLAT_NAMESPACE=yes
+ export DYLD_INSERT_LIBRARIES DYLD_FORCE_FLAT_NAMESPACE
+else
+ _notrun "Unknown platform ($PCP_PLATFORM)"
+fi
+
+echo make succeeded.
+
+# this uses all of the externally visible libpcp_trace symbols
+$PCP_DEMOS_DIR/trace/app1 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/605.in b/qa/605.in
new file mode 100644
index 0000000..c1babd6
--- /dev/null
+++ b/qa/605.in
@@ -0,0 +1,10 @@
+QA output created by 605
+Checking trace stub library builds ...
+make succeeded.
+app1: start: No error (state=0x7)
+pmtracebegin: start of transaction 'simple'
+pmtraceend: end of transaction 'simple'
+pmtracebegin: start of transaction 'ascanbe'
+pmtraceend: end of transaction 'ascanbe'
+pmtraceobs: observation 'observe', value=101.000000
+pmtracepoint: trace point 'imouttahere' reached
diff --git a/qa/614 b/qa/614
new file mode 100755
index 0000000..2ea957a
--- /dev/null
+++ b/qa/614
@@ -0,0 +1,45 @@
+#! /bin/sh
+# PCP QA Test No. 614
+# pv#794379
+#
+# pmns processing accepts hyphens when it shouldn't
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_filter()
+{
+ sed -e "s#$tmp#TMP#g"
+}
+
+cat >$tmp.pmns_hyphen <<EOF
+root {
+ proc-nprocs 3:0:0
+}
+EOF
+
+cat >$tmp.pmns_underscore <<EOF
+root {
+ proc_nprocs 3:0:0
+}
+EOF
+
+pminfo -n $tmp.pmns_hyphen 2>&1 | _filter
+pminfo -n $tmp.pmns_underscore 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/614.out b/qa/614.out
new file mode 100644
index 0000000..285e671
--- /dev/null
+++ b/qa/614.out
@@ -0,0 +1,6 @@
+QA output created by 614
+[TMP.pmns_hyphen:2] Error Parsing ASCII PMNS: Expected NAME or }
+ proc-nprocs 3:0:0
+ ^
+pminfo: Cannot load namespace from "TMP.pmns_hyphen": Problems parsing PMNS definitions
+proc_nprocs
diff --git a/qa/617 b/qa/617
new file mode 100755
index 0000000..9a158b1
--- /dev/null
+++ b/qa/617
@@ -0,0 +1,170 @@
+#! /bin/sh
+# PCP QA Test No. 617
+# exercise PCP dbpmda interface
+#
+# Copyright (c) 2013 Red Hat.
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.filter
+. ./common.check
+. ./common.product
+. ./localconfig
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3801 ]
+then
+ ln $seq.out.3 $seq.out || exit 1
+elif [ $PCP_VER -ge 3800 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+elif [ $PCP_VER -gt 2200 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ _notrun "dbpmda interface test, requires more recent dbpmda"
+fi
+
+if [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = solaris ]
+then
+ PMDADSO=$PCP_PMDAS_DIR/sample/pmda_sample.so
+elif [ $PCP_PLATFORM = darwin ]
+then
+ PMDADSO=$PCP_PMDAS_DIR/sample/pmda_sample.dylib
+else
+ echo "Arrgh ... need customization for $PCP_PLATFORM"
+ exit 1
+fi
+export PMDADSO
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$PMDADSO;PMDADSO;" \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e 's;pcp/lib/mips_[^.]*\.;pcp/lib/ISA.;' \
+ -e 's/parse error/Syntax error/' \
+ -e 's/syntax error/Syntax error/' \
+ -e '/^dbpmda> $/d' \
+ -e '/pmResult/s/0x[^ ]*/ADDR/g' \
+ -e '/DSO Interface Version: /s/[5-9]/N/g' \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]/TIMEZONE/g' \
+ -e 's/Permission denied/No permission to perform requested operation/' \
+ -e '/Error PDU/s/One-line/Oneline/'
+
+# last sed substitution thanks to pv:937345 which changed the wording
+# ... preserving the old form so QA passes
+}
+
+# real QA test starts here
+
+$sudo dbpmda -ie 2>&1 <<End-of-File | _filter
+help
+status
+#a comment, this should be ignored
+#test the debug and status commands
+debug# a command with a trailing comment
+help debug
+debug all
+status
+debug appl0 timecontrol
+status
+debug none
+status
+debug blah
+debug 1 blah
+debug blah fetch
+open pipe /blah/this_file_should_not_exist
+status
+open dso /blah/this_file_should_not_exist blah_init 128
+status
+open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+status
+#test the desc command
+desc
+desc 29.0.6
+desc sample.bin
+#test the instance command
+instance
+instance 29.2
+instance 29.2 300
+instance 29.2 "bin-100"
+instance 29.2 "bin
+instance "bin
+instance 30.3
+instance 29
+instance -1
+#test the timer command
+timer
+timer on
+status
+timer off
+status
+#test the fetch command
+getdesc on
+fetch
+fetch 29.0.6
+fetch sample.bin 29.0.5
+fetch blah
+fetch 29
+fetch 0.29
+fetch 0.1.2
+#test the profile command
+profile
+profile 29.2 none
+status
+fetch 29.0.6
+profile 29.2 add 200
+status
+fetch 29.0.6
+profile 29.2 add 250
+status
+fetch 29.0.6
+profile 29.2 add 300
+status
+fetch 29.0.6
+profile 29.2 delete 200
+status
+fetch 29.0.6
+profile 29.2 all
+status
+fetch 29.0.6
+#test the text command
+text
+text 29.0.6
+text indom 29.2
+text indom 29.5
+text blah 29.2
+#test the store command
+store
+store 29.0.36 "42"
+fetch sample.write_me
+store 29.0.36
+store 29.0.36 "57.3"
+store 20.0.36 4
+store sample.write_me "Hello there"
+store 29.0.20 "3"
+store 0.0.0 "5"
+store sample.aggregate.write_me "foo bar"
+store sample.event.records "foo bar"
+#test the close and open commands
+close
+status
+open dso $PMDADSO sample_init 30
+status
+close
+status
+#other
+blah
+quit
+End-of-File
+
+status=0
+exit
diff --git a/qa/617.out.1 b/qa/617.out.1
new file mode 100644
index 0000000..58f775f
--- /dev/null
+++ b/qa/617.out.1
@@ -0,0 +1,538 @@
+QA output created by 617
+dbpmda> help
+help [ command ]
+
+children metric-name
+close
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+desc metric
+fetch metric [ metric ... ]
+getdesc on | off
+instance indom# [ number | name | "name" ]
+name pmid#
+namespace fname
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket sockname
+pmid metric-name
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+quit
+status
+store metric "value"
+text metric
+text indom indom#
+timer on | off
+traverse metric-name
+wait seconds
+watch logfilename
+
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #a comment, this should be ignored
+dbpmda> #test the debug and status commands
+dbpmda> debug# a command with a trailing comment
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+dbpmda> help debug
+
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+
+Specify which debugging flags should be active (see pmdbg(1)). Flags may
+be specified as integers or by name, with multiple flags separated by
+white space. All flags may be selected or deselected if 'all' or 'none' is
+specified. The current setting is displayed by the status command.
+
+
+dbpmda> debug all
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: -1 (all)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug appl0 timecontrol
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 67584 ( appl0 + timecontrol )
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug none
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug blah
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug 1 blah
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug blah fetch
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open pipe /blah/this_file_should_not_exist
+openpmda: /blah/this_file_should_not_exist: No such file or directory
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open dso /blah/this_file_should_not_exist blah_init 128
+opendso: /blah/this_file_should_not_exist: No such file or directory
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 29
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #test the desc command
+dbpmda> desc
+desc metric
+dbpmda> desc 29.0.6
+PMID: 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+dbpmda> desc sample.bin
+PMID: 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+dbpmda> #test the instance command
+dbpmda> instance
+instance indom# [ number | name | "name" ]
+dbpmda> instance 29.2
+pmInDom: 29.2
+[ 0] inst: 100 name: "bin-100"
+[ 1] inst: 200 name: "bin-200"
+[ 2] inst: 300 name: "bin-300"
+[ 3] inst: 400 name: "bin-400"
+[ 4] inst: 500 name: "bin-500"
+[ 5] inst: 600 name: "bin-600"
+[ 6] inst: 700 name: "bin-700"
+[ 7] inst: 800 name: "bin-800"
+[ 8] inst: 900 name: "bin-900"
+dbpmda> instance 29.2 300
+pmInDom: 29.2
+[ 0] name: "bin-300"
+dbpmda> instance 29.2 "bin-100"
+pmInDom: 29.2
+[ 0] inst: 100
+dbpmda> instance 29.2 "bin
+ ^ at or near here
+Error: Expected "
+Type 'help' for a list of commands.
+dbpmda> instance "bin
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> instance 30.3
+pmInDom: 30.3
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> instance 29
+pmInDom: 0.29
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> instance -1
+pmInDom: PM_INDOM_NULL
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> #test the timer command
+dbpmda> timer
+timer on | off
+dbpmda> timer on
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: on
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> timer off
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #test the fetch command
+dbpmda> getdesc on
+dbpmda> fetch
+fetch metric [ metric ... ]
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> fetch sample.bin 29.0.5
+PMID(s): 29.0.6 29.0.5
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 2
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 101
+ inst [1 or ???] value 202
+ inst [2 or ???] value 303
+dbpmda> fetch blah
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> fetch 29
+Warning: PMID (0.0.29) is not defined in the PMNS
+PMID(s): 0.0.29
+Error PDU: Unknown or illegal metric identifier
+dbpmda> fetch 0.29
+Warning: PMID (0.0.29) is not defined in the PMNS
+PMID(s): 0.0.29
+Error PDU: Unknown or illegal metric identifier
+dbpmda> fetch 0.1.2
+Warning: PMID (0.1.2) is not defined in the PMNS
+PMID(s): 0.1.2
+Error PDU: Unknown or illegal metric identifier
+dbpmda> #test the profile command
+dbpmda> profile
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+dbpmda> profile 29.2 none
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 0 instances
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): No values returned!
+dbpmda> profile 29.2 add 200
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 1 instances
+ Instances: [200]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> profile 29.2 add 250
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 2 instances
+ Instances: [200] [250]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> profile 29.2 add 300
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 3 instances
+ Instances: [200] [250] [300]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+dbpmda> profile 29.2 delete 200
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 2 instances
+ Instances: [250] [300]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [300 or ???] value 300
+dbpmda> profile 29.2 all
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=INCLUDE 0 instances
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> #test the text command
+dbpmda> text
+text metric
+text indom indom#
+dbpmda> text 29.0.6
+PMID: 29.0.6
+[Several constant instances]
+9 instances labelled "bin-100" thru "bin-900", each with a constant
+value of 100 thru 900.
+dbpmda> text indom 29.2
+pmInDom: 29.2
+[Instance domain "bin" for sample PMDA]
+Universally 9 instances numbered 100 .. 900 in steps of 100, and named
+"bin-100" .. "bin-900"
+dbpmda> text indom 29.5
+pmInDom: 29.5
+Error PDU: Oneline or help text is not available
+Error PDU: Oneline or help text is not available
+dbpmda> text blah 29.2
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> #test the store command
+dbpmda> store
+store metric "value"
+dbpmda> store 29.0.36 "42"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+29.0.36: 2 -> 42
+Sending Result...
+dbpmda> fetch sample.write_me
+PMID(s): 29.0.36
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.36 (sample.write_me): numval: 1 valfmt: 0 vlist[]:
+ value 42
+dbpmda> store 29.0.36
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> store 29.0.36 "57.3"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+Error: Value "57.3" is incompatible with metric type (PM_TYPE_32)
+dbpmda> store 20.0.36 Warning: PMID (20.0.36) is not defined in the PMNS
+4
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> store sample.write_me "Hello there"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+Error: Value "Hello there" is incompatible with metric type (PM_TYPE_32)
+dbpmda> store 29.0.20 "3"
+PMID: 29.0.20
+Getting description...
+Getting Result Structure...
+29.0.20: 1 -> 3
+Sending Result...
+Error PDU: No permission to perform requested operation
+dbpmda> store 0.0.0 Warning: PMID (0.0.0) is not defined in the PMNS
+"5"
+PMID: 0.0.0
+Getting description...
+Error PDU: Unknown or illegal metric identifier
+dbpmda> store sample.aggregate.write_me "foo bar"
+PMID: 29.0.35
+Getting description...
+Getting Result Structure...
+Error: dbpmda does not support storing into AGGREGATE metrics
+dbpmda> store sample.event.records "foo bar"
+PMID: 29.0.136
+Getting description...
+Getting Result Structure...
+Error: dbpmda does not support storing into EVENT metrics
+dbpmda> #test the close and open commands
+dbpmda> close
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=INCLUDE 0 instances
+
+dbpmda> open dso PMDADSO sample_init 30
+dbpmda> status
+
+Namespace: (default)
+PMDA: PMDADSO
+Connection: dso
+DSO Interface Version: N
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> close
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #other
+dbpmda> blah
+ ^ at or near here
+Error: Unrecognized command
+Type 'help' for a list of commands.
+dbpmda> quit
diff --git a/qa/617.out.2 b/qa/617.out.2
new file mode 100644
index 0000000..1719eed
--- /dev/null
+++ b/qa/617.out.2
@@ -0,0 +1,540 @@
+QA output created by 617
+dbpmda> help
+help [ command ]
+
+attr name [value]
+attr attr# [value]
+children metric-name
+close
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+desc metric
+fetch metric [ metric ... ]
+getdesc on | off
+instance indom# [ number | name | "name" ]
+name pmid#
+namespace fname
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket sockname
+pmid metric-name
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+quit
+status
+store metric "value"
+text metric
+text indom indom#
+timer on | off
+traverse metric-name
+wait seconds
+watch logfilename
+
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #a comment, this should be ignored
+dbpmda> #test the debug and status commands
+dbpmda> debug# a command with a trailing comment
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+dbpmda> help debug
+
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+
+Specify which debugging flags should be active (see pmdbg(1)). Flags may
+be specified as integers or by name, with multiple flags separated by
+white space. All flags may be selected or deselected if 'all' or 'none' is
+specified. The current setting is displayed by the status command.
+
+
+dbpmda> debug all
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: -1 (all)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug appl0 timecontrol
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 67584 ( appl0 + timecontrol )
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug none
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug blah
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug 1 blah
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug blah fetch
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open pipe /blah/this_file_should_not_exist
+openpmda: /blah/this_file_should_not_exist: No such file or directory
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open dso /blah/this_file_should_not_exist blah_init 128
+opendso: /blah/this_file_should_not_exist: No such file or directory
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 29
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #test the desc command
+dbpmda> desc
+desc metric
+dbpmda> desc 29.0.6
+PMID: 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+dbpmda> desc sample.bin
+PMID: 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+dbpmda> #test the instance command
+dbpmda> instance
+instance indom# [ number | name | "name" ]
+dbpmda> instance 29.2
+pmInDom: 29.2
+[ 0] inst: 100 name: "bin-100"
+[ 1] inst: 200 name: "bin-200"
+[ 2] inst: 300 name: "bin-300"
+[ 3] inst: 400 name: "bin-400"
+[ 4] inst: 500 name: "bin-500"
+[ 5] inst: 600 name: "bin-600"
+[ 6] inst: 700 name: "bin-700"
+[ 7] inst: 800 name: "bin-800"
+[ 8] inst: 900 name: "bin-900"
+dbpmda> instance 29.2 300
+pmInDom: 29.2
+[ 0] name: "bin-300"
+dbpmda> instance 29.2 "bin-100"
+pmInDom: 29.2
+[ 0] inst: 100
+dbpmda> instance 29.2 "bin
+ ^ at or near here
+Error: Expected "
+Type 'help' for a list of commands.
+dbpmda> instance "bin
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> instance 30.3
+pmInDom: 30.3
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> instance 29
+pmInDom: 0.29
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> instance -1
+pmInDom: PM_INDOM_NULL
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> #test the timer command
+dbpmda> timer
+timer on | off
+dbpmda> timer on
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: on
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> timer off
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #test the fetch command
+dbpmda> getdesc on
+dbpmda> fetch
+fetch metric [ metric ... ]
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> fetch sample.bin 29.0.5
+PMID(s): 29.0.6 29.0.5
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 2
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 101
+ inst [1 or ???] value 202
+ inst [2 or ???] value 303
+dbpmda> fetch blah
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> fetch 29
+Warning: PMID (0.0.29) is not defined in the PMNS
+PMID(s): 0.0.29
+Error PDU: Unknown or illegal metric identifier
+dbpmda> fetch 0.29
+Warning: PMID (0.0.29) is not defined in the PMNS
+PMID(s): 0.0.29
+Error PDU: Unknown or illegal metric identifier
+dbpmda> fetch 0.1.2
+Warning: PMID (0.1.2) is not defined in the PMNS
+PMID(s): 0.1.2
+Error PDU: Unknown or illegal metric identifier
+dbpmda> #test the profile command
+dbpmda> profile
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+dbpmda> profile 29.2 none
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 0 instances
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): No values returned!
+dbpmda> profile 29.2 add 200
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 1 instances
+ Instances: [200]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> profile 29.2 add 250
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 2 instances
+ Instances: [200] [250]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> profile 29.2 add 300
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 3 instances
+ Instances: [200] [250] [300]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+dbpmda> profile 29.2 delete 200
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 2 instances
+ Instances: [250] [300]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [300 or ???] value 300
+dbpmda> profile 29.2 all
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=INCLUDE 0 instances
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> #test the text command
+dbpmda> text
+text metric
+text indom indom#
+dbpmda> text 29.0.6
+PMID: 29.0.6
+[Several constant instances]
+9 instances labelled "bin-100" thru "bin-900", each with a constant
+value of 100 thru 900.
+dbpmda> text indom 29.2
+pmInDom: 29.2
+[Instance domain "bin" for sample PMDA]
+Universally 9 instances numbered 100 .. 900 in steps of 100, and named
+"bin-100" .. "bin-900"
+dbpmda> text indom 29.5
+pmInDom: 29.5
+Error PDU: Oneline or help text is not available
+Error PDU: Oneline or help text is not available
+dbpmda> text blah 29.2
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> #test the store command
+dbpmda> store
+store metric "value"
+dbpmda> store 29.0.36 "42"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+29.0.36: 2 -> 42
+Sending Result...
+dbpmda> fetch sample.write_me
+PMID(s): 29.0.36
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.36 (sample.write_me): numval: 1 valfmt: 0 vlist[]:
+ value 42
+dbpmda> store 29.0.36
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> store 29.0.36 "57.3"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+Error: Value "57.3" is incompatible with metric type (PM_TYPE_32)
+dbpmda> store 20.0.36 Warning: PMID (20.0.36) is not defined in the PMNS
+4
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> store sample.write_me "Hello there"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+Error: Value "Hello there" is incompatible with metric type (PM_TYPE_32)
+dbpmda> store 29.0.20 "3"
+PMID: 29.0.20
+Getting description...
+Getting Result Structure...
+29.0.20: 1 -> 3
+Sending Result...
+Error PDU: No permission to perform requested operation
+dbpmda> store 0.0.0 Warning: PMID (0.0.0) is not defined in the PMNS
+"5"
+PMID: 0.0.0
+Getting description...
+Error PDU: Unknown or illegal metric identifier
+dbpmda> store sample.aggregate.write_me "foo bar"
+PMID: 29.0.35
+Getting description...
+Getting Result Structure...
+Error: dbpmda does not support storing into AGGREGATE metrics
+dbpmda> store sample.event.records "foo bar"
+PMID: 29.0.136
+Getting description...
+Getting Result Structure...
+Error: dbpmda does not support storing into EVENT metrics
+dbpmda> #test the close and open commands
+dbpmda> close
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=INCLUDE 0 instances
+
+dbpmda> open dso PMDADSO sample_init 30
+dbpmda> status
+
+Namespace: (default)
+PMDA: PMDADSO
+Connection: dso
+DSO Interface Version: N
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> close
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #other
+dbpmda> blah
+ ^ at or near here
+Error: Unrecognized command
+Type 'help' for a list of commands.
+dbpmda> quit
diff --git a/qa/617.out.3 b/qa/617.out.3
new file mode 100644
index 0000000..0213c4f
--- /dev/null
+++ b/qa/617.out.3
@@ -0,0 +1,542 @@
+QA output created by 617
+dbpmda> help
+help [ command ]
+
+attr name [value]
+attr attr# [value]
+children metric-name
+close
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+desc metric
+fetch metric [ metric ... ]
+getdesc on | off
+instance indom# [ number | name | "name" ]
+name pmid#
+namespace fname
+open dso dsoname init_routine [ domain# ]
+open pipe execname [ arg ... ]
+open socket unix sockname
+open socket inet port#|service
+open socket ipv6 port#|service
+pmid metric-name
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+quit
+status
+store metric "value"
+text metric
+text indom indom#
+timer on | off
+traverse metric-name
+wait seconds
+watch logfilename
+
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #a comment, this should be ignored
+dbpmda> #test the debug and status commands
+dbpmda> debug# a command with a trailing comment
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+dbpmda> help debug
+
+debug all | none
+debug flag [ flag ... ] (flag is decimal or symbolic name)
+
+Specify which debugging flags should be active (see pmdbg(1)). Flags may
+be specified as integers or by name, with multiple flags separated by
+white space. All flags may be selected or deselected if 'all' or 'none' is
+specified. The current setting is displayed by the status command.
+
+
+dbpmda> debug all
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: -1 (all)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug appl0 timecontrol
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 67584 ( appl0 + timecontrol )
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug none
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug blah
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug 1 blah
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> debug blah fetch
+Warning: Bad debug flag (blah)
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open pipe /blah/this_file_should_not_exist
+openpmda: /blah/this_file_should_not_exist: No such file or directory
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open dso /blah/this_file_should_not_exist blah_init 128
+opendso: /blah/this_file_should_not_exist: No such file or directory
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> open pipe $PCP_PMDAS_DIR/sample/pmdasample -d 29
+Start pmdasample PMDA: $PCP_PMDAS_DIR/sample/pmdasample -d 29
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #test the desc command
+dbpmda> desc
+desc metric
+dbpmda> desc 29.0.6
+PMID: 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+dbpmda> desc sample.bin
+PMID: 29.0.6
+ Data Type: 32-bit int InDom: 29.2 0x7400002
+ Semantics: instant Units: none
+dbpmda> #test the instance command
+dbpmda> instance
+instance indom# [ number | name | "name" ]
+dbpmda> instance 29.2
+pmInDom: 29.2
+[ 0] inst: 100 name: "bin-100"
+[ 1] inst: 200 name: "bin-200"
+[ 2] inst: 300 name: "bin-300"
+[ 3] inst: 400 name: "bin-400"
+[ 4] inst: 500 name: "bin-500"
+[ 5] inst: 600 name: "bin-600"
+[ 6] inst: 700 name: "bin-700"
+[ 7] inst: 800 name: "bin-800"
+[ 8] inst: 900 name: "bin-900"
+dbpmda> instance 29.2 300
+pmInDom: 29.2
+[ 0] name: "bin-300"
+dbpmda> instance 29.2 "bin-100"
+pmInDom: 29.2
+[ 0] inst: 100
+dbpmda> instance 29.2 "bin
+ ^ at or near here
+Error: Expected "
+Type 'help' for a list of commands.
+dbpmda> instance "bin
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> instance 30.3
+pmInDom: 30.3
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> instance 29
+pmInDom: 0.29
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> instance -1
+pmInDom: PM_INDOM_NULL
+Error PDU: Unknown or illegal instance domain identifier
+dbpmda> #test the timer command
+dbpmda> timer
+timer on | off
+dbpmda> timer on
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: on
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> timer off
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: off
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #test the fetch command
+dbpmda> getdesc on
+dbpmda> fetch
+fetch metric [ metric ... ]
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> fetch sample.bin 29.0.5
+PMID(s): 29.0.6 29.0.5
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 2
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+ 29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value 101
+ inst [1 or ???] value 202
+ inst [2 or ???] value 303
+dbpmda> fetch blah
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> fetch 29
+Warning: PMID (0.0.29) is not defined in the PMNS
+PMID(s): 0.0.29
+Error PDU: Unknown or illegal metric identifier
+dbpmda> fetch 0.29
+Warning: PMID (0.0.29) is not defined in the PMNS
+PMID(s): 0.0.29
+Error PDU: Unknown or illegal metric identifier
+dbpmda> fetch 0.1.2
+Warning: PMID (0.1.2) is not defined in the PMNS
+PMID(s): 0.1.2
+Error PDU: Unknown or illegal metric identifier
+dbpmda> #test the profile command
+dbpmda> profile
+profile indom# [ all | none ]
+profile indom# [ add | delete ] number
+dbpmda> profile 29.2 none
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 0 instances
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): No values returned!
+dbpmda> profile 29.2 add 200
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 1 instances
+ Instances: [200]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> profile 29.2 add 250
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 2 instances
+ Instances: [200] [250]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+dbpmda> profile 29.2 add 300
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 3 instances
+ Instances: [200] [250] [300]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 2 valfmt: 0 vlist[]:
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+dbpmda> profile 29.2 delete 200
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=EXCLUDE 2 instances
+ Instances: [250] [300]
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 1 valfmt: 0 vlist[]:
+ inst [300 or ???] value 300
+dbpmda> profile 29.2 all
+dbpmda> status
+
+Namespace: (default)
+PMDA: $PCP_PMDAS_DIR/sample/pmdasample
+Connection: daemon
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=INCLUDE 0 instances
+
+dbpmda> fetch 29.0.6
+PMID(s): 29.0.6
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.6 (sample.bin): numval: 9 valfmt: 0 vlist[]:
+ inst [100 or ???] value 100
+ inst [200 or ???] value 200
+ inst [300 or ???] value 300
+ inst [400 or ???] value 400
+ inst [500 or ???] value 500
+ inst [600 or ???] value 600
+ inst [700 or ???] value 700
+ inst [800 or ???] value 800
+ inst [900 or ???] value 900
+dbpmda> #test the text command
+dbpmda> text
+text metric
+text indom indom#
+dbpmda> text 29.0.6
+PMID: 29.0.6
+[Several constant instances]
+9 instances labelled "bin-100" thru "bin-900", each with a constant
+value of 100 thru 900.
+dbpmda> text indom 29.2
+pmInDom: 29.2
+[Instance domain "bin" for sample PMDA]
+Universally 9 instances numbered 100 .. 900 in steps of 100, and named
+"bin-100" .. "bin-900"
+dbpmda> text indom 29.5
+pmInDom: 29.5
+Error PDU: Oneline or help text is not available
+Error PDU: Oneline or help text is not available
+dbpmda> text blah 29.2
+ ^ at or near here
+Error: Unknown metric name
+Type 'help' for a list of commands.
+dbpmda> #test the store command
+dbpmda> store
+store metric "value"
+dbpmda> store 29.0.36 "42"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+29.0.36: 2 -> 42
+Sending Result...
+dbpmda> fetch sample.write_me
+PMID(s): 29.0.36
+pmResult dump from ADDR timestamp: 0.000000 TIMEZONE numpmid: 1
+ 29.0.36 (sample.write_me): numval: 1 valfmt: 0 vlist[]:
+ value 42
+dbpmda> store 29.0.36
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> store 29.0.36 "57.3"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+Error: Value "57.3" is incompatible with metric type (PM_TYPE_32)
+dbpmda> store 20.0.36 Warning: PMID (20.0.36) is not defined in the PMNS
+4
+ ^ at or near here
+Error: Syntax error
+Type 'help' for a list of commands.
+dbpmda> store sample.write_me "Hello there"
+PMID: 29.0.36
+Getting description...
+Getting Result Structure...
+Error: Value "Hello there" is incompatible with metric type (PM_TYPE_32)
+dbpmda> store 29.0.20 "3"
+PMID: 29.0.20
+Getting description...
+Getting Result Structure...
+29.0.20: 1 -> 3
+Sending Result...
+Error PDU: No permission to perform requested operation
+dbpmda> store 0.0.0 Warning: PMID (0.0.0) is not defined in the PMNS
+"5"
+PMID: 0.0.0
+Getting description...
+Error PDU: Unknown or illegal metric identifier
+dbpmda> store sample.aggregate.write_me "foo bar"
+PMID: 29.0.35
+Getting description...
+Getting Result Structure...
+Error: dbpmda does not support storing into AGGREGATE metrics
+dbpmda> store sample.event.records "foo bar"
+PMID: 29.0.136
+Getting description...
+Getting Result Structure...
+Error: dbpmda does not support storing into EVENT metrics
+dbpmda> #test the close and open commands
+dbpmda> close
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 1 profiles
+ Profile [0] indom=121634818 [29.2] state=INCLUDE 0 instances
+
+dbpmda> open dso PMDADSO sample_init 30
+dbpmda> status
+
+Namespace: (default)
+PMDA: PMDADSO
+Connection: dso
+DSO Interface Version: N
+PMDA PMAPI Version: 2
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> close
+dbpmda> status
+
+Namespace: (default)
+PMDA: none
+pmDebug: 0 (none)
+Timer: off
+Getdesc: on
+
+Dump Instance Profile state=INCLUDE, 0 profiles
+
+dbpmda> #other
+dbpmda> blah
+ ^ at or near here
+Error: Unrecognized command
+Type 'help' for a list of commands.
+dbpmda> quit
diff --git a/qa/622 b/qa/622
new file mode 100755
index 0000000..b678aa4
--- /dev/null
+++ b/qa/622
@@ -0,0 +1,51 @@
+#! /bin/sh
+# PCP QA Test No. 622
+# Test for the ability for pmie(1) to accept hyphens in host names, but
+# not metric names.
+#
+# This is in response to test 503, which did not allow for the fact that
+# a hostname may have a hyphen in it! By the way, test 503 should be
+# fixed (by now) to allow for hosts with hyphens in their names... this
+# test shows how the config file ought to have been built.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.config
+
+[ -z "$PCPQA_HYPHEN_HOST" -o "$PCPQA_HYPHEN_HOST" = "some-host" ] && \
+ _notrun 'PCPQA_HYPHEN_HOST is not set in ./common.config'
+
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+
+# shell functs for QA test
+
+mkPMIEConfig() {
+ cat >$tmp.rule <<EOF
+delta = 1 sec;
+one = 'sample.long.no-hyphen' :'$PCPQA_HYPHEN_HOST';
+EOF
+}
+
+
+# real QA test starts here
+
+mkPMIEConfig
+pmie -D APPL0 -C -c $tmp.rule 2>&1 \
+| sed \
+ -e "s,/tmp/$seq-[0-9]*\.rule,TMPFILE," \
+ -e '/pmLookupName failed: /d' \
+ -e "s/$PCPQA_HYPHEN_HOST/PCPQA_HYPHEN_HOST/g"
+
+# success, all done
+status=0
+exit
diff --git a/qa/622.out b/qa/622.out
new file mode 100644
index 0000000..bcf00f9
--- /dev/null
+++ b/qa/622.out
@@ -0,0 +1,14 @@
+QA output created by 622
+load: using config file TMPFILE
+yylex() -> IDENT "delta"
+yylex() -> TOKEN '=' (0x3d)
+yylex() -> NUMBER 1
+yylex() -> UNITS "sec"
+yylex() -> END-OF-RULE
+yylex() -> IDENT "one"
+yylex() -> TOKEN '=' (0x3d)
+yylex() -> IDENT "sample.long.no-hyphen"
+yylex() -> TOKEN ':' (0x3a)
+yylex() -> IDENT "PCPQA_HYPHEN_HOST"
+yylex() -> END-OF-RULE
+pmie: metric sample.long.no-hyphen not in namespace for host PCPQA_HYPHEN_HOST
diff --git a/qa/628 b/qa/628
new file mode 100755
index 0000000..d3d6cd3
--- /dev/null
+++ b/qa/628
@@ -0,0 +1,127 @@
+#! /bin/sh
+# PCP QA Test No. 628
+# libpcp_pmda botch in pmdaFetch for multiple DSO PMDAs used in the
+# on pmFetch ... bug #809111
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./localconfig
+if [ $PCP_PLATFORM != irix -a $PCP_VER -ge 2200 ]
+then
+ : PCP 2.2 or later
+elif [ $PCP_PLATFORM = irix -a $PCP_EOE_VER -ge 6512 ]
+then
+ : IRIX 6.5.12 or later
+elif [ $PCP_PLATFORM = irix -a $PCP_EOE_VER -lt 6500 -a $PCP_EOE_VER -ge 2200 ]
+then
+ : IRIX 6.2 and PCP 2.2
+else
+ _notrun "need fix for pv #809111 and multiple DSO PMDAs"
+fi
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+
+_cleanup()
+{
+ cd $here
+
+ [ -f $tmp.root ] && $sudo cp $tmp.root $PCP_VAR_DIR/pmns/root
+ [ -f $tmp.root.bin ] && $sudo cp $tmp.root.bin $PCP_VAR_DIR/pmns/root.bin
+ [ -f $tmp.pmcd.conf ] && $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+ $sudo rm -rf $tmp.* $PCP_PMDAS_DIR/idiot
+ exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+home=$PCP_PMDAS_DIR
+cd $home/simple
+
+# restart pmcd and copy the pmcd config file and pmns to restore state later
+#
+$sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+cp $PCP_VAR_DIR/pmns/root $tmp.root
+[ -f $PCP_VAR_DIR/pmns/root.bin ] && cp $PCP_VAR_DIR/pmns/root.bin $tmp.root.bin
+
+if $sudo make clobber >$tmp.out 2>&1
+then
+ :
+else
+ cat $tmp.out
+ echo "Arrgh, make clobber failed"
+ exit
+fi
+
+$sudo rm -rf $PCP_PMDAS_DIR/idiot
+$sudo mkdir $PCP_PMDAS_DIR/idiot
+$sudo chmod 777 $PCP_PMDAS_DIR/idiot
+cp * $PCP_PMDAS_DIR/idiot
+
+$sudo ./Remove >/dev/null 2>&1
+cat <<End-of-File | $sudo ./Install >$tmp.out 2>&1
+both
+dso
+End-of-File
+
+if pminfo -v simple
+then
+ :
+else
+ echo "simple DSO install failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+cd $PCP_PMDAS_DIR/idiot
+mv simple.c idiot.c
+mv simple.conf idiot.conf
+for suffix in pl py perl python
+do
+ [ -f pmdasimple.$suffix ] && mv pmdasimple.$suffix pmdaidiot.$suffix
+done
+
+for file in *
+do
+ sed <$file >$tmp.tmp \
+ -e '/simple/s//idiot/g' \
+ -e '/SIMPLE/s//IDIOT/g' \
+ -e '/253/s//177/g'
+ chmod u+w $file
+ cp $tmp.tmp $file
+done
+
+$sudo ./Remove >/dev/null 2>&1
+cat <<End-of-File | $sudo ./Install >$tmp.out 2>&1
+both
+dso
+End-of-File
+
+if pminfo -v idiot
+then
+ :
+else
+ echo "idiot DSO install failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+
+# real QA test starts here
+pminfo -fm simple.numfetch
+pminfo -fm idiot.numfetch
+pminfo -fm idiot.numfetch
+pminfo -fm idiot.numfetch
+pminfo -fm simple.numfetch idiot.numfetch
+
+# success, all done
+status=0
+exit
diff --git a/qa/628.out b/qa/628.out
new file mode 100644
index 0000000..7c3c195
--- /dev/null
+++ b/qa/628.out
@@ -0,0 +1,19 @@
+QA output created by 628
+
+simple.numfetch PMID: 253.0.0
+ value 3
+
+idiot.numfetch PMID: 177.0.0
+ value 3
+
+idiot.numfetch PMID: 177.0.0
+ value 4
+
+idiot.numfetch PMID: 177.0.0
+ value 5
+
+simple.numfetch PMID: 253.0.0
+ value 4
+
+idiot.numfetch PMID: 177.0.0
+ value 6
diff --git a/qa/633 b/qa/633
new file mode 100755
index 0000000..5b29b66
--- /dev/null
+++ b/qa/633
@@ -0,0 +1,1058 @@
+#! /bin/sh
+# PCP QA Test No. 633
+# excessive round trips to pmcd from pmlogger
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -ge 3804 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+nsamples=2
+[ $PCP_VER -ge 3811 ] && nsamples=1 # improved pmlogger fetching
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -n \
+ -e '/PDU:/{
+s/ fd=.*//
+s/\[[0-9]*]//
+p
+}' \
+ | sed -e '/Piggy-back PDU:/d' \
+ | LC_COLLATE=POSIX sort \
+ | uniq -c \
+ | sed \
+ -e 's/^ *//' \
+ -e 's/ / /'
+}
+
+# real QA test starts here
+cat <<End-of-File | pmlogger -D pdu -s $nsamples -l $tmp.log $tmp
+log mandatory on once {
+ sample.hordes.one["0"]
+ sample.hordes.one["1"]
+ sample.hordes.one["2"]
+ sample.hordes.one["3"]
+ sample.hordes.one["4"]
+ sample.hordes.one["5"]
+ sample.hordes.one["6"]
+ sample.hordes.one["7"]
+ sample.hordes.one["8"]
+ sample.hordes.one["9"]
+ sample.hordes.one["10"]
+ sample.hordes.one["11"]
+ sample.hordes.one["12"]
+ sample.hordes.one["13"]
+ sample.hordes.one["14"]
+ sample.hordes.one["15"]
+ sample.hordes.one["16"]
+ sample.hordes.one["17"]
+ sample.hordes.one["18"]
+ sample.hordes.one["19"]
+ sample.hordes.one["20"]
+ sample.hordes.one["21"]
+ sample.hordes.one["22"]
+ sample.hordes.one["23"]
+ sample.hordes.one["24"]
+ sample.hordes.one["25"]
+ sample.hordes.one["26"]
+ sample.hordes.one["27"]
+ sample.hordes.one["28"]
+ sample.hordes.one["29"]
+ sample.hordes.one["30"]
+ sample.hordes.one["31"]
+ sample.hordes.one["32"]
+ sample.hordes.one["33"]
+ sample.hordes.one["34"]
+ sample.hordes.one["35"]
+ sample.hordes.one["36"]
+ sample.hordes.one["37"]
+ sample.hordes.one["38"]
+ sample.hordes.one["39"]
+ sample.hordes.one["40"]
+ sample.hordes.one["41"]
+ sample.hordes.one["42"]
+ sample.hordes.one["43"]
+ sample.hordes.one["44"]
+ sample.hordes.one["45"]
+ sample.hordes.one["46"]
+ sample.hordes.one["47"]
+ sample.hordes.one["48"]
+ sample.hordes.one["49"]
+ sample.hordes.one["50"]
+ sample.hordes.one["51"]
+ sample.hordes.one["52"]
+ sample.hordes.one["53"]
+ sample.hordes.one["54"]
+ sample.hordes.one["55"]
+ sample.hordes.one["56"]
+ sample.hordes.one["57"]
+ sample.hordes.one["58"]
+ sample.hordes.one["59"]
+ sample.hordes.one["60"]
+ sample.hordes.one["61"]
+ sample.hordes.one["62"]
+ sample.hordes.one["63"]
+ sample.hordes.one["64"]
+ sample.hordes.one["65"]
+ sample.hordes.one["66"]
+ sample.hordes.one["67"]
+ sample.hordes.one["68"]
+ sample.hordes.one["69"]
+ sample.hordes.one["70"]
+ sample.hordes.one["71"]
+ sample.hordes.one["72"]
+ sample.hordes.one["73"]
+ sample.hordes.one["74"]
+ sample.hordes.one["75"]
+ sample.hordes.one["76"]
+ sample.hordes.one["77"]
+ sample.hordes.one["78"]
+ sample.hordes.one["79"]
+ sample.hordes.one["80"]
+ sample.hordes.one["81"]
+ sample.hordes.one["82"]
+ sample.hordes.one["83"]
+ sample.hordes.one["84"]
+ sample.hordes.one["85"]
+ sample.hordes.one["86"]
+ sample.hordes.one["87"]
+ sample.hordes.one["88"]
+ sample.hordes.one["89"]
+ sample.hordes.one["90"]
+ sample.hordes.one["91"]
+ sample.hordes.one["92"]
+ sample.hordes.one["93"]
+ sample.hordes.one["94"]
+ sample.hordes.one["95"]
+ sample.hordes.one["96"]
+ sample.hordes.one["97"]
+ sample.hordes.one["98"]
+ sample.hordes.one["99"]
+ sample.hordes.one["100"]
+ sample.hordes.one["101"]
+ sample.hordes.one["102"]
+ sample.hordes.one["103"]
+ sample.hordes.one["104"]
+ sample.hordes.one["105"]
+ sample.hordes.one["106"]
+ sample.hordes.one["107"]
+ sample.hordes.one["108"]
+ sample.hordes.one["109"]
+ sample.hordes.one["110"]
+ sample.hordes.one["111"]
+ sample.hordes.one["112"]
+ sample.hordes.one["113"]
+ sample.hordes.one["114"]
+ sample.hordes.one["115"]
+ sample.hordes.one["116"]
+ sample.hordes.one["117"]
+ sample.hordes.one["118"]
+ sample.hordes.one["119"]
+ sample.hordes.one["120"]
+ sample.hordes.one["121"]
+ sample.hordes.one["122"]
+ sample.hordes.one["123"]
+ sample.hordes.one["124"]
+ sample.hordes.one["125"]
+ sample.hordes.one["126"]
+ sample.hordes.one["127"]
+ sample.hordes.one["128"]
+ sample.hordes.one["129"]
+ sample.hordes.one["130"]
+ sample.hordes.one["131"]
+ sample.hordes.one["132"]
+ sample.hordes.one["133"]
+ sample.hordes.one["134"]
+ sample.hordes.one["135"]
+ sample.hordes.one["136"]
+ sample.hordes.one["137"]
+ sample.hordes.one["138"]
+ sample.hordes.one["139"]
+ sample.hordes.one["140"]
+ sample.hordes.one["141"]
+ sample.hordes.one["142"]
+ sample.hordes.one["143"]
+ sample.hordes.one["144"]
+ sample.hordes.one["145"]
+ sample.hordes.one["146"]
+ sample.hordes.one["147"]
+ sample.hordes.one["148"]
+ sample.hordes.one["149"]
+ sample.hordes.one["150"]
+ sample.hordes.one["151"]
+ sample.hordes.one["152"]
+ sample.hordes.one["153"]
+ sample.hordes.one["154"]
+ sample.hordes.one["155"]
+ sample.hordes.one["156"]
+ sample.hordes.one["157"]
+ sample.hordes.one["158"]
+ sample.hordes.one["159"]
+ sample.hordes.one["160"]
+ sample.hordes.one["161"]
+ sample.hordes.one["162"]
+ sample.hordes.one["163"]
+ sample.hordes.one["164"]
+ sample.hordes.one["165"]
+ sample.hordes.one["166"]
+ sample.hordes.one["167"]
+ sample.hordes.one["168"]
+ sample.hordes.one["169"]
+ sample.hordes.one["170"]
+ sample.hordes.one["171"]
+ sample.hordes.one["172"]
+ sample.hordes.one["173"]
+ sample.hordes.one["174"]
+ sample.hordes.one["175"]
+ sample.hordes.one["176"]
+ sample.hordes.one["177"]
+ sample.hordes.one["178"]
+ sample.hordes.one["179"]
+ sample.hordes.one["180"]
+ sample.hordes.one["181"]
+ sample.hordes.one["182"]
+ sample.hordes.one["183"]
+ sample.hordes.one["184"]
+ sample.hordes.one["185"]
+ sample.hordes.one["186"]
+ sample.hordes.one["187"]
+ sample.hordes.one["188"]
+ sample.hordes.one["189"]
+ sample.hordes.one["190"]
+ sample.hordes.one["191"]
+ sample.hordes.one["192"]
+ sample.hordes.one["193"]
+ sample.hordes.one["194"]
+ sample.hordes.one["195"]
+ sample.hordes.one["196"]
+ sample.hordes.one["197"]
+ sample.hordes.one["198"]
+ sample.hordes.one["199"]
+ sample.hordes.one["200"]
+ sample.hordes.one["201"]
+ sample.hordes.one["202"]
+ sample.hordes.one["203"]
+ sample.hordes.one["204"]
+ sample.hordes.one["205"]
+ sample.hordes.one["206"]
+ sample.hordes.one["207"]
+ sample.hordes.one["208"]
+ sample.hordes.one["209"]
+ sample.hordes.one["210"]
+ sample.hordes.one["211"]
+ sample.hordes.one["212"]
+ sample.hordes.one["213"]
+ sample.hordes.one["214"]
+ sample.hordes.one["215"]
+ sample.hordes.one["216"]
+ sample.hordes.one["217"]
+ sample.hordes.one["218"]
+ sample.hordes.one["219"]
+ sample.hordes.one["220"]
+ sample.hordes.one["221"]
+ sample.hordes.one["222"]
+ sample.hordes.one["223"]
+ sample.hordes.one["224"]
+ sample.hordes.one["225"]
+ sample.hordes.one["226"]
+ sample.hordes.one["227"]
+ sample.hordes.one["228"]
+ sample.hordes.one["229"]
+ sample.hordes.one["230"]
+ sample.hordes.one["231"]
+ sample.hordes.one["232"]
+ sample.hordes.one["233"]
+ sample.hordes.one["234"]
+ sample.hordes.one["235"]
+ sample.hordes.one["236"]
+ sample.hordes.one["237"]
+ sample.hordes.one["238"]
+ sample.hordes.one["239"]
+ sample.hordes.one["240"]
+ sample.hordes.one["241"]
+ sample.hordes.one["242"]
+ sample.hordes.one["243"]
+ sample.hordes.one["244"]
+ sample.hordes.one["245"]
+ sample.hordes.one["246"]
+ sample.hordes.one["247"]
+ sample.hordes.one["248"]
+ sample.hordes.one["249"]
+ sample.hordes.one["250"]
+ sample.hordes.one["251"]
+ sample.hordes.one["252"]
+ sample.hordes.one["253"]
+ sample.hordes.one["254"]
+ sample.hordes.one["255"]
+ sample.hordes.one["256"]
+ sample.hordes.one["257"]
+ sample.hordes.one["258"]
+ sample.hordes.one["259"]
+ sample.hordes.one["260"]
+ sample.hordes.one["261"]
+ sample.hordes.one["262"]
+ sample.hordes.one["263"]
+ sample.hordes.one["264"]
+ sample.hordes.one["265"]
+ sample.hordes.one["266"]
+ sample.hordes.one["267"]
+ sample.hordes.one["268"]
+ sample.hordes.one["269"]
+ sample.hordes.one["270"]
+ sample.hordes.one["271"]
+ sample.hordes.one["272"]
+ sample.hordes.one["273"]
+ sample.hordes.one["274"]
+ sample.hordes.one["275"]
+ sample.hordes.one["276"]
+ sample.hordes.one["277"]
+ sample.hordes.one["278"]
+ sample.hordes.one["279"]
+ sample.hordes.one["280"]
+ sample.hordes.one["281"]
+ sample.hordes.one["282"]
+ sample.hordes.one["283"]
+ sample.hordes.one["284"]
+ sample.hordes.one["285"]
+ sample.hordes.one["286"]
+ sample.hordes.one["287"]
+ sample.hordes.one["288"]
+ sample.hordes.one["289"]
+ sample.hordes.one["290"]
+ sample.hordes.one["291"]
+ sample.hordes.one["292"]
+ sample.hordes.one["293"]
+ sample.hordes.one["294"]
+ sample.hordes.one["295"]
+ sample.hordes.one["296"]
+ sample.hordes.one["297"]
+ sample.hordes.one["298"]
+ sample.hordes.one["299"]
+ sample.hordes.one["300"]
+ sample.hordes.one["301"]
+ sample.hordes.one["302"]
+ sample.hordes.one["303"]
+ sample.hordes.one["304"]
+ sample.hordes.one["305"]
+ sample.hordes.one["306"]
+ sample.hordes.one["307"]
+ sample.hordes.one["308"]
+ sample.hordes.one["309"]
+ sample.hordes.one["310"]
+ sample.hordes.one["311"]
+ sample.hordes.one["312"]
+ sample.hordes.one["313"]
+ sample.hordes.one["314"]
+ sample.hordes.one["315"]
+ sample.hordes.one["316"]
+ sample.hordes.one["317"]
+ sample.hordes.one["318"]
+ sample.hordes.one["319"]
+ sample.hordes.one["320"]
+ sample.hordes.one["321"]
+ sample.hordes.one["322"]
+ sample.hordes.one["323"]
+ sample.hordes.one["324"]
+ sample.hordes.one["325"]
+ sample.hordes.one["326"]
+ sample.hordes.one["327"]
+ sample.hordes.one["328"]
+ sample.hordes.one["329"]
+ sample.hordes.one["330"]
+ sample.hordes.one["331"]
+ sample.hordes.one["332"]
+ sample.hordes.one["333"]
+ sample.hordes.one["334"]
+ sample.hordes.one["335"]
+ sample.hordes.one["336"]
+ sample.hordes.one["337"]
+ sample.hordes.one["338"]
+ sample.hordes.one["339"]
+ sample.hordes.one["340"]
+ sample.hordes.one["341"]
+ sample.hordes.one["342"]
+ sample.hordes.one["343"]
+ sample.hordes.one["344"]
+ sample.hordes.one["345"]
+ sample.hordes.one["346"]
+ sample.hordes.one["347"]
+ sample.hordes.one["348"]
+ sample.hordes.one["349"]
+ sample.hordes.one["350"]
+ sample.hordes.one["351"]
+ sample.hordes.one["352"]
+ sample.hordes.one["353"]
+ sample.hordes.one["354"]
+ sample.hordes.one["355"]
+ sample.hordes.one["356"]
+ sample.hordes.one["357"]
+ sample.hordes.one["358"]
+ sample.hordes.one["359"]
+ sample.hordes.one["360"]
+ sample.hordes.one["361"]
+ sample.hordes.one["362"]
+ sample.hordes.one["363"]
+ sample.hordes.one["364"]
+ sample.hordes.one["365"]
+ sample.hordes.one["366"]
+ sample.hordes.one["367"]
+ sample.hordes.one["368"]
+ sample.hordes.one["369"]
+ sample.hordes.one["370"]
+ sample.hordes.one["371"]
+ sample.hordes.one["372"]
+ sample.hordes.one["373"]
+ sample.hordes.one["374"]
+ sample.hordes.one["375"]
+ sample.hordes.one["376"]
+ sample.hordes.one["377"]
+ sample.hordes.one["378"]
+ sample.hordes.one["379"]
+ sample.hordes.one["380"]
+ sample.hordes.one["381"]
+ sample.hordes.one["382"]
+ sample.hordes.one["383"]
+ sample.hordes.one["384"]
+ sample.hordes.one["385"]
+ sample.hordes.one["386"]
+ sample.hordes.one["387"]
+ sample.hordes.one["388"]
+ sample.hordes.one["389"]
+ sample.hordes.one["390"]
+ sample.hordes.one["391"]
+ sample.hordes.one["392"]
+ sample.hordes.one["393"]
+ sample.hordes.one["394"]
+ sample.hordes.one["395"]
+ sample.hordes.one["396"]
+ sample.hordes.one["397"]
+ sample.hordes.one["398"]
+ sample.hordes.one["399"]
+ sample.hordes.one["400"]
+ sample.hordes.one["401"]
+ sample.hordes.one["402"]
+ sample.hordes.one["403"]
+ sample.hordes.one["404"]
+ sample.hordes.one["405"]
+ sample.hordes.one["406"]
+ sample.hordes.one["407"]
+ sample.hordes.one["408"]
+ sample.hordes.one["409"]
+ sample.hordes.one["410"]
+ sample.hordes.one["411"]
+ sample.hordes.one["412"]
+ sample.hordes.one["413"]
+ sample.hordes.one["414"]
+ sample.hordes.one["415"]
+ sample.hordes.one["416"]
+ sample.hordes.one["417"]
+ sample.hordes.one["418"]
+ sample.hordes.one["419"]
+ sample.hordes.one["420"]
+ sample.hordes.one["421"]
+ sample.hordes.one["422"]
+ sample.hordes.one["423"]
+ sample.hordes.one["424"]
+ sample.hordes.one["425"]
+ sample.hordes.one["426"]
+ sample.hordes.one["427"]
+ sample.hordes.one["428"]
+ sample.hordes.one["429"]
+ sample.hordes.one["430"]
+ sample.hordes.one["431"]
+ sample.hordes.one["432"]
+ sample.hordes.one["433"]
+ sample.hordes.one["434"]
+ sample.hordes.one["435"]
+ sample.hordes.one["436"]
+ sample.hordes.one["437"]
+ sample.hordes.one["438"]
+ sample.hordes.one["439"]
+ sample.hordes.one["440"]
+ sample.hordes.one["441"]
+ sample.hordes.one["442"]
+ sample.hordes.one["443"]
+ sample.hordes.one["444"]
+ sample.hordes.one["445"]
+ sample.hordes.one["446"]
+ sample.hordes.one["447"]
+ sample.hordes.one["448"]
+ sample.hordes.one["449"]
+ sample.hordes.one["450"]
+ sample.hordes.one["451"]
+ sample.hordes.one["452"]
+ sample.hordes.one["453"]
+ sample.hordes.one["454"]
+ sample.hordes.one["455"]
+ sample.hordes.one["456"]
+ sample.hordes.one["457"]
+ sample.hordes.one["458"]
+ sample.hordes.one["459"]
+ sample.hordes.one["460"]
+ sample.hordes.one["461"]
+ sample.hordes.one["462"]
+ sample.hordes.one["463"]
+ sample.hordes.one["464"]
+ sample.hordes.one["465"]
+ sample.hordes.one["466"]
+ sample.hordes.one["467"]
+ sample.hordes.one["468"]
+ sample.hordes.one["469"]
+ sample.hordes.one["470"]
+ sample.hordes.one["471"]
+ sample.hordes.one["472"]
+ sample.hordes.one["473"]
+ sample.hordes.one["474"]
+ sample.hordes.one["475"]
+ sample.hordes.one["476"]
+ sample.hordes.one["477"]
+ sample.hordes.one["478"]
+ sample.hordes.one["479"]
+ sample.hordes.one["480"]
+ sample.hordes.one["481"]
+ sample.hordes.one["482"]
+ sample.hordes.one["483"]
+ sample.hordes.one["484"]
+ sample.hordes.one["485"]
+ sample.hordes.one["486"]
+ sample.hordes.one["487"]
+ sample.hordes.one["488"]
+ sample.hordes.one["489"]
+ sample.hordes.one["490"]
+ sample.hordes.one["491"]
+ sample.hordes.one["492"]
+ sample.hordes.one["493"]
+ sample.hordes.one["494"]
+ sample.hordes.one["495"]
+ sample.hordes.one["496"]
+ sample.hordes.one["497"]
+ sample.hordes.one["498"]
+ sample.hordes.one["499"]
+}
+
+log mandatory on once {
+ sample.hordes.two["0"]
+ sample.hordes.two["1"]
+ sample.hordes.two["2"]
+ sample.hordes.two["3"]
+ sample.hordes.two["4"]
+ sample.hordes.two["5"]
+ sample.hordes.two["6"]
+ sample.hordes.two["7"]
+ sample.hordes.two["8"]
+ sample.hordes.two["9"]
+ sample.hordes.two["10"]
+ sample.hordes.two["11"]
+ sample.hordes.two["12"]
+ sample.hordes.two["13"]
+ sample.hordes.two["14"]
+ sample.hordes.two["15"]
+ sample.hordes.two["16"]
+ sample.hordes.two["17"]
+ sample.hordes.two["18"]
+ sample.hordes.two["19"]
+ sample.hordes.two["20"]
+ sample.hordes.two["21"]
+ sample.hordes.two["22"]
+ sample.hordes.two["23"]
+ sample.hordes.two["24"]
+ sample.hordes.two["25"]
+ sample.hordes.two["26"]
+ sample.hordes.two["27"]
+ sample.hordes.two["28"]
+ sample.hordes.two["29"]
+ sample.hordes.two["30"]
+ sample.hordes.two["31"]
+ sample.hordes.two["32"]
+ sample.hordes.two["33"]
+ sample.hordes.two["34"]
+ sample.hordes.two["35"]
+ sample.hordes.two["36"]
+ sample.hordes.two["37"]
+ sample.hordes.two["38"]
+ sample.hordes.two["39"]
+ sample.hordes.two["40"]
+ sample.hordes.two["41"]
+ sample.hordes.two["42"]
+ sample.hordes.two["43"]
+ sample.hordes.two["44"]
+ sample.hordes.two["45"]
+ sample.hordes.two["46"]
+ sample.hordes.two["47"]
+ sample.hordes.two["48"]
+ sample.hordes.two["49"]
+ sample.hordes.two["50"]
+ sample.hordes.two["51"]
+ sample.hordes.two["52"]
+ sample.hordes.two["53"]
+ sample.hordes.two["54"]
+ sample.hordes.two["55"]
+ sample.hordes.two["56"]
+ sample.hordes.two["57"]
+ sample.hordes.two["58"]
+ sample.hordes.two["59"]
+ sample.hordes.two["60"]
+ sample.hordes.two["61"]
+ sample.hordes.two["62"]
+ sample.hordes.two["63"]
+ sample.hordes.two["64"]
+ sample.hordes.two["65"]
+ sample.hordes.two["66"]
+ sample.hordes.two["67"]
+ sample.hordes.two["68"]
+ sample.hordes.two["69"]
+ sample.hordes.two["70"]
+ sample.hordes.two["71"]
+ sample.hordes.two["72"]
+ sample.hordes.two["73"]
+ sample.hordes.two["74"]
+ sample.hordes.two["75"]
+ sample.hordes.two["76"]
+ sample.hordes.two["77"]
+ sample.hordes.two["78"]
+ sample.hordes.two["79"]
+ sample.hordes.two["80"]
+ sample.hordes.two["81"]
+ sample.hordes.two["82"]
+ sample.hordes.two["83"]
+ sample.hordes.two["84"]
+ sample.hordes.two["85"]
+ sample.hordes.two["86"]
+ sample.hordes.two["87"]
+ sample.hordes.two["88"]
+ sample.hordes.two["89"]
+ sample.hordes.two["90"]
+ sample.hordes.two["91"]
+ sample.hordes.two["92"]
+ sample.hordes.two["93"]
+ sample.hordes.two["94"]
+ sample.hordes.two["95"]
+ sample.hordes.two["96"]
+ sample.hordes.two["97"]
+ sample.hordes.two["98"]
+ sample.hordes.two["99"]
+ sample.hordes.two["100"]
+ sample.hordes.two["101"]
+ sample.hordes.two["102"]
+ sample.hordes.two["103"]
+ sample.hordes.two["104"]
+ sample.hordes.two["105"]
+ sample.hordes.two["106"]
+ sample.hordes.two["107"]
+ sample.hordes.two["108"]
+ sample.hordes.two["109"]
+ sample.hordes.two["110"]
+ sample.hordes.two["111"]
+ sample.hordes.two["112"]
+ sample.hordes.two["113"]
+ sample.hordes.two["114"]
+ sample.hordes.two["115"]
+ sample.hordes.two["116"]
+ sample.hordes.two["117"]
+ sample.hordes.two["118"]
+ sample.hordes.two["119"]
+ sample.hordes.two["120"]
+ sample.hordes.two["121"]
+ sample.hordes.two["122"]
+ sample.hordes.two["123"]
+ sample.hordes.two["124"]
+ sample.hordes.two["125"]
+ sample.hordes.two["126"]
+ sample.hordes.two["127"]
+ sample.hordes.two["128"]
+ sample.hordes.two["129"]
+ sample.hordes.two["130"]
+ sample.hordes.two["131"]
+ sample.hordes.two["132"]
+ sample.hordes.two["133"]
+ sample.hordes.two["134"]
+ sample.hordes.two["135"]
+ sample.hordes.two["136"]
+ sample.hordes.two["137"]
+ sample.hordes.two["138"]
+ sample.hordes.two["139"]
+ sample.hordes.two["140"]
+ sample.hordes.two["141"]
+ sample.hordes.two["142"]
+ sample.hordes.two["143"]
+ sample.hordes.two["144"]
+ sample.hordes.two["145"]
+ sample.hordes.two["146"]
+ sample.hordes.two["147"]
+ sample.hordes.two["148"]
+ sample.hordes.two["149"]
+ sample.hordes.two["150"]
+ sample.hordes.two["151"]
+ sample.hordes.two["152"]
+ sample.hordes.two["153"]
+ sample.hordes.two["154"]
+ sample.hordes.two["155"]
+ sample.hordes.two["156"]
+ sample.hordes.two["157"]
+ sample.hordes.two["158"]
+ sample.hordes.two["159"]
+ sample.hordes.two["160"]
+ sample.hordes.two["161"]
+ sample.hordes.two["162"]
+ sample.hordes.two["163"]
+ sample.hordes.two["164"]
+ sample.hordes.two["165"]
+ sample.hordes.two["166"]
+ sample.hordes.two["167"]
+ sample.hordes.two["168"]
+ sample.hordes.two["169"]
+ sample.hordes.two["170"]
+ sample.hordes.two["171"]
+ sample.hordes.two["172"]
+ sample.hordes.two["173"]
+ sample.hordes.two["174"]
+ sample.hordes.two["175"]
+ sample.hordes.two["176"]
+ sample.hordes.two["177"]
+ sample.hordes.two["178"]
+ sample.hordes.two["179"]
+ sample.hordes.two["180"]
+ sample.hordes.two["181"]
+ sample.hordes.two["182"]
+ sample.hordes.two["183"]
+ sample.hordes.two["184"]
+ sample.hordes.two["185"]
+ sample.hordes.two["186"]
+ sample.hordes.two["187"]
+ sample.hordes.two["188"]
+ sample.hordes.two["189"]
+ sample.hordes.two["190"]
+ sample.hordes.two["191"]
+ sample.hordes.two["192"]
+ sample.hordes.two["193"]
+ sample.hordes.two["194"]
+ sample.hordes.two["195"]
+ sample.hordes.two["196"]
+ sample.hordes.two["197"]
+ sample.hordes.two["198"]
+ sample.hordes.two["199"]
+ sample.hordes.two["200"]
+ sample.hordes.two["201"]
+ sample.hordes.two["202"]
+ sample.hordes.two["203"]
+ sample.hordes.two["204"]
+ sample.hordes.two["205"]
+ sample.hordes.two["206"]
+ sample.hordes.two["207"]
+ sample.hordes.two["208"]
+ sample.hordes.two["209"]
+ sample.hordes.two["210"]
+ sample.hordes.two["211"]
+ sample.hordes.two["212"]
+ sample.hordes.two["213"]
+ sample.hordes.two["214"]
+ sample.hordes.two["215"]
+ sample.hordes.two["216"]
+ sample.hordes.two["217"]
+ sample.hordes.two["218"]
+ sample.hordes.two["219"]
+ sample.hordes.two["220"]
+ sample.hordes.two["221"]
+ sample.hordes.two["222"]
+ sample.hordes.two["223"]
+ sample.hordes.two["224"]
+ sample.hordes.two["225"]
+ sample.hordes.two["226"]
+ sample.hordes.two["227"]
+ sample.hordes.two["228"]
+ sample.hordes.two["229"]
+ sample.hordes.two["230"]
+ sample.hordes.two["231"]
+ sample.hordes.two["232"]
+ sample.hordes.two["233"]
+ sample.hordes.two["234"]
+ sample.hordes.two["235"]
+ sample.hordes.two["236"]
+ sample.hordes.two["237"]
+ sample.hordes.two["238"]
+ sample.hordes.two["239"]
+ sample.hordes.two["240"]
+ sample.hordes.two["241"]
+ sample.hordes.two["242"]
+ sample.hordes.two["243"]
+ sample.hordes.two["244"]
+ sample.hordes.two["245"]
+ sample.hordes.two["246"]
+ sample.hordes.two["247"]
+ sample.hordes.two["248"]
+ sample.hordes.two["249"]
+ sample.hordes.two["250"]
+ sample.hordes.two["251"]
+ sample.hordes.two["252"]
+ sample.hordes.two["253"]
+ sample.hordes.two["254"]
+ sample.hordes.two["255"]
+ sample.hordes.two["256"]
+ sample.hordes.two["257"]
+ sample.hordes.two["258"]
+ sample.hordes.two["259"]
+ sample.hordes.two["260"]
+ sample.hordes.two["261"]
+ sample.hordes.two["262"]
+ sample.hordes.two["263"]
+ sample.hordes.two["264"]
+ sample.hordes.two["265"]
+ sample.hordes.two["266"]
+ sample.hordes.two["267"]
+ sample.hordes.two["268"]
+ sample.hordes.two["269"]
+ sample.hordes.two["270"]
+ sample.hordes.two["271"]
+ sample.hordes.two["272"]
+ sample.hordes.two["273"]
+ sample.hordes.two["274"]
+ sample.hordes.two["275"]
+ sample.hordes.two["276"]
+ sample.hordes.two["277"]
+ sample.hordes.two["278"]
+ sample.hordes.two["279"]
+ sample.hordes.two["280"]
+ sample.hordes.two["281"]
+ sample.hordes.two["282"]
+ sample.hordes.two["283"]
+ sample.hordes.two["284"]
+ sample.hordes.two["285"]
+ sample.hordes.two["286"]
+ sample.hordes.two["287"]
+ sample.hordes.two["288"]
+ sample.hordes.two["289"]
+ sample.hordes.two["290"]
+ sample.hordes.two["291"]
+ sample.hordes.two["292"]
+ sample.hordes.two["293"]
+ sample.hordes.two["294"]
+ sample.hordes.two["295"]
+ sample.hordes.two["296"]
+ sample.hordes.two["297"]
+ sample.hordes.two["298"]
+ sample.hordes.two["299"]
+ sample.hordes.two["300"]
+ sample.hordes.two["301"]
+ sample.hordes.two["302"]
+ sample.hordes.two["303"]
+ sample.hordes.two["304"]
+ sample.hordes.two["305"]
+ sample.hordes.two["306"]
+ sample.hordes.two["307"]
+ sample.hordes.two["308"]
+ sample.hordes.two["309"]
+ sample.hordes.two["310"]
+ sample.hordes.two["311"]
+ sample.hordes.two["312"]
+ sample.hordes.two["313"]
+ sample.hordes.two["314"]
+ sample.hordes.two["315"]
+ sample.hordes.two["316"]
+ sample.hordes.two["317"]
+ sample.hordes.two["318"]
+ sample.hordes.two["319"]
+ sample.hordes.two["320"]
+ sample.hordes.two["321"]
+ sample.hordes.two["322"]
+ sample.hordes.two["323"]
+ sample.hordes.two["324"]
+ sample.hordes.two["325"]
+ sample.hordes.two["326"]
+ sample.hordes.two["327"]
+ sample.hordes.two["328"]
+ sample.hordes.two["329"]
+ sample.hordes.two["330"]
+ sample.hordes.two["331"]
+ sample.hordes.two["332"]
+ sample.hordes.two["333"]
+ sample.hordes.two["334"]
+ sample.hordes.two["335"]
+ sample.hordes.two["336"]
+ sample.hordes.two["337"]
+ sample.hordes.two["338"]
+ sample.hordes.two["339"]
+ sample.hordes.two["340"]
+ sample.hordes.two["341"]
+ sample.hordes.two["342"]
+ sample.hordes.two["343"]
+ sample.hordes.two["344"]
+ sample.hordes.two["345"]
+ sample.hordes.two["346"]
+ sample.hordes.two["347"]
+ sample.hordes.two["348"]
+ sample.hordes.two["349"]
+ sample.hordes.two["350"]
+ sample.hordes.two["351"]
+ sample.hordes.two["352"]
+ sample.hordes.two["353"]
+ sample.hordes.two["354"]
+ sample.hordes.two["355"]
+ sample.hordes.two["356"]
+ sample.hordes.two["357"]
+ sample.hordes.two["358"]
+ sample.hordes.two["359"]
+ sample.hordes.two["360"]
+ sample.hordes.two["361"]
+ sample.hordes.two["362"]
+ sample.hordes.two["363"]
+ sample.hordes.two["364"]
+ sample.hordes.two["365"]
+ sample.hordes.two["366"]
+ sample.hordes.two["367"]
+ sample.hordes.two["368"]
+ sample.hordes.two["369"]
+ sample.hordes.two["370"]
+ sample.hordes.two["371"]
+ sample.hordes.two["372"]
+ sample.hordes.two["373"]
+ sample.hordes.two["374"]
+ sample.hordes.two["375"]
+ sample.hordes.two["376"]
+ sample.hordes.two["377"]
+ sample.hordes.two["378"]
+ sample.hordes.two["379"]
+ sample.hordes.two["380"]
+ sample.hordes.two["381"]
+ sample.hordes.two["382"]
+ sample.hordes.two["383"]
+ sample.hordes.two["384"]
+ sample.hordes.two["385"]
+ sample.hordes.two["386"]
+ sample.hordes.two["387"]
+ sample.hordes.two["388"]
+ sample.hordes.two["389"]
+ sample.hordes.two["390"]
+ sample.hordes.two["391"]
+ sample.hordes.two["392"]
+ sample.hordes.two["393"]
+ sample.hordes.two["394"]
+ sample.hordes.two["395"]
+ sample.hordes.two["396"]
+ sample.hordes.two["397"]
+ sample.hordes.two["398"]
+ sample.hordes.two["399"]
+ sample.hordes.two["400"]
+ sample.hordes.two["401"]
+ sample.hordes.two["402"]
+ sample.hordes.two["403"]
+ sample.hordes.two["404"]
+ sample.hordes.two["405"]
+ sample.hordes.two["406"]
+ sample.hordes.two["407"]
+ sample.hordes.two["408"]
+ sample.hordes.two["409"]
+ sample.hordes.two["410"]
+ sample.hordes.two["411"]
+ sample.hordes.two["412"]
+ sample.hordes.two["413"]
+ sample.hordes.two["414"]
+ sample.hordes.two["415"]
+ sample.hordes.two["416"]
+ sample.hordes.two["417"]
+ sample.hordes.two["418"]
+ sample.hordes.two["419"]
+ sample.hordes.two["420"]
+ sample.hordes.two["421"]
+ sample.hordes.two["422"]
+ sample.hordes.two["423"]
+ sample.hordes.two["424"]
+ sample.hordes.two["425"]
+ sample.hordes.two["426"]
+ sample.hordes.two["427"]
+ sample.hordes.two["428"]
+ sample.hordes.two["429"]
+ sample.hordes.two["430"]
+ sample.hordes.two["431"]
+ sample.hordes.two["432"]
+ sample.hordes.two["433"]
+ sample.hordes.two["434"]
+ sample.hordes.two["435"]
+ sample.hordes.two["436"]
+ sample.hordes.two["437"]
+ sample.hordes.two["438"]
+ sample.hordes.two["439"]
+ sample.hordes.two["440"]
+ sample.hordes.two["441"]
+ sample.hordes.two["442"]
+ sample.hordes.two["443"]
+ sample.hordes.two["444"]
+ sample.hordes.two["445"]
+ sample.hordes.two["446"]
+ sample.hordes.two["447"]
+ sample.hordes.two["448"]
+ sample.hordes.two["449"]
+ sample.hordes.two["450"]
+ sample.hordes.two["451"]
+ sample.hordes.two["452"]
+ sample.hordes.two["453"]
+ sample.hordes.two["454"]
+ sample.hordes.two["455"]
+ sample.hordes.two["456"]
+ sample.hordes.two["457"]
+ sample.hordes.two["458"]
+ sample.hordes.two["459"]
+ sample.hordes.two["460"]
+ sample.hordes.two["461"]
+ sample.hordes.two["462"]
+ sample.hordes.two["463"]
+ sample.hordes.two["464"]
+ sample.hordes.two["465"]
+ sample.hordes.two["466"]
+ sample.hordes.two["467"]
+ sample.hordes.two["468"]
+ sample.hordes.two["469"]
+ sample.hordes.two["470"]
+ sample.hordes.two["471"]
+ sample.hordes.two["472"]
+ sample.hordes.two["473"]
+ sample.hordes.two["474"]
+ sample.hordes.two["475"]
+ sample.hordes.two["476"]
+ sample.hordes.two["477"]
+ sample.hordes.two["478"]
+ sample.hordes.two["479"]
+ sample.hordes.two["480"]
+ sample.hordes.two["481"]
+ sample.hordes.two["482"]
+ sample.hordes.two["483"]
+ sample.hordes.two["484"]
+ sample.hordes.two["485"]
+ sample.hordes.two["486"]
+ sample.hordes.two["487"]
+ sample.hordes.two["488"]
+ sample.hordes.two["489"]
+ sample.hordes.two["490"]
+ sample.hordes.two["491"]
+ sample.hordes.two["492"]
+ sample.hordes.two["493"]
+ sample.hordes.two["494"]
+ sample.hordes.two["495"]
+ sample.hordes.two["496"]
+ sample.hordes.two["497"]
+ sample.hordes.two["498"]
+ sample.hordes.two["499"]
+}
+End-of-File
+
+_filter <$tmp.log
+cp $tmp.log $seq.full
+
+# success, all done
+exit
diff --git a/qa/633.out.1 b/qa/633.out.1
new file mode 100644
index 0000000..54d804c
--- /dev/null
+++ b/qa/633.out.1
@@ -0,0 +1,15 @@
+QA output created by 633
+2 pmGetPDU: DESC
+2 pmGetPDU: ERROR
+1001 pmGetPDU: INSTANCE
+4 pmGetPDU: PMNS_IDS
+2 pmGetPDU: PMNS_NAMES
+3 pmGetPDU: RESULT
+1 pmXmitPDU: CREDS
+2 pmXmitPDU: DESC_REQ
+3 pmXmitPDU: FETCH
+1001 pmXmitPDU: INSTANCE_REQ
+4 pmXmitPDU: PMNS_NAMES
+2 pmXmitPDU: PMNS_TRAVERSE
+3 pmXmitPDU: PROFILE
+1 pmXmitPDU: RESULT
diff --git a/qa/633.out.2 b/qa/633.out.2
new file mode 100644
index 0000000..e2cf23c
--- /dev/null
+++ b/qa/633.out.2
@@ -0,0 +1,15 @@
+QA output created by 633
+2 pmGetPDU: DESC
+2 pmGetPDU: ERROR
+1001 pmGetPDU: INSTANCE
+5 pmGetPDU: PMNS_IDS
+2 pmGetPDU: PMNS_NAMES
+4 pmGetPDU: RESULT
+1 pmXmitPDU: CREDS
+2 pmXmitPDU: DESC_REQ
+4 pmXmitPDU: FETCH
+1001 pmXmitPDU: INSTANCE_REQ
+5 pmXmitPDU: PMNS_NAMES
+2 pmXmitPDU: PMNS_TRAVERSE
+3 pmXmitPDU: PROFILE
+1 pmXmitPDU: RESULT
diff --git a/qa/634 b/qa/634
new file mode 100755
index 0000000..2ee22d4
--- /dev/null
+++ b/qa/634
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 634
+# pmval timezone problem, #825316
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "time zone from archive ..."
+pmval -t 5 -z -a src/gmt-boring hinv.ncpu 2>&1 | tee $tmp.out
+
+echo
+echo "GMT via -Z ..."
+pmval -t 5 -Z GMT -a src/gmt-boring hinv.ncpu
+
+echo
+echo "GMT via default local timezone ..."
+TZ=GMT pmval -t 5 -a src/gmt-boring hinv.ncpu
+
+echo
+echo "Default timezone ... should be different to -z ..."
+pmval -t 5 -a src/gmt-boring hinv.ncpu >$tmp.default 2>&1
+
+if diff $tmp.default $tmp.out >/dev/null
+then
+ echo "No differences ... you have the bug!"
+ status=1
+else
+ echo "Different, as expected"
+fi
+
+# all done
+exit
diff --git a/qa/634.out b/qa/634.out
new file mode 100644
index 0000000..9cbe689
--- /dev/null
+++ b/qa/634.out
@@ -0,0 +1,50 @@
+QA output created by 634
+time zone from archive ...
+Note: timezone set to local timezone of host "oasis.reading.sgi.com" from archive
+
+metric: hinv.ncpu
+archive: src/gmt-boring
+host: oasis.reading.sgi.com
+start: Wed May 30 03:54:49 2001
+end: Wed May 30 03:55:03 2001
+semantics: discrete instantaneous value
+units: none
+samples: 3
+interval: 5.00 sec
+03:54:49.319 No values available
+03:54:54.319 2
+03:54:59.319 2
+
+GMT via -Z ...
+Note: timezone set to "TZ=GMT"
+
+metric: hinv.ncpu
+archive: src/gmt-boring
+host: oasis.reading.sgi.com
+start: Wed May 30 02:54:49 2001
+end: Wed May 30 02:55:03 2001
+semantics: discrete instantaneous value
+units: none
+samples: 3
+interval: 5.00 sec
+02:54:49.319 No values available
+02:54:54.319 2
+02:54:59.319 2
+
+GMT via default local timezone ...
+
+metric: hinv.ncpu
+archive: src/gmt-boring
+host: oasis.reading.sgi.com
+start: Wed May 30 02:54:49 2001
+end: Wed May 30 02:55:03 2001
+semantics: discrete instantaneous value
+units: none
+samples: 3
+interval: 5.00 sec
+02:54:49.319 No values available
+02:54:54.319 2
+02:54:59.319 2
+
+Default timezone ... should be different to -z ...
+Different, as expected
diff --git a/qa/635 b/qa/635
new file mode 100755
index 0000000..532d250
--- /dev/null
+++ b/qa/635
@@ -0,0 +1,283 @@
+#! /bin/sh
+# PCP QA Test No. 635
+# Check Linux network.interface metrics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+. ./localconfig
+[ $PCP_PLATFORM = linux ] || _notrun "Depends on Linux netstat -ai output format"
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# sample output
+#kenj-pc 68% netstat -ai
+#Kernel Interface table
+#Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
+#eth0 1500 0 5212 0 0 0 3080 2 0 0 BRU
+#lo 3924 0 164293 0 0 0 164293 0 0 0 LRU
+#
+#
+# Grab the netstat statistics. Get name and mtu:
+#
+_netstat_i_1()
+{
+ netstat -ai \
+ | tee -a $seq.full \
+ | sed -e 's/\*/ /' \
+ | $PCP_AWK_PROG '
+BEGIN { iface = -1; mtu = -1; hdr = 0 }
+/Kernel Interface table/ { next }
+hdr==0 { for (i = 0; i <= NF; i++) {
+ if ($i == "Iface") iface = i
+ if ($i == "MTU") mtu = i
+ }
+ if (iface == -1 || mtu == -1) {
+ print "Botch: bad iface/mtu header line:",iface,mtu
+ exit(0);
+ }
+ hdr = 1
+ next
+ }
+hdr==1 { print $iface, $mtu }'
+}
+
+# Then recv packets, recv errors, recv drops, xmit packets, xmit errors
+# and xmit drops.
+#
+#Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
+#eth0 1500 0 12263928 0 0 0 3273749 0 0 0 BMRU
+#lo 16436 0 3489788 0 0 0 3489788 0 0 0 LRU
+#
+# Note1: fifo metric from /proc/net/dev is ?-OVR visible in netstat
+# Note2: "Met" column may not be there!
+#
+_netstat_i_2()
+{
+ netstat -ai \
+ tee -a $seq.full \
+ | sed \
+ -e 's/\*/ /' \
+ | $PCP_AWK_PROG '
+BEGIN { rx = -1; rx_err = -1; rx_drp = -1; rx_ovr = -1
+ tx = -1; tx_err = -1; tx_drp = -1; tx_ovr = -1
+ hdr = 0
+ }
+/Kernel Interface table/ { next }
+hdr==0 { for (i = 0; i <= NF; i++) {
+ if ($i == "RX-OK") rx = i
+ if ($i == "RX-ERR") rx_err = i
+ if ($i == "RX-DRP") rx_drp = i
+ if ($i == "RX-OVR") rx_ovr = i
+ if ($i == "TX-OK") tx = i
+ if ($i == "TX-ERR") tx_err = i
+ if ($i == "TX-DRP") tx_drp = i
+ if ($i == "TX-OVR") tx_ovr = i
+ }
+ if (rx == -1 || rx_err == -1 || rx_drp == -1 || rx_ovr == -1 ||
+ tx == -1 || tx_err == -1 || tx_drp == -1 || tx_ovr == -1) {
+ print "Botch: bad rx/txheader line:",rx,rx_err,rx_drp,rx_ovr,tx,tx_err,tx_drp,tx_ovr
+ exit(0);
+ }
+ hdr = 1
+ next
+ }
+hdr==1 { print $rx, $rx_err, $rx_drp, $rx_ovr, $tx, $tx_err, $tx_drp, $tx_ovr }'
+}
+
+# real QA test starts here
+echo >$seq.full
+
+# Get the list of network interfaces from ifconfig
+#
+ifconfig -a \
+ | sed -n -e '/^[^ ]/{
+s/[: ].*//
+p
+}' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.net.indom
+
+pminfo -f network.interface.total.drops \
+ | $PCP_AWK_PROG '
+ / inst / { print $4 }
+ { next } ' \
+ | tr -d '"]' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.pcp.indom
+
+if diff $tmp.pcp.indom $tmp.net.indom >$tmp.indom.diff
+then
+ :
+else
+ echo "Instance domain for network.interface.total.drops incorrect:"
+ echo "diff output (PCP first, then ifconfig):"
+ cat $tmp.indom.diff
+ status=1
+fi
+
+# Metrics to test. All of these should be counters.
+# out.qlength, out.qmax
+# are excluded because they're instantaneous values.
+#
+cat >$tmp.metrics <<END
+in.errors
+in.packets
+in.drops
+in.fifo
+out.errors
+out.packets
+out.drops
+out.fifo
+END
+
+echo >>$seq.full
+echo "=== netstat for first i/f name and mtu ===" >>$seq.full
+_netstat_i_1 > $tmp.net.1a
+echo "===" >>$seq.full
+cat $tmp.net.1a >>$seq.full
+
+echo >>$seq.full
+echo "=== netstat for first counts ===" >>$seq.full
+_netstat_i_2 > $tmp.net.1b
+echo "===" >>$seq.full
+cat $tmp.net.1b >>$seq.full
+
+# and stick 'em together (just lick and press)
+#
+paste $tmp.net.1a $tmp.net.1b \
+ | LC_COLLATE=POSIX sort \
+ >$tmp.net.1
+
+# Now get the metrics
+#
+echo >>$seq.full
+echo "=== pminfo ==" >>$seq.full
+for m in `cat $tmp.metrics`
+do
+ pminfo -f network.interface.$m \
+ | tee -a $seq.full \
+ | $PCP_AWK_PROG '
+ / inst / { print $4, $6 }
+ { next } ' \
+ | tr -d '"]' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.vals.$m.1
+done
+
+otherhost=`./getpmcdhosts -L -n 1 2>$tmp.out`
+[ -z "$otherhost" ] && _notrun `cat $tmp.out`
+
+# Generate a bit of network traffic
+#
+$sudo ping -f -c 100 localhost >/dev/null 2>&1 &
+$sudo ping -f -c 100 $otherhost >/dev/null 2>&1 &
+sleep 3
+
+for m in `cat $tmp.metrics`
+do
+ pminfo -f network.interface.$m \
+ | $PCP_AWK_PROG '
+ / inst / { print $4, $6 }
+ { next } ' \
+ | tr -d '"]' \
+ | LC_COLLATE=POSIX sort \
+ > $tmp.vals.$m.2
+
+ LC_COLLATE=POSIX join -1 1 -2 1 -o 1.2,2.2,1.1 -t' ' $tmp.vals.$m.1 $tmp.vals.$m.2 >$tmp.vals
+ while read v1 v2 inst
+ do
+ if [ $v2 -lt $v1 ]
+ then
+ echo "$m[\"$inst\"] decreased from $v1 to $v2!"
+ status=1
+ fi
+ done <$tmp.vals
+
+done
+
+# Grab another batch of netstat statistics. Get name and mtu:
+#
+echo >>$seq.full
+echo "=== netstat for second i/f name and mtu ===" >>$seq.full
+_netstat_i_1 > $tmp.net.2a
+echo "===" >>$seq.full
+cat $tmp.net.2a >>$seq.full
+
+# Then recv packets, recv errors, recv drops, xmit packets, xmit errors
+# and xmit drops.
+#
+echo >>$seq.full
+echo "=== netstat for second counts ===" >>$seq.full
+_netstat_i_2 > $tmp.net.2b
+echo "===" >>$seq.full
+cat $tmp.net.2b >>$seq.full
+
+# and stick 'em together (just lick and press)
+#
+paste $tmp.net.2a $tmp.net.2b \
+ | LC_COLLATE=POSIX sort \
+ >$tmp.net.2
+
+$PCP_AWK_PROG < $tmp.net.1 '
+ {
+ print $1, $3 >"'$tmp.net.in.packets.1'"
+ print $1, $4 >"'$tmp.net.in.errors.1'"
+ print $1, $5 >"'$tmp.net.in.drops.1'"
+ print $1, $6 >"'$tmp.net.in.fifo.1'"
+ print $1, $7 >"'$tmp.net.out.packets.1'"
+ print $1, $8 >"'$tmp.net.out.errors.1'"
+ print $1, $9 >"'$tmp.net.out.drops.1'"
+ print $1, $10 >"'$tmp.net.out.fifo.1'"
+ }'
+
+$PCP_AWK_PROG < $tmp.net.2 '
+ {
+ print $3 >"'$tmp.net.in.packets.2'"
+ print $4 >"'$tmp.net.in.errors.2'"
+ print $5 >"'$tmp.net.in.drops.2'"
+ print $6 >"'$tmp.net.in.fifo.2'"
+ print $7 >"'$tmp.net.out.packets.2'"
+ print $8 >"'$tmp.net.out.errors.2'"
+ print $9 >"'$tmp.net.out.drops.2'"
+ print $10 >"'$tmp.net.out.fifo.2'"
+ }'
+
+# Bring the two netstat snaps together and check the pminfo data falls
+# within the netstat data.
+#
+for m in `cat $tmp.metrics`
+do
+ [ ! -f $tmp.net.$m.1 ] && continue
+
+ paste $tmp.net.$m.1 $tmp.net.$m.2 > $tmp.net
+
+ echo '' >>$seq.full
+ echo "=== $m pminfo ===" >>$seq.full
+ cat $tmp.vals.$m.2 >>$seq.full
+ echo "--- $m netstat ---" >>$seq.full
+ cat $tmp.net >>$seq.full
+ LC_COLLATE=POSIX join -1 1 -2 1 -o 1.1,2.2,1.2,2.3 $tmp.vals.$m.2 $tmp.net >$tmp.all
+
+ while read inst nv1 pcp nv2
+ do
+ if src/compare $nv1 $pcp $nv2
+ then
+ :
+ else
+ echo "network.interface.$m[\"$inst\"] value $pcp not in range $nv1..$nv2"
+ status=1
+ fi
+ done <$tmp.all
+done
+
+exit
diff --git a/qa/635.out b/qa/635.out
new file mode 100644
index 0000000..1682ac5
--- /dev/null
+++ b/qa/635.out
@@ -0,0 +1 @@
+QA output created by 635
diff --git a/qa/636 b/qa/636
new file mode 100755
index 0000000..1bb1755
--- /dev/null
+++ b/qa/636
@@ -0,0 +1,36 @@
+#! /bin/sh
+# PCP QA Test No. 636
+# check error code reporting, pv #820891
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "Expect no output ..."
+
+# on IRIX 6.5m should report Warning: cihb_getstats: ... ENOTSUP (1008)
+# on IRIX 6.5f should report Warning: cihb_getstats: ... EINVAL or nothing
+# on Linux shuld report nothing
+#
+src/pminfo_lite -L pmcd.control.debug 2>&1 \
+| grep 'No such PMAPI error code'
+
+# for IRIX this is ENOATTR, elsewhere should be No suchcPMAPI error code
+# (assuming strerror(1009) does not return anything useful).
+#
+pmerr -1009 2>&1 \
+| grep 'PCP 1.x?'
+
+# success, all done
+exit
diff --git a/qa/636.out b/qa/636.out
new file mode 100644
index 0000000..170e469
--- /dev/null
+++ b/qa/636.out
@@ -0,0 +1,2 @@
+QA output created by 636
+Expect no output ...
diff --git a/qa/638 b/qa/638
new file mode 100755
index 0000000..9c3d071
--- /dev/null
+++ b/qa/638
@@ -0,0 +1,220 @@
+#! /bin/sh
+# PCP QA Test No. 638
+# pmnsdel concurrency issues - pv #826904
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_del()
+{
+ while true
+ do
+ pmlock $tmp.root.lock && break
+ sleep 1
+ done
+ pmnsdel -n $tmp.root $1
+ rm -f $tmp.root.lock
+}
+
+cat <<End-of-File >$tmp.master
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+root {
+ one
+ two
+ three
+ keep1 1:0:1
+ d1 1:1:1
+ keep2 2:0:2
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one {
+ d2 2:1:2
+ one
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one.one {
+ d3 3:1:3
+ one
+ d6 6:1:6
+ d7 7:1:7
+ d8 8:1:8
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one.one.one {
+ keep4 4:0:4
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+two {
+ keep3 3:0:3
+ d4 4:1:4
+ d9 9:1:9
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+three {
+ one
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+three.one {
+ d5 5:1:5
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+End-of-File
+
+
+# real QA test starts here
+echo "Initial state ..."
+pminfo -m -n $tmp.master
+
+echo
+echo "Serial deletions ..."
+cp $tmp.master $tmp.root
+for m in d1 one.d2 one.one.d3 two.d4 three.one.d5 one.one.d6 \
+ one.one.d7 one.one.d8 two.d9
+do
+ pmnsdel -n $tmp.root $m 2>&1
+done \
+| grep ' leaf' \
+| LC_COLLATE=POSIX sort -nr
+echo
+pminfo -m -n $tmp.root
+
+echo
+echo "Parallel deletions ..."
+cp $tmp.master $tmp.root
+rm -f $tmp.out
+for m in d1 one.d2 one.one.d3 two.d4 three.one.d5 one.one.d6 \
+ one.one.d7 one.one.d8 two.d9
+do
+ _del $m >$tmp.out.$m 2>&1 &
+done
+wait
+
+cat $tmp.out.* \
+| grep ' leaf' \
+| LC_COLLATE=POSIX sort -nr
+echo
+
+for f in $tmp.out.*
+do
+ echo >>$seq.full
+ echo "=== $f ===" >>$seq.full
+ cat $f >>$seq.full
+done
+
+pminfo -m -n $tmp.root
+
+# success, all done
+exit
diff --git a/qa/638.out.1 b/qa/638.out.1
new file mode 100644
index 0000000..54cd8c5
--- /dev/null
+++ b/qa/638.out.1
@@ -0,0 +1,47 @@
+QA output created by 638
+Initial state ...
+one.d2 PMID: 2.1.2
+one.one.d3 PMID: 3.1.3
+one.one.one.keep4 PMID: 4.0.4
+one.one.d6 PMID: 6.1.6
+one.one.d7 PMID: 7.1.7
+one.one.d8 PMID: 8.1.8
+two.keep3 PMID: 3.0.3
+two.d4 PMID: 4.1.4
+two.d9 PMID: 9.1.9
+three.one.d5 PMID: 5.1.5
+keep1 PMID: 1.0.1
+d1 PMID: 1.1.1
+keep2 PMID: 2.0.2
+
+Serial deletions ...
+ 12 leaf nodes
+ 11 leaf nodes
+ 10 leaf nodes
+ 9 leaf nodes
+ 8 leaf nodes
+ 7 leaf nodes
+ 6 leaf nodes
+ 5 leaf nodes
+ 4 leaf nodes
+
+one.one.one.keep4 PMID: 4.0.4
+two.keep3 PMID: 3.0.3
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+
+Parallel deletions ...
+ 12 leaf nodes
+ 11 leaf nodes
+ 10 leaf nodes
+ 9 leaf nodes
+ 8 leaf nodes
+ 7 leaf nodes
+ 6 leaf nodes
+ 5 leaf nodes
+ 4 leaf nodes
+
+one.one.one.keep4 PMID: 4.0.4
+two.keep3 PMID: 3.0.3
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
diff --git a/qa/638.out.2 b/qa/638.out.2
new file mode 100644
index 0000000..e4f6245
--- /dev/null
+++ b/qa/638.out.2
@@ -0,0 +1,29 @@
+QA output created by 638
+Initial state ...
+one.d2 PMID: 2.1.2
+one.one.d3 PMID: 3.1.3
+one.one.one.keep4 PMID: 4.0.4
+one.one.d6 PMID: 6.1.6
+one.one.d7 PMID: 7.1.7
+one.one.d8 PMID: 8.1.8
+two.keep3 PMID: 3.0.3
+two.d4 PMID: 4.1.4
+two.d9 PMID: 9.1.9
+three.one.d5 PMID: 5.1.5
+keep1 PMID: 1.0.1
+d1 PMID: 1.1.1
+keep2 PMID: 2.0.2
+
+Serial deletions ...
+
+one.one.one.keep4 PMID: 4.0.4
+two.keep3 PMID: 3.0.3
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+
+Parallel deletions ...
+
+one.one.one.keep4 PMID: 4.0.4
+two.keep3 PMID: 3.0.3
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
diff --git a/qa/639 b/qa/639
new file mode 100755
index 0000000..0da5bc6
--- /dev/null
+++ b/qa/639
@@ -0,0 +1,236 @@
+#! /bin/sh
+# PCP QA Test No. 639
+# pmnsadd concurrency issues - pv #826904
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_add()
+{
+ while true
+ do
+ pmlock $tmp.root.lock && break
+ sleep 1
+ done
+ pmnsadd -n $tmp.root $1
+ rm -f $tmp.root.lock
+}
+
+cat <<End-of-File >$tmp.master
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+root {
+ one
+ two
+ keep1 1:0:1
+ keep2 2:0:2
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one {
+ one
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one.one {
+ one
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one.one.one {
+ keep4 4:0:4
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+two {
+ keep3 3:0:3
+}
+
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+End-of-File
+
+cat <<End-of-File >$tmp.d1
+root {
+ d1 1:1:1
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.d2
+one {
+ d2 2:1:2
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d3
+one.one {
+ d3 3:1:3
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d6
+one.one {
+ d6 6:1:6
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d7
+one.one {
+ d7 7:1:7
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d8
+one.one {
+ d8 8:1:8
+}
+End-of-File
+
+cat <<End-of-File >$tmp.two.d4
+two {
+ d4 4:1:4
+}
+End-of-File
+
+cat <<End-of-File >$tmp.two.d9
+two {
+ d9 9:1:9
+}
+End-of-File
+
+cat <<End-of-File >$tmp.three.one.d5
+three.one {
+ d5 5:1:5
+}
+End-of-File
+
+# real QA test starts here
+echo "Initial state ..."
+pminfo -m -n $tmp.master
+
+echo
+echo "Serial additions ..."
+echo "Serial additions ..." >$seq.full
+cp $tmp.master $tmp.root
+for m in $tmp.d1 $tmp.one.d2 $tmp.one.one.d3 $tmp.two.d4 $tmp.three.one.d5 \
+ $tmp.one.one.d6 $tmp.one.one.d7 $tmp.one.one.d8 $tmp.two.d9
+do
+ pmnsadd -n $tmp.root $m 2>&1
+done \
+| tee -a $seq.full \
+| grep ' leaf' \
+| LC_COLLATE=POSIX sort -nr
+echo
+pminfo -m -n $tmp.root | LC_COLLATE=POSIX sort
+
+echo
+echo "Parallel additions ..."
+echo "Parallel additions ..." >>$seq.full
+cp $tmp.master $tmp.root
+rm -f $tmp*.out
+for m in $tmp.d1 $tmp.one.d2 $tmp.one.one.d3 $tmp.two.d4 $tmp.three.one.d5 \
+ $tmp.one.one.d6 $tmp.one.one.d7 $tmp.one.one.d8 $tmp.two.d9
+do
+ _add $m >$m.out 2>&1 &
+done
+wait
+
+cat $tmp*.out \
+| grep ' leaf' \
+| LC_COLLATE=POSIX sort -nr
+echo
+
+for f in $tmp*.out
+do
+ echo >>$seq.full
+ echo "=== $f ===" >>$seq.full
+ cat $f >>$seq.full
+done
+
+pminfo -m -n $tmp.root | LC_COLLATE=POSIX sort
+
+# success, all done
+exit
diff --git a/qa/639.out.1 b/qa/639.out.1
new file mode 100644
index 0000000..5fca332
--- /dev/null
+++ b/qa/639.out.1
@@ -0,0 +1,56 @@
+QA output created by 639
+Initial state ...
+one.one.one.keep4 PMID: 4.0.4
+two.keep3 PMID: 3.0.3
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+
+Serial additions ...
+ 13 leaf nodes
+ 12 leaf nodes
+ 11 leaf nodes
+ 10 leaf nodes
+ 9 leaf nodes
+ 8 leaf nodes
+ 7 leaf nodes
+ 6 leaf nodes
+ 5 leaf nodes
+
+d1 PMID: 1.1.1
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+one.d2 PMID: 2.1.2
+one.one.d3 PMID: 3.1.3
+one.one.d6 PMID: 6.1.6
+one.one.d7 PMID: 7.1.7
+one.one.d8 PMID: 8.1.8
+one.one.one.keep4 PMID: 4.0.4
+three.one.d5 PMID: 5.1.5
+two.d4 PMID: 4.1.4
+two.d9 PMID: 9.1.9
+two.keep3 PMID: 3.0.3
+
+Parallel additions ...
+ 13 leaf nodes
+ 12 leaf nodes
+ 11 leaf nodes
+ 10 leaf nodes
+ 9 leaf nodes
+ 8 leaf nodes
+ 7 leaf nodes
+ 6 leaf nodes
+ 5 leaf nodes
+
+d1 PMID: 1.1.1
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+one.d2 PMID: 2.1.2
+one.one.d3 PMID: 3.1.3
+one.one.d6 PMID: 6.1.6
+one.one.d7 PMID: 7.1.7
+one.one.d8 PMID: 8.1.8
+one.one.one.keep4 PMID: 4.0.4
+three.one.d5 PMID: 5.1.5
+two.d4 PMID: 4.1.4
+two.d9 PMID: 9.1.9
+two.keep3 PMID: 3.0.3
diff --git a/qa/639.out.2 b/qa/639.out.2
new file mode 100644
index 0000000..439a555
--- /dev/null
+++ b/qa/639.out.2
@@ -0,0 +1,38 @@
+QA output created by 639
+Initial state ...
+one.one.one.keep4 PMID: 4.0.4
+two.keep3 PMID: 3.0.3
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+
+Serial additions ...
+
+d1 PMID: 1.1.1
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+one.d2 PMID: 2.1.2
+one.one.d3 PMID: 3.1.3
+one.one.d6 PMID: 6.1.6
+one.one.d7 PMID: 7.1.7
+one.one.d8 PMID: 8.1.8
+one.one.one.keep4 PMID: 4.0.4
+three.one.d5 PMID: 5.1.5
+two.d4 PMID: 4.1.4
+two.d9 PMID: 9.1.9
+two.keep3 PMID: 3.0.3
+
+Parallel additions ...
+
+d1 PMID: 1.1.1
+keep1 PMID: 1.0.1
+keep2 PMID: 2.0.2
+one.d2 PMID: 2.1.2
+one.one.d3 PMID: 3.1.3
+one.one.d6 PMID: 6.1.6
+one.one.d7 PMID: 7.1.7
+one.one.d8 PMID: 8.1.8
+one.one.one.keep4 PMID: 4.0.4
+three.one.d5 PMID: 5.1.5
+two.d4 PMID: 4.1.4
+two.d9 PMID: 9.1.9
+two.keep3 PMID: 3.0.3
diff --git a/qa/640 b/qa/640
new file mode 100755
index 0000000..c36018e
--- /dev/null
+++ b/qa/640
@@ -0,0 +1,29 @@
+#! /bin/sh
+# PCP QA Test No. 640
+#
+# Check no possible root exploit via pmpost. This test originally
+# used the actual exploit, but this has not been feasible for many
+# years; so we now simply check the right permissions are in place
+# and move right along...
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+trap "$sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmpost=$PCP_BINADM_DIR/pmpost
+echo "Using pmpost binary: $pmpost" > $seq.full
+test -u "$pmpost" && echo "FAIL: pmpost has setuid bit set"
+test -g "$pmpost" && echo "FAIL: pmpost has setgid bit set"
+echo "Test complete"
+exit
diff --git a/qa/640.out b/qa/640.out
new file mode 100644
index 0000000..f8a70b7
--- /dev/null
+++ b/qa/640.out
@@ -0,0 +1,2 @@
+QA output created by 640
+Test complete
diff --git a/qa/642 b/qa/642
new file mode 100755
index 0000000..0242503
--- /dev/null
+++ b/qa/642
@@ -0,0 +1,126 @@
+#! /bin/sh
+# PCP QA Test No. 642
+# concurrent PMDA installs trash the PMNS?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+if [ $PCP_VER -ge 3813 ]
+then
+ ln $seq.out.4 $seq.out || exit 1
+elif [ $PCP_VER -ge 3801 ]
+then
+ ln $seq.out.3 $seq.out || exit 1
+elif [ $PCP_VER -ge 3600 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+done_clean=false
+
+pcp >>$here/$seq.full
+pminfo trace >/dev/null 2>&1
+remove_trace=$?
+echo "remove_trace=$remove_trace" >>$here/$seq.full
+pminfo trivial >/dev/null 2>&1
+remove_trivial=$?
+echo "remove_trivial=$remove_trivial" >>$here/$seq.full
+pminfo sendmail >/dev/null 2>&1
+remove_sendmail=$?
+echo "remove_sendmail=$remove_sendmail" >>$here/$seq.full
+
+_setup_pmdas()
+{
+ cd $PCP_PMDAS_DIR
+ for pmda in trivial simple sample sendmail trace
+ do
+ cd $pmda
+ $sudo ./Install -e -Q </dev/null >>$here/$seq.full 2>&1
+ cd ..
+ done
+}
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ if [ $remove_trace -ne 0 ]
+ then
+ cd $PCP_PMDAS_DIR/trace
+ $sudo ./Remove >>$here/$seq.full 2>&1
+ fi
+ if [ $remove_trivial -ne 0 ]
+ then
+ cd $PCP_PMDAS_DIR/trivial
+ $sudo ./Remove >>$here/$seq.full 2>&1
+ fi
+ if [ $remove_sendmail -ne 0 ]
+ then
+ cd $PCP_PMDAS_DIR/sendmail
+ $sudo ./Remove >>$here/$seq.full 2>&1
+ fi
+ [ -f $tmp.pmcd.conf ] && $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ done_clean=true
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# copy the pmcd config file to restore state later.
+$sudo cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# real QA test starts here
+unset ROOT TOOLROOT MAKEFLAGS
+_setup_pmdas
+pminfo -n $PCP_VAR_DIR/pmns/root | LC_COLLATE=POSIX sort >$tmp.pmns.start
+
+# do 'em in parallel
+#
+cd $PCP_PMDAS_DIR
+i=1
+for pmda in trivial simple sample sendmail trace
+do
+ cd $pmda
+ $sudo ./Install -e -Q </dev/null >$tmp.out.$i 2>&1 &
+ cd ..
+ i=`expr $i + 1`
+done
+
+wait
+
+for i in 1 2 3 4 5
+do
+ echo
+ echo "=== install #$i ==="
+ _filter_pmda_install <$tmp.out.$i
+done
+
+echo
+echo "=== PMNS differences (none expected) ==="
+pminfo -n $PCP_VAR_DIR/pmns/root \
+| LC_COLLATE=POSIX sort \
+| diff - $tmp.pmns.start
+echo
+
+# success, all done
+exit
diff --git a/qa/642.out.1 b/qa/642.out.1
new file mode 100644
index 0000000..ece268c
--- /dev/null
+++ b/qa/642.out.1
@@ -0,0 +1,121 @@
+QA output created by 642
+
+=== install #1 ===
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #2 ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Install simple as a daemon or perl or dso agent? [daemon]
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #3 ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+======================
+= sampledso DSO PMDA =
+======================
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #4 ===
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #5 ===
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+=== PMNS differences (none expected) ===
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/642.out.2 b/qa/642.out.2
new file mode 100644
index 0000000..8f524a9
--- /dev/null
+++ b/qa/642.out.2
@@ -0,0 +1,91 @@
+QA output created by 642
+
+=== install #1 ===
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #2 ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Install simple as a daemon or perl or dso agent? [daemon]
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #3 ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+======================
+= sampledso DSO PMDA =
+======================
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #4 ===
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #5 ===
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+=== PMNS differences (none expected) ===
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/642.out.3 b/qa/642.out.3
new file mode 100644
index 0000000..ddc9ace
--- /dev/null
+++ b/qa/642.out.3
@@ -0,0 +1,91 @@
+QA output created by 642
+
+=== install #1 ===
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #2 ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Install simple as a daemon or python or perl or dso agent? [daemon]
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #3 ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+======================
+= sampledso DSO PMDA =
+======================
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #4 ===
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #5 ===
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+=== PMNS differences (none expected) ===
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/642.out.4 b/qa/642.out.4
new file mode 100644
index 0000000..c379768
--- /dev/null
+++ b/qa/642.out.4
@@ -0,0 +1,95 @@
+QA output created by 642
+
+=== install #1 ===
+You will need to choose an appropriate configuration for installation of
+the "trivial" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #2 ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Install simple as a daemon or python or perl or dso agent? [daemon]
+PMCD should communicate with the simple daemon via a pipe or a socket? [pipe]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #3 ===
+You will need to choose an appropriate configuration for installation of
+the "sample" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+======================
+= sample daemon PMDA =
+======================
+PMCD should communicate with the sample daemon via a pipe or a socket? [pipe]
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+======================
+= sampledso DSO PMDA =
+======================
+Installing files ...
+[...install files, make output...]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #4 ===
+You will need to choose an appropriate configuration for installation of
+the "sendmail" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+
+=== install #5 ===
+Installing the "trace" Performance Metrics Domain Agent (PMDA) ...
+
+Use the default installation [y]?
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Note: some warnings are expected until trace API calls are made - refer to
+ the man pages for pmtrace(1) and pmdatrace(3) for further details.
+
+=== PMNS differences (none expected) ===
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/643 b/qa/643
new file mode 100755
index 0000000..2c12b25
--- /dev/null
+++ b/qa/643
@@ -0,0 +1,79 @@
+#! /bin/sh
+# PCP QA Test No. 643
+# concurrent PMDA removals trash the PMNS?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+done_clean=false
+
+install_on_cleanup=false
+pminfo trivial >/dev/null 2>&1 && install_on_cleanup=true
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ ( cd $PCP_PMDAS_DIR/trivial ; $sudo make >/dev/null 2>&1 )
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/trivial; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/trivial; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ [ -f $tmp.pmcd.conf ] && $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ done_clean=true
+ fi
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# copy the pmcd config file to restore state later.
+$sudo cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# real QA test starts here
+cd $PCP_PMDAS_DIR/trivial
+unset ROOT TOOLROOT MAKEFLAGS
+$sudo ./Remove </dev/null >/dev/null 2>&1
+pminfo -n $PCP_VAR_DIR/pmns/root >$tmp.pmns.start
+
+for i in 1 2 3 4 5
+do
+ $sudo ./Remove </dev/null >$tmp.out.$i 2>&1 &
+done
+
+wait
+
+for i in 1 2 3 4 5
+do
+ echo
+ echo "=== remove #$i ==="
+ _filter_pmda_install <$tmp.out.$i
+done
+
+echo
+echo "=== PMNS differences (none expected) ==="
+pminfo -n $PCP_VAR_DIR/pmns/root \
+| diff - $tmp.pmns.start
+echo
+
+# success, all done
+exit
diff --git a/qa/643.out b/qa/643.out
new file mode 100644
index 0000000..4cce747
--- /dev/null
+++ b/qa/643.out
@@ -0,0 +1,42 @@
+QA output created by 643
+
+=== remove #1 ===
+Culling the Performance Metrics Name Space ...
+trivial ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+
+=== remove #2 ===
+Culling the Performance Metrics Name Space ...
+trivial ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+
+=== remove #3 ===
+Culling the Performance Metrics Name Space ...
+trivial ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+
+=== remove #4 ===
+Culling the Performance Metrics Name Space ...
+trivial ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+
+=== remove #5 ===
+Culling the Performance Metrics Name Space ...
+trivial ... not found in Name Space, this is OK
+Updating the PMCD control file, and notifying PMCD ...
+Removing files ...
+Check trivial metrics have gone away ... OK
+
+=== PMNS differences (none expected) ===
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/644 b/qa/644
new file mode 100755
index 0000000..135e498
--- /dev/null
+++ b/qa/644
@@ -0,0 +1,45 @@
+#! /bin/sh
+# PCP QA Test No. 644
+# concurrent Rebuild executions trash the PMNS?
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "_done; exit \$status" 0 1 2 3 15
+
+_done()
+{
+ cd $PCP_VAR_DIR/pmns
+ $sudo ./Rebuild -u </dev/null >/dev/null 2>&1
+ $sudo rm -f $tmp.*
+}
+
+# real QA test starts here
+cd $PCP_VAR_DIR/pmns
+
+for i in 1 2 3 4 5
+do
+ $sudo ./Rebuild -u </dev/null >$tmp.out.$i 2>&1 &
+done
+
+wait
+
+for i in 1 2 3 4 5
+do
+ echo
+ echo "=== Rebuild #$i ==="
+ cat $tmp.out.$i
+done
+
+# success, all done
+exit
diff --git a/qa/644.out b/qa/644.out
new file mode 100644
index 0000000..1070cf8
--- /dev/null
+++ b/qa/644.out
@@ -0,0 +1,11 @@
+QA output created by 644
+
+=== Rebuild #1 ===
+
+=== Rebuild #2 ===
+
+=== Rebuild #3 ===
+
+=== Rebuild #4 ===
+
+=== Rebuild #5 ===
diff --git a/qa/645 b/qa/645
new file mode 100755
index 0000000..a8274cd
--- /dev/null
+++ b/qa/645
@@ -0,0 +1,44 @@
+#! /bin/sh
+# PCP QA Test No. 645
+# pmlogger config with hyphens in hostname - #828416
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/__pmGetAddrInfo(/gethostbyname(/g' \
+ -e 's/__pmGetHostByName(/gethostbyname(/g' \
+ -e '/gethostbyname(/s/ Resolver Error 0 (no error)/ Unknown host/' \
+ -e '/gethostbyname(/s/ No address associated with name/ Unknown host/' \
+ -e '/gethostbyname(/s/ Host name lookup failure/ Unknown host/'
+}
+
+# real QA test starts here
+for host in nosuchhost no-such-host
+do
+ cat <<End-of-File | pmlogger -l $tmp.log $tmp
+log mandatory on once { hinv.ncpu }
+
+[access]
+allow $host:advisory,mandatory,enquire;
+End-of-File
+
+ _filter_pmlogger_log <$tmp.log | _filter
+done
+
+# success, all done
+exit
diff --git a/qa/645.out b/qa/645.out
new file mode 100644
index 0000000..7c2a0c1
--- /dev/null
+++ b/qa/645.out
@@ -0,0 +1,13 @@
+QA output created by 645
+Log for pmlogger on HOST started DATE
+
+[DATE] pmlogger(PID) Error: gethostbyname(nosuchhost), Unknown host
+error was on line 4
+
+Log finished DATE
+Log for pmlogger on HOST started DATE
+
+[DATE] pmlogger(PID) Error: gethostbyname(no-such-host), Unknown host
+error was on line 4
+
+Log finished DATE
diff --git a/qa/646 b/qa/646
new file mode 100755
index 0000000..51805c6
--- /dev/null
+++ b/qa/646
@@ -0,0 +1,65 @@
+#! /bin/sh
+# PCP QA Test No. 646
+# Testing of libpcp_mmv functionality (ondisk format)
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2009-2010 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+files="$PCP_TMP_DIR/mmv/test$$ $PCP_TMP_DIR/mmv/notest$$"
+culldir=false
+
+_cleanup()
+{
+ rm -f $tmp.*
+ $sudo rm -f $files
+ $culldir && $sudo rm -fr "$PCP_TMP_DIR/mmv"
+}
+
+$sudo rm -rf $tmp.* $files
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# is a pre-existing mmv directory in place? if so, write access needed
+if [ -d "$PCP_TMP_DIR/mmv" ]
+then
+ [ -w "$PCP_TMP_DIR/mmv" ] || _notrun "Cannot write to $PCP_TMP_DIR/mmv"
+else
+ culldir=true
+ $sudo mkdir -p "$PCP_TMP_DIR/mmv"
+ $sudo chown `whoami` "$PCP_TMP_DIR/mmv" # local user - tmpdir writing
+ $sudo chgrp $PCP_GROUP "$PCP_TMP_DIR/mmv" # group pcp - pmdammv reading
+fi
+
+_filter_mmvdump()
+{
+ sed \
+ -e "s,test$$,testPID,g" \
+ -e "s,notest$$,notestPID,g" \
+ -e "s,^Process.*= $pid1,Process = PID,g" \
+ -e "s,^Process.*= $pid2,Process = PID,g" \
+ -e "s,^Generated.*= [0-9][0-9]*,Generated = TIMESTAMP,g" \
+ -e 's/interval = [0-9][0-9]*/interval = TIME/' \
+ -e 's/eggs"] = [0-9][0-9]* (value=[0-9][0-9]*/eggs"] = N (value=N/' \
+ -e "s,^MMV file.*= $PCP_TMP_DIR,MMV file = \$PCP_TMP_DIR,g" \
+
+}
+
+src/mmv_genstats test$$ &
+pid1=$!
+src/mmv_nostats notest$$ &
+pid2=$!
+wait
+$PCP_PMDAS_DIR/mmv/mmvdump $PCP_TMP_DIR/mmv/test$$ | _filter_mmvdump
+$PCP_PMDAS_DIR/mmv/mmvdump $PCP_TMP_DIR/mmv/notest$$ | _filter_mmvdump
+
+status=0
+exit
diff --git a/qa/646.out b/qa/646.out
new file mode 100644
index 0000000..6c74391
--- /dev/null
+++ b/qa/646.out
@@ -0,0 +1,97 @@
+QA output created by 646
+MMV file = $PCP_TMP_DIR/mmv/testPID
+Version = 1
+Generated = TIMESTAMP
+TOC count = 5
+Cluster = 0
+Process = PID
+Flags = 0x0
+
+TOC[0]: offset 40, indoms offset 120 (2 entries)
+ [1/120] 2 instances, starting at offset 184
+ shorttext=We can be heroes
+ helptext=We can be heroes, just for one day
+ [2/152] 3 instances, starting at offset 344
+ (no shorttext)
+ (no helptext)
+
+TOC[1]: offset 56, instances offset 184 (5 entries)
+ [1/184] instance = [0 or "zero"]
+ [1/264] instance = [1 or "hero"]
+ [2/344] instance = [0 or "bird"]
+ [2/424] instance = [1 or "tree"]
+ [2/504] instance = [2 or "eggs"]
+
+TOC[2]: toc offset 72, metrics offset 584 (6 entries)
+ [1/584] counter
+ type=32-bit unsigned int (0x1), sem=counter (0x1), pad=0x0
+ units=count
+ (no indom)
+ shorttext=test counter metric
+ helptext=Yes, this is a test counter metric
+ [2/688] discrete
+ type=32-bit int (0x0), sem=discrete (0x4), pad=0x0
+ units=
+ (no indom)
+ shorttext=test discrete metric
+ helptext=Yes, this is a test discrete metric
+ [3/792] indom
+ type=32-bit unsigned int (0x1), sem=instant (0x3), pad=0x0
+ units=count
+ indom=1
+ (no shorttext)
+ (no helptext)
+ [4/896] interval
+ type=elapsed (0x9), sem=counter (0x1), pad=0x0
+ units=microsec
+ indom=2
+ (no shorttext)
+ (no helptext)
+ [5/1000] string
+ type=string (0x6), sem=instant (0x3), pad=0x0
+ units=
+ (no indom)
+ (no shorttext)
+ (no helptext)
+ [6/1104] strings
+ type=string (0x6), sem=instant (0x3), pad=0x0
+ units=
+ indom=1
+ shorttext=test string metrics
+ helptext=Yes, this is a test string metric with instances
+
+TOC[3]: offset 88, values offset 1208 (10 entries)
+ [1/1208] counter = 41
+ [2/1240] discrete = 42
+ [3/1272] indom[0 or "zero"] = 43
+ [3/1304] indom[1 or "hero"] = 0
+ [4/1336] interval[0 or "bird"] = 0 (value=0/extra=0)
+ [4/1368] interval[1 or "tree"] = 0 (value=0/extra=0)
+ [4/1400] interval[2 or "eggs"] = N (value=N/extra=0)
+ [5/1432] string = "g'day world"
+ [6/1464] strings[0 or "zero"] = "00oo00"
+ [6/1496] strings[1 or "hero"] = ""
+
+TOC[4]: offset 104, string offset 1528 (11 entries)
+ [1/1528] g'day world
+ [2/1784] 00oo00
+ [3/2040]
+ [4/2296] test counter metric
+ [5/2552] Yes, this is a test counter metric
+ [6/2808] test discrete metric
+ [7/3064] Yes, this is a test discrete metric
+ [8/3320] test string metrics
+ [9/3576] Yes, this is a test string metric with instances
+ [10/3832] We can be heroes
+ [11/4088] We can be heroes, just for one day
+MMV file = $PCP_TMP_DIR/mmv/notestPID
+Version = 1
+Generated = TIMESTAMP
+TOC count = 2
+Cluster = 0
+Process = PID
+Flags = 0x0
+
+TOC[0]: toc offset 40, metrics offset 72 (0 entries)
+
+TOC[1]: offset 56, values offset 72 (0 entries)
diff --git a/qa/647 b/qa/647
new file mode 100755
index 0000000..6427f7c
--- /dev/null
+++ b/qa/647
@@ -0,0 +1,144 @@
+#! /bin/sh
+# PCP QA Test No. 647
+# Install/Remove for Memory Mapped Value PMDA
+#
+# Copyright (c) 2009 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+username=`id -u -n`
+done_clean=false
+MMV_STATS_DIR="$PCP_TMP_DIR/mmv"
+
+# for QA the default install for mmv PMDA is as a dso, not a daemon
+#
+cat <<End-of-File >$tmp.input
+b
+dso
+End-of-File
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ if [ -d $tmp.mmv.dir ]
+ then
+ $sudo rm -fr "$MMV_STATS_DIR"
+ $sudo mv $tmp.mmv.dir $MMV_STATS_DIR
+ fi
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ rm -f $tmp.*
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo mmv >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+_filter_mmv_values()
+{
+ sed -e \
+ 's/"eggs"\] value .*/"eggs"] value USEC/g'
+}
+
+# real QA test starts here
+home="$PCP_PMDAS_DIR"
+iam=mmv
+if [ ! -d "$home/$iam" ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd "$home/$iam"
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH "$tmp.pmcd.conf"
+# move the MMV directory to restore contents later.
+[ -d $MMV_STATS_DIR ] && $sudo mv -f $MMV_STATS_DIR $tmp.mmv.dir
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+# create a directory we can write and pcp group can read
+$sudo mkdir -m 755 "$MMV_STATS_DIR"
+$sudo chown $username "$MMV_STATS_DIR"
+$sudo chgrp pcp "$MMV_STATS_DIR"
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+
+$here/src/mmv_genstats
+
+echo
+echo "=== validate values ==="
+if pminfo $iam | LC_COLLATE=POSIX sort >$tmp.names
+then
+ for name in `cat $tmp.names`
+ do
+ pminfo -fdmtT $name | _filter_mmv_values
+ done
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+$here/src/mmv_noinit
+
+echo
+echo "=== validate metrics ==="
+if pminfo $iam | LC_COLLATE=POSIX sort >$tmp.names
+then
+ for name in `cat $tmp.names`
+ do
+ pminfo -fdmtT $name
+ done
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+echo
+echo "=== $iam agent re-installation ==="
+$sudo ./Install <$tmp.input >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+
+status=0
+exit
diff --git a/qa/647.out.1 b/qa/647.out.1
new file mode 100644
index 0000000..c735f3d
--- /dev/null
+++ b/qa/647.out.1
@@ -0,0 +1,136 @@
+QA output created by 647
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] PMCD should communicate with the mmv daemon via a pipe or a socket? [pipe] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+
+=== validate values ===
+
+mmv.debug PMID: 70.0.1 [Debug flag]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+See pmdbg(1). pmstore into this metric to change the debug value.
+ value 0
+
+mmv.reload PMID: 70.0.0 [Control maps reloading]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+Writing anything other then 0 to this metric will result in
+re-reading directory and re-mapping files.
+ value 0
+
+mmv.test.counter PMID: 70.1.1 [test counter metric]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Yes, this is a test counter metric
+ value 41
+
+mmv.test.discrete PMID: 70.1.2 [test discrete metric]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+Yes, this is a test discrete metric
+ value 42
+
+mmv.test.indom PMID: 70.1.3 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 32-bit unsigned int InDom: 70.2049 0x11800801
+ Semantics: instant Units: count
+Full Help: Error: One-line or help text is not available
+ inst [0 or "zero"] value 43
+ inst [1 or "hero"] value 0
+
+mmv.test.interval PMID: 70.1.4 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 64-bit int InDom: 70.2050 0x11800802
+ Semantics: counter Units: microsec
+Full Help: Error: One-line or help text is not available
+ inst [0 or "bird"] value 0
+ inst [1 or "tree"] value 0
+ inst [2 or "eggs"] value USEC
+
+mmv.test.string PMID: 70.1.5 One-line Help: Error: One-line or help text is not available
+
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Full Help: Error: One-line or help text is not available
+ value "g'day world"
+
+mmv.test.strings PMID: 70.1.6 [test string metrics]
+ Data Type: string InDom: 70.2049 0x11800801
+ Semantics: instant Units: none
+Help:
+Yes, this is a test string metric with instances
+ inst [0 or "zero"] value "00oo00"
+ inst [1 or "hero"] value ""
+
+=== validate metrics ===
+
+mmv.debug PMID: 70.0.1 [Debug flag]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+See pmdbg(1). pmstore into this metric to change the debug value.
+ value 0
+
+mmv.reload PMID: 70.0.0 [Control maps reloading]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+Writing anything other then 0 to this metric will result in
+re-reading directory and re-mapping files.
+ value 0
+
+mmv.test.noinit PMID: 70.1.1 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Full Help: Error: One-line or help text is not available
+ value 42
+
+=== remove mmv agent ===
+Culling the Performance Metrics Name Space ...
+mmv ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check mmv metrics have gone away ... OK
+
+=== mmv agent re-installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 3 metrics and 3 values
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/647.out.2 b/qa/647.out.2
new file mode 100644
index 0000000..7a1ba43
--- /dev/null
+++ b/qa/647.out.2
@@ -0,0 +1,126 @@
+QA output created by 647
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] PMCD should communicate with the mmv daemon via a pipe or a socket? [pipe] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+
+=== validate values ===
+
+mmv.debug PMID: 70.0.1 [Debug flag]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+See pmdbg(1). pmstore into this metric to change the debug value.
+ value 0
+
+mmv.reload PMID: 70.0.0 [Control maps reloading]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+Writing anything other then 0 to this metric will result in
+re-reading directory and re-mapping files.
+ value 0
+
+mmv.test.counter PMID: 70.1.1 [test counter metric]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Yes, this is a test counter metric
+ value 41
+
+mmv.test.discrete PMID: 70.1.2 [test discrete metric]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+Yes, this is a test discrete metric
+ value 42
+
+mmv.test.indom PMID: 70.1.3 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 32-bit unsigned int InDom: 70.2049 0x11800801
+ Semantics: instant Units: count
+Full Help: Error: One-line or help text is not available
+ inst [0 or "zero"] value 43
+ inst [1 or "hero"] value 0
+
+mmv.test.interval PMID: 70.1.4 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 64-bit int InDom: 70.2050 0x11800802
+ Semantics: counter Units: microsec
+Full Help: Error: One-line or help text is not available
+ inst [0 or "bird"] value 0
+ inst [1 or "tree"] value 0
+ inst [2 or "eggs"] value USEC
+
+mmv.test.string PMID: 70.1.5 One-line Help: Error: One-line or help text is not available
+
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Full Help: Error: One-line or help text is not available
+ value "g'day world"
+
+mmv.test.strings PMID: 70.1.6 [test string metrics]
+ Data Type: string InDom: 70.2049 0x11800801
+ Semantics: instant Units: none
+Help:
+Yes, this is a test string metric with instances
+ inst [0 or "zero"] value "00oo00"
+ inst [1 or "hero"] value ""
+
+=== validate metrics ===
+
+mmv.debug PMID: 70.0.1 [Debug flag]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+See pmdbg(1). pmstore into this metric to change the debug value.
+ value 0
+
+mmv.reload PMID: 70.0.0 [Control maps reloading]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+Writing anything other then 0 to this metric will result in
+re-reading directory and re-mapping files.
+ value 0
+
+mmv.test.noinit PMID: 70.1.1 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Full Help: Error: One-line or help text is not available
+ value 42
+
+=== remove mmv agent ===
+Culling the Performance Metrics Name Space ...
+mmv ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check mmv metrics have gone away ... OK
+
+=== mmv agent re-installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 3 metrics and 3 values
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/648 b/qa/648
new file mode 100755
index 0000000..1505497
--- /dev/null
+++ b/qa/648
@@ -0,0 +1,118 @@
+#! /bin/sh
+# PCP QA Test No. 648
+# Extended testing of multi-file MMV instances
+#
+# Copyright (c) 2009 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+username=`id -u -n`
+done_clean=false
+MMV_STATS_DIR="$PCP_TMP_DIR/mmv"
+
+# for QA the default install for mmv PMDA is as a dso, not a daemon
+#
+cat <<End-of-File >$tmp.input
+b
+dso
+End-of-File
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ if [ -f $tmp.pmcd.conf ]
+ then
+ $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ fi
+ if [ -d $tmp.mmv.dir ]
+ then
+ $sudo rm -fr "$MMV_STATS_DIR"
+ $sudo mv $tmp.mmv.dir $MMV_STATS_DIR
+ fi
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ rm -f $tmp.*
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo mmv >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+home="$PCP_PMDAS_DIR"
+iam=mmv
+cd "$home/$iam"
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH "$tmp.pmcd.conf"
+# move the MMV directory to restore contents later.
+[ -d $MMV_STATS_DIR ] && $sudo mv -f $MMV_STATS_DIR $tmp.mmv.dir
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+# create a directory we can write and pcp group can read
+$sudo mkdir -m 755 "$MMV_STATS_DIR"
+$sudo chown $username "$MMV_STATS_DIR"
+$sudo chgrp pcp "$MMV_STATS_DIR"
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+
+$here/src/mmv_instances cats
+$here/src/mmv_instances dogs
+$here/src/mmv_instances mice
+
+echo
+echo "=== validate values ==="
+if pminfo $iam | LC_COLLATE=POSIX sort >$tmp.names
+then
+ for name in `cat $tmp.names`
+ do
+ pminfo -fdmtT $name | LC_COLLATE=POSIX sort -n
+ done
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+status=0
+exit
diff --git a/qa/648.out.1 b/qa/648.out.1
new file mode 100644
index 0000000..5bcc882
--- /dev/null
+++ b/qa/648.out.1
@@ -0,0 +1,57 @@
+QA output created by 648
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] PMCD should communicate with the mmv daemon via a pipe or a socket? [pipe] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+
+=== validate values ===
+
+ Data Type: 32-bit unsigned int InDom: 70.860161 0x118d2001
+ Semantics: discrete Units: none
+ inst [0 or "Fido"] value 0
+ inst [1 or "Brutus"] value 1
+ inst [10 or "Tom"] value 10
+ inst [20 or "Jerry"] value 20
+Help:
+Tags associated with each animal we have found
+mmv.animals.tag PMID: 70.420.33 [Animal tag identifiers]
+
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 0
+Help:
+See pmdbg(1). pmstore into this metric to change the debug value.
+mmv.debug PMID: 70.0.1 [Debug flag]
+
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 0
+Help:
+Writing anything other then 0 to this metric will result in
+mmv.reload PMID: 70.0.0 [Control maps reloading]
+re-reading directory and re-mapping files.
+
+=== remove mmv agent ===
+Culling the Performance Metrics Name Space ...
+mmv ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check mmv metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/648.out.2 b/qa/648.out.2
new file mode 100644
index 0000000..4aa8ec6
--- /dev/null
+++ b/qa/648.out.2
@@ -0,0 +1,52 @@
+QA output created by 648
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] PMCD should communicate with the mmv daemon via a pipe or a socket? [pipe] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+
+=== validate values ===
+
+ Data Type: 32-bit unsigned int InDom: 70.860161 0x118d2001
+ Semantics: discrete Units: none
+ inst [0 or "Fido"] value 0
+ inst [1 or "Brutus"] value 1
+ inst [10 or "Tom"] value 10
+ inst [20 or "Jerry"] value 20
+Help:
+Tags associated with each animal we have found
+mmv.animals.tag PMID: 70.420.33 [Animal tag identifiers]
+
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 0
+Help:
+See pmdbg(1). pmstore into this metric to change the debug value.
+mmv.debug PMID: 70.0.1 [Debug flag]
+
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+ value 0
+Help:
+Writing anything other then 0 to this metric will result in
+mmv.reload PMID: 70.0.0 [Control maps reloading]
+re-reading directory and re-mapping files.
+
+=== remove mmv agent ===
+Culling the Performance Metrics Name Space ...
+mmv ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check mmv metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/649 b/qa/649
new file mode 100755
index 0000000..acd5329
--- /dev/null
+++ b/qa/649
@@ -0,0 +1,129 @@
+#! /bin/sh
+# PCP QA Test No. 649
+# Testing MMV client flags behaviour
+#
+# Copyright (c) 2010 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1
+username=`id -u -n`
+done_clean=false
+MMV_STATS_DIR="$PCP_TMP_DIR/mmv"
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ if [ -f $tmp.pmcd.conf ]
+ then
+ $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ fi
+ if [ -d $tmp.mmv.dir ]
+ then
+ $sudo rm -fr "$MMV_STATS_DIR"
+ $sudo mv $tmp.mmv.dir $MMV_STATS_DIR
+ fi
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ rm -f $tmp.*
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo mmv >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+# for QA the default install for mmv PMDA is as a dso, not a daemon
+#
+cat <<End-of-File >$tmp.input
+b
+dso
+End-of-File
+
+_filter()
+{
+ sed \
+ -e '/^mmv.test.interval/d' \
+ -e '/^mmv.interval/d' \
+ #
+}
+
+# real QA starts here
+home="$PCP_PMDAS_DIR"
+iam=mmv
+cd "$home/$iam"
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH "$tmp.pmcd.conf"
+# move the MMV directory to restore contents later.
+[ -d $MMV_STATS_DIR ] && $sudo mv -f $MMV_STATS_DIR $tmp.mmv.dir
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+# create a directory we can write and pcp group can read
+$sudo mkdir -m 755 "$MMV_STATS_DIR"
+$sudo chown $username "$MMV_STATS_DIR"
+$sudo chgrp pcp "$MMV_STATS_DIR"
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+
+$here/src/mmv_genstats
+
+echo
+echo "=== Listing with a valid process and with prefix ==="
+$here/src/mmv_poke -p $$ -f process "$MMV_STATS_DIR/test"
+pmprobe -v mmv | _filter
+
+echo "=== Listing with a valid process and without prefix ==="
+$here/src/mmv_poke -p $$ -f noprefix "$MMV_STATS_DIR/test"
+pmprobe -v mmv | _filter
+
+echo "=== Listing without a valid process ==="
+$here/src/mmv_poke -p 4294967295 -f process "$MMV_STATS_DIR/test"
+pmprobe -v mmv | _filter
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+echo
+echo "=== $iam agent re-installation ==="
+$sudo ./Install <$tmp.input >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+
+status=0
+exit
diff --git a/qa/649.out.1 b/qa/649.out.1
new file mode 100644
index 0000000..f345ac1
--- /dev/null
+++ b/qa/649.out.1
@@ -0,0 +1,69 @@
+QA output created by 649
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] PMCD should communicate with the mmv daemon via a pipe or a socket? [pipe] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+
+=== Listing with a valid process and with prefix ===
+mmv.test.strings 2 "00oo00" ""
+mmv.test.string 1 "g'day world"
+mmv.test.indom 2 43 0
+mmv.test.discrete 1 42
+mmv.test.counter 1 41
+mmv.debug 1 0
+mmv.reload 1 0
+=== Listing with a valid process and without prefix ===
+mmv.strings 2 "00oo00" ""
+mmv.string 1 "g'day world"
+mmv.indom 2 43 0
+mmv.discrete 1 42
+mmv.counter 1 41
+mmv.debug 1 0
+mmv.reload 1 0
+=== Listing without a valid process ===
+mmv.debug 1 0
+mmv.reload 1 0
+
+=== remove mmv agent ===
+Culling the Performance Metrics Name Space ...
+mmv ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check mmv metrics have gone away ... OK
+
+=== mmv agent re-installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] Updating the Performance Metrics Name Space (PMNS) ...
+Compiled PMNS contains
+ NNN hash table entries
+ NNN leaf nodes
+ NNN non-leaf nodes
+ NNN bytes of symbol table
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/649.out.2 b/qa/649.out.2
new file mode 100644
index 0000000..4d36213
--- /dev/null
+++ b/qa/649.out.2
@@ -0,0 +1,59 @@
+QA output created by 649
+
+=== mmv agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] PMCD should communicate with the mmv daemon via a pipe or a socket? [pipe] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+
+=== Listing with a valid process and with prefix ===
+mmv.test.strings 2 "00oo00" ""
+mmv.test.string 1 "g'day world"
+mmv.test.indom 2 43 0
+mmv.test.discrete 1 42
+mmv.test.counter 1 41
+mmv.debug 1 0
+mmv.reload 1 0
+=== Listing with a valid process and without prefix ===
+mmv.strings 2 "00oo00" ""
+mmv.string 1 "g'day world"
+mmv.indom 2 43 0
+mmv.discrete 1 42
+mmv.counter 1 41
+mmv.debug 1 0
+mmv.reload 1 0
+=== Listing without a valid process ===
+mmv.debug 1 0
+mmv.reload 1 0
+
+=== remove mmv agent ===
+Culling the Performance Metrics Name Space ...
+mmv ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check mmv metrics have gone away ... OK
+
+=== mmv agent re-installation ===
+You will need to choose an appropriate configuration for installation of
+the "mmv" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install mmv as a daemon or dso agent? [daemon] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check mmv metrics have appeared ... 2 metrics and 2 values
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/650 b/qa/650
new file mode 100755
index 0000000..61e5d39
--- /dev/null
+++ b/qa/650
@@ -0,0 +1,107 @@
+#! /bin/sh
+# PCP QA Test No. 650
+# pmlogger configs having PMIDs with multiple metric names
+#
+# Copyright (c) 2010 Aconex. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ logger_pid=$1
+
+ sed \
+ -e '/Performance metrics from host /s/ host .*/ host .../' \
+ -e '/commencing/d' \
+ -e '/ending/d' \
+ -e '/^\[[0-9]* bytes]/d' \
+ -e '/value /{
+s/value [0-9][0-9]*/value INTEGER/
+}' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+ -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
+ -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
+ -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
+ -e '/pmcd.pmlogger.archive/s/value ".*/value "PATH"/' \
+ | $PCP_AWK_PROG '
+$1 == "TIMESTAMP" && NF == 4 { print "TIMESTAMP 0 OFFSET OFFSET"; next }
+/^InDom: 2.3/ { print; skipi = 1; next }
+skipi == 1 { print "TIMESTAMP <some> instances"; skipi = 2; next }
+skipi != 0 && $1 == "InDom:" { skipi = 0 }
+skipi == 2 { print " ..."; skipi = 3; next }
+skipi == 3 { next }
+$1 == "TIMESTAMP" && $2 == "2.4.1" { print; skipv = 1; next }
+skipv != 0 && NF == 0 { skipv = 0 }
+skipv == 1 { print " <some values>"; skipv = 2; next }
+skipv == 2 { next }
+ { print }' \
+ | src/hex2nbo
+}
+
+# real QA test starts here
+
+echo "Test case - one metric, remapped ID"
+rm -f $tmp.log
+cat <<End-of-File | pmlogger -s 5 -l $tmp.log $tmp.1 &
+log advisory on 200 msec {
+ sample.secret.foo.bar.max.redirect
+}
+End-of-File
+wait
+pid=$!
+echo "= metric names recorded"
+pminfo -a $tmp.1
+echo "= archive contents..."
+pmdumplog -a $tmp.1 | _filter $pid
+echo "= pmlogger log"
+_filter_pmlogger_log <$tmp.log
+
+echo "Test case - two metric names, common PMID, one group"
+rm -f $tmp.log
+cat <<End-of-File | pmlogger -s 5 -l $tmp.log $tmp.2 &
+log advisory on 200 msec {
+ sample.secret.foo.bar.max.redirect
+ pmcd.agent.status
+}
+End-of-File
+wait
+pid=$!
+echo "= metric names recorded"
+pminfo -a $tmp.2
+echo "= archive contents..."
+pmdumplog -a $tmp.2 | _filter $pid
+echo "= pmlogger log"
+_filter_pmlogger_log <$tmp.log
+
+echo "Test case - two metric names, common PMID, two groups"
+rm -f $tmp.log
+cat <<End-of-File | pmlogger -s 5 -l $tmp.log $tmp.3 &
+log advisory on 200 msec {
+ sample.secret.foo.bar.max.redirect
+}
+log advisory on 100 msec {
+ pmcd.agent.status
+}
+End-of-File
+wait
+pid=$!
+echo "= metric names recorded"
+pminfo -a $tmp.3
+echo "= archive contents..."
+pmdumplog -a $tmp.3 | _filter $pid
+echo "= pmlogger log"
+_filter_pmlogger_log <$tmp.log
+
+# success, all done
+exit
diff --git a/qa/650.out b/qa/650.out
new file mode 100644
index 0000000..a92e0f1
--- /dev/null
+++ b/qa/650.out
@@ -0,0 +1,198 @@
+QA output created by 650
+Test case - one metric, remapped ID
+= metric names recorded
+sample.secret.foo.bar.max.redirect
+pmcd.pmlogger.archive
+pmcd.pmlogger.port
+pmcd.pmlogger.host
+= archive contents...
+Log Label (Log Format Version 2)
+Performance metrics from host ...
+
+Descriptions for Metrics in the Log ...
+PMID: 2.4.1 (sample.secret.foo.bar.max.redirect)
+ Data Type: 32-bit int InDom: 2.3 0x800003
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 2.3
+TIMESTAMP <some> instances
+ ...
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 2.4.1 (sample.secret.foo.bar.max.redirect):
+ <some values>
+
+TIMESTAMP 2.4.1 (sample.secret.foo.bar.max.redirect):
+ <some values>
+
+TIMESTAMP 2.4.1 (sample.secret.foo.bar.max.redirect):
+ <some values>
+
+TIMESTAMP 2.4.1 (sample.secret.foo.bar.max.redirect):
+ <some values>
+
+TIMESTAMP 2.4.1 (sample.secret.foo.bar.max.redirect):
+ <some values>
+= pmlogger log
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Test case - two metric names, common PMID, one group
+= metric names recorded
+sample.secret.foo.bar.max.redirect
+pmcd.agent.status
+pmcd.pmlogger.archive
+pmcd.pmlogger.port
+pmcd.pmlogger.host
+= archive contents...
+Log Label (Log Format Version 2)
+Performance metrics from host ...
+
+Descriptions for Metrics in the Log ...
+PMID: 2.4.1 (pmcd.agent.status)
+ Data Type: 32-bit int InDom: 2.3 0x800003
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 2.3
+TIMESTAMP <some> instances
+ ...
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+= pmlogger log
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
+Test case - two metric names, common PMID, two groups
+= metric names recorded
+sample.secret.foo.bar.max.redirect
+pmcd.agent.status
+pmcd.pmlogger.archive
+pmcd.pmlogger.port
+pmcd.pmlogger.host
+= archive contents...
+Log Label (Log Format Version 2)
+Performance metrics from host ...
+
+Descriptions for Metrics in the Log ...
+PMID: 2.4.1 (pmcd.agent.status)
+ Data Type: 32-bit int InDom: 2.3 0x800003
+ Semantics: discrete Units: none
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 2.3
+TIMESTAMP <some> instances
+ ...
+InDom: 2.1
+TIMESTAMP 1 instances
+ LOGGER_PID or "LOGGER_PID"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+TIMESTAMP 0 OFFSET OFFSET
+
+TIMESTAMP 2.3.3 (pmcd.pmlogger.host): inst [LOGGER_PID or "LOGGER_PID"] value "HOST"
+ 2.3.0 (pmcd.pmlogger.port): inst [LOGGER_PID or "LOGGER_PID"] value PORT
+ 2.3.2 (pmcd.pmlogger.archive): inst [LOGGER_PID or "LOGGER_PID"] value "PATH"
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+
+TIMESTAMP 2.4.1 (pmcd.agent.status):
+ <some values>
+= pmlogger log
+Log for pmlogger on HOST started DATE
+
+Config parsed
+Starting logger for host "HOST"
+Archive basename: ARCHIVE
+pmlogger: Sample limit reached, exiting
+
+Log finished DATE
diff --git a/qa/651 b/qa/651
new file mode 100755
index 0000000..e1de662
--- /dev/null
+++ b/qa/651
@@ -0,0 +1,98 @@
+#! /bin/sh
+# PCP QA Test No. 651
+# basic pmproxy functionality
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ -x $PCP_BINADM_DIR/pmproxy ] || \
+ _notrun "need $PCP_BINADM_DIR/pmproxy"
+
+hostname=`_get_fqdn`
+[ "$hostname" = "localhost" -o "$hostname" = "localhost.localdomain" ] && \
+ _notrun "need sensible setup, not simply hostname => localhost"
+
+# for newer versions, we default to local sockets with different
+# access controls. dodge that, and test the usual pmproxy path.
+target=""
+test $PCP_VER -ge 3803 && target="-h $hostname"
+
+_filter()
+{
+ sed \
+ -e "s/$hostname/MYHOST/" \
+ -e "s/`hostname`/MYHOST/" \
+ -e "s/localhost/MYHOST/" \
+ -e "s/local:/MYHOST/" \
+ -e '/hinv.ncpu/s/ 1 [0-9][0-9]*/ 1 <n>/'
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+username=`id -u -n`
+status=0 # success is the default!
+$sudo rm -rf $tmp.*
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ rm -f $tmp.*
+ $sudo $signal -a pmproxy
+}
+
+# real QA test starts here
+$sudo $signal -a pmproxy
+sleep 1
+
+export PMCD_HOST=localhost
+export PMPROXY_HOST=$hostname
+proxyargs=""
+id pcp >/dev/null 2>&1 && proxyargs="$proxyargs -U $username"
+
+echo "== pmproxy not running =="
+pmprobe $target -v sample.long.hundred 2>&1 | _filter
+
+echo
+echo "== simplest default case =="
+$PCP_BINADM_DIR/pmproxy $proxyargs
+sleep 1
+pmprobe $target -v sample.long.hundred 2>&1 | _filter
+
+echo
+echo "== simple explicit host case =="
+pmprobe -v -h localhost hinv.ncpu 2>&1 | _filter
+
+echo
+echo "== non-standard PMPROXY_PORT, expect failure =="
+export PMPROXY_PORT=94322
+pmprobe $target -v sample.long.hundred 2>&1 | _filter
+
+echo
+echo "== non-standard PMPROXY_PORT, expect success =="
+$sudo $PCP_BINADM_DIR/pmsignal -a pmproxy
+$PCP_BINADM_DIR/pmproxy $proxyargs
+sleep 1
+pmprobe $target -v sample.long.hundred 2>&1 | _filter
+
+echo
+echo "== restricted interface for connections, expect failure =="
+unset PMPROXY_PORT
+$sudo $PCP_BINADM_DIR/pmsignal -a pmproxy
+$PCP_BINADM_DIR/pmproxy -i 127.0.0.1 $proxyargs
+sleep 1
+pmprobe $target -v sample.long.hundred 2>&1 | _filter
+
+echo
+echo "== restricted interface for connections, expect success =="
+export PMPROXY_HOST=localhost
+pmprobe $target -v sample.long.hundred 2>&1 | _filter
+
+# success, all done
+exit
diff --git a/qa/651.out b/qa/651.out
new file mode 100644
index 0000000..c0c5c96
--- /dev/null
+++ b/qa/651.out
@@ -0,0 +1,21 @@
+QA output created by 651
+== pmproxy not running ==
+pmprobe: Cannot connect to PMCD on host "MYHOST": Connection refused
+
+== simplest default case ==
+sample.long.hundred 1 100
+
+== simple explicit host case ==
+hinv.ncpu 1 <n>
+
+== non-standard PMPROXY_PORT, expect failure ==
+pmprobe: Cannot connect to PMCD on host "MYHOST": Connection refused
+
+== non-standard PMPROXY_PORT, expect success ==
+sample.long.hundred 1 100
+
+== restricted interface for connections, expect failure ==
+pmprobe: Cannot connect to PMCD on host "MYHOST": Connection refused
+
+== restricted interface for connections, expect success ==
+sample.long.hundred 1 100
diff --git a/qa/652 b/qa/652
new file mode 100755
index 0000000..5b3f186
--- /dev/null
+++ b/qa/652
@@ -0,0 +1,98 @@
+#! /bin/sh
+# PCP QA Test No. 652
+# checks basic pmdasystemd functionality
+#
+# Copyright (c) 2012 Red Hat, Inc. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+if which journalctl >/dev/null 2>&1
+then
+ echo Found journalctl
+else
+ _notrun no journalctl
+fi
+
+journal_version=`journalctl --version | grep ^systemd | awk '{print $2}'`
+if [ "$journal_version" -ge 193 ]; then
+ echo Found recent enough journalctl
+else
+ _notrun journalctl too old "$journal_version"
+fi
+
+[ $PCP_VER -ge 3805 ] || _notrun "Installed pmdasystemd is too old"
+
+_cleanup()
+{
+ _restore_pmda_install $iam
+ $sudo rm -fr $tmp.dir
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_filter()
+{
+ sed \
+ -e "s,$tmp,TMPFILE,g" \
+ -e "s,$PCP_VAR_DIR,PCP_VAR_DIR,g" \
+ -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+_filter_probe()
+{
+ sed \
+ -e 's/^\(systemd.journal.count 1\) [0-9][0-9]*/\1 COUNT/g' \
+ -e 's/^\(systemd.journal.bytes 1\) [0-9][0-9]*/\1 BYTES/g'
+}
+
+_filter_events()
+{
+ fgrep 'MESSAGE=yo'
+}
+
+_filter_events_raw()
+{
+ fgrep '4d4553534147453d796f'
+}
+
+iam=systemd
+status=1 # failure is the default!
+trap "_cleanup" 0 1 2 3 15
+
+$sudo rm -fr $tmp.dir
+$sudo rm -f $tmp.* $seq.full
+
+# real QA test starts here
+_prepare_pmda_install $iam
+
+# install PMDA accepting the defaults (esp config file)
+$sudo ./Remove < /dev/null >/dev/null 2>&1
+$sudo ./Install < /dev/null >$tmp.out 2>&1
+cat $tmp.out | _filter_pmda_install | _filter
+
+echo
+echo "=== 1. scalar metrics ===" | tee -a $here/$seq.full
+pmprobe -v systemd | tee -a $here/$seq.full | _filter_probe
+
+echo | tee -a $here/$seq.full
+echo "=== 2. journald.records ===" | tee -a $here/$seq.full
+(sleep 3; logger yo) &
+pmevent -T 10 systemd.journal.records | tee -a $here/$seq.full | _filter_events
+
+echo | tee -a $here/$seq.full
+echo "=== 3. journald.records ===" | tee -a $here/$seq.full
+(sleep 3; logger yo) &
+pmevent -T 10 systemd.journal.records_raw | tee -a $here/$seq.full | _filter_events_raw
+
+# remove PMDA to ensure proper cleanup (in case it wasnt already installed beforehand)
+$sudo ./Remove < /dev/null >/dev/null 2>&1
+
+status=0
+exit
diff --git a/qa/652.out b/qa/652.out
new file mode 100644
index 0000000..cae601b
--- /dev/null
+++ b/qa/652.out
@@ -0,0 +1,35 @@
+QA output created by 652
+Found journalctl
+Found recent enough journalctl
+You will need to choose an appropriate configuration for installation of
+the "systemd" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Check systemd metrics have appeared ... 9 metrics and 4 values
+
+=== 1. scalar metrics ===
+systemd.numclients 1 1
+systemd.maxmem 1 2097152
+systemd.journal.records 0
+systemd.journal.records_raw 0
+systemd.journal.count 1 COUNT
+systemd.journal.bytes 1 BYTES
+systemd.journal.field.cursor 0
+systemd.journal.field.string 0
+systemd.journal.field.blob 0
+
+=== 2. journald.records ===
+ systemd.journal.field.string "MESSAGE=yo"
+
+=== 3. journald.records ===
+ systemd.journal.field.blob [4d4553534147453d796f]
diff --git a/qa/653 b/qa/653
new file mode 100755
index 0000000..12b5ca6
--- /dev/null
+++ b/qa/653
@@ -0,0 +1,103 @@
+#! /bin/sh
+# PCP QA Test No. 653
+# checks __pmSetProcessIdentity function in libpcp
+#
+# Copyright (c) 2012 Red Hat, Inc. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ $PCP_VER -ge 3611 ] || _notrun "Needs a more recent libpcp version"
+
+_cleanup()
+{
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+_filter_err()
+{
+ pid=$1
+
+ # [Fri Nov 23 11:04:47] username(6802)
+ sed \
+ -e 's/\[.* [0-9 ][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\]/[TIMESTAMP]/g' \
+ -e "s/$pid/PID/g"
+}
+
+_filter_out()
+{
+ uid=$1
+
+ sed \
+ -e "s,$here/src,src,g" \
+ -e "s/$uid/as local user/g"
+}
+
+_filter_ps()
+{
+ pid=$1
+ uid=$2
+
+ tee -a $seq.full | \
+ $PCP_AWK_PROG '
+NR == 1 { if ($2 != "PID") {
+ print "PID not in field 2 of ps output!"
+ exit(1)
+ }
+ if ($1 != "UID") {
+ print "UID not in field 1 of ps output!"
+ exit(1)
+ }
+ if ($8 == "CMD")
+ # Linux
+ cmd = 8
+ else if ($11 == "COMMAND")
+ # Darwin
+ cmd = 11
+ else {
+ print "CMD (or COMMAND) not in field 8 (or 11) of ps output!"
+ print
+ exit(1)
+ }
+ next
+ }
+$1 == "'$uid'" && $2 == '$pid' {
+ print "found:",$cmd,$(cmd+1),$(cmd+2),$(cmd+3),$(cmd+4)
+ exit(0)
+ }
+END { exit(1) }'
+}
+
+status=1 # failure is the default!
+username=`id -u -n` # me, myself & I
+trap "_cleanup" 0 1 2 3 15
+$sudo rm -f $tmp.* $seq.full
+
+# real QA test starts here
+echo "== failing case, should error out" | tee -a $seq.full
+$here/src/username nosuchuser >$tmp.err 2>&1 &
+pid=$!
+sleep 1 # give it a chance to start
+ps $PCP_PS_ALL_FLAGS | _filter_ps $pid nosuchuser
+$sudo $PCP_BINADM_DIR/pmsignal -a username
+wait $pid
+[ -s $tmp.err ] && cat $tmp.err | _filter_err $pid
+
+echo "== passing case, should be local user" | tee -a $seq.full
+$here/src/username $username &
+pid=$!
+sleep 1 # give it a chance to start
+ps $PCP_PS_ALL_FLAGS | _filter_ps $pid $username >$tmp.out
+$sudo $PCP_BINADM_DIR/pmsignal -a username
+wait $pid
+[ -s $tmp.out ] && cat $tmp.out | _filter_out $username
+
+status=0
+exit
diff --git a/qa/653.out b/qa/653.out
new file mode 100644
index 0000000..11236c5
--- /dev/null
+++ b/qa/653.out
@@ -0,0 +1,5 @@
+QA output created by 653
+== failing case, should error out
+[TIMESTAMP] username(PID) Critical: cannot find the nosuchuser user to switch to
+== passing case, should be local user
+found: src/username as local user
diff --git a/qa/654 b/qa/654
new file mode 100755
index 0000000..5ba2817
--- /dev/null
+++ b/qa/654
@@ -0,0 +1,53 @@
+#! /bin/sh
+# PCP QA Test No. 654
+# checks basic pmdagfs2 functionality
+# Requires GFS2 support in the kernel and gfs2-utils installed,
+# else the test will not run.
+#
+# Copyright (c) 2013 - 2014 Red Hat, Inc. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.gfs2
+
+# Attempt to set up the gfs2 pmda test enviroment
+_gfs2_filesystem_support_tests
+_debugfs_mount_tests
+
+# check for any loopback devices, cowardly abort this test if any exist
+loopcount=`$sudo losetup -a | wc -l`
+[ $loopcount -eq 0 ] || _notrun "System has loop devices already, bailing"
+
+iam=gfs2
+status=1 # failure is the default!
+trap "_cleanup" 0 1 2 3 15
+
+$sudo rm -fr $tmp.*.dir
+$sudo rm -f $tmp.* $seq.full
+touch $here/$seq.full
+
+# real QA test starts here
+_prepare_pmda_install $iam
+_install_pmda | _filter_gfs2
+_setup_gfs2_mounts
+
+echo "=== Check for successful install of pmda ===" | tee -a $here/$seq.full
+pminfo -v gfs2 > /dev/null || _fail "install failed?"
+
+echo
+echo "=== Check that the number of metrics are correct ===" | tee -a $here/$seq.full
+[ `_pmcount gfs2` -ge 316 ] || _fail "Too few metrics?"
+
+echo
+echo "=== Basic glock stats from all kernels ===" | tee -a $here/$seq.full
+pminfo -fdm gfs2.glocks | _gfs2_filter_pminfo
+
+_remove_pmda
+
+status=0
+exit
diff --git a/qa/654.out b/qa/654.out
new file mode 100644
index 0000000..66063e4
--- /dev/null
+++ b/qa/654.out
@@ -0,0 +1,58 @@
+QA output created by 654
+You will need to choose an appropriate configuration for installation of
+the "gfs2" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check gfs2 metrics have appeared ... 316 metrics and N values
+creating pseudo device 1
+creating a mount point 1
+creating device file 1
+creating a mount point 1
+mounting pseudo device 1
+creating pseudo device 0
+creating a mount point 0
+creating device file 0
+creating a mount point 0
+mounting pseudo device 0
+=== Check for successful install of pmda ===
+
+=== Check that the number of metrics are correct ===
+
+=== Basic glock stats from all kernels ===
+
+gfs2.glocks.total PMID: 115.0.0
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glocks.shared PMID: 115.0.1
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glocks.unlocked PMID: 115.0.2
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glocks.deferred PMID: 115.0.3
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glocks.exclusive PMID: 115.0.4
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
diff --git a/qa/655 b/qa/655
new file mode 100755
index 0000000..ccd0b87
--- /dev/null
+++ b/qa/655
@@ -0,0 +1,80 @@
+#! /bin/sh
+# PCP QA Test No. 655
+# checks extended pmdagfs2 functionality (gfs2_tracepoints)
+# Requires GFS2 support in the kernel and gfs2_utils installed,
+# else the test will not run.
+#
+# Copyright (c) 2013 - 2014 Red Hat, Inc. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.gfs2
+
+# Attempt to set up the gfs2 pmda test enviroment
+_gfs2_filesystem_support_tests
+_debugfs_mount_tests
+_gfs2_tracepoints_support_tests
+_setup_gfs2_tracepoints false
+
+# check for any loopback devices, cowardly abort this test if any exist
+loopcount=`$sudo losetup -a | wc -l`
+[ $loopcount -eq 0 ] || _notrun "System has loop devices already, bailing"
+
+iam=gfs2
+status=1 # failure is the default!
+trap "_cleanup $iam" 0 1 2 3 15
+
+$sudo rm -fr $tmp.*.dir
+$sudo rm -f $tmp.* $seq.full
+touch $here/$seq.full
+
+# real QA test starts here
+_prepare_pmda_install $iam
+_install_pmda | _filter_gfs2
+_setup_gfs2_mounts
+_gfs2_sysfs_support_tests
+
+cd $here
+_setup_gfs2_tracepoints true
+
+echo
+echo "=== Check for successful install of pmda ===" | tee -a $here/$seq.full
+pminfo -v gfs2 > /dev/null || _fail "install failed?"
+
+echo
+echo "=== Check gfs2 metrics for all filesystems ===" | tee -a $here/$seq.full
+pminfo -dfmtT gfs2.glstats | _gfs2_filter_pminfo
+
+echo
+echo "=== Check gfs2 metrics for all filesystems ===" | tee -a $here/$seq.full
+pminfo -dfmtT gfs2.tracepoints | _gfs2_filter_pminfo
+
+echo
+echo "=== Check gfs2 metrics for all filesystems ===" | tee -a $here/$seq.full
+pminfo -dfmtT gfs2.worst_glock | _gfs2_filter_pminfo
+
+echo
+echo "=== Check gfs2 metrics for all filesystems ===" | tee -a $here/$seq.full
+pminfo -dfmtT gfs2.control | _gfs2_filter_pminfo
+
+echo
+echo "=== check functionality of pmstore (off) ===" | tee -a $here/$seq.full
+pmstore gfs2.control.tracepoints.all 0 | sed \
+ -e 's/old value=[0-9]/OLD VALUE/'
+
+echo
+echo "=== check functionality of pmstore (on) === " | tee -a $here/$seq.full
+pmstore gfs2.control.tracepoints.all 1 | sed \
+ -e 's/old value=[0-9]/OLD VALUE/'
+
+echo
+echo "=== Removing the GFS2 PMDA ===" | tee -a $here/$seq.full
+_remove_pmda
+
+status=0
+exit
diff --git a/qa/655.out b/qa/655.out
new file mode 100644
index 0000000..be78b9c
--- /dev/null
+++ b/qa/655.out
@@ -0,0 +1,1710 @@
+QA output created by 655
+enabling gfs2 tracepoints
+You will need to choose an appropriate configuration for installation of
+the "gfs2" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check gfs2 metrics have appeared ... 316 metrics and N values
+creating pseudo device 1
+creating a mount point 1
+creating device file 1
+creating a mount point 1
+mounting pseudo device 1
+creating pseudo device 0
+creating a mount point 0
+creating device file 0
+creating a mount point 0
+mounting pseudo device 0
+enabling gfs2 tracepoints
+
+=== Check for successful install of pmda ===
+
+=== Check gfs2 metrics for all filesystems ===
+
+gfs2.glstats.total PMID: 115.2.0 [The total number of current glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Total count of the number of glocks which currently reside for filesystem on
+the given node. Data is based from /sys/kernel/debug/gfs2/<bdev>/glstats
+counting the total number of glock entries.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.trans PMID: 115.2.1 [The number of transaction glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of transaction type glocks that currently exist
+for the given filesystem. The data is recorded and counted from /sys/kernel/
+debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.inode PMID: 115.2.2 [The number of inode (metadata and data) glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of inode metadata and data type glocks that
+currently exist for the given filesystem. The data is recorded and counted from
+/sys/kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.rgrp PMID: 115.2.3 [The number of resource group metadata glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of resource group metadata type glocks that
+currently exist for the given filesystem. The data is recorded and counted from
+/sys/kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.meta PMID: 115.2.4 [The number of superblock glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of superblock type glocks that currently exist
+for the given filesystem. The data is recorded and counted from /sys/kernel/
+debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.iopen PMID: 115.2.5 [The number of inode last closer detection glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of inode last closer detection type glocks that
+currently exist for the given filesystem. The data is recorded and counted from
+/sys/kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.flock PMID: 115.2.6 [The number of flock(2) syscall glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of flock(2) syscall type glocks that currently
+exist for the given filesystem. The data is recorded and counted from /sys/
+kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.quota PMID: 115.2.8 [The number of quota operations glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of quota operations type glocks that currently
+exist for the given filesystem. The data is recorded and counted from /sys/
+kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.glstats.journal PMID: 115.2.9 [The number of journal mutex glocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The count of the current number of journal mutex type glocks that currently
+exist for the given filesystem. The data is recorded and counted from /sys/
+kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+=== Check gfs2 metrics for all filesystems ===
+
+gfs2.tracepoints.glock_state_change.total PMID: 115.3.0 [Total number of glock state]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+changes. The total number of counted glock state changes.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.null_lock PMID: 115.3.1 [Number of null_lock state]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+changes. The total number of glock state changes to the null_lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.concurrent_read PMID: 115.3.2 [Number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_read state changes. The total number of glock state changes
+to current_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.concurrent_write PMID: 115.3.3 [Number of ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_write state changes. The total number of glock state changes
+to current_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.protected_read PMID: 115.3.4 [Number of ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_read state changes. The total number of glock state changes to
+protected_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.protected_write PMID: 115.3.5 [Number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_write state changes. The total number of glock state changes to
+protected_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.exclusive PMID: 115.3.6 [Number of exclusive state]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+changes. The total number of glock state changes to exclusive state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.glocks.changed_target PMID: 115.3.7 [Number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+changed locks. The number of state changes that achieved their expected
+state change.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_state_change.glocks.missed_target PMID: 115.3.8 [Number of ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+missed locks. The number of state changes that did not achieve their
+expected state change.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_put.total PMID: 115.3.9 [Total number of glocks changed.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of glocks that have been changed.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_put.null_lock PMID: 115.3.10 [Number of released locks.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of glocks put into the null_lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_put.concurrent_read PMID: 115.3.11 [Number of glocks put]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+in concurrent_read. The number of glocks put into the concurrent_read
+state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_put.concurrent_write PMID: 115.3.12 [Number of glocks put]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+in concurrent_write. The number of glocks put into the concurrent_write
+state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_put.protected_read PMID: 115.3.13 [Number of glocks put]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+in protected_read. The number of glocks put into the protected_read
+state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_put.protected_write PMID: 115.3.14 [Number of glocks put]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+in protected_wirte. The number of glocks put into the protected_write
+state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_put.exclusive PMID: 115.3.15 [Number of glocks put]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+in exclusive. The number of glocks put into the exclusive
+state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.total PMID: 115.3.16 [Total number of lock demote requests.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of lock demotion requests.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.null_lock PMID: 115.3.17 [Number of lock demote requests to]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+null_lock. The total number of lock demotion requests to the null_lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.concurrent_read PMID: 115.3.18 [Number of lock demote requests to]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_read. The total number of lock demotion requests to the
+concurrent_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.concurrent_write PMID: 115.3.19 [Number of lock demote requests to]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_write. The total number of lock demotion requests to the
+concurrent_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.protected_read PMID: 115.3.20 [Number of lock demote requests to]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_read. The total number of lock demotion requests to the
+protected_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.protected_write PMID: 115.3.21 [Number of lock demote requests to]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_write. The total number of lock demotion requests to the
+protected_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.exclusive PMID: 115.3.22 [Number of lock demote requests to]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+exclusive. The total number of lock demotion requests to the
+exclusive state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.requested.remote PMID: 115.3.23 [Number of demote requests (remote).]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of demote requests which were requested by a remote node of
+the cluster.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.demote_rq.requested.local PMID: 115.3.24 [Number of demote requests (local).]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of demote requests which were requested by a local node of
+the cluster
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.total PMID: 115.3.25 [Total number of lock state. The total number]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+of lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.first.null_lock PMID: 115.3.26 [Number of lock state to null_lock.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of successful first time lock state to the null_lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.first.concurrent_read PMID: 115.3.27 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_read. The total number of successful first time lock state to the
+concurrent_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.first.concurrent_write PMID: 115.3.28 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_write. The total number of successful first time lock state to the
+concurrent_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.first.protected_read PMID: 115.3.29 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_read. The total number of successful first time lock state to the
+protected_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.first.protected_write PMID: 115.3.30 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_write. The total number of successful first time lock state to the
+protected_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.first.exclusive PMID: 115.3.31 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+exclusive. The total number of successful first time lock state to the
+exclusive state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.other.null_lock PMID: 115.3.32 [Number of lock state to null_lock.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of successful other time lock state to the null_lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.other.concurrent_read PMID: 115.3.33 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_read. The total number of successful other time lock state to the
+concurrent_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.other.concurrent_write PMID: 115.3.34 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+concurrent_write. The total number of successful other time lock state to the
+concurrent_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.other.protected_read PMID: 115.3.35 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_read. The total number of successful other time lock state to the
+protected_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.other.protected_write PMID: 115.3.36 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+protected_write. The total number of successful other time lock state to the
+protected_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.promote.other.exclusive PMID: 115.3.37 [Number of lock state to ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+exclusive. The total number of successful other time lock state to the
+exclusive state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.total PMID: 115.3.38 [Total numbe rof queued and dequeued]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The total number of both queued and dequeued requests.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.queue.total PMID: 115.3.39 [Total number of queued lock requests.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of queued lock requests.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.queue.null_lock PMID: 115.3.40 [Number of null_lock requests. The]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+number of lock requests to the null_lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.queue.concurrent_read PMID: 115.3.41 [Number of concurrent_read ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the concurrent_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.queue.concurrent_write PMID: 115.3.42 [Number of concurrent_write ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the concurrent_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.queue.protected_read PMID: 115.3.43 [Number of protected_read ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the protected_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.queue.protected_write PMID: 115.3.44 [Number of protected_write ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the protected_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.queue.exclusive PMID: 115.3.45 [Number of exclusive ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the exclusive state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.dequeue.total PMID: 115.3.46 [Total number of dequeued lock requests.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of dequeued lock requests.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.dequeue.null_lock PMID: 115.3.47 [Number of null_lock requests. The]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+number of lock requests to the null_lock state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.dequeue.concurrent_read PMID: 115.3.48 [Number of concurrent_read ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the concurrent_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.dequeue.concurrent_write PMID: 115.3.49 [Number of concurrent_write ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the concurrent_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.dequeue.protected_read PMID: 115.3.50 [Number of protected_read ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the protected_read state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.dequeue.protected_write PMID: 115.3.51 [Number of protected_write ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the protected_write state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_queue.dequeue.exclusive PMID: 115.3.52 [Number of exclusive ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests. The number of lock requests to the exclusive state.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.total PMID: 115.3.53 [Total number of lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of lock updates.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.trans PMID: 115.3.54 [Number of transaction lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for transaction based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.inode PMID: 115.3.55 [Number of inode lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for inode based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.rgrp PMID: 115.3.56 [Number of resource group lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for resource group based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.meta PMID: 115.3.57 [Number of metadata lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for metadata based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.iopen PMID: 115.3.58 [Number of iopen lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for iopen based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.flock PMID: 115.3.59 [Number of flock lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for flock based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.quota PMID: 115.3.60 [Number of quota lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for quota based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.glock_lock_time.journal PMID: 115.3.61 [Number of journal lock updates.]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The number of updates for journal based glocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.pin.total PMID: 115.3.62 [Total number of Pin/Unpin requests. The total]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+number of requests to pin/unpin blocks on the log.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.pin.pin_total PMID: 115.3.63 [Number of pin requests. The total number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests to pin blocks on the log.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.pin.unpin_total PMID: 115.3.64 [Number of unpin requests. The total number]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+requests to unpin blocks on the log.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.pin.longest_pinned PMID: 115.3.65 [Longest pinned. The longest pinned]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+inode or resource group log block
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.log_flush.total PMID: 115.3.66 [Total log flushes. The total number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+log flushes observed
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.log_block.total PMID: 115.3.67 [Total log blocks. The total number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+blocks placed upon the log.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.ail_flush.total PMID: 115.3.68 [Total AIL flushes. The total number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+flushes back to the AIL.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.block_alloc.total PMID: 115.3.69 [Total blocks allocated/deallocated. ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+The total number of allocated/freed blocks this call.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.block_alloc.free PMID: 115.3.70 [Freed blocks. The number of blocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+freed.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.block_alloc.used PMID: 115.3.71 [Used blocks. The number of blocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+used.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.block_alloc.dinode PMID: 115.3.72 [Dinode blocks. The number of blocks]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+used for dinode.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.block_alloc.unlinked PMID: 115.3.73 [Unlinked blocks. The number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+unlinked blocks.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.bmap.total PMID: 115.3.74 [Total number of bmap allocations. The total]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+number of bmap allocations.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.bmap.create PMID: 115.3.75 [Number of create bmap allocations. The number]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+of create bmap allocations.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.bmap.nocreate PMID: 115.3.76 [Number of nocreate bmap allocations. The]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+number of nocreate bmap allocations.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.rs.total PMID: 115.3.77 [Total multi-block allocations. The total number]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+of multi-block allocations.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.rs.del PMID: 115.3.78 [Number of resource group delete. The total number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+resource group delete calls.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.rs.tdel PMID: 115.3.79 [Number of resource group tree delete. The total number]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+of resource group tree delete calls.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.rs.ins PMID: 115.3.80 [Number of resource group insert. The total number of]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+resource group insert calls.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+gfs2.tracepoints.rs.clm PMID: 115.3.81 [Number of resource group claims. The total number of ]
+ Data Type: 64-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+resource group claim calls.
+ inst [0 or "loopN"] value NUMBER
+ inst [1 or "loopN"] value NUMBER
+
+=== Check gfs2 metrics for all filesystems ===
+
+gfs2.worst_glock.tenth.queue PMID: 115.4.99 [Count of gfs2_holder queues for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.dlm PMID: 115.4.98 [Count of Distributed Lock Manager requests for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.sirtvar PMID: 115.4.97 [Smoothed Inter-request variance for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.sirt PMID: 115.4.96 [Smoothed Inter-request time for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.srttvarb PMID: 115.4.95 [Blocking smoothed variance for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.srttb PMID: 115.4.94 [Blocking smoothed round trip time for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.srttvar PMID: 115.4.93 [Non-blocking smoothed variance for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.srtt PMID: 115.4.92 [Non-blocking smoothed round trip time for tenth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.number PMID: 115.4.91 [Inode or resource group number for tenth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.tenth.lock_type PMID: 115.4.90 [Glock type number for tenth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for tenth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.queue PMID: 115.4.89 [Count of gfs2_holder queues for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.dlm PMID: 115.4.88 [Count of Distributed Lock Manager requests for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.sirtvar PMID: 115.4.87 [Smoothed Inter-request variance for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.sirt PMID: 115.4.86 [Smoothed Inter-request time for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.srttvarb PMID: 115.4.85 [Blocking smoothed variance for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.srttb PMID: 115.4.84 [Blocking smoothed round trip time for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.srttvar PMID: 115.4.83 [Non-blocking smoothed variance for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.srtt PMID: 115.4.82 [Non-blocking smoothed round trip time for ninth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.number PMID: 115.4.81 [Inode or resource group number for ninth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.ninth.lock_type PMID: 115.4.80 [Glock type number for ninth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for ninth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.queue PMID: 115.4.79 [Count of gfs2_holder queues for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.dlm PMID: 115.4.78 [Count of Distributed Lock Manager requests for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.sirtvar PMID: 115.4.77 [Smoothed Inter-request variance for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.sirt PMID: 115.4.76 [Smoothed Inter-request time for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.srttvarb PMID: 115.4.75 [Blocking smoothed variance for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.srttb PMID: 115.4.74 [Blocking smoothed round trip time for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.srttvar PMID: 115.4.73 [Non-blocking smoothed variance for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.srtt PMID: 115.4.72 [Non-blocking smoothed round trip time for eighth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.number PMID: 115.4.71 [Inode or resource group number for eighth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.eighth.lock_type PMID: 115.4.70 [Glock type number for eighth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for eighth worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.queue PMID: 115.4.69 [Count of gfs2_holder queues for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.dlm PMID: 115.4.68 [Count of Distributed Lock Manager requests for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.sirtvar PMID: 115.4.67 [Smoothed Inter-request variance for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.sirt PMID: 115.4.66 [Smoothed Inter-request time for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.srttvarb PMID: 115.4.65 [Blocking smoothed variance for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.srttb PMID: 115.4.64 [Blocking smoothed round trip time for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.srttvar PMID: 115.4.63 [Non-blocking smoothed variance for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.srtt PMID: 115.4.62 [Non-blocking smoothed round trip time for seventh worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.number PMID: 115.4.61 [Inode or resource group number for seventh worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.seventh.lock_type PMID: 115.4.60 [Glock type number for seventh worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for seventh worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.queue PMID: 115.4.59 [Count of gfs2_holder queues for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.dlm PMID: 115.4.58 [Count of Distributed Lock Manager requests for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.sirtvar PMID: 115.4.57 [Smoothed Inter-request variance for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.sirt PMID: 115.4.56 [Smoothed Inter-request time for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.srttvarb PMID: 115.4.55 [Blocking smoothed variance for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.srttb PMID: 115.4.54 [Blocking smoothed round trip time for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.srttvar PMID: 115.4.53 [Non-blocking smoothed variance for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.srtt PMID: 115.4.52 [Non-blocking smoothed round trip time for sixth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.number PMID: 115.4.51 [Inode or resource group number for sixth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.sixth.lock_type PMID: 115.4.50 [Glock type number for sixth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for sixth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.queue PMID: 115.4.49 [Count of gfs2_holder queues for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.dlm PMID: 115.4.48 [Count of Distributed Lock Manager requests for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.sirtvar PMID: 115.4.47 [Smoothed Inter-request variance for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.sirt PMID: 115.4.46 [Smoothed Inter-request time for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.srttvarb PMID: 115.4.45 [Blocking smoothed variance for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.srttb PMID: 115.4.44 [Blocking smoothed round trip time for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.srttvar PMID: 115.4.43 [Non-blocking smoothed variance for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.srtt PMID: 115.4.42 [Non-blocking smoothed round trip time for fifth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.number PMID: 115.4.41 [Inode or resource group number for fifth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fifth.lock_type PMID: 115.4.40 [Glock type number for fifth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for fifth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.queue PMID: 115.4.39 [Count of gfs2_holder queues for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.dlm PMID: 115.4.38 [Count of Distributed Lock Manager requests for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.sirtvar PMID: 115.4.37 [Smoothed Inter-request variance for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.sirt PMID: 115.4.36 [Smoothed Inter-request time for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.srttvarb PMID: 115.4.35 [Blocking smoothed variance for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.srttb PMID: 115.4.34 [Blocking smoothed round trip time for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.srttvar PMID: 115.4.33 [Non-blocking smoothed variance for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.srtt PMID: 115.4.32 [Non-blocking smoothed round trip time for fourth worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.number PMID: 115.4.31 [Inode or resource group number for fourth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.fourth.lock_type PMID: 115.4.30 [Glock type number for fourth worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for fourth worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.queue PMID: 115.4.29 [Count of gfs2_holder queues for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.dlm PMID: 115.4.28 [Count of Distributed Lock Manager requests for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.sirtvar PMID: 115.4.27 [Smoothed Inter-request variance for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.sirt PMID: 115.4.26 [Smoothed Inter-request time for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.srttvarb PMID: 115.4.25 [Blocking smoothed variance for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.srttb PMID: 115.4.24 [Blocking smoothed round trip time for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.srttvar PMID: 115.4.23 [Non-blocking smoothed variance for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.srtt PMID: 115.4.22 [Non-blocking smoothed round trip time for third worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.number PMID: 115.4.21 [Inode or resource group number for third worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.third.lock_type PMID: 115.4.20 [Glock type number for third worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for third worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.queue PMID: 115.4.19 [Count of gfs2_holder queues for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.dlm PMID: 115.4.18 [Count of Distributed Lock Manager requests for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.sirtvar PMID: 115.4.17 [Smoothed Inter-request variance for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.sirt PMID: 115.4.16 [Smoothed Inter-request time for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.srttvarb PMID: 115.4.15 [Blocking smoothed variance for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.srttb PMID: 115.4.14 [Blocking smoothed round trip time for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.srttvar PMID: 115.4.13 [Non-blocking smoothed variance for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.srtt PMID: 115.4.12 [Non-blocking smoothed round trip time for second worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.number PMID: 115.4.11 [Inode or resource group number for second worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.second.lock_type PMID: 115.4.10 [Glock type number for second worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for second worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.queue PMID: 115.4.9 [Count of gfs2_holder queues for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of gfs2_holder queues for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.dlm PMID: 115.4.8 [Count of Distributed Lock Manager requests for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Count of Distributed Lock Manager requests for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.sirtvar PMID: 115.4.7 [Smoothed Inter-request variance for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request variance for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.sirt PMID: 115.4.6 [Smoothed Inter-request time for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Smoothed Inter-request time for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.srttvarb PMID: 115.4.5 [Blocking smoothed variance for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed variance for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.srttb PMID: 115.4.4 [Blocking smoothed round trip time for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Blocking smoothed round trip time for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.srttvar PMID: 115.4.3 [Non-blocking smoothed variance for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed variance for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.srtt PMID: 115.4.2 [Non-blocking smoothed round trip time for first worst glock]
+ Data Type: 64-bit int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Non-blocking smoothed round trip time for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.number PMID: 115.4.1 [Inode or resource group number for first worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Inode or resource group number for first worst glock
+No value(s) available!
+
+gfs2.worst_glock.first.lock_type PMID: 115.4.0 [Glock type number for first worst glock]
+ Data Type: 32-bit unsigned int InDom: 115.0 0x1cc00000
+ Semantics: instant Units: count
+Help:
+Glock type number for first worst glock
+No value(s) available!
+
+=== Check gfs2 metrics for all filesystems ===
+
+gfs2.control.buffer_size_kb PMID: 115.6.14 [Sets the buffer size for trace_pipe (per cpu).]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+The size of the trace_pipe buffer can be controlled with this metrics, it
+allows the increase of the trace_pipe buffer to 128MB (131072KB) per cpu
+on the system. It is useful to increase the size of the buffer when there
+is expected to be heavy load on the file system in order to reduce the
+risk of overwritten entries in the trace_pipe before they are read (default
+value is 32MB (32768KB).
+ value NUMBER
+
+gfs2.control.global_tracing PMID: 115.6.15 [Indication whether global tracing is enabled.]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+The global tracing can be controlled using pmstore gfs2.control.global_tracing
+0 [off] or 1 [on]. This is required to be on for most of the gfs2 metrics to
+function.
+ value NUMBER
+
+gfs2.control.worst_glock PMID: 115.6.16 [Indication whether gfs2.glock_lock_time statistics ]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+are enabled. The gfs2.glock_lock_time statistics can be manually controlled
+using pmstore gfs2.control.glock_lock_time 0 [off] or 1 [on]. Setting the value
+of the metric controls the behavior of the PMDA to whether it tries to collect
+the lock_time metrics or not. The machine must have the gfs2 trace-points
+available for the glock_lock_time based metrics to function.
+ value NUMBER
+
+gfs2.control.latency PMID: 115.6.17 [Indication whether gfs2.latency statistics are enabled.]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+The gfs2.latency statistics can be manually controlled using pmstore
+gfs2.control.latency 0 [off] or 1 [on]. Setting the value of the metric
+controls the behaviour of the PMDA to whether it tries to collect the latency
+metrics or not. The machice must have the gfs2 trace-points available for the
+latency metrics to function.
+ value NUMBER
+
+gfs2.control.glock_threshold PMID: 115.6.18 [Threshold for maximum number of glocks accepted]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+per fetch. The number of glocks that will be processed and accepted over all
+ftrace read trace statistics. This number can be manually altered using pmstore
+in order to tailor the number of glocks processed. This value must be positive.
+ value NUMBER
+
+gfs2.control.tracepoints.all PMID: 115.6.0 [Indication whether glock statistics are enabled]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+The gfs2 tracepoint statistics can be manually controlled using pmstore
+gfs2.control.tracepoints.all 0 [off] or 1 [on]. Setting the value of the metric
+controls the behavior of the PMDA to whether it tries to collect from tracepoint
+metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.glock_state_change PMID: 115.6.1 [Indication whether ]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+glock_state_change glock stats are enabled. The gfs2 tracepoint statistics
+can be manually controlled using pmstore
+gfs2.control.tracepoints.glock_state_change 0 [off] or 1 [on]. Setting the
+value of the metric controls the behavior of the PMDA to whether it tries to
+collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.glock_put PMID: 115.6.2 [Indication whether glock_put glock stats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+are enabled. The gfs2 tracepoint statistics can be manually controlled using
+pmstore gfs2.control.tracepoints.glock_put 0 [off] or 1 [on]. Setting the value
+of the metric controls the behavior of the PMDA to whether it tries to collect
+from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.demote_rq PMID: 115.6.3 [Indication whether glock_demote_rq glock]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+stats are enabled. The gfs2 tracepoint statistics can be manually controlled
+using pmstore gfs2.control.tracepoints.glock_demote_rq 0 [off] or 1 [on].
+Setting the value of the metric controls the behavior of the PMDA to whether
+it tries to collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.promote PMID: 115.6.4 [Indication whether glock_promote glock stats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+are enabled. The gfs2 tracepoint statistics can be manually controlled using
+pmstore gfs2.control.tracepoints.glock_promte 0 [off] or 1 [on]. Setting the
+value of the metric controls the behavior of the PMDA to whether it tries to
+collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.glock_queue PMID: 115.6.5 [Indication whether glock_queue glock]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+stats are enabled. The gfs2 tracepoint statistics can be manually controlled
+using pmstore gfs2.control.tracepoints.glock_queue 0 [off] or 1 [on]. Setting
+the value of the metric controls the behavior of the PMDA to whether it tries
+to collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.glock_lock_time PMID: 115.6.6 [Indication whether glock_lock_time]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+glock stats are enabled. The gfs2 tracepoint statistics can be manually
+controlled using pmstore gfs2.control.tracepoints.glock_lock_time 0 [off] or 1
+[on]. Setting the value of the metric controls the behavior of the PMDA to
+whether it tries to collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.pin PMID: 115.6.7 [Indication whether pin glock stats are enabled. ]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+The gfs2 tracepoint statistics can be manually controlled using pmstore
+gfs2.control.tracepoints.pin 0 [off] or 1 [on]. Setting the value of the
+metric controls the behavior of the PMDA to whether it tries to collect from
+tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.log_flush PMID: 115.6.8 [Indication whether log_flush glock stats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+are enabled. The gfs2 tracepoint statistics can be manually controlled using
+pmstore gfs2.control.tracepoints.log_flush 0 [off] or 1 [on]. Setting the
+value of the metric controls the behavior of the PMDA to whether it tries to
+collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.log_blocks PMID: 115.6.9 [Indication whether log_blocks glock stats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+are enabled. The gfs2 tracepoint statistics can be manually controlled using
+pmstore gfs2.control.tracepoints.log_blocks 0 [off] or 1 [on]. Setting the
+value of the metric controls the behavior of the PMDA to whether it tries to
+collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.ail_flush PMID: 115.6.10 [Indication whether ail_flush glock stats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+are enabled. The gfs2 tracepoint statistics can be manually controlled using
+pmstore gfs2.control.tracepoints.ail_flush 0 [off] or 1 [on]. Setting the value
+of the metric controls the behavior of the PMDA to whether it tries to collect
+from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.block_alloc PMID: 115.6.11 [Indication whether block_alloc glock]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+stats are enabled. The gfs2 tracepoint statistics can be manually controlled
+using pmstore gfs2.control.tracepoints.block_alloc 0 [off] or 1 [on]. Setting
+the value of the metric controls the behavior of the PMDA to whether it tries
+to collect from tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.bmap PMID: 115.6.12 [Indication whether bmap glock stats are enabled.]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+The gfs2 tracepoint statistics can be manually controlled using pmstore
+gfs2.control.tracepoints.bmap 0 [off] or 1 [on]. Setting the value of the
+metric controls the behavior of the PMDA to whether it tries to collect from
+tracepoint metrics or not.
+ value NUMBER
+
+gfs2.control.tracepoints.rs PMID: 115.6.13 [Indication whether rs glock stats are enabled.]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+The gfs2 tracepoint statistics can be manually controlled using pmstore
+gfs2.control.tracepoints.rs 0 [off] or 1 [on]. Setting the value of the metric
+controls the behavior of the PMDA to whether it tries to collect from
+tracepoint metrics or not.
+ value NUMBER
+
+=== check functionality of pmstore (off) ===
+gfs2.control.tracepoints.all OLD VALUE new value=0
+
+=== check functionality of pmstore (on) ===
+gfs2.control.tracepoints.all OLD VALUE new value=1
+
+=== Removing the GFS2 PMDA ===
diff --git a/qa/660 b/qa/660
new file mode 100755
index 0000000..8ce04fc
--- /dev/null
+++ b/qa/660
@@ -0,0 +1,148 @@
+#! /bin/sh
+# PCP QA Test No. 660
+# checks basic pmwebd functionality
+#
+# Copyright (c) 2013-2014 Red Hat, Inc. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which curl >/dev/null 2>&1 || _notrun "No curl binary installed"
+echo curl ok
+# nb: wget dispreferred because of its processing of .. relative links,
+# so it's harder to stress pmwebd's base-directory-escaping logic
+
+pyscript=src/test_webapi.python
+python $pyscript --version 2>/dev/null || _notrun "python/modules missing"
+echo python ok
+
+$sudo rm -fr $tmp.dir
+$sudo rm -f $tmp.*
+rm -f $seq.full
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+username=`id -u -n`
+trap "_cleanup" 0 1 2 3 15
+
+_cleanup()
+{
+ $sudo rm -fr $tmp.dir
+ $sudo rm -f $tmp.*
+ $sudo $signal -a pmwebd >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmwebd restart >/dev/null 2>&1
+ exit $status
+}
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed -e 's,#[0-9]*,####,g' -e 's/PMWEBAPI error,.*/PMWEBAPI error, XXX/g'
+}
+
+
+unset http_proxy
+unset HTTP_PROXY
+
+$sudo $PCP_RC_DIR/pmwebd stop >/dev/null 2>&1
+$sudo $signal -a pmwebd >/dev/null 2>&1
+
+webargs="-U $username -f"
+
+echo | tee -a $seq.full
+echo "=== 1. pmwebd default startup ===" | tee -a $seq.full
+echo "$PCP_BINADM_DIR/pmwebd $webargs -l $tmp.out" >>$seq.full
+$PCP_BINADM_DIR/pmwebd $webargs -l $tmp.out 2>&1 &
+echo "pid=$!" >>$seq.full
+sleep 2 # let it start up
+
+if [ -f $tmp.out ]
+then
+ cat $tmp.out >>$seq.full
+else
+ echo "Arrgh ... pmwebd failed to start, $tmp.out not created"
+ $PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '[P]ID|[p]mwebd'
+ exit
+fi
+curl -s -S "http://localhost:44323/pmapi/context?local=ANYTHING" \
+| tee -a $seq.full \
+| awk '{print $2}'
+echo >>$seq.full
+
+if [ ! -f /etc/hosts ]
+then
+ echo "Arrgh ... cannot find /etc/hosts to determine IPv6 localhost name"
+ exit
+fi
+ipv6local=''
+for sniff in localhost6 ip6-localhost
+do
+ if sed -e '/^#/d' -e 's/$/ /' /etc/hosts | grep -q "[ ]$sniff "
+ then
+ ipv6local=$sniff
+ break
+ fi
+done
+if [ -z "$ipv6local" ]
+then
+ echo "Arrgh ... cannot determine IPv6 localhost name from /etc/hosts"
+ exit
+fi
+echo "ipv6local=$ipv6local" >>$seq.full
+
+rm -f $seq.out
+if grep -q IPv6 $tmp.out; then
+ curl -s -S "http://$ipv6local:44323/pmapi/context?local=ANYTHING" \
+ | tee -a $seq.full \
+ | awk '{print $2}'
+ echo >>$seq.full
+ # ipv6 + ipv4
+ ln $seq.out.46 $seq.out
+else
+ # ipv4 only
+ ln $seq.out.4 $seq.out
+fi
+# NB: we don't anticipate an ipv6-only host
+
+echo | tee -a $seq.full
+echo "=== 2. pmwebd exercise via python ===" | tee -a $seq.full
+# pmwebd still running in default mode
+if grep -q IPv4 $tmp.out; then
+ python $pyscript --host localhost | _filter
+fi
+if grep -q IPv6 $tmp.out; then
+ python $pyscript --host "$ipv6local" | _filter
+fi
+
+echo | tee -a $seq.full
+echo "=== 3. pmwebd security constraints, file service ===" | tee -a $seq.full
+$sudo $signal -a pmwebd >/dev/null 2>&1
+sleep 2 # let it shutdown
+
+$PCP_BINADM_DIR/pmwebd $webargs -R `pwd` -c 2222 -L -N 2>/dev/null &
+sleep 2 # let it start up
+
+# should fail due to -N
+curl -s -S "http://localhost:44323/pmapi/context?local=anything" | _filter
+echo
+# should fail due to nonexistent context#
+curl -s -S "http://localhost:44323/pmapi/2223/_fetch" | _filter
+echo
+# should fail with a different error (insufficient elements; ie pmFetch failed)
+curl -s -S "http://localhost:44323/pmapi/2222/_fetch" | _filter
+echo
+# should fail due to suspicious pmresapi path name
+curl -s -S "http://localhost:44323/../../etc/passwd" | _filter
+echo
+# should pass, feed this very script
+curl -s -S "http://localhost:44323/$seq" > $tmp.out
+diff $tmp.out $0 && echo file service ok
+
+status=0
+sleep 2
+exit
diff --git a/qa/660.out.4 b/qa/660.out.4
new file mode 100644
index 0000000..4479ef0
--- /dev/null
+++ b/qa/660.out.4
@@ -0,0 +1,38 @@
+QA output created by 660
+curl ok
+python ok
+
+=== 1. pmwebd default startup ===
+"context":
+"context":
+
+=== 2. pmwebd exercise via python ===
+Received PM_CONTEXT_LOCAL ####
+Received PM_CONTEXT_HOST ####
+bad archive /dev/null response code 400
+bad archive ../etc/passwd response code 400
+bad archive ../../etc/shadow response code 400
+command NOSUCHAPI response code 400
+context NOSUCHCONTEXT response code 400
+context 0 response code 400
+non-pmwebapi response code 400
+test #### metric .* enumeration with pminfo ####
+test #### metric .* enumeration with pmwebinfo ####
+test #### metric .* enumeration match count PASS
+test #### metric .* enumeration with pminfo ####
+test #### metric .* enumeration with pmwebinfo ####
+test #### metric .* enumeration match count PASS
+test #### metric kernel.* enumeration with pminfo ####
+test #### metric kernel.* enumeration with pmwebinfo ####
+test #### metric kernel.* enumeration match count PASS
+test #### metric kernel.* enumeration with pminfo ####
+test #### metric kernel.* enumeration with pmwebinfo ####
+test #### metric kernel.* enumeration match count PASS
+context #### response code 400
+
+=== 3. pmwebd security constraints, file service ===
+PMWEBAPI error, XXX
+PMWEBAPI error, XXX
+PMWEBAPI error, XXX
+PMRESAPI error
+file service ok
diff --git a/qa/660.out.46 b/qa/660.out.46
new file mode 100644
index 0000000..ace1e22
--- /dev/null
+++ b/qa/660.out.46
@@ -0,0 +1,60 @@
+QA output created by 660
+curl ok
+python ok
+
+=== 1. pmwebd default startup ===
+"context":
+"context":
+
+=== 2. pmwebd exercise via python ===
+Received PM_CONTEXT_LOCAL ####
+Received PM_CONTEXT_HOST ####
+bad archive /dev/null response code 400
+bad archive ../etc/passwd response code 400
+bad archive ../../etc/shadow response code 400
+command NOSUCHAPI response code 400
+context NOSUCHCONTEXT response code 400
+context 0 response code 400
+non-pmwebapi response code 400
+test #### metric .* enumeration with pminfo ####
+test #### metric .* enumeration with pmwebinfo ####
+test #### metric .* enumeration match count PASS
+test #### metric .* enumeration with pminfo ####
+test #### metric .* enumeration with pmwebinfo ####
+test #### metric .* enumeration match count PASS
+test #### metric kernel.* enumeration with pminfo ####
+test #### metric kernel.* enumeration with pmwebinfo ####
+test #### metric kernel.* enumeration match count PASS
+test #### metric kernel.* enumeration with pminfo ####
+test #### metric kernel.* enumeration with pmwebinfo ####
+test #### metric kernel.* enumeration match count PASS
+context #### response code 400
+Received PM_CONTEXT_LOCAL ####
+Received PM_CONTEXT_HOST ####
+bad archive /dev/null response code 400
+bad archive ../etc/passwd response code 400
+bad archive ../../etc/shadow response code 400
+command NOSUCHAPI response code 400
+context NOSUCHCONTEXT response code 400
+context 0 response code 400
+non-pmwebapi response code 400
+test #### metric .* enumeration with pminfo ####
+test #### metric .* enumeration with pmwebinfo ####
+test #### metric .* enumeration match count PASS
+test #### metric .* enumeration with pminfo ####
+test #### metric .* enumeration with pmwebinfo ####
+test #### metric .* enumeration match count PASS
+test #### metric kernel.* enumeration with pminfo ####
+test #### metric kernel.* enumeration with pmwebinfo ####
+test #### metric kernel.* enumeration match count PASS
+test #### metric kernel.* enumeration with pminfo ####
+test #### metric kernel.* enumeration with pmwebinfo ####
+test #### metric kernel.* enumeration match count PASS
+context #### response code 400
+
+=== 3. pmwebd security constraints, file service ===
+PMWEBAPI error, XXX
+PMWEBAPI error, XXX
+PMWEBAPI error, XXX
+PMRESAPI error
+file service ok
diff --git a/qa/701 b/qa/701
new file mode 100755
index 0000000..da313c2
--- /dev/null
+++ b/qa/701
@@ -0,0 +1,26 @@
+#!/bin/sh
+# PCP QA Test No. 701
+# Exercise fix for pmlogcheck segv with certain inputs.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmlogcheck $here/src/ace_v2
+echo "Silence is golden"
+
+# success, all done
+status=0
+exit
diff --git a/qa/701.out b/qa/701.out
new file mode 100644
index 0000000..2795e30
--- /dev/null
+++ b/qa/701.out
@@ -0,0 +1,2 @@
+QA output created by 701
+Silence is golden
diff --git a/qa/702 b/qa/702
new file mode 100755
index 0000000..25ab811
--- /dev/null
+++ b/qa/702
@@ -0,0 +1,20 @@
+#!/bin/sh
+# PCP QA Test No. 702
+# Exercise python PMAPI layer - basic live host tests
+#
+# Copyright (c) 2012-2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+status=1 # failure is the default!
+$sudo rm -f $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+python $here/src/test_pcp.python >$seq.full 2>&1
+_check_unittest live $seq.full
+status=$?
+exit
diff --git a/qa/702.out b/qa/702.out
new file mode 100644
index 0000000..df2fffa
--- /dev/null
+++ b/qa/702.out
@@ -0,0 +1,2 @@
+QA output created by 702
+live - OK
diff --git a/qa/703 b/qa/703
new file mode 100755
index 0000000..cd4f70d
--- /dev/null
+++ b/qa/703
@@ -0,0 +1,119 @@
+#!/bin/sh
+# PCP QA Test No. 703
+# weblog PMDA install/remove test
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.filter
+. ./common.check
+. ./common.pcpweb
+
+[ -d $PCP_PMDAS_DIR/weblog ] || _notrun "weblog PMDA not installed"
+
+if [ $PCP_PLATFORM = solaris ]
+then
+ _notrun "weblog PMDA won't work for Solaris Apache install"
+fi
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=1 # failure is the default!
+
+_cleanup()
+{
+ _restore_state
+ rm -f $tmp.*
+ exit $status
+}
+trap _cleanup 0 1 2 3 15
+
+_pminfo_filter()
+{
+ # *.(cached|uncached|client).* might have no values available
+ sed -e '
+ /\.cached\...* No value(s) available/d
+ /\.uncached\...* No value(s) available/d
+ /\.client\...* No value(s) available/d
+ '
+}
+
+_filter()
+{
+ sed '
+ s/[ ][ ]*/ /g;
+ s/ weblog metrics / web metrics /;
+ /Updating the Performance Metrics Name /,/of symbol table/d;
+ /Check web metrics have gone away/d;
+ /^---*$/d;
+ /Culling the Performance Metrics Name/,/ done/d;
+ /make: Nothing to be done for .install./d;
+ /Installing files \.\.\./d;
+ /Removing files \.\.\./d;
+ ' | $PCP_AWK_PROG '
+skip == 1 && /^Found/ { skip = 0 }
+skip == 2 && /^A configuration file can be automatically generated/ {
+ print ""
+ print
+ skip = 0
+ next
+ }
+skip == 0 && /Do you want a default weblog PMDA installation/ {
+ print
+ skip = 1
+ next
+ }
+skip == 0 && / Server\./ { print "... some server(s) found ..."
+ skip = 2
+ next
+ }
+skip > 0 { next }
+/Check web metrics have appeared / { next }
+ { print }'
+}
+
+# real QA test starts here
+
+rm -f $seq.full
+_save_state
+_remove_pmda weblog > /dev/null
+
+echo "=== install weblog PMDA ===" | tee -a $seq.full
+_install_pmda weblog | tee -a $seq.full | _filter | $PCP_AWK_PROG '
+/Installing pmchart view/ { skip = 0; next }
+/Terminate PMDA if already installed/ { skip = 0 }
+skip == 1 { next }
+/^Found / { print "Found at least one server ..."
+ skip = 1
+ next
+ }
+ { print }'
+
+echo "=== check metrics (expect no output) ==="
+
+pminfo -v web | tee -a $seq.full | _pminfo_filter
+
+pminfo -v web > /dev/null || _fail "install failed?"
+[ `_pmcount web` -ge 69 ] || _fail "Too few metrics?"
+[ `_pmget web.config.numservers` -ge 1 ] || _fail "No servers found?"
+
+echo "=== remove weblog PMDA ==="
+_remove_pmda weblog | _filter
+
+echo
+echo "=== Checking uninstall (expect no output) ==="
+ps $PCP_PS_ALL_FLAGS | grep '[p]mdaweblog'
+pmprobe web 2>&1 | $PCP_AWK_PROG '$2 > 0 { print "Oops ...",$0 }'
+
+status=0
+exit
diff --git a/qa/703.out.1 b/qa/703.out.1
new file mode 100644
index 0000000..a6e63ac
--- /dev/null
+++ b/qa/703.out.1
@@ -0,0 +1,27 @@
+QA output created by 703
+=== install weblog PMDA ===
+You will need to choose an appropriate configuration for installation of
+the "weblog" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+The default installation of the weblog PMDA will search for known
+Web server configurations on this host and will setup the weblog
+PMDA to monitor all associated Web server log files.
+
+Otherwise, you will be prompted for the required information.
+
+Do you want a default weblog PMDA installation [y]
+Found at least one server ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 10 seconds for the weblog agent to initialize ...
+=== check metrics (expect no output) ===
+=== remove weblog PMDA ===
+Updating the PMCD control file, and notifying PMCD ...
+
+=== Checking uninstall (expect no output) ===
diff --git a/qa/703.out.2 b/qa/703.out.2
new file mode 100644
index 0000000..8a79fde
--- /dev/null
+++ b/qa/703.out.2
@@ -0,0 +1,24 @@
+QA output created by 703
+=== install weblog PMDA ===
+You will need to choose an appropriate configuration for installation of
+the "weblog" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b]
+
+The default installation of the weblog PMDA will search for known
+Web server configurations on this host and will setup the weblog
+PMDA to monitor all associated Web server log files.
+
+Otherwise, you will be prompted for the required information.
+
+Do you want a default weblog PMDA installation [y]
+Found at least one server ...
+=== check metrics (expect no output) ===
+=== remove weblog PMDA ===
+Updating the PMCD control file, and notifying PMCD ...
+
+=== Checking uninstall (expect no output) ===
diff --git a/qa/704 b/qa/704
new file mode 100755
index 0000000..67e9ccd
--- /dev/null
+++ b/qa/704
@@ -0,0 +1,52 @@
+#! /bin/sh
+# PCP QA Test No. 704
+# Exercise MMV python module (end-to-end)
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+python -c 'from pcp import mmv' 2>/dev/null
+test $? -eq 0 || _notrun "Python MMV module not available"
+
+status=1
+MMV_STATS_DIR="$PCP_TMP_DIR/mmv"
+MMV_STATS_FILE=pymmv
+
+_cleanup()
+{
+ if [ -d "$tmp.mmv.dir" ]
+ then
+ rm -fr "$MMV_STATS_DIR"
+ mv "$tmp.mmv.dir" "$MMV_STATS_DIR"
+ fi
+}
+
+_filter_pminfo()
+{
+ tee -a $here/$seq.full | sed \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA starts here
+[ -d $MMV_STATS_DIR ] && $sudo mv -f $MMV_STATS_DIR $tmp.mmv.dir
+mkdir "$MMV_STATS_DIR"
+chmod 1777 "$MMV_STATS_DIR"
+_check_agent mmv >/dev/null || _notrun "MMV agent should be setup but is not"
+
+echo "Running python test program"
+python $here/src/test_mmv.python
+echo "Checking pmdammv metrics"
+pminfo -fmdtT mmv | _filter_pminfo
+
+status=0
+exit
diff --git a/qa/704.out b/qa/704.out
new file mode 100644
index 0000000..2547dca
--- /dev/null
+++ b/qa/704.out
@@ -0,0 +1,66 @@
+QA output created by 704
+
+Running python test program
+Checking pmdammv metrics
+
+mmv.test.strings PMID: 70.42.6 [test string metrics]
+ Data Type: string InDom: 70.86017 0x11815001
+ Semantics: instant Units: none
+Help:
+Yep, string metric with instances
+ inst [0 or "zero"] value ""
+ inst [1 or "hero"] value ""
+
+mmv.test.string PMID: 70.42.5 One-line Help: Error: One-line or help text is not available
+
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Full Help: Error: One-line or help text is not available
+ value ""
+
+mmv.test.interval PMID: 70.42.4 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 64-bit int InDom: 70.86018 0x11815002
+ Semantics: counter Units: microsec
+Full Help: Error: One-line or help text is not available
+ inst [0 or "bird"] value NUMBER
+ inst [1 or "tree"] value NUMBER
+ inst [2 or "eggs"] value NUMBER
+ inst [3 or "frog"] value NUMBER
+
+mmv.test.indom PMID: 70.42.3 One-line Help: Error: One-line or help text is not available
+
+ Data Type: 32-bit unsigned int InDom: 70.86017 0x11815001
+ Semantics: discrete Units: none
+Full Help: Error: One-line or help text is not available
+ inst [0 or "zero"] value NUMBER
+ inst [1 or "hero"] value NUMBER
+
+mmv.test.instant PMID: 70.42.2 [Example instant metric]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+Yep, a test instantaneous metric
+ value NUMBER
+
+mmv.test.counter PMID: 70.42.1 [Example counter metric]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+Help:
+Yep, a test counter metric
+ value NUMBER
+
+mmv.debug PMID: 70.0.1 [Debug flag]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+See pmdbg(1). pmstore into this metric to change the debug value.
+ value NUMBER
+
+mmv.reload PMID: 70.0.0 [Control maps reloading]
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+Writing anything other then 0 to this metric will result in
+re-reading directory and re-mapping files.
+ value NUMBER
diff --git a/qa/705 b/qa/705
new file mode 100755
index 0000000..cea3a59
--- /dev/null
+++ b/qa/705
@@ -0,0 +1,32 @@
+#! /bin/sh
+# PCP QA Test No. 705
+# __pmHashWalk and __pmHashWalkCB tests
+#
+# Copyright (c) 2013 Red Hat, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3700 ] || _notrun "Installed libpcp lacks hash iterators"
+
+trap "rm -f $tmp.* $tmp; exit" 0 1 2 3 15
+
+# real QA test starts here
+echo "== callback-based state exercising"
+src/hashwalk
+
+echo "== verifying both hash walkers produce same results"
+src/hashwalk callback >$tmp.callback 2>&1
+echo callback: && cat $tmp.callback
+
+src/hashwalk linked >$tmp.linked 2>&1
+echo chained: && cat $tmp.linked
+
+diff $tmp.callback $tmp.linked
+[ $? -eq 0 ] && echo "== success"
diff --git a/qa/705.out b/qa/705.out
new file mode 100644
index 0000000..efea9bf
--- /dev/null
+++ b/qa/705.out
@@ -0,0 +1,35 @@
+QA output created by 705
+== callback-based state exercising
+adding entries
+iterating WALK_STOP
+3 => 3
+iterating WALK_NEXT
+3 => 3
+2 => 2
+1 => 1
+0 => 0
+iterating WALK_DELETE_STOP
+3 => 3
+iterating WALK_NEXT
+2 => 2
+1 => 1
+0 => 0
+iterating WALK_DELETE_NEXT
+2 => 2
+1 => 1
+0 => 0
+iterating WALK_NEXT
+== verifying both hash walkers produce same results
+callback:
+adding entries
+3 => 3
+2 => 2
+1 => 1
+0 => 0
+chained:
+adding entries
+3 => 3
+2 => 2
+1 => 1
+0 => 0
+== success
diff --git a/qa/706 b/qa/706
new file mode 100755
index 0000000..d76dc43
--- /dev/null
+++ b/qa/706
@@ -0,0 +1,54 @@
+#!/bin/sh
+# PCP QA Test No. 706
+# Interleaved pmLookupDesc() and pmFetch() across multiple PMDAs ...
+# trying to reproduce PMDA failure on www.sgi.com
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.setup
+. ./common.pcpweb
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+
+_cleanup()
+{
+ _restore_state
+ rm -f $tmp.*
+ exit $status
+}
+trap _cleanup 0 1 2 3 15
+
+# real QA test starts here
+
+_save_state
+
+for i in 1 2 3 4
+do
+ src/multifetch -s 100 >$tmp.$i 2>&1 &
+ src/multifetch -s 100 >$tmp.$i 2>&1 &
+ src/multifetch -s 100 >$tmp.$i 2>&1 &
+ src/multifetch -s 100 >$tmp.$i 2>&1 &
+done
+
+wait
+
+for i in 1 2 3 4
+do
+ echo
+ echo "Log for multifetch #$i:"
+ cat $tmp.$i
+done
+
+wait
+
+status=0
+exit
diff --git a/qa/706.out b/qa/706.out
new file mode 100644
index 0000000..3933733
--- /dev/null
+++ b/qa/706.out
@@ -0,0 +1,9 @@
+QA output created by 706
+
+Log for multifetch #1:
+
+Log for multifetch #2:
+
+Log for multifetch #3:
+
+Log for multifetch #4:
diff --git a/qa/707 b/qa/707
new file mode 100755
index 0000000..29a260b
--- /dev/null
+++ b/qa/707
@@ -0,0 +1,20 @@
+#!/bin/sh
+# PCP QA Test No. 707
+# Exercise python PMAPI layer - basic archive tests
+#
+# Copyright (c) 2012-2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+status=1 # failure is the default!
+$sudo rm -f $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+python $here/src/test_pcp.python src/pyapi.0 >$seq.full 2>&1
+_check_unittest archive $seq.full
+status=$?
+exit
diff --git a/qa/707.out b/qa/707.out
new file mode 100644
index 0000000..d27f7f9
--- /dev/null
+++ b/qa/707.out
@@ -0,0 +1,2 @@
+QA output created by 707
+archive - OK
diff --git a/qa/708 b/qa/708
new file mode 100755
index 0000000..d85c871
--- /dev/null
+++ b/qa/708
@@ -0,0 +1,26 @@
+#!/bin/sh
+# PCP QA Test No. 708
+# Exercise python PMI layer
+#
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -f $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+python $here/src/test_pmi.python $tmp.pcplog >$seq.full 2>&1
+grep OK $seq.full
+
+# success, all done
+status=$?
+exit
diff --git a/qa/708.out b/qa/708.out
new file mode 100644
index 0000000..b9dfae8
--- /dev/null
+++ b/qa/708.out
@@ -0,0 +1,2 @@
+QA output created by 708
+OK
diff --git a/qa/709 b/qa/709
new file mode 100755
index 0000000..fbbfff7
--- /dev/null
+++ b/qa/709
@@ -0,0 +1,116 @@
+#!/bin/sh
+# PCP QA Test No. 709
+# Exercise the python collectl implementation
+#
+# Copyright (c) 2012-2014, Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -fr $tmp.* $seq.full
+trap "cd $here; rm -fr $tmp.*; exit \$status" 0 1 2 3 15
+
+remove_extra_whitespace()
+{
+ sed \
+ -e 's/>>>.*<<<//g' \
+ -e 's/[0-9]/9/g' \
+ -e 's/9[9]*/9/g' \
+ -e 's/ *$//' \
+ -e '/^ *$/d' \
+ -e 's/ */ /g' \
+ -e 's/^ *//' \
+ -e 's/RECORD.*$/RECORD/' \
+ -e 's/<-*Int/<-Int/' \
+ -e 's/Int-*>/Int->/' \
+ # end
+}
+
+remove_extra_columns()
+{
+ sed \
+ -e 's/^ *//' \
+ -e 's/ [a-zA-Z0-9 ]* *$//' \
+ -e 's/^#<-*-/#<--/g' \
+ -e 's/-*->/--->/g' \
+ # end
+}
+
+# using a given metric (arg1), check that each of its instances
+# exists in output file (arg2).
+#
+check_instances()
+{
+ metric=$1
+ file=$2
+ eval set -- `pmprobe -I $metric`
+ [ $? -eq 0 ] || exit 1
+ shift # skip metric name
+ shift # skip instance count
+ while [ $# -gt 0 ]
+ do
+ instance="$1"
+ shift
+ grep -q "$instance" $file && continue
+ echo "Instance $instance of $metric is missing from $file!"
+ done
+}
+
+# real QA test starts here
+mkdir $tmp.$seq
+cd $tmp.$seq
+
+#PYCOLLECTL=pmcollectl.py # developer version
+PYCOLLECTL=pmcollectl # installed version
+args="-c 2 -i 0.1"
+$PYCOLLECTL $args -sc | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sd | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sn | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sj | remove_extra_whitespace | remove_extra_columns | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sm | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sc --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sd --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sn --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -sm --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+
+$PYCOLLECTL $args -sN > $tmp.net 2>&1
+check_instances network.interface.total.bytes $tmp.net
+
+$PYCOLLECTL $args -sD > $tmp.disk 2>&1
+check_instances disk.dev.total_bytes $tmp.disk
+
+# need a generic way to test these on any system
+# $PYCOLLECTL $args -sC | remove_extra_whitespace | tee -a $tmp.out 2>&1
+# $PYCOLLECTL $args -sJ | remove_extra_whitespace | tee -a $tmp.out 2>&1
+# $PYCOLLECTL $args -sCD | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -scd | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $args -scd --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+
+# test playback
+interval=0.1
+$PYCOLLECTL -sdDcCnNjJm -f test.pmcollectl -c10 -i $interval
+logargs="-c 2 -i $interval -p test.pmcollectl"
+$PYCOLLECTL $logargs -sd | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $logargs -sc | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $logargs -sn | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $logargs -sm | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $logargs -sd --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $logargs -sc --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $logargs -sn --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PYCOLLECTL $logargs -sm --verbose | remove_extra_whitespace | tee -a $tmp.out 2>&1
+cat $tmp.out >>$here/$seq.full
+
+eval `pmafm test.pmcollectl remove`
+
+# success, all done
+status=0
+exit
diff --git a/qa/709.out b/qa/709.out
new file mode 100644
index 0000000..dc789b2
--- /dev/null
+++ b/qa/709.out
@@ -0,0 +1,113 @@
+QA output created by 709
+#<--------CPU-------->
+#cpu sys inter ctxsw
+9 9 9 9
+9 9 9 9
+<----------Disks----------->
+KBRead Reads KBWrit Writes
+9 9 9 9
+9 9 9 9
+<----------Network---------->
+KBIn PktIn KBOut PktOut
+9 9 9 9
+9 9 9 9
+#<--Int--->
+#Cpu9
+9
+9
+#<-----------Memory----------->
+#Free Buff Cach Inac Slab Map
+9M 9M 9M 9M 9M 9M
+9M 9M 9M 9M 9M 9M
+# CPU SUMMARY (INTR, CTXSW & PROC /sec)
+#User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg9 Avg9 Avg9 RunT BlkT
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+# DISK SUMMARY (/sec)
+#KBRead RMerged Reads SizeKB KBWrite WMerged Writes SizeKB
+9 9 9 9 9 9 9 9
+9 9 9 9 9 9 9 9
+# NETWORK SUMMARY (/sec)
+# KBIn PktIn SizeIn MultI CmpI ErrsI KBOut PktOut SizeO CmpO ErrsO
+9 9 9 9 9 9 9 9 9 9 9
+9 9 9 9 9 9 9 9 9 9 9
+# MEMORY SUMMARY
+#<-------------------------------Physical Memory--------------------------------------><-----------Swap------------><-------Paging------>
+# Total Used Free Buff Cached Slab Mapped Anon Commit Locked Inact Total Used Free In Out Fault MajFt In Out
+9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9 9 9 9 9 9
+9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9 9 9 9 9 9
+#<--------CPU--------><----------Disks-----------><----------Network---------->
+#cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut
+9 9 9 9 9 9 9 9 9 9 9 9
+9 9 9 9 9 9 9 9 9 9 9 9
+### RECORD
+# CPU SUMMARY (INTR, CTXSW & PROC /sec)
+#User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg9 Avg9 Avg9 RunT BlkT
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+# DISK SUMMARY (/sec)
+#KBRead RMerged Reads SizeKB KBWrite WMerged Writes SizeKB
+9 9 9 9 9 9 9 9
+# NETWORK SUMMARY (/sec)
+# KBIn PktIn SizeIn MultI CmpI ErrsI KBOut PktOut SizeO CmpO ErrsO
+9 9 9 9 9 9 9 9 9 9 9
+### RECORD
+# CPU SUMMARY (INTR, CTXSW & PROC /sec)
+#User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg9 Avg9 Avg9 RunT BlkT
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+# DISK SUMMARY (/sec)
+#KBRead RMerged Reads SizeKB KBWrite WMerged Writes SizeKB
+9 9 9 9 9 9 9 9
+# NETWORK SUMMARY (/sec)
+# KBIn PktIn SizeIn MultI CmpI ErrsI KBOut PktOut SizeO CmpO ErrsO
+9 9 9 9 9 9 9 9 9 9 9
+#<--------CPU--------><----------Disks----------->
+#cpu sys inter ctxsw KBRead Reads KBWrit Writes
+9 9 9 9 9 9 9 9
+9 9 9 9 9 9 9 9
+### RECORD
+# CPU SUMMARY (INTR, CTXSW & PROC /sec)
+#User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg9 Avg9 Avg9 RunT BlkT
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+# DISK SUMMARY (/sec)
+#KBRead RMerged Reads SizeKB KBWrite WMerged Writes SizeKB
+9 9 9 9 9 9 9 9
+### RECORD
+# CPU SUMMARY (INTR, CTXSW & PROC /sec)
+#User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg9 Avg9 Avg9 RunT BlkT
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+# DISK SUMMARY (/sec)
+#KBRead RMerged Reads SizeKB KBWrite WMerged Writes SizeKB
+9 9 9 9 9 9 9 9
+<----------Disks----------->
+KBRead Reads KBWrit Writes
+9 9 9 9
+9 9 9 9
+#<--------CPU-------->
+#cpu sys inter ctxsw
+9 9 9 9
+9 9 9 9
+<----------Network---------->
+KBIn PktIn KBOut PktOut
+9 9 9 9
+9 9 9 9
+#<-----------Memory----------->
+#Free Buff Cach Inac Slab Map
+9M 9M 9M 9M 9M 9M
+9M 9M 9M 9M 9M 9M
+# DISK SUMMARY (/sec)
+#KBRead RMerged Reads SizeKB KBWrite WMerged Writes SizeKB
+9 9 9 9 9 9 9 9
+9 9 9 9 9 9 9 9
+# CPU SUMMARY (INTR, CTXSW & PROC /sec)
+#User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg9 Avg9 Avg9 RunT BlkT
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.9 9.9 9.9 9 9
+# NETWORK SUMMARY (/sec)
+# KBIn PktIn SizeIn MultI CmpI ErrsI KBOut PktOut SizeO CmpO ErrsO
+9 9 9 9 9 9 9 9 9 9 9
+9 9 9 9 9 9 9 9 9 9 9
+# MEMORY SUMMARY
+#<-------------------------------Physical Memory--------------------------------------><-----------Swap------------><-------Paging------>
+# Total Used Free Buff Cached Slab Mapped Anon Commit Locked Inact Total Used Free In Out Fault MajFt In Out
+9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9 9 9 9 9 9
+9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9M 9 9 9 9 9 9
diff --git a/qa/710 b/qa/710
new file mode 100755
index 0000000..6b185dd
--- /dev/null
+++ b/qa/710
@@ -0,0 +1,38 @@
+#!/bin/sh
+# PCP QA Test No. 710
+# Exercise python PMI layer using a real script
+#
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -f $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+filter_dump()
+{
+ _filter_pmdumplog | \
+ sed -e 's/value 0\.[0-9][0-9]*$/value DOUBLE/g'
+}
+
+# real QA test starts here
+python $here/src/check_import.python $tmp.pcplog >$tmp.out 2>&1
+if [ $? -eq 0 ]
+then
+ pmdumplog -a $tmp.pcplog 2>&1 | filter_dump
+else
+ cat $tmp.out
+ echo "check_import python script gave non-zero result"
+fi
+
+# success, all done
+status=$?
+exit
diff --git a/qa/710.out b/qa/710.out
new file mode 100644
index 0000000..f1ef42f
--- /dev/null
+++ b/qa/710.out
@@ -0,0 +1,33 @@
+QA output created by 710
+Log Label (Log Format Version 2)
+Performance metrics from host HOST
+ commencing DATE
+ ending DATE
+
+Descriptions for Metrics in the Log ...
+PMID: 60.2.0 (kernel.all.load)
+ Data Type: float InDom: 60.2 0xf000002
+ Semantics: instant Units: none
+PMID: 245.0.1 (hinv.ncpu)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 60.2
+TIMESTAMP 3 instances
+ 1 or "1 minute"
+ 5 or "5 minute"
+ 15 or "15 minute"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+TIMESTAMP 0 132 132
+TIMESTAMP 0 316 132
+TIMESTAMP 0 316 232
+
+[100 bytes]
+TIMESTAMP 245.0.1 (hinv.ncpu): value 42
+ 60.2.0 (kernel.all.load):
+ inst [1 or "1 minute"] value DOUBLE
+ inst [5 or "5 minute"] value DOUBLE
+ inst [15 or "15 minute"] value DOUBLE
diff --git a/qa/711 b/qa/711
new file mode 100755
index 0000000..f3f2c34
--- /dev/null
+++ b/qa/711
@@ -0,0 +1,72 @@
+#!/bin/sh
+# PCP QA Test No. 711
+#
+# Exercise sar2pcp for RH BZ 891688
+# Copyright (c) 2012 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which sadf >/dev/null 2>&1 || _notrun "sadf not installed (sysstat package)"
+[ $PCP_VER -ge 3611 ] || _notrun "Installed sar2pcp is too old"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+logcheck()
+{
+ safile="$1"
+ pcplog="$2"
+
+ # should be no errors/warnings and pcp tools should also not fail
+ pmlogsummary -z -f -a $pcplog
+ [ $? -eq 0 ] && echo "pminfo reports no issues in $safile"
+}
+
+# backwards compatibility route - silence is golden
+silence()
+{
+ safile="$1"
+ echo "sar2pcp thinks $safile is going well so far"
+ echo "pmlogsummary approved of the $safile conversion"
+}
+
+# real QA test starts here
+cd $here
+rm -f $seq.full
+
+for sadist in 891688-dash-time.xml
+do
+ safile="sadist/$sadist"
+ echo "==> Checking $safile" | tee -a $seq.full
+ pcplog=$tmp.pcplog
+ sar2pcp $safile $pcplog > $tmp.out 2>&1
+ sts=$?
+
+ # this seems to be a common sadf fail message;
+ # happens when the installed sysutils is old:
+ grep 'Invalid system activity file' $tmp.out >/dev/null
+ if [ $? -eq 0 ]
+ then
+ echo "$safile is not parsable by the installed sysutils" >>$seq.full
+ silence $safile
+ else
+ [ $sts -eq 0 ] && echo "sar2pcp thinks $safile is going well so far"
+ logcheck $safile $pcplog
+
+ # should be no warnings from perl either
+ grep 'uninitialized value' $tmp.out
+ fi
+ rm -f $tmp.pcplog.*
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/711.out b/qa/711.out
new file mode 100644
index 0000000..53d19e0
--- /dev/null
+++ b/qa/711.out
@@ -0,0 +1,12 @@
+QA output created by 711
+==> Checking sadist/891688-dash-time.xml
+sar2pcp thinks sadist/891688-dash-time.xml is going well so far
+Note: timezone set to local timezone of host "very.elastic.org" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host very.elastic.org
+ commencing Mon Dec 31 05:10:01.000 2012
+ ending Mon Dec 31 05:10:01.000 2012
+kernel.all.pswitch 1272.700 0.000 1272.700 1272.700 1 count / sec
+hinv.ncpu 1.000 0.000 1.000 1.000 1 none
+pminfo reports no issues in sadist/891688-dash-time.xml
diff --git a/qa/712 b/qa/712
new file mode 100755
index 0000000..2fd7433
--- /dev/null
+++ b/qa/712
@@ -0,0 +1,65 @@
+#!/bin/sh
+# PCP QA Test No. 712
+#
+# Exercise encrypted communications between pmcd/clients
+# Copyright (c) 2012-2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.secure
+nss_notrun_checks
+
+_cleanup()
+{
+ nss_cleanup
+
+ $sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_stop | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+
+ $sudo rm -f $tmp.*
+ $sudo rm -fr $tmp
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+# real QA test starts here
+nss_backup
+nss_setup_randomness
+
+# verify that local clients cannot establish a connection
+# without having a valid certificate database setup.
+nss_setup_collector false
+
+nss_setup_empty_userdb
+echo "checking client, no certificate at all. should fail..." | tee -a $seq.full
+export PCP_SECURE_SOCKETS=1
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PCP_SECURE_SOCKETS
+
+# verify that local clients are prompted to establish a connection
+# when a valid collectoer certificate exists but no client config.
+nss_setup_collector true $qahost $hostname
+
+nss_setup_empty_userdb
+echo "checking client, server certificate only. should prompt and fail..." | tee -a $seq.full
+export PCP_SECURE_SOCKETS=1
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PCP_SECURE_SOCKETS
+
+# make the new certificate visible to just this user
+echo "checking client, user certificate only. should pass..."
+nss_setup_empty_userdb
+nss_import_cert_userdb
+export PCP_SECURE_SOCKETS=1
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PCP_SECURE_SOCKETS
+
+# success, all done
+status=0
+exit
diff --git a/qa/712.out b/qa/712.out
new file mode 100644
index 0000000..f73194c
--- /dev/null
+++ b/qa/712.out
@@ -0,0 +1,25 @@
+QA output created by 712
+Waiting for pmcd to terminate ...
+== Creating empty certificate DB
+Start pmcd, modified $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+Checking pmcd.log for unexpected messages
+checking client, no certificate at all. should fail...
+pminfo: Cannot connect to PMCD on host "HOST": Operation not supported
+== Creating empty certificate DB
+== Creating local certificates
+== Certificate DB and local certificates created
+Start pmcd, modified $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+Checking pmcd.log for unexpected messages
+checking client, server certificate only. should prompt and fail...
+WARNING: issuer of certificate received from host HOST is not trusted.
+Do you want to accept and save this certificate locally anyway? (no)
+pminfo: Cannot connect to PMCD on host "HOST": Peer's Certificate issuer is not recognized.
+checking client, user certificate only. should pass...
+
+hinv.ncpu
+ value NUMBER
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/713 b/qa/713
new file mode 100755
index 0000000..2d12deb
--- /dev/null
+++ b/qa/713
@@ -0,0 +1,71 @@
+#!/bin/sh
+# PCP QA Test No. 713
+#
+# Exercise encrypted communications between pmproxy/clients
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.secure
+nss_notrun_checks
+
+_cleanup()
+{
+ nss_cleanup
+
+ $sudo $signal -a pmproxy >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_stop | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+
+ $sudo rm -f $tmp.*
+ $sudo rm -fr $tmp
+}
+
+status=1 # failure is the default!
+username=`id -u -n`
+signal=$PCP_BINADM_DIR/pmsignal
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+# real QA test starts here
+nss_backup
+nss_setup_randomness
+nss_setup_collector true $qahost $hostname
+
+# pmcd is now secure. next, pmproxy...
+$sudo $PCP_RC_DIR/pmproxy stop >/dev/null 2>&1
+$sudo $signal -a pmproxy >/dev/null 2>&1
+
+proxyargs="-C $PCP_SECURE_DB_METHOD$collectordb -P $collectorpw"
+id pcp >/dev/null 2>&1 && proxyargs="$proxyargs -U $username"
+$PCP_BINADM_DIR/pmproxy $proxyargs -l $tmp.log 2>&1
+echo "Checking pmproxy.log for unexpected messages" | tee -a $seq.full
+sleep 1 # allow log file creation to complete
+egrep 'Error:|Info:' $tmp.log
+cat $tmp.log >> $seq.full
+
+# verify that local clients are prompted to establish a connection
+# when a valid collectoer certificate exists but no client config.
+nss_setup_empty_userdb
+echo "checking client, server certificate only. should prompt and fail..." | tee -a $seq.full
+export PMPROXY_HOST=$hostname
+export PCP_SECURE_SOCKETS=enforce
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PMPROXY_HOST PCP_SECURE_SOCKETS
+
+# make the new certificate visible to just this user
+echo "checking client, user certificate only. should pass..."
+nss_setup_empty_userdb
+nss_import_cert_userdb
+export PMPROXY_HOST=$hostname
+export PCP_SECURE_SOCKETS=enforce
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PMPROXY_HOST PCP_SECURE_SOCKETS
+
+# success, all done
+status=0
+exit
diff --git a/qa/713.out b/qa/713.out
new file mode 100644
index 0000000..22bd824
--- /dev/null
+++ b/qa/713.out
@@ -0,0 +1,20 @@
+QA output created by 713
+Waiting for pmcd to terminate ...
+== Creating empty certificate DB
+== Creating local certificates
+== Certificate DB and local certificates created
+Start pmcd, modified $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+Checking pmcd.log for unexpected messages
+Checking pmproxy.log for unexpected messages
+checking client, server certificate only. should prompt and fail...
+WARNING: issuer of certificate received from host HOST is not trusted.
+Do you want to accept and save this certificate locally anyway? (no)
+pminfo: Cannot connect to PMCD on host "HOST": Peer's Certificate issuer is not recognized.
+checking client, user certificate only. should pass...
+
+hinv.ncpu
+ value NUMBER
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/714 b/qa/714
new file mode 100755
index 0000000..936ecaa
--- /dev/null
+++ b/qa/714
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 714
+#
+# Exercise encrypted communications between pmcd/clients
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.secure
+nss_notrun_checks
+
+_cleanup()
+{
+ nss_cleanup
+
+ $sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_stop | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+
+ $sudo rm -f $tmp.*
+ $sudo rm -fr $tmp
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+# real QA test starts here
+nss_backup
+nss_setup_randomness
+
+# verify that local clients are warned if establishing a connection
+# when an invalid collecter certificate is presented (DNS mismatch).
+nss_setup_collector true $qahost $hostname
+nss_setup_empty_userdb
+nss_import_cert_userdb
+nss_setup_collector true no.such.host no
+
+echo "checking client, bad server certificate. should fail DNS check..." | tee -a $seq.full
+export PCP_SECURE_SOCKETS=1
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PCP_SECURE_SOCKETS
+
+# success, all done
+status=0
+exit
diff --git a/qa/714.out b/qa/714.out
new file mode 100644
index 0000000..ec21319
--- /dev/null
+++ b/qa/714.out
@@ -0,0 +1,19 @@
+QA output created by 714
+Waiting for pmcd to terminate ...
+== Creating empty certificate DB
+== Creating local certificates
+== Certificate DB and local certificates created
+Start pmcd, modified $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+Checking pmcd.log for unexpected messages
+== Creating empty certificate DB
+== Creating local certificates
+== Certificate DB and local certificates created
+Start pmcd, modified $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+Checking pmcd.log for unexpected messages
+checking client, bad server certificate. should fail DNS check...
+pminfo: Cannot connect to PMCD on host "HOST": Peer's certificate has an invalid signature.
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/715 b/qa/715
new file mode 100755
index 0000000..ad98ccd
--- /dev/null
+++ b/qa/715
@@ -0,0 +1,91 @@
+#! /bin/sh
+# PCP QA Test No. 715
+# Basic checkout of the Perl pmdasimple implementation.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+rm -f $seq.out $seq.full
+if [ $PCP_VER -ge 3801 ]
+then
+ ln $seq.out.2 $seq.out || exit 1
+else
+ ln $seq.out.1 $seq.out || exit 1
+fi
+
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::PMDA module not installed"
+
+_cleanup()
+{
+ _restore_pmda_install simple
+ rm -f $tmp.*
+ exit $status
+}
+
+status=1
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_pmda_install simple
+
+echo
+echo "=== $iam agent installation ==="
+cat << End-of-File | $sudo ./Install -e >$tmp.out 2>&1
+both
+perl
+End-of-File
+# Check simple metrics have appeared ... X metrics and Y values
+_filter_pmda_install <$tmp.out
+
+check()
+{
+ iter=$1
+ name=$2
+
+ echo "fetch pmprobe #$iter - $name" | tee -a $here/$seq.full
+ pmprobe -v $iam \
+ | LC_COLLATE=POSIX sort > $tmp.pmprobe
+ cat $tmp.pmprobe >>$here/$seq.full
+
+ echo "check pmprobe #$iter - $name" | tee -a $here/$seq.full
+ cat $tmp.pmprobe \
+ | while read metric nv v1
+ do
+ if [ "$metric" = "simple.numfetch" ]
+ then
+ echo "$metric shows $nv value(s), $v1 fetches so far"
+ else
+ echo "$metric shows $nv value(s)"
+ fi
+ done
+}
+
+echo
+echo "=== fetch and check values ==="
+echo sec,min,hour > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 1 defaults
+echo sec,min > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 2 twotimes
+echo hour > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 3 onetime
+echo > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 4 notime
+
+# reset the clock back to the start state
+echo sec,min,hour > $tmp.conf && $sudo mv $tmp.conf simple.conf
+
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+status=0
+exit
diff --git a/qa/715.out.1 b/qa/715.out.1
new file mode 100644
index 0000000..cd78ce0
--- /dev/null
+++ b/qa/715.out.1
@@ -0,0 +1,53 @@
+QA output created by 715
+
+=== simple agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or perl or dso agent? [daemon] perl
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+=== fetch and check values ===
+fetch pmprobe #1 - defaults
+check pmprobe #1 - defaults
+simple.numfetch shows 1 value(s), 2 fetches so far
+simple.time.user shows 1 value(s)
+simple.time.sys shows 1 value(s)
+simple.now shows 3 value(s)
+simple.color shows 3 value(s)
+fetch pmprobe #2 - twotimes
+check pmprobe #2 - twotimes
+simple.numfetch shows 1 value(s), 3 fetches so far
+simple.time.user shows 1 value(s)
+simple.time.sys shows 1 value(s)
+simple.now shows 2 value(s)
+simple.color shows 3 value(s)
+fetch pmprobe #3 - onetime
+check pmprobe #3 - onetime
+simple.numfetch shows 1 value(s), 4 fetches so far
+simple.time.user shows 1 value(s)
+simple.time.sys shows 1 value(s)
+simple.now shows 1 value(s)
+simple.color shows 3 value(s)
+fetch pmprobe #4 - notime
+check pmprobe #4 - notime
+simple.numfetch shows 1 value(s), 5 fetches so far
+simple.time.user shows 1 value(s)
+simple.time.sys shows 1 value(s)
+simple.now shows 0 value(s)
+simple.color shows 3 value(s)
+=== remove simple agent ===
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check simple metrics have gone away ... OK
diff --git a/qa/715.out.2 b/qa/715.out.2
new file mode 100644
index 0000000..b98ed70
--- /dev/null
+++ b/qa/715.out.2
@@ -0,0 +1,53 @@
+QA output created by 715
+
+=== simple agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] both
+Install simple as a daemon or python or perl or dso agent? [daemon] perl
+Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+=== fetch and check values ===
+fetch pmprobe #1 - defaults
+check pmprobe #1 - defaults
+simple.color shows 3 value(s)
+simple.now shows 3 value(s)
+simple.numfetch shows 1 value(s), 2 fetches so far
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+fetch pmprobe #2 - twotimes
+check pmprobe #2 - twotimes
+simple.color shows 3 value(s)
+simple.now shows 2 value(s)
+simple.numfetch shows 1 value(s), 3 fetches so far
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+fetch pmprobe #3 - onetime
+check pmprobe #3 - onetime
+simple.color shows 3 value(s)
+simple.now shows 1 value(s)
+simple.numfetch shows 1 value(s), 4 fetches so far
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+fetch pmprobe #4 - notime
+check pmprobe #4 - notime
+simple.color shows 3 value(s)
+simple.now shows 0 value(s)
+simple.numfetch shows 1 value(s), 5 fetches so far
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+=== remove simple agent ===
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check simple metrics have gone away ... OK
diff --git a/qa/716 b/qa/716
new file mode 100755
index 0000000..eb3d53c
--- /dev/null
+++ b/qa/716
@@ -0,0 +1,62 @@
+#! /bin/sh
+# PCP QA Test No. 716
+# Exercise dbpmda use with the Perl implementation of pmdasimple.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::PMDA module not installed"
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3800 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e "s;$script;pmdasimple.pl;" \
+ | _filter_dumpresult
+}
+
+domain=253
+script=pmdasimple.perl
+[ -f $PCP_PMDAS_DIR/simple/$script ] || script=pmdasimple.pl
+
+# ensure help text exists
+cd "$PCP_PMDAS_DIR/simple"
+$sudo ./Install </dev/null >/dev/null 2>&1
+
+# real QA test starts here
+$sudo dbpmda -n root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/perl $script
+getdesc on
+desc simple.numfetch
+fetch simple.numfetch
+text simple.numfetch
+desc simple.color
+fetch simple.color
+text simple.color
+desc simple.now
+fetch simple.now
+text simple.now
+instance $domain.0
+text indom $domain.1
+End-of-File
+
+exit 0
diff --git a/qa/716.out.1 b/qa/716.out.1
new file mode 100644
index 0000000..1b34540
--- /dev/null
+++ b/qa/716.out.1
@@ -0,0 +1,86 @@
+QA output created by 716
+dbpmda> open pipe /usr/bin/perl pmdasimple.pl
+Start perl PMDA: /usr/bin/perl pmdasimple.pl
+dbpmda> getdesc on
+dbpmda> desc simple.numfetch
+PMID: 253.0.0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+dbpmda> fetch simple.numfetch
+PMID(s): 253.0.0
+pmResult ... numpmid: 1
+ 253.0.0 (simple.numfetch): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+dbpmda> text simple.numfetch
+PMID: 253.0.0
+[Number of pmFetch operations.]
+The cumulative number of pmFetch operations directed to the "simple"
+PMDA.
+
+This counter may be modified with pmstore(1).
+dbpmda> desc simple.color
+PMID: 253.0.1
+ Data Type: 32-bit int InDom: 253.0 0x3f400000
+ Semantics: instant Units: none
+dbpmda> fetch simple.color
+PMID(s): 253.0.1
+pmResult ... numpmid: 1
+ 253.0.1 (simple.color): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> text simple.color
+PMID: 253.0.1
+[Metrics which increment with each fetch]
+This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range NUMBER to
+255, then back to 0. The different instances have different starting
+values, namely 0 (red), 100 (green) and 200 (blue).
+
+The metric values my be altered using pmstore(1).
+dbpmda> desc simple.now
+PMID: 253.2.4
+ Data Type: 32-bit unsigned int InDom: 253.1 0x3f400001
+ Semantics: instant Units: none
+dbpmda> fetch simple.now
+PMID(s): 253.2.4
+pmResult ... numpmid: 1
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> text simple.now
+PMID: 253.2.4
+[Time of day with a configurable instance domain]
+The value reflects the current time of day through a dynamically
+reconfigurable instance domain. On each metric value fetch request,
+the agent checks to see whether the configuration file in
+$PCP_PMDAS_DIR/simple/simple.conf has been modified - if it has then
+the file is re-parsed and the instance domain for this metric is again
+constructed according to its contents.
+
+This configuration file contains a single line of comma-separated time
+tokens from this set:
+ "sec" (seconds after the minute),
+ "min" (minutes after the hour),
+ "hour" (hour since midnight).
+
+An example configuration file could be: sec,min,hour
+and in this case the simple.now metric would export values
+for the three instances "sec", "min" and "hour" corresponding
+respectively to the components seconds, minutes and hours of the
+current time of day.
+
+The instance domain reflects each token present in the file, and the
+values reflect the time at which the PMDA processes the fetch.
+dbpmda> instance 253.0
+pmInDom: 253.0
+[ 0] inst: 0 name: "red"
+[ 1] inst: 1 name: "green"
+[ 2] inst: 2 name: "blue"
+dbpmda> text indom 253.1
+pmInDom: 253.1
+[Instance domain "colour" for simple PMDA]
+Universally 3 instances, "red" (0), "green" (1) and "blue" (3).
+dbpmda>
diff --git a/qa/716.out.2 b/qa/716.out.2
new file mode 100644
index 0000000..dab99a8
--- /dev/null
+++ b/qa/716.out.2
@@ -0,0 +1,88 @@
+QA output created by 716
+dbpmda> open pipe /usr/bin/perl pmdasimple.pl
+Start perl PMDA: /usr/bin/perl pmdasimple.pl
+dbpmda> getdesc on
+dbpmda> desc simple.numfetch
+PMID: 253.0.0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+dbpmda> fetch simple.numfetch
+PMID(s): 253.0.0
+pmResult ... numpmid: 1
+ 253.0.0 (simple.numfetch): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+dbpmda> text simple.numfetch
+PMID: 253.0.0
+[Number of pmFetch operations.]
+The cumulative number of pmFetch operations directed to the "simple"
+PMDA.
+
+This counter may be modified with pmstore(1).
+dbpmda> desc simple.color
+PMID: 253.0.1
+ Data Type: 32-bit int InDom: 253.0 0x3f400000
+ Semantics: instant Units: none
+dbpmda> fetch simple.color
+PMID(s): 253.0.1
+pmResult ... numpmid: 1
+ 253.0.1 (simple.color): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> text simple.color
+PMID: 253.0.1
+[Metrics which increment with each fetch]
+This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range NUMBER to
+255, then back to 0. The different instances have different starting
+values, namely 0 (red), 100 (green) and 200 (blue).
+
+The metric values my be altered using pmstore(1).
+dbpmda> desc simple.now
+PMID: 253.2.4
+ Data Type: 32-bit unsigned int InDom: 253.1 0x3f400001
+ Semantics: instant Units: none
+dbpmda> fetch simple.now
+PMID(s): 253.2.4
+pmResult ... numpmid: 1
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> text simple.now
+PMID: 253.2.4
+[Time of day with a configurable instance domain]
+The value reflects the current time of day through a dynamically
+reconfigurable instance domain. On each metric value fetch request,
+the agent checks to see whether the configuration file in
+$PCP_PMDAS_DIR/simple/simple.conf has been modified - if it has then
+the file is re-parsed and the instance domain for this metric is again
+constructed according to its contents.
+
+This configuration file contains a single line of comma-separated time
+tokens from this set:
+ "sec" (seconds after the minute),
+ "min" (minutes after the hour),
+ "hour" (hour since midnight).
+
+An example configuration file could be: sec,min,hour
+and in this case the simple.now metric would export values
+for the three instances "sec", "min" and "hour" corresponding
+respectively to the components seconds, minutes and hours of the
+current time of day.
+
+The instance domain reflects each token present in the file, and the
+values reflect the time at which the PMDA processes the fetch.
+dbpmda> instance 253.0
+pmInDom: 253.0
+[ 0] inst: 0 name: "red"
+[ 1] inst: 1 name: "green"
+[ 2] inst: 2 name: "blue"
+dbpmda> text indom 253.1
+pmInDom: 253.1
+[Dynamic instance domain "time" for simple PMDA]
+An instance domain which is computed on-the-fly for exporting current time
+information. Refer to the help text for simple.now for a more complete
+explanation.
+dbpmda>
diff --git a/qa/717 b/qa/717
new file mode 100755
index 0000000..9a19772
--- /dev/null
+++ b/qa/717
@@ -0,0 +1,105 @@
+#! /bin/sh
+# PCP QA Test No. 717
+# Basic checkout of the Python pmdasimple implementation.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+python -c "from pcp import pmda" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "python pcp pmda module not installed"
+test -f "$PCP_PMDAS_DIR/simple/pmdasimple.python"
+[ $? -eq 0 ] || _notrun "python simple pmda not yet installed"
+
+status=1
+done_clean=false
+rm -f $seq.full
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ done_clean=true
+ fi
+ exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+iam=simple
+cd $PCP_PMDAS_DIR/$iam
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+echo
+echo "=== $iam agent installation ==="
+cat << End-of-File | $sudo ./Install >$tmp.out 2>&1
+both
+python
+End-of-File
+# Check simple metrics have appeared ... X metrics and Y values
+_filter_pmda_install <$tmp.out \
+| sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/'
+
+check()
+{
+ iter=$1
+ name=$2
+
+ echo "fetch pmprobe #$iter - $name" | tee -a $here/$seq.full
+ pmprobe -v $iam > $tmp.pmprobe
+ cat $tmp.pmprobe >>$here/$seq.full
+
+ echo "check pmprobe #$iter - $name" | tee -a $here/$seq.full
+ cat $tmp.pmprobe \
+ | while read metric nv v1
+ do
+ if [ "$metric" = "simple.numfetch" ]
+ then
+ echo "$metric shows $nv value(s), $v1 fetches so far"
+ else
+ echo "$metric shows $nv value(s)"
+ fi
+ done
+}
+
+echo
+echo "=== fetch and check values ==="
+echo sec,min,hour > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 1 defaults
+echo sec,min > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 2 twotimes
+echo hour > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 3 onetime
+echo > $tmp.conf && $sudo mv $tmp.conf simple.conf
+check 4 notime
+
+# reset the clock back to the start state
+echo sec,min,hour > $tmp.conf && $sudo mv $tmp.conf simple.conf
+
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+status=0
+exit
diff --git a/qa/717.out b/qa/717.out
new file mode 100644
index 0000000..7218177
--- /dev/null
+++ b/qa/717.out
@@ -0,0 +1,54 @@
+QA output created by 717
+
+=== simple agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "simple" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install simple as a daemon or python or perl or dso agent? [daemon] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check simple metrics have appeared ... 5 metrics and 9 values
+
+=== fetch and check values ===
+fetch pmprobe #1 - defaults
+check pmprobe #1 - defaults
+simple.now shows 3 value(s)
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+simple.color shows 3 value(s)
+simple.numfetch shows 1 value(s), 2 fetches so far
+fetch pmprobe #2 - twotimes
+check pmprobe #2 - twotimes
+simple.now shows 2 value(s)
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+simple.color shows 3 value(s)
+simple.numfetch shows 1 value(s), 3 fetches so far
+fetch pmprobe #3 - onetime
+check pmprobe #3 - onetime
+simple.now shows 1 value(s)
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+simple.color shows 3 value(s)
+simple.numfetch shows 1 value(s), 4 fetches so far
+fetch pmprobe #4 - notime
+check pmprobe #4 - notime
+simple.now shows 0 value(s)
+simple.time.sys shows 1 value(s)
+simple.time.user shows 1 value(s)
+simple.color shows 3 value(s)
+simple.numfetch shows 1 value(s), 5 fetches so far
+=== remove simple agent ===
+Culling the Performance Metrics Name Space ...
+simple ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check simple metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/718 b/qa/718
new file mode 100755
index 0000000..48b4fef
--- /dev/null
+++ b/qa/718
@@ -0,0 +1,52 @@
+#! /bin/sh
+# PCP QA Test No. 718
+# Exercise dbpmda use with the Python implementation of pmdasimple.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+python -c "from pcp import pmda" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "python pcp pmda module not installed"
+test -f "$PCP_PMDAS_DIR/simple/pmdasimple.python"
+[ $? -eq 0 ] || _notrun "python simple pmda not yet installed"
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ | _filter_dumpresult
+}
+
+domain=253
+# ensure help text exists
+cd "$PCP_PMDAS_DIR/simple"
+$sudo ./Install </dev/null >/dev/null 2>&1
+
+# real QA test starts here
+$sudo dbpmda -n root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python pmdasimple.python
+getdesc on
+desc simple.numfetch
+fetch simple.numfetch
+text simple.numfetch
+desc simple.color
+fetch simple.color
+text simple.color
+desc simple.now
+fetch simple.now
+text simple.now
+instance $domain.0
+text indom $domain.1
+End-of-File
+
+exit 0
diff --git a/qa/718.out b/qa/718.out
new file mode 100644
index 0000000..91c47cb
--- /dev/null
+++ b/qa/718.out
@@ -0,0 +1,88 @@
+QA output created by 718
+dbpmda> open pipe /usr/bin/python pmdasimple.python
+Start python PMDA: /usr/bin/python pmdasimple.python
+dbpmda> getdesc on
+dbpmda> desc simple.numfetch
+PMID: 253.0.0
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+dbpmda> fetch simple.numfetch
+PMID(s): 253.0.0
+pmResult ... numpmid: 1
+ 253.0.0 (simple.numfetch): numval: 1 valfmt: 0 vlist[]:
+ value NUMBER
+dbpmda> text simple.numfetch
+PMID: 253.0.0
+[Number of pmFetch operations.]
+The cumulative number of pmFetch operations directed to the "simple"
+PMDA.
+
+This counter may be modified with pmstore(1).
+dbpmda> desc simple.color
+PMID: 253.0.1
+ Data Type: 32-bit int InDom: 253.0 0x3f400000
+ Semantics: instant Units: none
+dbpmda> fetch simple.color
+PMID(s): 253.0.1
+pmResult ... numpmid: 1
+ 253.0.1 (simple.color): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> text simple.color
+PMID: 253.0.1
+[Metrics which increment with each fetch]
+This metric has 3 instances, designated "red", "green" and "blue".
+
+The value of the metric is monotonic increasing in the range NUMBER to
+255, then back to 0. The different instances have different starting
+values, namely 0 (red), 100 (green) and 200 (blue).
+
+The metric values my be altered using pmstore(1).
+dbpmda> desc simple.now
+PMID: 253.2.4
+ Data Type: 32-bit unsigned int InDom: 253.1 0x3f400001
+ Semantics: instant Units: none
+dbpmda> fetch simple.now
+PMID(s): 253.2.4
+pmResult ... numpmid: 1
+ 253.2.4 (simple.now): numval: 3 valfmt: 0 vlist[]:
+ inst [0 or ???] value NUMBER
+ inst [1 or ???] value NUMBER
+ inst [2 or ???] value NUMBER
+dbpmda> text simple.now
+PMID: 253.2.4
+[Time of day with a configurable instance domain]
+The value reflects the current time of day through a dynamically
+reconfigurable instance domain. On each metric value fetch request,
+the agent checks to see whether the configuration file in
+$PCP_PMDAS_DIR/simple/simple.conf has been modified - if it has then
+the file is re-parsed and the instance domain for this metric is again
+constructed according to its contents.
+
+This configuration file contains a single line of comma-separated time
+tokens from this set:
+ "sec" (seconds after the minute),
+ "min" (minutes after the hour),
+ "hour" (hour since midnight).
+
+An example configuration file could be: sec,min,hour
+and in this case the simple.now metric would export values
+for the three instances "sec", "min" and "hour" corresponding
+respectively to the components seconds, minutes and hours of the
+current time of day.
+
+The instance domain reflects each token present in the file, and the
+values reflect the time at which the PMDA processes the fetch.
+dbpmda> instance 253.0
+pmInDom: 253.0
+[ 0] inst: 0 name: "red"
+[ 1] inst: 1 name: "green"
+[ 2] inst: 2 name: "blue"
+dbpmda> text indom 253.1
+pmInDom: 253.1
+[Dynamic instance domain "time" for simple PMDA]
+An instance domain which is computed on-the-fly for exporting current time
+information. Refer to the help text for simple.now for a more complete
+explanation.
+dbpmda>
diff --git a/qa/719 b/qa/719
new file mode 100755
index 0000000..16bce96
--- /dev/null
+++ b/qa/719
@@ -0,0 +1,24 @@
+#!/bin/sh
+# PCP QA Test No. 719
+# Exercise the pmParseHostSpec API family
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+[ $PCP_VER -ge 3800 ] || _notrun "Installed libpcp lacks host parse APIs"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_run_valgrind src/parsehostspec nas1.servers.com:44321,4321@firewall.servers.com:44322
+_run_valgrind src/parsehostspec nas1.servers.com:44321@firewall.servers.com:44322
+_run_valgrind src/parsehostspec nas1.servers.com:44321@firewall.servers.com
+_run_valgrind src/parsehostspec nas1.servers.com@firewall.servers.com
+_run_valgrind src/parsehostspec nas1.servers.com:44321
diff --git a/qa/719.out b/qa/719.out
new file mode 100644
index 0000000..18e3ac5
--- /dev/null
+++ b/qa/719.out
@@ -0,0 +1,65 @@
+QA output created by 719
+=== std out ===
+pmParseHostSpec("nas1.servers.com:44321,4321@firewall.servers.com:44322", ...)
+host[0]: "nas1.servers.com" ports: 44321 4321
+host[1]: "firewall.servers.com" port: 44322
+pmUnparseHostSpec("nas1.servers.com:44321,4321@firewall.servers.com:44322") -> "nas1.servers.com:44321,4321@firewall.servers.com:44322"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostspec nas1.servers.com:44321,4321@firewall.servers.com:44322
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostSpec("nas1.servers.com:44321@firewall.servers.com:44322", ...)
+host[0]: "nas1.servers.com" port: 44321
+host[1]: "firewall.servers.com" port: 44322
+pmUnparseHostSpec("nas1.servers.com:44321@firewall.servers.com:44322") -> "nas1.servers.com:44321@firewall.servers.com:44322"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostspec nas1.servers.com:44321@firewall.servers.com:44322
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostSpec("nas1.servers.com:44321@firewall.servers.com", ...)
+host[0]: "nas1.servers.com" port: 44321
+host[1]: "firewall.servers.com"
+pmUnparseHostSpec("nas1.servers.com:44321@firewall.servers.com") -> "nas1.servers.com:44321@firewall.servers.com"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostspec nas1.servers.com:44321@firewall.servers.com
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostSpec("nas1.servers.com@firewall.servers.com", ...)
+host[0]: "nas1.servers.com"
+host[1]: "firewall.servers.com"
+pmUnparseHostSpec("nas1.servers.com@firewall.servers.com") -> "nas1.servers.com@firewall.servers.com"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostspec nas1.servers.com@firewall.servers.com
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostSpec("nas1.servers.com:44321", ...)
+host[0]: "nas1.servers.com" port: 44321
+pmUnparseHostSpec("nas1.servers.com:44321") -> "nas1.servers.com:44321"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostspec nas1.servers.com:44321
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/720 b/qa/720
new file mode 100755
index 0000000..3ecf128
--- /dev/null
+++ b/qa/720
@@ -0,0 +1,26 @@
+#!/bin/sh
+# PCP QA Test No. 720
+# Exercise the pmParseHostAttrsSpec API family
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+[ $PCP_VER -ge 3800 ] || _notrun "Installed libpcp lacks host parse APIs"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_run_valgrind src/parsehostattrs pcps://nas1.servers.com:44321,4321@firewall.servers.com:44322?compress
+_run_valgrind src/parsehostattrs pcp://localhost:23?compress
+_run_valgrind src/parsehostattrs pcp://some.host?user=pcpqa\&compress\&pass=blah
+_run_valgrind src/parsehostattrs pcp://some.host?user=pcpqa
+_run_valgrind src/parsehostattrs some.host?user=pcpqa
+_run_valgrind src/parsehostattrs some.host
+_run_valgrind src/parsehostattrs pcp://?compress
diff --git a/qa/720.out b/qa/720.out
new file mode 100644
index 0000000..cbb2e53
--- /dev/null
+++ b/qa/720.out
@@ -0,0 +1,98 @@
+QA output created by 720
+=== std out ===
+pmParseHostAttrsSpec("pcps://nas1.servers.com:44321,4321@firewall.servers.com:44322?compress", ...)
+host[0]: "nas1.servers.com" ports: 44321 4321
+host[1]: "firewall.servers.com" port: 44322
+compress
+protocol=pcps
+pmUnparseHostAttrsSpec("pcps://nas1.servers.com:44321,4321@firewall.servers.com:44322?compress") -> "pcps://nas1.servers.com:44321,4321@firewall.servers.com:44322?compress"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs pcps://nas1.servers.com:44321,4321@firewall.servers.com:44322?compress
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("pcp://localhost:23?compress", ...)
+host[0]: "localhost" port: 23
+compress
+protocol=pcp
+pmUnparseHostAttrsSpec("pcp://localhost:23?compress") -> "pcp://localhost:23?compress"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs pcp://localhost:23?compress
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("pcp://some.host?user=pcpqa&compress&pass=blah", ...)
+host[0]: "some.host"
+password=blah
+compress
+username=pcpqa
+protocol=pcp
+pmUnparseHostAttrsSpec("pcp://some.host?user=pcpqa&compress&pass=blah") -> "pcp://some.host?password=blah&compress&username=pcpqa"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs pcp://some.host?user=pcpqa&compress&pass=blah
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("pcp://some.host?user=pcpqa", ...)
+host[0]: "some.host"
+username=pcpqa
+protocol=pcp
+pmUnparseHostAttrsSpec("pcp://some.host?user=pcpqa") -> "pcp://some.host?username=pcpqa"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs pcp://some.host?user=pcpqa
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("some.host?user=pcpqa", ...)
+host[0]: "some.host"
+username=pcpqa
+pmUnparseHostAttrsSpec("some.host?user=pcpqa") -> "some.host?username=pcpqa"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs some.host?user=pcpqa
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("some.host", ...)
+host[0]: "some.host"
+pmUnparseHostAttrsSpec("some.host") -> "some.host"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs some.host
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("pcp://?compress", ...)
+compress
+protocol=pcp
+pmUnparseHostAttrsSpec("pcp://?compress") -> "pcp://?compress"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs pcp://?compress
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/721 b/qa/721
new file mode 100755
index 0000000..3ed5a0e
--- /dev/null
+++ b/qa/721
@@ -0,0 +1,58 @@
+#!/bin/sh
+# PCP QA Test No. 721
+# Exercise the dbpmda connection attribute interface
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3800 ] || _notrun "Installed dbpmda lacks attribute support"
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.* sample.log; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/dbpmda([0-9][0-9]*)/s//dbpmda(PID)/' \
+ -e '/pmdasample([0-9][0-9]*)/s//pmdasample(PID)/' \
+ -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATETIME]/'
+}
+
+# real QA test starts here
+cd "$PCP_PMDAS_DIR/sample"
+echo .
+
+# pipe PMDA variant of test
+$sudo rm -f sample.log
+$sudo dbpmda -n root -ie <<End-of-File 2>&1 | _filter
+debug AUTH
+open pipe pmdasample -l sample.log -D AUTH
+attr
+attr 5 "pcpqa"
+attr "username" "pcpqa"
+attr 0 "no-such-attr"
+attr "no-such-attr"
+End-of-File
+echo Checking log file, pipe mode
+grep -i attribute sample.log | _filter
+$sudo rm -f sample.log
+echo .
+
+# DSO PMDA variant of test
+$sudo dbpmda -n root -ie <<End-of-File 2>&1 | _filter
+debug AUTH
+open dso pmda_sample.so sample_init
+attr
+attr 5 "pcpqa"
+attr "username" "pcpqa"
+attr 0 "no-such-attr"
+attr "no-such-attr"
+End-of-File
+
+exit 0
diff --git a/qa/721.out b/qa/721.out
new file mode 100644
index 0000000..db1ec68
--- /dev/null
+++ b/qa/721.out
@@ -0,0 +1,49 @@
+QA output created by 721
+.
+dbpmda> debug AUTH
+dbpmda> open pipe pmdasample -l sample.log -D AUTH
+Start pmdasample PMDA: ./pmdasample -l sample.log -D AUTH
+dbpmda> attr
+attr name [value]
+attr attr# [value]
+dbpmda> attr 5 "pcpqa"
+Attribute: username=pcpqa
+Success
+dbpmda> attr "username" "pcpqa"
+Attribute: username=pcpqa
+Success
+dbpmda> attr 0 "no-such-attr"
+ ^ at or near here
+Error: Attribute (0) is not recognised
+Type 'help' for a list of commands.
+dbpmda> attr "no-such-attr"
+ ^ at or near here
+Error: Attribute (no-such-attr) is not recognised
+Type 'help' for a list of commands.
+dbpmda>
+Checking log file, pipe mode
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=0 username=pcpqa
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=0 username=pcpqa
+.
+dbpmda> debug AUTH
+dbpmda> open dso pmda_sample.so sample_init
+dbpmda> attr
+attr name [value]
+attr attr# [value]
+dbpmda> attr 5 "pcpqa"
+Attribute: username=pcpqa
+[DATETIME] dbpmda(PID) Info: Attribute: ctx=0 username=pcpqa
+Success
+dbpmda> attr "username" "pcpqa"
+Attribute: username=pcpqa
+[DATETIME] dbpmda(PID) Info: Attribute: ctx=0 username=pcpqa
+Success
+dbpmda> attr 0 "no-such-attr"
+ ^ at or near here
+Error: Attribute (0) is not recognised
+Type 'help' for a list of commands.
+dbpmda> attr "no-such-attr"
+ ^ at or near here
+Error: Attribute (no-such-attr) is not recognised
+Type 'help' for a list of commands.
+dbpmda>
diff --git a/qa/722 b/qa/722
new file mode 100644
index 0000000..a73f8aa
--- /dev/null
+++ b/qa/722
@@ -0,0 +1,86 @@
+#!/bin/sh
+# PCP QA Test No. 722
+# Exercise the python pmatop implementation
+#
+# Copyright (c) 2013-2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -f $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+remove_extra_whitespace()
+{
+ sed \
+ -e 's/>>>.*<<<//g' \
+ -e 's/[0-9]/9/g' \
+ -e 's/9[9\.e]*/9/g' \
+ -e 's/ *$//' \
+ -e '/^ *$/d' \
+ -e 's/ */ /g' \
+ -e 's/^ *//' \
+ -e 's/RECORD.*$/RECORD/' \
+
+}
+
+redact_lines()
+{
+ $PCP_AWK_PROG -v f=$1 '
+BEGIN {first_cpu=1;first_dsk=1;first_lvm=1;proc_printed=0}
+/^9/ {if (! proc_printed) {
+ gsub("[SR]","x",$10)
+ gsub("[a-zA-Z_][a-zA-Z_]+","userid",$6)
+ gsub("[a-zA-Z_][a-zA-Z_]+","process",$9)
+ gsub("[a-zA-Z_][a-zA-Z_]+","process",$12)
+ if ($2 != "9K") $2="HHMMSS"
+ if ($3 != "9K") $3="HHMMSS"
+ proc_printed = 1
+ print $0}
+ next}
+/cpu/ {if (first_cpu) {print $0; first_cpu=0}; next}
+/PRC/ {$4 = "HHMMSS";$7 = "HHMMSS"}
+/DSK/ {if (first_dsk) {$3 = "DISKNAME"; print $0; first_dsk=0}; next}
+/LVM/ {if (first_lvm) {gsub("[a-zA-Z0-9_-]*","x",$3);print $0; first_lvm=0;}; next}
+/NET/ {if ($3 == "transport" || $3 == "network") {print $0}; next}
+/ATOP/ {gsub("[A-Za-z]*","Day",$3);gsub("[A-Za-z]*","Month",$4)}
+ {print $0}'
+}
+
+redact_header()
+{
+ $PCP_AWK_PROG -v f=$1 '
+/ATOP/ {gsub("[A-Za-z]*","Day",$3);gsub("[A-Za-z]*","Month",$4)}
+/LVM/ {gsub("[a-zA-Z0-9_-]*","x",$3);print $0; next}
+ {print $0}'
+}
+
+PMATOP=pmatop.py # local version, wont be there on installed system
+which $PMATOP >/dev/null 2>&1
+if [ $? -ne 0 ]; then
+ PMATOP=pmatop
+ which $PMATOP >/dev/null 2>&1 || _notrun "pmatop not installed"
+fi
+
+# real QA test starts here
+$PMATOP -r $here/src/pmatop-log.folio -m 1 1 | redact_header | remove_extra_whitespace | tee -a $tmp.out 2>&1
+$PMATOP -r $here/src/pmatop-log.folio -g 1 1 | redact_header | remove_extra_whitespace | tee -a $tmp.out 2>&1
+
+$PMATOP -w test.pmatop 0.2 10
+if pmafm test.pmatop check | grep -q OK
+then echo pmatop log creation OK | tee -a $tmp.out 2>&1
+else echo pmatop log creation FAILED | tee -a $tmp.out 2>&1; fi
+
+cat $tmp.out >>$here/$seq.full
+
+# success, all done
+eval `pmafm test.pmatop remove`
+status=0
+exit
diff --git a/qa/722.out b/qa/722.out
new file mode 100644
index 0000000..7190299
--- /dev/null
+++ b/qa/722.out
@@ -0,0 +1,450 @@
+QA output created by 722
+ATOP - Day Month 9 9:9:9 9 9:9:9 elapsed
+PRC | sys 9h9m | user 9d | #proc 9 | #zombie 9
+CPU | sys 9% | user 9% | irq 9% | idle 9% | wait 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+CPL | avg9 .9 | avg9 .9 | avg9 .9 | csw 9 | intr 9 |
+MEM | tot 9G | free 9M | cache 9G | buff 9M | slab 9G |
+SWP | tot 9G | free 9G | | vmcom 9G | vmlim 9G |
+PAG | scan 9 | steal 9 | stall 9 | swin 9 | swout 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+DSK | sda | busy 9% | read 9 | write 9 | avio 9 ms |
+NET | transport | tcpi 9M | tcpo 9M | udpi 9M | udpo 9M |
+NET | network | ipi 9M | ipo 9M | ipfrw 9M | deliv 9M |
+NET | lo | pcki 9M | pcko 9M | si 9 Kbps | so 9 Kpbs |
+NET | em9 | pcki 9M | pcko 9M | si 9 Kbps | so 9 Kpbs |
+NET | wlan9 | pcki 9M | pcko 9M | si 9 Kbps | so 9 Kpbs |
+PID VDATA VSTACK VGROW RGROW VSIZE RSIZE MEM CMD
+9 9G 9K 9G 9M 9G 9M 9% firefox
+9 9M 9K 9G 9M 9G 9M 9% plugin-containe
+9 9K 9K 9M 9K 9M 9K 9% Xorg
+9 9G 9K 9G 9M 9G 9M 9% gnome-shell
+9 9G 9K 9G 9M 9G 9M 9% thunderbird
+9 9M 9K 9M 9K 9M 9K 9% ibus-daemon
+9 9M 9K 9M 9K 9M 9K 9% pulseaudio
+9 9K 9K 9M 9K 9M 9K 9% ibus-x9
+9 9M 9K 9M 9M 9M 9M 9% emacs
+9 9M 9K 9M 9K 9M 9K 9% xchat
+9 9M 9K 9M 9K 9M 9K 9% polkitd
+9 9M 9K 9M 9K 9M 9K 9% vino-server
+9 9M 9K 9M 9K 9M 9K 9% gnome-terminal
+9 9M 9K 9G 9K 9G 9K 9% gnome-settings-
+9 9K 9K 9K 9K 9K 9K 9% dbus-daemon
+9 9 9 9 9 9 9 9% irq/9-iwlwifi
+9 9M 9K 9M 9K 9M 9K 9% NetworkManager
+9 9K 9K 9M 9K 9M 9K 9% ibus-engine-sim
+9 9 9 9 9 9 9 9% rcu_sched
+9 9K 9K 9K 9K 9K 9K 9% cups-polld
+9 9M 9K 9M 9K 9M 9K 9% ibus-ui-gtk9
+9 9K 9K 9M 9K 9M 9K 9% cupsd
+9 9M 9K 9M 9K 9M 9K 9% nm-applet
+9 9K 9K 9K 9K 9K 9K 9% irqbalance
+9 9M 9K 9M 9K 9M 9K 9% upowerd
+9 9M 9K 9M 9K 9M 9K 9% udisksd
+9 9M 9K 9M 9K 9M 9K 9% SpiderOakBlue
+9 9M 9K 9M 9K 9M 9K 9% SpiderOakBlue
+9 9M 9K 9M 9K 9M 9K 9% mission-control
+9 9M 9K 9M 9K 9M 9K 9% evince
+9 9M 9K 9M 9K 9M 9K 9% gnome-screensav
+9 9K 9K 9K 9K 9K 9K 9% systemd-journal
+9 9K 9K 9K 9K 9K 9K 9% acpid
+9 9M 9K 9M 9K 9M 9K 9% gnome-session
+9 9 9 9 9 9 9 9% khugepaged
+9 9K 9K 9K 9K 9K 9K 9% wpa_supplicant
+9 9K 9K 9K 9 9K 9 9% gpm
+9 9 9 9 9 9 9 9% flush-9:9
+9 9M 9K 9M 9K 9M 9K 9% deja-dup-monito
+9 9M 9K 9M 9K 9M 9K 9% evolution-calen
+9 9M 9K 9M 9K 9M 9K 9% evolution-addre
+9 9 9 9 9 9 9 9% jbd9/dm-9-9
+9 9 9 9 9 9 9 9% ksoftirqd/9
+9 9M 9K 9M 9K 9M 9K 9% tracker-miner-f
+9 9K 9K 9K 9K 9K 9K 9% systemd-logind
+9 9K 9K 9M 9K 9M 9K 9% crond
+9 9 9 9 9 9 9 9% kswapd9
+9 9K 9K 9K 9K 9K 9K 9% systemd
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9M 9K 9M 9K 9M 9K 9% rtkit-daemon
+9 9 9 9 9 9 9 9% ksoftirqd/9
+9 9 9 9 9 9 9 9% ksoftirqd/9
+9 9 9 9 9 9 9 9% flush-9:9
+9 9 9 9 9 9 9 9% jbd9/dm-9-9
+9 9K 9K 9M 9K 9M 9K 9% bash
+9 9 9 9 9 9 9 9% ksoftirqd/9
+9 9K 9K 9K 9K 9K 9K 9% pmie
+9 9M 9K 9M 9K 9M 9K 9% gvfs-udisks9-vo
+9 9M 9K 9M 9K 9M 9K 9% accounts-daemon
+9 9M 9K 9M 9K 9M 9K 9% gdm-session-wor
+9 9M 9K 9M 9K 9M 9K 9% rsyslogd
+9 9M 9K 9M 9K 9M 9K 9% gnote
+9 9K 9K 9K 9K 9K 9K 9% dbus-daemon
+9 9 9 9 9 9 9 9% migration/9
+9 9K 9K 9K 9K 9K 9K 9% pmdaproc
+9 9K 9K 9M 9K 9M 9K 9% bash
+9 9 9 9 9 9 9 9% migration/9
+9 9K 9K 9K 9K 9K 9K 9% auditd
+9 9K 9K 9M 9K 9M 9K 9% bash
+9 9K 9K 9M 9K 9M 9K 9% abrt-watch-log
+9 9M 9K 9M 9K 9M 9K 9% evolution-alarm
+9 9K 9K 9K 9K 9K 9K 9% dhclient
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9 9 9 9 9 9 9% watchdog/9
+9 9M 9K 9M 9K 9M 9K 9% gnome-shell-cal
+9 9 9 9 9 9 9 9% watchdog/9
+9 9K 9K 9M 9K 9M 9K 9% abrt-applet
+9 9 9 9 9 9 9 9% watchdog/9
+9 9 9 9 9 9 9 9% watchdog/9
+9 9 9 9 9 9 9 9% migration/9
+9 9K 9K 9M 9K 9M 9K 9% modem-manager
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9K 9K 9M 9K 9M 9K 9% gdm-binary
+9 9M 9K 9M 9K 9M 9K 9% colord
+9 9 9 9 9 9 9 9% migration/9
+9 9K 9K 9K 9K 9K 9K 9% avahi-daemon
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9M 9K 9M 9K 9M 9K 9% tracker-store
+9 9K 9K 9K 9K 9K 9K 9% rpcbind
+9 9K 9K 9K 9K 9K 9K 9% chronyd
+9 9K 9K 9M 9K 9M 9K 9% pmcd
+9 9 9 9 9 9 9 9% kauditd
+9 9K 9K 9K 9K 9K 9K 9% dhclient
+9 9K 9K 9K 9K 9K 9K 9% udevd
+9 9K 9K 9M 9K 9M 9K 9% bash
+9 9 9 9 9 9 9 9% kworker/u:9
+9 9 9 9 9 9 9 9% kthreadd
+9 9M 9K 9M 9K 9M 9K 9% gnome-keyring-d
+9 9K 9K 9M 9K 9M 9K 9% bash
+9 9 9 9 9 9 9 9% jbd9/dm-9-9
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9M 9K 9M 9K 9M 9K 9% gsd-printer
+9 9K 9K 9K 9K 9K 9K 9% smartd
+9 9K 9K 9M 9K 9M 9K 9% gvfsd
+9 9M 9K 9M 9K 9M 9K 9% colord-sane
+9 9K 9K 9M 9K 9M 9K 9% gvfsd-trash
+9 9K 9K 9M 9K 9M 9K 9% pmatop.py
+9 9K 9K 9M 9K 9M 9K 9% abrtd
+9 9M 9K 9M 9K 9M 9K 9% dconf-service
+9 9 9 9 9 9 9 9% kworker/u:9
+9 9 9 9 9 9 9 9% bdi-default
+9 9 9 9 9 9 9 9% kworker/u:9
+9 9 9 9 9 9 9 9% khubd
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9K 9K 9K 9K 9K 9K 9% atd
+9 9K 9K 9M 9K 9M 9K 9% gvfsd-metadata
+9 9K 9K 9K 9K 9K 9K 9% udevd
+9 9K 9K 9K 9K 9K 9K 9% bluetoothd
+9 9M 9K 9M 9K 9M 9K 9% imsettings-daem
+9 9K 9K 9M 9K 9M 9K 9% abrt-watch-log
+9 9K 9K 9K 9K 9K 9K 9% rpc.statd
+9 9K 9K 9K 9K 9K 9K 9% pmlogger
+9 9 9 9 9 9 9 9% fsnotify_mark
+9 9K 9K 9M 9K 9M 9K 9% gdm-simple-slav
+9 9K 9K 9M 9K 9M 9K 9% gvfs-gphoto9-vo
+9 9 9 9 9 9 9 9% kdevtmpfs
+9 9K 9K 9M 9K 9M 9K 9% ibus-dconf
+9 9M 9K 9M 9K 9M 9K 9% gvfsd-http
+9 9K 9K 9K 9K 9K 9K 9% pmlogger
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9K 9K 9K 9K 9K 9K 9% sshd
+9 9K 9K 9M 9K 9M 9K 9% gconfd-9
+9 9M 9K 9M 9K 9M 9K 9% goa-daemon
+9 9K 9K 9M 9K 9M 9K 9% ibus-engine-pin
+9 9M 9K 9M 9K 9M 9K 9% evinced
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9 9 9 9 9 9 9% rcu_bh
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9 9 9 9 9 9 9% kworker/9:9H
+9 9 9 9 9 9 9 9% khelper
+9 9 9 9 9 9 9 9% netns
+9 9 9 9 9 9 9 9% kintegrityd
+9 9 9 9 9 9 9 9% kblockd
+9 9 9 9 9 9 9 9% ata_sff
+9 9 9 9 9 9 9 9% md
+9 9 9 9 9 9 9 9% ksmd
+9 9 9 9 9 9 9 9% crypto
+9 9 9 9 9 9 9 9% kthrotld
+9 9 9 9 9 9 9 9% scsi_eh_9
+9 9 9 9 9 9 9 9% scsi_eh_9
+9 9 9 9 9 9 9 9% scsi_eh_9
+9 9 9 9 9 9 9 9% scsi_eh_9
+9 9 9 9 9 9 9 9% scsi_eh_9
+9 9 9 9 9 9 9 9% scsi_eh_9
+9 9 9 9 9 9 9 9% kpsmoused
+9 9 9 9 9 9 9 9% deferwq
+9 9 9 9 9 9 9 9% kdmflush
+9 9 9 9 9 9 9 9% kdmflush
+9 9K 9K 9M 9K 9M 9K 9% gvfsd-burn
+9 9 9 9 9 9 9 9% ext9-dio-unwrit
+9 9 9 9 9 9 9 9% kvm-irqfd-clean
+9 9 9 9 9 9 9 9% ktpacpid
+9 9 9 9 9 9 9 9% hd-audio9
+9 9 9 9 9 9 9 9% cfg9
+9 9 9 9 9 9 9 9% kdmflush
+9 9 9 9 9 9 9 9% kdmflush
+9 9 9 9 9 9 9 9% kdmflush
+9 9 9 9 9 9 9 9% iwlwifi
+9 9 9 9 9 9 9 9% jbd9/dm-9-9
+9 9 9 9 9 9 9 9% ext9-dio-unwrit
+9 9 9 9 9 9 9 9% ext9-dio-unwrit
+9 9 9 9 9 9 9 9% ext9-dio-unwrit
+9 9K 9K 9K 9K 9K 9K 9% avahi-daemon
+9 9K 9K 9K 9 9K 9 9% system-setup-ke
+9 9K 9K 9K 9K 9K 9K 9% mcelog
+9 9 9 9 9 9 9 9% krfcommd
+9 9 9 9 9 9 9 9% rpciod
+9 9K 9K 9K 9K 9K 9K 9% dbus-launch
+9 9M 9K 9M 9K 9M 9K 9% gvfs-fuse-daemo
+9 9K 9K 9M 9K 9M 9K 9% gvfs-afc-volume
+9 9M 9K 9M 9K 9M 9K 9% at-spi-bus-laun
+9 9K 9K 9K 9K 9K 9K 9% gnome-pty-helpe
+9 9K 9K 9K 9K 9K 9K 9% emacsclient
+9 9K 9K 9M 9K 9M 9K 9% tools.sh
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9 9 9 9 9 9 9% kworker/u:9H
+9 9K 9K 9K 9K 9K 9K 9% emacsclient
+9 9K 9K 9K 9K 9K 9K 9% emacsclient
+9 9 9 9 9 9 9 9% irq/9-mei
+9 9 9 9 9 9 9 9% hci9
+9 9 9 9 9 9 9 9% hci9
+9 9 9 9 9 9 9 9% kworker/u:9H
+9 9K 9K 9K 9K 9K 9K 9% udevd
+9 9K 9K 9K 9K 9K 9K 9% pmdaxfs
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9 9 9 9 9 9 9% kworker/9:9
+9 9K 9K 9K 9K 9K 9K 9% ssh-agent
+ATOP - Day Month 9 9:9:9 9 9:9:9 elapsed
+PRC | sys 9h9m | user 9d | #proc 9 | #zombie 9
+CPU | sys 9% | user 9% | irq 9% | idle 9% | wait 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+cpu | sys 9% | user 9% | irq 9% | idle 9% | cpu9 9% |
+CPL | avg9 .9 | avg9 .9 | avg9 .9 | csw 9 | intr 9 |
+MEM | tot 9G | free 9M | cache 9G | buff 9M | slab 9G |
+SWP | tot 9G | free 9G | | vmcom 9G | vmlim 9G |
+PAG | scan 9 | steal 9 | stall 9 | swin 9 | swout 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+LVM | x | | read 9 | write 9 |
+DSK | sda | busy 9% | read 9 | write 9 | avio 9 ms |
+NET | transport | tcpi 9M | tcpo 9M | udpi 9M | udpo 9M |
+NET | network | ipi 9M | ipo 9M | ipfrw 9M | deliv 9M |
+NET | lo | pcki 9M | pcko 9M | si 9 Kbps | so 9 Kpbs |
+NET | em9 | pcki 9M | pcko 9M | si 9 Kbps | so 9 Kpbs |
+NET | wlan9 | pcki 9M | pcko 9M | si 9 Kbps | so 9 Kpbs |
+PID SYSCPU USRCPU VGROW RGROW RUID THR ST EXC S CPU CMD
+9 9h9m 9h9m 9K 9K scox 9 -- - S 9% firefox
+9 9h9m 9h9m 9K 9K scox 9 -- - S 9% plugin-containe
+9 9h9m 9h9m 9K 9K root 9 -- - S 9% Xorg
+9 9m9s 9h9m 9K 9K scox 9 -- - S 9% gnome-shell
+9 9m9s 9h9m 9K 9K scox 9 -- - S 9% thunderbird
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% ibus-daemon
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% pulseaudio
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% ibus-x9
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% emacs
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% xchat
+9 9m9s 9m9s 9K 9K root 9 -- - S 9% polkitd
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% vino-server
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% gnome-terminal
+9 9m9s 9m9s 9K 9K scox 9 -- - S 9% gnome-settings-
+9 9m9s 9m9s 9K 9K dbus 9 -- - S 9% dbus-daemon
+9 9m9s 9s 9 9 root 9 -- - S 9% irq/9-iwlwifi
+9 9s 9m9s 9K 9K root 9 -- - S 9% NetworkManager
+9 9s 9m9s 9K 9K scox 9 -- - S 9% ibus-engine-sim
+9 9m9s 9s 9 9 root 9 -- - S 9% rcu_sched
+9 9m9s 9m9s 9K 9K lp 9 -- - S 9% cups-polld
+9 9s 9m9s 9K 9K scox 9 -- - S 9% ibus-ui-gtk9
+9 9s 9m9s 9K 9K root 9 -- - S 9% cupsd
+9 9s 9m9s 9K 9K scox 9 -- - S 9% nm-applet
+9 9m9s 9s 9K 9 root 9 -- - S 9% irqbalance
+9 9s 9m9s 9K 9K root 9 -- - S 9% upowerd
+9 9s 9m9s 9K 9K root 9 -- - S 9% udisksd
+9 9s 9m9s 9K 9K scox 9 -- - S 9% SpiderOakBlue
+9 9s 9s 9K 9K scox 9 -- - S 9% SpiderOakBlue
+9 9s 9s 9K 9K scox 9 -- - S 9% mission-control
+9 9s 9s 9K 9K scox 9 -- - S 9% evince
+9 9s 9s 9K 9K scox 9 -- - S 9% gnome-screensav
+9 9s 9s 9K 9 root 9 -- - S 9% systemd-journal
+9 9s 9s 9K 9 root 9 -- - S 9% acpid
+9 9s 9s 9K 9K scox 9 -- - S 9% gnome-session
+9 9s 9s 9 9 root 9 -- - S 9% khugepaged
+9 9s 9s 9K 9K root 9 -- - S 9% wpa_supplicant
+9 9s 9s 9K 9 root 9 -- - S 9% gpm
+9 9s 9s 9 9 root 9 -- - S 9% flush-9:9
+9 9s 9s 9K 9K scox 9 -- - S 9% deja-dup-monito
+9 9s 9s 9K 9K scox 9 -- - S 9% evolution-calen
+9 9s 9s 9K 9K scox 9 -- - S 9% evolution-addre
+9 9s 9s 9 9 root 9 -- - D 9% jbd9/dm-9-9
+9 9s 9s 9 9 root 9 -- - S 9% ksoftirqd/9
+9 9s 9s 9K 9K scox 9 -- - S 9% tracker-miner-f
+9 9s 9s 9K 9K root 9 -- - S 9% systemd-logind
+9 9s 9s 9K 9 root 9 -- - S 9% crond
+9 9s 9s 9 9 root 9 -- - S 9% kswapd9
+9 9s 9s 9K 9K root 9 -- - S 9% systemd
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9K 9 rtkit 9 -- - S 9% rtkit-daemon
+9 9s 9s 9 9 root 9 -- - S 9% ksoftirqd/9
+9 9s 9s 9 9 root 9 -- - S 9% ksoftirqd/9
+9 9s 9s 9 9 root 9 -- - S 9% flush-9:9
+9 9s 9s 9 9 root 9 -- - S 9% jbd9/dm-9-9
+9 9s 9s 9K 9K scox 9 -- - S 9% bash
+9 9s 9s 9 9 root 9 -- - S 9% ksoftirqd/9
+9 9s 9s 9K 9K pcp 9 -- - S 9% pmie
+9 9s 9s 9K 9K scox 9 -- - S 9% gvfs-udisks9-vo
+9 9s 9s 9K 9K root 9 -- - S 9% accounts-daemon
+9 9s 9s 9K 9K root 9 -- - S 9% gdm-session-wor
+9 9s 9s 9K 9K root 9 -- - S 9% rsyslogd
+9 9s 9s 9K 9K scox 9 -- - S 9% gnote
+9 9s 9s 9K 9K scox 9 -- - S 9% dbus-daemon
+9 9s 9s 9 9 root 9 -- - S 9% migration/9
+9 9s 9s 9K 9K root 9 -- - R 9% pmdaproc
+9 9s 9s 9K 9K scox 9 -- - S 9% bash
+9 9s 9s 9 9 root 9 -- - S 9% migration/9
+9 9s 9s 9K 9 root 9 -- - S 9% auditd
+9 9s 9s 9K 9K scox 9 -- - S 9% bash
+9 9s 9s 9K 9 root 9 -- - S 9% abrt-watch-log
+9 9s 9s 9K 9K scox 9 -- - S 9% evolution-alarm
+9 9s 9s 9K 9K root 9 -- - S 9% dhclient
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9 9 root 9 -- - S 9% watchdog/9
+9 9s 9s 9K 9K scox 9 -- - S 9% gnome-shell-cal
+9 9s 9s 9 9 root 9 -- - S 9% watchdog/9
+9 9s 9s 9K 9K scox 9 -- - S 9% abrt-applet
+9 9s 9s 9 9 root 9 -- - S 9% watchdog/9
+9 9s 9s 9 9 root 9 -- - S 9% watchdog/9
+9 9s 9s 9 9 root 9 -- - S 9% migration/9
+9 9s 9s 9K 9K root 9 -- - S 9% modem-manager
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9K 9 root 9 -- - S 9% gdm-binary
+9 9s 9s 9K 9K colord 9 -- - S 9% colord
+9 9s 9s 9 9 root 9 -- - S 9% migration/9
+9 9s 9s 9K 9 avahi 9 -- - S 9% avahi-daemon
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9K 9K scox 9 -- - S 9% tracker-store
+9 9s 9s 9K 9 rpc 9 -- - S 9% rpcbind
+9 9s 9s 9K 9 chrony 9 -- - S 9% chronyd
+9 9s 9s 9K 9K pcp 9 -- - S 9% pmcd
+9 9s 9s 9 9 root 9 -- - S 9% kauditd
+9 9s 9s 9K 9K root 9 -- - S 9% dhclient
+9 9s 9s 9K 9 root 9 -- - S 9% udevd
+9 9s 9s 9K 9K scox 9 -- - S 9% bash
+9 9s 9s 9 9 root 9 -- - S 9% kworker/u:9
+9 9s 9s 9 9 root 9 -- - S 9% kthreadd
+9 9s 9s 9K 9K scox 9 -- - S 9% gnome-keyring-d
+9 9s 9s 9K 9K scox 9 -- - S 9% bash
+9 9s 9s 9 9 root 9 -- - S 9% jbd9/dm-9-9
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9K 9K scox 9 -- - S 9% gsd-printer
+9 9s 9s 9K 9 root 9 -- - S 9% smartd
+9 9s 9s 9K 9 scox 9 -- - S 9% gvfsd
+9 9s 9s 9K 9 colord 9 -- - S 9% colord-sane
+9 9s 9s 9K 9K scox 9 -- - S 9% gvfsd-trash
+9 9s 9s 9K 9K scox 9 -- - S 9% pmatop.py
+9 9s 9s 9K 9 root 9 -- - S 9% abrtd
+9 9s 9s 9K 9K scox 9 -- - S 9% dconf-service
+9 9s 9s 9 9 root 9 -- - S 9% kworker/u:9
+9 9s 9s 9 9 root 9 -- - S 9% bdi-default
+9 9s 9s 9 9 root 9 -- - S 9% kworker/u:9
+9 9s 9s 9 9 root 9 -- - S 9% khubd
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9K 9 root 9 -- - S 9% atd
+9 9s 9s 9K 9K scox 9 -- - S 9% gvfsd-metadata
+9 9s 9s 9K 9K root 9 -- - S 9% udevd
+9 9s 9s 9K 9K root 9 -- - S 9% bluetoothd
+9 9s 9s 9K 9 scox 9 -- - S 9% imsettings-daem
+9 9s 9s 9K 9 root 9 -- - S 9% abrt-watch-log
+9 9s 9s 9K 9 rpcuse 9 -- - S 9% rpc.statd
+9 9s 9s 9K 9K scox 9 -- - S 9% pmlogger
+9 9s 9s 9 9 root 9 -- - S 9% fsnotify_mark
+9 9s 9s 9K 9 root 9 -- - S 9% gdm-simple-slav
+9 9s 9s 9K 9 scox 9 -- - S 9% gvfs-gphoto9-vo
+9 9s 9s 9 9 root 9 -- - S 9% kdevtmpfs
+9 9s 9s 9K 9K scox 9 -- - S 9% ibus-dconf
+9 9s 9s 9K 9K scox 9 -- - S 9% gvfsd-http
+9 9s 9s 9K 9K pcp 9 -- - S 9% pmlogger
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9K 9 root 9 -- - S 9% sshd
+9 9s 9s 9K 9 scox 9 -- - S 9% gconfd-9
+9 9s 9s 9K 9K scox 9 -- - S 9% goa-daemon
+9 9s 9s 9K 9 scox 9 -- - S 9% ibus-engine-pin
+9 9s 9s 9K 9K scox 9 -- - S 9% evinced
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9 9 root 9 -- - S 9% rcu_bh
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9H
+9 9s 9s 9 9 root 9 -- - S 9% khelper
+9 9s 9s 9 9 root 9 -- - S 9% netns
+9 9s 9s 9 9 root 9 -- - S 9% kintegrityd
+9 9s 9s 9 9 root 9 -- - S 9% kblockd
+9 9s 9s 9 9 root 9 -- - S 9% ata_sff
+9 9s 9s 9 9 root 9 -- - S 9% md
+9 9s 9s 9 9 root 9 -- - S 9% ksmd
+9 9s 9s 9 9 root 9 -- - S 9% crypto
+9 9s 9s 9 9 root 9 -- - S 9% kthrotld
+9 9s 9s 9 9 root 9 -- - S 9% scsi_eh_9
+9 9s 9s 9 9 root 9 -- - S 9% scsi_eh_9
+9 9s 9s 9 9 root 9 -- - S 9% scsi_eh_9
+9 9s 9s 9 9 root 9 -- - S 9% scsi_eh_9
+9 9s 9s 9 9 root 9 -- - S 9% scsi_eh_9
+9 9s 9s 9 9 root 9 -- - S 9% scsi_eh_9
+9 9s 9s 9 9 root 9 -- - S 9% kpsmoused
+9 9s 9s 9 9 root 9 -- - S 9% deferwq
+9 9s 9s 9 9 root 9 -- - S 9% kdmflush
+9 9s 9s 9 9 root 9 -- - S 9% kdmflush
+9 9s 9s 9K 9 scox 9 -- - S 9% gvfsd-burn
+9 9s 9s 9 9 root 9 -- - S 9% ext9-dio-unwrit
+9 9s 9s 9 9 root 9 -- - S 9% kvm-irqfd-clean
+9 9s 9s 9 9 root 9 -- - S 9% ktpacpid
+9 9s 9s 9 9 root 9 -- - S 9% hd-audio9
+9 9s 9s 9 9 root 9 -- - S 9% cfg9
+9 9s 9s 9 9 root 9 -- - S 9% kdmflush
+9 9s 9s 9 9 root 9 -- - S 9% kdmflush
+9 9s 9s 9 9 root 9 -- - S 9% kdmflush
+9 9s 9s 9 9 root 9 -- - S 9% iwlwifi
+9 9s 9s 9 9 root 9 -- - S 9% jbd9/dm-9-9
+9 9s 9s 9 9 root 9 -- - S 9% ext9-dio-unwrit
+9 9s 9s 9 9 root 9 -- - S 9% ext9-dio-unwrit
+9 9s 9s 9 9 root 9 -- - S 9% ext9-dio-unwrit
+9 9s 9s 9K 9 avahi 9 -- - S 9% avahi-daemon
+9 9s 9s 9K 9 root 9 -- - S 9% system-setup-ke
+9 9s 9s 9K 9 root 9 -- - S 9% mcelog
+9 9s 9s 9 9 root 9 -- - S 9% krfcommd
+9 9s 9s 9 9 root 9 -- - S 9% rpciod
+9 9s 9s 9K 9 scox 9 -- - S 9% dbus-launch
+9 9s 9s 9K 9 scox 9 -- - S 9% gvfs-fuse-daemo
+9 9s 9s 9K 9 scox 9 -- - S 9% gvfs-afc-volume
+9 9s 9s 9K 9 scox 9 -- - S 9% at-spi-bus-laun
+9 9s 9s 9K 9 scox 9 -- - S 9% gnome-pty-helpe
+9 9s 9s 9K 9 scox 9 -- - S 9% emacsclient
+9 9s 9s 9K 9 scox 9 -- - S 9% tools.sh
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9 9 root 9 -- - S 9% kworker/u:9H
+9 9s 9s 9K 9 scox 9 -- - T 9% emacsclient
+9 9s 9s 9K 9 scox 9 -- - T 9% emacsclient
+9 9s 9s 9 9 root 9 -- - S 9% irq/9-mei
+9 9s 9s 9 9 root 9 -- - S 9% hci9
+9 9s 9s 9 9 root 9 -- - S 9% hci9
+9 9s 9s 9 9 root 9 -- - S 9% kworker/u:9H
+9 9s 9s 9K 9K root 9 -- - S 9% udevd
+9 9s 9s 9K 9K root 9 -- - S 9% pmdaxfs
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9 9 root 9 -- - S 9% kworker/9:9
+9 9s 9s 9K 9 root 9 -- - S 9% ssh-agent
+pmatop log creation OK
diff --git a/qa/723 b/qa/723
new file mode 100755
index 0000000..eebad33
--- /dev/null
+++ b/qa/723
@@ -0,0 +1,55 @@
+#!/bin/sh
+# PCP QA Test No. 723
+# Exercise Linux kernel proc.psinfo.label metric
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pid=$$
+
+test $PCP_VER -ge 3805 || _notrun "No support for new proc label metric"
+test $PCP_PLATFORM = linux || _notrun "Test unsupported on $PCP_PLATFORM"
+test -f /proc/$pid/attr/current || _notrun "No kernel support for labels"
+# for some kernels, /proc/$pid/attr/current exists, but attempts to
+# access the "file" produce and Invalid argument error
+#
+cat /proc/$$/attr/current >/dev/null 2>&1 || _notrun "Incomplete kernel support for labels"
+
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo rm -f $seq.full
+#debug# ls -l /proc/$pid/attr/current
+syslabel=`cat /proc/$pid/attr/current`
+echo "SYS Label for process $pid is: $syslabel" >> $seq.full
+
+pminfo -f proc.psinfo.labels > $tmp.labels
+pcplabel=`grep "^ inst \[$pid or " $tmp.labels \
+ | $PCP_AWK_PROG '{ print $NF }' \
+ | sed -e 's/^"//' -e 's/"$//'`
+echo "PCP Label for process $pid is: $pcplabel" >> $seq.full
+echo "Extracted from list:" >> $seq.full
+cat $tmp.labels >> $seq.full
+
+if [ "$pcplabel" = "$syslabel" ]
+then
+ echo "Security label for current process checks out"
+ status=0
+else
+ echo "Mismatch on security labels:"
+ echo "PCP Label: $pcplabel"
+ echo "SYS Label: $syslabel"
+ status=1
+fi
+
+exit
diff --git a/qa/723.out b/qa/723.out
new file mode 100644
index 0000000..3fc88fd
--- /dev/null
+++ b/qa/723.out
@@ -0,0 +1,2 @@
+QA output created by 723
+Security label for current process checks out
diff --git a/qa/724 b/qa/724
new file mode 100755
index 0000000..eec27ff
--- /dev/null
+++ b/qa/724
@@ -0,0 +1,41 @@
+#!/bin/sh
+# PCP QA Test No. 724
+# Test using the pmfind app for usage errors
+#
+# Copyright (c) 2014 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$service_discovery || _notrun "No support for service discovery"
+
+# Make sure that at least one of the supported discovery mechanisms is available.
+discovery_available=false
+avahi-daemon --check 2>/dev/null && discovery_available=true
+$discovery_available || _notrun "No discovery mechanisms are available"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "Unknown service"
+pmfind -s unknown
+echo "Exit status: $?"
+
+echo "Unknown mechanism"
+pmfind -m unknown
+echo "Exit status: $?"
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/724.out b/qa/724.out
new file mode 100644
index 0000000..23ca6a1
--- /dev/null
+++ b/qa/724.out
@@ -0,0 +1,9 @@
+QA output created by 724
+Unknown service
+No unknown servers discovered
+Exit status: 1
+Unknown mechanism
+pmfind: service pmcd discovery failure: Operation not supported
+pmfind: service pmproxy discovery failure: Operation not supported
+pmfind: service pmwebd discovery failure: Operation not supported
+Exit status: 2
diff --git a/qa/725 b/qa/725
new file mode 100755
index 0000000..9bc77b3
--- /dev/null
+++ b/qa/725
@@ -0,0 +1,179 @@
+#!/bin/sh
+# PCP QA Test No. 725
+# Exercise the JBD2 driver PMDA.
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = linux ] || _notrun "JBD2 test, only works with Linux"
+
+status=1 # failure is the default!
+done_clean=false
+$sudo rm -rf $tmp.* $seq.full
+
+# for QA the default install for jbd2 PMDA is as dso not a daemon
+#
+cat <<End-of-File >$tmp.input
+b
+dso
+End-of-File
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ if [ -f $tmp.pmcd.conf ]
+ then
+ $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ fi
+ if [ -f $tmp.cache ]
+ then
+ $sudo mv $tmp.cache $cache
+ fi
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/jbd2; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/jbd2; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ rm -fr ${tmp}.jbd2.dir
+ rm -f $tmp.*
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo jbd2 >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+# create some test data, various formats
+format_v2()
+{
+ mkdir -p ${tmp}.jbd2.dir/sda1-8
+ cat << End-of-file > ${tmp}.jbd2.dir/sda1-8/info
+24 transaction, each up to 2048 blocks
+average:
+ 0ms waiting for transaction
+ 5327ms running transaction
+ 0ms transaction was being locked
+ 0ms flushing data (in ordered mode)
+ 35ms logging transaction
+ 52335us average transaction commit time
+ 262 handles per transaction
+ 4 blocks per transaction
+ 5 logged blocks per transaction
+End-of-file
+}
+
+format_v3()
+{
+ mkdir -p ${tmp}.jbd2.dir/dm-1-8
+ cat << End-of-file > ${tmp}.jbd2.dir/dm-1-8/info
+6117 transactions (19053 requested), each up to 8192 blocks
+average:
+ 0ms waiting for transaction
+ 0ms request delay
+ 4019ms running transaction
+ 0ms transaction was being locked
+ 0ms flushing data (in ordered mode)
+ 26ms logging transaction
+ 22584us average transaction commit time
+ 72 handles per transaction
+ 5 blocks per transaction
+ 6 logged blocks per transaction
+End-of-file
+}
+
+# real QA test starts here
+home="$PCP_PMDAS_DIR"
+iam=jbd2
+domain=122
+cd "$home/$iam"
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH "$tmp.pmcd.conf"
+cache=$PCP_VAR_DIR/config/pmda/${domain}.0
+[ -f $cache ] && $sudo mv $cache $tmp.cache
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+# create a temporary directory for testing
+mkdir "$tmp.jbd2.dir"
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out | \
+sed -e 's/[0-9][0-9]* metrics and [0-9][0-9]* values/ok/g'
+
+# append option to look from /proc/fs/jbd2
+sed < $PCP_PMCDCONF_PATH \
+ -e "/^$iam.*/s/$/ -j JBD2PATH/" \
+ -e "s,JBD2PATH,$tmp.jbd2.dir,g" \
+ > $tmp.conf
+$sudo cp $tmp.conf $PCP_PMCDCONF_PATH
+$sudo rm -f $cache # local host indom cache
+$sudo $PCP_BINADM_DIR/pmsignal -a -s HUP pmcd
+
+jbd2filter()
+{
+ sed \
+ -e 's/64-bit unsigned int/NN-bit unsigned int/g' \
+ -e 's/32-bit unsigned int/NN-bit unsigned int/g' \
+ # the end
+}
+
+jbd2fetch()
+{
+ if pminfo $iam | LC_COLLATE=POSIX sort >$tmp.names
+ then
+ for name in `cat $tmp.names`
+ do
+ pminfo -fdmtT $name | jbd2filter | LC_COLLATE=POSIX sort -n
+ done
+ else
+ echo "... failed!"
+ fi
+}
+
+echo
+echo "=== validate values, no instances ==="
+rm -fr ${tmp}.jbd2.dir/*
+jbd2fetch
+
+echo
+echo "=== add some older-format instances ==="
+format_v2
+jbd2fetch
+rm -fr ${tmp}.jbd2.dir/*
+
+echo
+echo "=== add some newer-format instances ==="
+format_v3
+jbd2fetch
+rm -fr ${tmp}.jbd2.dir/*
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+status=0
+exit
diff --git a/qa/725.out b/qa/725.out
new file mode 100644
index 0000000..3da5213
--- /dev/null
+++ b/qa/725.out
@@ -0,0 +1,571 @@
+QA output created by 725
+
+=== jbd2 agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "jbd2" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Install jbd2 as a daemon or dso agent? [daemon] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Check jbd2 metrics have appeared ... ok
+
+=== validate values, no instances ===
+
+ Data Type: NN-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+ value 0
+Count of active JBD2 (Journal Block Device v2) devices
+Help:
+jbd2.njournals PMID: 122.0.0 [Count of active JBD2 (Journal Block Device v2) devices]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+Average number of blocks per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.blocks PMID: 122.0.20 [Average transaction blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+Average number of blocks logged per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.blocks_logged PMID: 122.0.21 [Average logged blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+Average number of handles used per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.handles PMID: 122.0.22 [Average handle count per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+Average transaction locked time over all transactions since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.time.being_locked PMID: 122.0.16 [Average locked time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: microsec
+Average time spent committing transactions for all transactions since
+Help:
+No value(s) available!
+jbd2.transaction.average.time.committing PMID: 122.0.19 [Average commit time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+Average time flushing data (ordered mode) for all transactions since
+Help:
+No value(s) available!
+jbd2.transaction.average.time.flushing_ordered_mode_data PMID: 122.0.17 [Average data flush time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+Average time spent logging transactions for all transactions since
+Help:
+No value(s) available!
+jbd2.transaction.average.time.logging PMID: 122.0.18 [Average logging time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+Average request delay for all transactions to complete since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.time.request_delay PMID: 122.0.14 [Average request delay per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+Average transaction running time over all transactions since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.time.running PMID: 122.0.15 [Average running time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+Average time spent waiting for transactions to complete since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.time.waiting PMID: 122.0.13 [Average time waiting per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+Help:
+No value(s) available!
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.count PMID: 122.0.1 [Total transactions committed per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: none
+Help:
+No value(s) available!
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.max_blocks PMID: 122.0.3 [Maximum transaction blocks (buffers) per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+Help:
+No value(s) available!
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.requested PMID: 122.0.2 [Total journal transactions requested per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total number of blocks in all transactions since device mounted.
+jbd2.transaction.total.blocks PMID: 122.0.10 [Total transaction blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total number of blocks logged in all transactions since mount.
+jbd2.transaction.total.blocks_logged PMID: 122.0.11 [Total logged blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total count of handles used in all transactions since mount.
+jbd2.transaction.total.handles PMID: 122.0.12 [Total handle count per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total transaction locked time over all transactions since mount.
+jbd2.transaction.total.time.being_locked PMID: 122.0.7 [Total locked time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+Help:
+No value(s) available!
+Total time flushing data (ordered mode) for all transactions since
+jbd2.transaction.total.time.flushing_ordered_mode_data PMID: 122.0.8 [Total data flush time per journal]
+mount. Derived from values in per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+Help:
+No value(s) available!
+Total time spent logging transactions for all transactions since
+jbd2.transaction.total.time.logging PMID: 122.0.9 [Total logging time per journal]
+mount. Derived from values in per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total request delay for all transactions to complete since mount.
+jbd2.transaction.total.time.request_delay PMID: 122.0.5 [Total request delay per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total transaction running time over all transactions since mount.
+jbd2.transaction.total.time.running PMID: 122.0.6 [Total running time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total time spent waiting for transactions to complete since mount.
+jbd2.transaction.total.time.waiting PMID: 122.0.4 [Total time waiting per journal]
+
+=== add some older-format instances ===
+
+ Data Type: NN-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+ value 1
+Count of active JBD2 (Journal Block Device v2) devices
+Help:
+jbd2.njournals PMID: 122.0.0 [Count of active JBD2 (Journal Block Device v2) devices]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+ inst [0 or "sda1-8"] value 4
+Average number of blocks per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.blocks PMID: 122.0.20 [Average transaction blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+ inst [0 or "sda1-8"] value 5
+Average number of blocks logged per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.blocks_logged PMID: 122.0.21 [Average logged blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+ inst [0 or "sda1-8"] value 262
+Average number of handles used per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.handles PMID: 122.0.22 [Average handle count per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [0 or "sda1-8"] value 0
+Average transaction locked time over all transactions since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.time.being_locked PMID: 122.0.16 [Average locked time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: microsec
+ inst [0 or "sda1-8"] value 52335
+Average time spent committing transactions for all transactions since
+Help:
+jbd2.transaction.average.time.committing PMID: 122.0.19 [Average commit time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [0 or "sda1-8"] value 0
+Average time flushing data (ordered mode) for all transactions since
+Help:
+jbd2.transaction.average.time.flushing_ordered_mode_data PMID: 122.0.17 [Average data flush time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [0 or "sda1-8"] value 35
+Average time spent logging transactions for all transactions since
+Help:
+jbd2.transaction.average.time.logging PMID: 122.0.18 [Average logging time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+Average request delay for all transactions to complete since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+jbd2.transaction.average.time.request_delay PMID: 122.0.14 [Average request delay per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [0 or "sda1-8"] value 5327
+Average transaction running time over all transactions since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.time.running PMID: 122.0.15 [Average running time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [0 or "sda1-8"] value 0
+Average time spent waiting for transactions to complete since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.time.waiting PMID: 122.0.13 [Average time waiting per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [0 or "sda1-8"] value 24
+Help:
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.count PMID: 122.0.1 [Total transactions committed per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: none
+ inst [0 or "sda1-8"] value 2048
+Help:
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.max_blocks PMID: 122.0.3 [Maximum transaction blocks (buffers) per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+Help:
+No value(s) available!
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.requested PMID: 122.0.2 [Total journal transactions requested per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [0 or "sda1-8"] value 96
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total number of blocks in all transactions since device mounted.
+jbd2.transaction.total.blocks PMID: 122.0.10 [Total transaction blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [0 or "sda1-8"] value 120
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total number of blocks logged in all transactions since mount.
+jbd2.transaction.total.blocks_logged PMID: 122.0.11 [Total logged blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [0 or "sda1-8"] value 6288
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total count of handles used in all transactions since mount.
+jbd2.transaction.total.handles PMID: 122.0.12 [Total handle count per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [0 or "sda1-8"] value 0
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total transaction locked time over all transactions since mount.
+jbd2.transaction.total.time.being_locked PMID: 122.0.7 [Total locked time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [0 or "sda1-8"] value 0
+Help:
+Total time flushing data (ordered mode) for all transactions since
+jbd2.transaction.total.time.flushing_ordered_mode_data PMID: 122.0.8 [Total data flush time per journal]
+mount. Derived from values in per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [0 or "sda1-8"] value 840
+Help:
+Total time spent logging transactions for all transactions since
+jbd2.transaction.total.time.logging PMID: 122.0.9 [Total logging time per journal]
+mount. Derived from values in per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+No value(s) available!
+Total request delay for all transactions to complete since mount.
+jbd2.transaction.total.time.request_delay PMID: 122.0.5 [Total request delay per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [0 or "sda1-8"] value 127848
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total transaction running time over all transactions since mount.
+jbd2.transaction.total.time.running PMID: 122.0.6 [Total running time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [0 or "sda1-8"] value 0
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total time spent waiting for transactions to complete since mount.
+jbd2.transaction.total.time.waiting PMID: 122.0.4 [Total time waiting per journal]
+
+=== add some newer-format instances ===
+
+ Data Type: NN-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+ value 1
+Count of active JBD2 (Journal Block Device v2) devices
+Help:
+jbd2.njournals PMID: 122.0.0 [Count of active JBD2 (Journal Block Device v2) devices]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+ inst [1 or "dm-1-8"] value 5
+Average number of blocks per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.blocks PMID: 122.0.20 [Average transaction blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+ inst [1 or "dm-1-8"] value 6
+Average number of blocks logged per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.blocks_logged PMID: 122.0.21 [Average logged blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: count
+ inst [1 or "dm-1-8"] value 72
+Average number of handles used per transaction for all transactions.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.handles PMID: 122.0.22 [Average handle count per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Average transaction locked time over all transactions since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.time.being_locked PMID: 122.0.16 [Average locked time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: microsec
+ inst [1 or "dm-1-8"] value 22584
+Average time spent committing transactions for all transactions since
+Help:
+jbd2.transaction.average.time.committing PMID: 122.0.19 [Average commit time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Average time flushing data (ordered mode) for all transactions since
+Help:
+jbd2.transaction.average.time.flushing_ordered_mode_data PMID: 122.0.17 [Average data flush time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [1 or "dm-1-8"] value 26
+Average time spent logging transactions for all transactions since
+Help:
+jbd2.transaction.average.time.logging PMID: 122.0.18 [Average logging time per journal]
+mount. Exported directly from per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Average request delay for all transactions to complete since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.time.request_delay PMID: 122.0.14 [Average request delay per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [1 or "dm-1-8"] value 4019
+Average transaction running time over all transactions since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.time.running PMID: 122.0.15 [Average running time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Average time spent waiting for transactions to complete since mount.
+Exported directly from per-device /proc/fs/jbd2 info files.
+Help:
+jbd2.transaction.average.time.waiting PMID: 122.0.13 [Average time waiting per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [1 or "dm-1-8"] value 6117
+Help:
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.count PMID: 122.0.1 [Total transactions committed per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: instant Units: none
+ inst [1 or "dm-1-8"] value 8192
+Help:
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.max_blocks PMID: 122.0.3 [Maximum transaction blocks (buffers) per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [1 or "dm-1-8"] value 19053
+Help:
+This metric is sourced from the per-device /proc/fs/jbd2 info file.
+jbd2.transaction.requested PMID: 122.0.2 [Total journal transactions requested per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [1 or "dm-1-8"] value 30585
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total number of blocks in all transactions since device mounted.
+jbd2.transaction.total.blocks PMID: 122.0.10 [Total transaction blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [1 or "dm-1-8"] value 36702
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total number of blocks logged in all transactions since mount.
+jbd2.transaction.total.blocks_logged PMID: 122.0.11 [Total logged blocks per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: count
+ inst [1 or "dm-1-8"] value 440424
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total count of handles used in all transactions since mount.
+jbd2.transaction.total.handles PMID: 122.0.12 [Total handle count per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total transaction locked time over all transactions since mount.
+jbd2.transaction.total.time.being_locked PMID: 122.0.7 [Total locked time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Help:
+Total time flushing data (ordered mode) for all transactions since
+jbd2.transaction.total.time.flushing_ordered_mode_data PMID: 122.0.8 [Total data flush time per journal]
+mount. Derived from values in per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [1 or "dm-1-8"] value 159042
+Help:
+Total time spent logging transactions for all transactions since
+jbd2.transaction.total.time.logging PMID: 122.0.9 [Total logging time per journal]
+mount. Derived from values in per-device /proc/fs/jbd2 info files.
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total request delay for all transactions to complete since mount.
+jbd2.transaction.total.time.request_delay PMID: 122.0.5 [Total request delay per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [1 or "dm-1-8"] value 24584223
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total transaction running time over all transactions since mount.
+jbd2.transaction.total.time.running PMID: 122.0.6 [Total running time per journal]
+
+ Data Type: NN-bit unsigned int InDom: 122.0 0x1e800000
+ Semantics: counter Units: millisec
+ inst [1 or "dm-1-8"] value 0
+Derived from values in the per-device /proc/fs/jbd2 info files.
+Help:
+Total time spent waiting for transactions to complete since mount.
+jbd2.transaction.total.time.waiting PMID: 122.0.4 [Total time waiting per journal]
+
+=== remove jbd2 agent ===
+Culling the Performance Metrics Name Space ...
+jbd2 ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check jbd2 metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/726 b/qa/726
new file mode 100755
index 0000000..b563578
--- /dev/null
+++ b/qa/726
@@ -0,0 +1,72 @@
+#!/bin/sh
+# PCP QA Test No. 726
+# Exercise optimal pmlogger handling of config duplicates
+# (metrics and instances).
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+test $PCP_VER -ge 3811 || _notrun Need newer pmlogger version
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat <<End-of-File | pmlogger -r -l $tmp.log -T 1sec $tmp
+log mandatory on once {
+ sample.control
+}
+log mandatory on once {
+ sample.long.one
+}
+log mandatory on once {
+ sample.float.one
+}
+log mandatory on once {
+ sample.double.one
+}
+log mandatory on once {
+ sample.string.null
+}
+log mandatory on once {
+ sample.bin [ "bin-700" ]
+ sample.bin [ "bin-800" ]
+ sample.bin [ "bin-100" ]
+}
+log mandatory on once {
+ sample.control
+ sample.long.one
+ sample.float.one
+ sample.double.one
+ sample.string.null
+ sample.string.hullo
+ sample.bin [ "bin-100", "bin-500" ]
+}
+log mandatory on once {
+ sample.bin [ "bin-500" ]
+}
+log mandatory on once {
+ sample.string.hullo
+}
+End-of-File
+echo "pmlogger log file contents" >> $seq.full
+cat $tmp.log >> $seq.full
+
+echo "pmlogger archive contents" >> $seq.full
+pmdumplog -s $tmp 2>&1 \
+| tee -a $seq.full \
+| _filter_pmdumplog \
+| sed -e '1,/pmcd.pmlogger.archive/d'
+
+# success, all done
+status=0
+exit
diff --git a/qa/726.out b/qa/726.out
new file mode 100644
index 0000000..3eca35a
--- /dev/null
+++ b/qa/726.out
@@ -0,0 +1,14 @@
+QA output created by 726
+
+[232 bytes]
+TIMESTAMP 29.0.31 (sample.string.hullo): value "hullo world!"
+ 29.0.30 (sample.string.null): value ""
+ 29.0.25 (sample.double.one): value 1
+ 29.0.15 (sample.float.one): value 1
+ 29.0.10 (sample.long.one): value 1
+ 29.0.6 (sample.bin):
+ inst [100 or "bin-100"] value 100
+ inst [500 or "bin-500"] value 500
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ 29.0.0 (sample.control): value 0
diff --git a/qa/727 b/qa/727
new file mode 100755
index 0000000..f173924
--- /dev/null
+++ b/qa/727
@@ -0,0 +1,23 @@
+#!/bin/sh
+# PCP QA Test No. 727
+# Check that pmwebd advertises its presence using avahi
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.avahi
+avahi_notrun_checks
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "avahi_cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+service=pmwebd
+avahi_service
+avahi_verify
+status=0
+exit
diff --git a/qa/727.out b/qa/727.out
new file mode 100644
index 0000000..2460f80
--- /dev/null
+++ b/qa/727.out
@@ -0,0 +1,3 @@
+QA output created by 727
+Verify pmwebd avahi service advertising
+ hostname = [HOSTNAME.local]
diff --git a/qa/728 b/qa/728
new file mode 100644
index 0000000..60299ae
--- /dev/null
+++ b/qa/728
@@ -0,0 +1,90 @@
+#!/bin/sh
+# PCP QA Test No. 728
+# Basic workout for pmGetOptions PMAPI interfaces.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+test $PCP_VER -ge 3901 || _notrun "No support for pmGetOptions"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo '== Arguments: none'
+$here/src/getoptions
+
+echo '== Arguments: usage (x2)'
+$here/src/getoptions -?
+$here/src/getoptions --help
+
+echo '== Arguments: own options (x2)'
+$here/src/getoptions -x -X goodness
+$here/src/getoptions --extra --eXtra goodness
+
+echo '== Arguments: own short-only options'
+$here/src/getoptions -y -Y not
+
+echo '== Arguments: own long-only options'
+$here/src/getoptions --fubar --foobar eek
+
+echo '== Arguments: one archive, all time options (x2)'
+$here/src/getoptions -a src/20041125.0 -z \
+ -A "1 minute" -O "@10:10:10" -S "@10:15" -T "@10:30" \
+ $here/src/getoptions
+$here/src/getoptions --archive src/20041125.0 --hostzone \
+ --align "1 minute" --origin "@10:10:10" \
+ --start "@10:15" --finish "@10:30" $here/src/getoptions
+
+echo '== Arguments: one host (x2)'
+$here/src/getoptions -h foo.bar.com -t 1sec -s 5
+$here/src/getoptions --host foo.bar.com --interval 1sec --samples 5
+
+echo '== Arguments: environment variables only'
+PM_OPTFLAG_ENV_ONLY=true PCP_HOST=pcp.org $here/src/getoptions -h non.org
+
+echo '== Arguments: host, interval and samples env vars'
+PCP_HOST=pcp.org PCP_INTERVAL="2 seconds" PCP_SAMPLES=5 $here/src/getoptions
+
+echo '== Arguments: host list env var'
+PCP_HOST_LIST=foo.com,bar.org $here/src/getoptions
+
+echo '== Arguments: archive, time window env vars'
+PCP_ARCHIVE=src/20041125.0 PCP_HOSTZONE=true \
+ PCP_ALIGN="1 minute" PCP_ORIGIN="@10:10:10" \
+ PCP_START_TIME="@10:15" PCP_FINISH_TIME="@10:30" $here/src/getoptions
+
+echo '== Arguments: archive list env var'
+PCP_ARCHIVE_LIST=foo,bar,moo $here/src/getoptions
+
+echo '== Arguments: one archive env var'
+PCP_ARCHIVE=foo $here/src/getoptions
+
+echo '== Arguments: timezone env var'
+PCP_TIMEZONE=UTC $here/src/getoptions
+
+echo '== Arguments: hostzone env var'
+PCP_HOSTZONE=true $here/src/getoptions
+
+echo '== Arguments: gui port env var (x2)'
+PCP_GUIPORT=42 $here/src/getoptions
+PCP_GUIPORT=/tmp/socket $here/src/getoptions
+
+echo '== Arguments: gui mode env var'
+PCP_GUIFLAG=true $here/src/getoptions
+
+echo '== Arguments: allow mixed hosts and archives'
+PM_OPTFLAG_MIXED=true PCP_HOST=acme.com PCP_ARCHIVE=log $here/src/getoptions
+
+# success, all done
+status=0
+exit
diff --git a/qa/728.out b/qa/728.out
new file mode 100644
index 0000000..053ab76
--- /dev/null
+++ b/qa/728.out
@@ -0,0 +1,787 @@
+QA output created by 728
+== Arguments: none
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: usage (x2)
+Warning: usage error detected
+Usage: getoptions [options]
+
+General options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -V, --version display version number and exit
+ -?, --help show this usage message and exit
+
+Context options:
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -H FILE, --hostsfile=FILE
+ read metric source hosts from a file
+ --host-list=HOSTS comma-separated list of metric source hosts
+ --archive-list=FILES comma-separated list of metric source archives
+ --archive-folio=FILE read metric source archives from a folio
+
+Testing options:
+ -x, --extra an extra option, for testing
+ -X ARG, --eXtra=ARG an extra option with an argument
+ -y a short-option-only without argument
+ -Y N a short-option-only with an argument
+ --fubar a long-option-only without argument
+ --foobar=N a long-option-only with an argument
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0xb (init,done,usage_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+Warning: usage error detected
+Usage: getoptions [options]
+
+General options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -V, --version display version number and exit
+ -?, --help show this usage message and exit
+
+Context options:
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -H FILE, --hostsfile=FILE
+ read metric source hosts from a file
+ --host-list=HOSTS comma-separated list of metric source hosts
+ --archive-list=FILES comma-separated list of metric source archives
+ --archive-folio=FILE read metric source archives from a folio
+
+Testing options:
+ -x, --extra an extra option, for testing
+ -X ARG, --eXtra=ARG an extra option with an argument
+ -y a short-option-only without argument
+ -Y N a short-option-only with an argument
+ --fubar a long-option-only without argument
+ --foobar=N a long-option-only with an argument
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0xb (init,done,usage_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: own options (x2)
+Got option: x index=0 [errors=0]
+ -> x option has no argument
+Got option: X index=0 [errors=0]
+ -> X option argument was: '(null)'
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+Got option: x index=25 [errors=0]
+ -> x option has no argument
+Got option: X index=26 [errors=0]
+ -> X option argument was: 'goodness'
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: own short-only options
+Got option: y index=0 [errors=0]
+ -> y option has no argument
+Got option: Y index=0 [errors=0]
+ -> Y option argument was: '(null)'
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: own long-only options
+Got option: - index=29 [errors=0]
+ -> long-only option index=29
+Got option: - index=30 [errors=0]
+ -> long-only option index=30
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: one archive, all time options (x2)
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 1
+ archives: src/20041125.0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: 1 minute
+ start_optarg: @10:15
+ finish_optarg: @10:30
+ origin_optarg: @10:10:10
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 1
+ Lflag: 0
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 1
+ archives: src/20041125.0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: 1 minute
+ start_optarg: @10:15
+ finish_optarg: @10:30
+ origin_optarg: @10:10:10
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 1
+ Lflag: 0
+== Arguments: one host (x2)
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x1 (host)
+ nhosts: 1
+ hosts: foo.bar.com
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: 00:01.000
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 5
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x1 (host)
+ nhosts: 1
+ hosts: foo.bar.com
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: 00:01.000
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 5
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: environment variables only
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x103 (init,done,env_only)
+ errors: 0
+ context: 0x1 (host)
+ nhosts: 1
+ hosts: pcp.org
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: host, interval and samples env vars
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x1 (host)
+ nhosts: 1
+ hosts: pcp.org
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: 00:02.000
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 5
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: host list env var
+Warning: usage error detected
+getoptions: too many hosts requested: foo.com,bar.org
+Usage: getoptions [options]
+
+General options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -V, --version display version number and exit
+ -?, --help show this usage message and exit
+
+Context options:
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -H FILE, --hostsfile=FILE
+ read metric source hosts from a file
+ --host-list=HOSTS comma-separated list of metric source hosts
+ --archive-list=FILES comma-separated list of metric source archives
+ --archive-folio=FILE read metric source archives from a folio
+
+Testing options:
+ -x, --extra an extra option, for testing
+ -X ARG, --eXtra=ARG an extra option with an argument
+ -y a short-option-only without argument
+ -Y N a short-option-only with an argument
+ --fubar a long-option-only without argument
+ --foobar=N a long-option-only with an argument
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0xb (init,done,usage_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: archive, time window env vars
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 1
+ archives: src/20041125.0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: @10:15
+ finish_optarg: @10:30
+ origin_optarg: @10:10:10
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 1
+ Lflag: 0
+== Arguments: archive list env var
+Warning: usage error detected
+getoptions: too many archives requested: foo,bar,moo
+Usage: getoptions [options]
+
+General options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -V, --version display version number and exit
+ -?, --help show this usage message and exit
+
+Context options:
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -H FILE, --hostsfile=FILE
+ read metric source hosts from a file
+ --host-list=HOSTS comma-separated list of metric source hosts
+ --archive-list=FILES comma-separated list of metric source archives
+ --archive-folio=FILE read metric source archives from a folio
+
+Testing options:
+ -x, --extra an extra option, for testing
+ -X ARG, --eXtra=ARG an extra option with an argument
+ -y a short-option-only without argument
+ -Y N a short-option-only with an argument
+ --fubar a long-option-only without argument
+ --foobar=N a long-option-only with an argument
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0xb (init,done,usage_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: one archive env var
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 1
+ archives: foo
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: timezone env var
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: UTC
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: hostzone env var
+Warning: usage error detected
+getoptions: use of timezone from metric source requires a source
+Usage: getoptions [options]
+
+General options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -V, --version display version number and exit
+ -?, --help show this usage message and exit
+
+Context options:
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -H FILE, --hostsfile=FILE
+ read metric source hosts from a file
+ --host-list=HOSTS comma-separated list of metric source hosts
+ --archive-list=FILES comma-separated list of metric source archives
+ --archive-folio=FILE read metric source archives from a folio
+
+Testing options:
+ -x, --extra an extra option, for testing
+ -X ARG, --eXtra=ARG an extra option with an argument
+ -y a short-option-only without argument
+ -Y N a short-option-only with an argument
+ --fubar a long-option-only without argument
+ --foobar=N a long-option-only with an argument
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0xb (init,done,usage_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 1
+ Lflag: 0
+== Arguments: gui port env var (x2)
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: 42
+ timezone: -
+ samples: 0
+ guiport: 42
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: /tmp/socket
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: gui mode env var
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x3 (init,done)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Arguments: allow mixed hosts and archives
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x83 (init,done,mixed)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 1
+ hosts: acme.com
+ narchives: 1
+ archives: log
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
diff --git a/qa/729 b/qa/729
new file mode 100755
index 0000000..f81f49e
--- /dev/null
+++ b/qa/729
@@ -0,0 +1,48 @@
+#!/bin/sh
+# PCP QA Test No. 729
+# Exercise fixes for a few python API segfaults
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+cat > $tmp.units <<EOF
+import pcp.pmapi
+from pcp.pmapi import c_api
+
+fname = 'src/bug_v2'
+context = pcp.pmapi.pmContext(c_api.PM_CONTEXT_ARCHIVE, fname)
+pmids = context.pmLookupName(['proc.nprocs'])
+descs = context.pmLookupDescs(pmids[0])
+print '%s%s' % (descs[0].contents.units, 'Completed safely')
+EOF
+
+cat > $tmp.parse << EOF
+import pcp.pmapi
+context = pcp.pmapi.pmContext(target='local:')
+try:
+ print(context.pmParseInterval(''))
+except pcp.pmapi.pmErr, error:
+ print 'Completed safely'
+EOF
+
+# real QA test starts here
+echo Exercising units string
+python $tmp.units
+echo Exercising interval parsing
+python $tmp.parse
+
+# success, all done
+status=0
+exit
diff --git a/qa/729.out b/qa/729.out
new file mode 100644
index 0000000..fc797f4
--- /dev/null
+++ b/qa/729.out
@@ -0,0 +1,5 @@
+QA output created by 729
+Exercising units string
+Completed safely
+Exercising interval parsing
+Completed safely
diff --git a/qa/730 b/qa/730
new file mode 100755
index 0000000..c2dd719
--- /dev/null
+++ b/qa/730
@@ -0,0 +1,47 @@
+#!/bin/sh
+# PCP QA Test No. 730
+# Exercising the Linux cgroups metrics
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = linux ] || _notrun "cgroups test, only works with Linux"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+root=$tmp.root
+export PROC_STATSPATH=$root
+pmda=$PCP_PMDAS_DIR/proc/pmda_proc.so,proc_init
+
+for tgz in $here/linux/cgroups-*.tgz
+do
+ rm -fr $root
+ mkdir $root || _fail "root in use when processing $tgz"
+ cd $root
+ tar xzf $tgz
+ base=`basename $tgz`
+
+ echo "== Checking namespace and metric numbering - $base"
+ pminfo -L -K clear -K add,3,$pmda cgroup
+ echo "== Checking metric descriptors and values - $base"
+ pminfo -L -K clear -K add,3,$pmda -d -f cgroup
+ echo "== Checking on an individual metric fetch - $base"
+ pminfo -L -K clear -K add,3,$pmda -f cgroup.groups.blkio.time
+ echo && echo "== done" && echo
+ cd $here
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/730.out b/qa/730.out
new file mode 100644
index 0000000..9d3f184
--- /dev/null
+++ b/qa/730.out
@@ -0,0 +1,822 @@
+QA output created by 730
+== Checking namespace and metric numbering - cgroups-root-001.tgz
+cgroup.groups.blkio.time
+cgroup.groups.blkio.sectors
+cgroup.groups.blkio.io_wait_time.total
+cgroup.groups.blkio.io_wait_time.async
+cgroup.groups.blkio.io_wait_time.sync
+cgroup.groups.blkio.io_wait_time.write
+cgroup.groups.blkio.io_wait_time.read
+cgroup.groups.blkio.io_service_time.total
+cgroup.groups.blkio.io_service_time.async
+cgroup.groups.blkio.io_service_time.sync
+cgroup.groups.blkio.io_service_time.write
+cgroup.groups.blkio.io_service_time.read
+cgroup.groups.blkio.io_serviced.total
+cgroup.groups.blkio.io_serviced.async
+cgroup.groups.blkio.io_serviced.sync
+cgroup.groups.blkio.io_serviced.write
+cgroup.groups.blkio.io_serviced.read
+cgroup.groups.blkio.io_service_bytes.total
+cgroup.groups.blkio.io_service_bytes.async
+cgroup.groups.blkio.io_service_bytes.sync
+cgroup.groups.blkio.io_service_bytes.write
+cgroup.groups.blkio.io_service_bytes.read
+cgroup.groups.blkio.io_queued.total
+cgroup.groups.blkio.io_queued.async
+cgroup.groups.blkio.io_queued.sync
+cgroup.groups.blkio.io_queued.write
+cgroup.groups.blkio.io_queued.read
+cgroup.groups.blkio.io_merged.total
+cgroup.groups.blkio.io_merged.async
+cgroup.groups.blkio.io_merged.sync
+cgroup.groups.blkio.io_merged.write
+cgroup.groups.blkio.io_merged.read
+cgroup.groups.net_cls.classid
+cgroup.groups.memory.libvirt.lxc.stat.total_unevictable
+cgroup.groups.memory.libvirt.lxc.stat.total_active_file
+cgroup.groups.memory.libvirt.lxc.stat.total_inactive_file
+cgroup.groups.memory.libvirt.lxc.stat.total_active_anon
+cgroup.groups.memory.libvirt.lxc.stat.total_inactive_anon
+cgroup.groups.memory.libvirt.lxc.stat.total_swap
+cgroup.groups.memory.libvirt.lxc.stat.total_pgpgout
+cgroup.groups.memory.libvirt.lxc.stat.total_pgpgin
+cgroup.groups.memory.libvirt.lxc.stat.total_mapped_file
+cgroup.groups.memory.libvirt.lxc.stat.total_rss
+cgroup.groups.memory.libvirt.lxc.stat.total_cache
+cgroup.groups.memory.libvirt.lxc.stat.unevictable
+cgroup.groups.memory.libvirt.lxc.stat.active_file
+cgroup.groups.memory.libvirt.lxc.stat.inactive_file
+cgroup.groups.memory.libvirt.lxc.stat.active_anon
+cgroup.groups.memory.libvirt.lxc.stat.inactive_anon
+cgroup.groups.memory.libvirt.lxc.stat.swap
+cgroup.groups.memory.libvirt.lxc.stat.pgpgout
+cgroup.groups.memory.libvirt.lxc.stat.pgpgin
+cgroup.groups.memory.libvirt.lxc.stat.mapped_file
+cgroup.groups.memory.libvirt.lxc.stat.rss
+cgroup.groups.memory.libvirt.lxc.stat.cache
+cgroup.groups.memory.libvirt.stat.total_unevictable
+cgroup.groups.memory.libvirt.stat.total_active_file
+cgroup.groups.memory.libvirt.stat.total_inactive_file
+cgroup.groups.memory.libvirt.stat.total_active_anon
+cgroup.groups.memory.libvirt.stat.total_inactive_anon
+cgroup.groups.memory.libvirt.stat.total_swap
+cgroup.groups.memory.libvirt.stat.total_pgpgout
+cgroup.groups.memory.libvirt.stat.total_pgpgin
+cgroup.groups.memory.libvirt.stat.total_mapped_file
+cgroup.groups.memory.libvirt.stat.total_rss
+cgroup.groups.memory.libvirt.stat.total_cache
+cgroup.groups.memory.libvirt.stat.unevictable
+cgroup.groups.memory.libvirt.stat.active_file
+cgroup.groups.memory.libvirt.stat.inactive_file
+cgroup.groups.memory.libvirt.stat.active_anon
+cgroup.groups.memory.libvirt.stat.inactive_anon
+cgroup.groups.memory.libvirt.stat.swap
+cgroup.groups.memory.libvirt.stat.pgpgout
+cgroup.groups.memory.libvirt.stat.pgpgin
+cgroup.groups.memory.libvirt.stat.mapped_file
+cgroup.groups.memory.libvirt.stat.rss
+cgroup.groups.memory.libvirt.stat.cache
+cgroup.groups.memory.stat.total_unevictable
+cgroup.groups.memory.stat.total_active_file
+cgroup.groups.memory.stat.total_inactive_file
+cgroup.groups.memory.stat.total_active_anon
+cgroup.groups.memory.stat.total_inactive_anon
+cgroup.groups.memory.stat.total_swap
+cgroup.groups.memory.stat.total_pgpgout
+cgroup.groups.memory.stat.total_pgpgin
+cgroup.groups.memory.stat.total_mapped_file
+cgroup.groups.memory.stat.total_rss
+cgroup.groups.memory.stat.total_cache
+cgroup.groups.memory.stat.unevictable
+cgroup.groups.memory.stat.active_file
+cgroup.groups.memory.stat.inactive_file
+cgroup.groups.memory.stat.active_anon
+cgroup.groups.memory.stat.inactive_anon
+cgroup.groups.memory.stat.swap
+cgroup.groups.memory.stat.pgpgout
+cgroup.groups.memory.stat.pgpgin
+cgroup.groups.memory.stat.mapped_file
+cgroup.groups.memory.stat.rss
+cgroup.groups.memory.stat.cache
+cgroup.groups.cpuacct.libvirt.lxc.usage_percpu
+cgroup.groups.cpuacct.libvirt.lxc.usage
+cgroup.groups.cpuacct.libvirt.lxc.stat.system
+cgroup.groups.cpuacct.libvirt.lxc.stat.user
+cgroup.groups.cpuacct.libvirt.usage_percpu
+cgroup.groups.cpuacct.libvirt.usage
+cgroup.groups.cpuacct.libvirt.stat.system
+cgroup.groups.cpuacct.libvirt.stat.user
+cgroup.groups.cpuacct.usage_percpu
+cgroup.groups.cpuacct.usage
+cgroup.groups.cpuacct.stat.system
+cgroup.groups.cpuacct.stat.user
+cgroup.groups.cpu.libvirt.lxc.shares
+cgroup.groups.cpu.libvirt.shares
+cgroup.groups.cpu.shares
+cgroup.subsys.hierarchy
+cgroup.subsys.count
+cgroup.mounts.subsys
+cgroup.mounts.count
+== Checking metric descriptors and values - cgroups-root-001.tgz
+
+cgroup.groups.blkio.time
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: millisec
+ inst [0 or "sdb"] value 8
+ inst [2 or "sda"] value 8
+ inst [5 or "sr0"] value 11
+
+cgroup.groups.blkio.sectors
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 8
+ inst [2 or "sda"] value 8
+ inst [5 or "sr0"] value 11
+
+cgroup.groups.blkio.io_wait_time.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 540740836935
+ inst [2 or "sda"] value 42324806249
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 363393967184
+ inst [2 or "sda"] value 31619553985
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 177346869751
+ inst [2 or "sda"] value 10705252264
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 366199570097
+ inst [2 or "sda"] value 32138810736
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 174541266838
+ inst [2 or "sda"] value 10185995513
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 281209544538
+ inst [2 or "sda"] value 128437836527
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 76859594134
+ inst [2 or "sda"] value 42556085462
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 204349950404
+ inst [2 or "sda"] value 85881751065
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 81981341934
+ inst [2 or "sda"] value 43069039782
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 199228202604
+ inst [2 or "sda"] value 85368796745
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 71199
+ inst [2 or "sda"] value 26733
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 10805
+ inst [2 or "sda"] value 15021
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 60394
+ inst [2 or "sda"] value 11712
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 16519
+ inst [2 or "sda"] value 15567
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 54680
+ inst [2 or "sda"] value 11166
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 1217747968
+ inst [2 or "sda"] value 375664640
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 198193152
+ inst [2 or "sda"] value 210872832
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 1019554816
+ inst [2 or "sda"] value 164791808
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 295747584
+ inst [2 or "sda"] value 242914816
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 922000384
+ inst [2 or "sda"] value 132749824
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 73910
+ inst [2 or "sda"] value 1528
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 33144
+ inst [2 or "sda"] value 1237
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 40766
+ inst [2 or "sda"] value 291
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 49776
+ inst [2 or "sda"] value 1242
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 24134
+ inst [2 or "sda"] value 286
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.net_cls.classid
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.stat.total_unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 16384
+
+cgroup.groups.memory.stat.total_active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 430522368
+
+cgroup.groups.memory.stat.total_inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 470528000
+
+cgroup.groups.memory.stat.total_active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 480120832
+
+cgroup.groups.memory.stat.total_inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 8019968
+
+cgroup.groups.memory.stat.total_swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.stat.total_pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4008706
+
+cgroup.groups.memory.stat.total_pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4313639
+
+cgroup.groups.memory.stat.total_mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 106840064
+
+cgroup.groups.memory.stat.total_rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 479805440
+
+cgroup.groups.memory.stat.total_cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 909434880
+
+cgroup.groups.memory.stat.unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 16384
+
+cgroup.groups.memory.stat.active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 430522368
+
+cgroup.groups.memory.stat.inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 470528000
+
+cgroup.groups.memory.stat.active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 480120832
+
+cgroup.groups.memory.stat.inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 8019968
+
+cgroup.groups.memory.stat.swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.stat.pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4008706
+
+cgroup.groups.memory.stat.pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4313639
+
+cgroup.groups.memory.stat.mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 106840064
+
+cgroup.groups.memory.stat.rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 479805440
+
+cgroup.groups.memory.stat.cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 909434880
+
+cgroup.groups.cpuacct.libvirt.lxc.usage_percpu
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+
+cgroup.groups.cpuacct.libvirt.lxc.usage
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+ value 0
+
+cgroup.groups.cpuacct.libvirt.lxc.stat.system
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 0
+
+cgroup.groups.cpuacct.libvirt.lxc.stat.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 0
+
+cgroup.groups.cpuacct.libvirt.usage_percpu
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+ inst [0 or "cpu0"] value 837880387456
+ inst [1 or "cpu1"] value 791812411026
+ inst [2 or "cpu2"] value 839508086847
+ inst [3 or "cpu3"] value 814371336334
+ inst [4 or "cpu4"] value 735998138072
+ inst [5 or "cpu5"] value 721151202093
+ inst [6 or "cpu6"] value 833638956358
+ inst [7 or "cpu7"] value 872599226711
+
+cgroup.groups.cpuacct.libvirt.usage
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+ value 6446959756151
+
+cgroup.groups.cpuacct.libvirt.stat.system
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 384901
+
+cgroup.groups.cpuacct.libvirt.stat.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 43622
+
+cgroup.groups.cpuacct.usage_percpu
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+ inst [0 or "cpu0"] value 1627403799055
+ inst [1 or "cpu1"] value 1402796290832
+ inst [2 or "cpu2"] value 1179015192815
+ inst [3 or "cpu3"] value 1191687607792
+ inst [4 or "cpu4"] value 1118986660943
+ inst [5 or "cpu5"] value 1107246126589
+ inst [6 or "cpu6"] value 995495472641
+ inst [7 or "cpu7"] value 999320975984
+
+cgroup.groups.cpuacct.usage
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+ value 9621952148817
+
+cgroup.groups.cpuacct.stat.system
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 582900
+
+cgroup.groups.cpuacct.stat.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 142247
+
+cgroup.groups.cpu.libvirt.lxc.shares
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+ value 1024
+
+cgroup.groups.cpu.libvirt.shares
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+ value 1024
+
+cgroup.groups.cpu.shares
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+ value 1024
+
+cgroup.subsys.hierarchy
+ Data Type: 32-bit unsigned int InDom: 3.20 0xc00014
+ Semantics: instant Units: none
+ inst [0 or "cpuset"] value 1
+ inst [1 or "ns"] value 0
+ inst [2 or "cpu"] value 2
+ inst [3 or "cpuacct"] value 3
+ inst [4 or "memory"] value 4
+ inst [5 or "devices"] value 5
+ inst [6 or "freezer"] value 6
+ inst [7 or "net_cls"] value 7
+ inst [8 or "blkio"] value 8
+ inst [9 or "perf_event"] value 0
+ inst [10 or "net_prio"] value 0
+
+cgroup.subsys.count
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+ value 11
+
+cgroup.mounts.subsys
+ Data Type: string InDom: 3.21 0xc00015
+ Semantics: instant Units: none
+ inst [0 or "/cgroup/cpuset"] value "cpuset"
+ inst [1 or "/cgroup/cpu"] value "cpu"
+ inst [2 or "/cgroup/cpuacct"] value "cpuacct"
+ inst [3 or "/cgroup/memory"] value "memory"
+ inst [4 or "/cgroup/devices"] value "devices"
+ inst [5 or "/cgroup/freezer"] value "freezer"
+ inst [6 or "/cgroup/net_cls"] value "net_cls"
+ inst [7 or "/cgroup/blkio"] value "blkio"
+
+cgroup.mounts.count
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+ value 8
+== Checking on an individual metric fetch - cgroups-root-001.tgz
+
+cgroup.groups.blkio.time
+ inst [0 or "sdb"] value 8
+ inst [2 or "sda"] value 8
+ inst [5 or "sr0"] value 11
+
+== done
+
diff --git a/qa/731 b/qa/731
new file mode 100755
index 0000000..fc1a331
--- /dev/null
+++ b/qa/731
@@ -0,0 +1,51 @@
+#!/bin/sh
+# PCP QA Test No. 731
+# Valgrind access checking for the Linux cgroups metrics
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = linux ] || _notrun "cgroups test, only works with Linux"
+_check_valgrind
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e \
+ "s,$PCP_PMDAS_DIR/,,g" \
+ # end
+}
+
+# real QA test starts here
+root=$tmp.root
+export PROC_STATSPATH=$root
+pmda=$PCP_PMDAS_DIR/proc/pmda_proc.so,proc_init
+
+for tgz in $here/linux/cgroups-*.tgz
+do
+ rm -fr $root
+ mkdir $root || _fail "root in use when processing $tgz"
+ cd $root
+ tar xzf $tgz
+ base=`basename $tgz`
+
+ echo "== Running valgrind for cgroup fetch - $base"
+ cd $here
+ _run_valgrind pminfo -L -K clear -K add,3,$pmda -d -f cgroup 2>&1 | _filter
+ echo && echo "== done" && echo
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/731.out b/qa/731.out
new file mode 100644
index 0000000..94a2473
--- /dev/null
+++ b/qa/731.out
@@ -0,0 +1,706 @@
+QA output created by 731
+== Running valgrind for cgroup fetch - cgroups-root-001.tgz
+=== std out ===
+
+cgroup.groups.blkio.time
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: millisec
+ inst [0 or "sdb"] value 8
+ inst [2 or "sda"] value 8
+ inst [5 or "sr0"] value 11
+
+cgroup.groups.blkio.sectors
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 8
+ inst [2 or "sda"] value 8
+ inst [5 or "sr0"] value 11
+
+cgroup.groups.blkio.io_wait_time.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 540740836935
+ inst [2 or "sda"] value 42324806249
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 363393967184
+ inst [2 or "sda"] value 31619553985
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 177346869751
+ inst [2 or "sda"] value 10705252264
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 366199570097
+ inst [2 or "sda"] value 32138810736
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_wait_time.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 174541266838
+ inst [2 or "sda"] value 10185995513
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 281209544538
+ inst [2 or "sda"] value 128437836527
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 76859594134
+ inst [2 or "sda"] value 42556085462
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 204349950404
+ inst [2 or "sda"] value 85881751065
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 81981341934
+ inst [2 or "sda"] value 43069039782
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_time.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: nanosec
+ inst [0 or "sdb"] value 199228202604
+ inst [2 or "sda"] value 85368796745
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 71199
+ inst [2 or "sda"] value 26733
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 10805
+ inst [2 or "sda"] value 15021
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 60394
+ inst [2 or "sda"] value 11712
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 16519
+ inst [2 or "sda"] value 15567
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_serviced.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 54680
+ inst [2 or "sda"] value 11166
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 1217747968
+ inst [2 or "sda"] value 375664640
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 198193152
+ inst [2 or "sda"] value 210872832
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 1019554816
+ inst [2 or "sda"] value 164791808
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 295747584
+ inst [2 or "sda"] value 242914816
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_service_bytes.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: Kbyte
+ inst [0 or "sdb"] value 922000384
+ inst [2 or "sda"] value 132749824
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_queued.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 0
+ inst [2 or "sda"] value 0
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.total
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 73910
+ inst [2 or "sda"] value 1528
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.async
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 33144
+ inst [2 or "sda"] value 1237
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.sync
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 40766
+ inst [2 or "sda"] value 291
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.write
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 49776
+ inst [2 or "sda"] value 1242
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.blkio.io_merged.read
+ Data Type: 64-bit unsigned int InDom: 3.1 0xc00001
+ Semantics: counter Units: count
+ inst [0 or "sdb"] value 24134
+ inst [2 or "sda"] value 286
+ inst [5 or "sr0"] value 0
+
+cgroup.groups.net_cls.classid
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.total_cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.lxc.stat.cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.total_cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.libvirt.stat.cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.stat.total_unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 16384
+
+cgroup.groups.memory.stat.total_active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 430522368
+
+cgroup.groups.memory.stat.total_inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 470528000
+
+cgroup.groups.memory.stat.total_active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 480120832
+
+cgroup.groups.memory.stat.total_inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 8019968
+
+cgroup.groups.memory.stat.total_swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.stat.total_pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4008706
+
+cgroup.groups.memory.stat.total_pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4313639
+
+cgroup.groups.memory.stat.total_mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 106840064
+
+cgroup.groups.memory.stat.total_rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 479805440
+
+cgroup.groups.memory.stat.total_cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 909434880
+
+cgroup.groups.memory.stat.unevictable
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 16384
+
+cgroup.groups.memory.stat.active_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 430522368
+
+cgroup.groups.memory.stat.inactive_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 470528000
+
+cgroup.groups.memory.stat.active_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 480120832
+
+cgroup.groups.memory.stat.inactive_anon
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+ value 8019968
+
+cgroup.groups.memory.stat.swap
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 0
+
+cgroup.groups.memory.stat.pgpgout
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4008706
+
+cgroup.groups.memory.stat.pgpgin
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 4313639
+
+cgroup.groups.memory.stat.mapped_file
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 106840064
+
+cgroup.groups.memory.stat.rss
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 479805440
+
+cgroup.groups.memory.stat.cache
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+ value 909434880
+
+cgroup.groups.cpuacct.libvirt.lxc.usage_percpu
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+ inst [0 or "cpu0"] value 0
+ inst [1 or "cpu1"] value 0
+ inst [2 or "cpu2"] value 0
+ inst [3 or "cpu3"] value 0
+ inst [4 or "cpu4"] value 0
+ inst [5 or "cpu5"] value 0
+ inst [6 or "cpu6"] value 0
+ inst [7 or "cpu7"] value 0
+
+cgroup.groups.cpuacct.libvirt.lxc.usage
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+ value 0
+
+cgroup.groups.cpuacct.libvirt.lxc.stat.system
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 0
+
+cgroup.groups.cpuacct.libvirt.lxc.stat.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 0
+
+cgroup.groups.cpuacct.libvirt.usage_percpu
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+ inst [0 or "cpu0"] value 837880387456
+ inst [1 or "cpu1"] value 791812411026
+ inst [2 or "cpu2"] value 839508086847
+ inst [3 or "cpu3"] value 814371336334
+ inst [4 or "cpu4"] value 735998138072
+ inst [5 or "cpu5"] value 721151202093
+ inst [6 or "cpu6"] value 833638956358
+ inst [7 or "cpu7"] value 872599226711
+
+cgroup.groups.cpuacct.libvirt.usage
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+ value 6446959756151
+
+cgroup.groups.cpuacct.libvirt.stat.system
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 384901
+
+cgroup.groups.cpuacct.libvirt.stat.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 43622
+
+cgroup.groups.cpuacct.usage_percpu
+ Data Type: 64-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: nanosec
+ inst [0 or "cpu0"] value 1627403799055
+ inst [1 or "cpu1"] value 1402796290832
+ inst [2 or "cpu2"] value 1179015192815
+ inst [3 or "cpu3"] value 1191687607792
+ inst [4 or "cpu4"] value 1118986660943
+ inst [5 or "cpu5"] value 1107246126589
+ inst [6 or "cpu6"] value 995495472641
+ inst [7 or "cpu7"] value 999320975984
+
+cgroup.groups.cpuacct.usage
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: nanosec
+ value 9621952148817
+
+cgroup.groups.cpuacct.stat.system
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 582900
+
+cgroup.groups.cpuacct.stat.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+ value 142247
+
+cgroup.groups.cpu.libvirt.lxc.shares
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+ value 1024
+
+cgroup.groups.cpu.libvirt.shares
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+ value 1024
+
+cgroup.groups.cpu.shares
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: none
+ value 1024
+
+cgroup.subsys.hierarchy
+ Data Type: 32-bit unsigned int InDom: 3.20 0xc00014
+ Semantics: instant Units: none
+ inst [0 or "cpuset"] value 1
+ inst [1 or "ns"] value 0
+ inst [2 or "cpu"] value 2
+ inst [3 or "cpuacct"] value 3
+ inst [4 or "memory"] value 4
+ inst [5 or "devices"] value 5
+ inst [6 or "freezer"] value 6
+ inst [7 or "net_cls"] value 7
+ inst [8 or "blkio"] value 8
+ inst [9 or "perf_event"] value 0
+ inst [10 or "net_prio"] value 0
+
+cgroup.subsys.count
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+ value 11
+
+cgroup.mounts.subsys
+ Data Type: string InDom: 3.21 0xc00015
+ Semantics: instant Units: none
+ inst [0 or "/cgroup/cpuset"] value "cpuset"
+ inst [1 or "/cgroup/cpu"] value "cpu"
+ inst [2 or "/cgroup/cpuacct"] value "cpuacct"
+ inst [3 or "/cgroup/memory"] value "memory"
+ inst [4 or "/cgroup/devices"] value "devices"
+ inst [5 or "/cgroup/freezer"] value "freezer"
+ inst [6 or "/cgroup/net_cls"] value "net_cls"
+ inst [7 or "/cgroup/blkio"] value "blkio"
+
+cgroup.mounts.count
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+ value 8
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -L -K clear -K add,3,proc/pmda_proc.so,proc_init -d -f cgroup
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+== done
+
diff --git a/qa/733 b/qa/733
new file mode 100755
index 0000000..927d2f2
--- /dev/null
+++ b/qa/733
@@ -0,0 +1,57 @@
+#!/bin/sh
+# PCP QA Test No. 733
+# pmie segv @ MessageMedia
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3900 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo "QA output created by $seq"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<\End-of-File >$tmp.pmie
+some_inst ((filesys.used/filesys.capacity)*100 >= 0) -> print "Filesys" " %i %v";
+(1 - kernel.all.cpu.idle/hinv.ncpu)*100 > 0 -> print "CPU %v";
+some_inst (1 - kernel.percpu.cpu.idle)*100 > 0 -> print "PerCPU" " %i %v";
+swap.pagesout >= 0 -> print "PageOut %v";
+End-of-File
+
+# real QA test starts here
+echo "mark records ..."
+pmdumplog -z src/20130706 | grep mark
+
+echo
+echo "data present for DISCRETE metrics between marks ..."
+pmdumplog -z -S @08:44 -T @17:45 src/20130706 filesys.capacity
+pmval -z -A 1hr -t 1hr -a src/20130706 filesys.capacity
+
+echo
+echo "data missing for INSTANTANEOUS metrics between marks ..."
+pmdumplog -z -S @08:44 -T @17:45 src/20130706 filesys.used
+pmval -z -A 1hr -t 1hr -a src/20130706 filesys.used
+
+pmie -z -c $tmp.pmie -A 1hr -t 1hr -a src/20130706 2>&1 \
+| sed \
+ -e '/Info: evaluator exiting/d' \
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/733.out.1 b/qa/733.out.1
new file mode 100644
index 0000000..0d433a2
--- /dev/null
+++ b/qa/733.out.1
@@ -0,0 +1,239 @@
+QA output created by 733
+mark records ...
+08:44:01.548 <mark>
+17:41:22.784 <mark>
+
+data present for DISCRETE metrics between marks ...
+Note: timezone set to local timezone of host "billing02" from archive
+
+
+08:44:01.547 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+
+08:57:23.222 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+
+17:43:43.556 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+
+17:44:43.554 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+Note: timezone set to local timezone of host "billing02" from archive
+
+metric: filesys.capacity
+archive: src/20130706
+host: billing02
+start: Sat Jul 6 01:00:00 2013
+end: Sun Jul 7 00:15:43 2013
+semantics: discrete instantaneous value
+units: Kbyte
+samples: 24
+interval: 3600.00 sec
+full label for instance[0]: /dev/root
+full label for instance[1]: /dev/mapper/vgsys0-lvvar
+full label for instance[2]: /dev/mapper/vgsys0-lvusr
+full label for instance[3]: /dev/mapper/vgsys0-lvhome
+full label for instance[4]: /dev/mapper/vgsys0-lvtmp
+full label for instance[5]: /dev/sda1
+full label for instance[6]: /dev/mapper/vgdb0-lvmysqldb
+
+ /dev/root /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/sda1 /dev/mapper/vgdb0-lvm
+01:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+02:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+03:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+04:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+05:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+06:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+07:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+08:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+09:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+10:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+11:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+12:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+13:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+14:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+15:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+16:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+17:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+18:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+19:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+20:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+21:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+22:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+23:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+00:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+
+data missing for INSTANTANEOUS metrics between marks ...
+Note: timezone set to local timezone of host "billing02" from archive
+
+
+08:44:01.547 60.5.2 (filesys.used):
+ inst [0 or "/dev/root"] value 315872
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 4459304
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 1471340
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 586668
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 19228
+ inst [5 or "/dev/sda1"] value 12722
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 104879776
+
+17:43:43.556 60.5.2 (filesys.used):
+ inst [0 or "/dev/root"] value 315872
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 4460572
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 1471340
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 586668
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 19228
+ inst [5 or "/dev/sda1"] value 12722
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 104172896
+
+17:44:43.554 60.5.2 (filesys.used):
+ inst [0 or "/dev/root"] value 315872
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 4460572
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 1471340
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 586668
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 19228
+ inst [5 or "/dev/sda1"] value 12722
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 104174596
+Note: timezone set to local timezone of host "billing02" from archive
+
+metric: filesys.used
+archive: src/20130706
+host: billing02
+start: Sat Jul 6 01:00:00 2013
+end: Sun Jul 7 00:15:43 2013
+semantics: instantaneous value
+units: Kbyte
+samples: 24
+interval: 3600.00 sec
+full label for instance[0]: /dev/root
+full label for instance[1]: /dev/mapper/vgsys0-lvvar
+full label for instance[2]: /dev/mapper/vgsys0-lvusr
+full label for instance[3]: /dev/mapper/vgsys0-lvhome
+full label for instance[4]: /dev/mapper/vgsys0-lvtmp
+full label for instance[5]: /dev/sda1
+full label for instance[6]: /dev/mapper/vgdb0-lvmysqldb
+
+ /dev/root /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/sda1 /dev/mapper/vgdb0-lvm
+01:00:00.000 315872 4459760 1471340 586668 19228 12722 104869428
+02:00:00.000 315872 4459904 1471340 586668 19228 12722 104352660
+03:00:00.000 315872 4460056 1471340 586668 19228 12722 104560584
+04:00:00.000 315872 4460204 1471340 586668 19228 12722 104758276
+05:00:00.000 315872 4458764 1471340 586668 19228 12722 105097568
+06:00:00.000 315872 4458912 1471340 586668 19228 12722 104358364
+07:00:00.000 315872 4459052 1471340 586668 19228 12722 104555404
+08:00:00.000 315872 4459188 1471340 586668 19228 12722 104731584
+09:00:00.000 No values available
+10:00:00.000 No values available
+11:00:00.000 No values available
+12:00:00.000 No values available
+13:00:00.000 No values available
+14:00:00.000 No values available
+15:00:00.000 No values available
+16:00:00.000 No values available
+17:00:00.000 No values available
+
+ /dev/root /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/sda1 /dev/mapper/vgdb0-lvm
+18:00:00.000 315872 4460596 1471340 586668 19228 12722 104200884
+19:00:00.000 315872 4460740 1471340 586668 19228 12722 104303976
+20:00:00.000 315872 4460880 1471340 586668 19228 12722 104408244
+21:00:00.000 315872 4461016 1471340 586668 19228 12722 104507480
+22:00:00.000 315872 4461164 1471340 586668 19228 12722 104608972
+23:00:00.000 315872 4461312 1471340 586668 19228 12722 104729828
+00:00:00.000 315872 4460960 1471340 586668 19228 12722 104901416
+pmie: timezone set to local timezone of host billing02
+print Sat Jul 6 01:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 02:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 02:00:00 2013: CPU 34.5
+print Sat Jul 6 02:00:00 2013: PerCPU cpu0 5.7 cpu1 63
+print Sat Jul 6 02:00:00 2013: PageOut 0
+print Sat Jul 6 03:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 03:00:00 2013: CPU 28.3
+print Sat Jul 6 03:00:00 2013: PerCPU cpu0 13.9 cpu1 42.8
+print Sat Jul 6 03:00:00 2013: PageOut 0
+print Sat Jul 6 04:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 04:00:00 2013: CPU 16.6
+print Sat Jul 6 04:00:00 2013: PerCPU cpu0 3.21 cpu1 29.9
+print Sat Jul 6 04:00:00 2013: PageOut 0
+print Sat Jul 6 05:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 05:00:00 2013: CPU 18.8
+print Sat Jul 6 05:00:00 2013: PerCPU cpu0 15.8 cpu1 21.7
+print Sat Jul 6 05:00:00 2013: PageOut 0
+print Sat Jul 6 06:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 06:00:00 2013: CPU 15.4
+print Sat Jul 6 06:00:00 2013: PerCPU cpu0 8.9 cpu1 21.9
+print Sat Jul 6 06:00:00 2013: PageOut 0
+print Sat Jul 6 07:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 07:00:00 2013: CPU 10.9
+print Sat Jul 6 07:00:00 2013: PerCPU cpu0 3.59 cpu1 18.2
+print Sat Jul 6 07:00:00 2013: PageOut 0
+print Sat Jul 6 08:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 08:00:00 2013: CPU 10.0
+print Sat Jul 6 08:00:00 2013: PerCPU cpu0 3.59 cpu1 16.5
+print Sat Jul 6 08:00:00 2013: PageOut 0
+print Sat Jul 6 09:00:00 2013: CPU 11.3
+print Sat Jul 6 09:00:00 2013: PageOut 0
+print Sat Jul 6 10:00:00 2013: CPU 11.7
+print Sat Jul 6 10:00:00 2013: PageOut 0
+print Sat Jul 6 11:00:00 2013: CPU 11.7
+print Sat Jul 6 11:00:00 2013: PageOut 0
+print Sat Jul 6 12:00:00 2013: CPU 10.0
+print Sat Jul 6 12:00:00 2013: PageOut 0
+print Sat Jul 6 13:00:00 2013: CPU 9.5
+print Sat Jul 6 13:00:00 2013: PageOut 0
+print Sat Jul 6 14:00:00 2013: CPU 7.4
+print Sat Jul 6 14:00:00 2013: PageOut 0
+print Sat Jul 6 15:00:00 2013: CPU 6.8
+print Sat Jul 6 15:00:00 2013: PageOut 0
+print Sat Jul 6 16:00:00 2013: CPU 6.3
+print Sat Jul 6 16:00:00 2013: PageOut 0
+print Sat Jul 6 17:00:00 2013: CPU 6.3
+print Sat Jul 6 17:00:00 2013: PageOut 0
+print Sat Jul 6 18:00:00 2013: CPU 6.9
+print Sat Jul 6 18:00:00 2013: PageOut 0
+print Sat Jul 6 19:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 19:00:00 2013: CPU 6.7
+print Sat Jul 6 19:00:00 2013: PerCPU cpu0 2.43 cpu1 11.0
+print Sat Jul 6 19:00:00 2013: PageOut 0
+print Sat Jul 6 20:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 20:00:00 2013: CPU 6.6
+print Sat Jul 6 20:00:00 2013: PerCPU cpu0 3.47 cpu1 9.8
+print Sat Jul 6 20:00:00 2013: PageOut 0
+print Sat Jul 6 21:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 21:00:00 2013: CPU 6.2
+print Sat Jul 6 21:00:00 2013: PerCPU cpu0 9.9 cpu1 2.45
+print Sat Jul 6 21:00:00 2013: PageOut 0
+print Sat Jul 6 22:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 22:00:00 2013: CPU 6.8
+print Sat Jul 6 22:00:00 2013: PerCPU cpu0 7.2 cpu1 6.3
+print Sat Jul 6 22:00:00 2013: PageOut 0
+print Sat Jul 6 23:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 23:00:00 2013: CPU 7.1
+print Sat Jul 6 23:00:00 2013: PerCPU cpu0 9.9 cpu1 4.27
+print Sat Jul 6 23:00:00 2013: PageOut 0
+print Sun Jul 7 00:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sun Jul 7 00:00:00 2013: CPU 10.1
+print Sun Jul 7 00:00:00 2013: PerCPU cpu0 4.90 cpu1 15.3
+print Sun Jul 7 00:00:00 2013: PageOut 0
diff --git a/qa/733.out.2 b/qa/733.out.2
new file mode 100644
index 0000000..e194538
--- /dev/null
+++ b/qa/733.out.2
@@ -0,0 +1,240 @@
+QA output created by 733
+mark records ...
+08:44:01.548 <mark>
+17:41:22.784 <mark>
+
+data present for DISCRETE metrics between marks ...
+Note: timezone set to local timezone of host "billing02" from archive
+
+
+08:44:01.547 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+
+08:57:23.222 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+
+17:43:43.556 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+
+17:44:43.554 60.5.1 (filesys.capacity):
+ inst [0 or "/dev/root"] value 2031440
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 8125880
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 2031440
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 1015704
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 507748
+ inst [5 or "/dev/sda1"] value 124427
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 123834340
+Note: timezone set to local timezone of host "billing02" from archive
+
+metric: filesys.capacity
+archive: src/20130706
+host: billing02
+start: Sat Jul 6 01:00:00 2013
+end: Sun Jul 7 00:15:43 2013
+semantics: discrete instantaneous value
+units: Kbyte
+samples: 24
+interval: 3600.00 sec
+full label for instance[0]: /dev/root
+full label for instance[1]: /dev/mapper/vgsys0-lvvar
+full label for instance[2]: /dev/mapper/vgsys0-lvusr
+full label for instance[3]: /dev/mapper/vgsys0-lvhome
+full label for instance[4]: /dev/mapper/vgsys0-lvtmp
+full label for instance[5]: /dev/sda1
+full label for instance[6]: /dev/mapper/vgdb0-lvmysqldb
+
+ /dev/root /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/sda1 /dev/mapper/vgdb0-lvm
+01:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+02:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+03:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+04:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+05:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+06:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+07:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+08:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+09:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+10:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+11:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+12:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+13:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+14:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+15:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+16:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+17:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+18:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+19:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+20:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+21:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+22:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+23:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+00:00:00.000 2031440 8125880 2031440 1015704 507748 124427 123834340
+
+data missing for INSTANTANEOUS metrics between marks ...
+Note: timezone set to local timezone of host "billing02" from archive
+
+
+08:44:01.547 60.5.2 (filesys.used):
+ inst [0 or "/dev/root"] value 315872
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 4459304
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 1471340
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 586668
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 19228
+ inst [5 or "/dev/sda1"] value 12722
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 104879776
+
+17:43:43.556 60.5.2 (filesys.used):
+ inst [0 or "/dev/root"] value 315872
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 4460572
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 1471340
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 586668
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 19228
+ inst [5 or "/dev/sda1"] value 12722
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 104172896
+
+17:44:43.554 60.5.2 (filesys.used):
+ inst [0 or "/dev/root"] value 315872
+ inst [1 or "/dev/mapper/vgsys0-lvvar"] value 4460572
+ inst [2 or "/dev/mapper/vgsys0-lvusr"] value 1471340
+ inst [3 or "/dev/mapper/vgsys0-lvhome"] value 586668
+ inst [4 or "/dev/mapper/vgsys0-lvtmp"] value 19228
+ inst [5 or "/dev/sda1"] value 12722
+ inst [6 or "/dev/mapper/vgdb0-lvmysqldb"] value 104174596
+Note: timezone set to local timezone of host "billing02" from archive
+
+metric: filesys.used
+archive: src/20130706
+host: billing02
+start: Sat Jul 6 01:00:00 2013
+end: Sun Jul 7 00:15:43 2013
+semantics: instantaneous value
+units: Kbyte
+samples: 24
+interval: 3600.00 sec
+full label for instance[0]: /dev/root
+full label for instance[1]: /dev/mapper/vgsys0-lvvar
+full label for instance[2]: /dev/mapper/vgsys0-lvusr
+full label for instance[3]: /dev/mapper/vgsys0-lvhome
+full label for instance[4]: /dev/mapper/vgsys0-lvtmp
+full label for instance[5]: /dev/sda1
+full label for instance[6]: /dev/mapper/vgdb0-lvmysqldb
+
+ /dev/root /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/sda1 /dev/mapper/vgdb0-lvm
+01:00:00.000 315872 4459760 1471340 586668 19228 12722 104869428
+02:00:00.000 315872 4459904 1471340 586668 19228 12722 104352660
+03:00:00.000 315872 4460056 1471340 586668 19228 12722 104560584
+04:00:00.000 315872 4460204 1471340 586668 19228 12722 104758276
+05:00:00.000 315872 4458764 1471340 586668 19228 12722 105097568
+06:00:00.000 315872 4458912 1471340 586668 19228 12722 104358364
+07:00:00.000 315872 4459052 1471340 586668 19228 12722 104555404
+08:00:00.000 315872 4459188 1471340 586668 19228 12722 104731584
+09:00:00.000 No values available
+10:00:00.000 No values available
+11:00:00.000 No values available
+12:00:00.000 No values available
+13:00:00.000 No values available
+14:00:00.000 No values available
+15:00:00.000 No values available
+16:00:00.000 No values available
+17:00:00.000 No values available
+
+ /dev/root /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/mapper/vgsys0-lv /dev/sda1 /dev/mapper/vgdb0-lvm
+18:00:00.000 315872 4460596 1471340 586668 19228 12722 104200884
+19:00:00.000 315872 4460740 1471340 586668 19228 12722 104303976
+20:00:00.000 315872 4460880 1471340 586668 19228 12722 104408244
+21:00:00.000 315872 4461016 1471340 586668 19228 12722 104507480
+22:00:00.000 315872 4461164 1471340 586668 19228 12722 104608972
+23:00:00.000 315872 4461312 1471340 586668 19228 12722 104729828
+00:00:00.000 315872 4460960 1471340 586668 19228 12722 104901416
+pmie: timezone set to local timezone of host billing02
+print Sat Jul 6 01:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 02:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 02:00:00 2013: CPU 34.5
+print Sat Jul 6 02:00:00 2013: PerCPU cpu0 5.7 cpu1 63
+print Sat Jul 6 02:00:00 2013: PageOut 0
+print Sat Jul 6 03:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 03:00:00 2013: CPU 28.3
+print Sat Jul 6 03:00:00 2013: PerCPU cpu0 13.9 cpu1 42.8
+print Sat Jul 6 03:00:00 2013: PageOut 0
+print Sat Jul 6 04:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 04:00:00 2013: CPU 16.6
+print Sat Jul 6 04:00:00 2013: PerCPU cpu0 3.21 cpu1 29.9
+print Sat Jul 6 04:00:00 2013: PageOut 0
+print Sat Jul 6 05:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 05:00:00 2013: CPU 18.8
+print Sat Jul 6 05:00:00 2013: PerCPU cpu0 15.8 cpu1 21.7
+print Sat Jul 6 05:00:00 2013: PageOut 0
+print Sat Jul 6 06:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 06:00:00 2013: CPU 15.4
+print Sat Jul 6 06:00:00 2013: PerCPU cpu0 8.9 cpu1 21.9
+print Sat Jul 6 06:00:00 2013: PageOut 0
+print Sat Jul 6 07:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 07:00:00 2013: CPU 10.9
+print Sat Jul 6 07:00:00 2013: PerCPU cpu0 3.59 cpu1 18.2
+print Sat Jul 6 07:00:00 2013: PageOut 0
+print Sat Jul 6 08:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 08:00:00 2013: CPU 10.0
+print Sat Jul 6 08:00:00 2013: PerCPU cpu0 3.59 cpu1 16.5
+print Sat Jul 6 08:00:00 2013: PageOut 0
+print Sat Jul 6 09:00:00 2013: CPU 11.3
+print Sat Jul 6 09:00:00 2013: PageOut 0
+print Sat Jul 6 10:00:00 2013: CPU 11.7
+print Sat Jul 6 10:00:00 2013: PageOut 0
+print Sat Jul 6 11:00:00 2013: CPU 11.7
+print Sat Jul 6 11:00:00 2013: PageOut 0
+print Sat Jul 6 12:00:00 2013: CPU 10.0
+print Sat Jul 6 12:00:00 2013: PageOut 0
+print Sat Jul 6 13:00:00 2013: CPU 9.5
+print Sat Jul 6 13:00:00 2013: PageOut 0
+print Sat Jul 6 14:00:00 2013: CPU 7.4
+print Sat Jul 6 14:00:00 2013: PageOut 0
+print Sat Jul 6 15:00:00 2013: CPU 6.8
+print Sat Jul 6 15:00:00 2013: PageOut 0
+print Sat Jul 6 16:00:00 2013: CPU 6.3
+print Sat Jul 6 16:00:00 2013: PageOut 0
+print Sat Jul 6 17:00:00 2013: CPU 6.3
+print Sat Jul 6 17:00:00 2013: PageOut 0
+print Sat Jul 6 18:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 18:00:00 2013: CPU 6.9
+print Sat Jul 6 18:00:00 2013: PageOut 0
+print Sat Jul 6 19:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 19:00:00 2013: CPU 6.7
+print Sat Jul 6 19:00:00 2013: PerCPU cpu0 2.43 cpu1 11.0
+print Sat Jul 6 19:00:00 2013: PageOut 0
+print Sat Jul 6 20:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 20:00:00 2013: CPU 6.6
+print Sat Jul 6 20:00:00 2013: PerCPU cpu0 3.47 cpu1 9.8
+print Sat Jul 6 20:00:00 2013: PageOut 0
+print Sat Jul 6 21:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 21:00:00 2013: CPU 6.2
+print Sat Jul 6 21:00:00 2013: PerCPU cpu0 9.9 cpu1 2.45
+print Sat Jul 6 21:00:00 2013: PageOut 0
+print Sat Jul 6 22:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 84
+print Sat Jul 6 22:00:00 2013: CPU 6.8
+print Sat Jul 6 22:00:00 2013: PerCPU cpu0 7.2 cpu1 6.3
+print Sat Jul 6 22:00:00 2013: PageOut 0
+print Sat Jul 6 23:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sat Jul 6 23:00:00 2013: CPU 7.1
+print Sat Jul 6 23:00:00 2013: PerCPU cpu0 9.9 cpu1 4.27
+print Sat Jul 6 23:00:00 2013: PageOut 0
+print Sun Jul 7 00:00:00 2013: Filesys /dev/root 15.5 /dev/mapper/vgsys0-lvvar 55 /dev/mapper/vgsys0-lvusr 72 /dev/mapper/vgsys0-lvhome 58 /dev/mapper/vgsys0-lvtmp 3.79 /dev/sda1 10.2 /dev/mapper/vgdb0-lvmysqldb 85
+print Sun Jul 7 00:00:00 2013: CPU 10.1
+print Sun Jul 7 00:00:00 2013: PerCPU cpu0 4.90 cpu1 15.3
+print Sun Jul 7 00:00:00 2013: PageOut 0
diff --git a/qa/734 b/qa/734
new file mode 100755
index 0000000..4ab0b0d
--- /dev/null
+++ b/qa/734
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 734
+# Exercise bug in pmGetContextHostName with pmcd.hostname metric.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# prefer an old host without pmcd.hostname, however the test is still
+# useful even with more recent remotes (exercises different paths).
+oldhost=`./getpmcdhosts -L -n 1 -v 'pcp<3.8.4' 2>$seq.full`
+[ -z "$oldhost" ] && oldhost=`./getpmcdhosts -L -n 1`
+[ -z "$oldhost" ] && _notrun "No remote hosts available"
+short_oldhost=`echo $oldhost | sed -e 's/\..*//'`
+
+# real QA test starts here
+set -- `pmprobe -h localhost -v pmcd.hostname`
+eval newhost=$3
+short_newhost=`echo $newhost | sed -e 's/\..*//'`
+
+echo "using oldhost $oldhost ($short_oldhost)" >> $seq.full
+echo "using newhost $newhost ($short_newhost)" >> $seq.full
+
+pmstat -t 0.2 -s 2 -h localhost -h $oldhost > $tmp.out
+grep -q $short_newhost $tmp.out && echo "Correct local hostname in pmstat output"
+grep -q $short_oldhost $tmp.out && echo "Correct remote hostname in pmstat output"
+cat $tmp.out >> $seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/734.out b/qa/734.out
new file mode 100644
index 0000000..6330a8e
--- /dev/null
+++ b/qa/734.out
@@ -0,0 +1,3 @@
+QA output created by 734
+Correct local hostname in pmstat output
+Correct remote hostname in pmstat output
diff --git a/qa/735 b/qa/735
new file mode 100755
index 0000000..ea8dc6e
--- /dev/null
+++ b/qa/735
@@ -0,0 +1,53 @@
+#!/bin/sh
+# PCP QA Test No. 735
+# Exercise the Linux kernel proc.psinfo.cgroup metric
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pid=$$
+
+test $PCP_VER -ge 3805 || _notrun "No support for new proc cgroup metric"
+test $PCP_PLATFORM = linux || _notrun "Test unsupported on $PCP_PLATFORM"
+test -f /proc/$pid/cgroup || _notrun "No per-process support for cgroups"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo rm -f $seq.full
+syscgroups=`cat /proc/$pid/cgroup \
+ | sed -e 's/^[0-9][0-9]*://' \
+ | tr '\n' ';' \
+ | sed -e 's/;$/\n/'`
+echo "SYS cgroup list for process $pid is: $syscgroups" >> $seq.full
+
+pminfo -f proc.psinfo.cgroups > $tmp.cgroups
+pcpcgroups=`grep "^ inst \[$pid or " $tmp.cgroups \
+ | $PCP_AWK_PROG '{ print $NF }' \
+ | sed -e 's/^"//' -e 's/"$//'`
+echo "PCP cgroup list for process $pid is: $pcpcgroups" >> $seq.full
+echo "Extracted from pminfo:" >> $seq.full
+cat $tmp.cgroups >> $seq.full
+
+if [ "$pcpcgroups" = "$syscgroups" ]
+then
+ echo "Control group list for current process checks out"
+ status=0
+else
+ echo "Mismatch on control group list:"
+ echo "PCP cgroups: $pcpcgroups"
+ echo "SYS cgroups: $syscgroups"
+ status=1
+fi
+
+exit
diff --git a/qa/735.out b/qa/735.out
new file mode 100644
index 0000000..d070b0d
--- /dev/null
+++ b/qa/735.out
@@ -0,0 +1,2 @@
+QA output created by 735
+Control group list for current process checks out
diff --git a/qa/736 b/qa/736
new file mode 100755
index 0000000..7db8bcc
--- /dev/null
+++ b/qa/736
@@ -0,0 +1,36 @@
+#!/bin/sh
+# PCP QA Test No. 736
+# pmlogrewrite - indom duplicate clause testing
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.config
+indom 29.2 { indom -> duplicate 99.2 }
+metric sample.bucket { indom -> 99.* pmid -> 99.*.* }
+End-of-File
+
+# real QA test starts here
+pmlogrewrite -w -c $tmp.config src/ok-bigbin $tmp
+
+pmdumplog -z -a src/ok-bigbin >$tmp.old
+pmdumplog -z -a $tmp >$tmp.new
+
+diff $tmp.old $tmp.new
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/736.out b/qa/736.out
new file mode 100644
index 0000000..447b76e
--- /dev/null
+++ b/qa/736.out
@@ -0,0 +1,4036 @@
+QA output created by 736
+8a9,11
+> PMID: 99.0.48 (sample.bucket)
+> Data Type: 32-bit int InDom: 99.2 0x18c00002
+> Semantics: instant Units: none
+19,22c22
+< Data Type: 32-bit int InDom: 29.2 0x7400002
+< Semantics: instant Units: none
+< PMID: 29.0.48 (sample.bucket)
+< Data Type: 32-bit int InDom: 29.2 0x7400002
+---
+> Data Type: 32-bit int InDom: 99.2 0x18c00002
+48a49,59
+> InDom: 99.2
+> 21:52:32.666 9 instances
+> 100 or "bin-100"
+> 200 or "bin-200"
+> 300 or "bin-300"
+> 400 or "bin-400"
+> 500 or "bin-500"
+> 600 or "bin-600"
+> 700 or "bin-700"
+> 800 or "bin-800"
+> 900 or "bin-900"
+84,88c95,99
+< 21:52:36.744 0 1271 100656
+< 21:52:40.824 0 1271 201024
+< 21:52:44.904 0 1271 301392
+< 21:52:48.984 0 1271 401760
+< 21:52:52.644 0 1271 492288
+---
+> 21:52:36.744 0 1443 100656
+> 21:52:40.824 0 1443 201024
+> 21:52:44.904 0 1443 301392
+> 21:52:48.984 0 1443 401760
+> 21:52:52.644 0 1443 491796
+121c132
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+173c184
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+225c236
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+277c288
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+329c340
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+381c392
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+433c444
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+485c496
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+537c548
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+589c600
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+641c652
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+693c704
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+745c756
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+797c808
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+849c860
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+901c912
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+953c964
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1005c1016
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1057c1068
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1109c1120
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1161c1172
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1213c1224
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1265c1276
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1317c1328
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1369c1380
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1421c1432
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1473c1484
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1525c1536
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1577c1588
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1629c1640
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1681c1692
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1733c1744
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1785c1796
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1837c1848
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1889c1900
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1941c1952
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+1993c2004
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2045c2056
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2097c2108
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2149c2160
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2201c2212
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2253c2264
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2305c2316
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2357c2368
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2409c2420
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2461c2472
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2513c2524
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2565c2576
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2617c2628
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2669c2680
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2721c2732
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2773c2784
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2825c2836
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2877c2888
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2929c2940
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+2981c2992
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3033c3044
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3085c3096
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3137c3148
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3189c3200
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3241c3252
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3293c3304
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3345c3356
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3397c3408
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3449c3460
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3501c3512
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3553c3564
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3605c3616
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3657c3668
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3709c3720
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3761c3772
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3813c3824
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3865c3876
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3917c3928
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+3969c3980
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4021c4032
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4073c4084
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4125c4136
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4177c4188
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4229c4240
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4281c4292
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4333c4344
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4385c4396
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4437c4448
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4489c4500
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4541c4552
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4593c4604
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4645c4656
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4697c4708
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4749c4760
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4801c4812
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4853c4864
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4905c4916
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+4957c4968
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5009c5020
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5061c5072
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5113c5124
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5165c5176
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5217c5228
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5269c5280
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5321c5332
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5373c5384
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5425c5436
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5477c5488
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5529c5540
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5581c5592
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5633c5644
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5685c5696
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5737c5748
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5789c5800
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5841c5852
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5893c5904
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5945c5956
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+5997c6008
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6049c6060
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6101c6112
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6153c6164
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6205c6216
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6257c6268
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6309c6320
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6361c6372
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6413c6424
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6465c6476
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6517c6528
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6569c6580
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6621c6632
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6673c6684
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6725c6736
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6777c6788
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6829c6840
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6881c6892
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6933c6944
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+6985c6996
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7037c7048
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7089c7100
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7141c7152
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7193c7204
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7245c7256
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7297c7308
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7349c7360
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7401c7412
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7453c7464
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7505c7516
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7557c7568
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7609c7620
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7661c7672
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7713c7724
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7765c7776
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7817c7828
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7869c7880
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7921c7932
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+7973c7984
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8025c8036
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8077c8088
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8129c8140
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8181c8192
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8233c8244
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8285c8296
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8337c8348
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8389c8400
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8441c8452
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8493c8504
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8545c8556
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8597c8608
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8649c8660
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8701c8712
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8753c8764
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8805c8816
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8857c8868
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8909c8920
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+8961c8972
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9013c9024
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9065c9076
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9117c9128
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9169c9180
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9221c9232
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9273c9284
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9325c9336
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9377c9388
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9429c9440
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9481c9492
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9533c9544
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9585c9596
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9637c9648
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9689c9700
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9741c9752
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9793c9804
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9845c9856
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9897c9908
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+9949c9960
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10001c10012
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10053c10064
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10105c10116
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10157c10168
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10209c10220
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10261c10272
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10313c10324
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10365c10376
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10417c10428
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10469c10480
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10521c10532
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10573c10584
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10625c10636
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10677c10688
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10729c10740
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10781c10792
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10833c10844
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10885c10896
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10937c10948
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+10989c11000
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11041c11052
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11093c11104
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11145c11156
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11197c11208
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11249c11260
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11301c11312
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11353c11364
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11405c11416
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11457c11468
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11509c11520
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11561c11572
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11613c11624
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11665c11676
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11717c11728
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11769c11780
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11821c11832
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11873c11884
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11925c11936
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+11977c11988
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12029c12040
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12081c12092
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12133c12144
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12185c12196
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12237c12248
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12289c12300
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12341c12352
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12393c12404
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12445c12456
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12497c12508
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12549c12560
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12601c12612
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12653c12664
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12705c12716
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12757c12768
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12809c12820
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12861c12872
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12913c12924
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+12965c12976
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13017c13028
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13069c13080
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13121c13132
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13173c13184
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13225c13236
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13277c13288
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13329c13340
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13381c13392
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13433c13444
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13485c13496
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13537c13548
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13589c13600
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13641c13652
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13693c13704
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13745c13756
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13797c13808
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13849c13860
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13901c13912
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+13953c13964
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14005c14016
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14057c14068
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14109c14120
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14161c14172
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14213c14224
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14265c14276
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14317c14328
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14369c14380
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14421c14432
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14473c14484
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14525c14536
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14577c14588
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14629c14640
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14681c14692
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14733c14744
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14785c14796
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14837c14848
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14889c14900
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14941c14952
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+14993c15004
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15045c15056
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15097c15108
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15149c15160
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15201c15212
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15253c15264
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15305c15316
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15357c15368
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15409c15420
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15461c15472
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15513c15524
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15565c15576
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15617c15628
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15669c15680
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15721c15732
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15773c15784
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15825c15836
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15877c15888
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15929c15940
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+15981c15992
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16033c16044
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16085c16096
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16137c16148
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16189c16200
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16241c16252
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16293c16304
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16345c16356
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16397c16408
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16449c16460
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16501c16512
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16553c16564
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16605c16616
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16657c16668
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16709c16720
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16761c16772
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16813c16824
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16865c16876
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16917c16928
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+16969c16980
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17021c17032
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17073c17084
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17125c17136
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17177c17188
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17229c17240
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17281c17292
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17333c17344
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17385c17396
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17437c17448
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17489c17500
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17541c17552
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17593c17604
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17645c17656
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17697c17708
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17749c17760
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17801c17812
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17853c17864
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17905c17916
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+17957c17968
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18009c18020
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18061c18072
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18113c18124
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18165c18176
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18217c18228
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18269c18280
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18321c18332
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18373c18384
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18425c18436
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18477c18488
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18529c18540
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18581c18592
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18633c18644
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18685c18696
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18737c18748
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18789c18800
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18841c18852
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18893c18904
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18945c18956
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+18997c19008
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19049c19060
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19101c19112
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19153c19164
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19205c19216
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19257c19268
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19309c19320
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19361c19372
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19413c19424
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19465c19476
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19517c19528
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19569c19580
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19621c19632
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19673c19684
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19725c19736
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19777c19788
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19829c19840
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19881c19892
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19933c19944
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+19985c19996
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20037c20048
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20089c20100
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20141c20152
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20193c20204
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20245c20256
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20297c20308
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20349c20360
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20401c20412
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20453c20464
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20505c20516
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20557c20568
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20609c20620
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20661c20672
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20713c20724
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20765c20776
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20817c20828
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20869c20880
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20921c20932
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+20973c20984
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21025c21036
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21077c21088
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21129c21140
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21181c21192
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21233c21244
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21285c21296
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21337c21348
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21389c21400
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21441c21452
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21493c21504
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21545c21556
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21597c21608
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21649c21660
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21701c21712
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21753c21764
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21805c21816
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21857c21868
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21909c21920
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+21961c21972
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22013c22024
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22065c22076
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22117c22128
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22169c22180
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22221c22232
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22273c22284
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22325c22336
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22377c22388
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22429c22440
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22481c22492
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22533c22544
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22585c22596
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22637c22648
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22689c22700
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22741c22752
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22793c22804
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22845c22856
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22897c22908
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+22949c22960
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23001c23012
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23053c23064
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23105c23116
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23157c23168
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23209c23220
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23261c23272
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23313c23324
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23365c23376
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23417c23428
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23469c23480
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23521c23532
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23573c23584
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23625c23636
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23677c23688
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23729c23740
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23781c23792
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23833c23844
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23885c23896
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23937c23948
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+23989c24000
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24041c24052
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24093c24104
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24145c24156
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24197c24208
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24249c24260
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24301c24312
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24353c24364
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24405c24416
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24457c24468
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24509c24520
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24561c24572
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24613c24624
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24665c24676
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24717c24728
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24769c24780
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24821c24832
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24873c24884
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24925c24936
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+24977c24988
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25029c25040
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25081c25092
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25133c25144
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25185c25196
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25237c25248
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25289c25300
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25341c25352
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25393c25404
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25445c25456
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25497c25508
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25549c25560
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25601c25612
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25653c25664
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25705c25716
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25757c25768
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25809c25820
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25861c25872
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25913c25924
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+25965c25976
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26017c26028
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26069c26080
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26121c26132
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26173c26184
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26225c26236
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26277c26288
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26329c26340
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26381c26392
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26433c26444
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26485c26496
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26537c26548
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26589c26600
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26641c26652
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26693c26704
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26745c26756
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26797c26808
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26849c26860
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26901c26912
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+26953c26964
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27005c27016
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27057c27068
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27109c27120
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27161c27172
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27213c27224
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27265c27276
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27317c27328
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27369c27380
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27421c27432
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27473c27484
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27525c27536
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27577c27588
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27629c27640
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27681c27692
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27733c27744
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27785c27796
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27837c27848
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27889c27900
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27941c27952
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+27993c28004
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28045c28056
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28097c28108
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28149c28160
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28201c28212
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28253c28264
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28305c28316
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28357c28368
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28409c28420
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28461c28472
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28513c28524
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28565c28576
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28617c28628
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28669c28680
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28721c28732
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28773c28784
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28825c28836
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28877c28888
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28929c28940
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+28981c28992
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29033c29044
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29085c29096
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29137c29148
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29189c29200
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29241c29252
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29293c29304
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29345c29356
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29397c29408
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29449c29460
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29501c29512
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29553c29564
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29605c29616
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29657c29668
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29709c29720
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29761c29772
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29813c29824
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29865c29876
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29917c29928
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+29969c29980
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30021c30032
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30073c30084
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30125c30136
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30177c30188
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30229c30240
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30281c30292
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30333c30344
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30385c30396
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30437c30448
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30489c30500
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30541c30552
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30593c30604
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30645c30656
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30697c30708
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30749c30760
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30801c30812
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30853c30864
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30905c30916
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+30957c30968
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31009c31020
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31061c31072
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31113c31124
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31165c31176
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31217c31228
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31269c31280
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31321c31332
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31373c31384
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31425c31436
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31477c31488
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31529c31540
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31581c31592
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31633c31644
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31685c31696
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31737c31748
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31789c31800
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31841c31852
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31893c31904
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31945c31956
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+31997c32008
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32049c32060
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32101c32112
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32153c32164
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32205c32216
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32257c32268
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32309c32320
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32361c32372
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32413c32424
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32465c32476
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32517c32528
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32569c32580
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32621c32632
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32673c32684
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32725c32736
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32777c32788
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32829c32840
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32881c32892
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32933c32944
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+32985c32996
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33037c33048
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33089c33100
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33141c33152
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33193c33204
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33245c33256
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33297c33308
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33349c33360
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33401c33412
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33453c33464
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33505c33516
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33557c33568
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33609c33620
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33661c33672
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33713c33724
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33765c33776
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33817c33828
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33869c33880
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33921c33932
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+33973c33984
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34025c34036
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34077c34088
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34129c34140
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34181c34192
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34233c34244
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34285c34296
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34337c34348
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34389c34400
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34441c34452
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34493c34504
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34545c34556
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34597c34608
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34649c34660
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34701c34712
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34753c34764
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34805c34816
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34857c34868
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34909c34920
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+34961c34972
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35013c35024
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35065c35076
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35117c35128
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35169c35180
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35221c35232
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35273c35284
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35325c35336
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35377c35388
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35429c35440
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35481c35492
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35533c35544
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35585c35596
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35637c35648
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35689c35700
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35741c35752
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35793c35804
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35845c35856
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35897c35908
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+35949c35960
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36001c36012
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36053c36064
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36105c36116
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36157c36168
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36209c36220
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36261c36272
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36313c36324
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36365c36376
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36417c36428
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36469c36480
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36521c36532
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36573c36584
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36625c36636
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36677c36688
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36729c36740
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36781c36792
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36833c36844
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36885c36896
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36937c36948
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+36989c37000
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37041c37052
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37093c37104
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37145c37156
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37197c37208
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37249c37260
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37301c37312
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37353c37364
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37405c37416
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37457c37468
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37509c37520
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37561c37572
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37613c37624
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37665c37676
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37717c37728
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37769c37780
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37821c37832
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37873c37884
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37925c37936
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+37977c37988
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38029c38040
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38081c38092
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38133c38144
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38185c38196
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38237c38248
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38289c38300
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38341c38352
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38393c38404
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38445c38456
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38497c38508
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38549c38560
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38601c38612
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38653c38664
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38705c38716
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38757c38768
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38809c38820
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38861c38872
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38913c38924
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+38965c38976
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39017c39028
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39069c39080
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39121c39132
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39173c39184
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39225c39236
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39277c39288
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39329c39340
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39381c39392
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39433c39444
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39485c39496
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39537c39548
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39589c39600
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39641c39652
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39693c39704
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39745c39756
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39797c39808
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39849c39860
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39901c39912
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+39953c39964
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40005c40016
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40057c40068
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40109c40120
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40161c40172
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40213c40224
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40265c40276
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40317c40328
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40369c40380
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40421c40432
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40473c40484
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40525c40536
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40577c40588
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40629c40640
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40681c40692
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40733c40744
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40785c40796
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40837c40848
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40889c40900
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40941c40952
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+40993c41004
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41045c41056
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41097c41108
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41149c41160
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41201c41212
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41253c41264
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41305c41316
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41357c41368
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41409c41420
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41461c41472
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41513c41524
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41565c41576
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41617c41628
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41669c41680
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41721c41732
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41773c41784
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41825c41836
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41877c41888
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41929c41940
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+41981c41992
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42033c42044
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42085c42096
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42137c42148
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42189c42200
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42241c42252
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42293c42304
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42345c42356
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42397c42408
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42449c42460
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42501c42512
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42553c42564
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42605c42616
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42657c42668
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42709c42720
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42761c42772
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42813c42824
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42865c42876
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42917c42928
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+42969c42980
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43021c43032
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43073c43084
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43125c43136
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43177c43188
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43229c43240
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43281c43292
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43333c43344
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43385c43396
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43437c43448
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43489c43500
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43541c43552
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43593c43604
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43645c43656
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43697c43708
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43749c43760
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43801c43812
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43853c43864
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43905c43916
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+43957c43968
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44009c44020
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44061c44072
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44113c44124
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44165c44176
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44217c44228
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44269c44280
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44321c44332
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44373c44384
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44425c44436
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44477c44488
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44529c44540
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44581c44592
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44633c44644
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44685c44696
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44737c44748
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44789c44800
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44841c44852
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44893c44904
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44945c44956
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+44997c45008
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45049c45060
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45101c45112
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45153c45164
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45205c45216
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45257c45268
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45309c45320
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45361c45372
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45413c45424
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45465c45476
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45517c45528
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45569c45580
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45621c45632
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45673c45684
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45725c45736
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45777c45788
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45829c45840
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45881c45892
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45933c45944
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+45985c45996
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46037c46048
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46089c46100
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46141c46152
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46193c46204
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46245c46256
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46297c46308
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46349c46360
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46401c46412
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46453c46464
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46505c46516
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46557c46568
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46609c46620
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46661c46672
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46713c46724
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46765c46776
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46817c46828
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46869c46880
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46921c46932
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+46973c46984
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47025c47036
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47077c47088
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47129c47140
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47181c47192
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47233c47244
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47285c47296
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47337c47348
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47389c47400
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47441c47452
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47493c47504
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47545c47556
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47597c47608
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47649c47660
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47701c47712
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47753c47764
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47805c47816
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47857c47868
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47909c47920
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+47961c47972
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48013c48024
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48065c48076
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48117c48128
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48169c48180
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48221c48232
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48273c48284
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48325c48336
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48377c48388
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48429c48440
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48481c48492
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48533c48544
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48585c48596
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48637c48648
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48689c48700
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48741c48752
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48793c48804
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48845c48856
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48897c48908
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+48949c48960
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49001c49012
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49053c49064
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49105c49116
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49157c49168
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49209c49220
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49261c49272
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49313c49324
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49365c49376
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49417c49428
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49469c49480
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49521c49532
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49573c49584
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49625c49636
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49677c49688
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49729c49740
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49781c49792
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49833c49844
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49885c49896
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49937c49948
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+49989c50000
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50041c50052
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50093c50104
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50145c50156
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50197c50208
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50249c50260
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50301c50312
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50353c50364
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50405c50416
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50457c50468
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50509c50520
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50561c50572
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50613c50624
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50665c50676
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50717c50728
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50769c50780
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50821c50832
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50873c50884
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50925c50936
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+50977c50988
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51029c51040
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51081c51092
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51133c51144
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51185c51196
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51237c51248
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51289c51300
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51341c51352
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51393c51404
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51445c51456
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51497c51508
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51549c51560
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51601c51612
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51653c51664
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51705c51716
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51757c51768
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51809c51820
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51861c51872
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51913c51924
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+51965c51976
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+52017c52028
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
+52069c52080
+< 29.0.48 (sample.bucket):
+---
+> 99.0.48 (sample.bucket):
diff --git a/qa/737 b/qa/737
new file mode 100755
index 0000000..6abdc49
--- /dev/null
+++ b/qa/737
@@ -0,0 +1,34 @@
+#!/bin/sh
+# PCP QA Test No. 737
+# Exercise time interfaces in python PMAPI wrapper module.
+#
+# Copyright (c) Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+python -c "from pcp import pmda" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "python pcp pmda module not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_utc()
+{
+ sed -e 's/UTC+0/UTC/g' -e 's/UTC-0/UTC/g'
+}
+
+# real QA test starts here
+python src/test_pcp_time.python | _filter_utc
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/737.out b/qa/737.out
new file mode 100644
index 0000000..4f59a92
--- /dev/null
+++ b/qa/737.out
@@ -0,0 +1,6 @@
+QA output created by 737
+pmLocaltime from int: 1388724379.0 (2014, 1, 3, 4, 46, 19, 1, 33, 0)
+pmLocaltime from float: 1388724379.0 (2014, 1, 3, 4, 46, 19, 1, 33, 0)
+pmCtime from int: Mon Feb 3 04:46:19 2014
+pmCtime from float: Mon Feb 3 04:46:19 2014
+pmWhichZone: UTC
diff --git a/qa/738 b/qa/738
new file mode 100755
index 0000000..fb4189c
--- /dev/null
+++ b/qa/738
@@ -0,0 +1,215 @@
+#!/bin/sh
+# PCP QA Test No. 738
+# Exercise pmlogmv
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+mkdir $tmp
+cd $tmp
+trap "cd $here; rm -rf $tmp.* $tmp; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ # there are a lot of bizarre quoting variants for ln(1) error
+ # messages!
+ sed \
+ -e '/^[rwx.-]* /s/.* /... ls data ... /' \
+ -e 's/`'"/'/g" \
+ -e 's/‘'"/'/g" \
+ -e 's/’'"/'/g" \
+ -e 's/ln: creating hard link/ln: failed to create hard link/'
+}
+
+# real QA test starts here
+#
+
+echo "=== Usage, no input files, incomplete input archive ==="
+pmlogmv
+sts=$?
+[ $sts -eq 0 ] || echo exit status $sts
+pmlogmv foo
+sts=$?
+[ $sts -eq 0 ] || echo exit status $sts
+pmlogmv foo bar
+sts=$?
+[ $sts -eq 0 ] || echo exit status $sts
+cp $here/src/foo.0 .
+pmlogmv foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+rm foo.0
+cp $here/src/foo.meta .
+pmlogmv foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+rm -f foo.* bar.*
+
+echo
+echo "=== non-pcp archives and output files already exist ==="
+cp $here/src/foo.* .
+touch foo.frog
+pmlogmv -V foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls foo* bar*
+rm -f foo.* bar.*
+cp $here/src/foo.* .
+for i in 0 index meta
+do
+ echo "--- bar.$i already exists ---"
+ cp $here/src/bar.$i .
+ pmlogmv -V foo bar >$tmp.out 2>&1
+ sts=$?
+ _filter <$tmp.out
+ [ $sts -eq 0 ] || echo exit status $sts
+ ls foo* bar*
+ rm bar.$i
+done
+rm -f foo.* bar.*
+
+echo
+echo "=== simplest case ==="
+cp $here/src/foo.* .
+pmlogmv -NV foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+pmlogmv -V foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+for part in 0 index meta
+do
+ if cmp $here/src/foo.$part bar.$part
+ then
+ :
+ else
+ echo "Arrgh ... input foo.$part not the same as output bar.$part"
+ ls -l $here/src/foo.$part bar.$part
+ fi
+done
+ls foo* bar*
+rm -f foo.* bar.*
+
+echo
+echo "=== single oldfile name cases ==="
+for ext in meta 0 index
+do
+ echo "--- foo.$ext ---"
+ cp $here/src/foo.* .
+ pmlogmv -V foo.$ext bar >$tmp.out 2>&1
+ sts=$?
+ _filter <$tmp.out
+ [ $sts -eq 0 ] || echo exit status $sts
+ for part in 0 index meta
+ do
+ if cmp $here/src/foo.$part bar.$part
+ then
+ :
+ else
+ echo "Arrgh ... input foo.$part not the same as output bar.$part"
+ ls -l $here/src/foo.$part bar.$part
+ fi
+ done
+ ls foo* bar*
+ rm -f foo.* bar.*
+done
+
+echo
+echo "=== multi-volume case ==="
+cp $here/src/mv-foo.* .
+cp mv-foo.2 mv-foo.123456789
+pmlogmv -V mv-foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+for opart in 0 1 2 123456789 index meta
+do
+ npart=$opart
+ [ "$opart" = 123456789 ] && opart=2
+ if cmp $here/src/mv-foo.$opart bar.$npart
+ then
+ :
+ else
+ echo "Arrgh ... input mv-foo.$opart not the same as output bar.$npart"
+ ls -l $here/src/mv-foo.$opart bar.$npart
+ fi
+done
+ls foo* bar*
+rm -f foo.* bar.*
+
+echo
+echo "=== old and new in different directories =="
+mkdir new
+cp $here/src/mv-foo.* .
+pmlogmv -V mv-foo new/mv-foo >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+for part in 0 1 2 index meta
+do
+ if cmp $here/src/mv-foo.$part new/mv-foo.$part
+ then
+ :
+ else
+ echo "Arrgh ... input mv-foo.$part not the same as output new/mv-foo.$part"
+ ls -l $here/src/mv-foo.$part new/mv-foo.$part
+ fi
+done
+ls foo* new/*
+rm -rf foo.* new
+
+echo
+echo "=== error case for ln failing ==="
+mkdir new
+chmod u-w,g-w,o-w new
+cp $here/src/mv-foo.* .
+pmlogmv -V mv-foo new/mv-foo >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls mv-foo* new/*
+rm -rf foo.* new
+
+echo
+echo "=== error case for rm failing ==="
+mkdir new
+chmod u-w,g-w,o-w .
+cp $here/src/mv-foo.* .
+pmlogmv -V mv-foo new/mv-foo >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls mv-foo* new/*
+chmod u+w,g+w,o+w .
+rm -rf mv-foo.* new
+
+echo
+echo "=== Frank's error case rm failing after first file ==="
+cp $here/src/mv-foo.* .
+ln mv-foo.2 mv-foo.3
+pmlogmv -V mv-foo mv-bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls mv-foo* mv-bar*
+rm -rf mv-foo.* mv-bar.*
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/738.out b/qa/738.out
new file mode 100644
index 0000000..bf52725
--- /dev/null
+++ b/qa/738.out
@@ -0,0 +1,264 @@
+QA output created by 738
+=== Usage, no input files, incomplete input archive ===
+Usage: pmlogmv [options] oldname newname
+
+Options:
+ -N, --showme perform a dry run, showing what would be done
+ -V, --verbose increase diagnostic verbosity
+ -?, --help show this usage message and exit
+exit status 1
+Usage: pmlogmv [options] oldname newname
+
+Options:
+ -N, --showme perform a dry run, showing what would be done
+ -V, --verbose increase diagnostic verbosity
+ -?, --help show this usage message and exit
+exit status 1
+pmlogmv: Error: cannot find any files for the input archive (foo)
+exit status 1
+pmlogmv: Error: cannot find .metadata file for the input archive (foo)
+... ls data ... foo.0
+exit status 1
+pmlogmv: Error: cannot find any data files for the input archive (foo)
+... ls data ... foo.meta
+exit status 1
+
+=== non-pcp archives and output files already exist ===
+link foo.0 -> bar.0
+link foo.index -> bar.index
+link foo.meta -> bar.meta
+remove foo.0
+remove foo.index
+remove foo.meta
+bar.0
+bar.index
+bar.meta
+foo.frog
+--- bar.0 already exists ---
+pmlogmv: Error: ln-pass: output file already exists: bar.0
+... ls data ... bar.0
+... ls data ... foo.0
+... ls data ... foo.index
+... ls data ... foo.meta
+exit status 1
+bar.0
+foo.0
+foo.index
+foo.meta
+--- bar.index already exists ---
+link foo.0 -> bar.0
+pmlogmv: Error: ln-pass: output file already exists: bar.index
+... ls data ... bar.0
+... ls data ... bar.index
+... ls data ... foo.0
+... ls data ... foo.index
+... ls data ... foo.meta
+cleanup: remove bar.0
+exit status 1
+bar.index
+foo.0
+foo.index
+foo.meta
+--- bar.meta already exists ---
+link foo.0 -> bar.0
+link foo.index -> bar.index
+pmlogmv: Error: ln-pass: output file already exists: bar.meta
+... ls data ... bar.0
+... ls data ... bar.index
+... ls data ... bar.meta
+... ls data ... foo.0
+... ls data ... foo.index
+... ls data ... foo.meta
+cleanup: remove bar.0
+cleanup: remove bar.index
+exit status 1
+bar.meta
+foo.0
+foo.index
+foo.meta
+
+=== simplest case ===
+link foo.0 -> bar.0
++ ln foo.0 bar.0
+link foo.index -> bar.index
++ ln foo.index bar.index
+link foo.meta -> bar.meta
++ ln foo.meta bar.meta
+remove foo.0
++ rm foo.0
+remove foo.index
++ rm foo.index
+remove foo.meta
++ rm foo.meta
+link foo.0 -> bar.0
+link foo.index -> bar.index
+link foo.meta -> bar.meta
+remove foo.0
+remove foo.index
+remove foo.meta
+ls: cannot access foo*: No such file or directory
+bar.0
+bar.index
+bar.meta
+
+=== single oldfile name cases ===
+--- foo.meta ---
+link foo.0 -> bar.0
+link foo.index -> bar.index
+link foo.meta -> bar.meta
+remove foo.0
+remove foo.index
+remove foo.meta
+ls: cannot access foo*: No such file or directory
+bar.0
+bar.index
+bar.meta
+--- foo.0 ---
+link foo.0 -> bar.0
+link foo.index -> bar.index
+link foo.meta -> bar.meta
+remove foo.0
+remove foo.index
+remove foo.meta
+ls: cannot access foo*: No such file or directory
+bar.0
+bar.index
+bar.meta
+--- foo.index ---
+link foo.0 -> bar.0
+link foo.index -> bar.index
+link foo.meta -> bar.meta
+remove foo.0
+remove foo.index
+remove foo.meta
+ls: cannot access foo*: No such file or directory
+bar.0
+bar.index
+bar.meta
+
+=== multi-volume case ===
+link mv-foo.0 -> bar.0
+link mv-foo.1 -> bar.1
+link mv-foo.123456789 -> bar.123456789
+link mv-foo.2 -> bar.2
+link mv-foo.index -> bar.index
+link mv-foo.meta -> bar.meta
+remove mv-foo.0
+remove mv-foo.1
+remove mv-foo.123456789
+remove mv-foo.2
+remove mv-foo.index
+remove mv-foo.meta
+ls: cannot access foo*: No such file or directory
+bar.0
+bar.1
+bar.123456789
+bar.2
+bar.index
+bar.meta
+
+=== old and new in different directories ==
+link mv-foo.0 -> new/mv-foo.0
+link mv-foo.1 -> new/mv-foo.1
+link mv-foo.2 -> new/mv-foo.2
+link mv-foo.index -> new/mv-foo.index
+link mv-foo.meta -> new/mv-foo.meta
+remove mv-foo.0
+remove mv-foo.1
+remove mv-foo.2
+remove mv-foo.index
+remove mv-foo.meta
+ls: cannot access foo*: No such file or directory
+new/mv-foo.0
+new/mv-foo.1
+new/mv-foo.2
+new/mv-foo.index
+new/mv-foo.meta
+
+=== error case for ln failing ===
+link mv-foo.0 -> new/mv-foo.0
+ln: failed to create hard link 'new/mv-foo.0' => 'mv-foo.0': Permission denied
+pmlogmv: Error: ln mv-foo.0 new/mv-foo.0 failed!
+ls: cannot access new/mv-foo*: No such file or directory
+... ls data ... mv-foo.0
+... ls data ... mv-foo.1
+... ls data ... mv-foo.2
+... ls data ... mv-foo.index
+... ls data ... mv-foo.meta
+cleanup: remove new/mv-foo.0
+exit status 1
+ls: cannot access new/*: No such file or directory
+mv-foo.0
+mv-foo.1
+mv-foo.2
+mv-foo.index
+mv-foo.meta
+
+=== error case for rm failing ===
+link mv-foo.0 -> new/mv-foo.0
+link mv-foo.1 -> new/mv-foo.1
+link mv-foo.2 -> new/mv-foo.2
+link mv-foo.index -> new/mv-foo.index
+link mv-foo.meta -> new/mv-foo.meta
+remove mv-foo.0
+rm: cannot remove 'mv-foo.0': Permission denied
+pmlogmv: Warning: rm mv-foo.0 failed!
+remove mv-foo.1
+rm: cannot remove 'mv-foo.1': Permission denied
+pmlogmv: Warning: rm mv-foo.1 failed!
+remove mv-foo.2
+rm: cannot remove 'mv-foo.2': Permission denied
+pmlogmv: Warning: rm mv-foo.2 failed!
+remove mv-foo.index
+rm: cannot remove 'mv-foo.index': Permission denied
+pmlogmv: Warning: rm mv-foo.index failed!
+remove mv-foo.meta
+rm: cannot remove 'mv-foo.meta': Permission denied
+pmlogmv: Warning: rm mv-foo.meta failed!
+mv-foo.0
+mv-foo.1
+mv-foo.2
+mv-foo.index
+mv-foo.meta
+new/mv-foo.0
+new/mv-foo.1
+new/mv-foo.2
+new/mv-foo.index
+new/mv-foo.meta
+
+=== Frank's error case rm failing after first file ===
+link mv-foo.0 -> mv-bar.0
+link mv-foo.1 -> mv-bar.1
+link mv-foo.2 -> mv-bar.2
+link mv-foo.3 -> mv-bar.3
+link mv-foo.index -> mv-bar.index
+link mv-foo.meta -> mv-bar.meta
+remove mv-foo.0
+remove mv-foo.1
+pmlogmv: Error: rm-pass: link count 4 (not 2): mv-foo.2
+... ls data ... mv-bar.0
+... ls data ... mv-bar.1
+... ls data ... mv-bar.2
+... ls data ... mv-bar.3
+... ls data ... mv-bar.index
+... ls data ... mv-bar.meta
+... ls data ... mv-foo.2
+... ls data ... mv-foo.3
+... ls data ... mv-foo.index
+... ls data ... mv-foo.meta
+cleanup: recover mv-foo.0 from mv-bar.0
+cleanup: recover mv-foo.1 from mv-bar.1
+cleanup: remove mv-bar.0
+cleanup: remove mv-bar.1
+cleanup: remove mv-bar.2
+cleanup: remove mv-bar.3
+cleanup: remove mv-bar.index
+cleanup: remove mv-bar.meta
+exit status 1
+ls: cannot access mv-bar*: No such file or directory
+mv-foo.0
+mv-foo.1
+mv-foo.2
+mv-foo.3
+mv-foo.index
+mv-foo.meta
diff --git a/qa/739 b/qa/739
new file mode 100755
index 0000000..1af6347
--- /dev/null
+++ b/qa/739
@@ -0,0 +1,57 @@
+#!/bin/sh
+# PCP QA Test No. 739
+# Exercise python script automated option handling
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_version()
+{
+ sed -e 's/ [0-9]*\.[0-9]*\.[0-9]*$/ X.Y.Z/g'
+}
+
+# real QA test starts here
+echo && echo check no arguments
+python $here/src/test_pcp_options.python
+
+echo && echo check non arguments
+python $here/src/test_pcp_options.python param1 param2
+
+echo && echo check archive option and non arguments
+python $here/src/test_pcp_options.python -a file param
+
+echo && echo check host option and hostzone
+python $here/src/test_pcp_options.python -h qa.r.us -z
+
+echo && echo check timezone
+python $here/src/test_pcp_options.python --timezone UTC
+
+echo && echo check option samples and interval
+python $here/src/test_pcp_options.python --samples=5 -t1
+
+echo && echo check custom local long options
+python $here/src/test_pcp_options.python --list /tmp --force
+
+echo && echo check custom local short options
+python $here/src/test_pcp_options.python -b
+
+echo && echo check version message generation
+python $here/src/test_pcp_options.python -V 2>&1 | _filter_version
+
+echo && echo check unknown option and usage message
+python $here/src/test_pcp_options.python --munchies
+
+echo && echo check help option and usage message
+python $here/src/test_pcp_options.python --help
+
+# success, all done
+status=0
+exit
diff --git a/qa/739.out b/qa/739.out
new file mode 100644
index 0000000..a721e5d
--- /dev/null
+++ b/qa/739.out
@@ -0,0 +1,119 @@
+QA output created by 739
+
+check no arguments
+Done!
+
+check non arguments
+Non-option arguments: ['param1', 'param2']
+Done!
+
+check archive option and non arguments
+overrideCB: got option 'a'
+Archive list: ['file']
+Non-option arguments: ['param']
+Done!
+
+check host option and hostzone
+overrideCB: got option 'h'
+overrideCB: got option 'z'
+Host list: ['qa.r.us']
+Done!
+
+check timezone
+overrideCB: got option 'Z'
+Timezone: UTC
+Done!
+
+check option samples and interval
+overrideCB: got option 's'
+overrideCB: got option 't'
+Samples: 5
+Interval: 1.000
+Done!
+
+check custom local long options
+overrideCB: got option 'l'
+optionsCB: got option ''l' (/tmp) [index=21]
+overrideCB: got option 'f'
+optionsCB: got option ''f' [index=20]
+Done!
+
+check custom local short options
+overrideCB: got option 'b'
+optionsCB: got option ''b' [index=0]
+Done!
+
+check version message generation
+test_pcp_options.python version X.Y.Z
+overrideCB: got option 'V'
+
+check unknown option and usage message
+test_pcp_options.python: unrecognized option '--munchies'
+Usage: test_pcp_options.python [options] parameters ...
+
+General Options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -H FILE, --hostsfile=FILE
+ read metric source hosts from a file
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -V, --version display version number and exit
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Test Options:
+ -f, --force force some behaviour
+ -l FILE, --list=FILE open a list file
+
+The parameter parameter is not optional.
+overrideCB: got option '?'
+
+check help option and usage message
+Usage: test_pcp_options.python [options] parameters ...
+
+General Options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g, --guimode start in GUI mode with new time control
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -H FILE, --hostsfile=FILE
+ read metric source hosts from a file
+ -K SPEC, --spec-local=SPEC
+ optional additional PMDA spec for local connection
+ -L, --local-PMDA metrics source is local connection to a PMDA
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -p N, --guiport=N port for connection to existing time control
+ -S TIME, --start=TIME start of the time window
+ -s N, --samples=N terminate after this many samples
+ -T TIME, --finish=TIME
+ end of the time window
+ -t DELTA, --interval=DELTA
+ sampling interval
+ -V, --version display version number and exit
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z, --hostzone set reporting timezone to local time of metrics source
+ -?, --help show this usage message and exit
+
+Test Options:
+ -f, --force force some behaviour
+ -l FILE, --list=FILE open a list file
+
+The parameter parameter is not optional.
+overrideCB: got option '?'
diff --git a/qa/740 b/qa/740
new file mode 100755
index 0000000..c840ea9
--- /dev/null
+++ b/qa/740
@@ -0,0 +1,57 @@
+#!/bin/sh
+# PCP QA Test No. 740
+# Exercise transfer of pid, uid, gid from client to PMDA
+# when using Unix domain sockets.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$unix_domain_sockets || _notrun "No unix domain socket support available"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ grep -i attribute | \
+ sed \
+ -e "s/processid=$pid/processid=PID/" \
+ -e "s/groupid=$gid/groupid=GID/" \
+ -e "s/userid=$uid/userid=UID/" \
+ -e '/ctx=[0-9][0-9]*/s//ctx=N/' \
+ -e '/pmdasample([0-9][0-9]*)/s//pmdasample(PID)/' \
+ -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATETIME]/'
+}
+
+# real QA test starts here
+$sudo $PCP_RC_DIR/pmcd start >/dev/null 2>&1
+_wait_for_pmcd
+
+# store to enable verbose attribute diagnostics
+authdbg=`pmdbg -l | grep DBG_TRACE_AUTH | awk '{ print $2 }'`
+pmstore sample.control $authdbg
+
+# unix domain fetch (with attribute transfer)
+pminfo -h unix: sample.long.one &
+pid=$!
+uid=`id -u`
+gid=`id -g`
+wait $!
+
+cat $PCP_LOG_DIR/pmcd/sample.log | _filter
+pmstore sample.control 0
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/740.out b/qa/740.out
new file mode 100644
index 0000000..c75c538
--- /dev/null
+++ b/qa/740.out
@@ -0,0 +1,7 @@
+QA output created by 740
+sample.control old value=0 new value=16777216
+sample.long.one
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N processid=PID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N groupid=GID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N userid=UID
+sample.control old value=16777216 new value=0
diff --git a/qa/741 b/qa/741
new file mode 100755
index 0000000..72b8db0
--- /dev/null
+++ b/qa/741
@@ -0,0 +1,42 @@
+#!/bin/sh
+# PCP QA Test No. 741
+# Exercise python script automated sys.argv context creation
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+eval HOST=`pmprobe -v pmcd.hostname | awk '{ print $3 }'`
+
+_filter_live()
+{
+ sed \
+ -e '/^Start: /d' \
+ -e '/^Finish: /d' \
+ -e '/^Origin: /d' \
+ -e "s/hostname: $HOST/hostname: HOST/g" \
+ #
+}
+
+# real QA test starts here
+echo && echo check archive and boundaries
+python $here/src/test_pcp_getopts.python -a src/ace_v2 -z
+
+echo && echo check archive time windows
+python $here/src/test_pcp_getopts.python -a src/ace_v2 -z \
+ --start="@ Mon Oct 30 14:25:10 1995" \
+ --finish="@ Mon Oct 30 14:25:15 1995"
+
+echo && echo check multiple host contexts
+python $here/src/test_pcp_getopts.python -h local: -h local: | _filter_live
+
+# success, all done
+status=0
+exit
diff --git a/qa/741.out b/qa/741.out
new file mode 100644
index 0000000..e24b6b8
--- /dev/null
+++ b/qa/741.out
@@ -0,0 +1,23 @@
+QA output created by 741
+
+check archive and boundaries
+Archive list: ['src/ace_v2']
+Archive src/ace_v2 hostname: moomba
+Start: 815027109.044
+Finish: 815027120.177
+Origin: 815027109.044
+Done!
+
+check archive time windows
+Archive list: ['src/ace_v2']
+Archive src/ace_v2 hostname: moomba
+Start: 815027110.000
+Finish: 815027115.000
+Origin: 815027110.000
+Done!
+
+check multiple host contexts
+Host list: ['local:', 'local:']
+Host local: pmcd.hostname: HOST
+Host local: pmcd.hostname: HOST
+Done!
diff --git a/qa/742 b/qa/742
new file mode 100755
index 0000000..529adcb
--- /dev/null
+++ b/qa/742
@@ -0,0 +1,28 @@
+#!/bin/sh
+# PCP QA Test No. 742
+# Exercise the pcp-uptime(1) command using an archive
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+archive="-a $here/src/pcp-uptime -z"
+
+# real QA test starts here
+echo && echo uptime output, at archive start
+pcp $archive uptime
+
+echo && echo uptime output, at archive end
+pcp $archive -O-0 uptime
+
+# success, all done
+status=0
+exit
diff --git a/qa/742.out b/qa/742.out
new file mode 100644
index 0000000..56ec80d
--- /dev/null
+++ b/qa/742.out
@@ -0,0 +1,7 @@
+QA output created by 742
+
+uptime output, at archive start
+ 11:36:51 up 5:01, 10 users, load average: 0.50, 0.37, 0.36
+
+uptime output, at archive end
+ 11:36:59 up 5:01, 12 users, load average: 0.46, 0.36, 0.36
diff --git a/qa/743 b/qa/743
new file mode 100755
index 0000000..4468b5f
--- /dev/null
+++ b/qa/743
@@ -0,0 +1,35 @@
+#!/bin/sh
+# PCP QA Test No. 743
+# Exercise the pcp-numastat(1) command using an archive
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+archive1="-a $here/src/pcp-numastat-1-node -z"
+archive3="-a $here/src/numa -z"
+
+# real QA test starts here
+echo && echo 1 node numastat output, at archive start, cmd width
+pcp $archive1 numastat --width=64
+
+echo && echo 1 node numastat output, at archive end, cmd width
+pcp $archive1 -O-0 numastat --width=64
+
+echo && echo 3 node numastat output, at archive end, large env width
+NUMASTAT_WIDTH=1000 pcp $archive3 -O-0 numastat
+
+echo && echo 3 node numastat output, at archive end, small env width
+NUMASTAT_WIDTH=50 pcp $archive3 -O-0 numastat
+
+# success, all done
+status=0
+exit
diff --git a/qa/743.out b/qa/743.out
new file mode 100644
index 0000000..583db57
--- /dev/null
+++ b/qa/743.out
@@ -0,0 +1,54 @@
+QA output created by 743
+
+1 node numastat output, at archive start, cmd width
+ node0
+numa_hit 38965423
+numa_miss 0
+numa_foreign 0
+interleave_hit 27905
+local_node 38965423
+other_node 0
+
+1 node numastat output, at archive end, cmd width
+ node0
+numa_hit 38968471
+numa_miss 0
+numa_foreign 0
+interleave_hit 27905
+local_node 38968471
+other_node 0
+
+3 node numastat output, at archive end, large env width
+ node0 node1 node2
+numa_hit 1050 1034 161888165
+numa_miss 0 0 0
+numa_foreign 0 0 0
+interleave_hit 873 871 873
+local_node 0 0 161888165
+other_node 1050 1034 0
+
+3 node numastat output, at archive end, small env width
+ node0 node1
+numa_hit 1050 1034
+ node2
+numa_hit 161888165
+ node0 node1
+numa_miss 0 0
+ node2
+numa_miss 0
+ node0 node1
+numa_foreign 0 0
+ node2
+numa_foreign 0
+ node0 node1
+interleave_hit 873 871
+ node2
+interleave_hit 873
+ node0 node1
+local_node 0 0
+ node2
+local_node 161888165
+ node0 node1
+other_node 1050 1034
+ node2
+other_node 0
diff --git a/qa/744 b/qa/744
new file mode 100755
index 0000000..e26d9e7
--- /dev/null
+++ b/qa/744
@@ -0,0 +1,47 @@
+#!/bin/sh
+# PCP QA Test No. 744
+# Exercise the NVIDIA GPU PMDA, basic fetch testing.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+test -f $here/src/libnvidia-ml.$DSO_SUFFIX || \
+ _notrun "No NVIDIA QA wrapper library is available"
+test -f $PCP_LIB_DIR/libnvidia-ml.$DSO_SUFFIX && \
+ _notrun "Conflicting system NVIDIA library found"
+test -f $PCP_LIB32_DIR/libnvidia-ml.$DSO_SUFFIX && \
+ _notrun "Conflicting 32-bit system NVIDIA library found"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e 's/.* pminfo\(.*\) Info:/pminfo[PID] Info:/g'
+}
+
+pmns=$PCP_PMDAS_DIR/nvidia/root
+pmda=$PCP_PMDAS_DIR/nvidia/pmda_nvidia,nvidia_init
+
+# real QA test starts here
+echo
+echo "== Testing behaviour with no nvidia library available"
+pminfo -L -K clear -K add,120,$pmda -dfmtT -n $pmns nvidia 2>&1 | _filter
+
+echo
+echo "== Testing behaviour with QA wrapper nvidia library"
+export LD_LIBRARY_PATH=$here/src
+pminfo -L -K clear -K add,120,$pmda -dfmtT -n $pmns nvidia 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/744.out b/qa/744.out
new file mode 100644
index 0000000..dc05030
--- /dev/null
+++ b/qa/744.out
@@ -0,0 +1,200 @@
+QA output created by 744
+
+== Testing behaviour with no nvidia library available
+pminfo[PID] Info: NVIDIA NVML library currently unavailable
+
+nvidia.numcards PMID: 120.0.0 [Number of Graphics Cards]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+The number of NVIDIA Graphics cards installed in this system
+ value 0
+
+nvidia.gpuid PMID: 120.0.1 [GPU ID]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Zero indexed id of this NVIDIA card
+No value(s) available!
+
+nvidia.cardname PMID: 120.0.2 [GPU Name]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The name of the graphics card
+No value(s) available!
+
+nvidia.busid PMID: 120.0.3 [Card Bus ID]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Bus ID as reported by the NVIDIA tools, not lspci
+No value(s) available!
+
+nvidia.temp PMID: 120.0.4 [The temperature of the card]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Temperature of the GPU on the NVIDIA card in degrees celcius.
+No value(s) available!
+
+nvidia.fanspeed PMID: 120.0.5 [Fanspeed]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Speed of the GPU fan as a percentage of the maximum
+No value(s) available!
+
+nvidia.perfstate PMID: 120.0.6 [NVIDIA performance state]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The PX performance state as reported from NVML. Value is an integer
+which should range from 0 (maximum performance) to 15 (minimum). If
+the state is unknown the reported value will be 32, however.
+No value(s) available!
+
+nvidia.gpuactive PMID: 120.0.7 [Percentage of GPU utilization]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percentage of time over the past sample period during which one or more
+kernels was executing on the GPU.
+No value(s) available!
+
+nvidia.memactive PMID: 120.0.8 [Percentage of time spent accessing memory]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percent of time over the past sample period during which global (device)
+memory was being read or written. This metric shows if the memory is
+actively being accesed, and is not correlated to storage amount used.
+No value(s) available!
+
+nvidia.memused PMID: 120.0.9 [Allocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that has currently been allocated, in bytes.
+Note that the driver/GPU always sets aside a small amount of memory
+for bookkeeping.
+No value(s) available!
+
+nvidia.memtotal PMID: 120.0.10 [Total FB memory available]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: discrete Units: byte
+Help:
+The total amount of GPU FB memory available on the card, in bytes.
+No value(s) available!
+
+nvidia.memfree PMID: 120.0.11 [Unallocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that is not currently allocated, in bytes.
+No value(s) available!
+
+== Testing behaviour with QA wrapper nvidia library
+pminfo[PID] Info: Successfully loaded NVIDIA NVML library
+
+nvidia.numcards PMID: 120.0.0 [Number of Graphics Cards]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+The number of NVIDIA Graphics cards installed in this system
+ value 2
+
+nvidia.gpuid PMID: 120.0.1 [GPU ID]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Zero indexed id of this NVIDIA card
+ inst [0 or "gpu0"] value 0
+ inst [1 or "gpu1"] value 1
+
+nvidia.cardname PMID: 120.0.2 [GPU Name]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The name of the graphics card
+ inst [0 or "gpu0"] value "GeForce 100M Series"
+ inst [1 or "gpu1"] value "Quadro FX 200M Series"
+
+nvidia.busid PMID: 120.0.3 [Card Bus ID]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Bus ID as reported by the NVIDIA tools, not lspci
+ inst [0 or "gpu0"] value "0:1:0x2:3:4"
+ inst [1 or "gpu1"] value "20:21:0x2:23:24"
+
+nvidia.temp PMID: 120.0.4 [The temperature of the card]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Temperature of the GPU on the NVIDIA card in degrees celcius.
+ inst [0 or "gpu0"] value 6
+ inst [1 or "gpu1"] value 26
+
+nvidia.fanspeed PMID: 120.0.5 [Fanspeed]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Speed of the GPU fan as a percentage of the maximum
+ inst [0 or "gpu0"] value 5
+ inst [1 or "gpu1"] value 25
+
+nvidia.perfstate PMID: 120.0.6 [NVIDIA performance state]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The PX performance state as reported from NVML. Value is an integer
+which should range from 0 (maximum performance) to 15 (minimum). If
+the state is unknown the reported value will be 32, however.
+ inst [0 or "gpu0"] value 9
+ inst [1 or "gpu1"] value 29
+
+nvidia.gpuactive PMID: 120.0.7 [Percentage of GPU utilization]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percentage of time over the past sample period during which one or more
+kernels was executing on the GPU.
+ inst [0 or "gpu0"] value 7
+ inst [1 or "gpu1"] value 27
+
+nvidia.memactive PMID: 120.0.8 [Percentage of time spent accessing memory]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percent of time over the past sample period during which global (device)
+memory was being read or written. This metric shows if the memory is
+actively being accesed, and is not correlated to storage amount used.
+ inst [0 or "gpu0"] value 8
+ inst [1 or "gpu1"] value 28
+
+nvidia.memused PMID: 120.0.9 [Allocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that has currently been allocated, in bytes.
+Note that the driver/GPU always sets aside a small amount of memory
+for bookkeeping.
+ inst [0 or "gpu0"] value 104857600
+ inst [1 or "gpu1"] value 6442450944
+
+nvidia.memtotal PMID: 120.0.10 [Total FB memory available]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: discrete Units: byte
+Help:
+The total amount of GPU FB memory available on the card, in bytes.
+ inst [0 or "gpu0"] value 268435456
+ inst [1 or "gpu1"] value 8589934592
+
+nvidia.memfree PMID: 120.0.11 [Unallocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that is not currently allocated, in bytes.
+ inst [0 or "gpu0"] value 163577856
+ inst [1 or "gpu1"] value 2147483648
diff --git a/qa/745 b/qa/745
new file mode 100755
index 0000000..5ea3ff1
--- /dev/null
+++ b/qa/745
@@ -0,0 +1,52 @@
+#!/bin/sh
+# PCP QA Test No. 745
+# Exercise the NVIDIA GPU PMDA using valgrind memory checking.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+test -f $here/src/libnvidia-ml.$DSO_SUFFIX || \
+ _notrun "No NVIDIA QA wrapper library is available"
+test -f $PCP_LIB_DIR/libnvidia-ml.$DSO_SUFFIX && \
+ _notrun "Conflicting system NVIDIA library found"
+test -f $PCP_LIB32_DIR/libnvidia-ml.$DSO_SUFFIX && \
+ _notrun "Conflicting 32-bit system NVIDIA library found"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s,$PCP_PMDAS_DIR/,,g" \
+ -e "s/\.$DSO_SUFFIX,/.DSO,/g" \
+ -e 's/.* pminfo\(.*\) Info:/pminfo[PID] Info:/g' \
+ # end
+}
+
+pmns=$PCP_PMDAS_DIR/nvidia/root
+pmda=$PCP_PMDAS_DIR/nvidia/pmda_nvidia.$DSO_SUFFIX,nvidia_init
+
+# real QA test starts here
+echo
+echo "Testing behaviour with no nvidia library available"
+_run_valgrind pminfo -L -K clear -K add,120,$pmda -dfmtT -n $pmns nvidia 2>&1 | _filter
+
+echo
+echo "Testing behaviour with QA wrapper nvidia library"
+export LD_LIBRARY_PATH=$here/src
+_run_valgrind pminfo -L -K clear -K add,120,$pmda -dfmtT -n $pmns nvidia 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/745.out b/qa/745.out
new file mode 100644
index 0000000..1c5a918
--- /dev/null
+++ b/qa/745.out
@@ -0,0 +1,218 @@
+QA output created by 745
+
+Testing behaviour with no nvidia library available
+=== std out ===
+
+nvidia.numcards PMID: 120.0.0 [Number of Graphics Cards]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+The number of NVIDIA Graphics cards installed in this system
+ value 0
+
+nvidia.gpuid PMID: 120.0.1 [GPU ID]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Zero indexed id of this NVIDIA card
+No value(s) available!
+
+nvidia.cardname PMID: 120.0.2 [GPU Name]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The name of the graphics card
+No value(s) available!
+
+nvidia.busid PMID: 120.0.3 [Card Bus ID]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Bus ID as reported by the NVIDIA tools, not lspci
+No value(s) available!
+
+nvidia.temp PMID: 120.0.4 [The temperature of the card]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Temperature of the GPU on the NVIDIA card in degrees celcius.
+No value(s) available!
+
+nvidia.fanspeed PMID: 120.0.5 [Fanspeed]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Speed of the GPU fan as a percentage of the maximum
+No value(s) available!
+
+nvidia.perfstate PMID: 120.0.6 [NVIDIA performance state]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The PX performance state as reported from NVML. Value is an integer
+which should range from 0 (maximum performance) to 15 (minimum). If
+the state is unknown the reported value will be 32, however.
+No value(s) available!
+
+nvidia.gpuactive PMID: 120.0.7 [Percentage of GPU utilization]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percentage of time over the past sample period during which one or more
+kernels was executing on the GPU.
+No value(s) available!
+
+nvidia.memactive PMID: 120.0.8 [Percentage of time spent accessing memory]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percent of time over the past sample period during which global (device)
+memory was being read or written. This metric shows if the memory is
+actively being accesed, and is not correlated to storage amount used.
+No value(s) available!
+
+nvidia.memused PMID: 120.0.9 [Allocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that has currently been allocated, in bytes.
+Note that the driver/GPU always sets aside a small amount of memory
+for bookkeeping.
+No value(s) available!
+
+nvidia.memtotal PMID: 120.0.10 [Total FB memory available]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: discrete Units: byte
+Help:
+The total amount of GPU FB memory available on the card, in bytes.
+No value(s) available!
+
+nvidia.memfree PMID: 120.0.11 [Unallocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that is not currently allocated, in bytes.
+No value(s) available!
+=== std err ===
+pminfo[PID] Info: NVIDIA NVML library currently unavailable
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -L -K clear -K add,120,nvidia/pmda_nvidia.DSO,nvidia_init -dfmtT -n nvidia/root nvidia
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+Testing behaviour with QA wrapper nvidia library
+=== std out ===
+
+nvidia.numcards PMID: 120.0.0 [Number of Graphics Cards]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+The number of NVIDIA Graphics cards installed in this system
+ value 2
+
+nvidia.gpuid PMID: 120.0.1 [GPU ID]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Zero indexed id of this NVIDIA card
+ inst [0 or "gpu0"] value 0
+ inst [1 or "gpu1"] value 1
+
+nvidia.cardname PMID: 120.0.2 [GPU Name]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The name of the graphics card
+ inst [0 or "gpu0"] value "GeForce 100M Series"
+ inst [1 or "gpu1"] value "Quadro FX 200M Series"
+
+nvidia.busid PMID: 120.0.3 [Card Bus ID]
+ Data Type: string InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Bus ID as reported by the NVIDIA tools, not lspci
+ inst [0 or "gpu0"] value "0:1:0x2:3:4"
+ inst [1 or "gpu1"] value "20:21:0x2:23:24"
+
+nvidia.temp PMID: 120.0.4 [The temperature of the card]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The Temperature of the GPU on the NVIDIA card in degrees celcius.
+ inst [0 or "gpu0"] value 6
+ inst [1 or "gpu1"] value 26
+
+nvidia.fanspeed PMID: 120.0.5 [Fanspeed]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Speed of the GPU fan as a percentage of the maximum
+ inst [0 or "gpu0"] value 5
+ inst [1 or "gpu1"] value 25
+
+nvidia.perfstate PMID: 120.0.6 [NVIDIA performance state]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+The PX performance state as reported from NVML. Value is an integer
+which should range from 0 (maximum performance) to 15 (minimum). If
+the state is unknown the reported value will be 32, however.
+ inst [0 or "gpu0"] value 9
+ inst [1 or "gpu1"] value 29
+
+nvidia.gpuactive PMID: 120.0.7 [Percentage of GPU utilization]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percentage of time over the past sample period during which one or more
+kernels was executing on the GPU.
+ inst [0 or "gpu0"] value 7
+ inst [1 or "gpu1"] value 27
+
+nvidia.memactive PMID: 120.0.8 [Percentage of time spent accessing memory]
+ Data Type: 32-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: none
+Help:
+Percent of time over the past sample period during which global (device)
+memory was being read or written. This metric shows if the memory is
+actively being accesed, and is not correlated to storage amount used.
+ inst [0 or "gpu0"] value 8
+ inst [1 or "gpu1"] value 28
+
+nvidia.memused PMID: 120.0.9 [Allocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that has currently been allocated, in bytes.
+Note that the driver/GPU always sets aside a small amount of memory
+for bookkeeping.
+ inst [0 or "gpu0"] value 104857600
+ inst [1 or "gpu1"] value 6442450944
+
+nvidia.memtotal PMID: 120.0.10 [Total FB memory available]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: discrete Units: byte
+Help:
+The total amount of GPU FB memory available on the card, in bytes.
+ inst [0 or "gpu0"] value 268435456
+ inst [1 or "gpu1"] value 8589934592
+
+nvidia.memfree PMID: 120.0.11 [Unallocated FB memory]
+ Data Type: 64-bit unsigned int InDom: 120.0 0x1e000000
+ Semantics: instant Units: byte
+Help:
+Amount of GPU FB memory that is not currently allocated, in bytes.
+ inst [0 or "gpu0"] value 163577856
+ inst [1 or "gpu1"] value 2147483648
+=== std err ===
+pminfo[PID] Info: Successfully loaded NVIDIA NVML library
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -L -K clear -K add,120,nvidia/pmda_nvidia.DSO,nvidia_init -dfmtT -n nvidia/root nvidia
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/748 b/qa/748
new file mode 100755
index 0000000..4881240
--- /dev/null
+++ b/qa/748
@@ -0,0 +1,50 @@
+#!/bin/sh
+# PCP QA Test No. 748
+# Check pmlogrewrite config for mysql pmda changes
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# archive with the latest and greatest mysql pmda installed ...
+# see archives/mk-mysql.sh for a recipe to recreate
+#
+NEWARCHIVE=archives/mysql-1
+
+# real QA test starts here
+cat >$tmp.config <<End-of-File
+metric mysql.status.connections { sem -> instant units -> 0,0,0,0,0,0 }
+metric mysql.status.uptime_since_flush_status { sem -> counter }
+metric mysql.status.uptime { sem -> counter }
+End-of-File
+
+pmlogrewrite -c $tmp.config -w $NEWARCHIVE $tmp.old
+
+pmlogrewrite -c $PCP_VAR_DIR/config/pmlogrewrite/mysql_migrate.conf -w $tmp.old $tmp.new
+
+pmdumplog -a $tmp.old >$tmp.old.dump
+pmdumplog -a $tmp.new >$tmp.new.dump
+pmdumplog -a $NEWARCHIVE >$tmp.ref.dump
+
+echo "old -> new changes"
+diff -u $tmp.old.dump $tmp.new.dump | sed -e '/^---/d' -e '/^+++/d'
+
+echo
+echo "new -> ref changes ... expect none"
+diff -u $tmp.new.dump $tmp.ref.dump | sed -e '/^---/d' -e '/^+++/d'
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/748.out b/qa/748.out
new file mode 100644
index 0000000..8e090a7
--- /dev/null
+++ b/qa/748.out
@@ -0,0 +1,31 @@
+QA output created by 748
+old -> new changes
+@@ -93,7 +93,7 @@
+ Semantics: instant Units: none
+ PMID: 66.0.110 (mysql.status.connections)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: instant Units: none
++ Semantics: counter Units: count
+ PMID: 66.1.47 (mysql.variables.have_geometry)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+@@ -1107,7 +1107,7 @@
+ Semantics: instant Units: none
+ PMID: 66.0.251 (mysql.status.uptime)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: sec
++ Semantics: instant Units: sec
+ PMID: 66.0.12 (mysql.status.com_call_procedure)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+@@ -1116,7 +1116,7 @@
+ Semantics: instant Units: none
+ PMID: 66.0.252 (mysql.status.uptime_since_flush_status)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+- Semantics: counter Units: sec
++ Semantics: instant Units: sec
+ PMID: 66.0.13 (mysql.status.com_change_db)
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+new -> ref changes ... expect none
diff --git a/qa/749 b/qa/749
new file mode 100644
index 0000000..9ac9ec3
--- /dev/null
+++ b/qa/749
@@ -0,0 +1,77 @@
+#!/bin/sh
+# PCP QA Test No. 749
+# Check pmcd static probes
+#
+# Copyright (c) 2013-2014 Red Hat.
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -fr $tmp.* $seq.full
+trap "rm -fr $tmp.*; exit \$status" 0 1 2 3 15
+
+# If no systemtap, we cannot run the script
+which stap >/dev/null 2>&1 || _notrun "No systemtap stap executable found"
+
+# If no PCP support for probes, also bail out
+_get_libpcp_config
+$static_probes || _notrun "No static probe support available in PCP build"
+
+# If running in FIPS mode, we cannot run this either
+fips_enabled=0
+fips_stsfile="/proc/sys/crypto/fips_enabled"
+[ -f $fips_stsfile ] && fips_enabled=`cat $fips_stsfile`
+test $fips_enabled -eq 0 || _notrun "FIPS enabled, no kernel stap testing"
+
+# real QA test starts here
+cat <<End-of-File >$tmp.stap
+global probe_hits
+probe begin {
+ system("pminfo -f hinv >/dev/null")
+ system("pminfo -f kernel >/dev/null")
+ system("pminfo -d mem >/dev/null")
+ system("pminfo -f network >/dev/null")
+ system("pminfo -tT disk >/dev/null")
+}
+probe process("$PCP_BINADM_DIR/pmcd").mark("*") {
+ probe_hits <<< 1
+}
+probe timer.ms(1000) {
+ if (@count(probe_hits) > 0)
+ println("PASS")
+ else
+ println("FAIL")
+ exit()
+}
+End-of-File
+echo "Using stap config:" >> $seq.full
+cat $tmp.stap >> $seq.full
+echo "Running pmcd process:" >> $seq.full
+$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep pmcd >> $seq.full
+
+# check for stap user probing support
+stap -p4 $tmp.stap >$tmp.out 2>&1
+if [ $? -ne 0 ]
+then
+ echo "Systemtap compile check failed"
+ cat $tmp.out >> $seq.full
+ _notrun "Systemtap userspace probing unsupported here"
+fi
+
+# start systemtap and count pmcd probe hits
+echo "Fire stap probes:" >> $seq.full
+$sudo stap $tmp.stap >$tmp.out 2>&1
+cat $tmp.out | tee -a $seq.full
+
+echo "Output from stap:" >> $seq.full
+cat $tmp.out >> $seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/749.out b/qa/749.out
new file mode 100644
index 0000000..51330e5
--- /dev/null
+++ b/qa/749.out
@@ -0,0 +1,2 @@
+QA output created by 749
+PASS
diff --git a/qa/750 b/qa/750
new file mode 100755
index 0000000..de38b30
--- /dev/null
+++ b/qa/750
@@ -0,0 +1,103 @@
+#!/bin/sh
+# PCP QA Test No. 750
+# Exercise the RPM Package Manager PMDA
+#
+# Copyright (c) 2013-2014 Red Hat.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.rpm
+_rpm_support_tests
+
+status=1 # failure is the default!
+fqdn=`_get_fqdn`
+hostname=`hostname`
+$sudo rm -fr $tmp.* $seq.full
+trap "_rpm_cleanup" 0 1 2 3 15
+
+filter_pmval()
+{
+ sed \
+ -e "s/^ *\"$fqdn\"/\"BUILDHOST\"/g" \
+ -e "s/^ *\"$hostname\"/\"BUILDHOST\"/g" \
+ -e 's/^ [0-9][0-9]* $/ TIMESTAMP /g' \
+ -e "s/^host: $hostname$/host: HOST/g" \
+ # end
+}
+
+report_package()
+{
+ inst="$1-$2"
+
+ pmval -s 1 rpm.arch -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.buildhost -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.buildtime -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.description -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.epoch -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.group -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.installtime -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.license -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.packager -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.release -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.size -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.sourcerpm -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.summary -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.url -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.vendor -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.version -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+ pmval -s 1 rpm.name -i $inst 2>&1 | filter_pmval | tee -a $seq.full
+}
+
+package_totals_before()
+{
+ pre_bytes=`pmprobe -v rpm.total.bytes | awk '{ print $3 }'`
+ pre_count=`pmprobe -v rpm.total.count | awk '{ print $3 }'`
+}
+
+package_totals_after()
+{
+ post_bytes=`pmprobe -v rpm.total.bytes | awk '{ print $3 }'`
+ post_count=`pmprobe -v rpm.total.count | awk '{ print $3 }'`
+
+ diff_bytes=`expr $post_bytes - $pre_bytes`
+ echo "bytes diff: $post_bytes - $pre_bytes = $diff_bytes" >> $seq.full
+ pminfo -f rpm.size >> $seq.full
+
+ diff_count=`expr $post_count - $pre_count`
+ echo "count diff: $post_count - $pre_count = $diff_count" >> $seq.full
+
+ echo
+ if [ $diff_bytes -ge 0 ]
+ then
+ echo Total bytes check: OK
+ else
+ echo Total bytes check: FAIL - $diff_bytes delta
+ fi
+
+ if [ $diff_count -eq 1 ]
+ then
+ echo Total count check: OK
+ else
+ echo Total count check: FAIL - $diff_count delta
+ fi
+}
+
+# real QA test starts here
+
+_rpm_pmda_prepare
+_rpm_package_prepare
+
+package_totals_before
+_rpm_package_install
+_rpm_package_install_await
+report_package qaplayer 1.0-1.noarch
+package_totals_after
+
+_rpm_package_remove
+_rpm_package_remove_await
+report_package qaplayer 1.0-1.noarch
+
+# success, all done
+status=0
+exit
diff --git a/qa/750.out b/qa/750.out
new file mode 100644
index 0000000..40f4324
--- /dev/null
+++ b/qa/750.out
@@ -0,0 +1,201 @@
+QA output created by 750
+Preparing RPM package
+Installing qaplayer
+
+metric: rpm.arch
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+ "noarch"
+
+metric: rpm.buildhost
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+"BUILDHOST"
+
+metric: rpm.buildtime
+host: HOST
+semantics: instantaneous value
+units: sec
+samples: 1
+full label for instance[0]: qaplayer-1.0-1.noarch
+
+qaplayer-1.
+ TIMESTAMP
+
+metric: rpm.description
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+"It slices! It dices! It's a QA player app that
+can't be beat. By using the resonant frequency
+of the QA itself, it is able to simulate 20X
+oversampling. This leads to sound quality that
+cannot be equaled with more mundane software..."
+
+metric: rpm.epoch
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+full label for instance[0]: qaplayer-1.0-1.noarch
+
+qaplayer-1.
+ 0
+
+metric: rpm.group
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+ "Applications/Sound"
+
+metric: rpm.installtime
+host: HOST
+semantics: instantaneous value
+units: sec
+samples: 1
+full label for instance[0]: qaplayer-1.0-1.noarch
+
+qaplayer-1.
+ TIMESTAMP
+
+metric: rpm.license
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+ "GPL"
+
+metric: rpm.packager
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+"Santa Claus <sclaus@northpole.com>"
+
+metric: rpm.release
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+ "1"
+
+metric: rpm.size
+host: HOST
+semantics: instantaneous value
+units: byte
+samples: 1
+
+qaplayer-1.0-1.noarch
+ 0
+
+metric: rpm.sourcerpm
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+"qaplayer-1.0-1.src.rpm"
+
+metric: rpm.summary
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+"A QA player app that rocks!"
+
+metric: rpm.url
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+"http://www.gnomovision.com/qaplayer/qaplayer.html"
+
+metric: rpm.vendor
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+"White Socks Software, Inc."
+
+metric: rpm.version
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+ "1.0"
+
+metric: rpm.name
+host: HOST
+semantics: instantaneous value
+units: none
+samples: 1
+
+qaplayer-1.0-1.noarch
+ "qaplayer"
+
+Total bytes check: OK
+Total count check: OK
+Removing qaplayer
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
+
+pmval: instance qaplayer-1.0-1.noarch not available
diff --git a/qa/751 b/qa/751
new file mode 100755
index 0000000..50f3fb4
--- /dev/null
+++ b/qa/751
@@ -0,0 +1,49 @@
+#!/bin/sh
+# PCP QA Test No. 751
+# Exercise RPM Package Manager PMDA log rewriting rules
+#
+# Copyright (c) 2014 Red Hat.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.rpm
+_rpm_support_tests
+
+status=1 # failure is the default!
+$sudo rm -fr $tmp.* $seq.full
+trap "_rpm_cleanup" 0 1 2 3 15
+
+create_rewrite_logs()
+{
+ echo -e 'log mandatory on once {
+rpm.arch\nrpm.buildhost\nrpm.buildtime\nrpm.description\nrpm.epoch\nrpm.group
+rpm.installtime\nrpm.license\nrpm.packager\nrpm.release\nrpm.size
+rpm.sourcerpm\nrpm.summary\nrpm.url\nrpm.vendor\nrpm.version\nrpm.name
+rpm.refresh.count\nrpm.refresh.time.user\nrpm.refresh.time.sys
+rpm.refresh.time.elapsed\nrpm.datasize\nrpm.total.count\nrpm.total.bytes
+}
+' >$tmp.log.conf
+ pmlogger -r -c $tmp.log.conf -T 2sec $tmp.log
+ echo 'metric 123.1.10 { type -> U32 }' > $tmp.lrw.conf
+ pmlogrewrite -c $tmp.lrw.conf -w $tmp.log $tmp.log-1
+ migrate=$PCP_VAR_DIR/config/pmlogrewrite/rpm_migrate.conf
+ pmlogrewrite -c $migrate -w $tmp.log-1 $tmp.log-2
+ rm $tmp.log.conf $tmp.lrw.conf
+ pmdumplog -z -dil $tmp.log >$tmp.log.dump
+ pmdumplog -z -dil $tmp.log-1 >$tmp.log-1.dump
+ pmdumplog -z -dil $tmp.log-2 >$tmp.log-2.dump
+}
+
+# real QA test starts here
+
+_rpm_pmda_prepare
+create_rewrite_logs
+echo -e "\nold -> new changes"
+diff -u $tmp.log-1.dump $tmp.log-2.dump | sed -e '/^---/d' -e '/^+++/d'
+echo "new -> ref changes ... expect none"
+diff -u $tmp.log-2.dump $tmp.log.dump | sed -e '/^---/d' -e '/^+++/d'
+
+# success, all done
+status=0
+exit
diff --git a/qa/751.out b/qa/751.out
new file mode 100644
index 0000000..84c6ee8
--- /dev/null
+++ b/qa/751.out
@@ -0,0 +1,13 @@
+QA output created by 751
+
+old -> new changes
+@@ -37,7 +37,7 @@
+ Data Type: 32-bit unsigned int InDom: 123.0 0x1ec00000
+ Semantics: instant Units: none
+ PMID: 123.1.10 (rpm.size)
+- Data Type: 32-bit unsigned int InDom: 123.0 0x1ec00000
++ Data Type: 64-bit unsigned int InDom: 123.0 0x1ec00000
+ Semantics: instant Units: byte
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+new -> ref changes ... expect none
diff --git a/qa/752 b/qa/752
new file mode 100755
index 0000000..6815f6f
--- /dev/null
+++ b/qa/752
@@ -0,0 +1,26 @@
+#!/bin/sh
+# PCP QA Test No. 752
+# Test supported datetime strings
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+TZ=gmt src/rtimetest |
+sed -e "s/$(date '+%Y-%m-%d' -d 'yesterday') ..:..:../01\/01\/2000 00:00:00/" \
+ -e "s/$(date '+%Y-%m-%d' -d 'tomorrow') ..:..:../01\/01\/2000 00:00:00/" \
+ -e "s/$(date '+%Y-%m-%d' -d 'sunday') ..:..:../01\/01\/2000 00:00:00/" \
+ -e "s/$(date '+%Y-%m-%d' -d 'last monday') ..:..:../01\/01\/2000 00:00:00/" \
+ -e "s/$(date '+%Y-%m-%d' -d 'next tuesday') ..:..:../01\/01\/2000 00:00:00/" \
+ -e "s/$(date '+%Y-%m-%d') ..:..:../01\/01\/2000 00:00:00/"
+
+pmval -Z 'America/Los_Angeles' -S '1998-8-6 02:00:00' sample.bin -a src/ok-foo
+pmval -Z 'America/New_York' -S '1998-8-6 02:00:00' sample.bin -a src/ok-foo
diff --git a/qa/752.out b/qa/752.out
new file mode 100644
index 0000000..3e5216c
--- /dev/null
+++ b/qa/752.out
@@ -0,0 +1,162 @@
+QA output created by 752
+"start " 2014-01-18 15:08:50
+"end " 2014-01-27 11:28:50
+These time terms are relative to the start/end time.
+#1 __pmParseTime #2 pmParseTimeWindow/Start #3 pmParseTimeWindow/End.
+"Sat Jan 19 11:45:50 2014 " 2014-01-19 11:45:50
+"+1minute" 2014-01-18 15:09:50
+"+1minute" 2014-01-18 15:09:50
+"+1minute" 2014-01-27 11:28:50
+"-1 minute" 2014-01-27 11:27:50
+"-1 minute" 2014-01-27 11:27:50
+"-1 minute" 2014-01-27 11:28:50
+"-1minute" 2014-01-27 11:27:50
+"-1minute" 2014-01-27 11:27:50
+"-1minute" 2014-01-27 11:28:50
+"2014-01-19" 2014-01-19 00:00:00
+"2014-01-19" 2014-01-19 00:00:00
+"2014-01-19" 2014-01-27 11:28:50
+"01/19/14" 2014-01-19 00:00:00
+"01/19/14" 2014-01-19 00:00:00
+"01/19/14" 2014-01-27 11:28:50
+"01/19/14 11:45:50 AM" 2014-01-19 11:45:50
+"01/19/14 11:45:50 AM" 2014-01-19 11:45:50
+"01/19/14 11:45:50 AM" 2014-01-27 11:28:50
+"01/19/14 11:45:50 AM -1month" 2013-12-19 11:45:50
+"01/19/14 11:45:50 AM -1month" 2014-01-18 15:08:50
+"01/19/14 11:45:50 AM -1month" 2014-01-27 11:28:50
+"01/19/14 11:45:50 AM tomorrow" 2014-01-20 11:45:50
+"01/19/14 11:45:50 AM tomorrow" 2014-01-20 11:45:50
+"01/19/14 11:45:50 AM tomorrow" 2014-01-27 11:28:50
+"01/19/14 11:45:50 AM yesterday" 2014-01-18 11:45:50
+"01/19/14 11:45:50 AM yesterday" 2014-01-18 15:08:50
+"01/19/14 11:45:50 AM yesterday" 2014-01-27 11:28:50
+"01/19/14 11:45" 2014-01-19 11:45:00
+"01/19/14 11:45" 2014-01-19 11:45:00
+"01/19/14 11:45" 2014-01-27 11:28:50
+"01/19/14 11:45:50" 2014-01-19 11:45:50
+"01/19/14 11:45:50" 2014-01-19 11:45:50
+"01/19/14 11:45:50" 2014-01-27 11:28:50
+"19 Jan 2014 11:45:50" 2014-01-19 11:45:50
+"19 Jan 2014 11:45:50" 2014-01-19 11:45:50
+"19 Jan 2014 11:45:50" 2014-01-27 11:28:50
+"1 day ago" 2014-01-26 11:28:50
+"1 day ago" 2014-01-26 11:28:50
+"1 day ago" 2014-01-27 11:28:50
+"1 week ago" 2014-01-20 11:28:50
+"1 week ago" 2014-01-20 11:28:50
+"1 week ago" 2014-01-27 11:28:50
+"@2014-01-19" 2014-01-19 00:00:00
+"@2014-01-19" 2014-01-19 00:00:00
+"@2014-01-19" 2014-01-27 11:28:50
+"@01/19/14" 2014-01-19 00:00:00
+"@01/19/14" 2014-01-19 00:00:00
+"@01/19/14" 2014-01-27 11:28:50
+"@01/19/14 11:45:50 AM" 2014-01-19 11:45:50
+"@01/19/14 11:45:50 AM" 2014-01-19 11:45:50
+"@01/19/14 11:45:50 AM" 2014-01-27 11:28:50
+"@01/19/14 11:45" 2014-01-19 11:45:00
+"@01/19/14 11:45" 2014-01-19 11:45:00
+"@01/19/14 11:45" 2014-01-27 11:28:50
+"@01/19/14 11:45:50" 2014-01-19 11:45:50
+"@01/19/14 11:45:50" 2014-01-19 11:45:50
+"@01/19/14 11:45:50" 2014-01-27 11:28:50
+"@01/19/14 11:45:50 GMT" 2014-01-19 11:45:50
+"@01/19/14 11:45:50 GMT" 2014-01-19 11:45:50
+"@01/19/14 11:45:50 GMT" 2014-01-27 11:28:50
+"@19 Jan 2014 11:45:50" 2014-01-19 11:45:50
+"@19 Jan 2014 11:45:50" 2014-01-19 11:45:50
+"@19 Jan 2014 11:45:50" 2014-01-27 11:28:50
+"@next day" 2014-01-19 15:08:50
+"@next day" 2014-01-19 15:08:50
+"@next day" 2014-01-27 11:28:50
+"@1 day ago" 2014-01-26 11:28:50
+"@1 day ago" 2014-01-26 11:28:50
+"@1 day ago" 2014-01-27 11:28:50
+"1 day" 2014-01-19 15:08:50
+"1 day" 2014-01-19 15:08:50
+"1 day" 2014-01-27 11:28:50
+"5 minutes 5 seconds" 2014-01-18 15:13:55
+"5 minutes 5 seconds" 2014-01-18 15:13:55
+"5 minutes 5 seconds" 2014-01-27 11:28:50
+"last week" 2014-01-20 11:28:50
+"last week" 2014-01-20 11:28:50
+"last week" 2014-01-27 11:28:50
+"last day" 2014-01-26 11:28:50
+"last day" 2014-01-26 11:28:50
+"last day" 2014-01-27 11:28:50
+"next day" 2014-01-19 15:08:50
+"next day" 2014-01-19 15:08:50
+"next day" 2014-01-27 11:28:50
+These time terms for a specific day are relative to the current time.
+"now" 01/01/2000 00:00:00
+"now" 01/01/2000 00:00:00
+"now" 2014-01-27 11:28:50
+"today" 01/01/2000 00:00:00
+"today" 01/01/2000 00:00:00
+"today" 2014-01-27 11:28:50
+"@yesterday" 01/01/2000 00:00:00
+"@yesterday" 01/01/2000 00:00:00
+"@yesterday" 2014-01-27 11:28:50
+"yesterday" 01/01/2000 00:00:00
+"yesterday" 01/01/2000 00:00:00
+"yesterday" 2014-01-27 11:28:50
+"tomorrow" 01/01/2000 00:00:00
+"tomorrow" 01/01/2000 00:00:00
+"tomorrow" 2014-01-27 11:28:50
+"sunday" 01/01/2000 00:00:00
+"sunday" 01/01/2000 00:00:00
+"sunday" 2014-01-27 11:28:50
+"first sunday" 01/01/2000 00:00:00
+"first sunday" 01/01/2000 00:00:00
+"first sunday" 2014-01-27 11:28:50
+"last monday" 01/01/2000 00:00:00
+"last monday" 01/01/2000 00:00:00
+"last monday" 2014-01-27 11:28:50
+"next tuesday" 01/01/2000 00:00:00
+"next tuesday" 01/01/2000 00:00:00
+"next tuesday" 2014-01-27 11:28:50
+Note: timezone set to "TZ=America/Los_Angeles"
+
+metric: sample.bin
+archive: src/ok-foo
+host: gonzo
+start: Thu Aug 6 11:34:32 1998
+end: Thu Aug 6 11:34:40 1998
+semantics: instantaneous value
+units: none
+samples: 9
+interval: 1.00 sec
+11:34:32.257 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+11:34:33.257 100 200 300 400 500 600 700 800 900
+11:34:34.257 100 200 300 400 500 600 700 800 900
+11:34:35.257 100 200 300 400 500 600 700 800 900
+11:34:36.257 100 200 300 400 500 600 700 800 900
+11:34:37.257 100 200 300 400 500 600 700 800 900
+11:34:38.257 100 200 300 400 500 600 700 800 900
+11:34:39.257 100 200 300 400 500 600 700 800 900
+11:34:40.257 100 200 300 400 500 600 700 800 900
+Note: timezone set to "TZ=America/New_York"
+
+metric: sample.bin
+archive: src/ok-foo
+host: gonzo
+start: Thu Aug 6 14:34:32 1998
+end: Thu Aug 6 14:34:40 1998
+semantics: instantaneous value
+units: none
+samples: 9
+interval: 1.00 sec
+14:34:32.257 No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+14:34:33.257 100 200 300 400 500 600 700 800 900
+14:34:34.257 100 200 300 400 500 600 700 800 900
+14:34:35.257 100 200 300 400 500 600 700 800 900
+14:34:36.257 100 200 300 400 500 600 700 800 900
+14:34:37.257 100 200 300 400 500 600 700 800 900
+14:34:38.257 100 200 300 400 500 600 700 800 900
+14:34:39.257 100 200 300 400 500 600 700 800 900
+14:34:40.257 100 200 300 400 500 600 700 800 900
diff --git a/qa/753 b/qa/753
new file mode 100755
index 0000000..f76e19a
--- /dev/null
+++ b/qa/753
@@ -0,0 +1,64 @@
+#!/bin/sh
+# PCP QA Test No. 753
+# Corner cases for derived metrics, and rate() and delta() functions
+# in particular.
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+export PCP_DERIVED_CONFIG=$tmp.config
+
+_filter()
+{
+ sed \
+ -e '/^host:/d' \
+ | case "$1"
+ in
+ sample.kbyte_rate)
+ awk '
+/No values available/ { want = 1; print; next }
+want == 1 { if (-4096 < $1 && $1 < 4096) print "abs(N) < 4096"
+ else print "unexpected value:",$0
+ want = 0
+ next
+ }
+ { print }'
+ ;;
+ *)
+ cat
+ ;;
+ esac
+}
+
+# real QA test starts here
+cat <<End-of-File | while read metric min max ; do
+sample.bin
+kernel.all.load
+sample.datasize
+hinv.ncpu
+sample.string.hullo
+sample.kbyte_rate
+End-of-File
+ echo
+ echo "--- $metric ---"
+ echo "d=delta($metric)" >$tmp.config
+ echo "r=rate($metric)" >>$tmp.config
+ pmval -t 0.25 -s 2 d | _filter $metric
+ pmval -t 0.25 -s 2 r | _filter $metric
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/753.out b/qa/753.out
new file mode 100644
index 0000000..146238e
--- /dev/null
+++ b/qa/753.out
@@ -0,0 +1,105 @@
+QA output created by 753
+
+--- sample.bin ---
+
+metric: d
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 0.25 sec
+No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ 0 0 0 0 0 0 0 0 0
+
+metric: r
+semantics: instantaneous value
+units: / sec
+samples: 2
+interval: 0.25 sec
+No values available
+
+ bin-100 bin-200 bin-300 bin-400 bin-500 bin-600 bin-700 bin-800 bin-900
+ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+
+--- kernel.all.load ---
+
+metric: d
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 0.25 sec
+No values available
+
+ 1 minute 5 minute 15 minute
+ 0.0 0.0 0.0
+
+metric: r
+semantics: instantaneous value
+units: / sec
+samples: 2
+interval: 0.25 sec
+No values available
+
+ 1 minute 5 minute 15 minute
+ 0.0 0.0 0.0
+
+--- sample.datasize ---
+
+metric: d
+semantics: instantaneous value
+units: Kbyte
+samples: 2
+interval: 0.25 sec
+No values available
+ 0
+
+metric: r
+semantics: instantaneous value
+units: Kbyte / sec
+samples: 2
+interval: 0.25 sec
+No values available
+ 0.0
+
+--- hinv.ncpu ---
+
+metric: d
+semantics: instantaneous value
+units: none
+samples: 2
+interval: 0.25 sec
+No values available
+ 0
+
+metric: r
+semantics: instantaneous value
+units: / sec
+samples: 2
+interval: 0.25 sec
+No values available
+ 0.0
+
+--- sample.string.hullo ---
+Semantic error: derived metric d: DELTA(sample.string.hullo): Non-arithmetic operand for function
+Semantic error: derived metric r: RATE(sample.string.hullo): Non-arithmetic operand for function
+pmval: pmLookupDesc: Unknown or illegal metric identifier
+
+Semantic error: derived metric d: DELTA(sample.string.hullo): Non-arithmetic operand for function
+Semantic error: derived metric r: RATE(sample.string.hullo): Non-arithmetic operand for function
+pmval: pmLookupDesc: Unknown or illegal metric identifier
+
+
+--- sample.kbyte_rate ---
+Semantic error: derived metric r: RATE(sample.kbyte_rate): Incorrect time dimension for operand
+
+metric: d
+semantics: instantaneous value
+units: Kbyte / sec
+samples: 2
+interval: 0.25 sec
+No values available
+abs(N) < 4096
+Semantic error: derived metric r: RATE(sample.kbyte_rate): Incorrect time dimension for operand
+pmval: pmLookupDesc: Unknown or illegal metric identifier
+
diff --git a/qa/755 b/qa/755
new file mode 100755
index 0000000..1e5ab30
--- /dev/null
+++ b/qa/755
@@ -0,0 +1,75 @@
+#!/bin/sh
+# PCP QA Test No. 755
+# Exercise the Apache PMDA Install/Remove, as well as the
+# mechanism by which a PMDA can be installed with no pmcd
+# process running.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+
+_filter_apache()
+{
+ # cull message resulting from no running httpd
+ grep -v 'Information not currently available'
+}
+
+pmdaapache_remove()
+{
+ echo
+ echo "=== remove apache agent ==="
+ $sudo ./Remove >$tmp.out 2>&1
+ _filter_pmda_remove <$tmp.out
+}
+
+pmdaapache_install()
+{
+ # start from known starting points
+ cd $PCP_PMDAS_DIR/apache
+ $sudo ./Remove >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmcd stop
+
+ echo
+ echo "=== apache agent installation ==="
+ $sudo ./Install </dev/null >$tmp.out 2>&1
+ # Check apache metrics have appeared ... X metrics and Y values
+ _filter_pmda_install <$tmp.out \
+ | sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+ -e 's/[0-9][0-9]* warnings, //' \
+ | $PCP_AWK_PROG '
+/Check apache metrics have appeared/ { if ($7 >= 20 && $7 <= 80) $7 = "X"
+ if ($10 >= 0 && $10 <= 80) $10 = "Y"
+ }
+ { print }'
+}
+
+_prepare_pmda apache
+trap "_cleanup_pmda apache; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmdaapache_install
+
+# pmcd should have been started by the Install process - check
+if pminfo -v apache > $tmp.info 2> $tmp.err
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+cat $tmp.info $tmp.err | _filter_apache
+
+pmdaapache_remove
+status=0
+exit
diff --git a/qa/755.out b/qa/755.out
new file mode 100644
index 0000000..50b4b3b
--- /dev/null
+++ b/qa/755.out
@@ -0,0 +1,23 @@
+QA output created by 755
+Waiting for pmcd to terminate ...
+
+=== apache agent installation ===
+Installing the "apache" Performance Metrics Domain Agent (PMDA) ...
+
+Apache port number [80]? Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Starting pmcd ...
+Starting pmlogger ...
+Check apache metrics have appeared ... X metrics and Y values
+
+=== remove apache agent ===
+Culling the Performance Metrics Name Space ...
+apache ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check apache metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/763 b/qa/763
new file mode 100755
index 0000000..2a5b378
--- /dev/null
+++ b/qa/763
@@ -0,0 +1,64 @@
+#!/bin/sh
+# PCP QA Test No. 763
+# Exercise slow PMDA connect_pmcd() method.
+# [see also qa/843 for the Python version]
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ if pmprobe -I pmcd.agent.status | grep '"slow"' >/dev/null
+ then
+ cd $here/pmdas/slow
+ $sudo ./Remove >>$here/$seq.full 2>&1
+ cd $here
+ fi
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; _cleanup; exit \$status" 0 1 2 3 15
+
+cd pmdas/slow
+make clean >>$here/$seq.full 2>&1
+
+# real QA test starts here
+for start in 0 4 -4
+do
+ echo | tee -a $here/$seq.full
+ case "$start"
+ in
+ 0)
+ echo "=== no start delay ===" | tee -a $here/$seq.full
+ ;;
+ -[0-9]*)
+ echo "=== start delay `expr -1 \* $start` sec, no connect_pmcd() ===" | tee -a $here/$seq.full
+ ;;
+ [0-9]*)
+ echo "=== start delay $start sec, using connect_pmcd() ===" | tee -a $here/$seq.full
+ ;;
+ esac
+ date >>$here/$seq.full
+ cat <<End-of-File | $sudo ./Install
+both
+$start
+End-of-File
+ date >>$here/$seq.full
+ pminfo -f slow | tee -a $here/$seq.full
+ $sudo cat $PCP_LOG_DIR/pmcd/slow.log >>$here/$seq.full
+ $sudo tail -40 $PCP_LOG_DIR/pmcd/pmcd.log >>$here/$seq.full
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/763.out b/qa/763.out
new file mode 100644
index 0000000..cf347a6
--- /dev/null
+++ b/qa/763.out
@@ -0,0 +1,49 @@
+QA output created by 763
+
+=== no start delay ===
+You will need to choose an appropriate configuration for installation of
+the "slow" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Startup delay (secs) [0]? Fetch delay (secs) [0]? Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Check slow metrics have appeared ... 1 metrics and 1 values
+
+slow.seventeen
+ value 17
+
+=== start delay 4 sec, using connect_pmcd() ===
+You will need to choose an appropriate configuration for installation of
+the "slow" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Startup delay (secs) [0]? Fetch delay (secs) [0]? Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 6 seconds for the slow agent to initialize ...
+Check slow metrics have appeared ... 1 metrics and 1 values
+
+slow.seventeen
+ value 17
+
+=== start delay 4 sec, no connect_pmcd() ===
+You will need to choose an appropriate configuration for installation of
+the "slow" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Startup delay (secs) [0]? Fetch delay (secs) [0]? Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 6 seconds for the slow agent to initialize ...
+Check slow metrics have appeared ... 1 warnings, 1 metrics and 0 values
+slow: pmLookupName: No PMCD agent for domain of request
diff --git a/qa/764 b/qa/764
new file mode 100755
index 0000000..965adeb
--- /dev/null
+++ b/qa/764
@@ -0,0 +1,46 @@
+#!/bin/sh
+# PCP QA Test No. 764
+# More exoctic pmie ruleset exercises.
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<'End-of-File' >>$tmp.config
+ruleset
+ pmcd.pdu_in.total > 0 -> print "[1] pmcd sees PDUs as expected"
+unknown -> print "[1] no value for first fetch"
+otherwise -> print "[1] BOTCH: unexpected value %v"
+;
+
+ruleset
+ all_sample (pmcd.pdu_in.total @0..1 > 0) -> print "[2] pmcd sees PDUs for 2 samples as expected"
+unknown -> print "[2] no value for first two fetches"
+;
+
+ruleset
+ some_inst sample.bin:no.such.host > 100 -> print "[3] BOTCH: unexpected value %v"
+unknown -> print "[3] unknown as expected"
+;
+
+
+End-of-File
+
+# real QA test starts here
+pmie -t 1sec -T 3.5sec -c $tmp.config 2>&1 | _filter_pmie_log
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/764.out b/qa/764.out
new file mode 100644
index 0000000..761f01f
--- /dev/null
+++ b/qa/764.out
@@ -0,0 +1,16 @@
+QA output created by 764
+[TIMESTAMP] pmie(PID) Info: Cannot connect to pmcd on host no.such.host
+pmie: warning - host no.such.host is unreachable
+DATE: [1] no value for first fetch
+DATE: [2] no value for first two fetches
+DATE: [3] unknown as expected
+DATE: [1] pmcd sees PDUs as expected
+DATE: [2] no value for first two fetches
+DATE: [3] unknown as expected
+DATE: [1] pmcd sees PDUs as expected
+DATE: [2] pmcd sees PDUs for 2 samples as expected
+DATE: [3] unknown as expected
+DATE: [1] pmcd sees PDUs as expected
+DATE: [2] pmcd sees PDUs for 2 samples as expected
+DATE: [3] unknown as expected
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
diff --git a/qa/766 b/qa/766
new file mode 100755
index 0000000..f63169e
--- /dev/null
+++ b/qa/766
@@ -0,0 +1,109 @@
+#!/bin/sh
+# PCP QA Test No. 766
+# Test using the pmfind app to find PCP servers using the active probing
+# discovery mechanism. Probe inet only.
+#
+# Copyright (c) 2014 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$service_discovery || _notrun "No support for service discovery"
+
+signal=$PCP_BINADM_DIR/pmsignal
+$sudo $signal -a pmproxy pmwebd
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_sought_filter()
+{
+ # Only pmcd is guaranteed to be running, but other services may also be.
+ # Transform two cases - no servers vs found servers - into deterministic
+ # output for the --all invocations
+ sed \
+ -e 's/No \(pmproxy servers\) discovered/Sought \1/g' \
+ -e 's/No \(pmwebd servers\) discovered/Sought \1/g' \
+ -e 's/Discovered \(pmproxy servers\):/Sought \1/g' \
+ -e 's/Discovered \(pmwebd servers\):/Sought \1/g' \
+ # end
+}
+
+_unresolved_filter()
+{
+ sed -e '/ pcp:/d;
+ / proxy:/d;
+ / http:/d' \
+ | _sought_filter
+}
+
+_resolved_filter()
+{
+ # Pass unresolved urls, filter the resolved ones.
+ sed -e '/ pcp:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / proxy:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / http:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / pcp:/d;
+ / proxy:/d;
+ / http:/d' \
+ | _sought_filter
+}
+
+# real QA test starts here
+
+# Obtain the inet address of an active network interface
+# We're extracting a metric of the form:
+#
+# inst [0 or "eth0"] value "172.31.0.12"
+#
+# and then extracting the address
+#
+addr=`pminfo -f network.interface.inet_addr | \
+ tail -n +3 | \
+ grep -v 127.0.0.1 | \
+ head -n1 | \
+ awk '{ print $6 }' | \
+ sed s/\"//g`
+
+[ -z addr ] && _notrun "no active inet interfaces"
+
+# Probe the obtained network.
+# Test various combinations of service queries and subnet sizes. Keep the
+# subnet size small -- say max 4 bits.
+echo "-m probe=$addr/32" >> $seq.full
+echo "-m probe=INET_ADDR/32"
+pmfind -m probe=$addr/32 | _unresolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-s pmcd -m probe=$addr/31" -r >> $seq.full
+echo "-s pmcd -m probe=INET_ADDR/31 -r"
+pmfind -s pmcd -m probe=$addr/30 -r | _resolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-q -m probe=$addr/30" >> $seq.full
+echo "-q -m probe=INET_ADDR/30"
+pmfind -q -m probe=$addr/29 | _unresolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-q -s pmcd -m probe=$addr/29 --resolve" >> $seq.full
+echo "-q -s pmcd -m probe=INET_ADDR/29 --resolve"
+pmfind -q -s pmcd -m probe=$addr/28 --resolve | _resolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-q -s pmcd -m probe=$addr/28,maxThreads=8" >> $seq.full
+echo "-q -s pmcd -m probe=INET_ADDR/28,maxThreads=8"
+pmfind -q -s pmcd -m probe=$addr/28,maxThreads=8 | _unresolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/766.out b/qa/766.out
new file mode 100644
index 0000000..ff30608
--- /dev/null
+++ b/qa/766.out
@@ -0,0 +1,15 @@
+QA output created by 766
+-m probe=INET_ADDR/32
+Discovered pmcd servers:
+Sought pmproxy servers
+Sought pmwebd servers
+Exit status: 0
+-s pmcd -m probe=INET_ADDR/31 -r
+Discovered pmcd servers:
+Exit status: 0
+-q -m probe=INET_ADDR/30
+Exit status: 0
+-q -s pmcd -m probe=INET_ADDR/29 --resolve
+Exit status: 0
+-q -s pmcd -m probe=INET_ADDR/28,maxThreads=8
+Exit status: 0
diff --git a/qa/768 b/qa/768
new file mode 100755
index 0000000..ca5c8b2
--- /dev/null
+++ b/qa/768
@@ -0,0 +1,31 @@
+#!/bin/sh
+# PCP QA Test No. 768
+# pmlogextract bug - reported by Tom Yearke
+#
+# Copyright (c) 2013 Ken McDonell, Tom Yearke. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+[ $PCP_VER -lt 3809 ] && _notrun "pmlogextract fix in PCP 3.8.9"
+
+echo "QA output created by $seq"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmlogextract -Z UTC -S "@ Nov 27 15:52:30" -T "@ Nov 27 15:54:30" src/node_archive $tmp
+
+pmdumplog -a -Z UTC $tmp
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/768.out b/qa/768.out
new file mode 100644
index 0000000..577d9d0
--- /dev/null
+++ b/qa/768.out
@@ -0,0 +1,47 @@
+QA output created by 768
+Note: timezone set to "TZ=UTC"
+
+Note: timezone set to "TZ=UTC"
+
+Log Label (Log Format Version 2)
+Performance metrics from host k05n26
+ commencing Wed Nov 27 15:52:44.652 2013
+ ending Wed Nov 27 15:54:14.652 2013
+
+Descriptions for Metrics in the Log ...
+PMID: 3.8.0 (proc.psinfo.pid)
+ Data Type: 32-bit unsigned int InDom: 3.9 0xc00009
+ Semantics: discrete Units: none
+
+Instance Domains in the Log ...
+InDom: 3.9
+15:52:44.652 2 instances
+ 1472 or "001472 /usr/bin/python /ifs/user/tyearke/test/./wait_launcher.py"
+ 1516 or "001516 /usr/bin/python /ifs/user/tyearke/test/wait.py"
+15:53:14.653 2 instances
+ 1472 or "001472 /usr/bin/python /ifs/user/tyearke/test/./wait_launcher.py"
+ 1533 or "001533 /usr/bin/python /ifs/user/tyearke/test/wait.py"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+15:52:44.652 0 132 132
+15:53:14.653 0 350 180
+15:54:14.652 0 513 276
+
+[48 bytes]
+15:52:44.652 3.8.0 (proc.psinfo.pid):
+ inst [1472 or "001472 /usr/bin/python /ifs/user/tyearke/test/./wait_launcher.py"] value 1472
+ inst [1516 or "001516 /usr/bin/python /ifs/user/tyearke/test/wait.py"] value 1516
+
+[48 bytes]
+15:53:14.653 3.8.0 (proc.psinfo.pid):
+ inst [1472 or "001472 /usr/bin/python /ifs/user/tyearke/test/./wait_launcher.py"] value 1472
+ inst [1533 or "001533 /usr/bin/python /ifs/user/tyearke/test/wait.py"] value 1533
+
+[48 bytes]
+15:53:44.652 3.8.0 (proc.psinfo.pid):
+ inst [1472 or "001472 /usr/bin/python /ifs/user/tyearke/test/./wait_launcher.py"] value 1472
+ inst [1533 or "001533 /usr/bin/python /ifs/user/tyearke/test/wait.py"] value 1533
+
+[28 bytes]
+15:54:14.652 3.8.0 (proc.psinfo.pid): No values returned!
diff --git a/qa/775 b/qa/775
new file mode 100755
index 0000000..ee25ad9
--- /dev/null
+++ b/qa/775
@@ -0,0 +1,69 @@
+#!/bin/sh
+# PCP QA Test No. 775
+# Test using the pmfind app to find pmcd servers
+#
+# Copyright (c) 2014 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.discovery
+
+_get_libpcp_config
+$service_discovery || _notrun "No support for service discovery"
+
+signal=$PCP_BINADM_DIR/pmsignal
+$sudo $signal -a pmproxy pmwebd
+
+# Make sure that at least one of the supported discovery mechanisms is available.
+discovery_available=false
+avahi-daemon --check 2>/dev/null && discovery_available=true
+$discovery_available || _notrun "No discovery mechanisms are available"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "No arguments"
+pmfind | _filter_discovery_unresolved
+echo "Exit status: $?"
+
+echo "-s pmcd -r"
+pmfind -s pmcd -r | _filter_discovery_resolved
+echo "Exit status: $?"
+
+echo "-m all"
+pmfind -m all | _filter_discovery_unresolved
+echo "Exit status: $?"
+
+echo "-s pmcd -m all --resolve"
+pmfind -s pmcd -m all --resolve | _filter_discovery_resolved
+echo "Exit status: $?"
+
+echo "-q"
+pmfind -q
+echo "Exit status: $?"
+
+echo "-q -s pmcd"
+pmfind -q -s pmcd
+echo "Exit status: $?"
+
+echo "-q -m all"
+pmfind -q -m all
+echo "Exit status: $?"
+
+echo "-q -s pmcd -m all"
+pmfind -q -s pmcd -m all
+echo "Exit status: $?"
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/775.out b/qa/775.out
new file mode 100644
index 0000000..4fb2860
--- /dev/null
+++ b/qa/775.out
@@ -0,0 +1,25 @@
+QA output created by 775
+No arguments
+Discovered pmcd servers:
+Sought pmproxy servers
+Sought pmwebd servers
+Exit status: 0
+-s pmcd -r
+Discovered pmcd servers:
+Exit status: 0
+-m all
+Discovered pmcd servers:
+Sought pmproxy servers
+Sought pmwebd servers
+Exit status: 0
+-s pmcd -m all --resolve
+Discovered pmcd servers:
+Exit status: 0
+-q
+Exit status: 0
+-q -s pmcd
+Exit status: 0
+-q -m all
+Exit status: 0
+-q -s pmcd -m all
+Exit status: 0
diff --git a/qa/776 b/qa/776
new file mode 100755
index 0000000..3fbfbdf
--- /dev/null
+++ b/qa/776
@@ -0,0 +1,121 @@
+#!/bin/sh
+# PCP QA Test No. 776
+# Test using the pmfind app to find pmcd servers using the active probing
+# discovery mechanism
+#
+# Copyright (c) 2014 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$service_discovery || _notrun "No support for service discovery"
+
+signal=$PCP_BINADM_DIR/pmsignal
+$sudo $signal -a pmproxy pmwebd
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_sought_filter()
+{
+ # Only pmcd is guaranteed to be running, but other services may also be.
+ # Transform two cases - no servers vs found servers - into deterministic
+ # output for the --all invocations
+ sed \
+ -e 's/No \(pmproxy servers\) discovered/Sought \1/g' \
+ -e 's/No \(pmwebd servers\) discovered/Sought \1/g' \
+ -e 's/Discovered \(pmproxy servers\):/Sought \1/g' \
+ -e 's/Discovered \(pmwebd servers\):/Sought \1/g' \
+ # end
+}
+
+_unresolved_filter()
+{
+ sed -e '/ pcp:/d;
+ / proxy:/d;
+ / http:/d' \
+ | _sought_filter
+}
+
+_resolved_filter()
+{
+ # Pass unresolved urls, filter the resolved ones.
+ sed -e '/ pcp:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / proxy:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / http:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / pcp:/d;
+ / proxy:/d;
+ / http:/d' \
+ | _sought_filter
+}
+
+# real QA test starts here
+
+# Obtain the ipv6 address of an active network interface
+# We're extracting a metric of the form:
+#
+# inst [0 or "eth0"] value "fe80::3ea9:f4ff:fe76:6c24/64"
+#
+metric=`pminfo -f network.interface.ipv6_addr | \
+ tail -n +3 | \
+ grep -v ::1 | \
+ head -n1`
+
+[ -z metric ] && _notrun "no active ipv6 interfaces"
+
+# Extract the address
+addr=`echo $metric | \
+ awk '{ print $6 }' | \
+ sed -e 's/\"//g' -e 's|/.*$||'`
+
+# Extract the interface
+interface=`echo $metric | \
+ awk '{ print $4 }' | \
+ sed -e 's/\"//g' -e 's/\]//'`
+
+# combine the address and the interface form a complete address of the form
+#
+# fe80::3ea9:f4ff:fe76:6c24%eth0
+#
+addr=$addr"%"$interface
+
+# Probe the obtained network.
+# Test various combinations of service queries and subnet sizes. Keep the
+# subnet size small -- say max 4 bits.
+echo "-m probe=$addr/128" >> $seq.full
+echo "-m probe=IPV6_ADDR/128"
+pmfind -m probe=$addr/128 | _unresolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-s pmcd -m probe=$addr/127 -r" >> $seq.full
+echo "-s pmcd -m probe=IPV6_ADDR/127 -r"
+pmfind -s pmcd -m probe=$addr/126 -r | _resolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-q -m probe=$addr/126" >> $seq.full
+echo "-q -m probe=IPV6_ADDR/126"
+pmfind -q -m probe=$addr/125 | _unresolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-q -s pmcd -m probe=$addr/125 --resolve" >> $seq.full
+echo "-q -s pmcd -m probe=IPV6_ADDR/125 --resolve"
+pmfind -q -s pmcd -m probe=$addr/124 --resolve | _resolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+echo "-q -s pmcd -m probe=$addr/124,maxThreads=8" >> $seq.full
+echo "-q -s pmcd -m probe=IPV6_ADDR/124,maxThreads=8"
+pmfind -q -s pmcd -m probe=$addr/124,maxThreads=8 | _unresolved_filter
+echo "Exit status: $?" | tee -a $seq.full
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/776.out b/qa/776.out
new file mode 100644
index 0000000..7238821
--- /dev/null
+++ b/qa/776.out
@@ -0,0 +1,15 @@
+QA output created by 776
+-m probe=IPV6_ADDR/128
+Discovered pmcd servers:
+Sought pmproxy servers
+Sought pmwebd servers
+Exit status: 0
+-s pmcd -m probe=IPV6_ADDR/127 -r
+Discovered pmcd servers:
+Exit status: 0
+-q -m probe=IPV6_ADDR/126
+Exit status: 0
+-q -s pmcd -m probe=IPV6_ADDR/125 --resolve
+Exit status: 0
+-q -s pmcd -m probe=IPV6_ADDR/124,maxThreads=8
+Exit status: 0
diff --git a/qa/779 b/qa/779
new file mode 100755
index 0000000..d6f48ea
--- /dev/null
+++ b/qa/779
@@ -0,0 +1,63 @@
+#!/bin/sh
+# PCP QA Test No. 779
+# Exercise semantic checks for early use of pmdaConnect() by a PMDA in C
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+MYPORT=`_get_port tcp 543210 543220`
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/badpmda([1-9][0-9]*) /badpmda(PID) /' \
+ -e "s;$MYPORT;MYPORT;g" \
+ -e "s;$tmp;TMP;g"
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "open pipe src/badpmda -c 0" \
+| dbpmda >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+echo
+echo "open pipe src/badpmda -c 1" \
+| dbpmda >$tmp.out 2>$tmp.err
+cat $tmp.out $tmp.err | _filter
+
+echo
+src/badpmda -c 2 -p $MYPORT </dev/null >$tmp.out 2>$tmp.err &
+sleep 1
+echo "open socket inet $MYPORT" \
+| dbpmda >$tmp.out1 2>$tmp.err1
+wait
+cat $tmp.out $tmp.err | _filter
+cat $tmp.out1 $tmp.err1 | _filter
+
+echo
+src/badpmda -c 3 -s $tmp.socket </dev/null >$tmp.out 2>$tmp.err &
+sleep 1
+echo "open socket unix $tmp.socket" \
+| dbpmda >$tmp.out1 2>$tmp.err1
+wait
+cat $tmp.out $tmp.err | _filter
+cat $tmp.out1 $tmp.err1 | _filter
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/779.out b/qa/779.out
new file mode 100644
index 0000000..41cb4ac
--- /dev/null
+++ b/qa/779.out
@@ -0,0 +1,26 @@
+QA output created by 779
+Start badpmda PMDA: ./src/badpmda -c 0
+--- case 0 pmdaConnect() ---
+[DATE] badpmda(PID) Critical: pmdaConnect: need to call pmdaDaemon() or pmdaDSO() first
+pmdaConnect: Error: Generic error, already reported above
+pmdaversion: expecting PDU_CREDS, got PDU type 0
+Warning: no version exchange with PMDA ./src/badpmda
+
+Start badpmda PMDA: ./src/badpmda -c 1
+--- case 1 pmdaExt alloc + pmdaConnect() ---
+[DATE] badpmda(PID) Critical: pmdaConnect: need to call pmdaDaemon() or pmdaDSO() first
+pmdaConnect: Error: Generic error, already reported above
+pmdaversion: expecting PDU_CREDS, got PDU type 0
+Warning: no version exchange with PMDA ./src/badpmda
+
+--- case 2 pmdaDaemon() + pmdaInet + pmdaConnect() ---
+pmdaDaemon: OK
+pmdaConnect: OK
+Connect to PMDA on inet port MYPORT
+
+--- case 3 pmdaDaemon() + pmdaInet + pmdaConnect() + pmdaConnect() ---
+pmdaDaemon: OK
+pmdaConnect: OK
+[DATE] badpmda(PID) Critical: pmdaConnect: called more than once
+pmdaConnect: Error: Generic error, already reported above
+Connect to PMDA on socket TMP.socket
diff --git a/qa/780 b/qa/780
new file mode 100755
index 0000000..e7db19f
--- /dev/null
+++ b/qa/780
@@ -0,0 +1,72 @@
+#!/bin/sh
+# PCP QA Test No. 780
+# Exercise addition of pmwebd Access-Control-Allow-Origin HTTP header.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which pmwebd >/dev/null 2>&1 || _notrun "pmwebd not installed"
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+username=`id -u -n`
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; _cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ [ -z "$webpid" ] || $signal $webpid
+ $sudo rm -fr $tmp.dir
+ $sudo rm -f $tmp.*
+}
+
+_filter()
+{
+ sed \
+ -e 's/^\(Content-Length:\) [0-9][0-9]*/\1 SIZE/g' \
+ -e 's/^\(Date:\).*/\1 DATE/g' \
+ -e 's/\(\"context\":\) [0-9][0-9]*/\1 CTXID/g' \
+ | LC_COLLATE=POSIX sort \
+ | col -b # remove DOS line endings
+}
+
+unset http_proxy
+unset HTTP_PROXY
+webport=`_find_free_port`
+
+# real QA test starts here
+pmwebd -U $username -f -l $tmp.out -p $webport 2>$tmp.err &
+webpid=$!
+count=0
+while ! $PCP_BINADM_DIR/telnet-probe -c localhost $webport
+do
+ count=`expr $count + 1`
+ if [ $count -ge 20 ]
+ then
+ echo "pmwebd failed to start on port $webport"
+ cat $tmp.out
+ cat $tmp.err
+ exit
+ fi
+ pmsleep 0.1
+done
+
+echo "pmwebd pid=$webpid port=$webport" >>$seq.full
+curl -s -S "http://localhost:$webport/pmapi/context?local=anything" -D- 2>&1 | _filter
+
+echo "--- pmwebd log ---" >>$seq.full
+cat $tmp.out >>$seq.full
+echo "--- pmwebd stderr ---" >>$seq.full
+cat $tmp.err >>$seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/780.out b/qa/780.out
new file mode 100644
index 0000000..229202c
--- /dev/null
+++ b/qa/780.out
@@ -0,0 +1,8 @@
+QA output created by 780
+
+Access-Control-Allow-Origin: *
+Content-Length: SIZE
+Content-Type: application/json
+Date: DATE
+HTTP/1.1 200 OK
+{ "context": CTXID }
diff --git a/qa/781 b/qa/781
new file mode 100755
index 0000000..8a743e2
--- /dev/null
+++ b/qa/781
@@ -0,0 +1,65 @@
+#!/bin/sh
+# PCP QA Test No. 781
+# Exercise pmlogconf and pmlogger_check interactions.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ # should be none running, but just in case...
+ $signal -a -s TERM pmlogger >/dev/null 2>&1
+ cd $here
+ $sudo rm -rf $tmp
+}
+
+status=1 # failure is the default!
+today=`date +%Y%m%d`
+host=`hostname`
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ # make verbose show-me mode pmlogger_check output deterministic
+ sed \
+ -e "s,$tmp,LOGDIR,g" \
+ -e "s,$host,HOSTNAME,g" \
+ -e "s,$today\.[0-9][0-9]\.[0-9][0-9],ARCHIVE,g" \
+ -e "s@$PCP_BINADM_DIR@\$PCP_BINADM_DIR@" \
+ # end
+}
+
+rm -rf $tmp
+mkdir $tmp
+chmod ugo+w $tmp
+cd $tmp
+
+echo >control '# PCP archive logging configuration/control - for qa/'$seq'
+#
+$version=1.1
+LOCALHOSTNAME n n logs/LOCALHOSTNAME -c ./config
+no.such.host n n logs/no.such.host -c ./config
+another.host n n logs/another.host -c ./config'
+
+# real QA test starts here
+echo Using control file: > $here/$seq.full
+cat control >> $here/$seq.full
+echo pmlogger_check out: >> $here/$seq.full
+$PCP_BINADM_DIR/pmlogger_check -V -N -c control 2>&1 \
+ | tee -a $here/$seq.full \
+ | _filter
+echo pmlogger_check end: >> $here/$seq.full
+find . >> $here/$seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/781.out b/qa/781.out
new file mode 100644
index 0000000..dc9b3db
--- /dev/null
+++ b/qa/781.out
@@ -0,0 +1,21 @@
+QA output created by 781
+# $version=1.1
++ export version; version=1.1
+pmlogger_check [control:4]
+Warning: creating directory (logs/HOSTNAME) for PCP archive files
++ cd LOGDIR/logs/HOSTNAME
++ $PCP_BINADM_DIR/pmlogconf -c -q -h local: ./config
+Restarting pmlogger for host "local:" ...
++ pmlogger -h local: -c ./config -m pmlogger_check ARCHIVE
+pmlogger_check [control:5]
+Warning: creating directory (logs/no.such.host) for PCP archive files
++ cd LOGDIR/logs/no.such.host
++ $PCP_BINADM_DIR/pmlogconf -c -q -h no.such.host ./config
+Restarting pmlogger for host "no.such.host" ...
++ pmlogger -h no.such.host -c ./config -m pmlogger_check ARCHIVE
+pmlogger_check [control:6]
+Warning: creating directory (logs/another.host) for PCP archive files
++ cd LOGDIR/logs/another.host
++ $PCP_BINADM_DIR/pmlogconf -c -q -h another.host ./config
+Restarting pmlogger for host "another.host" ...
++ pmlogger -h another.host -c ./config -m pmlogger_check ARCHIVE
diff --git a/qa/783 b/qa/783
new file mode 100755
index 0000000..7a15327
--- /dev/null
+++ b/qa/783
@@ -0,0 +1,30 @@
+#!/bin/sh
+# PCP QA Test No. 783
+# Check for memory issues in RPM PMDA instance handling
+#
+# Copyright (c) 2013 Red Hat. All Rights Reserved.
+#
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.rpm
+_rpm_support_tests
+_check_valgrind
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ # end
+}
+
+# real QA test starts here
+_run_valgrind $PCP_PMDAS_DIR/rpm/pmdarpm -C 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/783.out b/qa/783.out
new file mode 100644
index 0000000..201e16c
--- /dev/null
+++ b/qa/783.out
@@ -0,0 +1,10 @@
+QA output created by 783
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: /var/lib/pcp/pmdas/rpm/pmdarpm -C
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/786 b/qa/786
new file mode 100755
index 0000000..f918bb6
--- /dev/null
+++ b/qa/786
@@ -0,0 +1,40 @@
+#!/bin/sh
+# PCP QA Test No. 786
+# exercise pmGetContextHostName and pmGetContextHostName_r
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+host=`hostname`
+
+_filter()
+{
+ sed -e "s/$host/HOSTNAME/"
+}
+
+# real QA test starts here
+for arg in "" "-h $host" -L "-a src/babylon.percpu_v2" "-h localhost" \
+ "-h local:" "-h unix:" \
+ "-h no.such.host" "-a /no/such/archive"
+do
+ echo
+ echo "=== $arg ==="
+ src/getcontexthost $arg 2>&1
+done | _filter
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/786.out b/qa/786.out
new file mode 100644
index 0000000..9452876
--- /dev/null
+++ b/qa/786.out
@@ -0,0 +1,84 @@
+QA output created by 786
+
+=== ===
+pmGetContextHostName(0)="HOSTNAME"
+pmGetContextHostName_r(0, ...) => "HOSTNAME"
+pmDupConext()=1
+dup ctx pmGetContextHostName(1)="HOSTNAME"
+dup ctx pmGetContextHostName_r(1, ...) => "HOSTNAME"
+original ctx pmGetContextHostName(0)="HOSTNAME"
+original ctx pmGetContextHostName_r(0, ...) => "HOSTNAME"
+
+=== -h HOSTNAME ===
+pmGetContextHostName(0)="HOSTNAME"
+pmGetContextHostName_r(0, ...) => "HOSTNAME"
+pmDupConext()=1
+dup ctx pmGetContextHostName(1)="HOSTNAME"
+dup ctx pmGetContextHostName_r(1, ...) => "HOSTNAME"
+original ctx pmGetContextHostName(0)="HOSTNAME"
+original ctx pmGetContextHostName_r(0, ...) => "HOSTNAME"
+
+=== -L ===
+pmGetContextHostName(0)="HOSTNAME"
+pmGetContextHostName_r(0, ...) => "HOSTNAME"
+pmDupConext()=1
+dup ctx pmGetContextHostName(1)="HOSTNAME"
+dup ctx pmGetContextHostName_r(1, ...) => "HOSTNAME"
+original ctx pmGetContextHostName(0)="HOSTNAME"
+original ctx pmGetContextHostName_r(0, ...) => "HOSTNAME"
+
+=== -a src/babylon.percpu_v2 ===
+pmGetContextHostName(0)="babylon"
+pmGetContextHostName_r(0, ...) => "babylon"
+pmDupConext()=1
+dup ctx pmGetContextHostName(1)="babylon"
+dup ctx pmGetContextHostName_r(1, ...) => "babylon"
+original ctx pmGetContextHostName(0)="babylon"
+original ctx pmGetContextHostName_r(0, ...) => "babylon"
+
+=== -h localhost ===
+pmGetContextHostName(0)="HOSTNAME"
+pmGetContextHostName_r(0, ...) => "HOSTNAME"
+pmDupConext()=1
+dup ctx pmGetContextHostName(1)="HOSTNAME"
+dup ctx pmGetContextHostName_r(1, ...) => "HOSTNAME"
+original ctx pmGetContextHostName(0)="HOSTNAME"
+original ctx pmGetContextHostName_r(0, ...) => "HOSTNAME"
+
+=== -h local: ===
+pmGetContextHostName(0)="HOSTNAME"
+pmGetContextHostName_r(0, ...) => "HOSTNAME"
+pmDupConext()=1
+dup ctx pmGetContextHostName(1)="HOSTNAME"
+dup ctx pmGetContextHostName_r(1, ...) => "HOSTNAME"
+original ctx pmGetContextHostName(0)="HOSTNAME"
+original ctx pmGetContextHostName_r(0, ...) => "HOSTNAME"
+
+=== -h unix: ===
+pmGetContextHostName(0)="HOSTNAME"
+pmGetContextHostName_r(0, ...) => "HOSTNAME"
+pmDupConext()=1
+dup ctx pmGetContextHostName(1)="HOSTNAME"
+dup ctx pmGetContextHostName_r(1, ...) => "HOSTNAME"
+original ctx pmGetContextHostName(0)="HOSTNAME"
+original ctx pmGetContextHostName_r(0, ...) => "HOSTNAME"
+
+=== -h no.such.host ===
+getcontexthost: Cannot connect to PMCD on host "no.such.host": No route to host
+pmGetContextHostName(-113)=""
+pmGetContextHostName_r(-113, ...) => ""
+pmDupContext()=-12376 - Attempt to use an illegal context
+dup ctx pmGetContextHostName(-12376)=""
+dup ctx pmGetContextHostName_r(-12376, ...) => ""
+original ctx pmGetContextHostName(-113)=""
+original ctx pmGetContextHostName_r(-113, ...) => ""
+
+=== -a /no/such/archive ===
+getcontexthost: Cannot open archive "/no/such/archive": No such file or directory
+pmGetContextHostName(-2)=""
+pmGetContextHostName_r(-2, ...) => ""
+pmDupContext()=-12376 - Attempt to use an illegal context
+dup ctx pmGetContextHostName(-12376)=""
+dup ctx pmGetContextHostName_r(-12376, ...) => ""
+original ctx pmGetContextHostName(-2)=""
+original ctx pmGetContextHostName_r(-2, ...) => ""
diff --git a/qa/787 b/qa/787
new file mode 100755
index 0000000..b892d57
--- /dev/null
+++ b/qa/787
@@ -0,0 +1,82 @@
+#!/bin/sh
+# PCP QA Test No. 787
+# Frank's "slow" archive with <mark> records
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# TODO - read backwards?
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# change to true to produce detailed values in $seq.full to
+# validate the interpolated values reported by pmval
+#
+full=false
+$full && rm -f $seq.full
+
+_summary()
+{
+ grep '^__pmLogRead:' | wc -l | sed -e 's/ //g'
+}
+
+_filter()
+{
+ sed -e "s@$tmp@TMP@g"
+}
+
+pmdumplog -xz src/slow >$tmp.tmp
+echo "log records: `egrep '^([A-Z][a-z][a-z] )|([0-2][0-9]:)' <$tmp.tmp | wc -l | sed -e 's/ //g'`"
+
+# for full output, lines look like
+# Fri Jan 10 17:58:09.600 2014 60.0.32 (hinv.ncpu): value 4
+#
+$full && grep '<mark>' <$tmp.tmp | LC_COLLATE=POSIX sort -k 3,3n -k 4,4 >$tmp.mark
+
+# real QA test starts here
+for metric in hinv.ncpu kernel.all.nprocs pmcd.numagents
+do
+ echo
+ echo "=== $metric ==="
+ $full && pmdumplog -xz src/slow $metric | egrep '^([A-Z][a-z][a-z] )|([0-2][0-9]:)' | LC_COLLATE=POSIX sort -k 3,3n -k 4,4 >$tmp.tmp
+ $full && LC_COLLATE=POSIX sort -k 3,3n -k 4,4 $tmp.tmp $tmp.mark >>$seq.full
+
+ echo
+ echo "+++ forwards +++"
+ pmval -z -Dlog -t 1hr -A 1hr -a src/slow $metric 2>$tmp.err
+ echo "log reads: `_summary <$tmp.err`"
+
+ echo
+ echo "+++ backwards +++"
+ src/interp1 -d -s 1000 -a src/slow -t 3600 $metric
+
+ echo "`echo $metric | sed -e 's/\./_/g'` = $metric;" >>$tmp.pmie
+done
+
+echo
+echo "=== pmcd.numagents converted to discrete semantics ==="
+echo "metric pmcd.numagents { sem -> discrete }" >$tmp.config
+pmlogrewrite -c $tmp.config src/slow $tmp
+pmval -z -Dlog -t 1hr -A 1hr -a $tmp pmcd.numagents 2>$tmp.err \
+| _filter
+echo "log reads: `_summary <$tmp.err`"
+
+echo
+echo "=== all metrics at once ==="
+pmie -z -a src/slow -c $tmp.pmie -t 1hr -A 1hr -v -Dlog 2>$tmp.err
+echo "log reads: `_summary <$tmp.err`"
+
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/787.out b/qa/787.out
new file mode 100644
index 0000000..905b79b
--- /dev/null
+++ b/qa/787.out
@@ -0,0 +1,1283 @@
+QA output created by 787
+log records: 7565
+
+=== hinv.ncpu ===
+
++++ forwards +++
+Note: timezone set to local timezone of host "super.elastic.org" from archive
+
+metric: hinv.ncpu
+archive: src/slow
+host: super.elastic.org
+start: Fri Jan 10 18:00:00 2014
+end: Mon Jan 13 08:59:49 2014
+semantics: discrete instantaneous value
+units: none
+samples: 63
+interval: 3600.00 sec
+18:00:00.000 4
+19:00:00.000 4
+20:00:00.000 4
+21:00:00.000 4
+22:00:00.000 4
+23:00:00.000 4
+00:00:00.000 4
+01:00:00.000 4
+02:00:00.000 4
+03:00:00.000 4
+04:00:00.000 4
+05:00:00.000 4
+06:00:00.000 4
+07:00:00.000 4
+08:00:00.000 4
+09:00:00.000 4
+10:00:00.000 4
+11:00:00.000 4
+12:00:00.000 4
+13:00:00.000 4
+14:00:00.000 4
+15:00:00.000 4
+16:00:00.000 4
+17:00:00.000 4
+18:00:00.000 4
+19:00:00.000 4
+20:00:00.000 4
+21:00:00.000 4
+22:00:00.000 4
+23:00:00.000 4
+00:00:00.000 4
+01:00:00.000 4
+02:00:00.000 4
+03:00:00.000 4
+04:00:00.000 4
+05:00:00.000 4
+06:00:00.000 4
+07:00:00.000 4
+08:00:00.000 4
+09:00:00.000 4
+10:00:00.000 4
+11:00:00.000 4
+12:00:00.000 4
+13:00:00.000 4
+14:00:00.000 4
+15:00:00.000 4
+16:00:00.000 4
+17:00:00.000 4
+18:00:00.000 4
+19:00:00.000 4
+20:00:00.000 4
+21:00:00.000 4
+22:00:00.000 4
+23:00:00.000 4
+00:00:00.000 4
+01:00:00.000 4
+02:00:00.000 4
+03:00:00.000 4
+04:00:00.000 4
+05:00:00.000 4
+06:00:00.000 4
+07:00:00.000 4
+08:00:00.000 4
+log reads: 7448
+
++++ backwards +++
+metric[0]: hinv.ncpu
+
+sample 1, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 2, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 3, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 4, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 5, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 6, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 7, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 8, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 9, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 10, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 11, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 12, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 13, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 14, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 15, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 16, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 17, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 18, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 19, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 20, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 21, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 22, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 23, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 24, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 25, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 26, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 27, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 28, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 29, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 30, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 31, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 32, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 33, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 34, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 35, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 36, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 37, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 38, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 39, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 40, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 41, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 42, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 43, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 44, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 45, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 46, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 47, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 48, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 49, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 50, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 51, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 52, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 53, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 54, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 55, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 56, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 57, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 58, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 59, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 60, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 61, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 62, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+
+sample 63, delta time=-3600.000 secs
+hinv.ncpu:
+value[0]: 4
+sample[64] pmFetch: End of PCP archive log
+
+64 samples required 7565 log reads
+
+=== kernel.all.nprocs ===
+
++++ forwards +++
+Note: timezone set to local timezone of host "super.elastic.org" from archive
+
+metric: kernel.all.nprocs
+archive: src/slow
+host: super.elastic.org
+start: Fri Jan 10 18:00:00 2014
+end: Mon Jan 13 08:59:49 2014
+semantics: instantaneous value
+units: none
+samples: 63
+interval: 3600.00 sec
+18:00:00.000 444
+19:00:00.000 436
+20:00:00.000 436
+21:00:00.000 442
+22:00:00.000 426
+23:00:00.000 1082
+00:00:00.000 1283
+01:00:00.000 788
+02:00:00.000 637
+03:00:00.000 639
+04:00:00.000 637
+05:00:00.000 642
+06:00:00.000 635
+07:00:00.000 638
+08:00:00.000 635
+09:00:00.000 651
+10:00:00.000 651
+11:00:00.000 647
+12:00:00.000 636
+13:00:00.000 638
+14:00:00.000 646
+15:00:00.000 656
+16:00:00.000 648
+17:00:00.000 634
+18:00:00.000 634
+19:00:00.000 645
+20:00:00.000 636
+21:00:00.000 636
+22:00:00.000 635
+23:00:00.000 636
+00:00:00.000 636
+01:00:00.000 637
+02:00:00.000 633
+03:00:00.000 636
+04:00:00.000 630
+05:00:00.000 638
+06:00:00.000 634
+07:00:00.000 636
+08:00:00.000 638
+09:00:00.000 845
+10:00:00.000 843
+11:00:00.000 688
+12:00:00.000 687
+13:00:00.000 686
+14:00:00.000 689
+15:00:00.000 690
+16:00:00.000 686
+17:00:00.000 686
+18:00:00.000 1101
+19:00:00.000 1091
+20:00:00.000 788
+21:00:00.000 788
+22:00:00.000 786
+23:00:00.000 793
+00:00:00.000 786
+01:00:00.000 782
+02:00:00.000 795
+03:00:00.000 786
+04:00:00.000 785
+05:00:00.000 789
+06:00:00.000 789
+07:00:00.000 785
+08:00:00.000 942
+log reads: 7448
+
++++ backwards +++
+metric[0]: kernel.all.nprocs
+
+sample 1, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 942
+
+sample 2, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 785
+
+sample 3, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 789
+
+sample 4, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 789
+
+sample 5, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 785
+
+sample 6, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 786
+
+sample 7, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 795
+
+sample 8, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 782
+
+sample 9, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 786
+
+sample 10, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 793
+
+sample 11, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 786
+
+sample 12, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 788
+
+sample 13, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 788
+
+sample 14, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 1091
+
+sample 15, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 1101
+
+sample 16, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 686
+
+sample 17, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 686
+
+sample 18, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 690
+
+sample 19, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 689
+
+sample 20, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 686
+
+sample 21, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 687
+
+sample 22, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 688
+
+sample 23, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 843
+
+sample 24, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 845
+
+sample 25, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 638
+
+sample 26, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 636
+
+sample 27, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 634
+
+sample 28, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 638
+
+sample 29, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 630
+
+sample 30, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 636
+
+sample 31, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 633
+
+sample 32, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 637
+
+sample 33, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 636
+
+sample 34, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 636
+
+sample 35, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 635
+
+sample 36, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 636
+
+sample 37, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 636
+
+sample 38, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 645
+
+sample 39, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 634
+
+sample 40, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 634
+
+sample 41, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 648
+
+sample 42, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 656
+
+sample 43, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 646
+
+sample 44, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 638
+
+sample 45, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 636
+
+sample 46, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 647
+
+sample 47, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 651
+
+sample 48, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 651
+
+sample 49, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 635
+
+sample 50, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 638
+
+sample 51, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 635
+
+sample 52, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 642
+
+sample 53, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 637
+
+sample 54, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 639
+
+sample 55, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 637
+
+sample 56, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 788
+
+sample 57, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 1283
+
+sample 58, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 1082
+
+sample 59, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 426
+
+sample 60, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 442
+
+sample 61, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 436
+
+sample 62, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 436
+
+sample 63, delta time=-3600.000 secs
+kernel.all.nprocs:
+value[0]: 444
+sample[64] pmFetch: End of PCP archive log
+
+64 samples required 7565 log reads
+
+=== pmcd.numagents ===
+
++++ forwards +++
+Note: timezone set to local timezone of host "super.elastic.org" from archive
+
+metric: pmcd.numagents
+archive: src/slow
+host: super.elastic.org
+start: Fri Jan 10 18:00:00 2014
+end: Mon Jan 13 08:59:49 2014
+semantics: instantaneous value
+units: none
+samples: 63
+interval: 3600.00 sec
+18:00:00.000 No values available
+19:00:00.000 No values available
+20:00:00.000 No values available
+21:00:00.000 No values available
+22:00:00.000 No values available
+23:00:00.000 No values available
+00:00:00.000 No values available
+01:00:00.000 No values available
+02:00:00.000 No values available
+03:00:00.000 No values available
+04:00:00.000 No values available
+05:00:00.000 No values available
+06:00:00.000 No values available
+07:00:00.000 No values available
+08:00:00.000 No values available
+09:00:00.000 No values available
+10:00:00.000 No values available
+11:00:00.000 No values available
+12:00:00.000 No values available
+13:00:00.000 No values available
+14:00:00.000 No values available
+15:00:00.000 No values available
+16:00:00.000 No values available
+17:00:00.000 No values available
+18:00:00.000 No values available
+19:00:00.000 No values available
+20:00:00.000 No values available
+21:00:00.000 No values available
+22:00:00.000 No values available
+23:00:00.000 No values available
+00:00:00.000 No values available
+01:00:00.000 No values available
+02:00:00.000 No values available
+03:00:00.000 No values available
+04:00:00.000 No values available
+05:00:00.000 No values available
+06:00:00.000 No values available
+07:00:00.000 No values available
+08:00:00.000 No values available
+09:00:00.000 No values available
+10:00:00.000 No values available
+11:00:00.000 No values available
+12:00:00.000 No values available
+13:00:00.000 No values available
+14:00:00.000 No values available
+15:00:00.000 No values available
+16:00:00.000 No values available
+17:00:00.000 No values available
+18:00:00.000 No values available
+19:00:00.000 No values available
+20:00:00.000 No values available
+21:00:00.000 No values available
+22:00:00.000 No values available
+23:00:00.000 No values available
+00:00:00.000 No values available
+01:00:00.000 No values available
+02:00:00.000 No values available
+03:00:00.000 No values available
+04:00:00.000 No values available
+05:00:00.000 No values available
+06:00:00.000 No values available
+07:00:00.000 No values available
+08:00:00.000 No values available
+log reads: 13266
+
++++ backwards +++
+metric[0]: pmcd.numagents
+
+sample 1, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 2, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 3, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 4, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 5, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 6, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 7, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 8, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 9, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 10, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 11, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 12, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 13, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 14, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 15, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 16, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 17, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 18, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 19, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 20, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 21, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 22, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 23, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 24, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 25, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 26, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 27, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 28, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 29, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 30, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 31, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 32, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 33, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 34, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 35, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 36, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 37, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 38, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 39, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 40, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 41, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 42, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 43, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 44, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 45, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 46, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 47, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 48, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 49, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 50, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 51, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 52, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 53, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 54, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 55, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 56, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 57, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 58, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 59, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 60, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 61, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 62, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+
+sample 63, delta time=-3600.000 secs
+pmcd.numagents: no current values no prior values
+sample[64] pmFetch: End of PCP archive log
+
+64 samples required 14696 log reads
+
+=== pmcd.numagents converted to discrete semantics ===
+Note: timezone set to local timezone of host "super.elastic.org" from archive
+
+metric: pmcd.numagents
+archive: TMP
+host: super.elastic.org
+start: Fri Jan 10 18:00:00 2014
+end: Mon Jan 13 08:59:49 2014
+semantics: discrete instantaneous value
+units: none
+samples: 63
+interval: 3600.00 sec
+18:00:00.000 No values available
+19:00:00.000 No values available
+20:00:00.000 No values available
+21:00:00.000 No values available
+22:00:00.000 No values available
+23:00:00.000 No values available
+00:00:00.000 No values available
+01:00:00.000 No values available
+02:00:00.000 No values available
+03:00:00.000 No values available
+04:00:00.000 No values available
+05:00:00.000 No values available
+06:00:00.000 No values available
+07:00:00.000 No values available
+08:00:00.000 No values available
+09:00:00.000 No values available
+10:00:00.000 No values available
+11:00:00.000 4
+12:00:00.000 4
+13:00:00.000 4
+14:00:00.000 4
+15:00:00.000 4
+16:00:00.000 4
+17:00:00.000 4
+18:00:00.000 4
+19:00:00.000 4
+20:00:00.000 4
+21:00:00.000 4
+22:00:00.000 4
+23:00:00.000 4
+00:00:00.000 4
+01:00:00.000 4
+02:00:00.000 4
+03:00:00.000 4
+04:00:00.000 4
+05:00:00.000 4
+06:00:00.000 4
+07:00:00.000 4
+08:00:00.000 4
+09:00:00.000 4
+10:00:00.000 4
+11:00:00.000 4
+12:00:00.000 4
+13:00:00.000 4
+14:00:00.000 4
+15:00:00.000 4
+16:00:00.000 4
+17:00:00.000 4
+18:00:00.000 4
+19:00:00.000 4
+20:00:00.000 4
+21:00:00.000 4
+22:00:00.000 4
+23:00:00.000 4
+00:00:00.000 4
+01:00:00.000 4
+02:00:00.000 4
+03:00:00.000 4
+04:00:00.000 4
+05:00:00.000 4
+06:00:00.000 4
+07:00:00.000 4
+08:00:00.000 4
+log reads: 13266
+
+=== all metrics at once ===
+pmie: timezone set to local timezone of host super.elastic.org
+hinv_ncpu (Fri Jan 10 18:00:00 2014): 4
+kernel_all_nprocs (Fri Jan 10 18:00:00 2014): 444
+pmcd_numagents (Fri Jan 10 18:00:00 2014): ?
+
+hinv_ncpu (Fri Jan 10 19:00:00 2014): 4
+kernel_all_nprocs (Fri Jan 10 19:00:00 2014): 436
+pmcd_numagents (Fri Jan 10 19:00:00 2014): ?
+
+hinv_ncpu (Fri Jan 10 20:00:00 2014): 4
+kernel_all_nprocs (Fri Jan 10 20:00:00 2014): 436
+pmcd_numagents (Fri Jan 10 20:00:00 2014): ?
+
+hinv_ncpu (Fri Jan 10 21:00:00 2014): 4
+kernel_all_nprocs (Fri Jan 10 21:00:00 2014): 442
+pmcd_numagents (Fri Jan 10 21:00:00 2014): ?
+
+hinv_ncpu (Fri Jan 10 22:00:00 2014): 4
+kernel_all_nprocs (Fri Jan 10 22:00:00 2014): 426
+pmcd_numagents (Fri Jan 10 22:00:00 2014): ?
+
+hinv_ncpu (Fri Jan 10 23:00:00 2014): 4
+kernel_all_nprocs (Fri Jan 10 23:00:00 2014): 1082
+pmcd_numagents (Fri Jan 10 23:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 00:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 00:00:00 2014): 1283
+pmcd_numagents (Sat Jan 11 00:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 01:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 01:00:00 2014): 788
+pmcd_numagents (Sat Jan 11 01:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 02:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 02:00:00 2014): 637
+pmcd_numagents (Sat Jan 11 02:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 03:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 03:00:00 2014): 639
+pmcd_numagents (Sat Jan 11 03:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 04:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 04:00:00 2014): 637
+pmcd_numagents (Sat Jan 11 04:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 05:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 05:00:00 2014): 642
+pmcd_numagents (Sat Jan 11 05:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 06:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 06:00:00 2014): 635
+pmcd_numagents (Sat Jan 11 06:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 07:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 07:00:00 2014): 638
+pmcd_numagents (Sat Jan 11 07:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 08:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 08:00:00 2014): 635
+pmcd_numagents (Sat Jan 11 08:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 09:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 09:00:00 2014): 651
+pmcd_numagents (Sat Jan 11 09:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 10:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 10:00:00 2014): 651
+pmcd_numagents (Sat Jan 11 10:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 11:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 11:00:00 2014): 647
+pmcd_numagents (Sat Jan 11 11:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 12:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 12:00:00 2014): 636
+pmcd_numagents (Sat Jan 11 12:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 13:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 13:00:00 2014): 638
+pmcd_numagents (Sat Jan 11 13:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 14:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 14:00:00 2014): 646
+pmcd_numagents (Sat Jan 11 14:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 15:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 15:00:00 2014): 656
+pmcd_numagents (Sat Jan 11 15:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 16:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 16:00:00 2014): 648
+pmcd_numagents (Sat Jan 11 16:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 17:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 17:00:00 2014): 634
+pmcd_numagents (Sat Jan 11 17:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 18:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 18:00:00 2014): 634
+pmcd_numagents (Sat Jan 11 18:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 19:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 19:00:00 2014): 645
+pmcd_numagents (Sat Jan 11 19:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 20:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 20:00:00 2014): 636
+pmcd_numagents (Sat Jan 11 20:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 21:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 21:00:00 2014): 636
+pmcd_numagents (Sat Jan 11 21:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 22:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 22:00:00 2014): 635
+pmcd_numagents (Sat Jan 11 22:00:00 2014): ?
+
+hinv_ncpu (Sat Jan 11 23:00:00 2014): 4
+kernel_all_nprocs (Sat Jan 11 23:00:00 2014): 636
+pmcd_numagents (Sat Jan 11 23:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 00:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 00:00:00 2014): 636
+pmcd_numagents (Sun Jan 12 00:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 01:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 01:00:00 2014): 637
+pmcd_numagents (Sun Jan 12 01:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 02:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 02:00:00 2014): 633
+pmcd_numagents (Sun Jan 12 02:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 03:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 03:00:00 2014): 636
+pmcd_numagents (Sun Jan 12 03:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 04:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 04:00:00 2014): 630
+pmcd_numagents (Sun Jan 12 04:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 05:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 05:00:00 2014): 638
+pmcd_numagents (Sun Jan 12 05:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 06:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 06:00:00 2014): 634
+pmcd_numagents (Sun Jan 12 06:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 07:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 07:00:00 2014): 636
+pmcd_numagents (Sun Jan 12 07:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 08:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 08:00:00 2014): 638
+pmcd_numagents (Sun Jan 12 08:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 09:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 09:00:00 2014): 845
+pmcd_numagents (Sun Jan 12 09:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 10:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 10:00:00 2014): 843
+pmcd_numagents (Sun Jan 12 10:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 11:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 11:00:00 2014): 688
+pmcd_numagents (Sun Jan 12 11:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 12:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 12:00:00 2014): 687
+pmcd_numagents (Sun Jan 12 12:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 13:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 13:00:00 2014): 686
+pmcd_numagents (Sun Jan 12 13:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 14:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 14:00:00 2014): 689
+pmcd_numagents (Sun Jan 12 14:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 15:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 15:00:00 2014): 690
+pmcd_numagents (Sun Jan 12 15:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 16:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 16:00:00 2014): 686
+pmcd_numagents (Sun Jan 12 16:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 17:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 17:00:00 2014): 686
+pmcd_numagents (Sun Jan 12 17:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 18:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 18:00:00 2014): 1101
+pmcd_numagents (Sun Jan 12 18:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 19:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 19:00:00 2014): 1091
+pmcd_numagents (Sun Jan 12 19:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 20:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 20:00:00 2014): 788
+pmcd_numagents (Sun Jan 12 20:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 21:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 21:00:00 2014): 788
+pmcd_numagents (Sun Jan 12 21:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 22:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 22:00:00 2014): 786
+pmcd_numagents (Sun Jan 12 22:00:00 2014): ?
+
+hinv_ncpu (Sun Jan 12 23:00:00 2014): 4
+kernel_all_nprocs (Sun Jan 12 23:00:00 2014): 793
+pmcd_numagents (Sun Jan 12 23:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 00:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 00:00:00 2014): 786
+pmcd_numagents (Mon Jan 13 00:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 01:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 01:00:00 2014): 782
+pmcd_numagents (Mon Jan 13 01:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 02:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 02:00:00 2014): 795
+pmcd_numagents (Mon Jan 13 02:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 03:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 03:00:00 2014): 786
+pmcd_numagents (Mon Jan 13 03:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 04:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 04:00:00 2014): 785
+pmcd_numagents (Mon Jan 13 04:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 05:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 05:00:00 2014): 789
+pmcd_numagents (Mon Jan 13 05:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 06:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 06:00:00 2014): 789
+pmcd_numagents (Mon Jan 13 06:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 07:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 07:00:00 2014): 785
+pmcd_numagents (Mon Jan 13 07:00:00 2014): ?
+
+hinv_ncpu (Mon Jan 13 08:00:00 2014): 4
+kernel_all_nprocs (Mon Jan 13 08:00:00 2014): 942
+pmcd_numagents (Mon Jan 13 08:00:00 2014): ?
+
+log reads: 14947
diff --git a/qa/798 b/qa/798
new file mode 100755
index 0000000..11fcac9
--- /dev/null
+++ b/qa/798
@@ -0,0 +1,62 @@
+#! /bin/sh
+# PCP QA Test No. 798
+# Exercise dbpmda use with the Perl implementation of nfsclient
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1
+perl -e "use PCP::PMDA" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::PMDA module not installed"
+
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e "s;$script;pmdanfsclient.pl;" \
+ | _filter_dumpresult
+}
+
+# real QA test starts here
+domain=62
+script=pmdanfsclient.pl
+cd "$PCP_PMDAS_DIR/nfsclient"
+
+# create a root namespace file for dbpmda to use
+PCP_PERL_PMNS=root /usr/bin/perl $script > $tmp.root
+
+# create a set of commands for dbpmda
+cat >$tmp.cmds <<End-of-File
+open pipe /usr/bin/perl $script
+getdesc on
+desc nfsclient.mountpoint
+desc nfsclient.options.string
+desc nfsclient.options.proto
+desc nfsclient.options.vers
+fetch nfsclient.mountpoint
+fetch nfsclient.options.string
+fetch nfsclient.options.proto
+fetch nfsclient.options.vers
+instance $domain.0
+End-of-File
+
+# iterate over our pre-canned mountstats files
+test="$here/nfsclient"
+for file in $test/*.qa
+do
+ export NFSCLIENT_MOUNTSTATS_PATH="$file"
+ echo === Test case: `basename $file`
+ $sudo dbpmda -n $tmp.root -ie < $tmp.cmds 2>&1 | _filter
+done
+
+status=0
diff --git a/qa/798.out b/qa/798.out
new file mode 100644
index 0000000..6be937d
--- /dev/null
+++ b/qa/798.out
@@ -0,0 +1,99 @@
+QA output created by 798
+=== Test case: mountstats.qa
+dbpmda> open pipe /usr/bin/perl pmdanfsclient.pl
+Start perl PMDA: /usr/bin/perl pmdanfsclient.pl
+dbpmda> getdesc on
+dbpmda> desc nfsclient.mountpoint
+PMID: 62.0.2
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> desc nfsclient.options.string
+PMID: 62.1.1
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> desc nfsclient.options.proto
+PMID: 62.1.24
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> desc nfsclient.options.vers
+PMID: 62.1.6
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> fetch nfsclient.mountpoint
+PMID(s): 62.0.2
+pmResult ... numpmid: 1
+ 62.0.2 (<noname>): numval: 4 valfmt: 1 vlist[]:
+ inst [0 or ???] value STRING
+ inst [1 or ???] value STRING
+ inst [2 or ???] value STRING
+ inst [3 or ???] value STRING
+dbpmda> fetch nfsclient.options.string
+PMID(s): 62.1.1
+pmResult ... numpmid: 1
+ 62.1.1 (<noname>): numval: 4 valfmt: 1 vlist[]:
+ inst [0 or ???] value STRING
+ inst [1 or ???] value STRING
+ inst [2 or ???] value STRING
+ inst [3 or ???] value STRING
+dbpmda> fetch nfsclient.options.proto
+PMID(s): 62.1.24
+pmResult ... numpmid: 1
+ 62.1.24 (<noname>): numval: 4 valfmt: 1 vlist[]:
+ inst [0 or ???] value STRING
+ inst [1 or ???] value STRING
+ inst [2 or ???] value STRING
+ inst [3 or ???] value STRING
+dbpmda> fetch nfsclient.options.vers
+PMID(s): 62.1.6
+pmResult ... numpmid: 1
+ 62.1.6 (<noname>): numval: 4 valfmt: 1 vlist[]:
+ inst [0 or ???] value STRING
+ inst [1 or ???] value STRING
+ inst [2 or ???] value STRING
+ inst [3 or ???] value STRING
+dbpmda> instance 62.0
+pmInDom: 62.0
+[ 0] inst: 0 name: "/mnt/nfsv4"
+[ 1] inst: 1 name: "/mnt/nfs41"
+[ 2] inst: 2 name: "/ifs"
+[ 3] inst: 3 name: "/ifsfoo"
+dbpmda>
+=== Test case: nonfsmounts.qa
+dbpmda> open pipe /usr/bin/perl pmdanfsclient.pl
+Start perl PMDA: /usr/bin/perl pmdanfsclient.pl
+dbpmda> getdesc on
+dbpmda> desc nfsclient.mountpoint
+PMID: 62.0.2
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> desc nfsclient.options.string
+PMID: 62.1.1
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> desc nfsclient.options.proto
+PMID: 62.1.24
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> desc nfsclient.options.vers
+PMID: 62.1.6
+ Data Type: string InDom: 62.0 0xf800000
+ Semantics: instant Units: none
+dbpmda> fetch nfsclient.mountpoint
+PMID(s): 62.0.2
+pmResult ... numpmid: 1
+ 62.0.2 (<noname>): No values returned!
+dbpmda> fetch nfsclient.options.string
+PMID(s): 62.1.1
+pmResult ... numpmid: 1
+ 62.1.1 (<noname>): No values returned!
+dbpmda> fetch nfsclient.options.proto
+PMID(s): 62.1.24
+pmResult ... numpmid: 1
+ 62.1.24 (<noname>): No values returned!
+dbpmda> fetch nfsclient.options.vers
+PMID(s): 62.1.6
+pmResult ... numpmid: 1
+ 62.1.6 (<noname>): No values returned!
+dbpmda> instance 62.0
+pmInDom: 62.0
+dbpmda>
diff --git a/qa/815 b/qa/815
new file mode 100755
index 0000000..f57cc13
--- /dev/null
+++ b/qa/815
@@ -0,0 +1,32 @@
+#!/bin/sh
+# PCP QA Test No. 815
+# pmie bug in count_<foo> method when boolean expression is UNKNOWN
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<'End-of-File' >$tmp.pmie
+count_inst(match_inst "bin-[13579]00" sample.bin @5 == sample.bin);
+End-of-File
+
+# real QA test starts here
+pmie -v -c $tmp.pmie -t 0.2sec -T 1.9sec >$tmp.out 2>&1
+
+_show_pmie_errors <$tmp.out
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/815.out b/qa/815.out
new file mode 100644
index 0000000..44aa234
--- /dev/null
+++ b/qa/815.out
@@ -0,0 +1,12 @@
+QA output created by 815
+expr_1: 0
+expr_1: 0
+expr_1: 0
+expr_1: 0
+expr_1: 0
+expr_1: 5
+expr_1: 5
+expr_1: 5
+expr_1: 5
+expr_1: 5
+pmie: note - evaluator exiting
diff --git a/qa/823 b/qa/823
new file mode 100755
index 0000000..774ab07
--- /dev/null
+++ b/qa/823
@@ -0,0 +1,90 @@
+#!/bin/sh
+# PCP QA Test No. 823
+# Exercise basic SASL functionality using a custom sasldb.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.secure
+
+_get_libpcp_config
+$authentication || _notrun "No authentication support available"
+for helper in pluginviewer saslpasswd2 sasldblistusers2; do
+ which $helper >/dev/null 2>&1 || _notrun "SASL $helper tool unavailable"
+done
+pluginviewer -a | grep 'Plugin "sasldb"' >/dev/null
+test $? -eq 0 || _notrun "SASL sasldb auxprop plugin unavailable"
+pluginviewer -s -m plain >/dev/null 2>&1
+test $? -eq 0 || _notrun 'No server support for plain authentication'
+
+cleanup()
+{
+ # restore any modified pmcd configuration files
+ for file in $PCP_SASLCONF_DIR/pmcd.conf
+ do
+ test -f $file.$seq || continue
+ $sudo rm -f $file
+ $sudo mv $file.$seq $file
+ done
+
+ $sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_stop | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+
+ $sudo rm -rf $tmp.*
+}
+
+status=1 # failure is the default!
+hostname=`hostname`
+$sudo rm -rf $tmp.* $seq.full
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+_filter_listusers2()
+{
+ sed \
+ -e "s/^$username/USER/" \
+ -e "s/@$hostname:/@HOST:/"
+}
+
+# real QA test starts here
+$sudo mv $PCP_SASLCONF_DIR/pmcd.conf $PCP_SASLCONF_DIR/pmcd.conf.$seq
+echo 'mech_list: plain' > $tmp.sasl
+echo "sasldb_path: $tmp.passwd.db" >> $tmp.sasl
+$sudo mv $tmp.sasl $PCP_SASLCONF_DIR/pmcd.conf
+id pcp >/dev/null 2>&1 && $sudo chown pcp:pcp $PCP_SASLCONF_DIR/pmcd.conf
+
+echo "Creating temporary sasldb, add user running QA to it"
+echo y | saslpasswd2 -p -a pmcd -f $tmp.passwd.db $username
+
+echo "Verify saslpasswd2 has successfully added a new user"
+sasldblistusers2 -f $tmp.passwd.db | _filter_listusers2
+
+echo "Ensure pmcd can read the password file"
+id pcp >/dev/null 2>&1 && $sudo chown pcp:pcp $tmp.passwd.db
+
+echo "Start pmcd with this shiny new sasldb"
+$sudo $PCP_RC_DIR/pcp restart | tee -a $seq.full >$tmp.out
+_wait_for_pmcd
+
+echo "Enabling sample PMDA tracing"
+authdbg=`pmdbg -l | grep DBG_TRACE_AUTH | awk '{ print $2 }'`
+pmstore sample.control $authdbg
+
+echo "Verifying SASL authentication for new client (FAIL)"
+pmprobe -v -h "pcp://localhost?username=${username}&password=n" sample.control
+filter_sample_log_credentials
+echo "pmcd.log (from expected FAIL)" >> $seq.full
+cat $PCP_LOG_DIR/pmcd/pmcd.log >> $seq.full
+
+echo "Verifying SASL authentication for new client (PASS)"
+pmprobe -v -h "pcp://localhost?username=${username}&password=y" sample.control
+filter_sample_log_credentials
+echo "pmcd.log (from expected PASS)" >> $seq.full
+cat $PCP_LOG_DIR/pmcd/pmcd.log >> $seq.full
+
+# success, all done
+status=0
+exit
diff --git a/qa/823.out b/qa/823.out
new file mode 100644
index 0000000..43eb529
--- /dev/null
+++ b/qa/823.out
@@ -0,0 +1,18 @@
+QA output created by 823
+Creating temporary sasldb, add user running QA to it
+Verify saslpasswd2 has successfully added a new user
+USER@HOST: userPassword
+Ensure pmcd can read the password file
+Start pmcd with this shiny new sasldb
+Enabling sample PMDA tracing
+sample.control old value=0 new value=16777216
+Verifying SASL authentication for new client (FAIL)
+sample.control -21357 Authentication - authentication failure
+Verifying SASL authentication for new client (PASS)
+sample.control 1 16777216
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N groupid=GID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N userid=UID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N username=USER
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/824 b/qa/824
new file mode 100755
index 0000000..03056f8
--- /dev/null
+++ b/qa/824
@@ -0,0 +1,43 @@
+#!/bin/sh
+# PCP QA Test No. 824
+# https://bugzilla.redhat.com/show_bug.cgi?id=1132476
+# with -S pmlogsummary reports incorrect commencing time
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmdumplog -zL src/20041125
+
+echo
+echo "=== no -S or -T ==="
+pmlogsummary -zHlfiImMy src/20041125 mem.freemem disk.partitions.write | head -10
+
+echo
+echo "=== with -S @00:15 ==="
+pmlogsummary -zHlfiImMy -S @00:15 src/20041125 mem.freemem disk.partitions.write | head -10
+
+echo
+echo "=== with -T @00:45 ==="
+pmlogsummary -zHlfiImMy -T @00:45 src/20041125 mem.freemem disk.partitions.write | head -10
+
+echo
+echo "=== with -S @00:15 and -T @00:45 ==="
+pmlogsummary -zHlfiImMy -S @00:15 -T @00:45 src/20041125 mem.freemem disk.partitions.write | head -10
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/824.out b/qa/824.out
new file mode 100644
index 0000000..83c1f64
--- /dev/null
+++ b/qa/824.out
@@ -0,0 +1,57 @@
+QA output created by 824
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host mortenb.oslo.sgi.com
+ commencing Thu Nov 25 00:10:06.248 2004
+ ending Thu Nov 25 00:58:06.250 2004
+Archive timezone: CET-1
+PID for pmlogger: 7553
+
+=== no -S or -T ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host mortenb.oslo.sgi.com
+ commencing Thu Nov 25 00:10:06.248 2004
+ ending Thu Nov 25 00:58:06.250 2004
+metric time_average minimum minimum_time maximum maximum_time count units
+mem.freemem 143870.068 1672.000 00:11:06.305 148808.000 00:12:06.279 48 Kbyte
+disk.partitions.write ["ram0"] 0.000 0.000 00:11:06.305 0.000 00:11:06.305 47 count / sec
+disk.partitions.write ["ram1"] 0.000 0.000 00:11:06.305 0.000 00:11:06.305 47 count / sec
+
+=== with -S @00:15 ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host mortenb.oslo.sgi.com
+ commencing Thu Nov 25 00:15:00.000 2004
+ ending Thu Nov 25 00:58:06.250 2004
+metric time_average minimum minimum_time maximum maximum_time count units
+mem.freemem 146844.465 145792.000 00:55:06.251 148552.000 00:15:06.251 44 Kbyte
+disk.partitions.write ["ram0"] 0.000 0.000 00:15:06.251 0.000 00:15:06.251 43 count / sec
+disk.partitions.write ["ram1"] 0.000 0.000 00:15:06.251 0.000 00:15:06.251 43 count / sec
+
+=== with -T @00:45 ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host mortenb.oslo.sgi.com
+ commencing Thu Nov 25 00:10:06.248 2004
+ ending Thu Nov 25 00:45:00.000 2004
+metric time_average minimum minimum_time maximum maximum_time count units
+mem.freemem 142875.040 1672.000 00:11:06.305 148808.000 00:12:06.279 34 Kbyte
+disk.partitions.write ["ram0"] 0.000 0.000 00:11:06.305 0.000 00:11:06.305 33 count / sec
+disk.partitions.write ["ram1"] 0.000 0.000 00:11:06.305 0.000 00:11:06.305 33 count / sec
+
+=== with -S @00:15 and -T @00:45 ===
+Note: timezone set to local timezone of host "mortenb.oslo.sgi.com" from archive
+
+Log Label (Log Format Version 2)
+Performance metrics from host mortenb.oslo.sgi.com
+ commencing Thu Nov 25 00:15:00.000 2004
+ ending Thu Nov 25 00:45:00.000 2004
+metric time_average minimum minimum_time maximum maximum_time count units
+mem.freemem 147148.137 146312.000 00:40:06.251 148552.000 00:15:06.251 30 Kbyte
+disk.partitions.write ["ram0"] 0.000 0.000 00:15:06.251 0.000 00:15:06.251 29 count / sec
+disk.partitions.write ["ram1"] 0.000 0.000 00:15:06.251 0.000 00:15:06.251 29 count / sec
diff --git a/qa/827 b/qa/827
new file mode 100755
index 0000000..7cb0274
--- /dev/null
+++ b/qa/827
@@ -0,0 +1,44 @@
+#!/bin/sh
+# PCP QA Test No. 827
+# Check log rewriting of Linux /proc/net/snmp metric types
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+migrate=$PCP_VAR_DIR/config/pmlogrewrite/linux_proc_net_snmp_migrate.conf
+
+# real QA test starts here
+cat >$tmp.config <<End-of-File
+metric 60.14.* { type -> U32 }
+End-of-File
+
+pmlogrewrite -c $tmp.config -w src/new_snmp $tmp.old
+
+pmlogrewrite -c $migrate -w $tmp.old $tmp.new
+
+pmdumplog -z -a $tmp.old >$tmp.old.dump
+pmdumplog -z -a $tmp.new >$tmp.new.dump
+pmdumplog -z -a src/new_snmp >$tmp.ref.dump
+
+echo "old -> new changes"
+diff -u $tmp.old.dump $tmp.new.dump | sed -e '/^---/d' -e '/^+++/d'
+
+echo
+echo "new -> ref changes ... expect none"
+diff -u $tmp.new.dump $tmp.ref.dump | sed -e '/^---/d' -e '/^+++/d'
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/827.out b/qa/827.out
new file mode 100644
index 0000000..b8ef95b
--- /dev/null
+++ b/qa/827.out
@@ -0,0 +1,324 @@
+QA output created by 827
+old -> new changes
+@@ -7,223 +7,223 @@
+
+ Descriptions for Metrics in the Log ...
+ PMID: 60.14.4 (network.ip.inaddrerrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.34 (network.icmp.outerrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.5 (network.ip.forwdatagrams)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.35 (network.icmp.outdestunreachs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.6 (network.ip.inunknownprotos)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.36 (network.icmp.outtimeexcds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.7 (network.ip.indiscards)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.37 (network.icmp.outparmprobs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.8 (network.ip.indelivers)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.38 (network.icmp.outsrcquenchs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.9 (network.ip.outrequests)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.39 (network.icmp.outredirects)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.10 (network.ip.outdiscards)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.40 (network.icmp.outechos)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.70 (network.udp.indatagrams)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.11 (network.ip.outnoroutes)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.41 (network.icmp.outechoreps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.71 (network.udp.noports)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.12 (network.ip.reasmtimeout)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.42 (network.icmp.outtimestamps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.72 (network.udp.inerrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.13 (network.ip.reasmreqds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.43 (network.icmp.outtimestampreps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.14 (network.ip.reasmoks)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.44 (network.icmp.outaddrmasks)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.74 (network.udp.outdatagrams)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.15 (network.ip.reasmfails)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.45 (network.icmp.outaddrmaskreps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.75 (network.udp.recvbuferrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.76 (network.udp.sndbuferrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.16 (network.ip.fragoks)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.77 (network.udplite.indatagrams)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.17 (network.ip.fragfails)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.78 (network.udplite.noports)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.18 (network.ip.fragcreates)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.79 (network.udplite.inerrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.20 (network.icmp.inmsgs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.50 (network.tcp.rtoalgorithm)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.80 (network.udplite.outdatagrams)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.21 (network.icmp.inerrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.51 (network.tcp.rtomin)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.81 (network.udplite.recvbuferrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.22 (network.icmp.indestunreachs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.52 (network.tcp.rtomax)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.82 (network.udplite.sndbuferrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.23 (network.icmp.intimeexcds)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.24 (network.icmp.inparmprobs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.54 (network.tcp.activeopens)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+ PMID: 60.14.25 (network.icmp.insrcquenchs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.55 (network.tcp.passiveopens)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.26 (network.icmp.inredirects)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.56 (network.tcp.attemptfails)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+ PMID: 60.14.27 (network.icmp.inechos)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.57 (network.tcp.estabresets)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: discrete Units: none
+ PMID: 60.14.28 (network.icmp.inechoreps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.58 (network.tcp.currestab)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.29 (network.icmp.intimestamps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.59 (network.tcp.insegs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.0 (network.ip.forwarding)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.30 (network.icmp.intimestampreps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.60 (network.tcp.outsegs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.1 (network.ip.defaultttl)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.31 (network.icmp.inaddrmasks)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.61 (network.tcp.retranssegs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.2 (network.ip.inreceives)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.62 (network.tcp.inerrs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.32 (network.icmp.inaddrmaskreps)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.3 (network.ip.inhdrerrors)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.63 (network.tcp.outrsts)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+ PMID: 60.14.33 (network.icmp.outmsgs)
+- Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
++ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+ Instance Domains in the Log ...
+@@ -234,14 +234,14 @@
+ Temporal Index
+ Log Vol end(meta) end(log)
+ 21:49:30.119 0 132 132
+-21:49:32.119 0 4762 1664
++21:49:32.119 0 4762 2504
+
+ [112 bytes]
+ 21:49:30.119 2.3.3 (pmcd.pmlogger.host): inst [22801 or "22801"] value "smash"
+ 2.3.0 (pmcd.pmlogger.port): inst [22801 or "22801"] value 4330
+ 2.3.2 (pmcd.pmlogger.archive): inst [22801 or "22801"] value "/tmp/new_snmp"
+
+-[1420 bytes]
++[2260 bytes]
+ 21:49:31.119 60.14.82 (network.udplite.sndbuferrors): value 0
+ 60.14.81 (network.udplite.recvbuferrors): value 0
+ 60.14.80 (network.udplite.outdatagrams): value 0
+@@ -313,7 +313,7 @@
+ 60.14.1 (network.ip.defaultttl): value 64
+ 60.14.0 (network.ip.forwarding): value 1
+
+-[1420 bytes]
++[2260 bytes]
+ 21:49:32.119 60.14.82 (network.udplite.sndbuferrors): value 0
+ 60.14.81 (network.udplite.recvbuferrors): value 0
+ 60.14.80 (network.udplite.outdatagrams): value 0
+
+new -> ref changes ... expect none
diff --git a/qa/828 b/qa/828
new file mode 100755
index 0000000..06f443d
--- /dev/null
+++ b/qa/828
@@ -0,0 +1,214 @@
+#!/bin/sh
+# PCP QA Test No. 828
+# Use valgrind to track down memory leaks associated with
+# # pmDestroyContext().
+# See http://oss.sgi.com/bugzilla/show_bug.cgi?id=1057
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+_check_valgrind
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ # free pdubuf[size]: 0xe61000[28672] 0xe5c000[17408]
+ sed \
+ -e '/free pdubuf/s/0x[0-9a-f]*\[[0-9]*\]/addr[size]/g'
+}
+
+cat >$tmp.suppress <<End-of-File
+{
+ <pmid[], name[] realloc from qa main program>
+ Memcheck:Leak
+ fun:realloc
+ fun:main
+}
+{
+ <alloc list[] in pmNewContext>
+ Memcheck:Leak
+ fun:malloc
+ fun:pmNewContext
+ fun:main
+}
+{
+ <realloc list[] in pmNewContext>
+ Memcheck:Leak
+ fun:realloc
+ fun:pmNewContext
+ fun:main
+}
+{
+ <alloc list[] in pmNewContext via pmDupContext>
+ Memcheck:Leak
+ fun:malloc
+ fun:pmNewContext
+ fun:pmDupContext
+ fun:main
+}
+{
+ <realloc list[] in pmNewContext via pmDupContext>
+ Memcheck:Leak
+ fun:realloc
+ fun:pmNewContext
+ fun:pmDupContext
+ fun:main
+}
+{
+ <strdup TZ in pmNewZone>
+ Memcheck:Leak
+ fun:malloc
+ fun:strdup
+ fun:pmNewZone
+ fun:pmNewContextZone
+ fun:main
+}
+{
+ <zone[] alloc in pmNewZone>
+ Memcheck:Leak
+ fun:malloc
+ fun:pmNewZone
+ fun:pmNewContextZone
+ fun:main
+}
+{
+ <zone[] realloc in pmNewZone>
+ Memcheck:Leak
+ fun:malloc
+ fun:realloc
+ fun:pmNewZone
+ fun:pmNewContextZone
+ fun:main
+}
+{
+ <case 1 - buf hdr in __pmFindPDUBuf from pmGetArchiveEnd>
+ Memcheck:Leak
+ fun:malloc
+ fun:__pmFindPDUBuf
+ fun:__pmLogRead
+ fun:__pmGetArchiveEnd
+ fun:pmGetArchiveEnd
+ fun:main
+}
+{
+ <case 2 - buf hdr in __pmFindPDUBuf from pmGetArchiveEnd>
+ Memcheck:Leak
+ fun:malloc
+ fun:__pmFindPDUBuf
+ fun:__pmDecodeResult
+ fun:__pmLogRead
+ fun:__pmGetArchiveEnd
+ fun:pmGetArchiveEnd
+ fun:main
+}
+{
+ <case 1 - PDU buf alloc - cache_read>
+ Memcheck:Leak
+ fun:malloc
+ fun:__pmFindPDUBuf
+ fun:__pmDecodeResult
+ fun:__pmLogRead
+ ...
+ fun:__pmLogFetchInterp
+ fun:__pmLogFetch
+ fun:pmFetch
+ fun:main
+}
+{
+ <case 2 - PDU buf alloc>
+ Memcheck:Leak
+ fun:memalign
+ fun:__pmFindPDUBuf
+ fun:__pmLogRead
+ fun:__pmGetArchiveEnd
+ fun:pmGetArchiveEnd
+ fun:main
+}
+{
+ <case 3 - PDU buf alloc>
+ Memcheck:Leak
+ fun:memalign
+ fun:__pmFindPDUBuf
+ fun:__pmDecodeResult
+ fun:__pmLogRead
+ fun:__pmGetArchiveEnd
+ fun:pmGetArchiveEnd
+ fun:main
+}
+{
+ <case 4 - PDU buf alloc - cache_read>
+ Memcheck:Leak
+ fun:memalign
+ fun:__pmFindPDUBuf
+ fun:__pmDecodeResult
+ fun:__pmLogRead
+ ...
+ fun:__pmLogFetchInterp
+ fun:__pmLogFetch
+ fun:pmFetch
+ fun:main
+}
+{
+ <ipc[] table resize>
+ Memcheck:Leak
+ fun:malloc
+ fun:realloc
+ ...
+ fun:__pmSetVersionIPC
+ fun:__pmLogChkLabel
+ fun:__pmLogChangeVol
+ fun:__pmLogOpen
+ fun:pmNewContext
+ fun:main
+}
+End-of-File
+
+# real QA test starts here
+
+for arg in "" -d
+do
+ case "$arg"
+ in
+ '')
+ echo "=== pmNewContext ==="
+ ;;
+ -d)
+ echo
+ echo "=== pmDupContext ==="
+ ;;
+ esac
+
+ reachable_opt='--show-leak-kinds=all'
+ reachable_opt='--show-reachable=yes'
+
+ valgrind \
+ --leak-check=full --read-var-info=yes $reachable_opt \
+ --suppressions=$tmp.suppress --log-file=$tmp.valgrind \
+ --gen-suppressions=all \
+ 2>$tmp.valgrind.err >$tmp.valgrind.out \
+ src/churnctx $arg -z -s 10 -a src/bug1057 kernel.all.load hinv.ncpu disk.dev.total
+
+ echo "=== std out ==="
+ cat $tmp.valgrind.out
+ echo "=== std err ==="
+ _filter < $tmp.valgrind.err
+ echo "=== valgrind report ===" >>$seq.full
+ cat $tmp.valgrind >>$seq.full
+ echo "=== filtered valgrind report ==="
+ _filter_valgrind <$tmp.valgrind
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/828.out b/qa/828.out
new file mode 100644
index 0000000..f50e686
--- /dev/null
+++ b/qa/828.out
@@ -0,0 +1,146 @@
+QA output created by 828
+=== pmNewContext ===
+=== std out ===
+Note: timezone set to local timezone of host "sourceware.org" from archive
+
+Tue Jun 10 00:51:52 2014
+60.2.0: 0 values
+60.0.32: 0 values
+60.0.28: 0 values
+Tue Jun 10 00:52:07 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+Tue Jun 10 00:52:22 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+Tue Jun 10 00:52:37 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+Tue Jun 10 00:52:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:54:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+=== std err ===
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/churnctx -z -s 10 -a src/bug1057 kernel.all.load hinv.ncpu disk.dev.total
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== pmDupContext ===
+=== std out ===
+Note: timezone set to local timezone of host "sourceware.org" from archive
+
+Tue Jun 10 00:51:52 2014
+60.2.0: 0 values
+60.0.32: 0 values
+60.0.28: 0 values
+Tue Jun 10 00:52:07 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+Tue Jun 10 00:52:22 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+Tue Jun 10 00:52:37 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+Tue Jun 10 00:52:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:53:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+Tue Jun 10 00:54:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+=== std err ===
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/churnctx -d -z -s 10 -a src/bug1057 kernel.all.load hinv.ncpu disk.dev.total
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/829 b/qa/829
new file mode 100755
index 0000000..ccebb67
--- /dev/null
+++ b/qa/829
@@ -0,0 +1,40 @@
+#!/bin/sh
+# PCP QA Test No. 829
+# Exercise the pcp-dmcache(1) command using an archive.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo 'All output'
+pcp -z --archive archives/dm-io dmcache
+echo
+
+echo 'One device'
+pcp -z --archive archives/dm-io dmcache dmcache1
+echo
+
+echo 'One device, five samples, ten seconds offset'
+pcp -z --archive archives/dm-io -s 5 -S+10sec dmcache dmcache1
+echo
+
+echo 'One device, IOPS mode, header every 50 lines'
+pcp -z --archive archives/dm-io dmcache -i --repeat 50 dmcache1
+echo
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/829.out b/qa/829.out
new file mode 100644
index 0000000..60fe25b
--- /dev/null
+++ b/qa/829.out
@@ -0,0 +1,853 @@
+QA output created by 829
+All output
+@ Fri Aug 1 14:34:50 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% ? ? ?% ? ? ?%
+dmcache2 0.0% 11.4% ? ? ?% ? ? ?%
+dmcache1 0.0% 7.5% 8.00 1.00 100% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 1.00 0.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 103.00 17.00 83.7% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 1.35K 5.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 12.00 4.00 70.6% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 1.75K 4.00 94.1% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 2.00 0.00 100% 15.00 0.00 100%
+dmcache2 0.0% 11.4% 903.00 8.00 96.3% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 20.00 0.00 100%
+dmcache2 0.0% 11.4% 543.00 8.00 98.7% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 1.00 0.00 0% 30.00 303.00 100%
+dmcache2 0.0% 11.4% 273.00 5.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 1.00 0.00 50.0% 30.00 999.00 3.2%
+dmcache2 0.0% 11.4% 1.19K 0.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0.0%
+dmcache2 0.0% 11.4% 673.00 4.00 89.4% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 1.00 0.00 100% 0.00 0.00 0%
+@ Fri Aug 1 14:35:00 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 237.00 2.84K 7.3%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 183.00 62.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 106.00 369.00 22.5%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:10 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 48.00 41.00 53.9%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:20 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 97.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 18.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 3.00 0.0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 19.00 1.14K 1.6%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:30 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 12.00 222.00 5.1%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:40 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 7.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 2.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 1.00 0.00 100%
+@ Fri Aug 1 14:35:50 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 227.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 12.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:00 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:10 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 50.00 62.00 44.6%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:20 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 2.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:30 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:40 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 2.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:50 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 2.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 348.00 0.00 100% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 321.00 0.00 100% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:37:00 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 497.00 0.00 100% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 966.00 0.00 99.3% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 752.00 0.00 100% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 272.00 0.00 100% 12.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 261.00 0.00 100% 11.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 93.00 0.00 67.4% 30.00 0.00 58.8%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 736.00 0.00 100% 4.00 0.00 66.7%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 990.00 1.00 95.8% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 401.00 0.00 100% 21.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 273.00 0.00 100% 25.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:37:10 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 484.00 0.00 75.2% 11.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 359.00 0.00 100% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 634.00 0.00 99.2% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 596.00 16.00 97.4% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 412.00 3.00 100% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 540.00 8.00 99.8% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 298.00 53.00 100% 1.16K 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 358.00 49.00 100% 875.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 507.00 32.00 69.3% 72.00 0.00 9.4%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 135.00 190.00 41.7% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:37:20 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 18.00 276.00 6.1% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 60.00 172.00 25.8% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 48.00 265.00 15.3% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 123.00 245.00 33.4% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 115.00 304.00 27.4% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 90.00 162.00 36.7% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 47.00 274.00 14.3% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 134.00 206.00 39.9% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 22.00 130.00 14.3% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 6.00 80.00 6.8% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:37:30 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 7.00 84.00 7.7% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 1.00 179.00 0.6% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 14.00 145.00 8.9% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 180.00 211.00 46.2% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 120.00 185.00 39.1% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 276.00 36.00 88.2% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 335.00 9.00 97.1% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 149.00 73.00 72.0% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 493.00 54.00 88.5% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 308.00 68.00 82.6% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:37:40 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.6% 178.00 72.00 69.3% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 248.00 62.00 81.8% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 202.00 69.00 76.2% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 197.00 75.00 72.4% 12.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 136.00 129.00 49.5% 19.00 0.00 70.4%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 134.00 33.00 97.8% 26.00 0.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 194.00 37.00 90.7% 997.00 352.00 100%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 171.00 44.00 64.5% 1.23K 498.00 48.1%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 141.00 183.00 44.2% 0.00 0.00 0%
+dmcache2 0.0% 11.4% 0.00 0.00 0% 0.00 0.00 0%
+
+One device
+@ Fri Aug 1 14:34:50 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% ? ? ?% ? ? ?%
+dmcache1 0.0% 7.5% 8.00 1.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 103.00 17.00 83.7% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 12.00 4.00 70.6% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 2.00 0.00 100% 15.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 20.00 0.00 100%
+dmcache1 0.0% 7.5% 1.00 0.00 0% 30.00 303.00 100%
+dmcache1 0.0% 7.5% 1.00 0.00 50.0% 30.00 999.00 3.2%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0.0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:00 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 237.00 2.84K 7.3%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 183.00 62.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 106.00 369.00 22.5%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:10 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 48.00 41.00 53.9%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:20 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 3.00 0.0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 19.00 1.14K 1.6%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:30 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 12.00 222.00 5.1%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:40 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 7.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 2.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:35:50 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:00 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:10 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 50.00 62.00 44.6%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:20 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:30 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:40 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 2.00 0.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+@ Fri Aug 1 14:36:50 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 348.00 0.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 321.00 0.00 100% 0.00 0.00 0%
+@ Fri Aug 1 14:37:00 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 497.00 0.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 966.00 0.00 99.3% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 752.00 0.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 272.00 0.00 100% 12.00 0.00 0%
+dmcache1 0.0% 7.5% 261.00 0.00 100% 11.00 0.00 0%
+dmcache1 0.0% 7.5% 93.00 0.00 67.4% 30.00 0.00 58.8%
+dmcache1 0.0% 7.5% 736.00 0.00 100% 4.00 0.00 66.7%
+dmcache1 0.0% 7.5% 990.00 1.00 95.8% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 401.00 0.00 100% 21.00 0.00 100%
+dmcache1 0.0% 7.5% 273.00 0.00 100% 25.00 0.00 100%
+@ Fri Aug 1 14:37:10 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 484.00 0.00 75.2% 11.00 0.00 100%
+dmcache1 0.0% 7.5% 359.00 0.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 634.00 0.00 99.2% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 596.00 16.00 97.4% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 412.00 3.00 100% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 540.00 8.00 99.8% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 298.00 53.00 100% 1.16K 0.00 100%
+dmcache1 0.0% 7.5% 358.00 49.00 100% 875.00 0.00 100%
+dmcache1 0.0% 7.5% 507.00 32.00 69.3% 72.00 0.00 9.4%
+dmcache1 0.0% 7.5% 135.00 190.00 41.7% 0.00 0.00 0%
+@ Fri Aug 1 14:37:20 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 18.00 276.00 6.1% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 60.00 172.00 25.8% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 48.00 265.00 15.3% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 123.00 245.00 33.4% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 115.00 304.00 27.4% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 90.00 162.00 36.7% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 47.00 274.00 14.3% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 134.00 206.00 39.9% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 22.00 130.00 14.3% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 6.00 80.00 6.8% 0.00 0.00 0%
+@ Fri Aug 1 14:37:30 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% 7.00 84.00 7.7% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 1.00 179.00 0.6% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 14.00 145.00 8.9% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 180.00 211.00 46.2% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 120.00 185.00 39.1% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 276.00 36.00 88.2% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 335.00 9.00 97.1% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 149.00 73.00 72.0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 493.00 54.00 88.5% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 308.00 68.00 82.6% 0.00 0.00 0%
+@ Fri Aug 1 14:37:40 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.6% 178.00 72.00 69.3% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 248.00 62.00 81.8% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 202.00 69.00 76.2% 0.00 0.00 0%
+dmcache1 0.0% 7.6% 197.00 75.00 72.4% 12.00 0.00 100%
+dmcache1 0.0% 7.6% 136.00 129.00 49.5% 19.00 0.00 70.4%
+dmcache1 0.0% 7.6% 134.00 33.00 97.8% 26.00 0.00 100%
+dmcache1 0.0% 7.6% 194.00 37.00 90.7% 997.00 352.00 100%
+dmcache1 0.0% 7.6% 171.00 44.00 64.5% 1.23K 498.00 48.1%
+dmcache1 0.0% 7.6% 141.00 183.00 44.2% 0.00 0.00 0%
+
+One device, five samples, ten seconds offset
+@ Fri Aug 1 14:35:00 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ratio hit miss ratio
+dmcache1 0.0% 7.5% ? ? ?% ? ? ?%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 0.00 0.00 0%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 237.00 2.84K 7.3%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 183.00 62.00 100%
+dmcache1 0.0% 7.5% 0.00 0.00 0% 106.00 369.00 22.5%
+
+One device, IOPS mode, header every 50 lines
+@ Fri Aug 1 14:34:50 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ops hit miss ops
+dmcache1 0.0% 7.5% ? ? ? ? ? ?
+dmcache1 0.0% 7.5% 8.00 1.00 5.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 103.00 17.00 123.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 12.00 4.00 17.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 2.00 0.00 2.00 15.00 0.00 5.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 20.00 0.00 14.00
+dmcache1 0.0% 7.5% 1.00 0.00 0.00 30.00 303.00 30.00
+dmcache1 0.0% 7.5% 1.00 0.00 2.00 30.00 999.00 949.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 399.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 237.00 2.84K 3.23K
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 183.00 62.00 101.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 106.00 369.00 472.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 48.00 41.00 89.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 3.00 3.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 19.00 1.14K 1.16K
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 12.00 222.00 234.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+@ Fri Aug 1 14:35:40 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ops hit miss ops
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 7.00 0.00 7.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 2.00 0.00 2.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 50.00 62.00 112.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+@ Fri Aug 1 14:36:30 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ops hit miss ops
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 2.00 0.00 2.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 0.00 0.00 0.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 348.00 0.00 348.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 321.00 0.00 320.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 497.00 0.00 481.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 966.00 0.00 973.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 752.00 0.00 750.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 272.00 0.00 244.00 12.00 0.00 0.00
+dmcache1 0.0% 7.5% 261.00 0.00 233.00 11.00 0.00 0.00
+dmcache1 0.0% 7.5% 93.00 0.00 138.00 30.00 0.00 51.00
+dmcache1 0.0% 7.5% 736.00 0.00 717.00 4.00 0.00 6.00
+dmcache1 0.0% 7.5% 990.00 1.00 1.03K 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 401.00 0.00 298.00 21.00 0.00 21.00
+dmcache1 0.0% 7.5% 273.00 0.00 216.00 25.00 0.00 25.00
+dmcache1 0.0% 7.5% 484.00 0.00 644.00 11.00 0.00 11.00
+dmcache1 0.0% 7.5% 359.00 0.00 354.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 634.00 0.00 639.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 596.00 16.00 612.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 412.00 3.00 412.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 540.00 8.00 541.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 298.00 53.00 226.00 1.16K 0.00 482.00
+dmcache1 0.0% 7.5% 358.00 49.00 349.00 875.00 0.00 860.00
+dmcache1 0.0% 7.5% 507.00 32.00 732.00 72.00 0.00 764.00
+dmcache1 0.0% 7.5% 135.00 190.00 324.00 0.00 0.00 0.00
+@ Fri Aug 1 14:37:20 2014 (host slick)
+---device--- ---%used--- ---------reads--------- --------writes---------
+ meta cache hit miss ops hit miss ops
+dmcache1 0.0% 7.5% 18.00 276.00 293.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 60.00 172.00 233.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 48.00 265.00 313.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 123.00 245.00 368.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 115.00 304.00 419.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 90.00 162.00 245.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 47.00 274.00 329.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 134.00 206.00 336.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 22.00 130.00 154.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 6.00 80.00 88.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 7.00 84.00 91.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 1.00 179.00 180.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 14.00 145.00 157.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 180.00 211.00 390.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 120.00 185.00 307.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 276.00 36.00 313.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 335.00 9.00 345.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 149.00 73.00 207.00 0.00 0.00 0.00
+dmcache1 0.0% 7.5% 493.00 54.00 557.00 0.00 0.00 0.00
+dmcache1 0.0% 7.6% 308.00 68.00 373.00 0.00 0.00 0.00
+dmcache1 0.0% 7.6% 178.00 72.00 257.00 0.00 0.00 0.00
+dmcache1 0.0% 7.6% 248.00 62.00 303.00 0.00 0.00 0.00
+dmcache1 0.0% 7.6% 202.00 69.00 265.00 0.00 0.00 0.00
+dmcache1 0.0% 7.6% 197.00 75.00 272.00 12.00 0.00 6.00
+dmcache1 0.0% 7.6% 136.00 129.00 275.00 19.00 0.00 27.00
+dmcache1 0.0% 7.6% 134.00 33.00 137.00 26.00 0.00 24.00
+dmcache1 0.0% 7.6% 194.00 37.00 214.00 997.00 352.00 514.00
+dmcache1 0.0% 7.6% 171.00 44.00 265.00 1.23K 498.00 2.57K
+dmcache1 0.0% 7.6% 141.00 183.00 319.00 0.00 0.00 0.00
+
diff --git a/qa/830 b/qa/830
new file mode 100755
index 0000000..676798d
--- /dev/null
+++ b/qa/830
@@ -0,0 +1,30 @@
+#!/bin/sh
+# PCP QA Test No. 830
+# Exercise error handling in the pcp(1) script.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+export PMCD_CONNECT_TIMEOUT=1
+echo "Live mode failure:"
+pcp --host no.such.host
+
+echo "Archive mode failure:"
+pcp --archive /no/such/file
+
+# success, all done
+status=0
+exit
diff --git a/qa/830.out b/qa/830.out
new file mode 100644
index 0000000..589b3e6
--- /dev/null
+++ b/qa/830.out
@@ -0,0 +1,5 @@
+QA output created by 830
+Live mode failure:
+pcp: Cannot connect to PMCD on host "no.such.host": No route to host
+Archive mode failure:
+pcp: Cannot open archive "/no/such/file": No such file or directory
diff --git a/qa/831 b/qa/831
new file mode 100755
index 0000000..acc09c2
--- /dev/null
+++ b/qa/831
@@ -0,0 +1,45 @@
+#!/bin/sh
+# PCP QA Test No. 831
+# Exercising local socket connections and user credentials.
+#
+# Approach used is to enable tracing in the sample PMDA and
+# then access (any) sample metric. This should result in a
+# log message in pmdasample.log reflecting the testers user
+# and group identifiers.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.secure
+
+_get_libpcp_config
+$unix_domain_sockets || _notrun "No unix domain socket support available"
+$authentication || _notrun "No authentication support available"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd # sample.log is now sure to be clean
+
+echo "Enabling sample PMDA tracing"
+authdbg=`pmdbg -l | grep DBG_TRACE_AUTH | awk '{ print $2 }'`
+pmstore sample.control $authdbg
+
+echo "Verifying authentication for new client"
+pmprobe -v -h unix: sample.control
+filter_sample_log_credentials
+
+echo "Resetting sample PMDA tracing"
+pmstore -h unix: sample.control 0
+filter_sample_log_credentials
+
+# success, all done
+status=0
+exit
diff --git a/qa/831.out b/qa/831.out
new file mode 100644
index 0000000..116a958
--- /dev/null
+++ b/qa/831.out
@@ -0,0 +1,16 @@
+QA output created by 831
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Enabling sample PMDA tracing
+sample.control old value=0 new value=16777216
+Verifying authentication for new client
+sample.control 1 16777216
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N groupid=GID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N userid=UID
+Resetting sample PMDA tracing
+sample.control old value=16777216 new value=0
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N groupid=GID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N userid=UID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N groupid=GID
+[DATETIME] pmdasample(PID) Info: Attribute: ctx=N userid=UID
diff --git a/qa/832 b/qa/832
new file mode 100755
index 0000000..6c3580b
--- /dev/null
+++ b/qa/832
@@ -0,0 +1,91 @@
+#!/bin/sh
+# PCP QA Test No. 832
+# Exercise enforced-authentication modes for pmcd.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$unix_domain_sockets || _notrun "No unix domain socket support available"
+$authentication || _notrun "No authentication support available"
+for helper in pluginviewer; do
+ which $helper >/dev/null 2>&1 || _notrun "SASL $helper tool unavailable"
+done
+pluginviewer -s -m plain >/dev/null 2>&1
+test $? -eq 0 || _notrun 'No server support for plain authentication'
+
+export PCP_CONSOLE=none
+
+cleanup()
+{
+ # restore any modified pmcd configuration files
+ for file in $PCP_PMCDOPTIONS_PATH $PCP_SASLCONF_DIR/pmcd.conf
+ do
+ test -f $file.$seq || continue
+ $sudo rm -f $file
+ $sudo mv $file.$seq $file
+ done
+
+ $sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_stop | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+
+ rm -rf $tmp.*
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e '/Parameter Error/d'
+}
+
+# real QA test starts here
+$sudo mv $PCP_SASLCONF_DIR/pmcd.conf $PCP_SASLCONF_DIR/pmcd.conf.$seq
+echo 'mech_list: plain' > $tmp.sasl
+$sudo mv $tmp.sasl $PCP_SASLCONF_DIR/pmcd.conf
+
+$sudo mv $PCP_PMCDOPTIONS_PATH $PCP_PMCDOPTIONS_PATH.$seq
+cat <<End-Of-File >$tmp.options
+# Dummy lines added by PCP QA test $seq
+#
+-S
+End-Of-File
+$sudo mv $tmp.options $PCP_PMCDOPTIONS_PATH
+
+echo "Start pmcd with modified \$PCP_PMCDOPTIONS_PATH (pmcd.options)" | tee -a $seq.full
+$sudo $PCP_RC_DIR/pcp restart | tee -a $seq.full >$tmp.out
+_wait_for_pmcd 5 unix:
+grep -i 'starting pmcd' $tmp.out | sed -e "s/$$/MYPID/" | _filter_pcp_start
+
+# should now be running in enforced-credentials mode, check it out.
+# unix domain access should always succeed - no matter how binaries
+# were configured/built
+
+echo "testing secure mode access via unix domain socket (PASS)"
+pmstore -h unix: sample.write_me 1 # store PDU
+pmprobe -h unix: -v sample.write_me # fetch PDU
+pminfo -th unix: sample.write_me # text PDU
+pminfo -dh unix: sample.write_me # desc PDU
+echo
+
+echo "testing secure mode access attempt via inet socket (FAIL)"
+pmstore -h localhost sample.write_me 2 2>&1 | _filter
+pmprobe -h localhost -v sample.write_me 2>&1 | _filter
+pminfo -th localhost sample.write_me 2>&1 | _filter
+pminfo -dh localhost sample.write_me 2>&1 | _filter
+echo
+
+# success, all done
+status=0
+exit
diff --git a/qa/832.out b/qa/832.out
new file mode 100644
index 0000000..50d6af6
--- /dev/null
+++ b/qa/832.out
@@ -0,0 +1,21 @@
+QA output created by 832
+Start pmcd with modified $PCP_PMCDOPTIONS_PATH (pmcd.options)
+Starting pmcd ...
+testing secure mode access via unix domain socket (PASS)
+sample.write_me old value=2 new value=1
+sample.write_me 1 1
+sample.write_me [Modifiable, but otherwise constant.]
+
+sample.write_me
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count / sec
+
+testing secure mode access attempt via inet socket (FAIL)
+pmstore: Cannot connect to PMCD on host "localhost": Authentication - invalid parameter supplied
+pmprobe: Cannot connect to PMCD on host "localhost": Authentication - invalid parameter supplied
+pminfo: Cannot connect to PMCD on host "localhost": Authentication - invalid parameter supplied
+pminfo: Cannot connect to PMCD on host "localhost": Authentication - invalid parameter supplied
+
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/833 b/qa/833
new file mode 100755
index 0000000..71498da
--- /dev/null
+++ b/qa/833
@@ -0,0 +1,46 @@
+#!/bin/sh
+# PCP QA Test No. 833
+# Memory leak associated with PDU buffers remaining pinned after calling
+# pmDestroyContext().
+# See http://oss.sgi.com/bugzilla/show_bug.cgi?id=1057
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter()
+{
+ # free pdubuf[size]: 0xe61000[28672] 0xe5c000[17408]
+ sed \
+ -e '/free pdubuf/s/0x[0-9a-f]*\[[0-9]*\]/addr[size]/g'
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "=== pmNewContext ==="
+src/churnctx -z -s 100 -a src/bug1057 kernel.all.load hinv.ncpu disk.dev.total 2>&1 | _filter
+
+echo
+echo "=== pmDupContext ==="
+src/churnctx -d -z -s 100 -a src/bug1057 kernel.all.load hinv.ncpu disk.dev.total 2>&1 | _filter
+
+echo
+echo "=== host context, and pmNewContext ... just to be sure ==="
+src/churnctx -s 10 -t 0.2sec kernel.all.load hinv.ncpu sample.byte_ctr 2>&1 \
+| _filter \
+| sed -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/833.out b/qa/833.out
new file mode 100644
index 0000000..6687b19
--- /dev/null
+++ b/qa/833.out
@@ -0,0 +1,522 @@
+QA output created by 833
+=== pmNewContext ===
+Note: timezone set to local timezone of host "sourceware.org" from archive
+
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+Tue Jun 10 00:51:52 2014
+60.2.0: 0 values
+60.0.32: 0 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size]
+Memory growth (iteration 2): 135168
+Tue Jun 10 00:52:07 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:52:22 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:52:37 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:52:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+churnctx: pmFetch failed: End of PCP archive log
+
+=== pmDupContext ===
+Note: timezone set to local timezone of host "sourceware.org" from archive
+
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+Tue Jun 10 00:51:52 2014
+60.2.0: 0 values
+60.0.32: 0 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size]
+Memory growth (iteration 2): 135168
+Tue Jun 10 00:52:07 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:52:22 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:52:37 2014
+60.2.0: 0 values
+60.0.32: 1 values
+60.0.28: 0 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:52:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:53:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:54:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:55:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:56:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:57:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:58:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 00:59:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:07 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:22 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:37 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+Tue Jun 10 01:00:52 2014
+60.2.0: 3 values
+60.0.32: 1 values
+60.0.28: 10 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size] addr[size] addr[size] addr[size] addr[size] addr[size]
+churnctx: pmFetch failed: End of PCP archive log
+
+=== host context, and pmNewContext ... just to be sure ===
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
+__pmFindPDUBuf(DEBUG)
+ free pdubuf[size]: addr[size] addr[size]
+DATE
+60.2.0: 3 values
+60.0.32: 1 values
+29.0.81: 1 values
diff --git a/qa/834 b/qa/834
new file mode 100755
index 0000000..625e8ea
--- /dev/null
+++ b/qa/834
@@ -0,0 +1,507 @@
+#!/bin/sh
+# PCP QA Test No. 834
+# pmie ruleset tests
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<'End-of-File' >>$tmp.config
+// one predicte true
+// | all predicates false
+// | | all predicates unknown
+// | | | all predicates are true
+// | | | | some unknown and some false
+// | | | | | otherwise
+// | | | | | | unknown
+// V V V V V V V case
+// Y [1]
+// Y Y [4]
+// Y Y [7]
+// Y Y Y [10]
+// Y [2]
+// Y Y [3]
+// Y Y [8]
+// Y Y Y [11]
+// Y [5]
+// Y Y [9]
+// Y Y [6]
+// Y Y Y [12]
+// Y Y Y [12]
+// Y Y [13]
+// Y Y [14]
+// Y Y Y [15]
+//
+// [1] one predicate is true, only rules in the ruleset
+
+// 1 rule ruleset - predicate is true
+ruleset
+ sample.longlong.hundred >= 100 -> print "1-rule [1] as expected %v"
+;
+
+// 2 rule ruleset - first predicate is true
+ruleset
+ sample.ulong.ten == 10 -> print "2-rule [1a] as expected %v"
+else
+ sample.ulong.ten != 10 -> print "2-rule [1a] BOTCH unexpected value of %v not 10"
+;
+
+// 2 rule ruleset - second predicate is true
+ruleset
+ sample.ulonglong.hundred != 100 -> print "2-rule [1b] BOTCH unexpected value of %v not 100"
+else
+ sample.ulonglong.hundred == 100 -> print "2-rule [1b] as expected %v"
+;
+
+// 3 rule ruleset - first predicate is true
+ruleset
+ sample.long.million == 1000000 -> print "3-rule [1a] as expected %v"
+else
+ sample.long.million < 1000000 -> print "3-rule [1a] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [1a] BOTCH larger than expected value of %v not 1000000"
+;
+
+// 3 rule ruleset - second predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [1b] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 999999 && sample.long.million < 1000001 -> print "3-rule [1b] as expected %v"
+else
+ sample.long.million > 1000000 -> print "3-rule [1b] BOTCH larger than expected value of %v not 1000000"
+;
+
+// 3 rule ruleset - third predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [1c] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [1c] BOTCH larger than expected value of %v not 1000000"
+else
+ sample.long.million < 999999 || sample.long.million >= 1000000 -> print "3-rule [1c] as expected %v"
+;
+
+// [2] all predicates are false, only rules in the ruleset
+
+// 1 rule ruleset - predicate is false
+ruleset
+ sample.long.ten < 10 -> print "1-rule [2] BOTCH smaller than expected value of %v not 10"
+;
+
+// 2 rule ruleset - all predicates are false
+ruleset
+ sample.ulong.ten > 10 -> print "2-rule [2] BOTCH %v > 10?"
+else
+ sample.ulong.ten != 10 -> print "2-rule [2] BOTCH %v != 10?"
+;
+
+// 3 rule ruleset - all predicates are false
+ruleset
+ sample.long.million > 1000000 -> print "3-rule [2] BOTCH %v > 1000000?"
+else
+ sample.long.million < 1000000 -> print "3-rule [2] BOTCH %v < 1000000?"
+else
+ sample.long.million != 1000000 -> print "3-rule [2] BOTCH %v != 1000000?"
+;
+
+// [3] no predicate is true, otherwise clause in the ruleset
+
+// 1 rule ruleset - predicate is false, otherwise clause
+ruleset
+ sample.long.ten < 10 -> print "1-rule [3] BOTCH smaller than expected value of %v not 10"
+otherwise -> print "1-rule [3] otherwise as expected"
+;
+
+// 2 rule ruleset - all predicates are false, otherwise clause
+ruleset
+ sample.ulong.ten > 10 -> print "2-rule [3] BOTCH %v > 10?"
+else
+ sample.ulong.ten != 10 -> print "2-rule [3] BOTCH %v != 10?"
+otherwise -> print "2-rule [3] otherwise as expected"
+;
+
+// 3 rule ruleset - all predicates are false, otherwise clause
+ruleset
+ sample.long.million > 1000000 -> print "3-rule [3] BOTCH %v > 1000000?"
+else
+ sample.long.million < 1000000 -> print "3-rule [3] BOTCH %v < 1000000?"
+else
+ sample.long.million != 1000000 -> print "3-rule [3] BOTCH %v != 1000000?"
+otherwise -> print "3-rule [3] otherwise as expected"
+;
+
+// [4] one predicate is true, rules and otherwise in the ruleset
+
+// 1 rule ruleset - predicate is true
+ruleset
+ sample.longlong.hundred >= 100 -> print "1-rule [4] as expected %v"
+otherwise -> print "1-rule [4] BOTCH otherwise not expected"
+;
+
+// 2 rule ruleset - first predicate is true
+ruleset
+ sample.ulong.ten == 10 -> print "2-rule [4a] as expected %v"
+else
+ sample.ulong.ten != 10 -> print "2-rule [4a] BOTCH unexpected value of %v not 10"
+otherwise -> print "2-rule [4a] BOTCH otherwise not expected"
+;
+
+// 2 rule ruleset - second predicate is true
+ruleset
+ sample.ulonglong.hundred != 100 -> print "2-rule [4b] BOTCH unexpected value of %v not 100"
+else
+ sample.ulonglong.hundred == 100 -> print "2-rule [4b] as expected %v"
+otherwise -> print "2-rule [4b] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - first predicate is true
+ruleset
+ sample.long.million == 1000000 -> print "3-rule [4a] as expected %v"
+else
+ sample.long.million < 1000000 -> print "3-rule [4a] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [4a] BOTCH larger than expected value of %v not 1000000"
+otherwise -> print "3-rule [4a] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - second predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [4b] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 999999 && sample.long.million < 1000001 -> print "3-rule [4b] as expected %v"
+else
+ sample.long.million > 1000000 -> print "3-rule [4b] BOTCH larger than expected value of %v not 1000000"
+otherwise -> print "3-rule [4b] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - third predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [4c] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [4c] BOTCH larger than expected value of %v not 1000000"
+else
+ sample.long.million < 999999 || sample.long.million >= 1000000 -> print "3-rule [4c] as expected %v"
+otherwise -> print "3-rule [4c] BOTCH otherwise not expected"
+;
+
+// [5] all predicates are unknown, only rules in the ruleset
+
+// 1 rule ruleset - predicate is unknown
+ruleset
+ sample.bad.novalues < 10 -> print "1-rule [5] BOTCH smaller than expected value of %v not 10"
+;
+
+// 2 rule ruleset - all predicates are unknown
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [5] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [5] BOTCH %v != 10?"
+;
+
+// 3 rule ruleset - all predicates are unknown
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [5] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [5] BOTCH %v != 10?"
+else
+ count_inst (sample.noinst != 10) > 0 -> print "2-rule [5] BOTCH %v != 10?"
+;
+
+// [6] all predicates are unknown, unknown clause in the ruleset
+
+// 1 rule ruleset - predicate is unknown, unknown clause
+ruleset
+ sample.bad.novalues < 10 -> print "1-rule [6] BOTCH smaller than expected value of %v not 10"
+unknown -> print "1-rule [6] unknown as expected"
+;
+
+// 2 rule ruleset - all predicates are unknown, unknown clause
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [6] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [6] BOTCH %v != 10?"
+unknown -> print "2-rule [6] unknown as expected"
+;
+
+// 3 rule ruleset - all predicates are unknown, unknown clause
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [6] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [6] BOTCH %v != 10?"
+else
+ count_inst (sample.noinst != 10) > 0 -> print "2-rule [6] BOTCH %v != 10?"
+unknown -> print "3-rule [6] unknown as expected"
+;
+
+// [7] one predicate is true, rules and unknown in the ruleset
+
+// 1 rule ruleset - predicate is true
+ruleset
+ sample.longlong.hundred >= 100 -> print "1-rule [7] as expected %v"
+unknown -> print "1-rule [7] BOTCH unknown not expected"
+;
+
+// 2 rule ruleset - first predicate is true
+ruleset
+ sample.ulong.ten == 10 -> print "2-rule [7a] as expected %v"
+else
+ sample.ulong.ten != 10 -> print "2-rule [7a] BOTCH unexpected value of %v not 10"
+unknown -> print "2-rule [7a] BOTCH unknown not expected"
+;
+
+// 2 rule ruleset - second predicate is true
+ruleset
+ sample.ulonglong.hundred != 100 -> print "2-rule [7b] BOTCH unexpected value of %v not 100"
+else
+ sample.ulonglong.hundred == 100 -> print "2-rule [7b] as expected %v"
+unknown -> print "2-rule [7a] BOTCH unknown not expected"
+;
+
+// 3 rule ruleset - first predicate is true
+ruleset
+ sample.long.million == 1000000 -> print "3-rule [7a] as expected %v"
+else
+ sample.long.million < 1000000 -> print "3-rule [7a] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [7a] BOTCH larger than expected value of %v not 1000000"
+unknown -> print "3-rule [7a] BOTCH unknown not expected"
+;
+
+// 3 rule ruleset - second predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [7b] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 999999 && sample.long.million < 1000001 -> print "3-rule [7b] as expected %v"
+else
+ sample.long.million > 1000000 -> print "3-rule [7b] BOTCH larger than expected value of %v not 1000000"
+unknown -> print "3-rule [7b] BOTCH unknown not expected"
+;
+
+// 3 rule ruleset - third predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [7c] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [7c] BOTCH larger than expected value of %v not 1000000"
+else
+ sample.long.million < 999999 || sample.long.million >= 1000000 -> print "3-rule [7c] as expected %v"
+unknown -> print "3-rule [7c] BOTCH unknown not expected"
+;
+
+// [8] no predicate is true, unknown clause in the ruleset
+
+// 1 rule ruleset - predicate is false, unknown clause
+ruleset
+ sample.long.ten < 10 -> print "1-rule [8] BOTCH smaller than expected value of %v not 10"
+unknown -> print "1-rule [8] BOTCH unknown not expected"
+;
+
+// 2 rule ruleset - all predicates are false, unknown clause
+ruleset
+ sample.ulong.ten > 10 -> print "2-rule [8] BOTCH %v > 10?"
+else
+ sample.ulong.ten != 10 -> print "2-rule [8] BOTCH %v != 10?"
+unknown -> print "2-rule [8] BOTCH unknown not expected"
+;
+
+// 3 rule ruleset - all predicates are false, unknown clause
+ruleset
+ sample.long.million > 1000000 -> print "3-rule [8] BOTCH %v > 1000000?"
+else
+ sample.long.million < 1000000 -> print "3-rule [8] BOTCH %v < 1000000?"
+else
+ sample.long.million != 1000000 -> print "3-rule [8] BOTCH %v != 1000000?"
+unknown -> print "3-rule [8] BOTCH unknown not expected"
+;
+
+// [9] all predicates are unknown, otherwise clause in the ruleset
+
+// 1 rule ruleset - predicate is unknown, otherwise clause
+ruleset
+ sample.bad.novalues < 10 -> print "1-rule [9] BOTCH smaller than expected value of %v not 10"
+otherwise -> print "1-rule [9] otherwise as expected"
+;
+
+// 2 rule ruleset - all predicates are unknown, otherwise clause
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [9] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [9] BOTCH %v != 10?"
+otherwise -> print "2-rule [9] otherwise as expected"
+;
+
+// 3 rule ruleset - all predicates are unknown, otherwise clause
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [9] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [9] BOTCH %v != 10?"
+else
+ count_inst (sample.noinst != 10) > 0 -> print "2-rule [9] BOTCH %v != 10?"
+otherwise -> print "3-rule [9] otherwise as expected"
+;
+
+// [10] one predicate is true, rules and otherwise and unknown in the ruleset
+
+// 1 rule ruleset - predicate is true
+ruleset
+ sample.longlong.hundred >= 100 -> print "1-rule [10] as expected %v"
+unknown -> print "1-rule [10] BOTCH unknown not expected"
+otherwise -> print "1-rule [10] BOTCH otherwise not expected"
+;
+
+// 2 rule ruleset - first predicate is true
+ruleset
+ sample.ulong.ten == 10 -> print "2-rule [10a] as expected %v"
+else
+ sample.ulong.ten != 10 -> print "2-rule [10a] BOTCH unexpected value of %v not 10"
+unknown -> print "2-rule [10a] BOTCH unknown not expected"
+otherwise -> print "2-rule [10a] BOTCH otherwise not expected"
+;
+
+// 2 rule ruleset - second predicate is true
+ruleset
+ sample.ulonglong.hundred != 100 -> print "2-rule [10b] BOTCH unexpected value of %v not 100"
+else
+ sample.ulonglong.hundred == 100 -> print "2-rule [10b] as expected %v"
+unknown -> print "2-rule [10a] BOTCH unknown not expected"
+otherwise -> print "2-rule [10b] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - first predicate is true
+ruleset
+ sample.long.million == 1000000 -> print "3-rule [10a] as expected %v"
+else
+ sample.long.million < 1000000 -> print "3-rule [10a] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [10a] BOTCH larger than expected value of %v not 1000000"
+unknown -> print "3-rule [10a] BOTCH unknown not expected"
+otherwise -> print "3-rule [10a] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - second predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [10b] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 999999 && sample.long.million < 1000001 -> print "3-rule [10b] as expected %v"
+else
+ sample.long.million > 1000000 -> print "3-rule [10b] BOTCH larger than expected value of %v not 1000000"
+unknown -> print "3-rule [10b] BOTCH unknown not expected"
+otherwise -> print "3-rule [10b] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - third predicate is true
+ruleset
+ sample.long.million < 1000000 -> print "3-rule [10c] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.million > 1000000 -> print "3-rule [10c] BOTCH larger than expected value of %v not 1000000"
+else
+ sample.long.million < 999999 || sample.long.million >= 1000000 -> print "3-rule [10c] as expected %v"
+unknown -> print "3-rule [10c] BOTCH unknown not expected"
+otherwise -> print "3-rule [10c] BOTCH otherwise not expected"
+;
+
+// [11] no predicate is true, unknown and otherwise clause in the ruleset
+
+// 1 rule ruleset - predicate is false, unknown and otherwise clause
+ruleset
+ sample.long.ten < 10 -> print "1-rule [11] BOTCH smaller than expected value of %v not 10"
+unknown -> print "1-rule [11] BOTCH unknown not expected"
+otherwise -> print "1-rule [11] otherwise as expected"
+;
+
+// 2 rule ruleset - all predicates are false, unknown and otherwise clause
+ruleset
+ sample.ulong.ten > 10 -> print "2-rule [11] BOTCH %v > 10?"
+else
+ sample.ulong.ten != 10 -> print "2-rule [11] BOTCH %v != 10?"
+unknown -> print "2-rule [11] BOTCH unknown not expected"
+otherwise -> print "2-rule [11] otherwise as expected"
+;
+
+// 3 rule ruleset - all predicates are false, unknown and otherwise clause
+ruleset
+ sample.long.million > 1000000 -> print "3-rule [11] BOTCH %v > 1000000?"
+else
+ sample.long.million < 1000000 -> print "3-rule [11] BOTCH %v < 1000000?"
+else
+ sample.long.million != 1000000 -> print "3-rule [11] BOTCH %v != 1000000?"
+unknown -> print "3-rule [11] BOTCH unknown not expected"
+otherwise -> print "3-rule [11] otherwise as expected"
+;
+
+// [12] all predicates are unknown, unknown and otherwise clause in the ruleset
+
+// 1 rule ruleset - predicate is unknown, unknown and otherwise clause
+ruleset
+ sample.bad.novalues < 10 -> print "1-rule [12] BOTCH smaller than expected value of %v not 10"
+unknown -> print "1-rule [12] unknown as expected"
+otherwise -> print "1-rule [12] BOTCH otherwise not expected"
+;
+
+// 2 rule ruleset - all predicates are unknown, unknown and otherwise clause
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [12] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [12] BOTCH %v != 10?"
+unknown -> print "2-rule [12] unknown as expected"
+otherwise -> print "2-rule [12] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - all predicates are unknown, unknown and otherwise clause
+ruleset
+ sample.bad.novalues > 10 -> print "2-rule [12] BOTCH %v > 10?"
+else
+ some_inst (sample.noinst != 10) -> print "2-rule [12] BOTCH %v != 10?"
+else
+ count_inst (sample.noinst != 10) > 0 -> print "2-rule [12] BOTCH %v != 10?"
+unknown -> print "3-rule [12] unknown as expected"
+otherwise -> print "3-rule [12] BOTCH otherwise not expected"
+;
+
+// [13] all predicates true, rules and otherwise and unknown in the ruleset
+
+// 1 rule ruleset - predicate is true
+ruleset
+ sample.longlong.hundred >= 100 -> print "1-rule [13] as expected %v"
+unknown -> print "1-rule [13] BOTCH unknown not expected"
+otherwise -> print "1-rule [13] BOTCH otherwise not expected"
+;
+
+// 2 rule ruleset - both predicates are true
+ruleset
+ sample.ulong.ten == 10 -> print "2-rule [13] as expected %v"
+else
+ sample.ulong.hundred == 100 -> print "2-rule [13] BOTCH unexpected value of %v not 10"
+unknown -> print "2-rule [13] BOTCH unknown not expected"
+otherwise -> print "2-rule [13] BOTCH otherwise not expected"
+;
+
+// 3 rule ruleset - all predicates are true
+ruleset
+ sample.long.million == 1000000 -> print "3-rule [13] as expected %v"
+else
+ sample.long.ten == 10 -> print "3-rule [13] BOTCH smaller than expected value of %v not 1000000"
+else
+ sample.long.one == 1 -> print "3-rule [13] BOTCH larger than expected value of %v not 1000000"
+unknown -> print "3-rule [13] BOTCH unknown not expected"
+otherwise -> print "3-rule [13] BOTCH otherwise not expected"
+;
+
+End-of-File
+
+# real QA test starts here
+pmie -t 1sec -T 3.5sec -c $tmp.config 2>&1 | _filter_pmie_log
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/834.out b/qa/834.out
new file mode 100644
index 0000000..02b7ced
--- /dev/null
+++ b/qa/834.out
@@ -0,0 +1,170 @@
+QA output created by 834
+DATE: 1-rule [1] as expected 100
+DATE: 2-rule [1a] as expected 10
+DATE: 2-rule [1b] as expected 100
+DATE: 3-rule [1a] as expected 1000000
+DATE: 3-rule [1b] as expected 1000000
+DATE: 3-rule [1c] as expected 1000000
+DATE: 1-rule [3] otherwise as expected
+DATE: 2-rule [3] otherwise as expected
+DATE: 3-rule [3] otherwise as expected
+DATE: 1-rule [4] as expected 100
+DATE: 2-rule [4a] as expected 10
+DATE: 2-rule [4b] as expected 100
+DATE: 3-rule [4a] as expected 1000000
+DATE: 3-rule [4b] as expected 1000000
+DATE: 3-rule [4c] as expected 1000000
+DATE: 1-rule [6] unknown as expected
+DATE: 2-rule [6] unknown as expected
+DATE: 3-rule [6] unknown as expected
+DATE: 1-rule [7] as expected 100
+DATE: 2-rule [7a] as expected 10
+DATE: 2-rule [7b] as expected 100
+DATE: 3-rule [7a] as expected 1000000
+DATE: 3-rule [7b] as expected 1000000
+DATE: 3-rule [7c] as expected 1000000
+DATE: 1-rule [9] otherwise as expected
+DATE: 2-rule [9] otherwise as expected
+DATE: 3-rule [9] otherwise as expected
+DATE: 1-rule [10] as expected 100
+DATE: 2-rule [10a] as expected 10
+DATE: 2-rule [10b] as expected 100
+DATE: 3-rule [10a] as expected 1000000
+DATE: 3-rule [10b] as expected 1000000
+DATE: 3-rule [10c] as expected 1000000
+DATE: 1-rule [11] otherwise as expected
+DATE: 2-rule [11] otherwise as expected
+DATE: 3-rule [11] otherwise as expected
+DATE: 1-rule [12] unknown as expected
+DATE: 2-rule [12] unknown as expected
+DATE: 3-rule [12] unknown as expected
+DATE: 1-rule [13] as expected 100
+DATE: 2-rule [13] as expected 10
+DATE: 3-rule [13] as expected 1000000
+DATE: 1-rule [1] as expected 100
+DATE: 2-rule [1a] as expected 10
+DATE: 2-rule [1b] as expected 100
+DATE: 3-rule [1a] as expected 1000000
+DATE: 3-rule [1b] as expected 1000000
+DATE: 3-rule [1c] as expected 1000000
+DATE: 1-rule [3] otherwise as expected
+DATE: 2-rule [3] otherwise as expected
+DATE: 3-rule [3] otherwise as expected
+DATE: 1-rule [4] as expected 100
+DATE: 2-rule [4a] as expected 10
+DATE: 2-rule [4b] as expected 100
+DATE: 3-rule [4a] as expected 1000000
+DATE: 3-rule [4b] as expected 1000000
+DATE: 3-rule [4c] as expected 1000000
+DATE: 1-rule [6] unknown as expected
+DATE: 2-rule [6] unknown as expected
+DATE: 3-rule [6] unknown as expected
+DATE: 1-rule [7] as expected 100
+DATE: 2-rule [7a] as expected 10
+DATE: 2-rule [7b] as expected 100
+DATE: 3-rule [7a] as expected 1000000
+DATE: 3-rule [7b] as expected 1000000
+DATE: 3-rule [7c] as expected 1000000
+DATE: 1-rule [9] otherwise as expected
+DATE: 2-rule [9] otherwise as expected
+DATE: 3-rule [9] otherwise as expected
+DATE: 1-rule [10] as expected 100
+DATE: 2-rule [10a] as expected 10
+DATE: 2-rule [10b] as expected 100
+DATE: 3-rule [10a] as expected 1000000
+DATE: 3-rule [10b] as expected 1000000
+DATE: 3-rule [10c] as expected 1000000
+DATE: 1-rule [11] otherwise as expected
+DATE: 2-rule [11] otherwise as expected
+DATE: 3-rule [11] otherwise as expected
+DATE: 1-rule [12] unknown as expected
+DATE: 2-rule [12] unknown as expected
+DATE: 3-rule [12] unknown as expected
+DATE: 1-rule [13] as expected 100
+DATE: 2-rule [13] as expected 10
+DATE: 3-rule [13] as expected 1000000
+DATE: 1-rule [1] as expected 100
+DATE: 2-rule [1a] as expected 10
+DATE: 2-rule [1b] as expected 100
+DATE: 3-rule [1a] as expected 1000000
+DATE: 3-rule [1b] as expected 1000000
+DATE: 3-rule [1c] as expected 1000000
+DATE: 1-rule [3] otherwise as expected
+DATE: 2-rule [3] otherwise as expected
+DATE: 3-rule [3] otherwise as expected
+DATE: 1-rule [4] as expected 100
+DATE: 2-rule [4a] as expected 10
+DATE: 2-rule [4b] as expected 100
+DATE: 3-rule [4a] as expected 1000000
+DATE: 3-rule [4b] as expected 1000000
+DATE: 3-rule [4c] as expected 1000000
+DATE: 1-rule [6] unknown as expected
+DATE: 2-rule [6] unknown as expected
+DATE: 3-rule [6] unknown as expected
+DATE: 1-rule [7] as expected 100
+DATE: 2-rule [7a] as expected 10
+DATE: 2-rule [7b] as expected 100
+DATE: 3-rule [7a] as expected 1000000
+DATE: 3-rule [7b] as expected 1000000
+DATE: 3-rule [7c] as expected 1000000
+DATE: 1-rule [9] otherwise as expected
+DATE: 2-rule [9] otherwise as expected
+DATE: 3-rule [9] otherwise as expected
+DATE: 1-rule [10] as expected 100
+DATE: 2-rule [10a] as expected 10
+DATE: 2-rule [10b] as expected 100
+DATE: 3-rule [10a] as expected 1000000
+DATE: 3-rule [10b] as expected 1000000
+DATE: 3-rule [10c] as expected 1000000
+DATE: 1-rule [11] otherwise as expected
+DATE: 2-rule [11] otherwise as expected
+DATE: 3-rule [11] otherwise as expected
+DATE: 1-rule [12] unknown as expected
+DATE: 2-rule [12] unknown as expected
+DATE: 3-rule [12] unknown as expected
+DATE: 1-rule [13] as expected 100
+DATE: 2-rule [13] as expected 10
+DATE: 3-rule [13] as expected 1000000
+DATE: 1-rule [1] as expected 100
+DATE: 2-rule [1a] as expected 10
+DATE: 2-rule [1b] as expected 100
+DATE: 3-rule [1a] as expected 1000000
+DATE: 3-rule [1b] as expected 1000000
+DATE: 3-rule [1c] as expected 1000000
+DATE: 1-rule [3] otherwise as expected
+DATE: 2-rule [3] otherwise as expected
+DATE: 3-rule [3] otherwise as expected
+DATE: 1-rule [4] as expected 100
+DATE: 2-rule [4a] as expected 10
+DATE: 2-rule [4b] as expected 100
+DATE: 3-rule [4a] as expected 1000000
+DATE: 3-rule [4b] as expected 1000000
+DATE: 3-rule [4c] as expected 1000000
+DATE: 1-rule [6] unknown as expected
+DATE: 2-rule [6] unknown as expected
+DATE: 3-rule [6] unknown as expected
+DATE: 1-rule [7] as expected 100
+DATE: 2-rule [7a] as expected 10
+DATE: 2-rule [7b] as expected 100
+DATE: 3-rule [7a] as expected 1000000
+DATE: 3-rule [7b] as expected 1000000
+DATE: 3-rule [7c] as expected 1000000
+DATE: 1-rule [9] otherwise as expected
+DATE: 2-rule [9] otherwise as expected
+DATE: 3-rule [9] otherwise as expected
+DATE: 1-rule [10] as expected 100
+DATE: 2-rule [10a] as expected 10
+DATE: 2-rule [10b] as expected 100
+DATE: 3-rule [10a] as expected 1000000
+DATE: 3-rule [10b] as expected 1000000
+DATE: 3-rule [10c] as expected 1000000
+DATE: 1-rule [11] otherwise as expected
+DATE: 2-rule [11] otherwise as expected
+DATE: 3-rule [11] otherwise as expected
+DATE: 1-rule [12] unknown as expected
+DATE: 2-rule [12] unknown as expected
+DATE: 3-rule [12] unknown as expected
+DATE: 1-rule [13] as expected 100
+DATE: 2-rule [13] as expected 10
+DATE: 3-rule [13] as expected 1000000
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
diff --git a/qa/835 b/qa/835
new file mode 100755
index 0000000..c943131
--- /dev/null
+++ b/qa/835
@@ -0,0 +1,137 @@
+#!/bin/sh
+# PCP QA Test No. 835
+# Exercise the memcache PMDA - install, remove and values.
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+# Copyright (c) 2008 Aconex. All Rights Reserved. (based on qa/348)
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+port=11211
+echo stats | $PCP_BINADM_DIR/telnet-probe localhost $port || \
+ _notrun "Noones home on the default memcached port $port"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+
+pmdamemcache_remove()
+{
+ echo
+ echo "=== remove memcache agent ==="
+ $sudo ./Remove >$tmp.out 2>&1
+ _filter_pmda_remove <$tmp.out
+}
+
+pmdamemcache_install()
+{
+ # start from known starting points
+ cd $PCP_PMDAS_DIR/memcache
+ $sudo ./Remove >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmcd stop
+
+ cat <<EOF >$tmp.config
+$memcache_delay = 1;
+@memcache_instances = ( 0 => '127.0.0.1:11211' );
+EOF
+ echo "pmdamemcache config:" >> $here/$seq.full
+ cat $tmp.config >> $here/$seq.full
+
+ [ -f $PCP_PMDAS_DIR/memcache/memcache.conf ] && \
+ $sudo cp $PCP_PMDAS_DIR/memcache/memcache.conf $tmp.backup
+ $sudo cp $tmp.config $PCP_PMDAS_DIR/memcache/memcache.conf
+
+ echo
+ echo "=== memcache agent installation ==="
+ $sudo ./Install </dev/null >$tmp.out 2>&1
+ # Check metrics have appeared ... X metrics and Y values
+ _filter_pmda_install <$tmp.out \
+ | sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+ | $PCP_AWK_PROG '
+/Check memcache metrics have appeared/ { if ($7 >= 16 && $7 <= 50) $7 = "X"
+ if ($10 >= 16 && $10 <= 50) $10 = "Y"
+ }
+ { print }'
+}
+
+pmdamemcache_cleanup()
+{
+ if [ -f $tmp.backup ]; then
+ $sudo cp $tmp.backup $PCP_PMDAS_DIR/memcache/memcache.conf
+ $sudo rm $tmp.backup
+ else
+ $sudo rm -f $PCP_PMDAS_DIR/memcache/memcache.conf
+ fi
+ _cleanup_pmda memcache
+}
+
+_prepare_pmda memcache
+trap "cd $here; rm -fr $tmp.*; exit \$status" 0 1 2 3 15
+trap "pmdamemcache_cleanup; exit \$status" 0 1 2 3 15
+
+# make pmprobe output comparable to memcachestats
+rewrite_memcache_metric_names()
+{
+ sed \
+ -e 's/^memcache.//g' \
+ -e 's/^gets /cmd_get /g' \
+ -e 's/^sets /cmd_set /g' \
+ -e 's/^hits /get_hits /g' \
+ -e 's/^misses /get_misses /g' \
+ -e 's/^current_items/curr_items/g' \
+ -e 's/^current_connections/curr_connections/g' \
+ #end#
+}
+
+# real QA test starts here
+pmdamemcache_install
+
+echo
+echo "=== extract metric values ==="
+pmprobe -v memcache \
+| rewrite_memcache_metric_names \
+| LC_COLLATE=POSIX sort >$tmp.probe
+echo "from pmprobe ..." >>$here/$seq.full
+
+$here/src/memcachestats.pl \
+| sed -e 's/ / 1 /' \
+| LC_COLLATE=POSIX sort >$tmp.values
+echo "from src/memcachestats.pl ..." >>$here/$seq.full
+
+cat $tmp.values >>$here/$seq.full
+LC_COLLATE=POSIX join $tmp.probe $tmp.values >$tmp.all
+echo >>$here/$seq.full
+cat $tmp.all >>$here/$seq.full
+
+echo
+echo "=== check values ==="
+cat $tmp.all \
+| while read metric n1 vpcp n2 vmemcache
+do
+ if [ "$n1" = 1 -a "$n2" = 1 ]
+ then
+ case $metric
+ in
+ total_connections)
+ _within_tolerance $metric $vpcp $vmemcache 5 -v
+ ;;
+ *)
+ _within_tolerance $metric $vpcp $vmemcache 10% -v
+ ;;
+ esac
+ else
+ echo "$metric: number of values not 1 as expected: pcp $n1 / memcache $n2"
+ fi
+done | tee -a $here/$seq.full
+
+pmdamemcache_remove
+status=0
+exit
diff --git a/qa/835.out b/qa/835.out
new file mode 100644
index 0000000..8f1cc45
--- /dev/null
+++ b/qa/835.out
@@ -0,0 +1,49 @@
+QA output created by 835
+Waiting for pmcd to terminate ...
+
+=== memcache agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "memcache" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Starting pmcd ...
+Starting pmlogger ...
+Check memcache metrics have appeared ... X metrics and Y values
+
+=== extract metric values ===
+
+=== check values ===
+active_slabs is in range
+bytes is in range
+bytes_read is in range
+bytes_written is in range
+cmd_get is in range
+cmd_set is in range
+connection_structures is in range
+curr_connections is in range
+curr_items is in range
+get_hits is in range
+get_misses is in range
+limit_maxbytes is in range
+pid is in range
+total_connections is in range
+total_items is in range
+total_malloced is in range
+uptime is in range
+
+=== remove memcache agent ===
+Culling the Performance Metrics Name Space ...
+memcache ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check memcache metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/836 b/qa/836
new file mode 100755
index 0000000..caacaf5
--- /dev/null
+++ b/qa/836
@@ -0,0 +1,47 @@
+#!/bin/sh
+# PCP QA Test No. 836
+# Exercise pmdiff(1) script functionality.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed -e "s,$here,PATH,g"
+}
+
+# real QA test starts here
+echo "== simple comparison, defaults"
+pmdiff -z $here/src/section-a $here/src/section-b | _filter
+echo
+
+echo "== change the comparison ratio"
+pmdiff -z -q 1.5 $here/src/section-a $here/src/section-b | _filter
+echo
+
+echo "== change the report precision"
+pmdiff -z -p 5 $here/src/section-a $here/src/section-b | _filter
+echo
+
+echo "== skip the excluded metrics report"
+pmdiff -z --skip-excluded $here/src/section-a $here/src/section-b | _filter
+echo
+
+echo "== skip the missing metrics report"
+pmdiff -z --skip-missing $here/src/section-a $here/src/section-c | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/836.out b/qa/836.out
new file mode 100644
index 0000000..b2ffaae
--- /dev/null
+++ b/qa/836.out
@@ -0,0 +1,84 @@
+QA output created by 836
+== simple comparison, defaults
+Directory: PATH
+Excluded metrics:
+ ^pmcd.pmlogger.port
+
+Ratio Threshold: > 2.00 or < 0.500
+ section-a section-b Ratio Metric-Instance
+ start-end start-end
+ 0.400 1.200 3.00 disk.dev.total_bytes ["sdb"]
+ 0.000 0.116 |+| disk.dev.read_bytes ["sda"]
+ 0.000 0.116 |+| disk.all.read_bytes
+ 0.000 0.029 |+| disk.dev.read ["sda"]
+ 0.000 0.029 |+| disk.all.read
+
+== change the comparison ratio
+Directory: PATH
+Excluded metrics:
+ ^pmcd.pmlogger.port
+
+Ratio Threshold: > 1.50 or < 0.667
+ section-a section-b Ratio Metric-Instance
+ start-end start-end
+ 0.400 1.200 3.00 disk.dev.total_bytes ["sdb"]
+ 0.100 0.200 2.00 disk.dev.total ["sdb"]
+ 0.000 0.116 |+| disk.dev.read_bytes ["sda"]
+ 0.000 0.116 |+| disk.all.read_bytes
+ 0.000 0.029 |+| disk.dev.read ["sda"]
+ 0.000 0.029 |+| disk.all.read
+
+== change the report precision
+Directory: PATH
+Excluded metrics:
+ ^pmcd.pmlogger.port
+
+Ratio Threshold: > 2.00 or < 0.500
+ section-a section-b Ratio Metric-Instance
+ start-end start-end
+ 0.39996 1.20002 3.00 disk.dev.total_bytes ["sdb"]
+ 0.09999 0.20000 2.00 disk.dev.total ["sdb"]
+ 0.00000 0.11594 |+| disk.dev.read_bytes ["sda"]
+ 0.00000 0.11594 |+| disk.all.read_bytes
+ 0.00000 0.02899 |+| disk.dev.read ["sda"]
+ 0.00000 0.02899 |+| disk.all.read
+
+== skip the excluded metrics report
+Directory: PATH
+
+Ratio Threshold: > 2.00 or < 0.500
+ section-a section-b Ratio Metric-Instance
+ start-end start-end
+ 0.400 1.200 3.00 disk.dev.total_bytes ["sdb"]
+ 0.000 0.116 |+| disk.dev.read_bytes ["sda"]
+ 0.000 0.116 |+| disk.all.read_bytes
+ 0.000 0.029 |+| disk.dev.read ["sda"]
+ 0.000 0.029 |+| disk.all.read
+
+== skip the missing metrics report
+Directory: PATH
+Excluded metrics:
+ ^pmcd.pmlogger.port
+
+Ratio Threshold: > 2.00 or < 0.500
+ section-a section-c Ratio Metric-Instance
+ start-end start-end
+ 93712416 0.000 |-| filesys.used ["/dev/sda9"]
+ 9002 0.000 |-| filesys.usedfiles ["/dev/sda9"]
+ 823328 0.000 |-| filesys.used ["/dev/sda1"]
+ 563588 0.000 |-| filesys.used ["/dev/sdb1"]
+ 4111028 0.000 |-| filesys.used ["/dev/sda5"]
+ 3574320 0.000 |-| filesys.used ["/dev/sdb5"]
+ 28.00 0.000 |-| filesys.usedfiles ["/dev/sdb9"]
+ 22320376 0.000 |-| filesys.used ["/dev/sda8"]
+ 209037 0.000 |-| filesys.usedfiles ["/dev/sdb5"]
+ 208878 0.000 |-| filesys.usedfiles ["/dev/sda5"]
+ 191700868 0.000 |-| filesys.used ["/dev/sdb9"]
+ 17727 0.000 |-| filesys.usedfiles ["/dev/sda1"]
+ 15087 0.000 |-| filesys.usedfiles ["/dev/sdb1"]
+ 13325 0.000 |-| filesys.usedfiles ["/dev/sda6"]
+ 13139 0.000 |-| filesys.usedfiles ["/dev/sdb6"]
+ 1244611 0.000 |-| filesys.used ["/dev/sdb6"]
+ 1163304 0.000 |-| filesys.used ["/dev/sda6"]
+ 115113 0.000 |-| filesys.usedfiles ["/dev/sda8"]
+ 1.000 0.000 |-| sample.longlong.one
diff --git a/qa/840 b/qa/840
new file mode 100755
index 0000000..dad52be
--- /dev/null
+++ b/qa/840
@@ -0,0 +1,22 @@
+#!/bin/sh
+# PCP QA Test No. 840
+# Test that pmcd advertises its presence using avahi
+#
+# Copyright (c) 2013-2014 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.avahi
+avahi_notrun_checks
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+service=pmcd
+avahi_verify
+status=0
+exit
diff --git a/qa/840.out b/qa/840.out
new file mode 100644
index 0000000..58c12fa
--- /dev/null
+++ b/qa/840.out
@@ -0,0 +1,3 @@
+QA output created by 840
+Verify pmcd avahi service advertising
+ hostname = [HOSTNAME.local]
diff --git a/qa/841 b/qa/841
new file mode 100755
index 0000000..02e2c64
--- /dev/null
+++ b/qa/841
@@ -0,0 +1,64 @@
+#!/bin/sh
+# PCP QA Test No. 841
+# Exercise slow_python PMDA connect_pmcd() method - Python variant
+# [see also qa/763 for the Perl version]
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_cleanup()
+{
+ if pmprobe -I pmcd.agent.status | grep '"slow_python"' >/dev/null
+ then
+ cd $here/pmdas/slow_python
+ $sudo ./Remove >>$here/$seq.full 2>&1
+ cd $here
+ fi
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; _cleanup; exit \$status" 0 1 2 3 15
+
+cd pmdas/slow_python
+make clean >>$here/$seq.full 2>&1
+
+# real QA test starts here
+for start in 0 4 -4
+do
+ echo | tee -a $here/$seq.full
+ case "$start"
+ in
+ 0)
+ echo "=== no start delay ===" | tee -a $here/$seq.full
+ ;;
+ -[0-9]*)
+ echo "=== start delay `expr -1 \* $start` sec, no connect_pmcd() ===" | tee -a $here/$seq.full
+ ;;
+ [0-9]*)
+ echo "=== start delay $start sec, using connect_pmcd() ===" | tee -a $here/$seq.full
+ ;;
+ esac
+ date >>$here/$seq.full
+ cat <<End-of-File | $sudo ./Install
+both
+$start
+End-of-File
+ date >>$here/$seq.full
+ pminfo -f slow_python | tee -a $here/$seq.full
+ $sudo cat $PCP_LOG_DIR/pmcd/slow_python.log >>$here/$seq.full
+ $sudo tail -40 $PCP_LOG_DIR/pmcd/pmcd.log >>$here/$seq.full
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/841.out b/qa/841.out
new file mode 100644
index 0000000..fe9c7bc
--- /dev/null
+++ b/qa/841.out
@@ -0,0 +1,49 @@
+QA output created by 841
+
+=== no start delay ===
+You will need to choose an appropriate configuration for installation of
+the "slow_python" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Startup delay (secs) [0]? Fetch delay (secs) [0]? Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Check slow_python metrics have appeared ... 1 metrics and 1 values
+
+slow_python.thirteen
+ value 13
+
+=== start delay 4 sec, using connect_pmcd() ===
+You will need to choose an appropriate configuration for installation of
+the "slow_python" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Startup delay (secs) [0]? Fetch delay (secs) [0]? Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 6 seconds for the slow_python agent to initialize ...
+Check slow_python metrics have appeared ... 1 metrics and 1 values
+
+slow_python.thirteen
+ value 13
+
+=== start delay 4 sec, no connect_pmcd() ===
+You will need to choose an appropriate configuration for installation of
+the "slow_python" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Startup delay (secs) [0]? Fetch delay (secs) [0]? Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+Updating the PMCD control file, and notifying PMCD ...
+Wait 6 seconds for the slow_python agent to initialize ...
+Check slow_python metrics have appeared ... 1 warnings, 1 metrics and 0 values
+slow_python: pmLookupName: No PMCD agent for domain of request
diff --git a/qa/842 b/qa/842
new file mode 100755
index 0000000..5877d61
--- /dev/null
+++ b/qa/842
@@ -0,0 +1,52 @@
+#!/bin/sh
+# PCP QA Test No. 842
+# Exercise basic pmiostat(1) invocations using an archive.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo 'All devices'
+pmiostat -z --samples 5 --archive archives/dm-io
+echo
+
+echo 'DM devices'
+pmiostat -z --samples 3 --archive archives/dm-io -x dm
+echo
+
+echo 'Timestamps and no headers'
+pmiostat -z --samples 10 --archive archives/dm-io -x t,h
+echo
+
+for t in $(seq 1 30)
+do
+ for metric_field in read_merge:7 write_merge:8 read:9 write:10 read_bytes:11 write_bytes:12
+ do
+ metric=$(echo $metric_field | sed -e 's/:.*$//')
+ field=$(echo $metric_field | sed -e 's/^.*://')
+
+ echo -n Checking pmiostat against pmval -t $t disk.dev.$metric ...
+ pmval -t $t -a archives/dm-io -f 1 disk.dev.$metric'[sda]' 2>/dev/null |\
+ sed -e 's/\.[0-9]*//' | awk '/^[0-9][0-9]:/ {print $1, $2}' >$tmp.pmval
+ pmiostat -t $t -a archives/dm-io -xt,h |\
+ awk '/^#/ {skip} /sda/ {print $4, $'$field'}' >$tmp.pmiostat
+ if diff -q $tmp.pmval $tmp.pmiostat; then echo OK; else echo FAILED; fi
+ done
+done
+
+
+# success, all done
+status=0
+exit
diff --git a/qa/842.out b/qa/842.out
new file mode 100644
index 0000000..ef48c89
--- /dev/null
+++ b/qa/842.out
@@ -0,0 +1,227 @@
+QA output created by 842
+All devices
+# Device rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await %util
+sda 0.0 0.0 0.0 0.0 0.0 0.0 0.00 0.00 0.0 0.0 0.0 0.0
+sdb 0.0 0.0 5.0 6.0 24.0 8.0 2.91 0.00 0.4 0.4 0.3 0.4
+sda 0.0 0.0 24.0 0.0 816.0 0.0 34.00 0.23 9.6 9.6 0.0 19.0
+sdb 5.0 0.0 1308.0 5.0 53363.0 7.0 40.65 1.15 0.9 0.9 0.2 61.1
+sda 0.0 0.0 7.0 0.0 517.0 0.0 73.86 0.09 12.1 12.1 0.0 6.2
+sdb 1.0 0.0 1867.0 6.0 20462.0 8.0 10.93 0.80 0.4 0.4 14.3 64.1
+sda 0.0 1.0 8.0 11.0 1048.0 279.0 69.84 0.13 6.7 11.5 3.2 7.2
+sdb 1.0 0.0 935.0 11.0 12795.0 107.0 13.64 0.93 1.0 0.6 33.2 55.6
+
+DM devices
+# Device rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await %util
+cache1-block 0.0 0.0 5.0 0.0 24.0 0.0 4.80 0.00 0.4 0.4 0.0 0.2
+dmcache2 0.0 0.0 1.0 0.0 8.0 0.0 8.00 0.00 0.0 0.0 0.0 0.0
+dmcache1 0.0 0.0 5.0 0.0 24.0 0.0 4.80 0.00 0.4 0.4 0.0 0.2
+cache1-meta 0.0 0.0 0.0 3.0 0.0 4.0 1.33 0.00 0.3 0.0 0.3 0.1
+cache2-block 0.0 0.0 1.0 0.0 8.0 0.0 8.00 0.00 0.0 0.0 0.0 0.0
+cache2-meta 0.0 0.0 0.0 3.0 0.0 4.0 1.33 0.00 0.3 0.0 0.3 0.1
+cache1-block 0.0 0.0 105.0 0.0 439.0 0.0 4.18 0.03 0.3 0.3 0.0 2.8
+dmcache2 0.0 0.0 1215.0 0.0 53617.0 0.0 44.13 1.23 1.0 1.0 0.0 62.9
+dmcache1 0.0 0.0 123.0 0.0 559.0 0.0 4.54 0.17 1.4 1.4 0.0 17.4
+cache1-meta 0.0 0.0 0.0 3.0 0.0 4.0 1.33 0.00 0.0 0.0 0.0 0.0
+cache2-block 0.0 0.0 1209.0 0.0 52920.0 0.0 43.77 1.13 0.9 0.9 0.0 57.9
+cache2-meta 0.0 0.0 0.0 3.0 0.0 4.0 1.33 0.00 0.3 0.0 0.3 0.1
+
+Timestamps and no headers
+Fri Aug 1 14:34:51 2014 sda 0.0 0.0 0.0 0.0 0.0 0.0 0.00 0.00 0.0 0.0 0.0 0.0
+Fri Aug 1 14:34:51 2014 sdb 0.0 0.0 5.0 6.0 24.0 8.0 2.91 0.00 0.4 0.4 0.3 0.4
+Fri Aug 1 14:34:52 2014 sda 0.0 0.0 24.0 0.0 816.0 0.0 34.00 0.23 9.6 9.6 0.0 19.0
+Fri Aug 1 14:34:52 2014 sdb 5.0 0.0 1308.0 5.0 53363.0 7.0 40.65 1.15 0.9 0.9 0.2 61.1
+Fri Aug 1 14:34:53 2014 sda 0.0 0.0 7.0 0.0 517.0 0.0 73.86 0.09 12.1 12.1 0.0 6.2
+Fri Aug 1 14:34:53 2014 sdb 1.0 0.0 1867.0 6.0 20462.0 8.0 10.93 0.80 0.4 0.4 14.3 64.1
+Fri Aug 1 14:34:54 2014 sda 0.0 1.0 8.0 11.0 1048.0 279.0 69.84 0.13 6.7 11.5 3.2 7.2
+Fri Aug 1 14:34:54 2014 sdb 1.0 0.0 935.0 11.0 12795.0 107.0 13.64 0.93 1.0 0.6 33.2 55.6
+Fri Aug 1 14:34:55 2014 sda 0.0 8.0 7.0 20.0 903.0 818.0 63.74 0.24 8.8 12.1 7.7 7.3
+Fri Aug 1 14:34:55 2014 sdb 9.0 0.0 549.0 27.0 10039.0 319.0 17.98 2.96 5.1 1.5 79.0 62.6
+Fri Aug 1 14:34:56 2014 sda 0.0 29.0 3.0 37.0 311.0 2208.0 62.98 0.45 11.2 16.7 10.7 6.2
+Fri Aug 1 14:34:56 2014 sdb 31.0 0.0 242.0 62.0 6020.0 800.0 22.43 8.79 28.9 7.3 113.2 97.6
+Fri Aug 1 14:34:57 2014 sda 1.0 836.0 2.0 99.0 393.0 35594.0 356.31 30.58 302.8 7.5 308.7 69.2
+Fri Aug 1 14:34:57 2014 sdb 21.0 15.0 1168.0 47.0 10701.0 3599.0 11.77 8.25 6.8 1.7 133.6 127.1
+Fri Aug 1 14:34:58 2014 sda 0.0 397.0 4.0 75.0 510.0 27461.0 354.06 30.36 384.3 41.2 402.6 52.8
+Fri Aug 1 14:34:58 2014 sdb 51.0 7.0 766.0 13.0 11571.0 1364.0 16.60 1.61 2.1 1.0 64.4 57.8
+Fri Aug 1 14:34:59 2014 sda 0.0 0.0 0.0 0.0 2.0 44.0 0.00 0.06 0.0 0.0 0.0 0.1
+Fri Aug 1 14:34:59 2014 sdb 0.0 0.0 1.0 6.0 29.0 8.0 5.29 0.01 0.7 2.0 0.5 0.3
+
+Checking pmiostat against pmval -t 1 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 1 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 1 disk.dev.read ...OK
+Checking pmiostat against pmval -t 1 disk.dev.write ...OK
+Checking pmiostat against pmval -t 1 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 1 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 2 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 2 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 2 disk.dev.read ...OK
+Checking pmiostat against pmval -t 2 disk.dev.write ...OK
+Checking pmiostat against pmval -t 2 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 2 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 3 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 3 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 3 disk.dev.read ...OK
+Checking pmiostat against pmval -t 3 disk.dev.write ...OK
+Checking pmiostat against pmval -t 3 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 3 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 4 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 4 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 4 disk.dev.read ...OK
+Checking pmiostat against pmval -t 4 disk.dev.write ...OK
+Checking pmiostat against pmval -t 4 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 4 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 5 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 5 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 5 disk.dev.read ...OK
+Checking pmiostat against pmval -t 5 disk.dev.write ...OK
+Checking pmiostat against pmval -t 5 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 5 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 6 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 6 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 6 disk.dev.read ...OK
+Checking pmiostat against pmval -t 6 disk.dev.write ...OK
+Checking pmiostat against pmval -t 6 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 6 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 7 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 7 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 7 disk.dev.read ...OK
+Checking pmiostat against pmval -t 7 disk.dev.write ...OK
+Checking pmiostat against pmval -t 7 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 7 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 8 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 8 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 8 disk.dev.read ...OK
+Checking pmiostat against pmval -t 8 disk.dev.write ...OK
+Checking pmiostat against pmval -t 8 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 8 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 9 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 9 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 9 disk.dev.read ...OK
+Checking pmiostat against pmval -t 9 disk.dev.write ...OK
+Checking pmiostat against pmval -t 9 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 9 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 10 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 10 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 10 disk.dev.read ...OK
+Checking pmiostat against pmval -t 10 disk.dev.write ...OK
+Checking pmiostat against pmval -t 10 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 10 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 11 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 11 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 11 disk.dev.read ...OK
+Checking pmiostat against pmval -t 11 disk.dev.write ...OK
+Checking pmiostat against pmval -t 11 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 11 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 12 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 12 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 12 disk.dev.read ...OK
+Checking pmiostat against pmval -t 12 disk.dev.write ...OK
+Checking pmiostat against pmval -t 12 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 12 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 13 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 13 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 13 disk.dev.read ...OK
+Checking pmiostat against pmval -t 13 disk.dev.write ...OK
+Checking pmiostat against pmval -t 13 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 13 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 14 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 14 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 14 disk.dev.read ...OK
+Checking pmiostat against pmval -t 14 disk.dev.write ...OK
+Checking pmiostat against pmval -t 14 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 14 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 15 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 15 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 15 disk.dev.read ...OK
+Checking pmiostat against pmval -t 15 disk.dev.write ...OK
+Checking pmiostat against pmval -t 15 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 15 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 16 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 16 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 16 disk.dev.read ...OK
+Checking pmiostat against pmval -t 16 disk.dev.write ...OK
+Checking pmiostat against pmval -t 16 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 16 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 17 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 17 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 17 disk.dev.read ...OK
+Checking pmiostat against pmval -t 17 disk.dev.write ...OK
+Checking pmiostat against pmval -t 17 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 17 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 18 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 18 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 18 disk.dev.read ...OK
+Checking pmiostat against pmval -t 18 disk.dev.write ...OK
+Checking pmiostat against pmval -t 18 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 18 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 19 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 19 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 19 disk.dev.read ...OK
+Checking pmiostat against pmval -t 19 disk.dev.write ...OK
+Checking pmiostat against pmval -t 19 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 19 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 20 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 20 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 20 disk.dev.read ...OK
+Checking pmiostat against pmval -t 20 disk.dev.write ...OK
+Checking pmiostat against pmval -t 20 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 20 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 21 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 21 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 21 disk.dev.read ...OK
+Checking pmiostat against pmval -t 21 disk.dev.write ...OK
+Checking pmiostat against pmval -t 21 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 21 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 22 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 22 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 22 disk.dev.read ...OK
+Checking pmiostat against pmval -t 22 disk.dev.write ...OK
+Checking pmiostat against pmval -t 22 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 22 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 23 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 23 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 23 disk.dev.read ...OK
+Checking pmiostat against pmval -t 23 disk.dev.write ...OK
+Checking pmiostat against pmval -t 23 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 23 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 24 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 24 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 24 disk.dev.read ...OK
+Checking pmiostat against pmval -t 24 disk.dev.write ...OK
+Checking pmiostat against pmval -t 24 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 24 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 25 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 25 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 25 disk.dev.read ...OK
+Checking pmiostat against pmval -t 25 disk.dev.write ...OK
+Checking pmiostat against pmval -t 25 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 25 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 26 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 26 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 26 disk.dev.read ...OK
+Checking pmiostat against pmval -t 26 disk.dev.write ...OK
+Checking pmiostat against pmval -t 26 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 26 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 27 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 27 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 27 disk.dev.read ...OK
+Checking pmiostat against pmval -t 27 disk.dev.write ...OK
+Checking pmiostat against pmval -t 27 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 27 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 28 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 28 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 28 disk.dev.read ...OK
+Checking pmiostat against pmval -t 28 disk.dev.write ...OK
+Checking pmiostat against pmval -t 28 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 28 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 29 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 29 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 29 disk.dev.read ...OK
+Checking pmiostat against pmval -t 29 disk.dev.write ...OK
+Checking pmiostat against pmval -t 29 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 29 disk.dev.write_bytes ...OK
+Checking pmiostat against pmval -t 30 disk.dev.read_merge ...OK
+Checking pmiostat against pmval -t 30 disk.dev.write_merge ...OK
+Checking pmiostat against pmval -t 30 disk.dev.read ...OK
+Checking pmiostat against pmval -t 30 disk.dev.write ...OK
+Checking pmiostat against pmval -t 30 disk.dev.read_bytes ...OK
+Checking pmiostat against pmval -t 30 disk.dev.write_bytes ...OK
diff --git a/qa/844 b/qa/844
new file mode 100755
index 0000000..d033913
--- /dev/null
+++ b/qa/844
@@ -0,0 +1,41 @@
+#!/bin/sh
+# PCP QA Test No. 844
+# Exercise fix for Fedora bugzilla #1055818 -
+# pmdalinux segv on unexpected ICMP type field values
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which nmap >/dev/null 2>&1 || _notrun "nmap package not installed"
+which nping >/dev/null 2>&1 || _notrun "nping binary not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_icmp_metrics()
+{
+ sed \
+ -e "/network\..*\.incsumerrors: $unavailable/d" \
+ # end filter
+}
+
+# real QA test starts here
+$sudo nping --icmp --icmp-type 142 --quiet --count 1 localhost >$tmp.out 2>$tmp.err
+status=$?
+echo "nping status=$status"
+cat $tmp.out $tmp.err
+
+# verify we get good data (2x fetch for segv)
+pminfo -v network.icmp 2>&1 | _filter_icmp_metrics
+pminfo -v network.icmp 2>&1 | _filter_icmp_metrics
+
+exit
diff --git a/qa/844.out b/qa/844.out
new file mode 100755
index 0000000..a3f741c
--- /dev/null
+++ b/qa/844.out
@@ -0,0 +1,3 @@
+QA output created by 844
+nping status=0
+Warning: Specified ICMP type (142) is not RFC compliant.
diff --git a/qa/861 b/qa/861
new file mode 100755
index 0000000..d3e6e65
--- /dev/null
+++ b/qa/861
@@ -0,0 +1,54 @@
+#!/bin/sh
+# PCP QA Test No. 861
+# Exercise custom pmcd hostname settings for clients needing
+# accurate (and/or custom) remote host name information.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pminfo pmcd.hostname >/dev/null || _notrun "No support for pmcd.hostname metric"
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ if [ -n "$pid" ]
+ then
+ echo "Terminating local pmcd process"
+ $signal -s TERM $pid
+ wait
+ pid=""
+ fi
+ cd $here; rm -rf $tmp.*
+}
+
+# real QA test starts here
+export PCP_PMCDCONF_PATH=$tmp.conf
+export PMCD_PORT=9876
+export PMCD_SOCKET=$tmp.pmcd.socket
+
+cat <<End-of-File >$tmp.conf
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+End-of-File
+pmcd -H nosuchhost.com -f -x $seq.full -l $tmp.log &
+pid=$!
+pmcd_wait
+
+echo "Checking custom pmcd.hostname setting from client side:"
+pminfo -dfm pmcd.hostname
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/861.out b/qa/861.out
new file mode 100644
index 0000000..dcfb8a4
--- /dev/null
+++ b/qa/861.out
@@ -0,0 +1,8 @@
+QA output created by 861
+Checking custom pmcd.hostname setting from client side:
+
+pmcd.hostname PMID: 2.0.21
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+ value "nosuchhost.com"
+Terminating local pmcd process
diff --git a/qa/875 b/qa/875
new file mode 100755
index 0000000..7c69640
--- /dev/null
+++ b/qa/875
@@ -0,0 +1,33 @@
+#!/bin/sh
+# PCP QA Test No. 875
+# Exercise parsing of unix: and local: hostspec suffixes.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_VER -ge 3802 ] || _notrun "No support for local:/unix: hostspecs"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_run_valgrind src/parsehostattrs local:where/am/i.sock
+_run_valgrind src/parsehostattrs local://tmp/holey.sock?user=pcpqa\&compress
+_run_valgrind src/parsehostattrs local:?
+
+_run_valgrind src/parsehostattrs unix://tmp/holey.sock?compress
+_run_valgrind src/parsehostattrs unix://?compress
+
+# success, all done
+status=0
+exit
diff --git a/qa/875.out b/qa/875.out
new file mode 100644
index 0000000..ae8547e
--- /dev/null
+++ b/qa/875.out
@@ -0,0 +1,66 @@
+QA output created by 875
+=== std out ===
+pmParseHostAttrsSpec("local:where/am/i.sock", ...)
+host[0]: "/where/am/i.sock"
+local
+pmUnparseHostAttrsSpec("local:where/am/i.sock") -> "local://where/am/i.sock"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs local:where/am/i.sock
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("local://tmp/holey.sock?user=pcpqa&compress", ...)
+host[0]: "/tmp/holey.sock?user=pcpqa&compress"
+local
+pmUnparseHostAttrsSpec("local://tmp/holey.sock?user=pcpqa&compress") -> "local://tmp/holey.sock?user=pcpqa&compress"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs local://tmp/holey.sock?user=pcpqa&compress
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("local:?", ...)
+host[0]: "/?"
+local
+pmUnparseHostAttrsSpec("local:?") -> "local://?"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs local:?
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("unix://tmp/holey.sock?compress", ...)
+host[0]: "/tmp/holey.sock?compress"
+unixsock
+pmUnparseHostAttrsSpec("unix://tmp/holey.sock?compress") -> "unix://tmp/holey.sock?compress"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs unix://tmp/holey.sock?compress
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+=== std out ===
+pmParseHostAttrsSpec("unix://?compress", ...)
+host[0]: "/?compress"
+unixsock
+pmUnparseHostAttrsSpec("unix://?compress") -> "unix://?compress"
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/parsehostattrs unix://?compress
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/876 b/qa/876
new file mode 100755
index 0000000..6d8560e
--- /dev/null
+++ b/qa/876
@@ -0,0 +1,89 @@
+#!/bin/sh
+# PCP QA Test No. 876
+# Exercise pmdaxfs quota metrics (project quota).
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+which mkfs.xfs >/dev/null 2>&1 || _notrun "XFS utilities not installed"
+pmprobe -I pmcd.agent.type 2>&1 | grep '"xfs"' >/dev/null
+test $? -eq 0 || _notrun "XFS PMDA metrics not available"
+$sudo modprobe xfs
+cat /proc/filesystems | awk '{ print $1 }' | grep '^xfs$' >/dev/null
+test $? -eq 0 || _notrun "XFS kernel support unavailable"
+# check for any loopback devices, cowardly abort this test if any exist
+loopcount=`$sudo losetup -a | wc -l`
+[ $loopcount -eq 0 ] || _notrun "System has loop devices already, bailing"
+
+_cleanup()
+{
+ cd $here
+ if [ -f $tmp.oprojects ]
+ then
+ $sudo mv $tmp.oprojects /etc/projects
+ elif [ -f $tmp.projects ]
+ then
+ $sudo rm /etc/projects
+ fi
+
+ $sudo umount $tmp.xfsmount >/dev/null 2>&1
+ # dodge kernel race conditions (losetup -d)
+ for i in 1 2 3 4 5
+ do
+ loopcount=`$sudo losetup -a | wc -l`
+ [ $loopcount -eq 0 ] && break
+ ( $sudo losetup -d /dev/loop0 ) >/dev/null 2>&1
+ sync
+ sleep $i
+ done
+ rm -rf $tmp.*
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+echo "creating a filesystem"
+mkfs.xfs -dfile,size=256m,name=$tmp.xfsfile > /dev/null || exit 1
+
+echo "creating a mount point"
+mkdir -p $tmp.xfsmount || exit 1
+
+echo "creating a project map"
+test -f /etc/projects && $sudo mv /etc/projects $tmp.oprojects
+echo "0:$tmp.xfsmount" > $tmp.projects
+$sudo cp $tmp.projects /etc/projects
+
+echo "mounting xfs filesystem"
+$sudo mount -t xfs -o loop,prjquota $tmp.xfsfile $tmp.xfsmount
+
+# stash a copy of metric values for debugging
+pminfo -f quota 2>&1 > $seq.full
+
+echo "checking metric values"
+pmprobe -v quota > $tmp.out
+echo "== state metrics:"
+for metric in quota.state.project.accounting quota.state.project.enforcement
+do
+ grep $metric $tmp.out | \
+ awk '\
+ $2 < 1 { print "'$metric' FAIL" } \
+ $2 > 0 { print "'$metric' PASS" } \
+ END {}'
+done
+echo "== project metrics:"
+cat $tmp.out | grep quota.project
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/876.out b/qa/876.out
new file mode 100644
index 0000000..c9ebbf8
--- /dev/null
+++ b/qa/876.out
@@ -0,0 +1,18 @@
+QA output created by 876
+creating a filesystem
+creating a mount point
+creating a project map
+mounting xfs filesystem
+checking metric values
+== state metrics:
+quota.state.project.accounting PASS
+quota.state.project.enforcement PASS
+== project metrics:
+quota.project.space.hard 1 0
+quota.project.space.soft 1 0
+quota.project.space.used 1 0
+quota.project.space.time_left 1 0
+quota.project.files.hard 1 0
+quota.project.files.soft 1 0
+quota.project.files.used 1 3
+quota.project.files.time_left 1 0
diff --git a/qa/897 b/qa/897
new file mode 100755
index 0000000..754d9ee
--- /dev/null
+++ b/qa/897
@@ -0,0 +1,80 @@
+#!/bin/sh
+# PCP QA Test No. 897
+# pmlc/pmlogger access control compatibility
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; $sudo rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+hostname=`hostname`
+
+_filter()
+{
+ sed \
+ -e "s/^connect $pid/connect QA_LOGGER_PID/" \
+ -e "s/^pmlogger \[$pid]/pmlogger [QA_LOGGER_PID]/" \
+ -e "s/from host $hostname/from host HOST/" \
+ -e "s/\(The following pmloggers .* on \)$hostname/\1HOST/" \
+ -e '/primary (/s/([0-9][0-9]*).*/(LOGGER_PID) .../' \
+ -e '/^PMCD host/s/\( *\).*/\1HOST/' \
+ -e 's/^\(log started *\).*/\1DATESTAMP/' \
+ -e 's/^\(last log entry *\).*/\1DATESTAMP/' \
+ -e '/^current time/s/\( *\).*/\1DATE/' \
+ -e '/^log volume/s/\( *\).*/\1NUMBER/' \
+ -e '/^log size/s/\( *\).*/\1NUMBER/' \
+
+}
+
+# real QA test starts here
+for acl in enquire advisory mandatory \
+ 'enquire,advisory' 'enquire,mandatory' 'advisory,mandatory' \
+ 'enquire,advisory,mandatory'
+do
+ echo | tee -a $seq.full
+ echo "=== allow * : $acl ===" | tee -a $seq.full
+ cat <<End-of-File >$tmp.config
+log mandatory on once { sample.bin }
+
+[access]
+disallow * : all;
+allow localhost : $acl;
+End-of-File
+
+ $sudo rm -f $tmp.[0-9]* $tmp.index $tmp.meta $tmp.log
+ # Note: _start_up_pmlogger returns with $pid set
+ #
+ _start_up_pmlogger -L -c $tmp.config -l $tmp.log $tmp
+ _wait_for_pmlogger $pid $tmp.log
+ cat <<End-of-File | pmlc -e 2>&1 | tee -a $seq.full | _filter
+show loggers
+connect $pid
+status
+query { sample.colour sample.long.one }
+# need mandatory
+flush
+new volume
+log advisory on 5sec sample.long.one
+log mandatory off sample.colour
+# check
+query { sample.colour sample.long.one }
+End-of-File
+ $sudo kill -TERM $pid
+ wait
+ cat $tmp.log >>$seq.full
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/897.out b/qa/897.out
new file mode 100644
index 0000000..f52215c
--- /dev/null
+++ b/qa/897.out
@@ -0,0 +1,280 @@
+QA output created by 897
+
+=== allow * : enquire ===
+show loggers
+The following pmloggers are running on local::
+ primary (LOGGER_PID) ...
+connect QA_LOGGER_PID
+status
+pmlogger [QA_LOGGER_PID] on host local: is logging metrics from host HOST
+PMCD host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATE
+log volume NUMBER
+log size NUMBER
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+# need mandatory
+flush
+new volume
+Error: No permission to perform requested operation
+log advisory on 5sec sample.long.one
+Error receiving response from pmlogger: No permission to perform requested operation
+log mandatory off sample.colour
+Error receiving response from pmlogger: No permission to perform requested operation
+# check
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+
+=== allow * : advisory ===
+show loggers
+The following pmloggers are running on local::
+ primary (LOGGER_PID) ...
+connect QA_LOGGER_PID
+status
+pmlogger [QA_LOGGER_PID] on host local: is logging metrics from host HOST
+PMCD host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATE
+log volume NUMBER
+log size NUMBER
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+# need mandatory
+flush
+new volume
+Error: No permission to perform requested operation
+log advisory on 5sec sample.long.one
+log mandatory off sample.colour
+Error receiving response from pmlogger: No permission to perform requested operation
+# check
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv on nl 5 sec
+
+
+=== allow * : mandatory ===
+show loggers
+The following pmloggers are running on local::
+ primary (LOGGER_PID) ...
+connect QA_LOGGER_PID
+status
+pmlogger [QA_LOGGER_PID] on host local: is logging metrics from host HOST
+PMCD host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATE
+log volume NUMBER
+log size NUMBER
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+# need mandatory
+flush
+new volume
+New log volume 1
+log advisory on 5sec sample.long.one
+Error receiving response from pmlogger: No permission to perform requested operation
+log mandatory off sample.colour
+# check
+query { sample.colour sample.long.one }
+sample.colour
+ mand off nl [0 or "red"]
+ mand off nl [1 or "green"]
+ mand off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+
+=== allow * : enquire,advisory ===
+show loggers
+The following pmloggers are running on local::
+ primary (LOGGER_PID) ...
+connect QA_LOGGER_PID
+status
+pmlogger [QA_LOGGER_PID] on host local: is logging metrics from host HOST
+PMCD host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATE
+log volume NUMBER
+log size NUMBER
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+# need mandatory
+flush
+new volume
+Error: No permission to perform requested operation
+log advisory on 5sec sample.long.one
+log mandatory off sample.colour
+Error receiving response from pmlogger: No permission to perform requested operation
+# check
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv on nl 5 sec
+
+
+=== allow * : enquire,mandatory ===
+show loggers
+The following pmloggers are running on local::
+ primary (LOGGER_PID) ...
+connect QA_LOGGER_PID
+status
+pmlogger [QA_LOGGER_PID] on host local: is logging metrics from host HOST
+PMCD host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATE
+log volume NUMBER
+log size NUMBER
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+# need mandatory
+flush
+new volume
+New log volume 1
+log advisory on 5sec sample.long.one
+Error receiving response from pmlogger: No permission to perform requested operation
+log mandatory off sample.colour
+# check
+query { sample.colour sample.long.one }
+sample.colour
+ mand off nl [0 or "red"]
+ mand off nl [1 or "green"]
+ mand off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+
+=== allow * : advisory,mandatory ===
+show loggers
+The following pmloggers are running on local::
+ primary (LOGGER_PID) ...
+connect QA_LOGGER_PID
+status
+pmlogger [QA_LOGGER_PID] on host local: is logging metrics from host HOST
+PMCD host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATE
+log volume NUMBER
+log size NUMBER
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+# need mandatory
+flush
+new volume
+New log volume 1
+log advisory on 5sec sample.long.one
+log mandatory off sample.colour
+# check
+query { sample.colour sample.long.one }
+sample.colour
+ mand off nl [0 or "red"]
+ mand off nl [1 or "green"]
+ mand off nl [2 or "blue"]
+
+sample.long.one
+ adv on nl 5 sec
+
+
+=== allow * : enquire,advisory,mandatory ===
+show loggers
+The following pmloggers are running on local::
+ primary (LOGGER_PID) ...
+connect QA_LOGGER_PID
+status
+pmlogger [QA_LOGGER_PID] on host local: is logging metrics from host HOST
+PMCD host HOST
+log started DATESTAMP
+last log entry DATESTAMP
+current time DATE
+log volume NUMBER
+log size NUMBER
+query { sample.colour sample.long.one }
+sample.colour
+ adv off nl [0 or "red"]
+ adv off nl [1 or "green"]
+ adv off nl [2 or "blue"]
+
+sample.long.one
+ adv off nl
+
+# need mandatory
+flush
+new volume
+New log volume 1
+log advisory on 5sec sample.long.one
+log mandatory off sample.colour
+# check
+query { sample.colour sample.long.one }
+sample.colour
+ mand off nl [0 or "red"]
+ mand off nl [1 or "green"]
+ mand off nl [2 or "blue"]
+
+sample.long.one
+ adv on nl 5 sec
+
diff --git a/qa/898 b/qa/898
new file mode 100755
index 0000000..6b5b794
--- /dev/null
+++ b/qa/898
@@ -0,0 +1,65 @@
+#!/bin/sh
+# PCP QA Test No. 898
+# pmlogmv botch in arg parsing
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# test for-some-thing || _notrun No support for some-thing
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+mkdir $tmp
+for i in 20140417.00.25 20140417.00.55
+do
+ for ext in 0 index meta
+ do
+ cp src/foo.$ext $tmp/$i.$ext
+ done
+done
+
+# real QA test starts here
+cd $tmp
+echo "arg is .0 file name case"
+pmlogmv -N 20140417.00.25.0 destination
+
+echo
+echo "arg is .index file name case"
+pmlogmv -N 20140417.00.25.index destination
+
+echo
+echo "arg is .meta file name case"
+pmlogmv -N 20140417.00.25.meta destination
+
+echo
+echo "arg is unique prefix case"
+pmlogmv -N 20140417.00.25 destination
+
+echo
+echo "arg is ambiguous prefix cases"
+pmlogmv -N 20140417.00 destination
+rm 20140417.00.55.0
+pmlogmv -N 20140417.00 destination
+rm 20140417.00.55.index
+pmlogmv -N 20140417.00 destination
+
+echo
+echo "bogus filename case"
+touch 20140417.00.25.bozo
+pmlogmv -N 20140417.00.25.bozo destination
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/898.out b/qa/898.out
new file mode 100644
index 0000000..1b2586c
--- /dev/null
+++ b/qa/898.out
@@ -0,0 +1,55 @@
+QA output created by 898
+arg is .0 file name case
++ ln 20140417.00.25.0 destination.0
++ ln 20140417.00.25.index destination.index
++ ln 20140417.00.25.meta destination.meta
++ rm 20140417.00.25.0
++ rm 20140417.00.25.index
++ rm 20140417.00.25.meta
+
+arg is .index file name case
++ ln 20140417.00.25.0 destination.0
++ ln 20140417.00.25.index destination.index
++ ln 20140417.00.25.meta destination.meta
++ rm 20140417.00.25.0
++ rm 20140417.00.25.index
++ rm 20140417.00.25.meta
+
+arg is .meta file name case
++ ln 20140417.00.25.0 destination.0
++ ln 20140417.00.25.index destination.index
++ ln 20140417.00.25.meta destination.meta
++ rm 20140417.00.25.0
++ rm 20140417.00.25.index
++ rm 20140417.00.25.meta
+
+arg is unique prefix case
++ ln 20140417.00.25.0 destination.0
++ ln 20140417.00.25.index destination.index
++ ln 20140417.00.25.meta destination.meta
++ rm 20140417.00.25.0
++ rm 20140417.00.25.index
++ rm 20140417.00.25.meta
+
+arg is ambiguous prefix cases
+pmlogmv: Error: oldname argument (20140417.00) is a prefix for multiple PCP archive files:
+ 20140417.00.25.0
+ 20140417.00.55.0
+pmlogmv: Error: oldname argument (20140417.00) is a prefix for multiple PCP archive files:
+ 20140417.00.25.index
+ 20140417.00.55.index
+pmlogmv: Error: oldname argument (20140417.00) is a prefix for multiple PCP archive files:
+ 20140417.00.25.meta
+ 20140417.00.55.meta
+pmlogmv: Error: oldname argument (20140417.00) is a prefix for multiple PCP archive files:
+ 20140417.00.25.index
+ 20140417.00.55.index
+pmlogmv: Error: oldname argument (20140417.00) is a prefix for multiple PCP archive files:
+ 20140417.00.25.meta
+ 20140417.00.55.meta
+pmlogmv: Error: oldname argument (20140417.00) is a prefix for multiple PCP archive files:
+ 20140417.00.25.meta
+ 20140417.00.55.meta
+
+bogus filename case
+pmlogmv: Error: oldname argument (20140417.00.25.bozo) is not a PCP archive
diff --git a/qa/899 b/qa/899
new file mode 100755
index 0000000..c1483fa
--- /dev/null
+++ b/qa/899
@@ -0,0 +1,97 @@
+#!/bin/sh
+# PCP QA Test No. 899
+# Exercise --host-list, --archive-list, and --archive-folio options.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+tmpdir=`dirname $tmp`
+good=$here/20071023-08-06-36.folio
+bad=/bin/sh
+
+filter_folios()
+{
+ sed \
+ -e "s,$tmp,TMP,g" \
+ -e "s,$bad,BAD,g" \
+ -e "s,$here,HERE,g" \
+ -e "s,$good,FOLIO,g" \
+ -e "s,$tmpdir,TMPDIR,g" \
+ # end
+}
+
+
+# real QA test starts here
+export PM_OPTFLAG_MULTI=true
+
+echo '== Host list (multi) =='
+$here/src/getoptions --host-list=www.acme.com,foo.bar.org,oss.sgi.com
+echo '== Host list (single) =='
+$here/src/getoptions --host-list=www.acme.com
+
+echo '== Archive list (multi) =='
+$here/src/getoptions --archive-list=log1,log2,log3
+echo '== Archive list (single) =='
+$here/src/getoptions --archive-list=log1
+
+echo '== Archive Folio (single) =='
+$here/src/getoptions --archive-folio=$good 2>&1 | filter_folios
+
+echo '== Archive Folio (multi) =='
+cat << EOF > $tmp.multi
+PCPFolio
+Version: 1
+Archive: smash 20140624.10.52
+Archive: verge 20140624.00.10
+EOF
+$here/src/getoptions --archive-folio=$tmp.multi 2>&1 | filter_folios
+
+echo '== Archive Folio (binary) =='
+$here/src/getoptions --archive-folio=$bad 2>&1 | filter_folios
+
+echo '== Archive Folio (badmagic) =='
+cat <<EOF > $tmp.badmagic
+PPCFolio
+Version: 1
+Archive: smash 20140624.10.52
+EOF
+$here/src/getoptions --archive-folio=$tmp.badmagic 2>&1 | filter_folios
+
+echo '== Archive Folio (version2) =='
+cat <<EOF > $tmp.version2
+PCPFolio
+Version: 2
+Archive: smash 20140624.10.52
+EOF
+$here/src/getoptions --archive-folio=$tmp.version2 2>&1 | filter_folios
+
+echo '== Archive Folio (nohost) =='
+cat <<EOF > $tmp.nohost
+PCPFolio
+Version: 1
+Archive: 20140624.10.52
+EOF
+$here/src/getoptions --archive-folio=$tmp.nohost 2>&1 | filter_folios
+
+echo '== Archive Folio (empty) =='
+cat <<EOF > $tmp.empty
+PCPFolio
+Version: 1
+EOF
+$here/src/getoptions --archive-folio=$tmp.empty 2>&1 | filter_folios
+
+# success, all done
+status=0
+exit
diff --git a/qa/899.out b/qa/899.out
new file mode 100644
index 0000000..0e85bee
--- /dev/null
+++ b/qa/899.out
@@ -0,0 +1,279 @@
+QA output created by 899
+== Host list (multi) ==
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x7 (init,done,multi)
+ errors: 0
+ context: 0x1 (host)
+ nhosts: 3
+ hosts: www.acme.com,foo.bar.org,oss.sgi.com
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Host list (single) ==
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x7 (init,done,multi)
+ errors: 0
+ context: 0x1 (host)
+ nhosts: 1
+ hosts: www.acme.com
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive list (multi) ==
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x7 (init,done,multi)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 3
+ archives: log1,log2,log3
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive list (single) ==
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x7 (init,done,multi)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 1
+ archives: log1
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive Folio (single) ==
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x7 (init,done,multi)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 1
+ archives: HERE/archives/20071023-08-06-36
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive Folio (multi) ==
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x7 (init,done,multi)
+ errors: 0
+ context: 0x2 (archive)
+ nhosts: 0
+ narchives: 2
+ archives: TMPDIR/20140624.10.52,TMPDIR/20140624.00.10
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive Folio (binary) ==
+Warning: runtime error detected
+getoptions: archive folio BAD has bad magic
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x17 (init,done,multi,runtime_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive Folio (badmagic) ==
+Warning: runtime error detected
+getoptions: archive folio TMP.badmagic has bad magic
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x17 (init,done,multi,runtime_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive Folio (version2) ==
+Warning: runtime error detected
+getoptions: unknown version archive folio TMP.version2
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x17 (init,done,multi,runtime_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive Folio (nohost) ==
+Warning: runtime error detected
+getoptions: missing path on archive folio line 3
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x17 (init,done,multi,runtime_err)
+ errors: 1
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
+== Archive Folio (empty) ==
+End of option processing
+Options structure dump:
+ version: 2
+ flags: 0x7 (init,done,multi)
+ errors: 0
+ context: 0x0 (-)
+ nhosts: 0
+ narchives: 0
+ start: -
+ finish: -
+ origin: -
+ interval: -
+ align_optarg: -
+ start_optarg: -
+ finish_optarg: -
+ origin_optarg: -
+ guiport_optarg: -
+ timezone: -
+ samples: 0
+ guiport: 0
+ guiflag: 0
+ tzflag: 0
+ Lflag: 0
diff --git a/qa/900 b/qa/900
new file mode 100755
index 0000000..f9b2817
--- /dev/null
+++ b/qa/900
@@ -0,0 +1,103 @@
+#!/bin/sh
+# PCP QA Test No. 900
+# Test pcp(1) invokes other utilities with environment set.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+bindir="$HOME/.pcp/bin"
+$sudo rm -rf $tmp.* $seq.full
+
+_cleanup()
+{
+ rm -f "$bindir/pcp-env"
+ rm -rf $tmp.*
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+mkdir -p "$bindir" 2>/dev/null
+test -d "$HOME/.pcp/bin" || _notrun "Failed making local directory: $bindir"
+test -w "$HOME/.pcp/bin" || _notrun "Cannot write local directory: $bindir"
+
+# build a sub-command for pcp(1), installed locally
+$sudo rm -f $bindir/pcp-env
+cat <<EOF > $bindir/pcp-env
+#!/bin/sh
+env | grep ^PCP_
+EOF
+chmod 755 "$bindir/pcp-env"
+
+# compare baseline pcp.conf variables to new additions on each
+# invocation of pcp(1) with a sub-command and the standard PCP
+# command line options.
+#
+env | grep ^PCP_ > $tmp.baseline
+
+_verify()
+{
+ echo && echo "$1"
+ diff $tmp.baseline $2 | sed \
+ -e 's/^[0-9][0-9]*a[0-9][0-9]*/added:/g'
+}
+
+pcp env > $tmp.env.none
+_verify "no arguments" $tmp.env.none
+
+pcp -A '1 hour' env > $tmp.env.align
+_verify "align argument" $tmp.env.align
+
+pcp -a src/rattle env > $tmp.env.archive
+_verify "archive argument" $tmp.env.archive
+
+pcp -h moo.cow.com env > $tmp.env.host
+_verify "hostname argument" $tmp.env.host
+
+pcp -D TRACE_PDU env > $tmp.env.debug
+_verify "debug argument" $tmp.env.debug
+
+pcp -g env > $tmp.env.guimode
+_verify "gui mode argument" $tmp.env.guimode
+
+pcp -L env > $tmp.env.localmode
+_verify "local mode argument" $tmp.env.localmode
+
+pcp -n /pmns/file env > $tmp.env.pmns
+_verify "namespace argument" $tmp.env.pmns
+
+pcp -O '@ 1996-03-05 14:07:47 EST -1hour' env > $tmp.env.origin
+_verify "origin argument" $tmp.env.origin
+
+pcp -p 12345 env > $tmp.env.guiport
+_verify "gui port argument" $tmp.env.guiport
+
+pcp -S 'yesterday, 2am' env > $tmp.env.start
+_verify "start time argument" $tmp.env.start
+
+pcp -s 5 env > $tmp.env.samples
+_verify "samples argument" $tmp.env.samples
+
+pcp -T '@ Mar 4 13:07:47 1996' env > $tmp.env.finish
+_verify "finish time argument" $tmp.env.finish
+
+pcp -t '2.5 seconds' env > $tmp.env.samples
+_verify "interval argument" $tmp.env.samples
+
+pcp -Z UTC env > $tmp.env.timezone
+_verify "timezone argument" $tmp.env.timezone
+
+pcp -z env > $tmp.env.hostzone
+_verify "hostzone argument" $tmp.env.hostzone
+
+# success, all done
+status=0
+exit
diff --git a/qa/900.out b/qa/900.out
new file mode 100644
index 0000000..455eaa4
--- /dev/null
+++ b/qa/900.out
@@ -0,0 +1,63 @@
+QA output created by 900
+
+no arguments
+
+align argument
+added:
+> PCP_ALIGN_TIME=1 hour
+
+archive argument
+added:
+> PCP_ARCHIVE=src/rattle
+
+hostname argument
+added:
+> PCP_HOST=moo.cow.com
+
+debug argument
+added:
+> PCP_DEBUG=TRACE_PDU
+
+gui mode argument
+added:
+> PCP_GUIMODE=true
+
+local mode argument
+added:
+> PCP_LOCALMODE=true
+
+namespace argument
+added:
+> PCP_NAMESPACE=/pmns/file
+
+origin argument
+added:
+> PCP_ORIGIN_TIME=@ 1996-03-05 14:07:47 EST -1hour
+
+gui port argument
+added:
+> PCP_GUIPORT=12345
+
+start time argument
+added:
+> PCP_START_TIME=yesterday, 2am
+
+samples argument
+added:
+> PCP_SAMPLES=5
+
+finish time argument
+added:
+> PCP_FINISH_TIME=@ Mar 4 13:07:47 1996
+
+interval argument
+added:
+> PCP_INTERVAL=2.5 seconds
+
+timezone argument
+added:
+> PCP_TIMEZONE=UTC
+
+hostzone argument
+added:
+> PCP_HOSTZONE=true
diff --git a/qa/901 b/qa/901
new file mode 100755
index 0000000..3830a5b
--- /dev/null
+++ b/qa/901
@@ -0,0 +1,41 @@
+#!/bin/sh
+# PCP QA Test No. 901
+# Exercise pmUnpackHighResEventRecords and pmFreeHighResEventResult
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e 's/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/TIMESTAMP/g' \
+ -e 's/\[0103070f\.\.\.\]/[0f070301...]/g' \
+ -e '/pmHighResResult dump from/{
+s/0x[0-9a-f][0-9a-f]*/ADDR/
+s/amp: .* num/amp: TIMESTAMPS num/
+}' \
+ | $PCP_AWK_PROG '
+want == 1 { print " value [blob]"; want = 0; next }
+$1 == "29.0.135" { want = 1 }
+ { print }'
+}
+
+# real QA test starts here
+src/hrunpack 2>&1 | _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/901.out b/qa/901.out
new file mode 100644
index 0000000..454fc47
--- /dev/null
+++ b/qa/901.out
@@ -0,0 +1,210 @@
+QA output created by 901
+Expecting ... Unknown or illegal metric type
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: 32 vlen: 0
+Error: bad highres vtype
+pmUnpackHighResEventRecords: Unknown or illegal metric type
+Expecting ... Error - ea_nrecords < 0
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: HIGHRES_EVENT vlen: 8
+nrecords: -1
+Error: bad nrecords
+pmUnpackHighResEventRecords: Insufficient elements in list
+Expecting ... Error - vlen way too small
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: HIGHRES_EVENT vlen: 4
+Error: bad len (smaller than minimum size 8)
+pmUnpackHighResEventRecords: Insufficient elements in list
+Expecting ... No records
+Array contains 0 records and 0 missed records
+Expecting ... 1 record, no params
+Array contains 1 records and 0 missed records
+pmHighResResult[0]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 0
+Expecting ... 1 record, u32 param = 1
+Array contains 1 records and 0 missed records
+pmHighResResult[0]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1 1.4012985e-45 0x1
+Expecting ... 1 record, u32 param = 2, u64 param = -3
+Array contains 1 records and 0 missed records
+pmHighResResult[0]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1 1.4012985e-45 0x1
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2 2.8025969e-45 0x2
+ 29.0.130 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -3
+Expecting ... Error - buffer overrun @ parameter
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: HIGHRES_EVENT vlen: 59
+nrecords: 1
+Event Record [0] flags=1 with 2 parameters
+ Parameter [0]: 29.0.127 = 2
+ Parameter [1]: Error: buffer overflow
+pmUnpackHighResEventRecords: Result size exceeded
+Expecting ... 6 records, 7 missed [u32=4 u64=5 str="6"][u32=7 d=8 d=-9][u32=10 u64=11 str="twelve" str="thirteen" 32=-14 u32=15][u32=16 f=-17 aggr=...]
+Array contains 6 records and 7 missed records
+pmHighResResult[0]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 2
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2147483648 -0 0x80000000
+ 511.0.2 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 3 4.2038954e-45 0x3
+pmHighResResult[1]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 4 5.6051939e-45 0x4
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 5
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "6"
+pmHighResResult[2]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 7 9.8090893e-45 0x7
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 8
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -9
+pmHighResResult[3]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 7
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2 2.8025969e-45 0x2
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 10 1.4012985e-44 0xa
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 11
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "twelve"
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "thirteen"
+ 29.0.128 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 14 1.9618179e-44 0xe
+ 29.0.129 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 15 2.1019477e-44 0xf
+pmHighResResult[4]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 2
+ 511.0.1 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 2147483648 -0 0x80000000
+ 511.0.2 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 4 5.6051939e-45 0x4
+pmHighResResult[5]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 3
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 16 2.2420775e-44 0x10
+ 29.0.132 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -17
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+Expecting ... Error - buffer overrun @ record
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: HIGHRES_EVENT vlen: 296
+nrecords: 6
+Event Record [0] flags=80000000
+ ==> 3 missed records
+Event Record [1] with 3 parameters
+ Parameter [0]: 29.0.127 = 4
+ Parameter [1]: 29.0.131 = 5
+ Parameter [2]: 29.0.134 = "6"
+Event Record [2] with 3 parameters
+ Parameter [0]: 29.0.127 = 7
+ Parameter [1]: 29.0.133 = 8
+ Parameter [2]: 29.0.133 = -9
+Event Record [3] flags=2 with 6 parameters
+ Parameter [0]: 29.0.127 = 10
+ Parameter [1]: 29.0.131 = 11
+ Parameter [2]: 29.0.134 = "twelve"
+ Parameter [3]: 29.0.134 = "thirteen"
+ Parameter [4]: 29.0.128 = 14
+ Parameter [5]: 29.0.129 = 15
+Event Record [4] flags=80000000
+ ==> 4 missed records
+Event Record [5] Error: buffer overflow
+pmUnpackHighResEventRecords: Result size exceeded
+Expecting ... bad numval
+Event Records Dump ...
+PMID: 29.4095.0 numval: -12345
+Error: bad numval
+pmUnpackHighResEventRecords: Generic error, already reported above
+Expecting ... bad valfmt
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 42
+Error: bad valfmt
+pmUnpackHighResEventRecords: Impossible value or scale conversion
+Expecting ... odd instance
+[instance 42]
+Array contains 1 records and 0 missed records
+pmHighResResult[0]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 1
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 1 1.4012985e-45 0x1
+Expecting ... 1 record, nested event type @ 1st parameter
+pmUnpackHighResEventRecords: Unknown or illegal metric type
+Expecting ... 3 records, nested event type @ 2nd parameter of 2nd record
+pmUnpackHighResEventRecords: Unknown or illegal metric type
+Expecting ... all good
+pmUnpackHighResEventRecords returns ...
+pmHighResResult[0]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 10
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 22 3.0828566e-44 0x16
+ 29.0.129 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 23 3.2229865e-44 0x17
+ 29.0.130 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -24
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 25
+ 29.0.132 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -26
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 27
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "minus twenty-eight"
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.128 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 29 4.0637655e-44 0x1d
+Array contains 1 records and 0 missed records
+pmHighResResult[0]
+pmHighResResult dump from ADDR timestamp: TIMESTAMPS numpmid: 10
+ 29.0.127 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 22 3.0828566e-44 0x16
+ 29.0.129 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 23 3.2229865e-44 0x17
+ 29.0.130 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -24
+ 29.0.131 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 25
+ 29.0.132 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value -26
+ 29.0.133 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 27
+ 29.0.134 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value "minus twenty-eight"
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.135 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value [blob]
+ 29.0.128 (<noname>): numval: 1 valfmt: 0 vlist[]:
+ value 29 4.0637655e-44 0x1d
+
+__pmDumpHighResEventRecords coverage test ...
+Event Records Dump ...
+PMID: 29.4095.0 numval: 1 valfmt: 1 vtype: HIGHRES_EVENT vlen: 188
+nrecords: 1
+Event Record [0] with 10 parameters
+ Parameter [0]: 29.0.127 = 22
+ Parameter [1]: 29.0.129 = 23
+ Parameter [2]: 29.0.130 = -24
+ Parameter [3]: 29.0.131 = 25
+ Parameter [4]: 29.0.132 = -26
+ Parameter [5]: 29.0.133 = 27
+ Parameter [6]: 29.0.134 = "minus twenty-eight"
+ Parameter [7]: 29.0.135 = [0f070301...]
+ Parameter [8]: 29.0.135 = [0f070301...]
+ Parameter [9]: 29.0.128 : bad type Unknown
diff --git a/qa/902 b/qa/902
new file mode 100755
index 0000000..b887902
--- /dev/null
+++ b/qa/902
@@ -0,0 +1,37 @@
+#!/bin/sh
+# PCP QA Test No. 902
+# valgrind for pmUnpackHighResEventRecords and pmFreeHighResEventResult
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+
+# can skip stdout from unpack, that's checked in 901
+#
+_filter()
+{
+ $PCP_AWK_PROG '
+BEGIN { skip = 1 }
+/=== filtered / { skip = 0 }
+skip == 0 { print }'
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_run_valgrind src/hrunpack | _filter
+
+# success, all done
+exit
diff --git a/qa/902.out b/qa/902.out
new file mode 100644
index 0000000..78f8c8b
--- /dev/null
+++ b/qa/902.out
@@ -0,0 +1,8 @@
+QA output created by 902
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: src/hrunpack
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/903 b/qa/903
new file mode 100755
index 0000000..c11f909
--- /dev/null
+++ b/qa/903
@@ -0,0 +1,76 @@
+#!/bin/sh
+# PCP QA Test No. 903
+# Exercise the PAPI PMDA Install/Remove process.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ -d $PCP_PMDAS_DIR/papi ] || _notrun "PAPI PMDA is not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_papi()
+{
+ # cull message resulting from no papi metrics
+ grep -v 'No value(s) available'
+}
+
+pmdapapi_remove()
+{
+ echo
+ echo "=== remove PAPI agent ==="
+ $sudo ./Remove >$tmp.out 2>&1
+ _filter_pmda_remove <$tmp.out
+}
+
+pmdapapi_install()
+{
+ # start from known starting points
+ cd $PCP_PMDAS_DIR/papi
+ $sudo ./Remove >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmcd stop
+
+ echo
+ echo "=== PAPI agent installation ==="
+ $sudo ./Install </dev/null >$tmp.out 2>&1
+ # Check papi metrics have appeared ... X metrics and Y values
+ _filter_pmda_install <$tmp.out \
+ | sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+ -e 's/[0-9][0-9]* warnings, //' \
+ | $PCP_AWK_PROG '
+/Check papi metrics have appeared/ { if ($7 >= 100 && $7 <= 500) $7 = "X"
+ if ($10 >= 0 && $10 <= 500) $10 = "Y"
+ }
+ { print }'
+}
+
+_prepare_pmda papi
+trap "_cleanup_pmda papi; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmdapapi_install
+
+# pmcd should have been started by the Install process - check
+if $sudo pminfo -v papi > $tmp.info 2> $tmp.err
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+cat $tmp.info $tmp.err | _filter_papi
+
+pmdapapi_remove
+status=0
+exit
diff --git a/qa/903.out b/qa/903.out
new file mode 100644
index 0000000..26ddeba
--- /dev/null
+++ b/qa/903.out
@@ -0,0 +1,28 @@
+QA output created by 903
+Waiting for pmcd to terminate ...
+
+=== PAPI agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "papi" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Starting pmcd ...
+Starting pmlogger ...
+Check papi metrics have appeared ... X metrics and Y values
+
+=== remove PAPI agent ===
+Culling the Performance Metrics Name Space ...
+papi ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check papi metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/914 b/qa/914
new file mode 100755
index 0000000..ac6e599
--- /dev/null
+++ b/qa/914
@@ -0,0 +1,82 @@
+#!/bin/sh
+# PCP QA Test No. 914
+# Exercise Performance API (PAPI) pmda
+#
+# Copyright (c) 2014 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ -d $PCP_PMDAS_DIR/papi ] || _notrun "PAPI PMDA is not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_papi_errors()
+{
+ sed \
+ -e '/pfm_find_full_event(.*): event not found./d' \
+ -e '/events in papi_events.csv were not valid./d' \
+ # end
+}
+
+_filter()
+{
+ sed \
+ -e 's/value [0-9][0-9]*/value NUMBER/' \
+ -e 's/value \".*\"/value STRING/' \
+ | _filter_papi_errors
+}
+
+# real QA test starts here
+pmns=$PCP_PMDAS_DIR/papi/root
+pmda=$PCP_PMDAS_DIR/papi/pmda_papi.$DSO_SUFFIX,papi_init
+
+echo
+echo "== PAPI library behaviour, total instructions/cycles, non-root"
+pminfo -L -K clear -K add,126,$pmda -f -n $pmns papi.TOT_INS papi.TOT_CYC 2>&1 | _filter
+
+echo
+echo "== PAPI library behaviour, available hardware metrics, non-root"
+pminfo -L -K clear -K add,126,$pmda -f -n $pmns papi.available 2>&1 | _filter
+
+echo
+echo "== PAPI library behaviour, control metric fetches, non-root"
+pminfo -L -K clear -K add,126,$pmda -f -n $pmns papi.control 2>&1 | _filter
+
+echo
+echo "== PAPI library behaviour, control metric stores, non-root"
+pmstore -L -K clear -K add,126,$pmda -f -n $pmns papi.control.enable TOT_INS 2>&1 | _filter_papi_errors
+pmstore -L -K clear -K add,126,$pmda -f -n $pmns papi.control.disable TOT_INS 2>&1 | _filter_papi_errors
+pmstore -L -K clear -K add,126,$pmda -f -n $pmns papi.control.reset TOT_INS 2>&1 | _filter_papi_errors
+
+echo
+echo "== PAPI library behaviour, total instructions/cycles, as root"
+$sudo pminfo -L -K clear -K add,126,$pmda -f -n $pmns papi.TOT_INS papi.TOT_CYC 2>&1 | _filter
+
+echo
+echo "== PAPI library behaviour, available hardware metrics, as root"
+$sudo pminfo -L -K clear -K add,126,$pmda -f -n $pmns papi.available 2>&1 | _filter
+
+echo
+echo "== PAPI library behaviour, control metric fetches, as root"
+$sudo pminfo -L -K clear -K add,126,$pmda -f -n $pmns papi.control 2>&1 | _filter_papi_errors
+
+echo
+echo "== Testing local PAPI library behaviour, control metric stores as root"
+$sudo pmstore -L -K clear -K add,126,$pmda -f -n $pmns papi.control.enable TOT_INS 2>&1 | _filter_papi_errors
+$sudo pmstore -L -K clear -K add,126,$pmda -f -n $pmns papi.control.disable TOT_INS 2>&1 | _filter_papi_errors
+
+# This will see an (expected) error... NYI.
+$sudo pmstore -L -K clear -K add,126,$pmda -f -n $pmns papi.control.reset TOT_INS 2>&1 | _filter_papi_errors
+
+# success, all done
+status=0
+exit
diff --git a/qa/914.out b/qa/914.out
new file mode 100644
index 0000000..a84464b
--- /dev/null
+++ b/qa/914.out
@@ -0,0 +1,65 @@
+QA output created by 914
+
+== PAPI library behaviour, total instructions/cycles, non-root
+
+papi.TOT_INS
+Error: No permission to perform requested operation
+
+papi.TOT_CYC
+Error: No permission to perform requested operation
+
+== PAPI library behaviour, available hardware metrics, non-root
+
+papi.available.num_counters
+Error: No permission to perform requested operation
+
+== PAPI library behaviour, control metric fetches, non-root
+
+papi.control.enable
+Error: No permission to perform requested operation
+
+papi.control.reset
+Error: No permission to perform requested operation
+
+papi.control.disable
+Error: No permission to perform requested operation
+
+papi.control.status
+Error: No permission to perform requested operation
+
+== PAPI library behaviour, control metric stores, non-root
+papi.control.enable: Error: No permission to perform requested operation
+papi.control.disable: Error: No permission to perform requested operation
+papi.control.reset: Error: No permission to perform requested operation
+
+== PAPI library behaviour, total instructions/cycles, as root
+
+papi.TOT_INS
+No value(s) available!
+
+papi.TOT_CYC
+No value(s) available!
+
+== PAPI library behaviour, available hardware metrics, as root
+
+papi.available.num_counters
+ value NUMBER
+
+== PAPI library behaviour, control metric fetches, as root
+
+papi.control.enable
+ value ""
+
+papi.control.reset
+Error: Functionality not yet implemented
+
+papi.control.disable
+No value(s) available!
+
+papi.control.status
+ value "Papi is stopped."
+
+== Testing local PAPI library behaviour, control metric stores as root
+papi.control.enable old value="" new value="TOT_INS"
+papi.control.disable old value="(none)" new value="TOT_INS"
+papi.control.reset: Error: Functionality not yet implemented
diff --git a/qa/922 b/qa/922
new file mode 100755
index 0000000..cd92d26
--- /dev/null
+++ b/qa/922
@@ -0,0 +1,153 @@
+#!/bin/sh
+# PCP QA Test No. 922
+# exercise rate() function for derived metrics
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+export PCP_DERIVED_CONFIG=$tmp.config
+
+# real QA test starts here
+
+cat <<End-of-File >$tmp.config
+delta.cpu.user = delta(kernel.all.cpu.user)
+rate.cpu.user = rate(kernel.all.cpu.user)
+
+delta.milliseconds = delta(sample.milliseconds)
+rate.milliseconds = rate(sample.milliseconds)
+
+delta.seconds = delta(sample.seconds)
+rate.seconds = rate(sample.seconds)
+
+delta.step_counter = delta(sample.step_counter)
+rate.step_counter = rate(sample.step_counter)
+
+delta.kbyte_ctr = delta(sample.kbyte_ctr)
+rate.kbyte_ctr = rate(sample.kbyte_ctr)
+
+End-of-File
+
+echo "--- kernel.all.cpu.user ---"
+
+cat <<End-of-File >$tmp.pmie
+raw = kernel.all.cpu.user;
+delta.cpu = delta.cpu.user;
+rate.cpu = rate.cpu.user;
+ruleset
+ 100 * (kernel.all.cpu.user - rate.cpu.user ) / kernel.all.cpu.user > 1 ->
+ print "kernel.all.cpu.user pct error: %v"
+else
+ 100 * (kernel.all.cpu.user - rate.cpu.user ) / kernel.all.cpu.user < -1 ->
+ print "kernel.all.cpu.user pct error: %v"
+;
+End-of-File
+
+pminfo -d kernel.all.cpu.user delta.cpu.user rate.cpu.user
+pmval -z -f3 -w12 -t 5min -asrc/960624.08.17_v2 kernel.all.cpu.user
+pmval -z -f3 -w12 -r -t 5min -a src/960624.08.17_v2 kernel.all.cpu.user
+pmie -z -v -c $tmp.pmie -t 5min -a src/960624.08.17_v2 2>&1 \
+| _filter_pmie_log
+
+echo
+echo "--- sample.milliseconds ---"
+
+cat <<End-of-File >$tmp.pmie
+raw = sample.milliseconds;
+delta.milliseconds = delta.milliseconds;
+rate.milliseconds = rate.milliseconds;
+ruleset
+ 100 * (sample.milliseconds - rate.milliseconds ) / sample.milliseconds > 1 ->
+ print "sample.milliseconds pct error: %v"
+else
+ 100 * (sample.milliseconds - rate.milliseconds ) / sample.milliseconds < -1 ->
+ print "sample.milliseconds pct error: %v"
+;
+End-of-File
+
+pminfo -d sample.milliseconds delta.milliseconds rate.milliseconds
+pmval -z -f3 -w12 -t 3sec -a src/ok-bigbin sample.milliseconds
+pmval -z -f3 -w12 -r -t 3sec -a src/ok-bigbin sample.milliseconds
+pmie -z -v -c $tmp.pmie -t 3sec -a src/ok-bigbin 2>&1 \
+| _filter_pmie_log
+
+echo
+echo "--- sample.seconds ---"
+
+cat <<End-of-File >$tmp.pmie
+raw = sample.seconds;
+delta.seconds = delta.seconds;
+rate.seconds = rate.seconds;
+ruleset
+ 100 * (sample.seconds - rate.seconds ) / sample.seconds > 1 ->
+ print "sample.seconds pct error: %v"
+else
+ 100 * (sample.seconds - rate.seconds ) / sample.seconds < -1 ->
+ print "sample.seconds pct error: %v"
+;
+End-of-File
+
+pminfo -d sample.seconds delta.seconds rate.seconds
+pmval -z -f3 -w12 -t 2sec -a src/ok-foo sample.seconds
+pmval -z -f3 -w12 -r -t 2sec -a src/ok-foo sample.seconds
+pmie -z -v -c $tmp.pmie -t 2sec -a src/ok-foo 2>&1 \
+| _filter_pmie_log
+
+echo
+echo "--- sample.step_counter ---"
+
+cat <<End-of-File >$tmp.pmie
+raw = sample.step_counter;
+delta.step_counter = delta.step_counter;
+rate.step_counter = rate.step_counter;
+ruleset
+ 100 * (sample.step_counter - rate.step_counter ) / sample.step_counter > 1 ->
+ print "sample.step_counter pct error: %v"
+else
+ 100 * (sample.step_counter - rate.step_counter ) / sample.step_counter < -1 ->
+ print "sample.step_counter pct error: %v"
+;
+End-of-File
+
+pminfo -d sample.step_counter delta.step_counter rate.step_counter
+pmval -z -f3 -w12 -t 60sec -a src/reduce-gap sample.step_counter
+pmval -z -f3 -w12 -r -t 60sec -a src/reduce-gap sample.step_counter
+pmie -z -v -c $tmp.pmie -t 60sec -a src/reduce-gap 2>&1 \
+| _filter_pmie_log
+
+echo
+echo "--- sample.kbyte_ctr ---"
+
+cat <<End-of-File >$tmp.pmie
+raw = sample.kbyte_ctr;
+delta.kbyte_ctr = delta.kbyte_ctr / 1 Kbyte;
+rate.kbyte_ctr = rate.kbyte_ctr / 1 Kbyte;
+ruleset
+ 100 * (sample.kbyte_ctr - rate.kbyte_ctr ) / sample.kbyte_ctr > 1 ->
+ print "sample.kbyte_ctr pct error: %v"
+else
+ 100 * (sample.kbyte_ctr - rate.kbyte_ctr ) / sample.kbyte_ctr < -1 ->
+ print "sample.kbyte_ctr pct error: %v"
+;
+End-of-File
+
+pminfo -d sample.kbyte_ctr delta.kbyte_ctr rate.kbyte_ctr
+pmval -z -f3 -w12 -t 1sec -a src/sample_expr sample.kbyte_ctr
+pmval -z -f3 -w12 -r -t 1sec -a src/sample_expr sample.kbyte_ctr
+pmie -z -v -c $tmp.pmie -t 1sec -a src/sample_expr 2>&1 \
+| _filter_pmie_log
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/922.out b/qa/922.out
new file mode 100644
index 0000000..21ba3b6
--- /dev/null
+++ b/qa/922.out
@@ -0,0 +1,442 @@
+QA output created by 922
+--- kernel.all.cpu.user ---
+
+kernel.all.cpu.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+delta.cpu.user
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: millisec
+
+rate.cpu.user
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+metric: kernel.all.cpu.user
+archive: src/960624.08.17_v2
+host: brutus.corp
+start: Sun Jun 23 15:23:46 1996
+end: Sun Jun 23 15:43:26 1996
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 4
+interval: 300.00 sec
+15:28:46.349 2.849
+15:33:46.349 2.982
+15:38:46.349 2.791
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "brutus.corp" from archive
+
+metric: kernel.all.cpu.user
+archive: src/960624.08.17_v2
+host: brutus.corp
+start: Sun Jun 23 15:23:46 1996
+end: Sun Jun 23 15:43:26 1996
+semantics: cumulative counter
+units: millisec
+samples: 4
+interval: 300.00 sec
+15:23:46.349 14914014
+15:28:46.349 15768745
+15:33:46.349 16663459
+15:38:46.349 17500897
+pmie: timezone set to local timezone of host brutus.corp
+raw (DATE): ?
+delta.cpu (DATE): ?
+rate.cpu (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): 2.85
+delta.cpu (DATE): 855
+rate.cpu (DATE): 2.85
+expr_1 (DATE): false
+
+raw (DATE): 2.98
+delta.cpu (DATE): 895
+rate.cpu (DATE): 2.98
+expr_1 (DATE): false
+
+raw (DATE): 2.79
+delta.cpu (DATE): 837
+rate.cpu (DATE): 2.79
+expr_1 (DATE): false
+
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+--- sample.milliseconds ---
+
+sample.milliseconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: millisec
+
+delta.milliseconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: millisec
+
+rate.milliseconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Note: timezone set to local timezone of host "ha2" from archive
+
+metric: sample.milliseconds
+archive: src/ok-bigbin
+host: ha2
+start: Mon May 3 21:52:32 1999
+end: Mon May 3 21:52:52 1999
+semantics: cumulative counter (converting to rate)
+units: millisec (converting to time utilization)
+samples: 7
+interval: 3.00 sec
+21:52:32.647 No values available
+21:52:35.647 No values available
+21:52:38.647 1.000
+21:52:41.647 1.000
+21:52:44.647 1.000
+21:52:47.647 1.000
+21:52:50.647 1.000
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "ha2" from archive
+
+metric: sample.milliseconds
+archive: src/ok-bigbin
+host: ha2
+start: Mon May 3 21:52:32 1999
+end: Mon May 3 21:52:52 1999
+semantics: cumulative counter
+units: millisec
+samples: 7
+interval: 3.00 sec
+21:52:32.647 No values available
+21:52:35.647 4121536.610
+21:52:38.647 4124536.605
+21:52:41.647 4127536.607
+21:52:44.647 4130536.612
+21:52:47.647 4133536.589
+21:52:50.647 4136536.609
+pmie: timezone set to local timezone of host ha2
+raw (DATE): ?
+delta.milliseconds (DATE): ?
+rate.milliseconds (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): ?
+delta.milliseconds (DATE): ?
+rate.milliseconds (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): 1.00
+delta.milliseconds (DATE): 3.00
+rate.milliseconds (DATE): 1.00
+expr_1 (DATE): false
+
+raw (DATE): 1.00
+delta.milliseconds (DATE): 3.00
+rate.milliseconds (DATE): 1.00
+expr_1 (DATE): false
+
+raw (DATE): 1.00
+delta.milliseconds (DATE): 3.00
+rate.milliseconds (DATE): 1.00
+expr_1 (DATE): false
+
+raw (DATE): 1.00
+delta.milliseconds (DATE): 3.00
+rate.milliseconds (DATE): 1.00
+expr_1 (DATE): false
+
+raw (DATE): 1.00
+delta.milliseconds (DATE): 3.00
+rate.milliseconds (DATE): 1.00
+expr_1 (DATE): false
+
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+--- sample.seconds ---
+
+sample.seconds
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: sec
+
+delta.seconds
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: sec
+
+rate.seconds
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.seconds
+archive: src/ok-foo
+host: gonzo
+start: Fri Aug 7 04:34:32 1998
+end: Fri Aug 7 04:34:40 1998
+semantics: cumulative counter (converting to rate)
+units: sec (converting to time utilization)
+samples: 5
+interval: 2.00 sec
+04:34:32.257 No values available
+04:34:34.257 No values available
+04:34:36.257 1.000
+04:34:38.257 1.000
+04:34:40.257 1.000
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "gonzo" from archive
+
+metric: sample.seconds
+archive: src/ok-foo
+host: gonzo
+start: Fri Aug 7 04:34:32 1998
+end: Fri Aug 7 04:34:40 1998
+semantics: cumulative counter
+units: sec
+samples: 5
+interval: 2.00 sec
+04:34:32.257 No values available
+04:34:34.257 891
+04:34:36.257 893
+04:34:38.257 895
+04:34:40.257 897
+pmie: timezone set to local timezone of host gonzo
+raw (DATE): ?
+delta.seconds (DATE): ?
+rate.seconds (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): ?
+delta.seconds (DATE): ?
+rate.seconds (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): 1
+delta.seconds (DATE): 2
+rate.seconds (DATE): 1
+expr_1 (DATE): false
+
+raw (DATE): 1
+delta.seconds (DATE): 2
+rate.seconds (DATE): 1
+expr_1 (DATE): false
+
+raw (DATE): 1
+delta.seconds (DATE): 2
+rate.seconds (DATE): 1
+expr_1 (DATE): false
+
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+--- sample.step_counter ---
+
+sample.step_counter
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+
+delta.step_counter
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count
+
+rate.step_counter
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: count / sec
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.step_counter
+archive: src/reduce-gap
+host: kenj-pc
+start: Wed Jan 19 21:56:48 2005
+end: Wed Jan 19 22:10:26 2005
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 14
+interval: 60.00 sec
+21:56:48.422 No values available
+21:57:48.422 No values available
+21:58:48.422 0.667
+21:59:48.422 0.667
+22:00:48.422 0.667
+22:01:48.422 0.667
+22:02:48.422 No values available
+22:03:48.422 No values available
+22:04:48.422 No values available
+22:05:48.422 No values available
+22:06:48.422 0.667
+22:07:48.422 0.667
+22:08:48.422 0.667
+22:09:48.422 0.667
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "kenj-pc" from archive
+
+metric: sample.step_counter
+archive: src/reduce-gap
+host: kenj-pc
+start: Wed Jan 19 21:56:48 2005
+end: Wed Jan 19 22:10:26 2005
+semantics: cumulative counter
+units: count
+samples: 14
+interval: 60.00 sec
+21:56:48.422 No values available
+21:57:48.422 2300
+21:58:48.422 2340
+21:59:48.422 2380
+22:00:48.422 2420
+22:01:48.422 2460
+22:02:48.422 No values available
+22:03:48.422 No values available
+22:04:48.422 No values available
+22:05:48.422 2620
+22:06:48.422 2660
+22:07:48.422 2700
+22:08:48.422 2740
+22:09:48.422 2780
+pmie: timezone set to local timezone of host kenj-pc
+raw (DATE): ?
+delta.step_counter (DATE): ?
+rate.step_counter (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): ?
+delta.step_counter (DATE): ?
+rate.step_counter (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+raw (DATE): ?
+delta.step_counter (DATE): ?
+rate.step_counter (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): ?
+delta.step_counter (DATE): ?
+rate.step_counter (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): ?
+delta.step_counter (DATE): ?
+rate.step_counter (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): ?
+delta.step_counter (DATE): ?
+rate.step_counter (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+raw (DATE): 0.67
+delta.step_counter (DATE): 40
+rate.step_counter (DATE): 0.67
+expr_1 (DATE): false
+
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
+
+--- sample.kbyte_ctr ---
+
+sample.kbyte_ctr
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+
+delta.kbyte_ctr
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte
+
+rate.kbyte_ctr
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: Kbyte / sec
+Note: timezone set to local timezone of host "bozo" from archive
+
+metric: sample.kbyte_ctr
+archive: src/sample_expr
+host: bozo
+start: Wed Dec 30 21:58:59 2009
+end: Wed Dec 30 21:59:04 2009
+semantics: cumulative counter (converting to rate)
+units: Kbyte (converting to Kbyte / sec)
+samples: 5
+interval: 1.00 sec
+21:58:59.005 No values available
+21:59:00.005 No values available
+21:59:01.005 2103.000
+21:59:02.005 941.000
+21:59:03.005 1347.000
+Note: timezone set to local timezone of host "bozo" from archive
+
+metric: sample.kbyte_ctr
+archive: src/sample_expr
+host: bozo
+start: Wed Dec 30 21:58:59 2009
+end: Wed Dec 30 21:59:04 2009
+semantics: cumulative counter
+units: Kbyte
+samples: 5
+interval: 1.00 sec
+21:58:59.005 No values available
+21:59:00.005 23979
+21:59:01.005 26082
+21:59:02.005 27023
+21:59:03.005 28370
+pmie: timezone set to local timezone of host bozo
+raw (DATE): ?
+delta.kbyte_ctr (DATE): ?
+rate.kbyte_ctr (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): ?
+delta.kbyte_ctr (DATE): ?
+rate.kbyte_ctr (DATE): ?
+expr_1 (DATE): unknown
+
+raw (DATE): 2153472
+delta.kbyte_ctr (DATE): 2103
+rate.kbyte_ctr (DATE): 2103
+expr_1 (DATE): false
+
+raw (DATE): 963584
+delta.kbyte_ctr (DATE): 941
+rate.kbyte_ctr (DATE): 941
+expr_1 (DATE): false
+
+raw (DATE): 1379328
+delta.kbyte_ctr (DATE): 1347
+rate.kbyte_ctr (DATE): 1347
+expr_1 (DATE): false
+
+[TIMESTAMP] pmie(PID) Info: evaluator exiting
diff --git a/qa/928 b/qa/928
new file mode 100755
index 0000000..38be1c1
--- /dev/null
+++ b/qa/928
@@ -0,0 +1,45 @@
+#!/bin/sh
+# PCP QA Test No. 928
+# Check __pmLogPutResult2() vs __pmLogPutResult()
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+export TZ=UTC
+
+echo "+++ __pmLogPutresult() +++"
+src/chkputlogresult -b $tmp.1
+pmdumplog -a $tmp.1
+
+echo
+echo "+++ __pmLogPutresult2() +++"
+src/chkputlogresult $tmp.2
+pmdumplog -a $tmp.2
+
+echo
+echo "+++ compare files (expect no diffs) +++"
+for ext in 0 meta index
+do
+ echo ".$ext files"
+ cmp $tmp.1.$ext $tmp.2.$ext
+done
+
+
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/928.out b/qa/928.out
new file mode 100644
index 0000000..08b6be3
--- /dev/null
+++ b/qa/928.out
@@ -0,0 +1,201 @@
+QA output created by 928
++++ __pmLogPutresult() +++
+sampledso.long.one -> 30.0.10
+sampledso.ulonglong.one -> 30.0.98
+sampledso.float.one -> 30.0.15
+sampledso.double.one -> 30.0.25
+sampledso.string.hullo -> 30.0.31
+sampledso.bin -> 30.0.6
+__pmLogPutResult: 1 metrics ...
+__pmLogPutResult: 2 metrics ...
+__pmLogPutResult: 3 metrics ...
+__pmLogPutResult: 4 metrics ...
+__pmLogPutResult: 5 metrics ...
+__pmLogPutResult: 6 metrics ...
+Log Label (Log Format Version 2)
+Performance metrics from host happycamper
+ commencing Thu Jan 1 00:00:00.000 1970
+ ending Thu Jan 1 00:00:06.000 1970
+
+Descriptions for Metrics in the Log ...
+PMID: 30.0.6 (sampledso.bin)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+PMID: 30.0.31 (sampledso.string.hullo)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.25 (sampledso.double.one)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.15 (sampledso.float.one)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.98 (sampledso.ulonglong.one)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.10 (sampledso.long.one)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 30.2
+00:00:00.000 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:00.000 0 132 132
+00:00:06.000 0 659 904
+
+[40 bytes]
+00:00:01.000 30.0.10 (sampledso.long.one): value 1
+
+[72 bytes]
+00:00:02.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+
+[100 bytes]
+00:00:03.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+
+[132 bytes]
+00:00:04.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+ 30.0.25 (sampledso.double.one): value 1
+
+[172 bytes]
+00:00:05.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+ 30.0.25 (sampledso.double.one): value 1
+ 30.0.31 (sampledso.string.hullo): value "hullo world!"
+
+[256 bytes]
+00:00:06.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+ 30.0.25 (sampledso.double.one): value 1
+ 30.0.31 (sampledso.string.hullo): value "hullo world!"
+ 30.0.6 (sampledso.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
++++ __pmLogPutresult2() +++
+sampledso.long.one -> 30.0.10
+sampledso.ulonglong.one -> 30.0.98
+sampledso.float.one -> 30.0.15
+sampledso.double.one -> 30.0.25
+sampledso.string.hullo -> 30.0.31
+sampledso.bin -> 30.0.6
+__pmLogPutResult2: 1 metrics ...
+__pmLogPutResult2: 2 metrics ...
+__pmLogPutResult2: 3 metrics ...
+__pmLogPutResult2: 4 metrics ...
+__pmLogPutResult2: 5 metrics ...
+__pmLogPutResult2: 6 metrics ...
+Log Label (Log Format Version 2)
+Performance metrics from host happycamper
+ commencing Thu Jan 1 00:00:00.000 1970
+ ending Thu Jan 1 00:00:06.000 1970
+
+Descriptions for Metrics in the Log ...
+PMID: 30.0.6 (sampledso.bin)
+ Data Type: 32-bit int InDom: 30.2 0x7800002
+ Semantics: instant Units: none
+PMID: 30.0.31 (sampledso.string.hullo)
+ Data Type: string InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.25 (sampledso.double.one)
+ Data Type: double InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.15 (sampledso.float.one)
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.98 (sampledso.ulonglong.one)
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 30.0.10 (sampledso.long.one)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 30.2
+00:00:00.000 9 instances
+ 100 or "bin-100"
+ 200 or "bin-200"
+ 300 or "bin-300"
+ 400 or "bin-400"
+ 500 or "bin-500"
+ 600 or "bin-600"
+ 700 or "bin-700"
+ 800 or "bin-800"
+ 900 or "bin-900"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+00:00:00.000 0 132 132
+00:00:06.000 0 659 904
+
+[40 bytes]
+00:00:01.000 30.0.10 (sampledso.long.one): value 1
+
+[72 bytes]
+00:00:02.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+
+[100 bytes]
+00:00:03.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+
+[132 bytes]
+00:00:04.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+ 30.0.25 (sampledso.double.one): value 1
+
+[172 bytes]
+00:00:05.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+ 30.0.25 (sampledso.double.one): value 1
+ 30.0.31 (sampledso.string.hullo): value "hullo world!"
+
+[256 bytes]
+00:00:06.000 30.0.10 (sampledso.long.one): value 1
+ 30.0.98 (sampledso.ulonglong.one): value 1
+ 30.0.15 (sampledso.float.one): value 1
+ 30.0.25 (sampledso.double.one): value 1
+ 30.0.31 (sampledso.string.hullo): value "hullo world!"
+ 30.0.6 (sampledso.bin):
+ inst [100 or "bin-100"] value 100
+ inst [200 or "bin-200"] value 200
+ inst [300 or "bin-300"] value 300
+ inst [400 or "bin-400"] value 400
+ inst [500 or "bin-500"] value 500
+ inst [600 or "bin-600"] value 600
+ inst [700 or "bin-700"] value 700
+ inst [800 or "bin-800"] value 800
+ inst [900 or "bin-900"] value 900
+
++++ compare files (expect no diffs) +++
+.0 files
+.meta files
+.index files
diff --git a/qa/929 b/qa/929
new file mode 100755
index 0000000..35a9bf2
--- /dev/null
+++ b/qa/929
@@ -0,0 +1,84 @@
+#!/bin/sh
+# PCP QA Test No. 929
+# pmlogger_daily optimization for only one archive (pmlogmv not pmlogextract)
+# and -M option (don't rewrite, merge or move)
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+
+_cleanup()
+{
+ [ -d $tmp.one ] && rm -fr $tmp.one
+ [ -d $tmp.two ] && rm -fr $tmp.two
+ $sudo rm -f $tmp.*
+}
+
+_filter()
+{
+ # strip lines like ...
+ # Roll /var/log/pcp/NOTICES -> /var/log/pcp/NOTICES.old
+ # Start new /var/log/pcp/NOTICES
+ # + mv -f /var/log/pcp/NOTICES /var/log/pcp/NOTICES.old
+ # + touch /var/log/pcp/NOTICES
+ # as we have no control over the trigger for this (the size of the
+ # NOTICES file)
+ #
+ # and do the usual config/pid filtering
+ #
+ sed \
+ -e '/NOTICES/d' \
+ -e "s,$tmp,TMP,g" \
+ -e "s,$PCP_TMP_DIR,PCP_TMP_DIR,g" \
+ -e "s/$PAST/PAST/g"
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# create test control file
+#
+cat <<End-of-File >$tmp.control
+\$version=1.1
+#Host P? S? directory args
+one.somewhere n n $tmp.one -c config.default
+two.somewhere n n $tmp.two -c config.default
+End-of-File
+
+
+# archives for a couple of days ago
+#
+PAST=`pmdate -2d %Y%m%d`
+for host in one two
+do
+ mkdir -p $tmp.$host
+ for ext in 0 meta index
+ do
+ cp src/foo.$ext $tmp.$host/$PAST.00.10.$ext
+ touch -t "${PAST}0010" $tmp.$host/$PAST.00.10.$ext
+ if [ "$host" = "two" ]
+ then
+ cp src/foo.$ext $tmp.$host/$PAST.13.13.$ext
+ touch -t "${PAST}1313" $tmp.$host/$PAST.13.13.$ext
+ fi
+ done
+done
+
+# real QA test starts here
+$sudo $PCP_BINADM_DIR/pmlogger_daily -V -N -c $tmp.control \
+| _filter
+
+echo
+echo "--- -M case ---"
+$sudo $PCP_BINADM_DIR/pmlogger_daily -M -VN -c $tmp.control \
+| _filter
+
+# success, all done
+status=0
+exit
diff --git a/qa/929.out b/qa/929.out
new file mode 100644
index 0000000..65980e8
--- /dev/null
+++ b/qa/929.out
@@ -0,0 +1,37 @@
+QA output created by 929
+# $version=1.1
++ export version; version=1.1
++ cd TMP.one
+
+=== daily maintenance of PCP archives for host one.somewhere ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "one.somewhere"
+[TMP.control:3] ... logging for host "one.somewhere" unchanged
+
++ pmlogmv -V -N PAST.00.10 PAST
++ cd TMP.two
+
+=== daily maintenance of PCP archives for host two.somewhere ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "two.somewhere"
+[TMP.control:4] ... logging for host "two.somewhere" unchanged
+
++ pmlogger_merge -V -N -f PAST.00.10 PAST.13.13 PAST
+
+--- -M case ---
+# $version=1.1
++ export version; version=1.1
++ cd TMP.one
+
+=== daily maintenance of PCP archives for host one.somewhere ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "one.somewhere"
+[TMP.control:3] ... logging for host "one.somewhere" unchanged
+
++ cd TMP.two
+
+=== daily maintenance of PCP archives for host two.somewhere ===
+
+pmlogger_daily: Error: no pmlogger instance running for host "two.somewhere"
+[TMP.control:4] ... logging for host "two.somewhere" unchanged
+
diff --git a/qa/943 b/qa/943
new file mode 100755
index 0000000..42e172a
--- /dev/null
+++ b/qa/943
@@ -0,0 +1,51 @@
+#!/bin/sh
+# PCP QA Test No. 943
+# Exercise pmdaproc access permission checking.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_get_libpcp_config
+$unix_domain_sockets || _notrun "No unix domain socket support available"
+$authentication || _notrun "No authentication support available"
+pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter_counts()
+{
+ $PCP_AWK_PROG '$2 > 0 { $2 = "COUNT" } { print }'
+}
+
+# lists of metrics
+unprivileged="proc.nprocs proc.runq"
+privileged="proc.psinfo proc.memory proc.id proc.fd"
+
+# notes:
+# proc.schedstat not present in older nor newer kernels (farewell!)
+# proc.io file permissions sometimes prevent reading after seteuid?
+# debug: pminfo -L -K add,3,proc/pmda_proc.so,proc_init proc.io -f
+
+# real QA test starts here
+echo "== Check unprivileged metric access"
+pmprobe -h localhost $unprivileged | _filter_counts
+
+echo "== Check protected per-process metric fetches (expect errors)"
+pmprobe -h localhost $privileged | _filter_counts
+
+echo "== Check authentic per-process metric fetches (expect values)"
+pmprobe -h unix: $privileged | _filter_counts
+
+# success, all done
+status=0
+exit
diff --git a/qa/943.out b/qa/943.out
new file mode 100644
index 0000000..c8d5595
--- /dev/null
+++ b/qa/943.out
@@ -0,0 +1,175 @@
+QA output created by 943
+== Check unprivileged metric access
+proc.nprocs COUNT
+proc.runq.runnable COUNT
+proc.runq.blocked COUNT
+proc.runq.sleeping COUNT
+proc.runq.stopped COUNT
+proc.runq.swapped COUNT
+proc.runq.defunct COUNT
+proc.runq.unknown COUNT
+proc.runq.kernel COUNT
+== Check protected per-process metric fetches (expect errors)
+proc.psinfo.pid -12387 No permission to perform requested operation
+proc.psinfo.cmd -12387 No permission to perform requested operation
+proc.psinfo.sname -12387 No permission to perform requested operation
+proc.psinfo.ppid -12387 No permission to perform requested operation
+proc.psinfo.pgrp -12387 No permission to perform requested operation
+proc.psinfo.session -12387 No permission to perform requested operation
+proc.psinfo.tty -12387 No permission to perform requested operation
+proc.psinfo.tty_pgrp -12387 No permission to perform requested operation
+proc.psinfo.flags -12387 No permission to perform requested operation
+proc.psinfo.minflt -12387 No permission to perform requested operation
+proc.psinfo.cmin_flt -12387 No permission to perform requested operation
+proc.psinfo.maj_flt -12387 No permission to perform requested operation
+proc.psinfo.cmaj_flt -12387 No permission to perform requested operation
+proc.psinfo.utime -12387 No permission to perform requested operation
+proc.psinfo.stime -12387 No permission to perform requested operation
+proc.psinfo.cutime -12387 No permission to perform requested operation
+proc.psinfo.cstime -12387 No permission to perform requested operation
+proc.psinfo.priority -12387 No permission to perform requested operation
+proc.psinfo.nice -12387 No permission to perform requested operation
+proc.psinfo.it_real_value -12387 No permission to perform requested operation
+proc.psinfo.start_time -12387 No permission to perform requested operation
+proc.psinfo.vsize -12387 No permission to perform requested operation
+proc.psinfo.rss -12387 No permission to perform requested operation
+proc.psinfo.rss_rlim -12387 No permission to perform requested operation
+proc.psinfo.start_code -12387 No permission to perform requested operation
+proc.psinfo.end_code -12387 No permission to perform requested operation
+proc.psinfo.start_stack -12387 No permission to perform requested operation
+proc.psinfo.esp -12387 No permission to perform requested operation
+proc.psinfo.eip -12387 No permission to perform requested operation
+proc.psinfo.signal -12387 No permission to perform requested operation
+proc.psinfo.blocked -12387 No permission to perform requested operation
+proc.psinfo.sigignore -12387 No permission to perform requested operation
+proc.psinfo.sigcatch -12387 No permission to perform requested operation
+proc.psinfo.wchan -12387 No permission to perform requested operation
+proc.psinfo.nswap -12387 No permission to perform requested operation
+proc.psinfo.cnswap -12387 No permission to perform requested operation
+proc.psinfo.exit_signal -12387 No permission to perform requested operation
+proc.psinfo.processor -12387 No permission to perform requested operation
+proc.psinfo.ttyname -12387 No permission to perform requested operation
+proc.psinfo.wchan_s -12387 No permission to perform requested operation
+proc.psinfo.psargs -12387 No permission to perform requested operation
+proc.psinfo.signal_s -12387 No permission to perform requested operation
+proc.psinfo.blocked_s -12387 No permission to perform requested operation
+proc.psinfo.sigignore_s -12387 No permission to perform requested operation
+proc.psinfo.sigcatch_s -12387 No permission to perform requested operation
+proc.psinfo.threads -12387 No permission to perform requested operation
+proc.psinfo.cgroups -12387 No permission to perform requested operation
+proc.psinfo.labels -12387 No permission to perform requested operation
+proc.memory.size -12387 No permission to perform requested operation
+proc.memory.rss -12387 No permission to perform requested operation
+proc.memory.share -12387 No permission to perform requested operation
+proc.memory.textrss -12387 No permission to perform requested operation
+proc.memory.librss -12387 No permission to perform requested operation
+proc.memory.datrss -12387 No permission to perform requested operation
+proc.memory.dirty -12387 No permission to perform requested operation
+proc.memory.maps -12387 No permission to perform requested operation
+proc.memory.vmsize -12387 No permission to perform requested operation
+proc.memory.vmlock -12387 No permission to perform requested operation
+proc.memory.vmrss -12387 No permission to perform requested operation
+proc.memory.vmdata -12387 No permission to perform requested operation
+proc.memory.vmstack -12387 No permission to perform requested operation
+proc.memory.vmexe -12387 No permission to perform requested operation
+proc.memory.vmlib -12387 No permission to perform requested operation
+proc.memory.vmswap -12387 No permission to perform requested operation
+proc.id.uid -12387 No permission to perform requested operation
+proc.id.euid -12387 No permission to perform requested operation
+proc.id.suid -12387 No permission to perform requested operation
+proc.id.fsuid -12387 No permission to perform requested operation
+proc.id.gid -12387 No permission to perform requested operation
+proc.id.egid -12387 No permission to perform requested operation
+proc.id.sgid -12387 No permission to perform requested operation
+proc.id.fsgid -12387 No permission to perform requested operation
+proc.id.uid_nm -12387 No permission to perform requested operation
+proc.id.euid_nm -12387 No permission to perform requested operation
+proc.id.suid_nm -12387 No permission to perform requested operation
+proc.id.fsuid_nm -12387 No permission to perform requested operation
+proc.id.gid_nm -12387 No permission to perform requested operation
+proc.id.egid_nm -12387 No permission to perform requested operation
+proc.id.sgid_nm -12387 No permission to perform requested operation
+proc.id.fsgid_nm -12387 No permission to perform requested operation
+proc.fd.count -12387 No permission to perform requested operation
+== Check authentic per-process metric fetches (expect values)
+proc.psinfo.pid COUNT
+proc.psinfo.cmd COUNT
+proc.psinfo.sname COUNT
+proc.psinfo.ppid COUNT
+proc.psinfo.pgrp COUNT
+proc.psinfo.session COUNT
+proc.psinfo.tty COUNT
+proc.psinfo.tty_pgrp COUNT
+proc.psinfo.flags COUNT
+proc.psinfo.minflt COUNT
+proc.psinfo.cmin_flt COUNT
+proc.psinfo.maj_flt COUNT
+proc.psinfo.cmaj_flt COUNT
+proc.psinfo.utime COUNT
+proc.psinfo.stime COUNT
+proc.psinfo.cutime COUNT
+proc.psinfo.cstime COUNT
+proc.psinfo.priority COUNT
+proc.psinfo.nice COUNT
+proc.psinfo.it_real_value COUNT
+proc.psinfo.start_time COUNT
+proc.psinfo.vsize COUNT
+proc.psinfo.rss COUNT
+proc.psinfo.rss_rlim COUNT
+proc.psinfo.start_code COUNT
+proc.psinfo.end_code COUNT
+proc.psinfo.start_stack COUNT
+proc.psinfo.esp COUNT
+proc.psinfo.eip COUNT
+proc.psinfo.signal COUNT
+proc.psinfo.blocked COUNT
+proc.psinfo.sigignore COUNT
+proc.psinfo.sigcatch COUNT
+proc.psinfo.wchan COUNT
+proc.psinfo.nswap COUNT
+proc.psinfo.cnswap COUNT
+proc.psinfo.exit_signal COUNT
+proc.psinfo.processor COUNT
+proc.psinfo.ttyname COUNT
+proc.psinfo.wchan_s COUNT
+proc.psinfo.psargs COUNT
+proc.psinfo.signal_s COUNT
+proc.psinfo.blocked_s COUNT
+proc.psinfo.sigignore_s COUNT
+proc.psinfo.sigcatch_s COUNT
+proc.psinfo.threads COUNT
+proc.psinfo.cgroups COUNT
+proc.psinfo.labels COUNT
+proc.memory.size COUNT
+proc.memory.rss COUNT
+proc.memory.share COUNT
+proc.memory.textrss COUNT
+proc.memory.librss COUNT
+proc.memory.datrss COUNT
+proc.memory.dirty COUNT
+proc.memory.maps COUNT
+proc.memory.vmsize COUNT
+proc.memory.vmlock COUNT
+proc.memory.vmrss COUNT
+proc.memory.vmdata COUNT
+proc.memory.vmstack COUNT
+proc.memory.vmexe COUNT
+proc.memory.vmlib COUNT
+proc.memory.vmswap COUNT
+proc.id.uid COUNT
+proc.id.euid COUNT
+proc.id.suid COUNT
+proc.id.fsuid COUNT
+proc.id.gid COUNT
+proc.id.egid COUNT
+proc.id.sgid COUNT
+proc.id.fsgid COUNT
+proc.id.uid_nm COUNT
+proc.id.euid_nm COUNT
+proc.id.suid_nm COUNT
+proc.id.fsuid_nm COUNT
+proc.id.gid_nm COUNT
+proc.id.egid_nm COUNT
+proc.id.sgid_nm COUNT
+proc.id.fsgid_nm COUNT
+proc.fd.count COUNT
diff --git a/qa/944 b/qa/944
new file mode 100755
index 0000000..cdaca5b
--- /dev/null
+++ b/qa/944
@@ -0,0 +1,148 @@
+#!/bin/sh
+# PCP QA Test No. 944
+# Exercise user/group access control lists in pmcd.
+#
+# Have to take extra care with filtering in this test,
+# as user ID and group ID may well be equal for a given
+# user (user name and group name might well be too).
+# As a result, testing is performed separately to avoid
+# incorrectly filtering one as the other.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.secure
+
+_get_libpcp_config
+$unix_domain_sockets || _notrun "No unix domain socket support available"
+id -u nobody >/dev/null 2>&1 || _notrun "User nobody unavailable"
+id -g nobody >/dev/null 2>&1 || _notrun "Group nobody unavailable"
+
+nobodyuid=`id -u nobody`
+nobodygid=`id -g nobody`
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_start_local_pmcd()
+{
+ pmcd -f -x $seq.full -l $tmp.log &
+ pid=$!
+ pmcd_wait -h unix:$PMCD_SOCKET -v -t 5sec
+}
+
+_stop_local_pmcd()
+{
+ if [ -n "$pid" ]
+ then
+ echo "Terminating local pmcd process"
+ $signal -s TERM $pid
+ wait
+ pid=""
+ fi
+}
+
+_cleanup()
+{
+ _stop_local_pmcd
+ cd $here; rm -rf $tmp.*
+}
+
+_filter_user()
+{
+ _filter_common \
+ | sed \
+ -e "s: *$userid $username *: USERID USERNAME :g" \
+ -e "s: *$groupid($groupname).*$: GROUPID(GROUPNAME),...:g" \
+ ; echo
+}
+
+_filter_group()
+{
+ _filter_common \
+ | sed \
+ -e "s: *$groupid $groupname *: GROUPID GROUPNAME :g" \
+ -e "s: *$userid($username).*$: USERID(USERNAME),...:g" \
+ ; echo
+}
+
+_filter_common()
+{
+ _filter_pmcd_log \
+ | sed \
+ -e "s:$tmp:TMP:g" \
+ -e "s:-U $username:-U USERNAME:g" \
+ -e "s:$PCP_PMDAS_DIR:PCP_PMDAS_DIR:g" \
+ -e "s:$nobodyuid nobody:NOBODYID nobody:g" \
+ -e "s:$nobodygid nobody:NOBODYID nobody:g" \
+ -e "s:$nobodyuid(nobody).*$:NOBODYID(nobody):g" \
+ -e "s:$nobodygid(nobody).*$:NOBODYID(nobody):g" \
+ -e "s: $PMCD_PORT : port :g" \
+ | $PCP_AWK_PROG '\
+ /^sample / { $2 = " DOMAIN"; $3 = " PID"; \
+ $4 = " IN"; $5 = "OUT"; $6 = "VER"; \
+ } { print }'
+}
+
+# real QA test starts here
+export PCP_PMCDCONF_PATH=$tmp.conf
+export PMCD_PORT=9876
+export PMCD_SOCKET=$tmp.pmcd.socket
+
+# user test cases
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29 -U $username
+[access]
+allow user $username : fetch;
+disallow user $username : store;
+End-of-File
+_start_local_pmcd
+_filter_user <$tmp.log
+
+echo "Testing QA user allowed fetch access (explicit)"
+pmprobe -v -h unix:$PMCD_SOCKET sample.control
+
+echo "Testing QA user disallowed store access (explicit)"
+# expected to produce two lines of output - an initial fetch is done
+# (which is allowed), pmstore reports what it would do, then fails.
+pmstore -f -h unix:$PMCD_SOCKET sample.write_me 1
+
+echo "Testing nobody user disallowed fetch access (implicit)"
+$sudo -u nobody pminfo -f -h unix:$PMCD_SOCKET sample.control 2>&1
+
+_stop_local_pmcd
+_filter_user <$tmp.log
+
+# group test cases
+cat <<End-of-File >$tmp.conf
+sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29 -U $username
+[access]
+allow group $groupname : fetch;
+disallow group $groupname : store;
+End-of-File
+_start_local_pmcd
+_filter_group <$tmp.log
+
+echo "Testing QA group allowed fetch access (explicit)"
+pmprobe -v -h unix:$PMCD_SOCKET sample.control
+
+echo "Testing QA group disallowed store access (explicit)"
+# expected to produce two lines of output - an initial fetch is done
+# (which is allowed), pmstore reports what it would do, then fails.
+pmstore -f -h unix:$PMCD_SOCKET sample.write_me 1
+
+echo "Testing nobody group disallowed fetch access (implicit)"
+$sudo -u nobody pminfo -f -h unix:$PMCD_SOCKET sample.control 2>&1
+
+_stop_local_pmcd
+_filter_group <$tmp.log
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/944.out b/qa/944.out
new file mode 100644
index 0000000..4e41c1b
--- /dev/null
+++ b/qa/944.out
@@ -0,0 +1,119 @@
+QA output created by 944
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+sample DOMAIN PID IN OUT VER bin pipe cmd=PCP_PMDAS_DIR/sample/pmdasample -d 29 -U USERNAME
+
+Host access list empty: access control turned off
+User access list:
+00 01 Cur/MaxCons uid user-name group-list
+== == =========== ======= =============================== ==========================================================
+ y n 0 0 USERID USERNAME GROUPID(GROUPNAME),...
+ n n 0 0 * *
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD unix UNIX_DOMAIN_SOCKET
+ok FD port inet INADDR_ANY
+ok FD port ipv6 INADDR_ANY
+
+Testing QA user allowed fetch access (explicit)
+sample.control 1 0
+Testing QA user disallowed store access (explicit)
+sample.write_me old value=2 new value=1
+sample.write_me: pmStore: No permission to perform requested operation
+Testing nobody user disallowed fetch access (implicit)
+Error: sample.control: No permission to perform requested operation
+Terminating local pmcd process
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+sample DOMAIN PID IN OUT VER bin pipe cmd=PCP_PMDAS_DIR/sample/pmdasample -d 29 -U USERNAME
+
+Host access list empty: access control turned off
+User access list:
+00 01 Cur/MaxCons uid user-name group-list
+== == =========== ======= =============================== ==========================================================
+ y n 0 0 USERID USERNAME GROUPID(GROUPNAME),...
+ n n 0 0 * *
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD unix UNIX_DOMAIN_SOCKET
+ok FD port inet INADDR_ANY
+ok FD port ipv6 INADDR_ANY
+[DATE] pmcd(PID) Info: pmcd caught SIGTERM from pid=N uid=N
+Cleanup "sample" agent (dom 29): terminated, exit(0)
+[DATE] pmcd(PID) Info: pmcd Shutdown
+
+Log finished DATE
+
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+sample DOMAIN PID IN OUT VER bin pipe cmd=PCP_PMDAS_DIR/sample/pmdasample -d 29 -U USERNAME
+
+Host access list empty: access control turned off
+Group access list:
+00 01 Cur/MaxCons gid group-name user-list
+== == =========== ======= =============================== ==========================================================
+ y n 0 0 GROUPID GROUPNAME USERID(USERNAME),...
+ n n 0 0 * *
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD unix UNIX_DOMAIN_SOCKET
+ok FD port inet INADDR_ANY
+ok FD port ipv6 INADDR_ANY
+
+Testing QA group allowed fetch access (explicit)
+sample.control 1 0
+Testing QA group disallowed store access (explicit)
+sample.write_me old value=2 new value=1
+sample.write_me: pmStore: No permission to perform requested operation
+Testing nobody group disallowed fetch access (implicit)
+Error: sample.control: No permission to perform requested operation
+Terminating local pmcd process
+Log for pmcd on HOST started DATE
+
+
+active agent dom pid in out ver protocol parameters
+============ === ===== === === === ======== ==========
+sample DOMAIN PID IN OUT VER bin pipe cmd=PCP_PMDAS_DIR/sample/pmdasample -d 29 -U USERNAME
+
+Host access list empty: access control turned off
+Group access list:
+00 01 Cur/MaxCons gid group-name user-list
+== == =========== ======= =============================== ==========================================================
+ y n 0 0 GROUPID GROUPNAME USERID(USERNAME),...
+ n n 0 0 * *
+
+
+pmcd: PID = PID
+pmcd request port(s):
+ sts fd port family address
+ === ==== ===== ====== =======
+ok FD unix UNIX_DOMAIN_SOCKET
+ok FD port inet INADDR_ANY
+ok FD port ipv6 INADDR_ANY
+[DATE] pmcd(PID) Info: pmcd caught SIGTERM from pid=N uid=N
+Cleanup "sample" agent (dom 29): terminated, exit(0)
+[DATE] pmcd(PID) Info: pmcd Shutdown
+
+Log finished DATE
+
diff --git a/qa/945 b/qa/945
new file mode 100755
index 0000000..24d567c
--- /dev/null
+++ b/qa/945
@@ -0,0 +1,92 @@
+#!/bin/sh
+# PCP QA Test No. 945
+# Exercise log migration for the XFS from Linux PMDA split.
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+migrate=$PCP_VAR_DIR/config/pmlogrewrite/linux_xfs_migrate.conf
+
+_compare()
+{
+ echo "Label record diffs ..."
+ pmdumplog -z -L $1 >$tmp.1
+ pmdumplog -z -L $2 >$tmp.2
+ diff $tmp.1 $tmp.2
+
+ echo "Instance domain diffs ..."
+ pmdumplog -z -i $1 >$tmp.1
+ pmdumplog -z -i $2 >$tmp.2
+ diff $tmp.1 $tmp.2
+
+ echo "Metadata diffs ..."
+ pmdumplog -z -d $1 \
+ | sed -e '/^PMID/{
+N
+N
+s/\n */ /g
+}' \
+ | sort -k 3 >$tmp.1
+ pmdumplog -z -d $2 \
+ | sed -e '/^PMID/{
+N
+N
+s/\n */ /g
+}' \
+ | sort -k 3 >$tmp.2
+ # interested in these sorts of metrics
+ # PMID: 60.5.1 (filesys.capacity)
+ # Data Type: 64-bit unsigned int InDom: 60.5 0xf000005
+ # PMID: 11.30.0 (quota.state.project.accounting)
+ # Data Type: 32-bit unsigned int InDom: 11.5 0x2c00005
+ egrep 'filesys.free|quota.state.project.accounting' $tmp.1 >$tmp.1a
+ egrep 'filesys.free|quota.state.project.accounting' $tmp.2 >$tmp.2a
+ diff $tmp.1a $tmp.2a
+ sed -e 's/PMID: 60\./XX./g' -e 's/PMID: 11\./XX./g' \
+ -e '/InDom:/{
+s/m: 60\./m: XX./
+s/m: 11\./m: XX./
+s/ 0xf0/ 0xfXX/
+s/ 0x2c/ 0xfXX/
+}' $tmp.1 >$tmp.1a
+ sed -e 's/PMID: 60\./XX./g' -e 's/PMID: 11\./XX./g' \
+ -e '/InDom:/{
+s/m: 60\./m: XX./
+s/m: 11\./m: XX./
+s/ 0xf0/ 0xfXX/
+s/ 0x2c/ 0xfXX/
+}' $tmp.2 >$tmp.2a
+ diff $tmp.1a $tmp.2a
+
+ echo "Temporal index diffs ..."
+ pmdumplog -z -t $1 >$tmp.1
+ pmdumplog -z -t $2 >$tmp.2
+ diff $tmp.1 $tmp.2
+}
+
+# real QA test starts here
+original=src/old_xfs
+pmlogrewrite -c $migrate -w $original $tmp.new
+
+echo "=== old ===" >>$seq.full
+pmdumplog -z -a $original >>$seq.full
+echo "=== new ===" >>$seq.full
+pmdumplog -z -a $tmp.new >>$seq.full
+
+echo "old -> new changes"
+_compare $original $tmp.new
+
+# success, all done
+status=0
+exit
diff --git a/qa/945.out b/qa/945.out
new file mode 100644
index 0000000..43174b8
--- /dev/null
+++ b/qa/945.out
@@ -0,0 +1,16 @@
+QA output created by 945
+old -> new changes
+Label record diffs ...
+Instance domain diffs ...
+7a8,10
+> InDom: 11.16
+> 15:47:45.337 1 instances
+> 0 or "0:/dev/loop0"
+Metadata diffs ...
+Temporal index diffs ...
+7,8c7,8
+< 19:48:58.367 0 1426 2500
+< 19:49:58.367 0 11011 74836
+---
+> 19:48:58.367 0 1475 2500
+> 19:49:58.367 0 11060 74836
diff --git a/qa/946 b/qa/946
new file mode 100755
index 0000000..979323f
--- /dev/null
+++ b/qa/946
@@ -0,0 +1,71 @@
+#!/bin/sh
+# PCP QA Test No. 946
+# Test using the pmfind app to find pmcd servers using the avahi discovery mechanism
+#
+# Copyright (c) 2014 Red Hat. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./common.discovery
+
+_get_libpcp_config
+$service_discovery || _notrun "No support for service discovery"
+
+signal=$PCP_BINADM_DIR/pmsignal
+$sudo $signal -a pmproxy pmwebd
+
+# Make sure that the avahi mechanism is available.
+discovery_available=false
+avahi-daemon --check 2>/dev/null && discovery_available=true
+$discovery_available || _notrun "avahi discovery mechanism is not available"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "-m avahi"
+pmfind -m avahi | _filter_discovery_unresolved
+echo "Exit status: $?"
+
+echo "-s pmcd -m avahi -r"
+pmfind -s pmcd -m avahi -r | _filter_discovery_resolved
+echo "Exit status: $?"
+
+echo "-q -m avahi"
+pmfind -q -m avahi
+echo "Exit status: $?"
+
+echo "-q -s pmcd -m avahi"
+pmfind -q -s pmcd -m avahi
+echo "Exit status: $?"
+
+echo "-q -s pmcd -m avahi,timeout=5.0"
+pmfind -q -s pmcd -m avahi,timeout=5.0
+# up to 5 seconds may elapse here
+echo "Exit status: $?"
+
+echo "-q -s pmcd -m avahi with AVAHI_DISCOVERY_TIMEOUT=5"
+AVAHI_DISCOVERY_TIMEOUT=5 pmfind -q -s pmcd -m avahi
+# up to 5 seconds may elapse here
+echo "Exit status: $?"
+
+echo "-m all"
+pmfind -m all | _filter_discovery_unresolved
+echo "Exit status: $?"
+
+echo "-m all --resolve"
+pmfind -m all --resolve | _filter_discovery_resolved
+echo "Exit status: $?"
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/946.out b/qa/946.out
new file mode 100644
index 0000000..3d68652
--- /dev/null
+++ b/qa/946.out
@@ -0,0 +1,27 @@
+QA output created by 946
+-m avahi
+Discovered pmcd servers:
+Sought pmproxy servers
+Sought pmwebd servers
+Exit status: 0
+-s pmcd -m avahi -r
+Discovered pmcd servers:
+Exit status: 0
+-q -m avahi
+Exit status: 0
+-q -s pmcd -m avahi
+Exit status: 0
+-q -s pmcd -m avahi,timeout=5.0
+Exit status: 0
+-q -s pmcd -m avahi with AVAHI_DISCOVERY_TIMEOUT=5
+Exit status: 0
+-m all
+Discovered pmcd servers:
+Sought pmproxy servers
+Sought pmwebd servers
+Exit status: 0
+-m all --resolve
+Discovered pmcd servers:
+Sought pmproxy servers
+Sought pmwebd servers
+Exit status: 0
diff --git a/qa/950 b/qa/950
new file mode 100755
index 0000000..deb676a
--- /dev/null
+++ b/qa/950
@@ -0,0 +1,23 @@
+#!/bin/sh
+# PCP QA Test No. 950
+# Check that pmproxy advertises its presence using avahi
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.avahi
+avahi_notrun_checks
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "avahi_cleanup; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+service=pmproxy
+avahi_service
+avahi_verify
+status=0
+exit
diff --git a/qa/950.out b/qa/950.out
new file mode 100644
index 0000000..0ad4902
--- /dev/null
+++ b/qa/950.out
@@ -0,0 +1,3 @@
+QA output created by 950
+Verify pmproxy avahi service advertising
+ hostname = [HOSTNAME.local]
diff --git a/qa/957 b/qa/957
new file mode 100755
index 0000000..0cbe173
--- /dev/null
+++ b/qa/957
@@ -0,0 +1,48 @@
+#!/bin/sh
+# PCP QA Test No. 957
+# Run valgrind on the Linux kernel PMDA metrics
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+pmns=$PCP_VAR_DIR/pmns/root_linux
+[ -f $pmns ] || _notrun "Cannot find the Linux PMDA namespace root"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e '/No value.s. available/d' \
+ -e '/^Warning: noted but unhandled ioctl/d' \
+ -e '/^This could cause spurious value errors/d' \
+ -e '/^See README_MISSING_SYSCALL_OR_IOCTL/d' \
+ #
+}
+
+# real QA test starts here
+pmda="-Kclear -Kadd,60,$PCP_PMDAS_DIR/linux/pmda_linux.so,linux_init"
+trees=`pminfo -n $pmns | $PCP_AWK_PROG -F. '{ print $1 }' | sort -u`
+
+for subtree in $trees
+do
+ echo
+ echo "=== CHECKING SUBTREE: $subtree"
+ echo
+ _run_valgrind pminfo -v -L $pmda $subtree 2>&1 | _filter
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/957.out b/qa/957.out
new file mode 100644
index 0000000..25b5558
--- /dev/null
+++ b/qa/957.out
@@ -0,0 +1,207 @@
+QA output created by 957
+
+=== CHECKING SUBTREE: disk
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init disk
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: filesys
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init filesys
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: hinv
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init hinv
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: ipc
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init ipc
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: kernel
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init kernel
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: mem
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init mem
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: network
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init network
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: nfs
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init nfs
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: nfs3
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init nfs3
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: nfs4
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init nfs4
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: pmda
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init pmda
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: rpc
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init rpc
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: swap
+
+=== std out ===
+swap.in: Metric not supported by this version of monitored application
+swap.out: Metric not supported by this version of monitored application
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init swap
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: swapdev
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init swapdev
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: sysfs
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init sysfs
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: tmpfs
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init tmpfs
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+=== CHECKING SUBTREE: vfs
+
+=== std out ===
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -v -L -Kclear -Kadd,60,/var/lib/pcp/pmdas/linux/pmda_linux.so,linux_init vfs
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
diff --git a/qa/958 b/qa/958
new file mode 100755
index 0000000..616a6c1
--- /dev/null
+++ b/qa/958
@@ -0,0 +1,26 @@
+#!/bin/sh
+# PCP QA Test No. 958
+# Exercise compressed archive files - xz version
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.compress
+
+which xz >/dev/null 2>&1 || _notrun "No xz binary installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_prepare_compress xz unxz xz
+_exercise_compression 2>&1 \
+| sed -e 's/format not recognised/format not recognized/'
+
+status=0 # success, we're all done
+exit
diff --git a/qa/958.out b/qa/958.out
new file mode 100644
index 0000000..ca25d78
--- /dev/null
+++ b/qa/958.out
@@ -0,0 +1,93 @@
+QA output created by 958
+expect only a few lines of diff output ...
+
+--- xz first volume ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin
+> pmie ...
+
+--- xz last volume and use existing .9.xz in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.9.xz
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.9.xz
+> pmie ...
+
+--- xz middle volume and used existing .1 in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 5
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.1
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.1
+> pmie ...
+
+--- xz first, middle and last volume and use .meta in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> Warning: file missing or compressed for log volume 5
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.meta
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.meta
+> pmie ...
+
+--- xz first few, middle and last few volumes and use existing .7.xz in -a arg ---
+> pmdumplog ...
+> Warning: file missing or compressed for log volume 0
+> Warning: file missing or compressed for log volume 1
+> Warning: file missing or compressed for log volume 5
+> Warning: file missing or compressed for log volume 7
+> Warning: file missing or compressed for log volume 8
+> Warning: file missing or compressed for log volume 9
+> pminfo ...
+> pmprobe in the middle ...
+> pmval & pmval -r ...
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.7.xz
+< archive: src/mv-bigbin
+---
+> archive: mv-bigbin.7.xz
+> pmie ...
+
+--- some error cases ---
+pminfo: Cannot open archive "mv-bigbin.10": No such file or directory
+pmprobe: Cannot open archive "mv-bigbin.10": No such file or directory
+pmval: Cannot open archive "mv-bigbin.10": No such file or directory
+pmie: cannot open archive mv-bigbin.10
+pmNewContext failed: No such file or directory
+pminfo: Cannot open archive "mv-bigbin.10.xz": No such file or directory
+pmprobe: Cannot open archive "mv-bigbin.10.xz": No such file or directory
+pmval: Cannot open archive "mv-bigbin.10.xz": No such file or directory
+pmie: cannot open archive mv-bigbin.10.xz
+pmNewContext failed: No such file or directory
+xz: ./null.0.xz: File format not recognized
+pminfo: Cannot open archive "null": Corrupted record in a PCP archive log
diff --git a/qa/959 b/qa/959
new file mode 100755
index 0000000..013963c
--- /dev/null
+++ b/qa/959
@@ -0,0 +1,27 @@
+#!/bin/sh
+# PCP QA Test No. 959
+# Exercise local context mode pmstore(1) operation.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmda=$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX,sample_init
+pmstore -K clear -K add,29,$pmda -L sample.write_me 1
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/959.out b/qa/959.out
new file mode 100644
index 0000000..234e827
--- /dev/null
+++ b/qa/959.out
@@ -0,0 +1,2 @@
+QA output created by 959
+sample.write_me old value=2 new value=1
diff --git a/qa/962 b/qa/962
new file mode 100755
index 0000000..078cf32
--- /dev/null
+++ b/qa/962
@@ -0,0 +1,30 @@
+#!/bin/sh
+# PCP QA Test No. 962
+# Check interp mode in the presence of <mark> records for different
+# sample intervals.
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for delta in 1min 15min 1hr 4hr 12hr
+do
+ pmval -a src/count-mark -z -A $delta -t $delta kernel.all.pswitch
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/962.out b/qa/962.out
new file mode 100644
index 0000000..e1803d5
--- /dev/null
+++ b/qa/962.out
@@ -0,0 +1,2837 @@
+QA output created by 962
+Note: timezone set to local timezone of host "bozo-vm" from archive
+
+metric: kernel.all.pswitch
+archive: src/count-mark
+host: bozo-vm
+start: Thu Jan 16 00:12:00 2014
+end: Fri Jan 17 18:42:13 2014
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 2551
+interval: 60.00 sec
+00:13:00.000 122.2
+00:14:00.000 122.6
+00:15:00.000 126.0
+00:16:00.000 129.5
+00:17:00.000 125.6
+00:18:00.000 123.8
+00:19:00.000 123.8
+00:20:00.000 126.9
+00:21:00.000 127.0
+00:22:00.000 126.2
+00:23:00.000 123.7
+00:24:00.000 123.2
+00:25:00.000 166.1
+00:26:00.000 139.8
+00:27:00.000 124.9
+00:28:00.000 173.9
+00:29:00.000 136.1
+00:30:00.000 124.5
+00:31:00.000 123.2
+00:32:00.000 124.8
+00:33:00.000 128.0
+00:34:00.000 127.0
+00:35:00.000 127.0
+00:36:00.000 123.9
+00:37:00.000 122.7
+00:38:00.000 122.5
+00:39:00.000 122.6
+00:40:00.000 123.3
+00:41:00.000 124.2
+00:42:00.000 128.9
+00:43:00.000 125.4
+00:44:00.000 123.0
+00:45:00.000 127.0
+00:46:00.000 125.8
+00:47:00.000 123.1
+00:48:00.000 122.4
+00:49:00.000 122.3
+00:50:00.000 123.0
+00:51:00.000 127.9
+00:52:00.000 123.9
+00:53:00.000 122.8
+00:54:00.000 122.9
+00:55:00.000 167.5
+00:56:00.000 136.2
+00:57:00.000 123.3
+00:58:00.000 173.2
+00:59:00.000 136.3
+01:00:00.000 131.5
+01:01:00.000 124.8
+01:02:00.000 123.0
+01:03:00.000 123.2
+01:04:00.000 122.9
+01:05:00.000 124.8
+01:06:00.000 123.9
+01:07:00.000 122.5
+01:08:00.000 122.4
+01:09:00.000 126.8
+01:10:00.000 124.4
+01:11:00.000 124.2
+01:12:00.000 122.9
+01:13:00.000 125.6
+01:14:00.000 129.4
+01:15:00.000 130.9
+01:16:00.000 127.0
+01:17:00.000 124.5
+01:18:00.000 128.1
+01:19:00.000 124.1
+01:20:00.000 123.7
+01:21:00.000 122.9
+01:22:00.000 122.3
+01:23:00.000 123.2
+01:24:00.000 123.5
+01:25:00.000 166.5
+01:26:00.000 135.2
+01:27:00.000 127.5
+01:28:00.000 176.2
+01:29:00.000 137.0
+01:30:00.000 124.8
+01:31:00.000 123.6
+01:32:00.000 122.8
+01:33:00.000 122.3
+01:34:00.000 125.5
+01:35:00.000 126.5
+01:36:00.000 129.3
+01:37:00.000 125.5
+01:38:00.000 122.8
+01:39:00.000 122.6
+01:40:00.000 123.1
+01:41:00.000 122.9
+01:42:00.000 123.8
+01:43:00.000 123.3
+01:44:00.000 122.2
+01:45:00.000 130.6
+01:46:00.000 129.5
+01:47:00.000 126.8
+01:48:00.000 126.0
+01:49:00.000 123.3
+01:50:00.000 123.5
+01:51:00.000 123.4
+01:52:00.000 122.9
+01:53:00.000 122.8
+01:54:00.000 127.5
+01:55:00.000 166.9
+01:56:00.000 136.4
+01:57:00.000 122.4
+01:58:00.000 172.6
+01:59:00.000 135.6
+02:00:00.000 123.6
+02:01:00.000 123.5
+02:02:00.000 126.8
+02:03:00.000 126.3
+02:04:00.000 124.0
+02:05:00.000 124.9
+02:06:00.000 123.3
+02:07:00.000 123.2
+02:08:00.000 122.8
+02:09:00.000 122.7
+02:10:00.000 123.9
+02:11:00.000 129.0
+02:12:00.000 124.2
+02:13:00.000 123.1
+02:14:00.000 122.6
+02:15:00.000 125.9
+02:16:00.000 125.1
+02:17:00.000 125.0
+02:18:00.000 123.3
+02:19:00.000 128.7
+02:20:00.000 125.7
+02:21:00.000 125.7
+02:22:00.000 127.7
+02:23:00.000 126.9
+02:24:00.000 126.3
+02:25:00.000 168.0
+02:26:00.000 136.3
+02:27:00.000 123.8
+02:28:00.000 179.8
+02:29:00.000 139.6
+02:30:00.000 125.0
+02:31:00.000 123.9
+02:32:00.000 123.2
+02:33:00.000 123.5
+02:34:00.000 128.1
+02:35:00.000 128.6
+02:36:00.000 130.7
+02:37:00.000 125.8
+02:38:00.000 124.8
+02:39:00.000 124.2
+02:40:00.000 124.2
+02:41:00.000 124.6
+02:42:00.000 124.3
+02:43:00.000 123.8
+02:44:00.000 128.8
+02:45:00.000 128.5
+02:46:00.000 125.4
+02:47:00.000 123.3
+02:48:00.000 122.7
+02:49:00.000 122.7
+02:50:00.000 123.6
+02:51:00.000 123.4
+02:52:00.000 130.8
+02:53:00.000 126.8
+02:54:00.000 123.9
+02:55:00.000 167.1
+02:56:00.000 135.2
+02:57:00.000 123.4
+02:58:00.000 174.1
+02:59:00.000 136.9
+03:00:00.000 130.1
+03:01:00.000 125.5
+03:02:00.000 123.1
+03:03:00.000 128.4
+03:04:00.000 127.1
+03:05:00.000 127.2
+03:06:00.000 125.9
+03:07:00.000 123.5
+03:08:00.000 123.7
+03:09:00.000 129.1
+03:10:00.000 125.4
+03:11:00.000 132.7
+03:12:00.000 126.0
+03:13:00.000 123.2
+03:14:00.000 124.1
+03:15:00.000 127.2
+03:16:00.000 125.1
+03:17:00.000 124.7
+03:18:00.000 123.2
+03:19:00.000 128.4
+03:20:00.000 125.4
+03:21:00.000 124.5
+03:22:00.000 123.4
+03:23:00.000 123.2
+03:24:00.000 123.8
+03:25:00.000 167.4
+03:26:00.000 136.6
+03:27:00.000 129.4
+03:28:00.000 177.5
+03:29:00.000 137.1
+03:30:00.000 124.5
+03:31:00.000 124.5
+03:32:00.000 123.6
+03:33:00.000 123.4
+03:34:00.000 134.0
+03:35:00.000 130.4
+03:36:00.000 125.3
+03:37:00.000 123.3
+03:38:00.000 123.4
+03:39:00.000 123.2
+03:40:00.000 123.5
+03:41:00.000 124.2
+03:42:00.000 123.3
+03:43:00.000 129.3
+03:44:00.000 125.6
+03:45:00.000 127.2
+03:46:00.000 125.0
+03:47:00.000 123.5
+03:48:00.000 124.5
+03:49:00.000 124.2
+03:50:00.000 124.2
+03:51:00.000 123.7
+03:52:00.000 129.4
+03:53:00.000 124.8
+03:54:00.000 126.8
+03:55:00.000 170.3
+03:56:00.000 138.1
+03:57:00.000 124.3
+03:58:00.000 174.7
+03:59:00.000 137.4
+04:00:00.000 131.8
+04:01:00.000 126.8
+04:02:00.000 125.9
+04:03:00.000 123.4
+04:04:00.000 124.0
+04:05:00.000 125.1
+04:06:00.000 124.6
+04:07:00.000 123.2
+04:08:00.000 123.2
+04:09:00.000 123.3
+04:10:00.000 128.6
+04:11:00.000 125.0
+04:12:00.000 123.7
+04:13:00.000 124.1
+04:14:00.000 124.1
+04:15:00.000 126.4
+04:16:00.000 127.0
+04:17:00.000 124.5
+04:18:00.000 123.7
+04:19:00.000 128.4
+04:20:00.000 125.3
+04:21:00.000 127.7
+04:22:00.000 127.6
+04:23:00.000 125.7
+04:24:00.000 124.2
+04:25:00.000 167.6
+04:26:00.000 136.8
+04:27:00.000 129.5
+04:28:00.000 176.8
+04:29:00.000 137.1
+04:30:00.000 125.7
+04:31:00.000 124.5
+04:32:00.000 124.1
+04:33:00.000 123.6
+04:34:00.000 128.0
+04:35:00.000 128.4
+04:36:00.000 125.5
+04:37:00.000 128.9
+04:38:00.000 124.1
+04:39:00.000 124.4
+04:40:00.000 124.3
+04:41:00.000 124.1
+04:42:00.000 124.2
+04:43:00.000 124.0
+04:44:00.000 130.5
+04:45:00.000 128.2
+04:46:00.000 124.0
+04:47:00.000 123.4
+04:48:00.000 123.5
+04:49:00.000 123.5
+04:50:00.000 123.5
+04:51:00.000 123.7
+04:52:00.000 125.1
+04:53:00.000 129.1
+04:54:00.000 125.5
+04:55:00.000 166.9
+04:56:00.000 141.3
+04:57:00.000 126.7
+04:58:00.000 178.1
+04:59:00.000 138.3
+05:00:00.000 125.6
+05:01:00.000 123.8
+05:02:00.000 129.3
+05:03:00.000 126.3
+05:04:00.000 124.7
+05:05:00.000 126.3
+05:06:00.000 124.1
+05:07:00.000 123.4
+05:08:00.000 124.2
+05:09:00.000 123.2
+05:10:00.000 123.9
+05:11:00.000 124.8
+05:12:00.000 130.4
+05:13:00.000 125.2
+05:14:00.000 123.5
+05:15:00.000 125.8
+05:16:00.000 125.6
+05:17:00.000 125.8
+05:18:00.000 124.4
+05:19:00.000 122.8
+05:20:00.000 124.0
+05:21:00.000 129.3
+05:22:00.000 125.0
+05:23:00.000 123.4
+05:24:00.000 123.7
+05:25:00.000 168.8
+05:26:00.000 138.3
+05:27:00.000 123.8
+05:28:00.000 174.8
+05:29:00.000 144.8
+05:30:00.000 131.0
+05:31:00.000 127.7
+05:32:00.000 125.3
+05:33:00.000 124.5
+05:34:00.000 128.0
+05:35:00.000 127.9
+05:36:00.000 126.0
+05:37:00.000 128.2
+05:38:00.000 124.9
+05:39:00.000 123.3
+05:40:00.000 125.0
+05:41:00.000 124.1
+05:42:00.000 124.1
+05:43:00.000 123.7
+05:44:00.000 124.7
+05:45:00.000 127.1
+05:46:00.000 130.1
+05:47:00.000 125.4
+05:48:00.000 123.9
+05:49:00.000 123.4
+05:50:00.000 124.1
+05:51:00.000 123.6
+05:52:00.000 124.0
+05:53:00.000 123.5
+05:54:00.000 124.9
+05:55:00.000 171.9
+05:56:00.000 137.7
+05:57:00.000 124.0
+05:58:00.000 175.0
+05:59:00.000 141.4
+06:00:00.000 127.8
+06:01:00.000 125.3
+06:02:00.000 124.0
+06:03:00.000 128.9
+06:04:00.000 125.2
+06:05:00.000 125.6
+06:06:00.000 124.6
+06:07:00.000 122.6
+06:08:00.000 125.1
+06:09:00.000 123.1
+06:10:00.000 124.3
+06:11:00.000 124.5
+06:12:00.000 123.5
+06:13:00.000 129.1
+06:14:00.000 123.8
+06:15:00.000 126.7
+06:16:00.000 125.4
+06:17:00.000 125.6
+06:18:00.000 123.7
+06:19:00.000 122.8
+06:20:00.000 127.9
+06:21:00.000 125.2
+06:22:00.000 125.0
+06:23:00.000 125.0
+06:24:00.000 124.0
+06:25:00.000 166.8
+06:26:00.000 135.6
+06:27:00.000 124.2
+06:28:00.000 174.8
+06:29:00.000 136.8
+06:30:00.000 128.9
+06:31:00.000 126.7
+06:32:00.000 123.8
+06:33:00.000 126.7
+06:34:00.000 131.7
+06:35:00.000 130.6
+06:36:00.000 128.8
+06:37:00.000 123.7
+06:38:00.000 122.8
+06:39:00.000 127.5
+06:40:00.000 125.8
+06:41:00.000 125.8
+06:42:00.000 123.8
+06:43:00.000 123.4
+06:44:00.000 123.7
+06:45:00.000 601.6
+06:46:00.000 712.3
+06:47:00.000 1870.
+06:48:00.000 2084.
+06:49:00.000 2358.
+06:50:00.000 1593.
+06:51:00.000 860.3
+06:52:00.000 828.8
+06:53:00.000 948.3
+06:54:00.000 3093.
+06:55:00.000 3972.
+06:56:00.000 4131.
+06:57:00.000 4090.
+06:58:00.000 4850.
+06:59:00.000 4767.
+07:00:00.000 3830.
+07:01:00.000 3897.
+07:02:00.000 922.1
+07:03:00.000 124.3
+07:04:00.000 124.8
+07:05:00.000 131.3
+07:06:00.000 126.4
+07:07:00.000 123.9
+07:08:00.000 123.6
+07:09:00.000 123.7
+07:10:00.000 123.9
+07:11:00.000 124.3
+07:12:00.000 123.6
+07:13:00.000 130.2
+07:14:00.000 125.3
+07:15:00.000 126.7
+07:16:00.000 125.0
+07:17:00.000 125.7
+07:18:00.000 124.9
+07:19:00.000 123.3
+07:20:00.000 123.6
+07:21:00.000 129.5
+07:22:00.000 125.1
+07:23:00.000 123.4
+07:24:00.000 123.7
+07:25:00.000 167.1
+07:26:00.000 136.3
+07:27:00.000 123.0
+07:28:00.000 175.2
+07:29:00.000 137.1
+07:30:00.000 131.4
+07:31:00.000 131.0
+07:32:00.000 126.5
+07:33:00.000 123.7
+07:34:00.000 129.1
+07:35:00.000 138.1
+07:36:00.000 128.5
+07:37:00.000 123.8
+07:38:00.000 124.1
+07:39:00.000 123.6
+07:40:00.000 128.2
+07:41:00.000 126.2
+07:42:00.000 123.8
+07:43:00.000 122.6
+07:44:00.000 123.6
+07:45:00.000 126.3
+07:46:00.000 128.0
+07:47:00.000 123.6
+07:48:00.000 128.2
+07:49:00.000 124.6
+07:50:00.000 124.0
+07:51:00.000 124.2
+07:52:00.000 123.9
+07:53:00.000 124.0
+07:54:00.000 124.6
+07:55:00.000 167.0
+07:56:00.000 606.5
+07:57:00.000 945.5
+07:58:00.000 582.0
+07:59:00.000 197.8
+08:00:00.000 126.4
+08:01:00.000 124.4
+08:02:00.000 131.8
+08:03:00.000 125.8
+08:04:00.000 122.9
+08:05:00.000 127.0
+08:06:00.000 131.7
+08:07:00.000 127.7
+08:08:00.000 124.2
+08:09:00.000 122.9
+08:10:00.000 123.8
+08:11:00.000 124.2
+08:12:00.000 123.3
+08:13:00.000 122.9
+08:14:00.000 124.4
+08:15:00.000 126.2
+08:16:00.000 129.9
+08:17:00.000 128.9
+08:18:00.000 125.4
+08:19:00.000 123.7
+08:20:00.000 123.6
+08:21:00.000 124.0
+08:22:00.000 122.4
+08:23:00.000 123.0
+08:24:00.000 123.0
+08:25:00.000 171.4
+08:26:00.000 136.1
+08:27:00.000 124.7
+08:28:00.000 176.6
+08:29:00.000 139.2
+08:30:00.000 125.3
+08:31:00.000 124.0
+08:32:00.000 123.4
+08:33:00.000 124.2
+08:34:00.000 132.7
+08:35:00.000 129.6
+08:36:00.000 125.0
+08:37:00.000 125.0
+08:38:00.000 124.1
+08:39:00.000 124.1
+08:40:00.000 123.7
+08:41:00.000 125.0
+08:42:00.000 126.7
+08:43:00.000 123.9
+08:44:00.000 128.8
+08:45:00.000 127.9
+08:46:00.000 124.6
+08:47:00.000 124.9
+08:48:00.000 123.3
+08:49:00.000 125.0
+08:50:00.000 125.0
+08:51:00.000 126.5
+08:52:00.000 128.2
+08:53:00.000 191.5
+08:54:00.000 148.9
+08:55:00.000 173.3
+08:56:00.000 144.4
+08:57:00.000 130.9
+08:58:00.000 235.1
+08:59:00.000 156.7
+09:00:00.000 126.6
+09:01:00.000 129.9
+09:02:00.000 125.7
+09:03:00.000 123.8
+09:04:00.000 123.6
+09:05:00.000 127.2
+09:06:00.000 124.9
+09:07:00.000 124.2
+09:08:00.000 123.1
+09:09:00.000 123.0
+09:10:00.000 124.1
+09:11:00.000 129.6
+09:12:00.000 125.4
+09:13:00.000 123.6
+09:14:00.000 125.3
+09:15:00.000 126.7
+09:16:00.000 124.7
+09:17:00.000 125.5
+09:18:00.000 123.7
+09:19:00.000 128.6
+09:20:00.000 124.7
+09:21:00.000 123.3
+09:22:00.000 123.3
+09:23:00.000 124.8
+09:24:00.000 124.7
+09:25:00.000 168.1
+09:26:00.000 136.2
+09:27:00.000 123.4
+09:28:00.000 181.0
+09:29:00.000 139.1
+09:30:00.000 124.9
+09:31:00.000 124.2
+09:32:00.000 123.4
+09:33:00.000 123.4
+09:34:00.000 128.4
+09:35:00.000 129.3
+09:36:00.000 130.3
+09:37:00.000 125.1
+09:38:00.000 124.8
+09:39:00.000 125.2
+09:40:00.000 123.9
+09:41:00.000 124.2
+09:42:00.000 123.4
+09:43:00.000 124.1
+09:44:00.000 123.1
+09:45:00.000 126.2
+09:46:00.000 129.4
+09:47:00.000 124.5
+09:48:00.000 123.2
+09:49:00.000 123.8
+09:50:00.000 123.4
+09:51:00.000 125.2
+09:52:00.000 124.5
+09:53:00.000 123.8
+09:54:00.000 128.1
+09:55:00.000 169.5
+09:56:00.000 136.9
+09:57:00.000 123.7
+09:58:00.000 174.4
+09:59:00.000 136.9
+10:00:00.000 125.4
+10:01:00.000 123.9
+10:02:00.000 123.1
+10:03:00.000 128.0
+10:04:00.000 125.3
+10:05:00.000 128.1
+10:06:00.000 127.1
+10:07:00.000 126.0
+10:08:00.000 127.0
+10:09:00.000 125.7
+10:10:00.000 125.7
+10:11:00.000 124.7
+10:12:00.000 129.4
+10:13:00.000 125.6
+10:14:00.000 125.5
+10:15:00.000 126.5
+10:16:00.000 125.3
+10:17:00.000 126.9
+10:18:00.000 32.15
+10:19:00.000 0.3833
+10:20:00.000 0.3833
+10:21:00.000 0.3833
+10:22:00.000 0.3833
+10:23:00.000 0.3833
+10:24:00.000 0.3833
+10:25:00.000 0.3833
+10:26:00.000 0.3833
+10:27:00.000 0.3667
+10:28:00.000 0.3833
+10:29:00.000 0.3833
+10:30:00.000 0.3833
+10:31:00.000 0.3833
+10:32:00.000 0.3833
+10:33:00.000 0.3833
+10:34:00.000 0.3833
+10:35:00.000 0.3833
+10:36:00.000 0.3833
+10:37:00.000 0.3833
+10:38:00.000 0.3833
+10:39:00.000 0.3833
+10:40:00.000 0.3833
+10:41:00.000 0.3833
+10:42:00.000 0.3833
+10:43:00.000 0.3833
+10:44:00.000 0.3833
+10:45:00.000 0.3833
+10:46:00.000 0.3833
+10:47:00.000 0.3833
+10:48:00.000 0.3833
+10:49:00.000 0.3833
+10:50:00.000 0.3833
+10:51:00.000 0.3833
+10:52:00.000 0.3833
+10:53:00.000 0.3833
+10:54:00.000 0.3833
+10:55:00.000 0.3833
+10:56:00.000 0.3833
+10:57:00.000 0.3833
+10:58:00.000 0.3833
+10:59:00.000 0.3833
+11:00:00.000 0.3833
+11:01:00.000 0.3667
+11:02:00.000 0.3833
+11:03:00.000 0.3833
+11:04:00.000 0.3833
+11:05:00.000 0.3833
+11:06:00.000 0.3833
+11:07:00.000 0.3833
+11:08:00.000 0.3833
+11:09:00.000 0.3833
+11:10:00.000 0.3833
+11:11:00.000 0.3833
+11:12:00.000 0.3833
+11:13:00.000 0.3833
+11:14:00.000 0.3833
+11:15:00.000 0.3833
+11:16:00.000 0.3833
+11:17:00.000 0.3833
+11:18:00.000 0.3833
+11:19:00.000 0.3833
+11:20:00.000 0.3833
+11:21:00.000 0.3833
+11:22:00.000 0.3833
+11:23:00.000 0.3833
+11:24:00.000 0.3833
+11:25:00.000 0.3833
+11:26:00.000 0.3833
+11:27:00.000 0.3833
+11:28:00.000 0.3833
+11:29:00.000 0.3833
+11:30:00.000 0.3833
+11:31:00.000 0.3833
+11:32:00.000 0.3833
+11:33:00.000 0.3833
+11:34:00.000 0.3833
+11:35:00.000 0.3667
+11:36:00.000 0.3833
+11:37:00.000 0.3833
+11:38:00.000 0.3833
+11:39:00.000 0.3833
+11:40:00.000 0.3833
+11:41:00.000 0.3833
+11:42:00.000 0.3833
+11:43:00.000 0.3833
+11:44:00.000 0.3833
+11:45:00.000 0.3833
+11:46:00.000 0.3833
+11:47:00.000 0.3833
+11:48:00.000 0.3833
+11:49:00.000 0.3833
+11:50:00.000 0.3833
+11:51:00.000 0.3833
+11:52:00.000 0.3833
+11:53:00.000 0.3833
+11:54:00.000 0.3833
+11:55:00.000 0.3833
+11:56:00.000 0.3833
+11:57:00.000 0.3833
+11:58:00.000 0.3833
+11:59:00.000 0.3833
+12:00:00.000 0.3833
+12:01:00.000 0.3833
+12:02:00.000 0.3833
+12:03:00.000 0.3833
+12:04:00.000 0.3833
+12:05:00.000 0.3833
+12:06:00.000 0.3833
+12:07:00.000 0.3833
+12:08:00.000 0.3833
+12:09:00.000 0.3667
+12:10:00.000 0.3833
+12:11:00.000 0.3833
+12:12:00.000 0.3833
+12:13:00.000 0.3833
+12:14:00.000 0.3833
+12:15:00.000 0.3833
+12:16:00.000 0.3833
+12:17:00.000 0.3833
+12:18:00.000 0.3833
+12:19:00.000 0.3833
+12:20:00.000 0.3833
+12:21:00.000 0.3833
+12:22:00.000 0.3833
+12:23:00.000 0.3833
+12:24:00.000 0.3833
+12:25:00.000 0.3833
+12:26:00.000 0.3833
+12:27:00.000 0.3833
+12:28:00.000 0.3833
+12:29:00.000 0.3833
+12:30:00.000 0.3833
+12:31:00.000 0.3833
+12:32:00.000 0.3833
+12:33:00.000 0.3833
+12:34:00.000 0.3833
+12:35:00.000 0.3833
+12:36:00.000 0.3833
+12:37:00.000 0.3833
+12:38:00.000 0.3833
+12:39:00.000 0.3833
+12:40:00.000 0.3833
+12:41:00.000 0.3833
+12:42:00.000 0.3833
+12:43:00.000 0.3667
+12:44:00.000 0.3833
+12:45:00.000 0.3833
+12:46:00.000 0.3833
+12:47:00.000 0.3833
+12:48:00.000 0.3833
+12:49:00.000 0.3833
+12:50:00.000 0.3833
+12:51:00.000 0.3833
+12:52:00.000 0.3833
+12:53:00.000 0.3833
+12:54:00.000 0.3833
+12:55:00.000 0.3833
+12:56:00.000 0.3833
+12:57:00.000 0.3833
+12:58:00.000 0.3833
+12:59:00.000 0.3833
+13:00:00.000 0.3833
+13:01:00.000 0.3833
+13:02:00.000 0.3833
+13:03:00.000 0.3833
+13:04:00.000 0.3833
+13:05:00.000 0.3833
+13:06:00.000 0.3833
+13:07:00.000 0.3833
+13:08:00.000 0.3833
+13:09:00.000 0.3833
+13:10:00.000 0.3833
+13:11:00.000 0.3833
+13:12:00.000 0.3833
+13:13:00.000 0.3833
+13:14:00.000 0.3833
+13:15:00.000 0.3833
+13:16:00.000 0.3833
+13:17:00.000 0.3667
+13:18:00.000 0.3833
+13:19:00.000 0.3833
+13:20:00.000 0.3833
+13:21:00.000 0.3833
+13:22:00.000 0.3833
+13:23:00.000 0.3833
+13:24:00.000 0.3833
+13:25:00.000 0.3833
+13:26:00.000 0.3833
+13:27:00.000 0.3833
+13:28:00.000 0.3833
+13:29:00.000 0.3833
+13:30:00.000 0.3833
+13:31:00.000 0.3833
+13:32:00.000 0.3833
+13:33:00.000 0.3833
+13:34:00.000 0.3833
+13:35:00.000 0.3833
+13:36:00.000 0.3833
+13:37:00.000 0.3833
+13:38:00.000 0.3833
+13:39:00.000 0.3833
+13:40:00.000 0.3833
+13:41:00.000 0.3833
+13:42:00.000 0.3833
+13:43:00.000 0.3833
+13:44:00.000 0.3833
+13:45:00.000 0.3833
+13:46:00.000 0.3833
+13:47:00.000 0.3833
+13:48:00.000 0.3833
+13:49:00.000 0.3833
+13:50:00.000 0.3833
+13:51:00.000 0.3667
+13:52:00.000 0.3833
+13:53:00.000 0.3833
+13:54:00.000 0.3833
+13:55:00.000 0.3833
+13:56:00.000 0.3833
+13:57:00.000 0.3833
+13:58:00.000 0.3833
+13:59:00.000 0.3833
+14:00:00.000 0.3833
+14:01:00.000 0.3833
+14:02:00.000 0.3833
+14:03:00.000 0.3833
+14:04:00.000 0.3833
+14:05:00.000 0.3833
+14:06:00.000 0.3833
+14:07:00.000 0.3833
+14:08:00.000 0.3833
+14:09:00.000 0.3833
+14:10:00.000 0.3833
+14:11:00.000 0.3833
+14:12:00.000 0.3833
+14:13:00.000 0.3833
+14:14:00.000 0.3833
+14:15:00.000 0.3833
+14:16:00.000 0.3833
+14:17:00.000 0.3833
+14:18:00.000 0.3833
+14:19:00.000 0.3833
+14:20:00.000 0.3833
+14:21:00.000 0.3833
+14:22:00.000 0.3833
+14:23:00.000 0.3833
+14:24:00.000 0.3833
+14:25:00.000 0.3667
+14:26:00.000 0.3833
+14:27:00.000 0.3833
+14:28:00.000 0.3833
+14:29:00.000 0.3833
+14:30:00.000 0.3833
+14:31:00.000 0.3833
+14:32:00.000 0.3833
+14:33:00.000 0.3833
+14:34:00.000 0.3833
+14:35:00.000 0.3833
+14:36:00.000 0.3833
+14:37:00.000 0.3833
+14:38:00.000 0.3833
+14:39:00.000 0.3833
+14:40:00.000 0.3833
+14:41:00.000 0.3833
+14:42:00.000 0.3833
+14:43:00.000 0.3833
+14:44:00.000 0.3833
+14:45:00.000 0.3833
+14:46:00.000 0.3833
+14:47:00.000 0.3833
+14:48:00.000 0.3833
+14:49:00.000 0.3833
+14:50:00.000 0.3833
+14:51:00.000 0.3833
+14:52:00.000 0.3833
+14:53:00.000 0.3833
+14:54:00.000 0.3833
+14:55:00.000 0.3833
+14:56:00.000 0.3833
+14:57:00.000 0.3833
+14:58:00.000 0.3833
+14:59:00.000 0.3667
+15:00:00.000 0.3833
+15:01:00.000 0.3833
+15:02:00.000 0.3833
+15:03:00.000 0.3833
+15:04:00.000 0.3833
+15:05:00.000 0.3833
+15:06:00.000 0.3833
+15:07:00.000 0.3833
+15:08:00.000 0.3833
+15:09:00.000 0.3833
+15:10:00.000 0.3833
+15:11:00.000 0.3833
+15:12:00.000 0.3833
+15:13:00.000 0.3833
+15:14:00.000 0.3833
+15:15:00.000 0.3833
+15:16:00.000 0.3833
+15:17:00.000 0.3833
+15:18:00.000 0.3833
+15:19:00.000 0.3833
+15:20:00.000 0.3833
+15:21:00.000 0.3833
+15:22:00.000 0.3833
+15:23:00.000 0.3833
+15:24:00.000 0.3833
+15:25:00.000 0.3833
+15:26:00.000 0.3833
+15:27:00.000 0.3833
+15:28:00.000 0.3833
+15:29:00.000 0.3833
+15:30:00.000 0.3833
+15:31:00.000 0.3833
+15:32:00.000 0.3833
+15:33:00.000 0.3667
+15:34:00.000 0.3833
+15:35:00.000 0.3833
+15:36:00.000 0.3833
+15:37:00.000 0.3833
+15:38:00.000 0.3833
+15:39:00.000 0.3833
+15:40:00.000 0.3833
+15:41:00.000 0.3833
+15:42:00.000 0.3833
+15:43:00.000 0.3833
+15:44:00.000 0.3833
+15:45:00.000 0.3833
+15:46:00.000 0.3833
+15:47:00.000 0.3833
+15:48:00.000 0.3833
+15:49:00.000 0.3833
+15:50:00.000 0.3833
+15:51:00.000 0.3833
+15:52:00.000 0.3833
+15:53:00.000 0.3833
+15:54:00.000 0.3833
+15:55:00.000 0.3833
+15:56:00.000 0.3833
+15:57:00.000 0.3833
+15:58:00.000 0.3833
+15:59:00.000 0.3833
+16:00:00.000 0.3833
+16:01:00.000 0.3833
+16:02:00.000 0.3833
+16:03:00.000 0.3833
+16:04:00.000 0.3833
+16:05:00.000 0.3833
+16:06:00.000 0.3833
+16:07:00.000 0.3667
+16:08:00.000 0.3833
+16:09:00.000 0.3833
+16:10:00.000 0.3833
+16:11:00.000 0.3833
+16:12:00.000 0.3833
+16:13:00.000 0.3833
+16:14:00.000 0.3833
+16:15:00.000 0.3833
+16:16:00.000 0.3833
+16:17:00.000 0.3833
+16:18:00.000 0.3833
+16:19:00.000 0.3833
+16:20:00.000 0.3833
+16:21:00.000 0.3833
+16:22:00.000 0.3833
+16:23:00.000 0.3833
+16:24:00.000 0.3833
+16:25:00.000 0.3833
+16:26:00.000 0.3833
+16:27:00.000 0.3833
+16:28:00.000 0.3833
+16:29:00.000 0.3833
+16:30:00.000 0.3833
+16:31:00.000 0.3833
+16:32:00.000 0.3833
+16:33:00.000 0.3833
+16:34:00.000 0.3833
+16:35:00.000 0.3833
+16:36:00.000 0.3833
+16:37:00.000 0.3833
+16:38:00.000 0.3833
+16:39:00.000 0.3833
+16:40:00.000 0.3667
+16:41:00.000 0.3833
+16:42:00.000 0.3833
+16:43:00.000 0.3833
+16:44:00.000 0.3833
+16:45:00.000 0.3833
+16:46:00.000 0.3833
+16:47:00.000 0.3833
+16:48:00.000 0.3833
+16:49:00.000 0.3833
+16:50:00.000 0.3833
+16:51:00.000 0.3833
+16:52:00.000 0.3833
+16:53:00.000 0.3833
+16:54:00.000 0.3833
+16:55:00.000 0.3833
+16:56:00.000 0.3833
+16:57:00.000 0.3833
+16:58:00.000 0.3833
+16:59:00.000 0.3833
+17:00:00.000 0.3833
+17:01:00.000 0.3833
+17:02:00.000 0.3833
+17:03:00.000 0.3833
+17:04:00.000 0.3833
+17:05:00.000 0.3833
+17:06:00.000 0.3833
+17:07:00.000 0.3833
+17:08:00.000 0.3833
+17:09:00.000 0.3833
+17:10:00.000 0.3833
+17:11:00.000 0.3833
+17:12:00.000 0.3833
+17:13:00.000 0.3833
+17:14:00.000 0.3667
+17:15:00.000 0.3833
+17:16:00.000 0.3833
+17:17:00.000 0.3833
+17:18:00.000 0.3833
+17:19:00.000 0.3833
+17:20:00.000 0.3833
+17:21:00.000 0.3833
+17:22:00.000 0.3833
+17:23:00.000 0.3833
+17:24:00.000 0.3833
+17:25:00.000 0.3833
+17:26:00.000 0.3833
+17:27:00.000 0.3833
+17:28:00.000 0.3833
+17:29:00.000 0.3833
+17:30:00.000 0.3833
+17:31:00.000 0.3833
+17:32:00.000 0.3833
+17:33:00.000 0.3833
+17:34:00.000 0.3833
+17:35:00.000 0.3833
+17:36:00.000 0.3833
+17:37:00.000 0.3833
+17:38:00.000 0.3833
+17:39:00.000 0.3833
+17:40:00.000 0.3833
+17:41:00.000 0.3833
+17:42:00.000 0.3833
+17:43:00.000 0.3833
+17:44:00.000 0.3833
+17:45:00.000 0.3833
+17:46:00.000 0.3833
+17:47:00.000 0.3833
+17:48:00.000 0.3667
+17:49:00.000 0.3833
+17:50:00.000 0.3833
+17:51:00.000 0.3833
+17:52:00.000 0.3833
+17:53:00.000 0.3833
+17:54:00.000 0.3833
+17:55:00.000 0.3833
+17:56:00.000 0.3833
+17:57:00.000 0.3833
+17:58:00.000 0.3833
+17:59:00.000 0.3833
+18:00:00.000 0.3833
+18:01:00.000 0.3833
+18:02:00.000 0.3833
+18:03:00.000 0.3833
+18:04:00.000 0.3833
+18:05:00.000 0.3833
+18:06:00.000 0.3833
+18:07:00.000 0.3833
+18:08:00.000 0.3833
+18:09:00.000 0.3833
+18:10:00.000 0.3833
+18:11:00.000 0.3833
+18:12:00.000 0.3833
+18:13:00.000 0.3833
+18:14:00.000 0.3833
+18:15:00.000 0.3833
+18:16:00.000 0.3833
+18:17:00.000 0.3833
+18:18:00.000 0.3833
+18:19:00.000 0.3833
+18:20:00.000 0.3833
+18:21:00.000 0.3833
+18:22:00.000 0.3667
+18:23:00.000 0.3833
+18:24:00.000 0.3833
+18:25:00.000 0.3833
+18:26:00.000 0.3833
+18:27:00.000 0.3833
+18:28:00.000 0.3833
+18:29:00.000 0.3833
+18:30:00.000 0.3833
+18:31:00.000 0.3833
+18:32:00.000 0.3833
+18:33:00.000 0.3833
+18:34:00.000 0.3833
+18:35:00.000 0.3833
+18:36:00.000 0.3833
+18:37:00.000 0.3833
+18:38:00.000 0.3833
+18:39:00.000 0.3833
+18:40:00.000 0.3833
+18:41:00.000 0.3833
+18:42:00.000 0.3833
+18:43:00.000 0.3833
+18:44:00.000 0.3833
+18:45:00.000 0.3833
+18:46:00.000 0.3833
+18:47:00.000 0.3833
+18:48:00.000 0.3833
+18:49:00.000 0.3833
+18:50:00.000 0.3833
+18:51:00.000 0.3833
+18:52:00.000 0.3833
+18:53:00.000 0.3833
+18:54:00.000 0.3833
+18:55:00.000 0.3833
+18:56:00.000 0.3667
+18:57:00.000 0.3833
+18:58:00.000 0.3833
+18:59:00.000 0.3833
+19:00:00.000 0.3833
+19:01:00.000 0.3833
+19:02:00.000 0.3833
+19:03:00.000 0.3833
+19:04:00.000 0.3833
+19:05:00.000 0.3833
+19:06:00.000 0.3833
+19:07:00.000 0.3833
+19:08:00.000 0.3833
+19:09:00.000 0.3833
+19:10:00.000 0.3833
+19:11:00.000 0.3833
+19:12:00.000 0.3833
+19:13:00.000 0.3833
+19:14:00.000 0.3833
+19:15:00.000 0.3833
+19:16:00.000 0.3833
+19:17:00.000 0.3833
+19:18:00.000 0.3833
+19:19:00.000 0.3833
+19:20:00.000 0.3833
+19:21:00.000 0.3833
+19:22:00.000 0.3833
+19:23:00.000 0.3833
+19:24:00.000 0.3833
+19:25:00.000 0.3833
+19:26:00.000 0.3833
+19:27:00.000 0.3833
+19:28:00.000 0.3833
+19:29:00.000 0.3833
+19:30:00.000 0.3667
+19:31:00.000 0.3833
+19:32:00.000 0.3833
+19:33:00.000 0.3833
+19:34:00.000 0.3833
+19:35:00.000 0.3833
+19:36:00.000 0.3833
+19:37:00.000 0.3833
+19:38:00.000 0.3833
+19:39:00.000 0.3833
+19:40:00.000 0.3833
+19:41:00.000 0.3833
+19:42:00.000 0.3833
+19:43:00.000 0.3833
+19:44:00.000 0.3833
+19:45:00.000 0.3833
+19:46:00.000 0.3833
+19:47:00.000 0.3833
+19:48:00.000 0.3833
+19:49:00.000 0.3833
+19:50:00.000 0.3833
+19:51:00.000 0.3833
+19:52:00.000 0.3833
+19:53:00.000 0.3833
+19:54:00.000 0.3833
+19:55:00.000 0.3833
+19:56:00.000 0.3833
+19:57:00.000 0.3833
+19:58:00.000 0.3833
+19:59:00.000 0.3833
+20:00:00.000 0.3833
+20:01:00.000 0.3833
+20:02:00.000 0.3833
+20:03:00.000 0.3833
+20:04:00.000 0.3667
+20:05:00.000 0.3833
+20:06:00.000 0.3833
+20:07:00.000 0.3833
+20:08:00.000 0.3833
+20:09:00.000 0.3833
+20:10:00.000 0.3833
+20:11:00.000 0.3833
+20:12:00.000 0.3833
+20:13:00.000 0.3833
+20:14:00.000 0.3833
+20:15:00.000 0.3833
+20:16:00.000 0.3833
+20:17:00.000 0.3833
+20:18:00.000 0.3833
+20:19:00.000 0.3833
+20:20:00.000 0.3833
+20:21:00.000 0.3833
+20:22:00.000 0.3833
+20:23:00.000 0.3833
+20:24:00.000 0.3833
+20:25:00.000 0.3833
+20:26:00.000 0.3833
+20:27:00.000 0.3833
+20:28:00.000 0.3833
+20:29:00.000 0.3833
+20:30:00.000 0.3833
+20:31:00.000 0.3833
+20:32:00.000 0.3833
+20:33:00.000 0.3833
+20:34:00.000 0.3833
+20:35:00.000 0.3833
+20:36:00.000 0.3833
+20:37:00.000 0.3833
+20:38:00.000 0.3667
+20:39:00.000 0.3833
+20:40:00.000 0.3833
+20:41:00.000 0.3833
+20:42:00.000 0.3833
+20:43:00.000 0.3833
+20:44:00.000 0.3833
+20:45:00.000 0.3833
+20:46:00.000 0.3833
+20:47:00.000 0.3833
+20:48:00.000 0.3833
+20:49:00.000 0.3833
+20:50:00.000 0.3833
+20:51:00.000 0.3833
+20:52:00.000 0.3833
+20:53:00.000 0.3833
+20:54:00.000 0.3833
+20:55:00.000 0.3833
+20:56:00.000 0.3833
+20:57:00.000 0.3833
+20:58:00.000 0.3833
+20:59:00.000 0.3833
+21:00:00.000 0.3833
+21:01:00.000 0.3833
+21:02:00.000 0.3833
+21:03:00.000 0.3833
+21:04:00.000 0.3833
+21:05:00.000 0.3833
+21:06:00.000 0.3833
+21:07:00.000 0.3833
+21:08:00.000 0.3833
+21:09:00.000 0.3833
+21:10:00.000 0.3833
+21:11:00.000 0.3833
+21:12:00.000 0.3667
+21:13:00.000 0.3833
+21:14:00.000 0.3833
+21:15:00.000 0.3833
+21:16:00.000 0.3833
+21:17:00.000 0.3833
+21:18:00.000 0.3833
+21:19:00.000 0.3833
+21:20:00.000 0.3833
+21:21:00.000 0.3833
+21:22:00.000 0.3833
+21:23:00.000 0.3833
+21:24:00.000 0.3833
+21:25:00.000 0.3833
+21:26:00.000 0.3833
+21:27:00.000 0.3833
+21:28:00.000 0.3833
+21:29:00.000 0.3833
+21:30:00.000 0.3833
+21:31:00.000 0.3833
+21:32:00.000 0.3833
+21:33:00.000 0.3833
+21:34:00.000 0.3833
+21:35:00.000 0.3833
+21:36:00.000 0.3833
+21:37:00.000 0.3833
+21:38:00.000 0.3833
+21:39:00.000 0.3833
+21:40:00.000 0.3833
+21:41:00.000 0.3833
+21:42:00.000 0.3833
+21:43:00.000 0.3833
+21:44:00.000 0.3833
+21:45:00.000 0.3833
+21:46:00.000 0.3667
+21:47:00.000 0.3833
+21:48:00.000 0.3833
+21:49:00.000 0.3833
+21:50:00.000 0.3833
+21:51:00.000 0.3833
+21:52:00.000 0.3833
+21:53:00.000 0.3833
+21:54:00.000 0.3833
+21:55:00.000 0.3833
+21:56:00.000 0.3833
+21:57:00.000 0.3833
+21:58:00.000 0.3833
+21:59:00.000 0.3833
+22:00:00.000 0.3833
+22:01:00.000 0.3833
+22:02:00.000 0.3833
+22:03:00.000 0.3833
+22:04:00.000 0.3833
+22:05:00.000 0.3833
+22:06:00.000 79.47
+22:07:00.000 201.7
+22:08:00.000 144.7
+22:09:00.000 143.9
+22:10:00.000 138.1
+22:11:00.000 149.3
+22:12:00.000 171.2
+22:13:00.000 136.0
+22:14:00.000 128.6
+22:15:00.000 127.7
+22:16:00.000 122.7
+22:17:00.000 124.3
+22:18:00.000 124.9
+22:19:00.000 128.0
+22:20:00.000 123.7
+22:21:00.000 121.5
+22:22:00.000 124.8
+22:23:00.000 126.1
+22:24:00.000 122.5
+22:25:00.000 164.9
+22:26:00.000 133.9
+22:27:00.000 125.8
+22:28:00.000 178.2
+22:29:00.000 143.3
+22:30:00.000 125.5
+22:31:00.000 122.8
+22:32:00.000 121.8
+22:33:00.000 122.3
+22:34:00.000 122.2
+22:35:00.000 123.9
+22:36:00.000 123.0
+22:37:00.000 122.5
+22:38:00.000 127.3
+22:39:00.000 126.7
+22:40:00.000 127.8
+22:41:00.000 123.5
+22:42:00.000 121.5
+22:43:00.000 122.0
+22:44:00.000 122.7
+22:45:00.000 125.0
+22:46:00.000 126.4
+22:47:00.000 124.4
+22:48:00.000 122.6
+22:49:00.000 122.5
+22:50:00.000 122.3
+22:51:00.000 121.5
+22:52:00.000 122.2
+22:53:00.000 123.0
+22:54:00.000 121.2
+22:55:00.000 169.3
+22:56:00.000 134.1
+22:57:00.000 123.0
+22:58:00.000 173.1
+22:59:00.000 135.8
+23:00:00.000 123.0
+23:01:00.000 122.3
+23:02:00.000 121.6
+23:03:00.000 128.1
+23:04:00.000 126.5
+23:05:00.000 126.4
+23:06:00.000 124.8
+23:07:00.000 121.8
+23:08:00.000 121.8
+23:09:00.000 121.8
+23:10:00.000 123.5
+23:11:00.000 122.9
+23:12:00.000 123.7
+23:13:00.000 132.1
+23:14:00.000 127.8
+23:15:00.000 127.3
+23:16:00.000 123.5
+23:17:00.000 124.7
+23:18:00.000 123.5
+23:19:00.000 122.0
+23:20:00.000 121.6
+23:21:00.000 126.7
+23:22:00.000 122.9
+23:23:00.000 122.7
+23:24:00.000 121.2
+23:25:00.000 164.8
+23:26:00.000 133.4
+23:27:00.000 121.6
+23:28:00.000 172.3
+23:29:00.000 134.8
+23:30:00.000 123.8
+23:31:00.000 128.2
+23:32:00.000 123.5
+23:33:00.000 122.8
+23:34:00.000 121.4
+23:35:00.000 124.0
+23:36:00.000 123.7
+23:37:00.000 122.6
+23:38:00.000 121.8
+23:39:00.000 127.7
+23:40:00.000 123.7
+23:41:00.000 122.8
+23:42:00.000 122.6
+23:43:00.000 122.8
+23:44:00.000 123.7
+23:45:00.000 126.5
+23:46:00.000 123.1
+23:47:00.000 122.2
+23:48:00.000 125.7
+23:49:00.000 124.3
+23:50:00.000 123.0
+23:51:00.000 122.0
+23:52:00.000 123.0
+23:53:00.000 123.5
+23:54:00.000 122.6
+23:55:00.000 165.7
+23:56:00.000 133.5
+23:57:00.000 126.9
+23:58:00.000 174.9
+23:59:00.000 137.7
+00:00:00.000 125.1
+00:01:00.000 122.9
+00:02:00.000 122.1
+00:03:00.000 122.2
+00:04:00.000 122.3
+00:05:00.000 130.2
+00:06:00.000 126.0
+00:07:00.000 123.3
+00:08:00.000 178.1
+00:09:00.000 137.4
+00:10:00.000 No values available
+00:11:00.000 No values available
+00:12:00.000 No values available
+00:13:00.000 129.7
+00:14:00.000 130.0
+00:15:00.000 128.3
+00:16:00.000 123.5
+00:17:00.000 125.3
+00:18:00.000 124.0
+00:19:00.000 122.5
+00:20:00.000 122.8
+00:21:00.000 122.7
+00:22:00.000 121.8
+00:23:00.000 127.8
+00:24:00.000 123.3
+00:25:00.000 165.7
+00:26:00.000 134.4
+00:27:00.000 123.4
+00:28:00.000 174.5
+00:29:00.000 137.1
+00:30:00.000 124.2
+00:31:00.000 127.0
+00:32:00.000 124.9
+00:33:00.000 123.7
+00:34:00.000 122.7
+00:35:00.000 123.8
+00:36:00.000 122.3
+00:37:00.000 122.4
+00:38:00.000 121.9
+00:39:00.000 122.6
+00:40:00.000 126.6
+00:41:00.000 127.7
+00:42:00.000 123.6
+00:43:00.000 123.0
+00:44:00.000 122.3
+00:45:00.000 125.8
+00:46:00.000 123.6
+00:47:00.000 122.3
+00:48:00.000 122.8
+00:49:00.000 128.5
+00:50:00.000 124.9
+00:51:00.000 122.5
+00:52:00.000 122.2
+00:53:00.000 122.5
+00:54:00.000 122.8
+00:55:00.000 166.0
+00:56:00.000 135.0
+00:57:00.000 127.3
+00:58:00.000 174.6
+00:59:00.000 136.4
+01:00:00.000 124.8
+01:01:00.000 122.8
+01:02:00.000 122.2
+01:03:00.000 122.5
+01:04:00.000 122.8
+01:05:00.000 124.9
+01:06:00.000 129.8
+01:07:00.000 124.5
+01:08:00.000 122.7
+01:09:00.000 122.8
+01:10:00.000 122.8
+01:11:00.000 122.1
+01:12:00.000 123.7
+01:13:00.000 126.5
+01:14:00.000 133.0
+01:15:00.000 127.9
+01:16:00.000 123.6
+01:17:00.000 123.5
+01:18:00.000 123.0
+01:19:00.000 124.1
+01:20:00.000 124.0
+01:21:00.000 122.5
+01:22:00.000 125.6
+01:23:00.000 125.0
+01:24:00.000 128.7
+01:25:00.000 167.6
+01:26:00.000 134.4
+01:27:00.000 122.0
+01:28:00.000 173.6
+01:29:00.000 137.8
+01:30:00.000 124.5
+01:31:00.000 122.7
+01:32:00.000 124.3
+01:33:00.000 123.8
+01:34:00.000 127.6
+01:35:00.000 126.0
+01:36:00.000 123.2
+01:37:00.000 122.9
+01:38:00.000 122.7
+01:39:00.000 122.9
+01:40:00.000 124.6
+01:41:00.000 123.0
+01:42:00.000 127.2
+01:43:00.000 127.3
+01:44:00.000 123.2
+01:45:00.000 125.1
+01:46:00.000 124.2
+01:47:00.000 122.7
+01:48:00.000 122.6
+01:49:00.000 122.2
+01:50:00.000 122.5
+01:51:00.000 124.7
+01:52:00.000 129.3
+01:53:00.000 124.9
+01:54:00.000 125.7
+01:55:00.000 167.3
+01:56:00.000 134.2
+01:57:00.000 122.0
+01:58:00.000 173.2
+01:59:00.000 136.4
+02:00:00.000 123.5
+02:01:00.000 128.1
+02:02:00.000 125.3
+02:03:00.000 123.5
+02:04:00.000 122.4
+02:05:00.000 126.3
+02:06:00.000 126.2
+02:07:00.000 122.7
+02:08:00.000 121.8
+02:09:00.000 126.2
+02:10:00.000 125.3
+02:11:00.000 123.6
+02:12:00.000 124.5
+02:13:00.000 125.2
+02:14:00.000 127.6
+02:15:00.000 126.4
+02:16:00.000 122.8
+02:17:00.000 128.3
+02:18:00.000 124.7
+02:19:00.000 123.1
+02:20:00.000 123.5
+02:21:00.000 122.5
+02:22:00.000 122.7
+02:23:00.000 123.5
+02:24:00.000 124.5
+02:25:00.000 166.7
+02:26:00.000 140.8
+02:27:00.000 125.8
+02:28:00.000 174.3
+02:29:00.000 136.4
+02:30:00.000 124.3
+02:31:00.000 122.1
+02:32:00.000 122.0
+02:33:00.000 122.7
+02:34:00.000 128.0
+02:35:00.000 125.4
+02:36:00.000 122.8
+02:37:00.000 122.4
+02:38:00.000 123.2
+02:39:00.000 121.9
+02:40:00.000 123.2
+02:41:00.000 122.6
+02:42:00.000 126.8
+02:43:00.000 124.3
+02:44:00.000 122.4
+02:45:00.000 125.6
+02:46:00.000 122.9
+02:47:00.000 122.2
+02:48:00.000 123.0
+02:49:00.000 122.0
+02:50:00.000 122.7
+02:51:00.000 123.5
+02:52:00.000 130.6
+02:53:00.000 123.1
+02:54:00.000 122.2
+02:55:00.000 165.4
+02:56:00.000 134.4
+02:57:00.000 122.7
+02:58:00.000 174.0
+02:59:00.000 138.4
+03:00:00.000 125.2
+03:01:00.000 126.7
+03:02:00.000 125.4
+03:03:00.000 123.3
+03:04:00.000 122.5
+03:05:00.000 125.2
+03:06:00.000 124.9
+03:07:00.000 122.8
+03:08:00.000 122.6
+03:09:00.000 122.4
+03:10:00.000 122.5
+03:11:00.000 127.3
+03:12:00.000 123.6
+03:13:00.000 126.0
+03:14:00.000 126.7
+03:15:00.000 127.0
+03:16:00.000 124.1
+03:17:00.000 124.8
+03:18:00.000 122.3
+03:19:00.000 122.3
+03:20:00.000 127.7
+03:21:00.000 122.7
+03:22:00.000 121.9
+03:23:00.000 124.2
+03:24:00.000 122.8
+03:25:00.000 165.9
+03:26:00.000 134.3
+03:27:00.000 121.7
+03:28:00.000 173.3
+03:29:00.000 141.8
+03:30:00.000 126.8
+03:31:00.000 124.2
+03:32:00.000 124.2
+03:33:00.000 123.5
+03:34:00.000 122.4
+03:35:00.000 123.6
+03:36:00.000 122.5
+03:37:00.000 127.7
+03:38:00.000 123.7
+03:39:00.000 122.2
+03:40:00.000 122.5
+03:41:00.000 123.2
+03:42:00.000 122.6
+03:43:00.000 123.8
+03:44:00.000 123.0
+03:45:00.000 125.2
+03:46:00.000 126.4
+03:47:00.000 124.5
+03:48:00.000 122.0
+03:49:00.000 122.9
+03:50:00.000 123.0
+03:51:00.000 122.8
+03:52:00.000 122.5
+03:53:00.000 123.3
+03:54:00.000 129.4
+03:55:00.000 167.1
+03:56:00.000 135.3
+03:57:00.000 123.2
+03:58:00.000 173.4
+03:59:00.000 136.0
+04:00:00.000 124.3
+04:01:00.000 123.2
+04:02:00.000 122.7
+04:03:00.000 128.3
+04:04:00.000 126.6
+04:05:00.000 126.8
+04:06:00.000 126.0
+04:07:00.000 123.5
+04:08:00.000 121.9
+04:09:00.000 122.8
+04:10:00.000 122.8
+04:11:00.000 128.3
+04:12:00.000 124.0
+04:13:00.000 128.5
+04:14:00.000 127.8
+04:15:00.000 126.1
+04:16:00.000 123.2
+04:17:00.000 124.1
+04:18:00.000 123.0
+04:19:00.000 122.0
+04:20:00.000 128.3
+04:21:00.000 123.7
+04:22:00.000 122.9
+04:23:00.000 123.5
+04:24:00.000 124.0
+04:25:00.000 167.4
+04:26:00.000 134.9
+04:27:00.000 122.8
+04:28:00.000 179.9
+04:29:00.000 137.8
+04:30:00.000 123.8
+04:31:00.000 122.3
+04:32:00.000 121.5
+04:33:00.000 122.7
+04:34:00.000 122.0
+04:35:00.000 124.6
+04:36:00.000 124.1
+04:37:00.000 123.4
+04:38:00.000 128.0
+04:39:00.000 124.3
+04:40:00.000 123.6
+04:41:00.000 123.0
+04:42:00.000 122.7
+04:43:00.000 122.9
+04:44:00.000 121.9
+04:45:00.000 124.7
+04:46:00.000 127.7
+04:47:00.000 123.2
+04:48:00.000 122.5
+04:49:00.000 122.2
+04:50:00.000 122.0
+04:51:00.000 121.6
+04:52:00.000 122.0
+04:53:00.000 123.3
+04:54:00.000 124.9
+04:55:00.000 170.8
+04:56:00.000 136.8
+04:57:00.000 123.0
+04:58:00.000 173.2
+04:59:00.000 135.8
+05:00:00.000 123.5
+05:01:00.000 123.9
+05:02:00.000 122.0
+05:03:00.000 123.0
+05:04:00.000 127.3
+05:05:00.000 127.1
+05:06:00.000 125.0
+05:07:00.000 123.9
+05:08:00.000 123.4
+05:09:00.000 124.7
+05:10:00.000 123.9
+05:11:00.000 123.4
+05:12:00.000 122.9
+05:13:00.000 126.5
+05:14:00.000 133.4
+05:15:00.000 128.5
+05:16:00.000 123.1
+05:17:00.000 123.9
+05:18:00.000 121.9
+05:19:00.000 122.0
+05:20:00.000 122.7
+05:21:00.000 123.1
+05:22:00.000 122.9
+05:23:00.000 128.5
+05:24:00.000 123.3
+05:25:00.000 167.2
+05:26:00.000 134.0
+05:27:00.000 123.4
+05:28:00.000 173.6
+05:29:00.000 136.0
+05:30:00.000 123.7
+05:31:00.000 128.4
+05:32:00.000 123.2
+05:33:00.000 122.7
+05:34:00.000 122.0
+05:35:00.000 124.3
+05:36:00.000 123.1
+05:37:00.000 122.2
+05:38:00.000 122.2
+05:39:00.000 127.6
+05:40:00.000 125.0
+05:41:00.000 124.6
+05:42:00.000 123.2
+05:43:00.000 123.2
+05:44:00.000 122.7
+05:45:00.000 125.8
+05:46:00.000 123.1
+05:47:00.000 122.6
+05:48:00.000 122.4
+05:49:00.000 127.8
+05:50:00.000 124.8
+05:51:00.000 122.5
+05:52:00.000 122.0
+05:53:00.000 123.2
+05:54:00.000 123.0
+05:55:00.000 166.9
+05:56:00.000 134.4
+05:57:00.000 127.4
+05:58:00.000 174.4
+05:59:00.000 136.1
+06:00:00.000 124.2
+06:01:00.000 122.8
+06:02:00.000 122.3
+06:03:00.000 123.5
+06:04:00.000 122.8
+06:05:00.000 125.8
+06:06:00.000 129.9
+06:07:00.000 125.2
+06:08:00.000 122.5
+06:09:00.000 122.3
+06:10:00.000 122.3
+06:11:00.000 122.5
+06:12:00.000 121.7
+06:13:00.000 125.9
+06:14:00.000 127.8
+06:15:00.000 131.7
+06:16:00.000 123.9
+06:17:00.000 124.2
+06:18:00.000 123.4
+06:19:00.000 124.1
+06:20:00.000 122.5
+06:21:00.000 122.2
+06:22:00.000 122.3
+06:23:00.000 123.3
+06:24:00.000 127.1
+06:25:00.000 169.0
+06:26:00.000 134.4
+06:27:00.000 122.3
+06:28:00.000 173.7
+06:29:00.000 135.7
+06:30:00.000 124.2
+06:31:00.000 123.1
+06:32:00.000 133.1
+06:33:00.000 128.5
+06:34:00.000 124.9
+06:35:00.000 124.6
+06:36:00.000 123.0
+06:37:00.000 122.0
+06:38:00.000 122.2
+06:39:00.000 122.2
+06:40:00.000 122.6
+06:41:00.000 126.7
+06:42:00.000 123.7
+06:43:00.000 122.6
+06:44:00.000 122.6
+06:45:00.000 126.6
+06:46:00.000 125.3
+06:47:00.000 123.3
+06:48:00.000 122.2
+06:49:00.000 122.4
+06:50:00.000 126.6
+06:51:00.000 124.0
+06:52:00.000 122.5
+06:53:00.000 122.3
+06:54:00.000 121.9
+06:55:00.000 165.5
+06:56:00.000 135.1
+06:57:00.000 122.9
+06:58:00.000 174.9
+06:59:00.000 140.8
+07:00:00.000 126.2
+07:01:00.000 122.9
+07:02:00.000 121.7
+07:03:00.000 122.2
+07:04:00.000 122.4
+07:05:00.000 125.6
+07:06:00.000 125.3
+07:07:00.000 123.3
+07:08:00.000 122.4
+07:09:00.000 128.2
+07:10:00.000 124.6
+07:11:00.000 124.0
+07:12:00.000 122.9
+07:13:00.000 125.3
+07:14:00.000 127.5
+07:15:00.000 126.8
+07:16:00.000 122.7
+07:17:00.000 123.9
+07:18:00.000 128.9
+07:19:00.000 125.5
+07:20:00.000 122.9
+07:21:00.000 122.6
+07:22:00.000 122.0
+07:23:00.000 122.4
+07:24:00.000 122.8
+07:25:00.000 165.4
+07:26:00.000 134.2
+07:27:00.000 127.6
+07:28:00.000 174.5
+07:29:00.000 135.4
+07:30:00.000 213.2
+07:31:00.000 151.6
+07:32:00.000 138.8
+07:33:00.000 153.7
+07:34:00.000 134.1
+07:35:00.000 136.5
+07:36:00.000 133.3
+07:37:00.000 129.7
+07:38:00.000 179.6
+07:39:00.000 136.8
+07:40:00.000 122.9
+07:41:00.000 123.4
+07:42:00.000 389.6
+07:43:00.000 198.3
+07:44:00.000 123.1
+07:45:00.000 138.3
+07:46:00.000 127.5
+07:47:00.000 129.1
+07:48:00.000 126.0
+07:49:00.000 122.8
+07:50:00.000 123.8
+07:51:00.000 124.3
+07:52:00.000 125.6
+07:53:00.000 125.1
+07:54:00.000 123.9
+07:55:00.000 172.2
+07:56:00.000 137.3
+07:57:00.000 123.4
+07:58:00.000 173.8
+07:59:00.000 137.0
+08:00:00.000 124.7
+08:01:00.000 123.1
+08:02:00.000 123.2
+08:03:00.000 129.2
+08:04:00.000 124.7
+08:05:00.000 127.5
+08:06:00.000 125.8
+08:07:00.000 123.4
+08:08:00.000 122.7
+08:09:00.000 123.3
+08:10:00.000 124.0
+08:11:00.000 122.8
+08:12:00.000 128.0
+08:13:00.000 127.7
+08:14:00.000 129.1
+08:15:00.000 127.4
+08:16:00.000 125.5
+08:17:00.000 125.0
+08:18:00.000 124.0
+08:19:00.000 123.4
+08:20:00.000 128.3
+08:21:00.000 124.6
+08:22:00.000 124.4
+08:23:00.000 125.3
+08:24:00.000 125.2
+08:25:00.000 166.5
+08:26:00.000 134.8
+08:27:00.000 123.0
+08:28:00.000 173.0
+08:29:00.000 137.8
+08:30:00.000 129.2
+08:31:00.000 123.8
+08:32:00.000 123.4
+08:33:00.000 124.5
+08:34:00.000 123.0
+08:35:00.000 124.1
+08:36:00.000 124.2
+08:37:00.000 124.3
+08:38:00.000 123.7
+08:39:00.000 126.9
+08:40:00.000 125.2
+08:41:00.000 123.1
+08:42:00.000 123.9
+08:43:00.000 123.4
+08:44:00.000 122.8
+08:45:00.000 125.7
+08:46:00.000 123.3
+08:47:00.000 122.4
+08:48:00.000 122.5
+08:49:00.000 128.3
+08:50:00.000 124.5
+08:51:00.000 123.4
+08:52:00.000 123.6
+08:53:00.000 123.0
+08:54:00.000 122.9
+08:55:00.000 167.0
+08:56:00.000 137.4
+08:57:00.000 127.5
+08:58:00.000 175.3
+08:59:00.000 136.6
+09:00:00.000 125.0
+09:01:00.000 123.4
+09:02:00.000 122.9
+09:03:00.000 123.2
+09:04:00.000 122.8
+09:05:00.000 126.5
+09:06:00.000 131.7
+09:07:00.000 125.0
+09:08:00.000 123.5
+09:09:00.000 125.1
+09:10:00.000 124.0
+09:11:00.000 123.1
+09:12:00.000 123.0
+09:13:00.000 125.4
+09:14:00.000 132.4
+09:15:00.000 128.7
+09:16:00.000 123.7
+09:17:00.000 125.3
+09:18:00.000 124.3
+09:19:00.000 123.4
+09:20:00.000 124.2
+09:21:00.000 123.4
+09:22:00.000 123.2
+09:23:00.000 127.5
+09:24:00.000 125.5
+09:25:00.000 167.2
+09:26:00.000 135.8
+09:27:00.000 122.8
+09:28:00.000 175.9
+09:29:00.000 138.1
+09:30:00.000 125.6
+09:31:00.000 123.4
+09:32:00.000 128.6
+09:33:00.000 129.4
+09:34:00.000 129.8
+09:35:00.000 127.9
+09:36:00.000 124.4
+09:37:00.000 123.5
+09:38:00.000 124.0
+09:39:00.000 123.2
+09:40:00.000 130.8
+09:41:00.000 125.5
+09:42:00.000 124.1
+09:43:00.000 125.0
+09:44:00.000 123.9
+09:45:00.000 126.5
+09:46:00.000 125.3
+09:47:00.000 124.9
+09:48:00.000 124.7
+09:49:00.000 129.0
+09:50:00.000 125.4
+09:51:00.000 124.4
+09:52:00.000 123.1
+09:53:00.000 123.7
+09:54:00.000 123.7
+09:55:00.000 167.1
+09:56:00.000 139.5
+09:57:00.000 125.9
+09:58:00.000 174.4
+09:59:00.000 137.1
+10:00:00.000 126.5
+10:01:00.000 126.6
+10:02:00.000 125.1
+10:03:00.000 124.4
+10:04:00.000 123.3
+10:05:00.000 127.0
+10:06:00.000 132.2
+10:07:00.000 125.0
+10:08:00.000 124.0
+10:09:00.000 123.4
+10:10:00.000 124.8
+10:11:00.000 124.5
+10:12:00.000 125.2
+10:13:00.000 127.8
+10:14:00.000 134.6
+10:15:00.000 130.2
+10:16:00.000 124.6
+10:17:00.000 124.5
+10:18:00.000 123.5
+10:19:00.000 123.1
+10:20:00.000 124.3
+10:21:00.000 123.8
+10:22:00.000 123.7
+10:23:00.000 123.7
+10:24:00.000 128.5
+10:25:00.000 167.4
+10:26:00.000 136.2
+10:27:00.000 123.4
+10:28:00.000 173.9
+10:29:00.000 136.8
+10:30:00.000 125.6
+10:31:00.000 123.8
+10:32:00.000 124.0
+10:33:00.000 130.6
+10:34:00.000 126.6
+10:35:00.000 125.5
+10:36:00.000 123.9
+10:37:00.000 123.2
+10:38:00.000 123.2
+10:39:00.000 124.0
+10:40:00.000 124.0
+10:41:00.000 127.3
+10:42:00.000 125.3
+10:43:00.000 125.0
+10:44:00.000 125.0
+10:45:00.000 127.5
+10:46:00.000 126.2
+10:47:00.000 123.5
+10:48:00.000 124.1
+10:49:00.000 124.2
+10:50:00.000 124.2
+10:51:00.000 128.9
+10:52:00.000 126.5
+10:53:00.000 124.1
+10:54:00.000 123.2
+10:55:00.000 166.8
+10:56:00.000 135.0
+10:57:00.000 124.5
+10:58:00.000 175.8
+10:59:00.000 141.8
+11:00:00.000 127.7
+11:01:00.000 124.5
+11:02:00.000 123.2
+11:03:00.000 124.0
+11:04:00.000 123.8
+11:05:00.000 128.6
+11:06:00.000 127.9
+11:07:00.000 125.3
+11:08:00.000 129.2
+11:09:00.000 125.6
+11:10:00.000 124.3
+11:11:00.000 124.3
+11:12:00.000 123.9
+11:13:00.000 127.2
+11:14:00.000 128.5
+11:15:00.000 128.3
+11:16:00.000 130.3
+11:17:00.000 127.0
+11:18:00.000 125.0
+11:19:00.000 123.4
+11:20:00.000 123.1
+11:21:00.000 123.7
+11:22:00.000 124.2
+11:23:00.000 124.8
+11:24:00.000 124.0
+11:25:00.000 173.4
+11:26:00.000 136.9
+11:27:00.000 123.9
+11:28:00.000 174.8
+11:29:00.000 137.9
+11:30:00.000 126.3
+11:31:00.000 125.1
+11:32:00.000 123.7
+11:33:00.000 125.1
+11:34:00.000 128.3
+11:35:00.000 134.6
+11:36:00.000 127.3
+11:37:00.000 123.8
+11:38:00.000 124.7
+11:39:00.000 124.7
+11:40:00.000 124.8
+11:41:00.000 124.8
+11:42:00.000 123.8
+11:43:00.000 127.8
+11:44:00.000 126.3
+11:45:00.000 127.7
+11:46:00.000 123.8
+11:47:00.000 123.8
+11:48:00.000 123.5
+11:49:00.000 123.6
+11:50:00.000 123.7
+11:51:00.000 123.8
+11:52:00.000 128.8
+11:53:00.000 124.7
+11:54:00.000 124.0
+11:55:00.000 168.5
+11:56:00.000 137.7
+11:57:00.000 124.9
+11:58:00.000 174.1
+11:59:00.000 137.7
+12:00:00.000 131.1
+12:01:00.000 125.8
+12:02:00.000 123.6
+12:03:00.000 124.7
+12:04:00.000 123.5
+12:05:00.000 126.3
+12:06:00.000 126.4
+12:07:00.000 124.5
+12:08:00.000 124.2
+12:09:00.000 128.0
+12:10:00.000 126.5
+12:11:00.000 126.2
+12:12:00.000 125.1
+12:13:00.000 127.5
+12:14:00.000 129.1
+12:15:00.000 127.9
+12:16:00.000 124.2
+12:17:00.000 124.9
+12:18:00.000 128.9
+12:19:00.000 124.7
+12:20:00.000 123.6
+12:21:00.000 124.2
+12:22:00.000 127.2
+12:23:00.000 129.2
+12:24:00.000 126.3
+12:25:00.000 168.8
+12:26:00.000 136.0
+12:27:00.000 124.2
+12:28:00.000 180.3
+12:29:00.000 138.2
+12:30:00.000 125.6
+12:31:00.000 124.2
+12:32:00.000 123.3
+12:33:00.000 124.8
+12:34:00.000 34.08
+12:35:00.000 3.200
+12:36:00.000 3.200
+12:37:00.000 3.200
+12:38:00.000 3.200
+12:39:00.000 3.200
+12:40:00.000 3.200
+12:41:00.000 3.200
+12:42:00.000 3.200
+12:43:00.000 3.200
+12:44:00.000 3.200
+12:45:00.000 3.200
+12:46:00.000 3.200
+12:47:00.000 3.200
+12:48:00.000 3.200
+12:49:00.000 3.200
+12:50:00.000 3.200
+12:51:00.000 3.200
+12:52:00.000 3.200
+12:53:00.000 3.200
+12:54:00.000 3.200
+12:55:00.000 3.200
+12:56:00.000 3.183
+12:57:00.000 3.200
+12:58:00.000 3.200
+12:59:00.000 3.200
+13:00:00.000 3.200
+13:01:00.000 3.200
+13:02:00.000 3.200
+13:03:00.000 3.200
+13:04:00.000 3.200
+13:05:00.000 3.200
+13:06:00.000 3.200
+13:07:00.000 3.200
+13:08:00.000 3.200
+13:09:00.000 3.200
+13:10:00.000 3.200
+13:11:00.000 3.200
+13:12:00.000 3.200
+13:13:00.000 3.200
+13:14:00.000 3.200
+13:15:00.000 3.200
+13:16:00.000 3.200
+13:17:00.000 3.200
+13:18:00.000 3.200
+13:19:00.000 3.200
+13:20:00.000 3.200
+13:21:00.000 3.200
+13:22:00.000 3.200
+13:23:00.000 3.200
+13:24:00.000 3.200
+13:25:00.000 3.200
+13:26:00.000 3.200
+13:27:00.000 3.200
+13:28:00.000 3.200
+13:29:00.000 3.200
+13:30:00.000 3.200
+13:31:00.000 3.200
+13:32:00.000 3.200
+13:33:00.000 3.200
+13:34:00.000 3.200
+13:35:00.000 3.200
+13:36:00.000 3.200
+13:37:00.000 3.200
+13:38:00.000 3.200
+13:39:00.000 3.200
+13:40:00.000 3.200
+13:41:00.000 3.200
+13:42:00.000 3.200
+13:43:00.000 3.200
+13:44:00.000 3.200
+13:45:00.000 3.200
+13:46:00.000 3.200
+13:47:00.000 3.200
+13:48:00.000 3.200
+13:49:00.000 3.200
+13:50:00.000 3.200
+13:51:00.000 3.200
+13:52:00.000 3.200
+13:53:00.000 3.183
+13:54:00.000 3.200
+13:55:00.000 3.200
+13:56:00.000 3.200
+13:57:00.000 3.200
+13:58:00.000 3.200
+13:59:00.000 3.200
+14:00:00.000 3.200
+14:01:00.000 3.200
+14:02:00.000 3.200
+14:03:00.000 35.20
+14:04:00.000 144.3
+14:05:00.000 144.4
+14:06:00.000 134.8
+14:07:00.000 132.1
+14:08:00.000 135.7
+14:09:00.000 129.6
+14:10:00.000 125.3
+14:11:00.000 126.1
+14:12:00.000 129.5
+14:13:00.000 127.0
+14:14:00.000 129.0
+14:15:00.000 127.6
+14:16:00.000 125.8
+14:17:00.000 125.1
+14:18:00.000 126.0
+14:19:00.000 123.9
+14:20:00.000 127.7
+14:21:00.000 126.5
+14:22:00.000 123.6
+14:23:00.000 122.9
+14:24:00.000 128.6
+14:25:00.000 168.0
+14:26:00.000 137.1
+14:27:00.000 124.0
+14:28:00.000 174.6
+14:29:00.000 137.2
+14:30:00.000 124.6
+14:31:00.000 124.2
+14:32:00.000 125.6
+14:33:00.000 124.5
+14:34:00.000 128.7
+14:35:00.000 126.0
+14:36:00.000 124.0
+14:37:00.000 130.6
+14:38:00.000 130.0
+14:39:00.000 125.2
+14:40:00.000 123.6
+14:41:00.000 123.3
+14:42:00.000 124.5
+14:43:00.000 128.8
+14:44:00.000 125.6
+14:45:00.000 126.2
+14:46:00.000 125.7
+14:47:00.000 123.2
+14:48:00.000 123.6
+14:49:00.000 123.4
+14:50:00.000 124.2
+14:51:00.000 124.4
+14:52:00.000 129.2
+14:53:00.000 124.7
+14:54:00.000 123.2
+14:55:00.000 165.7
+14:56:00.000 135.5
+14:57:00.000 124.8
+14:58:00.000 175.0
+14:59:00.000 138.8
+15:00:00.000 131.8
+15:01:00.000 126.0
+15:02:00.000 124.9
+15:03:00.000 127.5
+15:04:00.000 124.5
+15:05:00.000 125.2
+15:06:00.000 124.2
+15:07:00.000 123.6
+15:08:00.000 124.0
+15:09:00.000 124.5
+15:10:00.000 130.7
+15:11:00.000 130.9
+15:12:00.000 127.5
+15:13:00.000 124.5
+15:14:00.000 125.4
+15:15:00.000 127.0
+15:16:00.000 124.1
+15:17:00.000 125.0
+15:18:00.000 124.0
+15:19:00.000 128.9
+15:20:00.000 123.9
+15:21:00.000 122.8
+15:22:00.000 123.7
+15:23:00.000 126.9
+15:24:00.000 124.2
+15:25:00.000 167.4
+15:26:00.000 138.1
+15:27:00.000 131.0
+15:28:00.000 177.8
+15:29:00.000 138.2
+15:30:00.000 124.8
+15:31:00.000 123.6
+15:32:00.000 123.4
+15:33:00.000 123.5
+15:34:00.000 123.5
+15:35:00.000 125.8
+15:36:00.000 129.5
+15:37:00.000 124.8
+15:38:00.000 125.6
+15:39:00.000 124.3
+15:40:00.000 123.6
+15:41:00.000 123.9
+15:42:00.000 127.4
+15:43:00.000 125.6
+15:44:00.000 122.4
+15:45:00.000 131.0
+15:46:00.000 125.3
+15:47:00.000 125.5
+15:48:00.000 123.7
+15:49:00.000 124.3
+15:50:00.000 124.8
+15:51:00.000 123.1
+15:52:00.000 123.0
+15:53:00.000 128.1
+15:54:00.000 123.9
+15:55:00.000 165.9
+15:56:00.000 136.6
+15:57:00.000 124.1
+15:58:00.000 175.2
+15:59:00.000 140.5
+16:00:00.000 125.9
+16:01:00.000 124.5
+16:02:00.000 126.0
+16:03:00.000 131.9
+16:04:00.000 125.9
+16:05:00.000 124.8
+16:06:00.000 123.6
+16:07:00.000 124.2
+16:08:00.000 124.2
+16:09:00.000 123.4
+16:10:00.000 124.3
+16:11:00.000 128.3
+16:12:00.000 131.1
+16:13:00.000 126.7
+16:14:00.000 125.3
+16:15:00.000 129.1
+16:16:00.000 125.2
+16:17:00.000 124.4
+16:18:00.000 124.3
+16:19:00.000 123.4
+16:20:00.000 127.5
+16:21:00.000 126.3
+16:22:00.000 124.4
+16:23:00.000 123.7
+16:24:00.000 125.6
+16:25:00.000 166.5
+16:26:00.000 135.3
+16:27:00.000 123.1
+16:28:00.000 175.3
+16:29:00.000 137.2
+16:30:00.000 129.5
+16:31:00.000 124.7
+16:32:00.000 124.5
+16:33:00.000 123.5
+16:34:00.000 123.0
+16:35:00.000 123.4
+16:36:00.000 123.3
+16:37:00.000 123.1
+16:38:00.000 130.0
+16:39:00.000 124.3
+16:40:00.000 123.6
+16:41:00.000 124.4
+16:42:00.000 124.3
+16:43:00.000 125.5
+16:44:00.000 124.0
+16:45:00.000 125.8
+16:46:00.000 124.0
+16:47:00.000 125.4
+16:48:00.000 131.2
+16:49:00.000 125.3
+16:50:00.000 124.0
+16:51:00.000 123.7
+16:52:00.000 125.3
+16:53:00.000 123.5
+16:54:00.000 124.0
+16:55:00.000 166.8
+16:56:00.000 135.3
+16:57:00.000 128.8
+16:58:00.000 175.9
+16:59:00.000 136.5
+17:00:00.000 124.8
+17:01:00.000 123.5
+17:02:00.000 124.0
+17:03:00.000 127.4
+17:04:00.000 126.2
+17:05:00.000 130.1
+17:06:00.000 125.8
+17:07:00.000 124.1
+17:08:00.000 123.7
+17:09:00.000 122.5
+17:10:00.000 123.1
+17:11:00.000 127.6
+17:12:00.000 131.7
+17:13:00.000 127.1
+17:14:00.000 124.2
+17:15:00.000 125.8
+17:16:00.000 123.8
+17:17:00.000 124.2
+17:18:00.000 124.0
+17:19:00.000 125.5
+17:20:00.000 127.1
+17:21:00.000 125.1
+17:22:00.000 128.0
+17:23:00.000 125.5
+17:24:00.000 123.6
+17:25:00.000 166.5
+17:26:00.000 136.3
+17:27:00.000 124.0
+17:28:00.000 175.3
+17:29:00.000 137.6
+17:30:00.000 124.7
+17:31:00.000 124.2
+17:32:00.000 129.0
+17:33:00.000 126.3
+17:34:00.000 125.4
+17:35:00.000 125.0
+17:36:00.000 124.0
+17:37:00.000 123.8
+17:38:00.000 125.2
+17:39:00.000 176.0
+17:40:00.000 146.9
+17:41:00.000 130.7
+17:42:00.000 129.2
+17:43:00.000 128.3
+17:44:00.000 178.7
+17:45:00.000 141.1
+17:46:00.000 125.2
+17:47:00.000 123.2
+17:48:00.000 129.8
+17:49:00.000 124.5
+17:50:00.000 123.5
+17:51:00.000 124.7
+17:52:00.000 125.5
+17:53:00.000 124.5
+17:54:00.000 123.8
+17:55:00.000 167.3
+17:56:00.000 144.4
+17:57:00.000 129.0
+17:58:00.000 178.5
+17:59:00.000 139.2
+18:00:00.000 125.9
+18:01:00.000 124.0
+18:02:00.000 125.5
+18:03:00.000 127.1
+18:04:00.000 124.2
+18:05:00.000 124.4
+18:06:00.000 128.7
+18:07:00.000 124.8
+18:08:00.000 124.6
+18:09:00.000 124.0
+18:10:00.000 123.9
+18:11:00.000 127.7
+18:12:00.000 128.8
+18:13:00.000 125.4
+18:14:00.000 123.8
+18:15:00.000 132.4
+18:16:00.000 127.6
+18:17:00.000 125.5
+18:18:00.000 124.5
+18:19:00.000 123.6
+18:20:00.000 123.3
+18:21:00.000 123.2
+18:22:00.000 123.6
+18:23:00.000 123.2
+18:24:00.000 128.9
+18:25:00.000 171.3
+18:26:00.000 136.8
+18:27:00.000 123.5
+18:28:00.000 175.4
+18:29:00.000 137.3
+18:30:00.000 126.0
+18:31:00.000 124.2
+18:32:00.000 128.9
+18:33:00.000 125.2
+18:34:00.000 123.5
+18:35:00.000 124.6
+18:36:00.000 123.5
+18:37:00.000 123.1
+18:38:00.000 124.5
+18:39:00.000 123.6
+18:40:00.000 122.9
+18:41:00.000 127.6
+18:42:00.000 312.9
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "bozo-vm" from archive
+
+metric: kernel.all.pswitch
+archive: src/count-mark
+host: bozo-vm
+start: Thu Jan 16 00:15:00 2014
+end: Fri Jan 17 18:42:13 2014
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 170
+interval: 900.00 sec
+00:30:00.000 133.0
+00:45:00.000 124.9
+01:00:00.000 132.1
+01:15:00.000 124.8
+01:30:00.000 132.4
+01:45:00.000 124.4
+02:00:00.000 132.2
+02:15:00.000 124.4
+02:30:00.000 133.8
+02:45:00.000 125.8
+03:00:00.000 132.6
+03:15:00.000 126.1
+03:30:00.000 132.9
+03:45:00.000 125.6
+04:00:00.000 133.5
+04:15:00.000 124.8
+04:30:00.000 133.8
+04:45:00.000 125.8
+05:00:00.000 133.2
+05:15:00.000 125.3
+05:30:00.000 133.7
+05:45:00.000 125.6
+06:00:00.000 133.4
+06:15:00.000 125.1
+06:30:00.000 132.8
+06:45:00.000 157.8
+07:00:00.000 2666.
+07:15:00.000 430.1
+07:30:00.000 133.0
+07:45:00.000 126.6
+08:00:00.000 250.0
+08:15:00.000 125.5
+08:30:00.000 133.1
+08:45:00.000 125.9
+09:00:00.000 145.7
+09:15:00.000 125.3
+09:30:00.000 133.1
+09:45:00.000 125.3
+10:00:00.000 132.8
+10:15:00.000 126.1
+10:30:00.000 19.26
+10:45:00.000 0.3833
+11:00:00.000 0.3833
+11:15:00.000 0.3822
+11:30:00.000 0.3833
+11:45:00.000 0.3822
+12:00:00.000 0.3833
+12:15:00.000 0.3822
+12:30:00.000 0.3833
+12:45:00.000 0.3822
+13:00:00.000 0.3833
+13:15:00.000 0.3833
+13:30:00.000 0.3822
+13:45:00.000 0.3833
+14:00:00.000 0.3822
+14:15:00.000 0.3833
+14:30:00.000 0.3822
+14:45:00.000 0.3833
+15:00:00.000 0.3822
+15:15:00.000 0.3833
+15:30:00.000 0.3833
+15:45:00.000 0.3822
+16:00:00.000 0.3833
+16:15:00.000 0.3822
+16:30:00.000 0.3833
+16:45:00.000 0.3822
+17:00:00.000 0.3833
+17:15:00.000 0.3822
+17:30:00.000 0.3833
+17:45:00.000 0.3833
+18:00:00.000 0.3822
+18:15:00.000 0.3833
+18:30:00.000 0.3822
+18:45:00.000 0.3833
+19:00:00.000 0.3822
+19:15:00.000 0.3833
+19:30:00.000 0.3822
+19:45:00.000 0.3833
+20:00:00.000 0.3833
+20:15:00.000 0.3822
+20:30:00.000 0.3833
+20:45:00.000 0.3822
+21:00:00.000 0.3833
+21:15:00.000 0.3822
+21:30:00.000 0.3833
+21:45:00.000 0.3833
+22:00:00.000 0.3822
+22:15:00.000 94.84
+22:30:00.000 132.7
+22:45:00.000 123.7
+23:00:00.000 131.0
+23:15:00.000 124.8
+23:30:00.000 130.6
+23:45:00.000 123.8
+00:00:00.000 131.5
+00:15:00.000 141.5
+00:30:00.000 131.5
+00:45:00.000 124.0
+01:00:00.000 131.7
+01:15:00.000 124.7
+01:30:00.000 132.0
+01:45:00.000 124.4
+02:00:00.000 131.7
+02:15:00.000 125.0
+02:30:00.000 132.3
+02:45:00.000 123.7
+03:00:00.000 131.5
+03:15:00.000 124.6
+03:30:00.000 131.8
+03:45:00.000 123.6
+04:00:00.000 131.7
+04:15:00.000 125.3
+04:30:00.000 132.1
+04:45:00.000 123.4
+05:00:00.000 131.5
+05:15:00.000 125.3
+05:30:00.000 131.3
+05:45:00.000 124.0
+06:00:00.000 131.6
+06:15:00.000 124.6
+06:30:00.000 131.5
+06:45:00.000 124.6
+07:00:00.000 131.7
+07:15:00.000 124.4
+07:30:00.000 137.6
+07:45:00.000 159.3
+08:00:00.000 133.1
+08:15:00.000 125.5
+08:30:00.000 132.7
+08:45:00.000 124.1
+09:00:00.000 132.2
+09:15:00.000 125.4
+09:30:00.000 132.4
+09:45:00.000 126.0
+10:00:00.000 133.0
+10:15:00.000 126.5
+10:30:00.000 132.2
+10:45:00.000 125.3
+11:00:00.000 133.1
+11:15:00.000 125.9
+11:30:00.000 133.2
+11:45:00.000 126.2
+12:00:00.000 132.9
+12:15:00.000 126.0
+12:30:00.000 133.8
+12:45:00.000 29.44
+13:00:00.000 3.199
+13:15:00.000 3.200
+13:30:00.000 3.200
+13:45:00.000 3.200
+14:00:00.000 3.199
+14:15:00.000 108.5
+14:30:00.000 133.0
+14:45:00.000 126.0
+15:00:00.000 132.9
+15:15:00.000 126.0
+15:30:00.000 133.4
+15:45:00.000 125.2
+16:00:00.000 132.7
+16:15:00.000 126.2
+16:30:00.000 132.8
+16:45:00.000 124.5
+17:00:00.000 133.0
+17:15:00.000 125.8
+17:30:00.000 132.7
+17:45:00.000 135.6
+18:00:00.000 133.9
+18:15:00.000 126.0
+18:30:00.000 132.9
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "bozo-vm" from archive
+
+metric: kernel.all.pswitch
+archive: src/count-mark
+host: bozo-vm
+start: Thu Jan 16 01:00:00 2014
+end: Fri Jan 17 18:42:13 2014
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 42
+interval: 3600.00 sec
+02:00:00.000 128.5
+03:00:00.000 129.2
+04:00:00.000 129.6
+05:00:00.000 129.4
+06:00:00.000 129.5
+07:00:00.000 770.3
+08:00:00.000 234.9
+09:00:00.000 132.6
+10:00:00.000 129.1
+11:00:00.000 36.53
+12:00:00.000 0.3828
+13:00:00.000 0.3828
+14:00:00.000 0.3828
+15:00:00.000 0.3828
+16:00:00.000 0.3831
+17:00:00.000 0.3828
+18:00:00.000 0.3828
+19:00:00.000 0.3828
+20:00:00.000 0.3831
+21:00:00.000 0.3828
+22:00:00.000 0.3828
+23:00:00.000 120.5
+00:00:00.000 127.7
+01:00:00.000 132.2
+02:00:00.000 128.2
+03:00:00.000 128.1
+04:00:00.000 127.9
+05:00:00.000 128.1
+06:00:00.000 128.0
+07:00:00.000 128.1
+08:00:00.000 138.6
+09:00:00.000 128.6
+10:00:00.000 129.2
+11:00:00.000 129.3
+12:00:00.000 129.6
+13:00:00.000 73.09
+14:00:00.000 3.200
+15:00:00.000 125.1
+16:00:00.000 129.3
+17:00:00.000 129.1
+18:00:00.000 132.0
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "bozo-vm" from archive
+
+metric: kernel.all.pswitch
+archive: src/count-mark
+host: bozo-vm
+start: Thu Jan 16 03:00:00 2014
+end: Fri Jan 17 18:42:13 2014
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 10
+interval: 14400.00 sec
+07:00:00.000 289.7
+11:00:00.000 133.3
+15:00:00.000 0.3828
+19:00:00.000 0.3828
+23:00:00.000 30.42
+03:00:00.000 129.1
+07:00:00.000 128.0
+11:00:00.000 131.4
+15:00:00.000 82.74
+
+pmval: pmFetch: End of PCP archive log
+Note: timezone set to local timezone of host "bozo-vm" from archive
+
+metric: kernel.all.pswitch
+archive: src/count-mark
+host: bozo-vm
+start: Thu Jan 16 11:00:00 2014
+end: Fri Jan 17 18:42:13 2014
+semantics: cumulative counter (converting to rate)
+units: count (converting to count / sec)
+samples: 3
+interval: 43200.00 sec
+23:00:00.000 10.40
+11:00:00.000 129.5
+
+pmval: pmFetch: End of PCP archive log
diff --git a/qa/966 b/qa/966
new file mode 100755
index 0000000..eb96eb4
--- /dev/null
+++ b/qa/966
@@ -0,0 +1,79 @@
+#!/bin/sh
+# PCP QA Test No. 966
+# Test that pmcd still starts, but with secure connections disabled, if NSS fails to initialize.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.secure
+nss_notrun_checks
+
+_cleanup()
+{
+ nss_cleanup
+
+ $sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_stop | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+
+ $sudo rm -f $tmp.*
+ $sudo rm -fr $tmp
+}
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "_cleanup; exit \$status" 0 1 2 3 15
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+
+# Remove the initialized NSS cert db and exit with failure.
+# Passed to nss_setup_collector in order to start pmcd
+# with a missing cert db.
+missing_certs()
+{
+ $sudo rm -fr $collectordb
+ return 1
+}
+
+# real QA test starts here
+nss_backup
+nss_setup_randomness
+
+# Set up secure connection environment
+sleep 2
+nss_setup_collector true $qahost $hostname
+
+# make the new certificate visible to just this user
+echo "checking client, user certificate only. should pass..."
+nss_setup_empty_userdb
+nss_import_cert_userdb
+export PCP_SECURE_SOCKETS=1
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PCP_SECURE_SOCKETS
+
+# verify that pmcd still starts and accepts insecure connections if the NSS configuration
+# has been corrupted.
+nss_setup_collector missing_certs 2>&1 | \
+ sed -e "s|$collectordb|COLLECTORDB|" \
+ -e 's/^\[.*\] pmcd([0-9][0-9]*)/[DATE] pmcd(PID)/'
+
+echo "checking client, secure connection. should fail..." | tee -a $seq.full
+export PCP_SECURE_SOCKETS=1
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+unset PCP_SECURE_SOCKETS
+
+echo "checking client, insecure connection. should pass..."
+unset PCP_SECURE_SOCKETS
+yes | pminfo -h $hostname -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+
+echo "checking client, connecting via 'local:'. should pass..."
+unset PCP_SECURE_SOCKETS
+yes | pminfo -h local: -f hinv.ncpu 2>&1 | tee -a $seq.full | nss_filter_pminfo
+
+_cleanup
+
+# success, all done
+status=0
+exit
diff --git a/qa/966.out b/qa/966.out
new file mode 100644
index 0000000..d8eb08b
--- /dev/null
+++ b/qa/966.out
@@ -0,0 +1,32 @@
+QA output created by 966
+Waiting for pmcd to terminate ...
+== Creating empty certificate DB
+== Creating local certificates
+== Certificate DB and local certificates created
+Start pmcd, modified $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+Checking pmcd.log for unexpected messages
+checking client, user certificate only. should pass...
+
+hinv.ncpu
+ value NUMBER
+== Creating empty certificate DB
+Start pmcd, modified $PCP_PMCDOPTIONS_PATH (pmcd.options):
+Starting pmcd ...
+Checking pmcd.log for unexpected messages
+checking client, secure connection. should fail...
+pminfo: Cannot connect to PMCD on host "HOST": Operation not supported
+checking client, insecure connection. should pass...
+
+hinv.ncpu
+ value NUMBER
+checking client, connecting via 'local:'. should pass...
+
+hinv.ncpu
+ value NUMBER
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/972 b/qa/972
new file mode 100755
index 0000000..26251c3
--- /dev/null
+++ b/qa/972
@@ -0,0 +1,86 @@
+#!/bin/sh
+# PCP QA Test No. 972
+# Exercise the zswap compressed swap PMDA using dbpmda.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pmda_path="$PCP_PMDAS_DIR/zswap"
+pmda_script="$pmda_path/pmdazswap.python"
+test -f "$pmda_script" || _notrun "pmdazswap not supported"
+python -c "from pcp import pmda" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "python pcp pmda module not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ tee -a $seq.full | \
+ sed \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+
+ test -f zswap.log && cat zswap.log >> $seq.full
+}
+
+_setup_zswap_values()
+{
+ mkdir -p $ZSWAP_STATS_PATH || exit
+ cd $ZSWAP_STATS_PATH
+
+ echo 309 > duplicate_entry
+ echo 1 > pool_limit_hit
+ echo 2000 > pool_pages
+ echo 32 > reject_alloc_fail
+ echo 11 > reject_compress_poor
+ echo 198 > reject_kmemcache_fail
+ echo 2 > reject_reclaim_fail
+ echo 89123 > stored_pages
+ echo 12435 > written_back_pages
+}
+
+domain=125
+export ZSWAP_PAGESIZE=4096
+export ZSWAP_STATS_PATH="$tmp.zswap"
+
+# real QA test starts here
+_setup_zswap_values
+PCP_PYTHON_PMNS=root python "$pmda_script" > $tmp.root
+
+echo "== Testing zswap metrics" | tee -a $seq.full
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+getdesc on
+desc zswap.pool_limit_hit
+desc zswap.reject_reclaim_fail
+desc zswap.reject_alloc_fail
+desc zswap.reject_kmemcache_fail
+desc zswap.reject_compress_poor
+desc zswap.written_back_pages
+desc zswap.duplicate_entry
+desc zswap.pool_pages
+desc zswap.stored_pages
+fetch zswap.pool_limit_hit
+fetch zswap.reject_reclaim_fail
+fetch zswap.reject_alloc_fail
+fetch zswap.reject_kmemcache_fail
+fetch zswap.reject_compress_poor
+fetch zswap.written_back_pages
+fetch zswap.duplicate_entry
+fetch zswap.pool_pages
+fetch zswap.stored_pages
+End-of-File
+
+status=0
+exit
diff --git a/qa/972.out b/qa/972.out
new file mode 100644
index 0000000..b1a927d
--- /dev/null
+++ b/qa/972.out
@@ -0,0 +1,87 @@
+QA output created by 972
+== Testing zswap metrics
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/zswap/pmdazswap.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/zswap/pmdazswap.python
+dbpmda> getdesc on
+dbpmda> desc zswap.pool_limit_hit
+PMID: 125.0.0
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+dbpmda> desc zswap.reject_reclaim_fail
+PMID: 125.0.1
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+dbpmda> desc zswap.reject_alloc_fail
+PMID: 125.0.2
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+dbpmda> desc zswap.reject_kmemcache_fail
+PMID: 125.0.3
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+dbpmda> desc zswap.reject_compress_poor
+PMID: 125.0.4
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+dbpmda> desc zswap.written_back_pages
+PMID: 125.0.5
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+dbpmda> desc zswap.duplicate_entry
+PMID: 125.0.6
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+dbpmda> desc zswap.pool_pages
+PMID: 125.0.7
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+dbpmda> desc zswap.stored_pages
+PMID: 125.0.8
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+dbpmda> fetch zswap.pool_limit_hit
+PMID(s): 125.0.0
+pmResult ... numpmid: 1
+ 125.0.0 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 1
+dbpmda> fetch zswap.reject_reclaim_fail
+PMID(s): 125.0.1
+pmResult ... numpmid: 1
+ 125.0.1 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 2
+dbpmda> fetch zswap.reject_alloc_fail
+PMID(s): 125.0.2
+pmResult ... numpmid: 1
+ 125.0.2 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 32
+dbpmda> fetch zswap.reject_kmemcache_fail
+PMID(s): 125.0.3
+pmResult ... numpmid: 1
+ 125.0.3 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 198
+dbpmda> fetch zswap.reject_compress_poor
+PMID(s): 125.0.4
+pmResult ... numpmid: 1
+ 125.0.4 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 11
+dbpmda> fetch zswap.written_back_pages
+PMID(s): 125.0.5
+pmResult ... numpmid: 1
+ 125.0.5 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 50933760
+dbpmda> fetch zswap.duplicate_entry
+PMID(s): 125.0.6
+pmResult ... numpmid: 1
+ 125.0.6 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 309
+dbpmda> fetch zswap.pool_pages
+PMID(s): 125.0.7
+pmResult ... numpmid: 1
+ 125.0.7 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 8192000
+dbpmda> fetch zswap.stored_pages
+PMID(s): 125.0.8
+pmResult ... numpmid: 1
+ 125.0.8 (<noname>): numval: 1 valfmt: 1 vlist[]:
+ value 365047808
+dbpmda>
diff --git a/qa/973 b/qa/973
new file mode 100755
index 0000000..82b2575
--- /dev/null
+++ b/qa/973
@@ -0,0 +1,99 @@
+#!/bin/sh
+# PCP QA Test No. 973
+# Exercise the zswap PMDA using the running kernel.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+test -d /sys/kernel/debug/zswap || _notrun "No kernel support for zswap"
+
+status=1 # failure is the default!
+done_clean=false
+rm -f $seq.full
+
+install_on_cleanup=false
+pminfo zstat >/dev/null 2>&1 && install_on_cleanup=true
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/zswap; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/zswap; $sudo ./Remove >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter_zswap()
+{
+ # filter metric values for deterministic output
+ tee -a $here/$seq.full | sed \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=zswap
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+$sudo $PCP_RC_DIR/pmcd stop
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >$tmp.out 2>&1
+# Check zswap metrics have appeared ... X metrics and Y values
+_filter_pmda_install <$tmp.out \
+| sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+ -e 's/[0-9][0-9]* warnings, //' \
+| $PCP_AWK_PROG '
+/Check zswap metrics have appeared/ { if ($7 >= 8 && $7 <= 20) $7 = "X"
+ if ($10 >= 8 && $10 <= 20) $10 = "Y"
+ }
+ { print }'
+
+# pmcd should have been started by the Install process - check
+if pminfo -v $iam > $tmp.info 2> $tmp.err
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+cat $tmp.info $tmp.err | _filter_zswap
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+# success, all done
+status=0
+exit
diff --git a/qa/973.out b/qa/973.out
new file mode 100644
index 0000000..73625a4
--- /dev/null
+++ b/qa/973.out
@@ -0,0 +1,28 @@
+QA output created by 973
+Waiting for pmcd to terminate ...
+
+=== zswap agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "zswap" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Starting pmcd ...
+Starting pmlogger ...
+Check zswap metrics have appeared ... X metrics and Y values
+
+=== remove zswap agent ===
+Culling the Performance Metrics Name Space ...
+zswap ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check zswap metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/978 b/qa/978
new file mode 100755
index 0000000..02fa7bd
--- /dev/null
+++ b/qa/978
@@ -0,0 +1,107 @@
+#!/bin/sh
+# PCP QA Test No. 978
+# Exercise pmgetopt(1) functionality.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+cat > $tmp.config1 <<EOF
+# getopts: A:a:D:gh:Ln:O:p:PS:s:T:t:Z:z?
+# Usage: [options] [[...] command [...]]
+
+Summary Options:
+ --archive
+ --host
+ --namespace
+ -P,--pmie display pmie evaluation statistics
+ --help
+
+Command Options:
+ --host
+ --namespace
+ --align
+ --archive
+ -g start in GUI mode with new time control
+ -n=FILE use an alternative PMNS
+ -O=TIME initial sample time within the time window
+ -p=N port for connection to existing time control
+ -S=TIME start of the time window
+ -s=N terminate after this many samples
+ -T=TIME end of the time window
+ -t=DELTA sampling interval
+ --timezone
+ -z set reporting timezone to local time of metrics source
+# End
+
+Anything beyond "End" will simply be appended to the usage message.
+
+Anything at all.
+EOF
+
+# verify basic handling of a series of options passed in
+echo == verify usage message generation
+pmgetopt --config=$tmp.config1 --usage --progname=pcp
+echo == verify handling of -a xxx -h yyy
+pmgetopt < $tmp.config1 -- -a xxx -h yyy
+echo == verify handling of -z -g --timezone TZ
+pmgetopt < $tmp.config1 -- -z -g --timezone TZ
+
+# verify automatic generation of getopt string and all short/long opt combos
+cat > $tmp.config2 <<EOF
+# Usage: [options] archive
+
+Options:
+ --align
+ --origin
+ --namespace
+ -d, --delay pause between updates for archive replay
+ -f=N,--fixed=N fixed output format with N digits precision
+ --origin=TIME initial sample time within the time window
+ -t=DELTA, --samples=delta sampling interval
+ -r,--raw output raw counter values (no rate conversion)
+ -s=N terminate after this many samples
+ -u non-interpolated fetching; ignores interval
+ --width set the width of each column of output
+ --help
+EOF
+
+echo == verify usage message generation without getopt
+opts2="--config=$tmp.config2 --progname=pcpqa"
+pmgetopt $opts2 --usage
+echo == verify handling of mixing short and long options
+pmgetopt $opts2 -- --delay -f 5 /a/b/pcplog
+echo == verify handling of spaces and single quotes
+pmgetopt $opts2 -- "/a/b/pcp log" "/c/d/foo'bar"
+echo == verify handling of an invalid option
+pmgetopt $opts2 -- -x /a/b/pcplog
+
+# verify automatic generation of getopt string and extra long opt combos
+cat > $tmp.config3 <<EOF
+Options:
+ --host-list
+ --archive-list
+ --archive-folio
+ --help
+EOF
+
+echo == verify handling of archive folios and host/archive lists
+opts3="--config=$tmp.config3 --progname=pcpqa"
+pmgetopt $opts3 --usage
+pmgetopt $opts3 -- --archive-folio=20071023-08-06-36.folio
+
+# success, all done
+status=0
+exit
diff --git a/qa/978.out b/qa/978.out
new file mode 100644
index 0000000..c215eda
--- /dev/null
+++ b/qa/978.out
@@ -0,0 +1,71 @@
+QA output created by 978
+== verify usage message generation
+Usage: pcp [options] [[...] command [...]]
+
+Summary Options:
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -P, --pmie display pmie evaluation statistics
+ -?, --help show this usage message and exit
+
+Command Options:
+ -h HOST, --host=HOST metrics source is PMCD on host
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -a FILE, --archive=FILE
+ metrics source is a PCP log archive
+ -g start in GUI mode with new time control
+ -n FILE use an alternative PMNS
+ -O TIME initial sample time within the time window
+ -p N port for connection to existing time control
+ -S TIME start of the time window
+ -s N terminate after this many samples
+ -T TIME end of the time window
+ -t DELTA sampling interval
+ -Z TZ, --timezone=TZ set reporting timezone
+ -z set reporting timezone to local time of metrics source
+
+Anything beyond "End" will simply be appended to the usage message.
+
+Anything at all.
+== verify handling of -a xxx -h yyy
+-a 'xxx' -h 'yyy'
+== verify handling of -z -g --timezone TZ
+-z -g -Z 'TZ'
+== verify usage message generation without getopt
+Usage: pcpqa [options] archive
+
+Options:
+ -A TIME, --align=TIME align sample times on natural boundaries
+ -O TIME, --origin=TIME
+ initial sample time within the time window
+ -n FILE, --namespace=FILE
+ use an alternative PMNS
+ -d, --delay pause between updates for archive replay
+ -f N, --fixed=N fixed output format with N digits precision
+ --origin=TIME initial sample time within the time window
+ -t delta, --samples=delta
+ sampling interval
+ -r, --raw output raw counter values (no rate conversion)
+ -s N terminate after this many samples
+ -u non-interpolated fetching; ignores interval
+ --width set the width of each column of output
+ -?, --help show this usage message and exit
+== verify handling of mixing short and long options
+-d -f '5' -- '/a/b/pcplog'
+== verify handling of spaces and single quotes
+-- '/a/b/pcp log' '/c/d/foo'\''bar'
+== verify handling of an invalid option
+-? -- '/a/b/pcplog'
+== verify handling of archive folios and host/archive lists
+Usage: pcpqa [options]
+Options:
+ --host-list=HOSTS comma-separated list of metric source hosts
+ --archive-list=FILES comma-separated list of metric source archives
+ --archive-folio=FILE read metric source archives from a folio
+ -?, --help show this usage message and exit
+--archive-folio '20071023-08-06-36.folio'
diff --git a/qa/979 b/qa/979
new file mode 100755
index 0000000..a2976e9
--- /dev/null
+++ b/qa/979
@@ -0,0 +1,21 @@
+#!/bin/sh
+# PCP QA Test No. 979
+# Basic live mode validation of the Python pmcc module
+# (pmcc -> Performance Metrics Convenience Classes)
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+python $here/src/test_pmcc.python -t 0.1 -s 2 >$seq.full 2>&1
+_check_unittest live $seq.full
+status=$?
+exit
diff --git a/qa/979.out b/qa/979.out
new file mode 100644
index 0000000..1b9c546
--- /dev/null
+++ b/qa/979.out
@@ -0,0 +1,2 @@
+QA output created by 979
+live - OK
diff --git a/qa/980 b/qa/980
new file mode 100755
index 0000000..201d75e
--- /dev/null
+++ b/qa/980
@@ -0,0 +1,21 @@
+#!/bin/sh
+# PCP QA Test No. 980
+# Basic archive mode validation of the Python pmcc module
+# (pmcc -> Performance Metrics Convenience Classes)
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+python $here/src/test_pmcc.python -a src/pmatop-log.0 >$seq.full 2>&1
+_check_unittest archive $seq.full
+status=$?
+exit
diff --git a/qa/980.out b/qa/980.out
new file mode 100644
index 0000000..95b784d
--- /dev/null
+++ b/qa/980.out
@@ -0,0 +1,2 @@
+QA output created by 980
+archive - OK
diff --git a/qa/985 b/qa/985
new file mode 100755
index 0000000..3106a3c
--- /dev/null
+++ b/qa/985
@@ -0,0 +1,92 @@
+#!/bin/sh
+# PCP QA Test No. 985
+# Exercise the dmcache PMDA using dbpmda.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pmda_path="$PCP_PMDAS_DIR/dmcache"
+pmda_script="$pmda_path/pmdadmcache.python"
+test -f "$pmda_script" || _notrun "pmdadmcache not supported"
+python -c "from pcp import pmda" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "python pcp pmda module not installed"
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ tee -a $seq.full | \
+ sed \
+ -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;" \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+
+ test -f dmcache.log && cat dmcache.log >> $seq.full
+}
+
+# create sample output for the PMDA to consume
+cat > $tmp.dmcache.sh <<EOF
+#!/bin/sh
+echo dmcache1: 0 52428800 cache 8 289/837632 512 71/117856 576 35 329 0 0 71 0 1 writeback 2 migration_threshold 2048 mq 10 random_threshold 4 sequential_threshold 512 discard_promote_adjustment 1 read_promote_adjustment 4 write_promote_adjustment 8
+echo dmcache2: 0 52606976 cache 8 289/837632 512 71/117856 484 32 330 0 0 71 0 1 writethrough 2 migration_threshold 2048 mq 10 random_threshold 4 sequential_threshold 512 discard_promote_adjustment 1 read_promote_adjustment 4 write_promote_adjustment 8
+EOF
+chmod 755 $tmp.dmcache.sh
+
+domain=129
+export DM_STATUS=$tmp.dmcache.sh
+
+# real QA test starts here
+echo "== Finding dmcache metrics" | tee -a $seq.full
+PCP_PYTHON_PMNS=root python "$pmda_script" 2>/dev/null > $tmp.root
+
+echo "== Testing dmcache metrics" | tee -a $seq.full
+$sudo dbpmda -n $tmp.root -ie <<End-of-File 2>&1 | _filter
+open pipe /usr/bin/python $pmda_script
+getdesc on
+desc dmcache.size
+desc dmcache.metadata.block_size
+desc dmcache.metadata.used
+desc dmcache.metadata.total
+desc dmcache.cache.block_size
+desc dmcache.cache.used
+desc dmcache.cache.total
+desc dmcache.read_hits
+desc dmcache.read_misses
+desc dmcache.write_hits
+desc dmcache.write_misses
+desc dmcache.demotions
+desc dmcache.promotions
+desc dmcache.dirty
+desc dmcache.io_mode_code
+desc dmcache.io_mode
+fetch dmcache.size
+fetch dmcache.metadata.block_size
+fetch dmcache.metadata.used
+fetch dmcache.metadata.total
+fetch dmcache.cache.block_size
+fetch dmcache.cache.used
+fetch dmcache.cache.total
+fetch dmcache.read_hits
+fetch dmcache.read_misses
+fetch dmcache.write_hits
+fetch dmcache.write_misses
+fetch dmcache.demotions
+fetch dmcache.promotions
+fetch dmcache.dirty
+fetch dmcache.io_mode_code
+fetch dmcache.io_mode
+End-of-File
+
+# success, all done
+status=0
+exit
diff --git a/qa/985.out b/qa/985.out
new file mode 100644
index 0000000..83e586f
--- /dev/null
+++ b/qa/985.out
@@ -0,0 +1,167 @@
+QA output created by 985
+== Finding dmcache metrics
+== Testing dmcache metrics
+dbpmda> open pipe /usr/bin/python $PCP_PMDAS_DIR/dmcache/pmdadmcache.python
+Start python PMDA: /usr/bin/python $PCP_PMDAS_DIR/dmcache/pmdadmcache.python
+dbpmda> getdesc on
+dbpmda> desc dmcache.size
+PMID: 129.0.0
+ Data Type: 64-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: discrete Units: Kbyte
+dbpmda> desc dmcache.metadata.block_size
+PMID: 129.0.1
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: discrete Units: byte
+dbpmda> desc dmcache.metadata.used
+PMID: 129.0.2
+ Data Type: 64-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: instant Units: Kbyte
+dbpmda> desc dmcache.metadata.total
+PMID: 129.0.3
+ Data Type: 64-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: discrete Units: Kbyte
+dbpmda> desc dmcache.cache.block_size
+PMID: 129.0.4
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: discrete Units: byte
+dbpmda> desc dmcache.cache.used
+PMID: 129.0.5
+ Data Type: 64-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: instant Units: Kbyte
+dbpmda> desc dmcache.cache.total
+PMID: 129.0.6
+ Data Type: 64-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: discrete Units: Kbyte
+dbpmda> desc dmcache.read_hits
+PMID: 129.0.7
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: counter Units: count
+dbpmda> desc dmcache.read_misses
+PMID: 129.0.8
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: counter Units: count
+dbpmda> desc dmcache.write_hits
+PMID: 129.0.9
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: counter Units: count
+dbpmda> desc dmcache.write_misses
+PMID: 129.0.10
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: counter Units: count
+dbpmda> desc dmcache.demotions
+PMID: 129.0.11
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: counter Units: count
+dbpmda> desc dmcache.promotions
+PMID: 129.0.12
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: counter Units: count
+dbpmda> desc dmcache.dirty
+PMID: 129.0.13
+ Data Type: 64-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: instant Units: Kbyte
+dbpmda> desc dmcache.io_mode_code
+PMID: 129.0.14
+ Data Type: 32-bit unsigned int InDom: 129.0 0x20400000
+ Semantics: discrete Units: none
+dbpmda> desc dmcache.io_mode
+PMID: 129.1.0
+ Data Type: string InDom: 129.0 0x20400000
+ Semantics: discrete Units: none
+dbpmda> fetch dmcache.size
+PMID(s): 129.0.0
+pmResult ... numpmid: 1
+ 129.0.0 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value 52606976
+ inst [1 or ???] value 52428800
+dbpmda> fetch dmcache.metadata.block_size
+PMID(s): 129.0.1
+pmResult ... numpmid: 1
+ 129.0.1 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 4096
+ inst [1 or ???] value 4096
+dbpmda> fetch dmcache.metadata.used
+PMID(s): 129.0.2
+pmResult ... numpmid: 1
+ 129.0.2 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value 1156
+ inst [1 or ???] value 1156
+dbpmda> fetch dmcache.metadata.total
+PMID(s): 129.0.3
+pmResult ... numpmid: 1
+ 129.0.3 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value 3350528
+ inst [1 or ???] value 3350528
+dbpmda> fetch dmcache.cache.block_size
+PMID(s): 129.0.4
+pmResult ... numpmid: 1
+ 129.0.4 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 262144
+ inst [1 or ???] value 262144
+dbpmda> fetch dmcache.cache.used
+PMID(s): 129.0.5
+pmResult ... numpmid: 1
+ 129.0.5 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value 18176
+ inst [1 or ???] value 18176
+dbpmda> fetch dmcache.cache.total
+PMID(s): 129.0.6
+pmResult ... numpmid: 1
+ 129.0.6 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value 30171136
+ inst [1 or ???] value 30171136
+dbpmda> fetch dmcache.read_hits
+PMID(s): 129.0.7
+pmResult ... numpmid: 1
+ 129.0.7 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 484
+ inst [1 or ???] value 576
+dbpmda> fetch dmcache.read_misses
+PMID(s): 129.0.8
+pmResult ... numpmid: 1
+ 129.0.8 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 32
+ inst [1 or ???] value 35
+dbpmda> fetch dmcache.write_hits
+PMID(s): 129.0.9
+pmResult ... numpmid: 1
+ 129.0.9 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 330
+ inst [1 or ???] value 329
+dbpmda> fetch dmcache.write_misses
+PMID(s): 129.0.10
+pmResult ... numpmid: 1
+ 129.0.10 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 0
+ inst [1 or ???] value 0
+dbpmda> fetch dmcache.demotions
+PMID(s): 129.0.11
+pmResult ... numpmid: 1
+ 129.0.11 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 0
+ inst [1 or ???] value 0
+dbpmda> fetch dmcache.promotions
+PMID(s): 129.0.12
+pmResult ... numpmid: 1
+ 129.0.12 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 71
+ inst [1 or ???] value 71
+dbpmda> fetch dmcache.dirty
+PMID(s): 129.0.13
+pmResult ... numpmid: 1
+ 129.0.13 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value 0
+ inst [1 or ???] value 0
+dbpmda> fetch dmcache.io_mode_code
+PMID(s): 129.0.14
+pmResult ... numpmid: 1
+ 129.0.14 (<noname>): numval: 2 valfmt: 0 vlist[]:
+ inst [0 or ???] value 2
+ inst [1 or ???] value 1
+dbpmda> fetch dmcache.io_mode
+PMID(s): 129.1.0
+pmResult ... numpmid: 1
+ 129.1.0 (<noname>): numval: 2 valfmt: 1 vlist[]:
+ inst [0 or ???] value "writethrough"
+ inst [1 or ???] value "writeback"
+dbpmda>
diff --git a/qa/986 b/qa/986
new file mode 100755
index 0000000..8786d7f
--- /dev/null
+++ b/qa/986
@@ -0,0 +1,73 @@
+#!/bin/sh
+# PCP QA Test No. 986
+# Exercise the dmcache PMDA using the running kernel.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -f $tmp.* $seq.full
+
+_filter_dmcache()
+{
+ # cull message resulting from no dmcache devices
+ grep -v 'No value(s) available'
+}
+
+pmdadmcache_remove()
+{
+ echo
+ echo "=== remove dmcache agent ==="
+ $sudo ./Remove >$tmp.out 2>&1
+ _filter_pmda_remove <$tmp.out
+}
+
+pmdadmcache_install()
+{
+ # start from known starting points
+ cd $PCP_PMDAS_DIR/dmcache
+ $sudo ./Remove >/dev/null 2>&1
+ $sudo $PCP_RC_DIR/pmcd stop
+
+ echo
+ echo "=== dmcache agent installation ==="
+ $sudo ./Install </dev/null >$tmp.out 2>&1
+ # Check dmcache metrics have appeared ... X metrics and Y values
+ _filter_pmda_install <$tmp.out \
+ | sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+ -e 's/[0-9][0-9]* warnings, //' \
+ | $PCP_AWK_PROG '
+/Check dmcache metrics have appeared/ { if ($7 >= 16 && $7 <= 20) $7 = "X"
+ if ($10 >= 0 && $10 <= 80) $10 = "Y"
+ }
+ { print }'
+}
+
+_prepare_pmda dmcache
+trap "_cleanup_pmda dmcache; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+pmdadmcache_install
+
+# pmcd should have been started by the Install process - check
+if pminfo -v dmcache > $tmp.info 2> $tmp.err
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+cat $tmp.info $tmp.err | _filter_dmcache
+
+pmdadmcache_remove
+status=0
+exit
diff --git a/qa/986.out b/qa/986.out
new file mode 100644
index 0000000..16c4ba8
--- /dev/null
+++ b/qa/986.out
@@ -0,0 +1,28 @@
+QA output created by 986
+Waiting for pmcd to terminate ...
+
+=== dmcache agent installation ===
+You will need to choose an appropriate configuration for installation of
+the "dmcache" Performance Metrics Domain Agent (PMDA).
+
+ collector collect performance statistics on this system
+ monitor allow this system to monitor local and/or remote systems
+ both collector and monitor configuration for this system
+
+Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ...
+Terminate PMDA if already installed ...
+[...install files, make output...]
+Updating the PMCD control file, and notifying PMCD ...
+Starting pmcd ...
+Starting pmlogger ...
+Check dmcache metrics have appeared ... X metrics and Y values
+
+=== remove dmcache agent ===
+Culling the Performance Metrics Name Space ...
+dmcache ... done
+Updating the PMCD control file, and notifying PMCD ...
+[...removing files...]
+Check dmcache metrics have gone away ... OK
+Waiting for pmcd to terminate ...
+Starting pmcd ...
+Starting pmlogger ...
diff --git a/qa/987 b/qa/987
new file mode 100755
index 0000000..a7b5e4d
--- /dev/null
+++ b/qa/987
@@ -0,0 +1,45 @@
+#!/bin/sh
+# PCP QA Test No. 987
+# Test XFS PMDA works in DSO mode for many PDU types.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+[ $PCP_PLATFORM = linux ] || _notrun "XFS PMDA is Linux-specific (uses procfs)"
+
+status=1
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; $sudo rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+root=$tmp.root
+export XFS_STATSPATH=$root
+pmda=$PCP_PMDAS_DIR/xfs/pmda_xfs.so,xfs_init
+
+for tgz in $here/linux/xfs-*.tgz
+do
+ [ $tgz = "linux/xfs-*" ] && continue
+
+ $sudo rm -fr $root
+ mkdir $root || _fail "root in use when processing $tgz"
+ cd $root
+ tar xzf $tgz
+ base=`basename $tgz`
+
+ echo "== Checking metric descriptors and values - $base"
+ pminfo -L -K clear -K add,11,$pmda -dfmtT xfs
+ echo && echo "== done" && echo
+ cd $here
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/987.out b/qa/987.out
new file mode 100644
index 0000000..3348424
--- /dev/null
+++ b/qa/987.out
@@ -0,0 +1,1164 @@
+QA output created by 987
+== Checking metric descriptors and values - xfs-root-001.tgz
+
+xfs.write PMID: 11.16.51 [number of XFS file system write operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of write(2) system calls made to files in
+XFS file systems.
+ value 0
+
+xfs.write_bytes PMID: 11.16.52 [number of bytes written in XFS file system write operations]
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+Help:
+This is the number of bytes written via write(2) system calls to files
+in XFS file systems. It can be used in conjunction with the write_calls
+count to calculate the average size of the write operations to files in
+XFS file systems.
+ value 0
+
+xfs.read PMID: 11.16.53 [number of XFS file system read operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of read(2) system calls made to files in XFS file
+systems.
+ value 0
+
+xfs.read_bytes PMID: 11.16.54 [number of bytes read in XFS file system read operations]
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+Help:
+This is the number of bytes read via read(2) system calls to files in
+XFS file systems. It can be used in conjunction with the read_calls
+count to calculate the average size of the read operations to files in
+XFS file systems.
+ value 0
+
+xfs.iflush_count PMID: 11.16.67 [the number of calls to xfs_iflush]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of calls to xfs_iflush which gets called when an
+inode is being flushed (such as by bdflush or tail pushing).
+xfs_iflush searches for other inodes in the same cluster which are
+dirty and flushable.
+ value 0
+
+xfs.icluster_flushcnt PMID: 11.16.68 [value from xs_icluster_flushcnt field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_icluster_flushcnt field of struct xfsstats
+ value 0
+
+xfs.icluster_flushinode PMID: 11.16.69 [number of flushes of only one inode in cluster]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times that the inode clustering was not able to
+flush anything but the one inode it was called with.
+ value 0
+
+xfs.allocs.alloc_extent PMID: 11.16.0 [XFS extents allocated]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system extents allocated over all XFS filesystems
+ value 0
+
+xfs.allocs.alloc_block PMID: 11.16.1 [XFS blocks allocated]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system blocks allocated over all XFS filesystems
+ value 0
+
+xfs.allocs.free_extent PMID: 11.16.2 [XFS extents freed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system extents freed over all XFS filesystems
+ value 0
+
+xfs.allocs.free_block PMID: 11.16.3 [XFS blocks freed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system blocks freed over all XFS filesystems
+ value 0
+
+xfs.alloc_btree.lookup PMID: 11.16.4 [lookups in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of lookup operations in XFS filesystem allocation btrees
+ value 0
+
+xfs.alloc_btree.compare PMID: 11.16.5 [compares in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of compares in XFS filesystem allocation btree lookups
+ value 0
+
+xfs.alloc_btree.insrec PMID: 11.16.6 [insertions in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent records inserted into XFS filesystem allocation btrees
+ value 0
+
+xfs.alloc_btree.delrec PMID: 11.16.7 [deletions in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent records deleted from XFS filesystem allocation btrees
+ value 0
+
+xfs.block_map.read_ops PMID: 11.16.8 [block map read ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map for read operations performed on XFS files
+ value 0
+
+xfs.block_map.write_ops PMID: 11.16.9 [block map write ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map for write operations performed on XFS files
+ value 0
+
+xfs.block_map.unmap PMID: 11.16.10 [block unmap ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block unmap (delete) operations performed on XFS files
+ value 0
+
+xfs.block_map.add_exlist PMID: 11.16.11 [extent list add ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list insertion operations for XFS files
+ value 0
+
+xfs.block_map.del_exlist PMID: 11.16.12 [extent list delete ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list deletion operations for XFS files
+ value 0
+
+xfs.block_map.look_exlist PMID: 11.16.13 [extent list lookup ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list lookup operations for XFS files
+ value 0
+
+xfs.block_map.cmp_exlist PMID: 11.16.14 [extent list compare ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list comparisons in XFS extent list lookups
+ value 0
+
+xfs.bmap_btree.lookup PMID: 11.16.15 [block map btree lookup ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree lookup operations on XFS files
+ value 0
+
+xfs.bmap_btree.compare PMID: 11.16.16 [block map btree compare ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree compare operations in XFS block map lookups
+ value 0
+
+xfs.bmap_btree.insrec PMID: 11.16.17 [block map btree insert ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree records inserted for XFS files
+ value 0
+
+xfs.bmap_btree.delrec PMID: 11.16.18 [block map btree delete ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree records deleted for XFS files
+ value 0
+
+xfs.dir_ops.lookup PMID: 11.16.19 [number of file name directory lookups]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is a count of the number of file name directory lookups in XFS
+filesystems. It counts only those lookups which miss in the operating
+system's directory name lookup cache and must search the real directory
+structure for the name in question. The count is incremented once for
+each level of a pathname search that results in a directory lookup.
+ value 0
+
+xfs.dir_ops.create PMID: 11.16.20 [number of directory entry creation operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times a new directory entry was created in XFS
+filesystems. Each time that a new file, directory, link, symbolic link,
+or special file is created in the directory hierarchy the count is
+incremented.
+ value 0
+
+xfs.dir_ops.remove PMID: 11.16.21 [number of directory entry remove operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times an existing directory entry was removed in
+XFS filesystems. Each time that a file, directory, link, symbolic link,
+or special file is removed from the directory hierarchy the count is
+incremented.
+ value 0
+
+xfs.dir_ops.getdents PMID: 11.16.22 [number of times the getdents operation is performed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the XFS directory getdents operation was
+performed. The getdents operation is used by programs to read the
+contents of directories in a file system independent fashion. This
+count corresponds exactly to the number of times the getdents(2) system
+call was successfully used on an XFS directory.
+ value 0
+
+xfs.transactions.sync PMID: 11.16.23 [number of synchronous meta-data transactions performed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of meta-data transactions which waited to be
+committed to the on-disk log before allowing the process performing the
+transaction to continue. These transactions are slower and more
+expensive than asynchronous transactions, because they force the in
+memory log buffers to be forced to disk more often and they wait for
+the completion of the log buffer writes.
+ value 0
+
+xfs.transactions.async PMID: 11.16.24 [number of asynchronous meta-data transactions performed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of meta-data transactions which did not wait to be
+committed to the on-disk log before allowing the process performing the
+transaction to continue. These transactions are faster and more
+efficient than synchronous transactions, because they commit their data
+to the in memory log buffers without forcing those buffers to be
+written to disk. This allows multiple asynchronous transactions to be
+committed to disk in a single log buffer write. Most transactions used
+in XFS file systems are asynchronous.
+ value 0
+
+xfs.transactions.empty PMID: 11.16.25 [number of meta-data transactions which committed without changing anything]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of meta-data transactions which did not actually
+change anything. These are transactions which were started for some
+purpose, but in the end it turned out that no change was necessary.
+ value 0
+
+xfs.inode_ops.ig_attempts PMID: 11.16.26 [number of in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache. Whether the inode was found in the cache or
+needed to be read in from the disk is not indicated here, but this can
+be computed from the ig_found and ig_missed counts.
+ value 0
+
+xfs.inode_ops.ig_found PMID: 11.16.27 [number of successful in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and found it. The closer this count is to the
+ig_attempts count the better the inode cache is performing.
+ value 0
+
+xfs.inode_ops.ig_frecycle PMID: 11.16.28 [number of just missed in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and saw that it was there but was unable to
+use the in memory inode because it was being recycled by another
+process.
+ value 0
+
+xfs.inode_ops.ig_missed PMID: 11.16.29 [number of failed in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and the inode was not there. The further this
+count is from the ig_attempts count the better.
+ value 0
+
+xfs.inode_ops.ig_dup PMID: 11.16.30 [number of inode cache insertions that fail because the inode is there]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and found that it was not there but upon
+attempting to add the inode to the cache found that another process had
+already inserted it.
+ value 0
+
+xfs.inode_ops.ig_reclaims PMID: 11.16.31 [number of in memory inode recycle operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system recycled an XFS inode
+from the inode cache in order to use the memory for that inode for
+another purpose. Inodes are recycled in order to keep the inode cache
+from growing without bound. If the reclaim rate is high it may be
+beneficial to raise the vnode_free_ratio kernel tunable variable to
+increase the size of inode cache.
+ value 0
+
+xfs.inode_ops.ig_attrchg PMID: 11.16.32 [number of inode attribute change operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system explicitly changed the
+attributes of an XFS inode. For example, this could be to change the
+inode's owner, the inode's size, or the inode's timestamps.
+ value 0
+
+xfs.log.writes PMID: 11.16.33 [number of buffer writes going to the disk from the log]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This variable counts the number of log buffer writes going to the
+physical log partitions of all XFS filesystems. Log data traffic is
+proportional to the level of meta-data updating. Log buffer writes get
+generated when they fill up or external syncs occur.
+ value 0
+
+xfs.log.blocks PMID: 11.16.34 [write throughput to the physical XFS log]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+Help:
+This variable counts the number of Kbytes of information being written
+to the physical log partitions of all XFS filesystems. Log data traffic
+is proportional to the level of meta-data updating. The rate with which
+log data gets written depends on the size of internal log buffers and
+disk write speed. Therefore, filesystems with very high meta-data
+updating may need to stripe the log partition or put the log partition
+on a separate drive.
+ value 0
+
+xfs.log.write_ratio PMID: 11.16.78 [ratio of count of XFS log blocks written to log writes]
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+The ratio of log blocks written to log writes. If block count isn't a
+"reasonable" multiple of writes, then many small log writes are being
+performed - this is suboptimal. Perfection is 64. Fine-grain control
+can be obtained when this metric is used in conjuntion with pmstore(1)
+and the xfs.control.reset metric.
+ value 0
+
+xfs.log.noiclogs PMID: 11.16.35 [count of failures for immediate get of buffered/internal]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This variable keeps track of times when a logged transaction can not
+get any log buffer space. When this occurs, all of the internal log
+buffers are busy flushing their data to the physical on-disk log.
+ value 0
+
+xfs.log.force PMID: 11.16.36 [value from xs_log_force field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of times the in-core log is forced to disk. It is
+equivalent to the number of successful calls to the function
+xfs_log_force().
+ value 0
+
+xfs.log.force_sleep PMID: 11.16.37 [value from xs_log_force_sleep field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This metric is exported from the xs_log_force_sleep field of struct xfsstats
+ value 0
+
+xfs.log_tail.try_logspace PMID: 11.16.38 [value from xs_try_logspace field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This metric is exported from the xs_try_logspace field of struct xfsstats
+ value 0
+
+xfs.log_tail.sleep_logspace PMID: 11.16.39 [value from xs_sleep_logspace field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This metric is exported from the xs_sleep_logspace field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.pushes PMID: 11.16.40 [number of times the AIL tail is moved forward]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of times the tail of the AIL is moved forward. It is
+equivalent to the number of successful calls to the function
+xfs_trans_push_ail().
+ value 0
+
+xfs.log_tail.push_ail.success PMID: 11.16.41 [value from xs_push_ail_success field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_success field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.pushbuf PMID: 11.16.42 [value from xs_push_ail_pushbuf field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_pushbuf field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.pinned PMID: 11.16.43 [value from xs_push_ail_pinned field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_pinned field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.locked PMID: 11.16.44 [value from xs_push_ail_locked field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_locked field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.flushing PMID: 11.16.45 [value from xs_push_ail_flushing field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_flushing field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.restarts PMID: 11.16.46 [value from xs_push_ail_restarts field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_restarts field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.flush PMID: 11.16.47 [value from xs_push_ail_flush field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_flush field of struct xfsstats
+ value 0
+
+xfs.xstrat.bytes PMID: 11.16.48 [number of bytes of data processed by the XFS daemons]
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+Help:
+This is the number of bytes of file data flushed out by the XFS
+flushing daemons.
+ value 0
+
+xfs.xstrat.quick PMID: 11.16.49 [number of buffers processed by the XFS daemons written to contiguous space on disk]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of buffers flushed out by the XFS flushing daemons
+which are written to contiguous space on disk. The buffers handled by
+the XFS daemons are delayed allocation buffers, so this count gives an
+indication of the success of the XFS daemons in allocating contiguous
+disk space for the data being flushed to disk.
+ value 0
+
+xfs.xstrat.split PMID: 11.16.50 [number of buffers processed by the XFS daemons written to non-contiguous space on disk]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of buffers flushed out by the XFS flushing daemons
+which are written to non-contiguous space on disk. The buffers handled
+by the XFS daemons are delayed allocation buffers, so this count gives
+an indication of the failure of the XFS daemons in allocating
+contiguous disk space for the data being flushed to disk. Large values
+in this counter indicate that the file system has become fragmented.
+ value 0
+
+xfs.attr.get PMID: 11.16.55 [number of "get" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "get" operations performed on extended file attributes
+within XFS filesystems. The "get" operation retrieves the value of an
+extended attribute.
+ value 0
+
+xfs.attr.set PMID: 11.16.56 [number of "set" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "set" operations performed on extended file attributes
+within XFS filesystems. The "set" operation creates and sets the value
+of an extended attribute.
+ value 0
+
+xfs.attr.remove PMID: 11.16.57 [number of "remove" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "remove" operations performed on extended file attributes
+within XFS filesystems. The "remove" operation deletes an extended
+attribute.
+ value 0
+
+xfs.attr.list PMID: 11.16.58 [number of "list" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "list" operations performed on extended file attributes
+within XFS filesystems. The "list" operation retrieves the set of
+extended attributes associated with a file.
+ value 0
+
+xfs.quota.reclaims PMID: 11.16.59 [value from xs_qm_dqreclaims field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqreclaims field of struct xfsstats
+ value 0
+
+xfs.quota.reclaim_misses PMID: 11.16.60 [value from xs_qm_dqreclaim_misses field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqreclaim_misses field of struct xfsstats
+ value 0
+
+xfs.quota.dquot_dups PMID: 11.16.61 [value from xs_qm_dquot_dups field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dquot_dups field of struct xfsstats
+ value 0
+
+xfs.quota.cachemisses PMID: 11.16.62 [value from xs_qm_dqcachemisses field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqcachemisses field of struct xfsstats
+ value 0
+
+xfs.quota.cachehits PMID: 11.16.63 [value from xs_qm_dqcachehits field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqcachehits field of struct xfsstats
+ value 0
+
+xfs.quota.wants PMID: 11.16.64 [value from xs_qm_dqwants field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqwants field of struct xfsstats
+ value 0
+
+xfs.quota.shake_reclaims PMID: 11.16.65 [value from xs_qm_dqshake_reclaims field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqshake_reclaims field of struct xfsstats
+ value 0
+
+xfs.quota.inact_reclaims PMID: 11.16.66 [value from xs_qm_dqinact_reclaims field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqinact_reclaims field of struct xfsstats
+ value 0
+
+xfs.buffer.get PMID: 11.17.0 [number of request buffer calls]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of request buffer calls
+ value 0
+
+xfs.buffer.create PMID: 11.17.1 [number of buffers created]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of buffers created
+ value 0
+
+xfs.buffer.get_locked PMID: 11.17.2 [number of requests for a locked buffer which succeeded]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of requests for a locked buffer which succeeded
+ value 0
+
+xfs.buffer.get_locked_waited PMID: 11.17.3 [number of requests for a locked buffer which waited]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of requests for a locked buffer which waited
+ value 0
+
+xfs.buffer.busy_locked PMID: 11.17.4 [number of non-blocking requests for a locked buffer which failed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of non-blocking requests for a locked buffer which failed
+ value 0
+
+xfs.buffer.miss_locked PMID: 11.17.5 [number of requests for a locked buffer which failed due to no buffer]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of requests for a locked buffer which failed due to no buffer
+ value 0
+
+xfs.buffer.page_retries PMID: 11.17.6 [number of retry attempts when allocating a page for insertion in a buffer]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of retry attempts when allocating a page for insertion in a buffer
+ value 0
+
+xfs.buffer.page_found PMID: 11.17.7 [number of hits in the page cache when looking for a page]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of hits in the page cache when looking for a page
+ value 0
+
+xfs.buffer.get_read PMID: 11.17.8 [number of buffer get calls requiring immediate device reads]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of buffer get calls requiring immediate device reads
+ value 0
+
+xfs.vnodes.active PMID: 11.16.70 [number of vnodes not on free lists]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+number of vnodes not on free lists
+ value 0
+
+xfs.vnodes.alloc PMID: 11.16.71 [number of times vn_alloc called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_alloc called
+ value 0
+
+xfs.vnodes.get PMID: 11.16.72 [number of times vn_get called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_get called
+ value 0
+
+xfs.vnodes.hold PMID: 11.16.73 [number of times vn_hold called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_hold called
+ value 0
+
+xfs.vnodes.rele PMID: 11.16.74 [number of times vn_rele called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_rele called
+ value 0
+
+xfs.vnodes.reclaim PMID: 11.16.75 [number of times vn_reclaim called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_reclaim called
+ value 0
+
+xfs.vnodes.remove PMID: 11.16.76 [number of times vn_remove called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_remove called
+ value 0
+
+xfs.vnodes.free PMID: 11.16.77 [number of times vn_free called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_free called
+ value 0
+
+xfs.control.reset PMID: 11.16.79 [reset the values of all XFS metrics to zero]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+reset the values of all XFS metrics to zero
+ value 0
+
+xfs.btree.alloc_blocks.lookup PMID: 11.16.80 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree record lookups
+ value 0
+
+xfs.btree.alloc_blocks.compare PMID: 11.16.81 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree record compares
+ value 0
+
+xfs.btree.alloc_blocks.insrec PMID: 11.16.82 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree insert record operations executed
+ value 0
+
+xfs.btree.alloc_blocks.delrec PMID: 11.16.83 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree delete record operations executed
+ value 0
+
+xfs.btree.alloc_blocks.newroot PMID: 11.16.84 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to a free-space-by-block-number btree
+ value 0
+
+xfs.btree.alloc_blocks.killroot PMID: 11.16.85 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from a free-space-by-block-number btree
+ value 0
+
+xfs.btree.alloc_blocks.increment PMID: 11.16.86 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved forward one free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.decrement PMID: 11.16.87 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved backward one free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.lshift PMID: 11.16.88 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.rshift PMID: 11.16.89 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.split PMID: 11.16.90 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.join PMID: 11.16.91 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting free-space-by-block-number btree records
+ value 0
+
+xfs.btree.alloc_blocks.alloc PMID: 11.16.92 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during free-space-by-block-number btree operations
+ value 0
+
+xfs.btree.alloc_blocks.free PMID: 11.16.93 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during free-space-by-block-number btree operations
+ value 0
+
+xfs.btree.alloc_blocks.moves PMID: 11.16.94 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during free-space-by-block-number btree operations
+ value 0
+
+xfs.btree.alloc_contig.lookup PMID: 11.16.95 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree record lookups
+ value 0
+
+xfs.btree.alloc_contig.compare PMID: 11.16.96 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree btree record compares
+ value 0
+
+xfs.btree.alloc_contig.insrec PMID: 11.16.97 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree insert record operations executed
+ value 0
+
+xfs.btree.alloc_contig.delrec PMID: 11.16.98 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree delete record operations executed
+ value 0
+
+xfs.btree.alloc_contig.newroot PMID: 11.16.99 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to a free-space-by-size btree tree
+ value 0
+
+xfs.btree.alloc_contig.killroot PMID: 11.16.100 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from a free-space-by-size btree tree
+ value 0
+
+xfs.btree.alloc_contig.increment PMID: 11.16.101 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a free-space-by-size btree cursor has been moved forward
+one record
+ value 0
+
+xfs.btree.alloc_contig.decrement PMID: 11.16.102 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a free-space-by-size btree cursor has been moved backward
+one record
+ value 0
+
+xfs.btree.alloc_contig.lshift PMID: 11.16.103 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new free-space-by-size
+btree record
+ value 0
+
+xfs.btree.alloc_contig.rshift PMID: 11.16.104 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new free-space-by-size
+btree record
+ value 0
+
+xfs.btree.alloc_contig.split PMID: 11.16.105 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new free-space-by-size btree
+record
+ value 0
+
+xfs.btree.alloc_contig.join PMID: 11.16.106 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting free-space-by-size btree records
+ value 0
+
+xfs.btree.alloc_contig.alloc PMID: 11.16.107 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during free-space-by-size btree operations
+ value 0
+
+xfs.btree.alloc_contig.free PMID: 11.16.108 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during free-space-by-size btree operations
+ value 0
+
+xfs.btree.alloc_contig.moves PMID: 11.16.109 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during free-space-by-size btree operations
+ value 0
+
+xfs.btree.block_map.lookup PMID: 11.16.110 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree record lookups
+ value 0
+
+xfs.btree.block_map.compare PMID: 11.16.111 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree record compares
+ value 0
+
+xfs.btree.block_map.insrec PMID: 11.16.112 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree insert record operations executed
+ value 0
+
+xfs.btree.block_map.delrec PMID: 11.16.113 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree delete record operations executed
+ value 0
+
+xfs.btree.block_map.newroot PMID: 11.16.114 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to an inode-block-map/extent btree
+ value 0
+
+xfs.btree.block_map.killroot PMID: 11.16.115 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from an inode-block-map/extent btree
+ value 0
+
+xfs.btree.block_map.increment PMID: 11.16.116 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times an inode-block-map/extent btree cursor has been moved
+forward one record
+ value 0
+
+xfs.btree.block_map.decrement PMID: 11.16.117 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times an inode-block-map/extent btree cursor has been moved
+backward one record
+ value 0
+
+xfs.btree.block_map.lshift PMID: 11.16.118 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new inode-block-map/extent
+btree record
+ value 0
+
+xfs.btree.block_map.rshift PMID: 11.16.119 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new inode-block-map/extent
+btree record
+ value 0
+
+xfs.btree.block_map.split PMID: 11.16.120 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new inode-block-map/extent
+btree record
+ value 0
+
+xfs.btree.block_map.join PMID: 11.16.121 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting inode-block-map/extent btree records
+ value 0
+
+xfs.btree.block_map.alloc PMID: 11.16.122 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during inode-block-map/extent btree operations
+ value 0
+
+xfs.btree.block_map.free PMID: 11.16.123 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during inode-block-map/extent btree operations
+ value 0
+
+xfs.btree.block_map.moves PMID: 11.16.124 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during inode-block-map/extent btree operations
+ value 0
+
+xfs.btree.inode.lookup PMID: 11.16.125 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree record lookups
+ value 0
+
+xfs.btree.inode.compare PMID: 11.16.126 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree record compares
+ value 0
+
+xfs.btree.inode.insrec PMID: 11.16.127 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree insert record operations executed
+ value 0
+
+xfs.btree.inode.delrec PMID: 11.16.128 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree delete record operations executed
+ value 0
+
+xfs.btree.inode.newroot PMID: 11.16.129 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to an inode-allocation btree
+ value 0
+
+xfs.btree.inode.killroot PMID: 11.16.130 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from an inode-allocation btree
+ value 0
+
+xfs.btree.inode.increment PMID: 11.16.131 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved forward one inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.decrement PMID: 11.16.132 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved backward one inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.lshift PMID: 11.16.133 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.rshift PMID: 11.16.134 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.split PMID: 11.16.135 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new inode-allocation btree record
+ value 0
+
+xfs.btree.inode.join PMID: 11.16.136 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting inode-allocation btree records
+ value 0
+
+xfs.btree.inode.alloc PMID: 11.16.137 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during inode-allocation btree operations
+ value 0
+
+xfs.btree.inode.free PMID: 11.16.138 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during inode-allocation btree operations
+ value 0
+
+xfs.btree.inode.moves PMID: 11.16.139 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during inode-allocation btree operations
+ value 0
+
+== done
+
diff --git a/qa/988 b/qa/988
new file mode 100755
index 0000000..8e2f643
--- /dev/null
+++ b/qa/988
@@ -0,0 +1,45 @@
+#!/bin/sh
+# PCP QA Test No. 988
+# Test XFS PMDA with valgrind for many PDU types.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_check_valgrind
+[ $PCP_PLATFORM = linux ] || _notrun "XFS PMDA is Linux-specific (uses procfs)"
+
+status=1
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; $sudo rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+root=$tmp.root
+export XFS_STATSPATH=$root
+pmda=$PCP_PMDAS_DIR/xfs/pmda_xfs,xfs_init
+
+for tgz in $here/linux/xfs-*.tgz
+do
+ [ $tgz = "linux/xfs-*" ] && continue
+
+ $sudo rm -fr $root
+ mkdir $root || _fail "root in use when processing $tgz"
+ cd $root
+ tar xzf $tgz
+ base=`basename $tgz`
+
+ echo "== Valgrind checking metric descriptors and values - $base"
+ _run_valgrind pminfo -L -K clear -K add,11,$pmda -dfmtT xfs 2>&1
+ echo && echo "== done" && echo
+ cd $here
+done
+
+# success, all done
+status=0
+exit
diff --git a/qa/988.out b/qa/988.out
new file mode 100644
index 0000000..a105a82
--- /dev/null
+++ b/qa/988.out
@@ -0,0 +1,1173 @@
+QA output created by 988
+== Valgrind checking metric descriptors and values - xfs-root-001.tgz
+=== std out ===
+
+xfs.write PMID: 11.16.51 [number of XFS file system write operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of write(2) system calls made to files in
+XFS file systems.
+ value 0
+
+xfs.write_bytes PMID: 11.16.52 [number of bytes written in XFS file system write operations]
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+Help:
+This is the number of bytes written via write(2) system calls to files
+in XFS file systems. It can be used in conjunction with the write_calls
+count to calculate the average size of the write operations to files in
+XFS file systems.
+ value 0
+
+xfs.read PMID: 11.16.53 [number of XFS file system read operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of read(2) system calls made to files in XFS file
+systems.
+ value 0
+
+xfs.read_bytes PMID: 11.16.54 [number of bytes read in XFS file system read operations]
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+Help:
+This is the number of bytes read via read(2) system calls to files in
+XFS file systems. It can be used in conjunction with the read_calls
+count to calculate the average size of the read operations to files in
+XFS file systems.
+ value 0
+
+xfs.iflush_count PMID: 11.16.67 [the number of calls to xfs_iflush]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of calls to xfs_iflush which gets called when an
+inode is being flushed (such as by bdflush or tail pushing).
+xfs_iflush searches for other inodes in the same cluster which are
+dirty and flushable.
+ value 0
+
+xfs.icluster_flushcnt PMID: 11.16.68 [value from xs_icluster_flushcnt field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_icluster_flushcnt field of struct xfsstats
+ value 0
+
+xfs.icluster_flushinode PMID: 11.16.69 [number of flushes of only one inode in cluster]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times that the inode clustering was not able to
+flush anything but the one inode it was called with.
+ value 0
+
+xfs.allocs.alloc_extent PMID: 11.16.0 [XFS extents allocated]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system extents allocated over all XFS filesystems
+ value 0
+
+xfs.allocs.alloc_block PMID: 11.16.1 [XFS blocks allocated]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system blocks allocated over all XFS filesystems
+ value 0
+
+xfs.allocs.free_extent PMID: 11.16.2 [XFS extents freed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system extents freed over all XFS filesystems
+ value 0
+
+xfs.allocs.free_block PMID: 11.16.3 [XFS blocks freed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of file system blocks freed over all XFS filesystems
+ value 0
+
+xfs.alloc_btree.lookup PMID: 11.16.4 [lookups in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of lookup operations in XFS filesystem allocation btrees
+ value 0
+
+xfs.alloc_btree.compare PMID: 11.16.5 [compares in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of compares in XFS filesystem allocation btree lookups
+ value 0
+
+xfs.alloc_btree.insrec PMID: 11.16.6 [insertions in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent records inserted into XFS filesystem allocation btrees
+ value 0
+
+xfs.alloc_btree.delrec PMID: 11.16.7 [deletions in XFS alloc btrees]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent records deleted from XFS filesystem allocation btrees
+ value 0
+
+xfs.block_map.read_ops PMID: 11.16.8 [block map read ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map for read operations performed on XFS files
+ value 0
+
+xfs.block_map.write_ops PMID: 11.16.9 [block map write ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map for write operations performed on XFS files
+ value 0
+
+xfs.block_map.unmap PMID: 11.16.10 [block unmap ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block unmap (delete) operations performed on XFS files
+ value 0
+
+xfs.block_map.add_exlist PMID: 11.16.11 [extent list add ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list insertion operations for XFS files
+ value 0
+
+xfs.block_map.del_exlist PMID: 11.16.12 [extent list delete ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list deletion operations for XFS files
+ value 0
+
+xfs.block_map.look_exlist PMID: 11.16.13 [extent list lookup ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list lookup operations for XFS files
+ value 0
+
+xfs.block_map.cmp_exlist PMID: 11.16.14 [extent list compare ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of extent list comparisons in XFS extent list lookups
+ value 0
+
+xfs.bmap_btree.lookup PMID: 11.16.15 [block map btree lookup ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree lookup operations on XFS files
+ value 0
+
+xfs.bmap_btree.compare PMID: 11.16.16 [block map btree compare ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree compare operations in XFS block map lookups
+ value 0
+
+xfs.bmap_btree.insrec PMID: 11.16.17 [block map btree insert ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree records inserted for XFS files
+ value 0
+
+xfs.bmap_btree.delrec PMID: 11.16.18 [block map btree delete ops in XFS]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of block map btree records deleted for XFS files
+ value 0
+
+xfs.dir_ops.lookup PMID: 11.16.19 [number of file name directory lookups]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is a count of the number of file name directory lookups in XFS
+filesystems. It counts only those lookups which miss in the operating
+system's directory name lookup cache and must search the real directory
+structure for the name in question. The count is incremented once for
+each level of a pathname search that results in a directory lookup.
+ value 0
+
+xfs.dir_ops.create PMID: 11.16.20 [number of directory entry creation operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times a new directory entry was created in XFS
+filesystems. Each time that a new file, directory, link, symbolic link,
+or special file is created in the directory hierarchy the count is
+incremented.
+ value 0
+
+xfs.dir_ops.remove PMID: 11.16.21 [number of directory entry remove operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times an existing directory entry was removed in
+XFS filesystems. Each time that a file, directory, link, symbolic link,
+or special file is removed from the directory hierarchy the count is
+incremented.
+ value 0
+
+xfs.dir_ops.getdents PMID: 11.16.22 [number of times the getdents operation is performed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the XFS directory getdents operation was
+performed. The getdents operation is used by programs to read the
+contents of directories in a file system independent fashion. This
+count corresponds exactly to the number of times the getdents(2) system
+call was successfully used on an XFS directory.
+ value 0
+
+xfs.transactions.sync PMID: 11.16.23 [number of synchronous meta-data transactions performed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of meta-data transactions which waited to be
+committed to the on-disk log before allowing the process performing the
+transaction to continue. These transactions are slower and more
+expensive than asynchronous transactions, because they force the in
+memory log buffers to be forced to disk more often and they wait for
+the completion of the log buffer writes.
+ value 0
+
+xfs.transactions.async PMID: 11.16.24 [number of asynchronous meta-data transactions performed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of meta-data transactions which did not wait to be
+committed to the on-disk log before allowing the process performing the
+transaction to continue. These transactions are faster and more
+efficient than synchronous transactions, because they commit their data
+to the in memory log buffers without forcing those buffers to be
+written to disk. This allows multiple asynchronous transactions to be
+committed to disk in a single log buffer write. Most transactions used
+in XFS file systems are asynchronous.
+ value 0
+
+xfs.transactions.empty PMID: 11.16.25 [number of meta-data transactions which committed without changing anything]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of meta-data transactions which did not actually
+change anything. These are transactions which were started for some
+purpose, but in the end it turned out that no change was necessary.
+ value 0
+
+xfs.inode_ops.ig_attempts PMID: 11.16.26 [number of in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache. Whether the inode was found in the cache or
+needed to be read in from the disk is not indicated here, but this can
+be computed from the ig_found and ig_missed counts.
+ value 0
+
+xfs.inode_ops.ig_found PMID: 11.16.27 [number of successful in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and found it. The closer this count is to the
+ig_attempts count the better the inode cache is performing.
+ value 0
+
+xfs.inode_ops.ig_frecycle PMID: 11.16.28 [number of just missed in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and saw that it was there but was unable to
+use the in memory inode because it was being recycled by another
+process.
+ value 0
+
+xfs.inode_ops.ig_missed PMID: 11.16.29 [number of failed in memory inode lookup operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and the inode was not there. The further this
+count is from the ig_attempts count the better.
+ value 0
+
+xfs.inode_ops.ig_dup PMID: 11.16.30 [number of inode cache insertions that fail because the inode is there]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system looked for an XFS
+inode in the inode cache and found that it was not there but upon
+attempting to add the inode to the cache found that another process had
+already inserted it.
+ value 0
+
+xfs.inode_ops.ig_reclaims PMID: 11.16.31 [number of in memory inode recycle operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system recycled an XFS inode
+from the inode cache in order to use the memory for that inode for
+another purpose. Inodes are recycled in order to keep the inode cache
+from growing without bound. If the reclaim rate is high it may be
+beneficial to raise the vnode_free_ratio kernel tunable variable to
+increase the size of inode cache.
+ value 0
+
+xfs.inode_ops.ig_attrchg PMID: 11.16.32 [number of inode attribute change operations]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of times the operating system explicitly changed the
+attributes of an XFS inode. For example, this could be to change the
+inode's owner, the inode's size, or the inode's timestamps.
+ value 0
+
+xfs.log.writes PMID: 11.16.33 [number of buffer writes going to the disk from the log]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This variable counts the number of log buffer writes going to the
+physical log partitions of all XFS filesystems. Log data traffic is
+proportional to the level of meta-data updating. Log buffer writes get
+generated when they fill up or external syncs occur.
+ value 0
+
+xfs.log.blocks PMID: 11.16.34 [write throughput to the physical XFS log]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: Kbyte
+Help:
+This variable counts the number of Kbytes of information being written
+to the physical log partitions of all XFS filesystems. Log data traffic
+is proportional to the level of meta-data updating. The rate with which
+log data gets written depends on the size of internal log buffers and
+disk write speed. Therefore, filesystems with very high meta-data
+updating may need to stripe the log partition or put the log partition
+on a separate drive.
+ value 0
+
+xfs.log.write_ratio PMID: 11.16.78 [ratio of count of XFS log blocks written to log writes]
+ Data Type: float InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+The ratio of log blocks written to log writes. If block count isn't a
+"reasonable" multiple of writes, then many small log writes are being
+performed - this is suboptimal. Perfection is 64. Fine-grain control
+can be obtained when this metric is used in conjuntion with pmstore(1)
+and the xfs.control.reset metric.
+ value 0
+
+xfs.log.noiclogs PMID: 11.16.35 [count of failures for immediate get of buffered/internal]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This variable keeps track of times when a logged transaction can not
+get any log buffer space. When this occurs, all of the internal log
+buffers are busy flushing their data to the physical on-disk log.
+ value 0
+
+xfs.log.force PMID: 11.16.36 [value from xs_log_force field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of times the in-core log is forced to disk. It is
+equivalent to the number of successful calls to the function
+xfs_log_force().
+ value 0
+
+xfs.log.force_sleep PMID: 11.16.37 [value from xs_log_force_sleep field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This metric is exported from the xs_log_force_sleep field of struct xfsstats
+ value 0
+
+xfs.log_tail.try_logspace PMID: 11.16.38 [value from xs_try_logspace field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This metric is exported from the xs_try_logspace field of struct xfsstats
+ value 0
+
+xfs.log_tail.sleep_logspace PMID: 11.16.39 [value from xs_sleep_logspace field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This metric is exported from the xs_sleep_logspace field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.pushes PMID: 11.16.40 [number of times the AIL tail is moved forward]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of times the tail of the AIL is moved forward. It is
+equivalent to the number of successful calls to the function
+xfs_trans_push_ail().
+ value 0
+
+xfs.log_tail.push_ail.success PMID: 11.16.41 [value from xs_push_ail_success field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_success field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.pushbuf PMID: 11.16.42 [value from xs_push_ail_pushbuf field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_pushbuf field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.pinned PMID: 11.16.43 [value from xs_push_ail_pinned field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_pinned field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.locked PMID: 11.16.44 [value from xs_push_ail_locked field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_locked field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.flushing PMID: 11.16.45 [value from xs_push_ail_flushing field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_flushing field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.restarts PMID: 11.16.46 [value from xs_push_ail_restarts field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_restarts field of struct xfsstats
+ value 0
+
+xfs.log_tail.push_ail.flush PMID: 11.16.47 [value from xs_push_ail_flush field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_push_ail_flush field of struct xfsstats
+ value 0
+
+xfs.xstrat.bytes PMID: 11.16.48 [number of bytes of data processed by the XFS daemons]
+ Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: byte
+Help:
+This is the number of bytes of file data flushed out by the XFS
+flushing daemons.
+ value 0
+
+xfs.xstrat.quick PMID: 11.16.49 [number of buffers processed by the XFS daemons written to contiguous space on disk]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of buffers flushed out by the XFS flushing daemons
+which are written to contiguous space on disk. The buffers handled by
+the XFS daemons are delayed allocation buffers, so this count gives an
+indication of the success of the XFS daemons in allocating contiguous
+disk space for the data being flushed to disk.
+ value 0
+
+xfs.xstrat.split PMID: 11.16.50 [number of buffers processed by the XFS daemons written to non-contiguous space on disk]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+This is the number of buffers flushed out by the XFS flushing daemons
+which are written to non-contiguous space on disk. The buffers handled
+by the XFS daemons are delayed allocation buffers, so this count gives
+an indication of the failure of the XFS daemons in allocating
+contiguous disk space for the data being flushed to disk. Large values
+in this counter indicate that the file system has become fragmented.
+ value 0
+
+xfs.attr.get PMID: 11.16.55 [number of "get" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "get" operations performed on extended file attributes
+within XFS filesystems. The "get" operation retrieves the value of an
+extended attribute.
+ value 0
+
+xfs.attr.set PMID: 11.16.56 [number of "set" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "set" operations performed on extended file attributes
+within XFS filesystems. The "set" operation creates and sets the value
+of an extended attribute.
+ value 0
+
+xfs.attr.remove PMID: 11.16.57 [number of "remove" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "remove" operations performed on extended file attributes
+within XFS filesystems. The "remove" operation deletes an extended
+attribute.
+ value 0
+
+xfs.attr.list PMID: 11.16.58 [number of "list" operations on XFS extended file attributes]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+The number of "list" operations performed on extended file attributes
+within XFS filesystems. The "list" operation retrieves the set of
+extended attributes associated with a file.
+ value 0
+
+xfs.quota.reclaims PMID: 11.16.59 [value from xs_qm_dqreclaims field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqreclaims field of struct xfsstats
+ value 0
+
+xfs.quota.reclaim_misses PMID: 11.16.60 [value from xs_qm_dqreclaim_misses field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqreclaim_misses field of struct xfsstats
+ value 0
+
+xfs.quota.dquot_dups PMID: 11.16.61 [value from xs_qm_dquot_dups field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dquot_dups field of struct xfsstats
+ value 0
+
+xfs.quota.cachemisses PMID: 11.16.62 [value from xs_qm_dqcachemisses field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqcachemisses field of struct xfsstats
+ value 0
+
+xfs.quota.cachehits PMID: 11.16.63 [value from xs_qm_dqcachehits field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqcachehits field of struct xfsstats
+ value 0
+
+xfs.quota.wants PMID: 11.16.64 [value from xs_qm_dqwants field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqwants field of struct xfsstats
+ value 0
+
+xfs.quota.shake_reclaims PMID: 11.16.65 [value from xs_qm_dqshake_reclaims field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqshake_reclaims field of struct xfsstats
+ value 0
+
+xfs.quota.inact_reclaims PMID: 11.16.66 [value from xs_qm_dqinact_reclaims field of struct xfsstats]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+value from xs_qm_dqinact_reclaims field of struct xfsstats
+ value 0
+
+xfs.buffer.get PMID: 11.17.0 [number of request buffer calls]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of request buffer calls
+ value 0
+
+xfs.buffer.create PMID: 11.17.1 [number of buffers created]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of buffers created
+ value 0
+
+xfs.buffer.get_locked PMID: 11.17.2 [number of requests for a locked buffer which succeeded]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of requests for a locked buffer which succeeded
+ value 0
+
+xfs.buffer.get_locked_waited PMID: 11.17.3 [number of requests for a locked buffer which waited]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of requests for a locked buffer which waited
+ value 0
+
+xfs.buffer.busy_locked PMID: 11.17.4 [number of non-blocking requests for a locked buffer which failed]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of non-blocking requests for a locked buffer which failed
+ value 0
+
+xfs.buffer.miss_locked PMID: 11.17.5 [number of requests for a locked buffer which failed due to no buffer]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of requests for a locked buffer which failed due to no buffer
+ value 0
+
+xfs.buffer.page_retries PMID: 11.17.6 [number of retry attempts when allocating a page for insertion in a buffer]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of retry attempts when allocating a page for insertion in a buffer
+ value 0
+
+xfs.buffer.page_found PMID: 11.17.7 [number of hits in the page cache when looking for a page]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of hits in the page cache when looking for a page
+ value 0
+
+xfs.buffer.get_read PMID: 11.17.8 [number of buffer get calls requiring immediate device reads]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of buffer get calls requiring immediate device reads
+ value 0
+
+xfs.vnodes.active PMID: 11.16.70 [number of vnodes not on free lists]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+Help:
+number of vnodes not on free lists
+ value 0
+
+xfs.vnodes.alloc PMID: 11.16.71 [number of times vn_alloc called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_alloc called
+ value 0
+
+xfs.vnodes.get PMID: 11.16.72 [number of times vn_get called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_get called
+ value 0
+
+xfs.vnodes.hold PMID: 11.16.73 [number of times vn_hold called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_hold called
+ value 0
+
+xfs.vnodes.rele PMID: 11.16.74 [number of times vn_rele called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_rele called
+ value 0
+
+xfs.vnodes.reclaim PMID: 11.16.75 [number of times vn_reclaim called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_reclaim called
+ value 0
+
+xfs.vnodes.remove PMID: 11.16.76 [number of times vn_remove called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_remove called
+ value 0
+
+xfs.vnodes.free PMID: 11.16.77 [number of times vn_free called]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+number of times vn_free called
+ value 0
+
+xfs.control.reset PMID: 11.16.79 [reset the values of all XFS metrics to zero]
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: discrete Units: none
+Help:
+reset the values of all XFS metrics to zero
+ value 0
+
+xfs.btree.alloc_blocks.lookup PMID: 11.16.80 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree record lookups
+ value 0
+
+xfs.btree.alloc_blocks.compare PMID: 11.16.81 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree record compares
+ value 0
+
+xfs.btree.alloc_blocks.insrec PMID: 11.16.82 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree insert record operations executed
+ value 0
+
+xfs.btree.alloc_blocks.delrec PMID: 11.16.83 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-block-number btree delete record operations executed
+ value 0
+
+xfs.btree.alloc_blocks.newroot PMID: 11.16.84 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to a free-space-by-block-number btree
+ value 0
+
+xfs.btree.alloc_blocks.killroot PMID: 11.16.85 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from a free-space-by-block-number btree
+ value 0
+
+xfs.btree.alloc_blocks.increment PMID: 11.16.86 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved forward one free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.decrement PMID: 11.16.87 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved backward one free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.lshift PMID: 11.16.88 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.rshift PMID: 11.16.89 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.split PMID: 11.16.90 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new free-space-by-block-number
+btree record
+ value 0
+
+xfs.btree.alloc_blocks.join PMID: 11.16.91 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting free-space-by-block-number btree records
+ value 0
+
+xfs.btree.alloc_blocks.alloc PMID: 11.16.92 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during free-space-by-block-number btree operations
+ value 0
+
+xfs.btree.alloc_blocks.free PMID: 11.16.93 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during free-space-by-block-number btree operations
+ value 0
+
+xfs.btree.alloc_blocks.moves PMID: 11.16.94 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during free-space-by-block-number btree operations
+ value 0
+
+xfs.btree.alloc_contig.lookup PMID: 11.16.95 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree record lookups
+ value 0
+
+xfs.btree.alloc_contig.compare PMID: 11.16.96 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree btree record compares
+ value 0
+
+xfs.btree.alloc_contig.insrec PMID: 11.16.97 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree insert record operations executed
+ value 0
+
+xfs.btree.alloc_contig.delrec PMID: 11.16.98 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of free-space-by-size btree delete record operations executed
+ value 0
+
+xfs.btree.alloc_contig.newroot PMID: 11.16.99 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to a free-space-by-size btree tree
+ value 0
+
+xfs.btree.alloc_contig.killroot PMID: 11.16.100 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from a free-space-by-size btree tree
+ value 0
+
+xfs.btree.alloc_contig.increment PMID: 11.16.101 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a free-space-by-size btree cursor has been moved forward
+one record
+ value 0
+
+xfs.btree.alloc_contig.decrement PMID: 11.16.102 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a free-space-by-size btree cursor has been moved backward
+one record
+ value 0
+
+xfs.btree.alloc_contig.lshift PMID: 11.16.103 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new free-space-by-size
+btree record
+ value 0
+
+xfs.btree.alloc_contig.rshift PMID: 11.16.104 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new free-space-by-size
+btree record
+ value 0
+
+xfs.btree.alloc_contig.split PMID: 11.16.105 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new free-space-by-size btree
+record
+ value 0
+
+xfs.btree.alloc_contig.join PMID: 11.16.106 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting free-space-by-size btree records
+ value 0
+
+xfs.btree.alloc_contig.alloc PMID: 11.16.107 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during free-space-by-size btree operations
+ value 0
+
+xfs.btree.alloc_contig.free PMID: 11.16.108 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during free-space-by-size btree operations
+ value 0
+
+xfs.btree.alloc_contig.moves PMID: 11.16.109 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during free-space-by-size btree operations
+ value 0
+
+xfs.btree.block_map.lookup PMID: 11.16.110 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree record lookups
+ value 0
+
+xfs.btree.block_map.compare PMID: 11.16.111 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree record compares
+ value 0
+
+xfs.btree.block_map.insrec PMID: 11.16.112 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree insert record operations executed
+ value 0
+
+xfs.btree.block_map.delrec PMID: 11.16.113 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-block-map/extent btree delete record operations executed
+ value 0
+
+xfs.btree.block_map.newroot PMID: 11.16.114 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to an inode-block-map/extent btree
+ value 0
+
+xfs.btree.block_map.killroot PMID: 11.16.115 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from an inode-block-map/extent btree
+ value 0
+
+xfs.btree.block_map.increment PMID: 11.16.116 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times an inode-block-map/extent btree cursor has been moved
+forward one record
+ value 0
+
+xfs.btree.block_map.decrement PMID: 11.16.117 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times an inode-block-map/extent btree cursor has been moved
+backward one record
+ value 0
+
+xfs.btree.block_map.lshift PMID: 11.16.118 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new inode-block-map/extent
+btree record
+ value 0
+
+xfs.btree.block_map.rshift PMID: 11.16.119 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new inode-block-map/extent
+btree record
+ value 0
+
+xfs.btree.block_map.split PMID: 11.16.120 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new inode-block-map/extent
+btree record
+ value 0
+
+xfs.btree.block_map.join PMID: 11.16.121 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting inode-block-map/extent btree records
+ value 0
+
+xfs.btree.block_map.alloc PMID: 11.16.122 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during inode-block-map/extent btree operations
+ value 0
+
+xfs.btree.block_map.free PMID: 11.16.123 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during inode-block-map/extent btree operations
+ value 0
+
+xfs.btree.block_map.moves PMID: 11.16.124 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during inode-block-map/extent btree operations
+ value 0
+
+xfs.btree.inode.lookup PMID: 11.16.125 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree record lookups
+ value 0
+
+xfs.btree.inode.compare PMID: 11.16.126 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree record compares
+ value 0
+
+xfs.btree.inode.insrec PMID: 11.16.127 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree insert record operations executed
+ value 0
+
+xfs.btree.inode.delrec PMID: 11.16.128 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of inode-allocation btree delete record operations executed
+ value 0
+
+xfs.btree.inode.newroot PMID: 11.16.129 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a new level is added to an inode-allocation btree
+ value 0
+
+xfs.btree.inode.killroot PMID: 11.16.130 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a level is removed from an inode-allocation btree
+ value 0
+
+xfs.btree.inode.increment PMID: 11.16.131 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved forward one inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.decrement PMID: 11.16.132 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Number of times a cursor has been moved backward one inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.lshift PMID: 11.16.133 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Left shift block operations to make space for a new inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.rshift PMID: 11.16.134 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Right shift block operations to make space for a new inode-allocation
+btree record
+ value 0
+
+xfs.btree.inode.split PMID: 11.16.135 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Split block operations to make space for a new inode-allocation btree record
+ value 0
+
+xfs.btree.inode.join PMID: 11.16.136 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Merge block operations when deleting inode-allocation btree records
+ value 0
+
+xfs.btree.inode.alloc PMID: 11.16.137 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree block allocations during inode-allocation btree operations
+ value 0
+
+xfs.btree.inode.free PMID: 11.16.138 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Btree blocks freed during inode-allocation btree operations
+ value 0
+
+xfs.btree.inode.moves PMID: 11.16.139 []
+ Data Type: 32-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: counter Units: count
+Help:
+Records moved inside blocks during inode-allocation btree operations
+ value 0
+=== std err ===
+=== filtered valgrind report ===
+Memcheck, a memory error detector
+Command: pminfo -L -K clear -K add,11,/var/lib/pcp/pmdas/xfs/pmda_xfs,xfs_init -dfmtT xfs
+LEAK SUMMARY:
+definitely lost: 0 bytes in 0 blocks
+indirectly lost: 0 bytes in 0 blocks
+ERROR SUMMARY: 0 errors from 0 contexts ...
+
+== done
+
diff --git a/qa/991 b/qa/991
new file mode 100755
index 0000000..10315d8
--- /dev/null
+++ b/qa/991
@@ -0,0 +1,47 @@
+#!/bin/sh
+# PCP QA Test No. 991
+# Exercise the pcp-free(1) command using an archive
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+. ./common.python
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+archive="-a $here/src/pcp-free -z"
+archive_first="$archive -O +1"
+archive_last="$archive -O -0"
+
+# real QA test starts here
+echo && echo === free output, at first sample
+pcp $archive_first free
+
+echo && echo === free output, at last sample
+pcp $archive_last free
+
+echo && echo === free output, bytes
+pcp $archive_first free -b
+
+echo && echo === free output, megabytes
+pcp $archive_first free -m
+
+echo && echo === free output, gigabytes
+pcp $archive_first free -g
+
+echo && echo === free output, totals + in megabytes
+pcp $archive_first free -t -m
+
+echo && echo === free output, compat + low/high detail
+pcp $archive_first free -o -l
+
+echo && echo === free output, multiple samples
+pcp $archive_first free -c 2 -s 2.5
+
+status=0
+exit
diff --git a/qa/991.out b/qa/991.out
new file mode 100644
index 0000000..7b0f818
--- /dev/null
+++ b/qa/991.out
@@ -0,0 +1,57 @@
+QA output created by 991
+
+=== free output, at first sample
+ total used free shared buffers cached
+Mem: 24535816 13443872 11091944 0 181080 741960
+-/+ buffers/cache: 12520832 12014984
+Swap 12337144 0 12337144
+
+=== free output, at last sample
+ total used free shared buffers cached
+Mem: 24535816 14903780 9632036 0 181136 2188308
+-/+ buffers/cache: 12534336 12001480
+Swap 12337144 0 12337144
+
+=== free output, bytes
+ total used free shared buffers cached
+Mem: 25124675584 13766524928 11358150656 0 185425920 759767040
+-/+ buffers/cache: 12821331968 12303343616
+Swap 12633235456 0 12633235456
+
+=== free output, megabytes
+ total used free shared buffers cached
+Mem: 23960 13128 10831 0 176 724
+-/+ buffers/cache: 12227 11733
+Swap 12047 0 12047
+
+=== free output, gigabytes
+ total used free shared buffers cached
+Mem: 23 12 10 0 0 0
+-/+ buffers/cache: 11 11
+Swap 11 0 11
+
+=== free output, totals + in megabytes
+ total used free shared buffers cached
+Mem: 23960 13128 10831 0 176 724
+-/+ buffers/cache: 12227 11733
+Swap 12047 0 12047
+Total 36008 13128 22879
+
+=== free output, compat + low/high detail
+ total used free shared buffers cached
+Mem: 24535816 13443872 11091944 0 181080 741960
+Low: 24535816 13443872 24535816
+High: 0 0 0
+Swap 12337144 0 12337144
+
+=== free output, multiple samples
+ total used free shared buffers cached
+Mem: 24535816 13443872 11091944 0 181080 741960
+-/+ buffers/cache: 12520832 12014984
+Swap 12337144 0 12337144
+
+ total used free shared buffers cached
+Mem: 24535816 13714396 10821420 0 181080 1004744
+-/+ buffers/cache: 12528572 12007244
+Swap 12337144 0 12337144
+
diff --git a/qa/994 b/qa/994
new file mode 100755
index 0000000..1a6952f
--- /dev/null
+++ b/qa/994
@@ -0,0 +1,95 @@
+#!/bin/sh
+# PCP QA Test No. 994
+# Try to check permissions of package artifacts.
+#
+# See src/mkpermslist and src/permslist.
+#
+# Copyright (c) 2013 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+if [ ! -f src/permslist ]
+then
+ echo "Arrgh .. src/permslist is missing. Need to"
+ echo " $ cd src; ./mkpermslist"
+ echo "in a git tree containg the PCP source and then try again."
+ status=1
+ exit
+fi
+
+# real QA test starts here
+
+# permslist format ...
+# src/pmdas/mmv/GNUmakefile|1777|root|root|/var/tmp/mmv
+# but also need to expand PCP env vars we expect to find
+sed -e 's/ /\\ /g' -e 's/|/ /g' <src/permslist \
+ -e 's@$(PCP_USER)@'$PCP_USER@g \
+ -e 's@$(PCP_GROUP)@'$PCP_GROUP@g \
+ -e 's@$(PCP_PMLOGGERCONTROL_PATH)@'$PCP_PMLOGGERCONTROL_PATH@g \
+ -e 's@$(PCP_PMIECONTROL_PATH)@'$PCP_PMIECONTROL_PATH@g \
+ -e 's@$(PCP_TMP_DIR)@'$PCP_TMP_DIR@g \
+ -e 's@$(PCP_LOG_DIR)@'$PCP_LOG_DIR@g \
+ -e 's@$(PCP_VAR_DIR)@'$PCP_VAR_DIR@g \
+ -e 's@$(PCP_RUN_DIR)@'$PCP_RUN_DIR@g \
+ -e 's@$(PCP_SYSCONF_DIR)@'$PCP_SYSCONF_DIR@g \
+| while read makefile mode owner group target optional
+do
+ if [ ! -f "$target" -a ! -d "$target" ]
+ then
+ [ -z "$optional" ] && \
+ echo "Error: $target: not found, should have been installed from $makefile"
+ else
+ # stat line of interest ...
+ # Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
+ #
+ _mode=""
+ _owner=""
+ _group=""
+ eval `stat $target | sed -n -e '/^Access:.*Uid:.*Gid:/{
+s/Access: *(/_mode=/
+s/\/.*) *Uid: *( *[0-9][0-9]*\/ */ _owner=/
+s/) *Gid: *( *[0-9][0-9]*\/ */ _group=/
+s/).*//
+s/=0*/=/g
+p
+}'`
+ if [ -z "$_mode" -o -z "$_owner" -o -z "$_group" ]
+ then
+ echo "Arrgh, failed to extract mode, owner and group from stat(1) output ..."
+ stat $target
+ status=1
+ break
+ fi
+ #debug# echo "$target: mode: have $_mode expect $mode"
+ #debug# echo "$target: owner: have $_owner expect $owner"
+ #debug# echo "$target: group: have $_group expect $group"
+ if [ "$_mode" != "$mode" ]
+ then
+ echo "$target: wrong mode: expected $mode (from $makefile), found $_mode"
+ fi
+ if [ "$_owner" != "$owner" ]
+ then
+ echo "$target: wrong owner: expected $owner (from $makefile), found $_owner"
+ fi
+ if [ "$_group" != "$group" ]
+ then
+ echo "$target: wrong group: expected $group (from $makefile), found $_group"
+ fi
+ fi
+done
+
+# success, all done
+status=0
+
+exit
diff --git a/qa/994.out b/qa/994.out
new file mode 100644
index 0000000..ec4a0d7
--- /dev/null
+++ b/qa/994.out
@@ -0,0 +1 @@
+QA output created by 994
diff --git a/qa/GNUmakefile b/qa/GNUmakefile
new file mode 100644
index 0000000..8f3f5c4
--- /dev/null
+++ b/qa/GNUmakefile
@@ -0,0 +1,89 @@
+#!gmake
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# NB: this GNUmakefile is only for use from within the PCP build tree. It governs
+# only the packaging of the testsuite into the $PCP_VAR_DIR/testsuite directory.
+# The nearby GNUmakefile.install file actually governs execution of the testsuite.
+
+TOPDIR = ..
+include $(TOPDIR)/src/include/builddefs
+-include ./GNUlocaldefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite
+TESTS = $(shell sed -n -e '/^[0-9]/s/:retired//' -e '/^[0-9]/s/:reserved//' -e '/^[0-9]/s/[ ].*//' -e '/^[0-9]/p' <group)
+
+SUBDIRS = src pmdas cisco gluster pconf sadist collectl secure nfsclient \
+ archives views qt linux
+LCONFIG = localconfig
+
+# No implicit rules here, thank you
+#
+.SUFFIXES:
+
+# and do nothing if NNN.out is older than NNN
+#
+%.out: %
+
+default_pcp default: new remake check qa_outfiles $(OTHERS) $(SUBDIRS) $(LCONFIG)
+ $(SUBDIRS_MAKERULE)
+
+setup: $(SUBDIRS) $(LCONFIG) qa_hosts
+ $(SUBDIRS_MAKERULE)
+
+LDIRT += 051.work 134.full.* \
+ *.bak *.bad *.core *.full *.raw *.o core a.out core.* \
+ *.log eek* urk* so_locations tmp.* gmon.out oss.qa.tar.gz \
+ *.full.ok *.new rc_cron_check.clean \
+ make.out qa_hosts qa_outfiles localconfig check.time
+ # these ones are links to the real files created when the associated
+ # test is run
+LDIRT += $(shell [ -f .gitignore ] && grep '\.out$$' .gitignore)
+
+SCRIPTS = mk.localconfig mk.pcpversion mk.qa_hosts mk.variant getpmcdhosts \
+ new check recheck remake findmetric group-stats changeversion \
+ check-gitignore check-group chk.setup show-me disk-work \
+ xlate_2_new_pmns common setup.051
+
+COMMON_SCRIPTS = common.install.cisco common.pcpweb
+COMMON = common.check common.config common.filter \
+ common.product common.rc common.setup \
+ common.secure common.gfs2 common.rpm \
+ common.python common.sh common.qt common.avahi \
+ common.discovery common.compress
+
+OTHERS = GNUmakefile.install group qa_hosts.master README \
+ valgrind-suppress sanity.coverage
+
+DOTOUTFILES = $(shell [ -f qa_outfiles ] && cat qa_outfiles || ls -1 | grep '^[0-9]' | grep -v '^[0-9][0-9][0-9]$$' | grep -v '^[0-9][0-9][0-9][0-9]$$' | egrep -v '^[0-9][0-9][0-9]*\.(full|out\.bad|notrun|work)' | tee qa_outfiles)
+LSRCFILES = $(SCRIPTS) $(COMMON_SCRIPTS) $(COMMON) $(TESTS) $(DOTOUTFILES) $(OTHERS)
+
+qa_outfiles:
+ @echo $(DOTOUTFILES) > qa_outfiles
+
+qa_hosts: qa_hosts.master mk.qa_hosts
+ ./mk.qa_hosts
+
+localconfig:
+ @echo PCP_PLATFORM=$(PCP_PLATFORM) > localconfig
+ ./mk.pcpversion $(PCP_VERSION) >> localconfig
+ @echo 'PCP_EOE_VER=0' >> localconfig
+ @echo 'PCP_PRO_VER=0' >> localconfig
+
+install_pcp install: $(SUBDIRS)
+ifeq (, $(filter mingw darwin solaris, $(TARGET_OS)))
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 755 $(TESTS) $(SCRIPTS) $(COMMON_SCRIPTS) $(TESTDIR)
+ $(INSTALL) -m 644 $(COMMON) $(OTHERS) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 qa_outfiles $(DOTOUTFILES) $(TESTDIR)
+ $(SUBDIRS_MAKERULE)
+endif
+
+include $(BUILDRULES)
+
+debug-me:
+ @echo TESTS=$(TESTS)
+ @echo SRCFILES=$(SRCFILES)
+ @echo CONFFILES=$(CONFFILES)
+ @echo SUBDIRS=$(SUBDIRS)
diff --git a/qa/GNUmakefile.install b/qa/GNUmakefile.install
new file mode 100644
index 0000000..a1c3424
--- /dev/null
+++ b/qa/GNUmakefile.install
@@ -0,0 +1,58 @@
+#!gmake
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# NB: this file is renamed GNUmakefile upon installation into $PCP_VAR_DIR/testsuite.
+# It is only for executing the testsuite.
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+# special variant of SUBDIRS_MAKERULE for running QA in the tree
+#
+SUBDIRS_MAKERULE = \
+ @for d in `echo $^ `; do \
+ if test -d "$$d" ; then \
+ $(ECHO) === $$d ===; \
+ if test -f "$$d/GNUmakefile.install"; then \
+ $(MAKE) -C $$d -f GNUmakefile.install $@ || exit $$?; \
+ else \
+ $(MAKE) -C $$d $@ || exit $$?; \
+ fi; \
+ fi; \
+ done
+
+SUBDIRS = src pmdas secure
+
+default_pcp default setup: $(SUBDIRS) localconfig new remake check qa_hosts
+ $(SUBDIRS_MAKERULE)
+
+LDIRT += 051.work 134.full.* \
+ *.bak *.bad *.core *.full *.raw *.o core a.out core.* \
+ *.log eek* urk* so_locations tmp.* gmon.out oss.qa.tar.gz \
+ *.full.ok *.new rc_cron_check.clean \
+ make.out qa_hosts localconfig localconfig.h check.time
+ # these ones are links to the real files created when the associated
+ # test is run
+LDIRT += $(shell [ -f .gitignore ] && grep '\.out$$' .gitignore)
+
+qa_hosts: qa_hosts.master mk.qa_hosts
+ PATH=$(PATH); ./mk.qa_hosts
+
+localconfig:
+ PATH=$(PATH); ./mk.localconfig
+
+install_pcp install:
+ @echo The PCP QA testsuite is already installed.
+ false
+
+include $(BUILDRULES)
+
+# Local variables:
+# mode: makefile
+# End:
diff --git a/qa/README b/qa/README
new file mode 100644
index 0000000..8bb9edd
--- /dev/null
+++ b/qa/README
@@ -0,0 +1,227 @@
+Notes on using the PCP QA Suite
+===============================
+
+Preliminaries
+-------------
+
+ PCP needs to be installed on the local host, with pmcd operational.
+ The sample PMDA needs to be installed.
+
+Basic getting started
+---------------------
+
+ There is some local configuration needed ... check the file
+ "common.config" ... this script uses heuristics to set a number of
+ interesting variables, specifically:
+
+ $PCPQA_CLOSE_X_SERVER
+ The $DISPLAY setting for an X server that is willing to accept
+ connections from X clients running on the local machine.
+
+ $PCPQA_FAR_PMCD
+ The hostname for a host running pmcd, but the host is preferably a
+ long way away (over a WAN) for timing test.
+
+ $PCPQA_HYPHEN_HOST
+ The hostname for a host running pmcd, with a hyphen (-) in the
+ hostname.
+
+ Next, mk.qa_hosts is a script that includes heuristics for selecting and
+ sorting the list of potential remote PCP QA hosts (qa_hosts.master).
+ Refer to the comments in qa_hosts.master, and make appropriate changes.
+
+ For each of the potential remote PCP QA hosts, the following must be
+ set up:
+
+ (a) PCP installed,
+ (b) pmcd(1) running,
+ (c) a login for the user "pcpqa" needs to be created, and then set
+ up in such a way that ssh/scp will work without the need for any
+ password, i.e. these sorts of commands
+ $ ssh pcpqa@pcp-qa-host some-command
+ $ scp some-file pcpqa@pcp-qa-host:some-dir
+ must work correctly when run from the local host.
+ The "pcpqa" user's environment must also be initialized
+ so that their shell's path includes all of the PCP binary
+ directories, so that all PCP commands are executable without
+ full pathnames. Of most concern would be auxilliary directory
+ (usually /usr/pcp/bin, /usr/share/pcp/bin or /usr/libexec/pcp/bin)
+ where commands like pmlogger(1), pmhostname(1), mkaf(1), etc.) are
+ installed.
+
+ Once you've modified common.config and qa_hosts.master, then run
+ "chk.setup" to validate the settings.
+
+ For test 051 we need five local hostnames that are valid, although
+ PCP does not need to be installed there, nor pmcd(1) running. The
+ five hosts listed in 051.hosts (the comments at the start of this
+ file explain what is required) should suffice for most installations.
+
+ The PCP QA tests are designed to be run by a non-root user. Where
+ root privileges are needed, e.g. to stop or start pmcd, install/remove
+ PMDAs, etc. the "sudo" application is used. When using sudo for QA,
+ your local or pcpqa user needs to be able to execute commands as root
+ without being prompted for a password. This can be achieved by adding
+ the following line to the /etc/sudoers file (or in more recent versions
+ of sudo, a /etc/sudoers.d/pcpqa file):
+
+ pcpqa ALL=(ALL) NOPASSWD: ALL
+
+ Some tests are graphical, and wish to make use of your display.
+ For authentication to success, you may find you need to perform
+ some access list updates, e.g. "xhost +local:" for such tests to
+ pass (e.g. test 325).
+
+ You can now verify your QA setup, by running:
+
+ ./check 000
+
+ The first time you run "check" (see below) it will descend into the
+ src directory (see below) and make all of the QA test programs and
+ dynamic PCP archives, so some patience may be required.
+
+ If test 000 fails, it may be that you have locally developed PMDAs or
+ optional PMDAs installed. Edit common.filter, and modify the
+ _filter_top_pmns() procedure to strip the top-level name components for
+ any new metric names (there are lots of examples already there) ... if
+ these are distributed PMDAs, you should send patches back to
+ pcp@mail.performancecopilot.org.
+
+
+Doing the Real Work
+-------------------
+
+
+ check ...
+ This script runs tests and verifies the output. In general,
+ test NNN is expected to terminate with an exit status of 0,
+ no core file and produce output that matches that in the file
+ NNN.out ... failures leave the current output in NNN.out.bad,
+ and may leave a more verbose trace that is useful for diagnosing
+ failures in NNN.full.
+
+ The command line options to check are:
+
+ NNN run test NNN (leading zeros will be added as necessary
+ to the test sequence number, so 00N and N are equivalent)
+
+ NNN- all tests >= NNN
+
+ NNN-MMM all tests in the range NNN ... MMM
+
+ -l diffs in line mode (the default is to use xdiff or similar)
+
+ -n show me, do not run any tests
+
+ -q quick mode, by-pass the initial setup integrity checks
+ (recommended that you do not use this the first time, nor
+ if the last run test failed)
+
+ -g xxx include tests from a named group (xxx) ... refer to the
+ "groups" file
+
+ -x xxx exclude tests from a named group (xxx) ... refer to the
+ "groups" file
+
+ If none of the NNN variants or -g is specified, then the default
+ is to run all tests.
+
+ Each of the NNN scripts that may be run by check follows the
+ same basic scheme:
+
+ - include some optional shell procedures and set variables to
+ define the local configuration options
+ - optionally, check the run-time environment to see if it makes
+ sense to run the test at all, and if not echo the reason to the
+ file NNN.notrun and exit ... check will notice the NNN.notrun
+ file and skip any testing of the exit status or comparison
+ of output
+ - define $tmp as a prefix to be used for all temporary files, and
+ install a trap handler to remove temporary files when the scipt
+ exits
+ - optionally, check the run-time environment to choose one of
+ a number of expected output formats, and link the selected
+ file to NNN.out ... if the same output is expected in all
+ environments, the NNN.out file will already exist as part of
+ the PCP QA distribution
+ - run the test
+ - optionally save all the output in the file NNN.full ... this
+ is only useful for debugging test failures
+ - filter the output to produce deterministic output that will
+ match NNN.out if the test has been successful
+
+ remake NNN
+ This script creates a new NNN.out file. Since the NNN.out files
+ are precious, and reflect the state of the qualified and expected
+ output, they should typically not be changed unless some change
+ has been made to the NNN script or the filters it uses.
+
+ new
+ Make sure "group" is writeable, then run "new" to
+ create the skeletal framework of a new test.
+
+ It is strongly suggested that you base your test on an existing test
+ ... pay particular attention to making the output deterministic so
+ the test uses the "not run" protocols (see 009 and check for
+ examples) to avoid running the test (and hence failing) if an
+ optional application, feature or platform is not available, and uses
+ appropriate filters (see common.filter for lots of useful filters
+ already packaged as shell procedures).
+
+ show-me ...
+ Report differences between the NNN.out and NNN.out.bad files.
+ By default, uses all of the NNN.out.bad files in the current
+ directory, but can also specify test numbers or ranges of test
+ numbers on the command line.
+
+ Other options may be used to fetch good and bad output files from
+ various exotic remote locations (refer to the script).
+
+
+Make in the src Directory
+-----------------------------
+
+ The src directory contains a number of test applications that are
+ designed to exercise some of the more exotic corners of the PCP
+ functionality.
+
+ In making these applications, you may see this ...
+
+ Error: trace_dev.h and ../../src/include/trace_dev.h are different!
+ make: [trace_dev.h] Error 1 (ignored)
+
+ this is caused by the source for the pcp_trace library being out of sync
+ with the src applications. If this happens, please ...
+
+ 1. cd src
+ 2. diff -u trace_dev.h ../../src/include/trace_dev.h
+ and mail the differences to pcp@mail.performancecopilot.org so we can
+ refine the Makefiles to avoid cosmetic differences
+ 3. mv trace_dev.h trace_dev.h.orig
+ cp ../../src/include/trace_dev.h trace_dev.h
+ 4. make
+
+
+008 Issues
+----------
+
+ Test 008 depends on the local disk configuration, so you need to make
+ your own 008.out file (or rather a variant that 008 will link to 008.out
+ when the test is run). Refer to the 008 script, but here is the basic
+ recipe:
+
+ $ touch touch 008.out.`hostname`
+ $ remake 008
+ $ mv 008.out 008.out.`hostname`
+
+ Be aware that it can be adversely influenced by temporary disks like USB
+ sticks, mobile phones, or other transient storage that may come and go in
+ your test systems.
+
+
+Fixes
+-----
+
+ If you find something that does not work, and fix it, or create additional
+ QA tests, please send the details to pcp@mail.performancecopilot.org.
+
diff --git a/qa/admin/README b/qa/admin/README
new file mode 100644
index 0000000..9a58bc6
--- /dev/null
+++ b/qa/admin/README
@@ -0,0 +1,6 @@
+Scripts for running lots of QA in Ken's sandpit
+
+Build does not go here.
+
+Scripts are getting sufficiently complicated that some form of
+version control is needed.
diff --git a/qa/admin/check-vm b/qa/admin/check-vm
new file mode 100755
index 0000000..4e0a5c4
--- /dev/null
+++ b/qa/admin/check-vm
@@ -0,0 +1,361 @@
+#!/bin/sh
+#
+# Check what's installed on a PCP/PCPQA VM looking for missing apps
+# and packages
+#
+
+_usage()
+{
+ echo "Usage: $0 [-v]"
+ exit 1
+}
+
+verbose=false
+while getopts 'v?' p
+do
+ case "$p"
+ in
+ v) verbose=true
+ ;;
+
+ ?) _usage
+ # NOTREACHED
+ esac
+done
+shift `expr $OPTIND - 1`
+[ $# -eq 0 ] || _usage
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# add additional and optional directories
+for dir in /sbin /usr/sbin
+do
+ if [ -d "$dir" ]
+ then
+ if echo ":$PATH:" | grep -q ":$dir:"
+ then
+ :
+ else
+ export PATH="$PATH:$dir"
+ #debug# echo add $dir to \$PATH
+ fi
+ fi
+done
+
+# perl ? apt-get install -qqy --force-yes libxml-tokeparser-perl
+# perl ? apt-get install -qqy --force-yes libspreadsheet-read-perl
+cat <<End-of-File >$tmp.control
+# one line per app, alternate items separated by white space
+# first item ending in ? means this item is a guard, if it does not
+# exist silently ignore the rest of the line
+# tests items can be
+# starting with a / test for existence of file or directory
+# (alternates separated by |)
+# containing :: test for presence of the associated Perl module
+# otherwise test for an executable with which(1)
+# (alternates separated by |)
+#
+# text after # is treated as a comment
+# text after [ is treated as annotation
+#
+# executables
+ed
+git
+make
+gcc
+autoconf
+flex
+bison
+gdb
+mktemp
+gawk
+# optional executables
+dpkg? dpkg-buildpackage [dpkg-dev]
+dpkg? dh [debhelper]
+dpkg? chrpath [chrpath]
+dpkg? sysv-rc-conf [sysv-rc-conf]
+rpm? rpmbuild [rpm-build]
+# other build prerequisites
+dpkg? /usr/share/doc/pkg-config [pkg-config]
+dpkg? /usr/share/doc/python-all-dev [python-all-dev]
+dpkg? /usr/include/microhttpd.h [libmicrohttpd-dev]
+rpm? /usr/include/microhttpd.h [libmicrohttpd-devel]
+dpkg? /usr/include/sasl/sasl.h [libsasl2-dev]
+rpm? /usr/include/sasl/sasl.h [cyrus-sasl-devel]
+rpm? /usr/include/systemd/sd-daemon.h [systemd-devel but not for CentOS 5.8]
+dpkg? /usr/include/infiniband/umad.h [libibumad-dev]
+rpm? /usr/include/infiniband/umad.h [libibumad-devel]
+dpkg? /usr/include/infiniband/mad.h [libibmad-dev]
+rpm? /usr/include/infiniband/mad.h [libibmad-devel]
+dpkg? /usr/include/avahi-common [libavahi-common-dev]
+rpm? /usr/include/avahi-common [avahi-devel]
+dpkg? g++ [g++]
+rpm? g++ [gcc-c++]
+# files
+dpkg? /usr/include/readline/readline.h [libreadline-dev]
+rpm? /usr/include/readline/readline.h [readline-devel]
+rpm? /usr/include/ncurses.h [ncurses-devel] # is this a bug in the spec file?
+# perl modules
+Time::HiRes [Perl Time-HiRes perl-Time-HiRes(rpm)]
+Date::Format [Perl TimeDate perl-TimeDate(rpm)]
+Date::Parse [Perl TimeDate perl-TimeDate(rpm)]
+Getopt::Std [base Perl]
+dpkg? ExtUtils::MakeMaker [libextutils-autoinstall-perl]
+rpm? ExtUtils::MakeMaker [perl-ExtUtils-MakeMaker]
+dpkg? XML::TokeParser [libxml-tokeparser-perl]
+rpm? XML::TokeParser [perl-XML-TokeParser]
+Spreadsheet::Read [libspreadsheet-read-perl(dpkg)]
+dpkg? Spreadsheet::WriteExcel [libspreadsheet-writeexcel-perl]
+rpm? Spreadsheet::WriteExcel [perl-Spreadsheet-WriteExcel]
+Spreadsheet::ReadSXC [cpan?]
+# other run-time
+sadf [sysstat]
+# QA
+bc
+curl
+Spreadsheet::XLSX [libspreadsheet-xlsx-perl(dpkg)]
+dpkg? Text::CSV_XS [Text-CSV_XS]
+rpm? Text::CSV_XS [perl-Text-CSV_XS]
+crontab [from vixie-cron?]
+valgrind
+dpkg? mail [bsd-mailx]
+rpm? mail [mailx]
+host [bind-utils(redhat)]
+dpkg? apache2 [apache2]
+rpm? httpd [httpd]
+time [time(redhat)]
+dpkg? realpath [realpath]
+# pcp-gui
+dpkg? qmake [qt4-qmake]
+rpm? qmake|qmake-qt4 [qt-devel]
+dpkg? /usr/lib/libQtCore.so|/usr/lib/*/libQtCore.so [libqt4-dev]
+dpkg? /usr/lib/libSoQt4.so|/usr/lib/*/libSoQt4.so [libsoqt4-dev]
+rpm? /usr/lib/libQtCore.so|/usr/lib*/libQtCore.so [qt-devel]
+dpkg? /usr/include/Inventor/Qt/SoQt.h [libsoqt-dev-common]
+dpkg? /usr/include/Inventor/SoPath.h [libcoin60-dev or libcoin80-dev]
+# python
+rpm? /usr/include/python*/Python.h [python-devel]
+dpkg? /usr/include/python*/Python.h [python-dev]
+# nss
+dpkg? /usr/include/nspr/nspr.h [libnspr4-dev]
+rpm? /usr/include/nspr4/nspr.h [nspr-devel]
+dpkg? /usr/include/nss/nss.h [libnss3-dev]
+rpm? /usr/include/nss3/nss.h [nss-devel]
+dpkg? certutil [libnss3-tools]
+rpm? certutil [nss-tools]
+End-of-File
+
+if which python >/dev/null 2>&1
+then
+ # For python-ctypes, check for python before 2.5 ... expect something like
+ # Python 2.7.3
+ eval `python -V 2>&1 | sed -e 's/Python //' -e 's/^/maj=/' -e 's/\./ min=/' -e 's/\..*//'`
+ if [ -n "$maj" -a -n "$min" ]
+ then
+ rm -f $tmp.need
+ if [ "$maj" -lt 2 ]
+ then
+ touch $tmp.need
+ elif [ "$maj" -eq 2 -a "$min" -lt 5 ]
+ then
+ touch $tmp.need
+ fi
+ [ -f $tmp.need ] && \
+ echo "rpm? /usr/share/doc/packages/python-ctypes [python-ctypes]" >>$tmp.control
+ fi
+fi
+
+cat $tmp.control \
+| sed -e 's/#.*//' -e '/^[ ]*$/d' \
+| while read apps
+do
+ rm -f $tmp.ok
+ for app in $apps
+ do
+ case $app
+ in
+ \[*)
+ break
+ ;;
+ *\?)
+ app=`echo $app | sed -e 's/?$//'`
+ optional=true
+ ;;
+ *)
+ optional=false
+ ;;
+ esac
+ case $app
+ in
+ \[*)
+ break
+ ;;
+ /*)
+ rm -f $tmp.tmp
+ for file in `echo "$app" | sed -e 's/|/ /g'`
+ do
+ if [ -f "$file" -o -d "$file" ]
+ then
+ touch $tmp.tmp
+ break
+ fi
+ done
+ [ -f $tmp.tmp ]
+ ok=$?
+ ;;
+ *::*)
+ echo "use $app;" | perl >/dev/null 2>&1
+ ok=$?
+ ;;
+ *)
+ rm -f $tmp.tmp
+ for exec in `echo "$app" | sed -e 's/|/ /g'`
+ do
+ if which $exec >/dev/null 2>&1
+ then
+ touch $tmp.tmp
+ break
+ fi
+ done
+ [ -f $tmp.tmp ]
+ ok=$?
+ ;;
+ esac
+ if $verbose
+ then
+ echo -n " .. $app"
+ $optional && echo -n "[optional]"
+ if [ $ok = 0 ]
+ then
+ echo -n " yes"
+ else
+ echo -n " no"
+ fi
+ fi
+ if [ $ok = 0 ]
+ then
+ $optional && continue
+ touch $tmp.ok
+ break
+ else
+ if $optional
+ then
+ # guard not true, skip checks for other apps
+ touch $tmp.ok
+ break
+ fi
+ fi
+ done
+ $verbose && echo
+ if [ ! -f $tmp.ok ]
+ then
+ echo "Missing: `echo $apps \
+ | sed \
+ -e 's/[ ][ ]*/ /g' \
+ -e '/ /{
+s/? /?@/
+:loop1
+s/\(\[.*\) /\1@/
+t loop1
+:loop2
+s/ \([^[]\)/@|@\1/
+t loop2
+s/@/ /g
+}'`"
+ fi
+done
+
+# Some platform-specific and special case tests
+#
+if which dpkg >/dev/null 2>&1
+then
+ # Debian based
+ #
+ dpkg -l >$tmp.tmp
+ for pkg in python-all python-all-dev
+ do
+ if grep "^ii *$pkg" <$tmp.tmp >/dev/null
+ then
+ :
+ else
+ echo "Need # apt-get install $pkg"
+ fi
+ done
+fi
+
+# Networking goo
+#
+_check_host()
+{
+ ipaddr=`sed -n </etc/hosts -e '/^#/d' -e '/::/d' -e 's/$/ /' -e "/[ ]$1[ ]/"'{
+s/[ ].*//
+p
+}'`
+ if [ -z "$ipaddr" ]
+ then
+ echo "No /etc/hosts entry for $1"
+ return
+ fi
+
+ if [ `echo "$ipaddr" | wc -l | sed -e 's/ *//g'` -gt 1 ]
+ then
+ echo "Multiple /etc/hosts entries for $1"
+ return
+ fi
+
+ ifconfig \
+ | awk '
+/^[^ ]/ { iface = $1; next }
+/inet addr:'$ipaddr' / || /inet '$ipaddr' / {
+ if (iface == "lo")
+ print "Warning: '$1' associated with loopback network interface"
+ found = 1
+ exit
+ }
+END { if (found != 1)
+ print "Warning: '$1' ('$ipaddr') not associated with a network interface"
+ }'
+}
+
+host=`hostname`
+_check_host $host
+if which pmhostname >/dev/null 2>&1
+then
+ pmhost=`pmhostname`
+ if [ -z "$pmhost" ]
+ then
+ echo "Warning: pmhostname returns nothing!"
+ else
+ case $pmhost
+ in
+ $host|$host.*)
+ ;;
+ *)
+ echo "Warning: hostname ($host) is not a prefix of pmhostname ($pmhost)"
+ ;;
+ esac
+ _check_host $pmhost
+ fi
+fi
+
+if [ -f /etc/pcp.conf ]
+then
+ . /etc/pcp.conf
+
+ # need QA access to pmlogger via pmlc
+ #
+ if [ -f $PCP_SYSCONF_DIR/pmlogger/config.default ]
+ then
+ if grep -q 'allow 192\.168\.1\.\*' $PCP_SYSCONF_DIR/pmlogger/config.default
+ then
+ :
+ else
+ echo "Missing: \"allow 192.168.1.* : all;\" [access] in $PCP_SYSCONF_DIR/pmlogger/config.default"
+ fi
+ else
+ echo "Warning: \"$PCP_SYSCONF_DIR/pcp/pmlogger/config.default\" is missing"
+ fi
+else
+ echo "Warning: \"/etc/pcp.conf\" is missing"
+fi
diff --git a/qa/admin/myconfigure b/qa/admin/myconfigure
new file mode 100755
index 0000000..ce0e9a4
--- /dev/null
+++ b/qa/admin/myconfigure
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# Run configure like it is run for current system ... makes workarea
+# src/include/pcp.conf match /etc/pcp.conf so "sudo make install"
+# works without surprises
+#
+
+VERS=`uname -s | cut -c-5`
+ARCH=`uname -m`
+configure_options="--prefix=/usr --libexecdir=/usr/lib --sysconfdir=/etc --localstatedir=/var --with-rcdir=/etc/init.d"
+case "$VERS"
+in
+ MINGW)
+ configure_options="$configure_options --disable-ssp"
+ ;;
+ Linux)
+ if [ -f /etc/slackware-version ]
+ then
+ if [ "$ARCH" = x86_64 ]
+ then
+ configure_options="$configure_options --libdir=/usr/lib64"
+ fi
+ fi
+ ;;
+esac
+
+./configure $configure_options
diff --git a/qa/admin/pcp-daily b/qa/admin/pcp-daily
new file mode 100755
index 0000000..2dc7067
--- /dev/null
+++ b/qa/admin/pcp-daily
@@ -0,0 +1,838 @@
+#!/bin/sh
+#
+# Run test builds on one or more PCP machines
+#
+
+tmp=/var/tmp/$$
+sts=0
+trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+
+list_1="vm03 vm01 vm04 vm07 vm12 vm14 vm16 vm18 vm20 vm22 vm24"
+list_2="fuji grundy vm02 vm00 vm05 vm11 vm15 vm19 vm21 vm23"
+
+_usage()
+{
+ echo >&2 "Usage: `basename $0` [options] vm ..."
+ echo >&2 "options:"
+ echo >&2 " -a all except shutdown VM [implies -pmiqh]"
+ echo >&2 " -b branch pcp branch to checkout [default $pcp_branch]"
+ echo >&2 " -c check git repositories"
+ echo >&2 " -d output debugging diagnostics"
+ echo >&2 " -e file prerun script"
+ echo >&2 " -f force shutdown"
+ echo >&2 " -g what QA tests or groups to run, e.g. -g \"123 -g sanity -x remote\""
+ if [ "X$what" = Xall ]
+ then
+ echo >&2 " [default <nothing> => all tests]"
+ else
+ echo >&2 " [default $what]"
+ fi
+ echo >&2 " -h harvest QA failures"
+ echo >&2 " -i install built pcp packages"
+ echo >&2 " -m build (Makepkgs) for pcp"
+ echo >&2 " -p git pull for pcp"
+ echo >&2 " -q run qa"
+ echo >&2 " -r rerun qa for failing cases"
+ echo >&2 " -s shutdown VM"
+ echo >&2 " -S single-thread, not parallel"
+ echo >&2 " -t tree for pcp [default $pcp_tree]"
+ echo >&2 "default: -pmiqhs"
+ echo >&2 "vmlist1: $list_1"
+ echo >&2 "vmlist2: $list_2"
+ echo >&2 "[both vmlists run in parallel for the default case without -S]"
+}
+
+args="$*"
+pcp_branch=dev
+pcp_tree=pcp
+cflag=false
+fflag=false
+hflag=false
+iflag=false
+mflag=false
+pflag=false
+qflag=false
+rflag=false
+what="-g sanity -g libpcp -g pdu -g pmda -g valgrind -g pmie"
+what=all
+sflag=false
+Sflag=false
+options=false
+work=false
+efile=''
+debug=false
+while getopts "ab:B:cde:fg:himpqrsSt:T:?" c
+do
+ case $c
+ in
+ a)
+ options=true
+ work=true
+ pflag=true
+ mflag=true
+ iflag=true
+ qflag=true
+ hflag=true
+ ;;
+ b)
+ pcp_branch="$OPTARG"
+ ;;
+ c)
+ options=true
+ work=true
+ cflag=true
+ ;;
+ d)
+ debug=true
+ ;;
+ e)
+ efile="$OPTARG"
+ if [ -f "$efile" ]
+ then
+ :
+ else
+ echo "Error: $efile: cannot be found"
+ sts=1
+ exit
+ fi
+ ;;
+ f)
+ fflag=true
+ ;;
+ g)
+ what="$OPTARG"
+ ;;
+ h)
+ options=true
+ work=true
+ hflag=true
+ ;;
+ i)
+ options=true
+ work=true
+ iflag=true
+ ;;
+ m)
+ options=true
+ work=true
+ mflag=true
+ ;;
+ p)
+ options=true
+ work=true
+ pflag=true
+ ;;
+ q)
+ options=true
+ work=true
+ qflag=true
+ ;;
+ r)
+ options=true
+ work=true
+ rflag=true
+ ;;
+ s)
+ options=true
+ sflag=true
+ ;;
+ S)
+ Sflag=true
+ ;;
+ t)
+ pcp_tree="$OPTARG"
+ ;;
+ ?)
+ _usage
+ sts=1
+ exit
+ ;;
+ esac
+done
+shift `expr $OPTIND - 1`
+
+if [ $# -eq 0 ]
+then
+ if $Sflag
+ then
+ # serial run
+ set -- $list_1 $list_2
+ else
+ # run in parallel
+ set -- $list_1
+ pcp-daily $args $list_2 &
+ fi
+fi
+
+if $options
+then
+ :
+else
+ # defaults
+ #
+ work=true
+ pflag=true
+ mflag=true
+ iflag=true
+ qflag=true
+ hflag=true
+ sflag=true
+fi
+
+today=`date +%Y-%m-%d`
+mkdir -p $HOME/Logs/by-date/$today
+
+rm -f $tmp.domains
+echo "bozo" >>$tmp.domains
+echo "bozo-vm" >>$tmp.domains
+echo "bozo-laptop" >>$tmp.domains
+echo "fuji" >>$tmp.domains
+echo "grundy.sgi.com" >>$tmp.domains
+if which virsh >/dev/null 2>&1
+then
+ virsh list --all \
+ | sed >>$tmp.domains \
+ -e 1d \
+ -e '/-----/d' \
+ -e 's/^ *//' \
+ -e 's/^[0-9][0-9]*[ ]*//' \
+ -e 's/^-[ ]*//' \
+ -e 's/[ ].*//' \
+ -e '/^$/d'
+fi
+
+for target
+do
+ grep "^$target" <$tmp.domains >$tmp.domain
+ if [ ! -s $tmp.domain ]
+ then
+ echo "No domain matches \"$target\" ... the domains I have are ..."
+ cat $tmp.domains
+ continue
+ fi
+ count=`wc -l <$tmp.domain | sed -e 's/ //g'`
+ if [ $count != 1 ]
+ then
+ echo "Warning: More than one domain matches \"$target\" ... the matches I have are ..."
+ cat $tmp.domain
+ echo "... using the first one."
+ fi
+ domain=`sed -e 1q $tmp.domain`
+ # used to be vmNN-osname&version, but now just vmMM ...
+ # old sed now does nothing
+ #
+ host=`echo $domain | sed -e '/^vm/s/-.*//'`
+ echo "::: $domain :::"
+
+ if which virsh >/dev/null 2>&1
+ then
+ state=`virsh list --all | grep "$domain" | awk '{print $3}'`
+ case "$state"
+ in
+ shut)
+ if $work
+ then
+ sudo virsh start $domain
+ state=running
+ fi
+ ;;
+ running)
+ ;;
+ paused)
+ if $work
+ then
+ sudo virsh resume $domain
+ state=running
+ fi
+ ;;
+ '')
+ # probably not a VM, like "fuji"
+ ;;
+ *)
+ echo "No clue what do with virsh state \"$state\""
+ continue
+ ;;
+ esac
+ fi
+
+ if $work
+ then
+ log=$HOME/Logs/by-date/$today/$domain
+ touch $log
+ mkdir -p $HOME/Logs/by-vm/$domain
+ if [ ! -L $HOME/Logs/by-vm/$domain/$today ]
+ then
+ ( cd $HOME/Logs/by-vm/$domain; ln -s ../../by-date/$today/$domain $today )
+ fi
+
+ rm -f $tmp.up
+ wait=0
+ delta=5
+ max_wait=300
+ while [ $wait -lt $max_wait ]
+ do
+ # if ping -c 1 $host >/dev/null 2>&1
+ # then
+ if ssh $host true
+ then
+ $debug && echo host up
+ touch $tmp.up
+ break
+ fi
+ # else
+ $debug && echo host down
+ # fi
+ sleep $delta
+ wait=`expr $wait + $delta`
+ done
+ if [ ! -f $tmp.up ]
+ then
+ echo "Failed to start VM domain $domain after $max_wait secs ... giving up"
+ continue
+ fi
+
+ check=`ssh -t $host uname -sr 2>/dev/null`
+ $debug && echo "check=$check"
+ case "$check"
+ in
+ FreeBSD\ *)
+ osname=freebsd
+ ;;
+ *)
+ osname=unknown
+ ;;
+ esac
+ $debug && echo "osname=$osname"
+
+ # per-host settings
+ # MAKE=gmake for *BSD hosts
+ #
+ MAKE=make
+ case "$osname"
+ in
+ freebsd|netbsd)
+ MAKE=gmake
+ ;;
+ esac
+ $debug && echo "MAKE=$MAKE"
+
+ cat >$tmp.script <<End-of-File
+#!/bin/sh
+#
+# PCP Build Script from pcp-daily on `date`
+#
+
+[ -f \$HOME/.dailyrc ] && . \$HOME/.dailyrc
+if [ $debug = true ]
+then
+ echo PATH=\$PATH
+ echo MAKE=\$MAKE
+ which ${MAKE:-make}
+fi
+
+tmp=/var/tmp/\$\$
+trap "rm -f \$tmp.*; exit 0" 0 1 2 3 15
+rm -f \$HOME/daily.log
+touch \$HOME/daily.log
+
+case "$pcp_tree"
+in
+ pcpfans)
+ if [ ! -d src/pcpfans ]
+ then
+ git clone git://sourceware.org/git/${pcp_tree}.git src/pcpfans
+ echo "Info: clone $pcp_tree git tree" | tee -a \$HOME/daily.log
+ fi
+ ;;
+ *)
+ if [ ! -d src/$pcp_tree ]
+ then
+ git clone ssh://bozo/home/kenj/src/${pcp_tree} src/$pcp_tree
+ echo "Info: clone $pcp_tree git tree" | tee -a \$HOME/daily.log
+ fi
+ ;;
+esac
+
+cd src/$pcp_tree
+End-of-File
+ if [ -n "$efile" ]
+ then
+ cat $efile >>$tmp.script
+ fi
+ cat >>$tmp.script <<End-of-File
+git branch -a >\$tmp.branch
+if grep " $pcp_branch\$" <\$tmp.branch >/dev/null
+then
+ :
+else
+ if grep " remotes/origin/$pcp_branch\$" <\$tmp.branch >/dev/null
+ then
+ git branch --track $pcp_branch remotes/origin/$pcp_branch
+ echo "Info: pcp git branch $pcp_branch set up for remote tracking" | tee -a \$HOME/daily.log
+ else
+ echo "Error: pcp git branch $pcp_branch unknown!" | tee -a \$HOME/daily.log
+ exit 1
+ fi
+fi
+End-of-File
+
+ $cflag && cat >>$tmp.script <<End-of-File
+git status -s | grep 'M ' >\$tmp.status
+if [ -s \$tmp.status ]
+then
+ echo "Warning: modified pcp files ..." | tee -a \$HOME/daily.log
+ sed -e 's/.*M */ /' \$tmp.status | tee -a \$HOME/daily.log
+else
+ echo "Info: No modified pcp files" | tee -a \$HOME/daily.log
+fi
+End-of-File
+
+ $pflag && cat >>$tmp.script <<End-of-File
+# need to clean before pulling in case unwanted files no longer removed,
+# e.g. in PCP 3.x -> PCP 4.0 migration of source base
+# not needed any longer - 26 Mar 2013
+#${MAKE:-make} clean >>\$HOME/daily.log 2>&1
+# only VERSION.pcp is expected to be modified, sometimes!
+git checkout -f VERSION.pcp
+if git checkout $pcp_branch >>\$HOME/daily.log 2>&1
+then
+ echo "Info: pcp git checkout $pcp_branch" | tee -a \$HOME/daily.log
+else
+ echo "Error: pcp git checkout $pcp_branch failed!" | tee -a \$HOME/daily.log
+ exit 1
+fi
+if git pull >>\$HOME/daily.log 2>&1
+then
+ echo "Info: pcp git pull" | tee -a \$HOME/daily.log
+else
+ echo "Error: pcp git pull failed!" | tee -a \$HOME/daily.log
+ exit 1
+fi
+End-of-File
+
+ if $mflag
+ then
+ echo "${MAKE:-make} clean >>\$HOME/daily.log 2>&1" >>$tmp.script
+ cat >>$tmp.script <<'End-of-File'
+ok=false
+# if needed, bump build number for pcp-daily
+if [ ! -f VERSION.pcp.daily ]
+then
+ cp VERSION.pcp VERSION.pcp.daily
+else
+ diff VERSION.pcp VERSION.pcp.daily >$tmp.tmp
+ if egrep 'PACKAGE_MAJOR|PACKAGE_MINOR|PACKAGE_REVISION' <$tmp.tmp >/dev/null
+ then
+ # different PCP release, do an initial build
+ cp VERSION.pcp VERSION.pcp.daily
+ else
+ # same PCP release, bump away
+ awk -F= <VERSION.pcp.daily '
+BEGIN { OFS = "=" }
+$1 == "PACKAGE_BUILD" { print "PACKAGE_BUILD",$2+1; next }
+ { print }' \
+| sed -e 's/=$//' >$tmp.version
+ cp $tmp.version VERSION.pcp.daily
+ fi
+fi
+cp VERSION.pcp.daily VERSION.pcp
+# simulate a first-time build
+sudo rm -rf /usr/include/pcp
+sudo rm -f /usr/lib*/libpcp[_.]*
+# clean up any build turds
+rm -f qa/qa_outfiles
+End-of-File
+ echo "if MAKE=$MAKE ./Makepkgs --clean >>\$HOME/daily.log 2>&1" >>$tmp.script
+ cat >>$tmp.script <<'End-of-File'
+then
+ ok=true
+else
+ # for Debian/Ubuntu, it may just be the signing of the packages that
+ # failed
+ #
+ if tail -20 $HOME/daily.log | grep 'dpkg-buildpackage: warning: Failed to sign' >/dev/null
+ then
+ echo "Warning: Makepkgs failed to sign dpkg's" | tee -a $HOME/daily.log
+ else
+ echo "Error: Makepkgs failed!" | tee -a $HOME/daily.log
+ # restore build number
+ git checkout -f VERSION.pcp
+ exit 1
+ fi
+fi
+# restore build number
+git checkout -f VERSION.pcp
+# Look for errors/warnings in the build logs ...
+#
+for log in Logs/*
+do
+ echo "--- $log ---" >>$HOME/daily.log
+ cat $log >>$HOME/daily.log
+ echo "--- end $log ---" >>$HOME/daily.log
+done
+grep 'Permission denied' Logs/pcp >$tmp.err
+grep ' [Ee]rror: ' Logs/pcp >>$tmp.err
+grep ' [Ww]arning: ' Logs/pcp \
+| sed >>$tmp.err \
+ -e '/yyunput.* defined but not used/d' \
+ -e '/input.* defined but not used/d'
+if [ -s $tmp.err ]
+then
+ echo "Warning: `wc -l <$tmp.err | sed -e 's/ //g'` build warnings/errors" | tee -a $HOME/daily.log
+ cat $tmp.err >>$HOME/daily.log
+ echo "--- end build warnings/errors ---" >>$HOME/daily.log
+ ok=false
+fi
+$ok && echo "Info: Makepkgs" | tee -a $HOME/daily.log
+End-of-File
+ fi
+
+ $iflag && cat >>$tmp.script <<'End-of-File'
+# extract buildversion
+. ./VERSION.pcp
+if [ -z "$PACKAGE_MAJOR" -o -z "$PACKAGE_MINOR" -o -z "$PACKAGE_REVISION" ]
+then
+ ls -l VERSION.pcp | tee -a $HOME/daily.log
+ cat VERSION.pcp | tee -a $HOME/daily.log
+ echo "Error: VERSION.pcp is damaged" | tee -a $HOME/daily.log
+ exit 1
+fi
+buildversion=$PACKAGE_MAJOR.$PACKAGE_MINOR.$PACKAGE_REVISION
+# find lsm ... in pcp-$buildversion for most build types, but in
+# build/deb/pcp-$buildversion for debian
+lsm=''
+[ -f pcp-$buildversion/pcp.lsm ] && lsm=pcp-$buildversion/pcp.lsm
+[ -f build/deb/pcp-$buildversion/pcp.lsm ] && lsm=build/deb/pcp-$buildversion/pcp.lsm
+if [ -z "$lsm" ]
+then
+ ls -l pcp.lsm* pcp-$buildversion/pcp.lsm* | tee -a $HOME/daily.log
+ echo "Error: pcp.lsm not found" | tee -a $HOME/daily.log
+ exit 1
+fi
+src_version=`sed -n <$lsm -e 's/[ ]*$//' -e '/^Version:/{
+s/Version:[ ]*//
+p
+q
+}'`
+notfound=true
+case `echo build/deb/pcp_[0-9]*.deb`
+in
+ *\ *)
+ ls -l build/deb/pcp_[0-9]*.deb
+ echo "Error: more than one deb pkg found" | tee -a $HOME/daily.log
+ exit 1
+ ;;
+ 'build/deb/pcp_[0-9]*.deb')
+ # no deb packages
+ ;;
+ *)
+ # Debian packaging ...
+ if yes Y | sudo dpkg -i --force-depends build/deb/*.deb >>$HOME/daily.log 2>&1
+ then
+ echo "Info: dpkg install" | tee -a $HOME/daily.log
+ else
+ echo "Error: dpkg failed!" | tee -a $HOME/daily.log
+ exit 1
+ fi
+ notfound=false
+ ;;
+esac
+$notfound && case `echo pcp-$buildversion/build/rpm/pcp-[0-9]*.src.rpm`
+in
+ *\ *)
+ ls -l pcp-$buildversion/build/rpm/pcp-[0-9]*.src.rpm | tee -a $HOME/daily.log
+ echo "Error: more than one rpm pkg found" | tee -a $HOME/daily.log
+ exit 1
+ ;;
+ "pcp-$buildversion"'/build/rpm/pcp-[0-9]*.src.rpm')
+ # no rpm source package, assume some other sort of packaging
+ ;;
+ *)
+ # RPM packaging ...
+ # Notes may need to add these flags ...
+ # --nodeps needed because perl-Spreadsheet-Read is not available
+ # e.g. Fedora 15
+ # --oldpackage sometimes we do a downgrade on the QA machines
+ #
+ if sudo rpm -U `ls pcp-$buildversion/build/rpm/*.rpm | sed -e '/src.rpm/d'` >$tmp.out 2>&1
+ then
+ cat $tmp.out >>$HOME/daily.log
+ echo "Info: rpm install" | tee -a $HOME/daily.log
+ else
+ cat $tmp.out >>$HOME/daily.log
+ grep -v 'is already installed' $tmp.out >$tmp.tmp
+ if [ -s $tmp.tmp ]
+ then
+ echo "Error: rpm failed!" | tee -a $HOME/daily.log
+ exit 1
+ else
+ echo "Warning: rpm packages already installed" | tee -a $HOME/daily.log
+ fi
+ fi
+ notfound=false
+ ;;
+esac
+$notfound && if [ -f pcp-$buildversion/build/mac/pcp-[0-9]*[0-9].dmg ]
+then
+ # Mac OS X "pkg in a disk image" packaging
+ here=`pwd`
+ cd pcp-$buildversion/build/mac
+ if ./cmdline-install >>$HOME/daily.log 2>&1
+ then
+ echo "Info: installer install" | tee -a $HOME/daily.log
+ else
+ echo "Error: installer failed!" | tee -a $HOME/daily.log
+ exit 1
+ fi
+ cd $here
+elif [ -f pcp-$buildversion/build/sun/pcp-$src_version ]
+then
+ # System V style pkgadd/pkgrm packaging ...
+ here=`pwd`
+ cd pcp-$buildversion/build/sun
+ yes Y | sudo /usr/sbin/pkgrm pcp >>$HOME/daily.log 2>&1
+ if yes Y | sudo /usr/sbin/pkgadd -d `pwd` pcp all >>$HOME/daily.log 2>&1
+ then
+ echo "Info: pkgadd install" | tee -a $HOME/daily.log
+ else
+ echo "Error: pkgadd failed!" | tee -a $HOME/daily.log
+ exit 1
+ fi
+ cd $here
+ sudo /usr/sbin/svcadm enable -s svc:/application/pcp/pmcd >>$HOME/daily.log 2>&1
+ sudo /usr/sbin/svcadm enable -s svc:/application/pcp/pmlogger >>$HOME/daily.log 2>&1
+elif [ -f pcp-$buildversion/build/tar/pcp-[0-9]*[0-9].tar.gz ]
+then
+ # tarball packaging ... (this has to be last, because some of the
+ # other packaging regimes also create tarballs)
+ here=`pwd`
+ tarball=$here/pcp-$buildversion/build/tar/pcp-[0-9]*[0-9].tar.gz
+ cd pcp-$buildversion/build/tar
+ sudo ./preinstall >>$HOME/daily.log 2>&1
+ cd /
+ if sudo tar -zxpf $tarball >>$HOME/daily.log 2>&1
+ then
+ echo "Info: tar install" | tee -a $HOME/daily.log
+ else
+ echo "Error: tar install failed!" | tee -a $HOME/daily.log
+ exit 1
+ fi
+ cd $here
+ cd pcp-$buildversion/build/tar
+ sudo ./postinstall >>$HOME/daily.log 2>&1
+ cd $here
+else
+ echo "Don't know how to install packages" | tee -a $HOME/daily.log
+ exit 1
+fi
+if [ -f pcp-$buildversion/build/sun/pcp-$src_version ]
+then
+ : pmcd started above
+else
+ . /etc/pcp.env
+ if sudo $PCP_RC_DIR/pcp start >>$HOME/daily.log 2>&1
+ then
+ echo "Info: pmcd started" | tee -a $HOME/daily.log
+ else
+ echo "Error: pmcd start failed" | tee -a $HOME/daily.log
+ exit 1
+ fi
+fi
+running_version=`pmprobe -v pmcd.version | sed -e 's/"//g' -e 's/pmcd.version 1 //'`
+echo "Source version: $src_version" >>$HOME/daily.log
+echo "Running version: $running_version" >>$HOME/daily.log
+if [ "$src_version" != "$running_version" ]
+then
+ pcp >>$HOME/daily.log
+ echo "Error: version mismatch src=$src_version running=$running_version" | tee -a $HOME/daily.log
+ exit 1
+fi
+# sample PMDA may have an updated PMNS, so re-install just in case
+( cd $PCP_VAR_DIR/pmdas/sample; sudo ./Install </dev/null ) >>$HOME/daily.log
+End-of-File
+
+ cat >>$tmp.script <<End-of-File
+
+cd qa
+End-of-File
+
+ check_what="$what"
+ [ X"$what" = Xall ] && check_what=''
+ case "$domain"
+ in
+ *grundy*)
+ # Need to add
+ # -x remote default for grundy.sgi.com if running all tests
+ #
+ [ X"$what" = Xall ] && check_what='$check_what -x remote'
+ ;;
+ vm06)
+ # Only -g sanity at this stage for FreeBSD
+ #
+ [ X"$what" = Xall ] && check_what='-g sanity'
+ ;;
+ esac
+
+ $qflag && cat >>$tmp.script <<End-of-File
+rm -f *.out.bad
+./changeversion >/dev/null 2>&1
+if ./check -l $check_what >>\$HOME/daily.log 2>&1
+then
+ echo "Info: QA $what" | tee -a \$HOME/daily.log
+else
+ echo "Error: QA $what failed!" | tee -a \$HOME/daily.log
+ sed -e '/^ [0-9 ]*\$/d' <check.log \
+ | awk '
+NF == 0 { txt = ""; next }
+ { if (txt == "") txt = \$0
+ else txt = txt "\n" \$0
+ }
+END { print txt }' | tee -a \$HOME/daily.log
+fi
+End-of-File
+
+ $rflag && cat >>$tmp.script <<End-of-File
+if ./recheck >>\$HOME/daily.log 2>&1
+then
+ echo "Info: QA recheck" | tee -a \$HOME/daily.log
+else
+ echo "Error: QA recheck failed!" | tee -a \$HOME/daily.log
+fi
+End-of-File
+
+ $hflag && cat >>$tmp.script <<End-of-File
+rm -f \$HOME/daily.harvest
+touch \$HOME/daily.harvest
+nbad=0
+nfull=0
+for bad in *.out.bad
+do
+ [ "\$bad" = '*.out.bad' ] && continue
+ echo \$bad >>\$HOME/daily.harvest
+ nbad=\`expr \$nbad + 1\`
+ seq=\`echo \$bad | sed -e 's/\.out\.bad//'\`
+ [ -f \$seq.out ] && echo \$seq.out >>\$HOME/daily.harvest
+ if [ -f \$seq.full ]
+ then
+ echo \$seq.full >>\$HOME/daily.harvest
+ nfull=\`expr \$nfull + 1\`
+ fi
+done
+[ -s \$HOME/daily.harvest ] && cat \$HOME/daily.harvest >>\$HOME/daily.log
+echo "Info: harvest \$nbad *.bad files, \$nfull *.full files" | tee -a \$HOME/daily.log
+End-of-File
+
+ chmod 755 $tmp.script
+ if scp $tmp.script $host:daily.script >$tmp.out 2>&1
+ then
+ :
+ else
+ cat $tmp.out
+ echo "Error: scp failed!"
+ continue
+ fi
+ ssh -t $host sh -c ./daily.script
+ scp -q $host:daily.log $tmp.out
+ echo "=== `date` ===" >>$log
+ cat $tmp.out >>$log
+ echo "=== END ===" >>$log
+
+ if $hflag
+ then
+ # harvest failures by pulling from QA host
+ echo "Harvest:"
+ if [ -d $HOME/Logs/by-vm/$domain/pcpqa ]
+ then
+ # old dir name
+ mv $HOME/Logs/by-vm/$domain/pcpqa $HOME/Logs/by-vm/$domain/qa
+ fi
+ if [ ! -d $HOME/Logs/by-vm/$domain/qa ]
+ then
+ rm -f $HOME/Logs/by-vm/$domain/qa
+ mkdir -p $HOME/Logs/by-vm/$domain/qa
+ ( cd $HOME/Logs/by-vm/$domain/qa;
+ for file in common* group show-me localconfig
+ do
+ ln -s $HOME/src/pcp/qa/$file* .
+ done
+ )
+ fi
+ rm -f $HOME/Logs/by-vm/$domain/qa/[0-9]*
+ rm -f $tmp.harvest
+ scp $host:daily.harvest $tmp.harvest >$tmp.out 2>&1
+ if [ -s $tmp.harvest ]
+ then
+ for file in `cat $tmp.harvest`
+ do
+ echo -n " $file"
+ if scp $host:src/pcp/qa/$file $HOME/Logs/by-vm/$domain/qa >$tmp.err 2>&1
+ then
+ :
+ else
+ echo
+ cat $tmp.err
+ fi
+ done
+ echo
+ elif [ -s $tmp.out ]
+ then
+ echo "scp error ..."
+ cat $tmp.out
+ else
+ echo "No failures."
+ fi
+ fi
+ fi
+
+ if $sflag
+ then
+ doit=false
+ case $host
+ in
+ vm01|vm03)
+ # try to keep vm01 and vm03 running, unless -f
+ $fflag && doit=true
+ ;;
+ vm*)
+ doit=true
+ ;;
+ esac
+ if $doit
+ then
+ if [ $state = shut ]
+ then
+ if $work
+ then
+ echo "Warning: Already shutdown" | tee -a $HOME/daily.log
+ else
+ echo "Warning: Already shutdown"
+ fi
+ else
+ ssh -t -q $host sudo poweroff -f </dev/null >/dev/null 2>&1 &
+ sleep 20
+ sudo virsh shutdown $domain >/dev/null 2>&1
+ sleep 10
+ # seems a bit harsh, but we've given you two chances to
+ # shutdown
+ #
+ sudo virsh destroy $domain
+ if $work
+ then
+ echo "Info: Shutdown" | tee -a $HOME/daily.log
+ else
+ echo "Info: Shutdown"
+ fi
+ fi
+ else
+ if $work
+ then
+ echo "Warning: Shutdown skipped" | tee -a $HOME/daily.log
+ else
+ echo "Warning: Shutdown skipped"
+ fi
+ fi
+ fi
+
+ $work && echo "Logs in $log"
+
+done
diff --git a/qa/admin/pcp-qa-summary b/qa/admin/pcp-qa-summary
new file mode 100755
index 0000000..1fa6ee3
--- /dev/null
+++ b/qa/admin/pcp-qa-summary
@@ -0,0 +1,320 @@
+#!/bin/sh
+#
+# pcp-qa-summary [vm ...]
+#
+# Used in concert with pcp-daily -q
+#
+
+_usage()
+{
+ echo "Usage: $0 [options] [vm ...]"
+ echo "Options:"
+ echo " -d debug"
+ echo " -m N minimum number of tests run to be reported [default 60]"
+ echo ' -n report not run tests (reported as "-")'
+ echo " -r only most recent results date [default report all dates]"
+ exit 1
+}
+
+
+# must have tried to run at least this number to qualify
+# 60 = > -g sanity [minus a few not runs]
+#
+minrun=60
+
+debug=false
+recent=false
+nflag=false
+while getopts 'dm:nr?' p
+do
+ case "$p"
+ in
+ d) debug=true
+ ;;
+ m) minrun=$OPTARG
+ ;;
+ n) nflag=true
+ ;;
+ r) recent=true
+ ;;
+ ?) _usage
+ # NOTREACHED
+ esac
+done
+shift `expr $OPTIND - 1`
+
+sts=0
+if $debug
+then
+ tmp=`pwd`/tmp
+ trap "exit \$sts" 0 1 2 3 15
+else
+ tmp=/var/tmp/$$
+ trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+fi
+rm -f $tmp.*
+
+if [ $# -eq 0 ]
+then
+ set -- `[ -d $HOME/Logs/by-vm ] && cd $HOME/Logs/by-vm && echo *`
+fi
+
+if [ -f $HOME/whatami.out ]
+then
+ # Turn
+ # Host PCP CPU Operating System
+ # ----------- -------- ------ ------------------
+ # vm00 3.7.0 x86_64 Ubuntu 12.04 (precise)
+ # into
+ # vm00|PCP 3.7.0 x86_64 Ubuntu 12.04
+ #
+ sed <$HOME/whatami.out \
+ -e '1,2d' \
+ -e '/^[ ]*$/d' \
+ -e 's/ */|PCP#/' \
+ -e 's/ */#/' \
+ -e 's/ */#/' \
+ -e 's/ *(.*)//' \
+ -e 's/#/ /g' \
+ | LC_COLLATE=POSIX sort -t '|' --key=1,1 >$tmp.what
+fi
+
+_what()
+{
+ if [ -f $tmp.what ]
+ then
+ LC_COLLATE=POSIX sort -t '|' --key=1,1 \
+ | join \
+ -1 2 -2 1 -t '|' -a 1 -e "$vmdir" -o 1.1,2.1,2.2 \
+ - $tmp.what \
+ | sed -e 's/|PCP/ PCP/'
+ else
+ cat
+ fi
+}
+
+echo "==== QA Summary ===="
+echo
+echo "Date Run Pass Fail Nrun Host"
+for vm
+do
+ cd $HOME/Logs/by-vm
+ if [ -d "$vm" ]
+ then
+ cd "$vm"
+ vmdir="$vm"
+ else
+ vmdir=`echo ${vm}*`
+ if [ -d "$vmdir" ]
+ then
+ cd "$vmdir"
+ else
+ echo "$vm: arrrgggh no \$HOME/Logs/${vm}* directory"
+ continue
+ fi
+ fi
+ basevmname=`echo $vmdir | sed -e 's/\(vm[0-9][0-9]\)-.*/\1/' -e 's/\.sgi.com//'`
+ rm -f $tmp.seen $tmp.found
+ for date in `ls | grep -v qa | grep -v pcpqa | grep -v pcp | sort -r`
+ do
+ [ -f $date ] || continue
+ touch $tmp.seen
+ $debug && echo "Debug: == $vmdir on $date =="
+ # Looking for
+ # Not run: 008 009 022 096 114 117 130 148 164 212 223 233 284 290 307 311 329 330 331 332 333 348 361 370 377 390 420 441 442 476 477 478 480 506 512 545 570 584 640 652 654 712 713 714
+ # Failures: 062 169 244
+ # Failed 3 of 516 tests
+ # Passed all 67 tests
+ #
+ rm -f $tmp.dbg
+ if egrep '^((Not run:)|Failures:|(Failed [0-9][0-9]* of [0-9][0-9]* tests)|(Passed all [0-9][0-9]* tests)|Info:|===)' <$date >/dev/null
+ then
+ awk <$date >$tmp.out '
+/^Not run:/ { notrun = NF - 2
+ nrlist = $3
+ for (i = 4; i <= NF; i++) nrlist = nrlist " " $i
+ state = 1
+ print NR,": Not run: start: notrun=" notrun >"'$tmp.dbg'"
+ next
+ }
+/^Failed [0-9][0-9]* of [0-9][0-9]* tests/ {
+ failed = $2
+ run = $4
+ state = 3
+ }
+/^Passed all [0-9][0-9]* tests/ {
+ failed = 0
+ run = $3
+ state = 3
+ }
+/^Failures:/ { nfail = NF - 1
+ flist = $2
+ for (i = 3; i <= NF; i++) flist = flist " " $i
+ print NR,": Failures: start: nfail=" nfail >"'$tmp.dbg'"
+ state = 2
+ next
+ }
+/^Info:/ {
+ state = 0
+ notrun = 0
+ nfail = 0
+ next
+ }
+/^===/ {
+ state = 0
+ notrun = 0
+ nfail = 0
+ next
+ }
+state == 1 { # Not run: list broken over multiple lines
+ notrun += NF
+ for (i = 1; i <= NF; i++) nrlist = nrlist " " $i
+ print NR,": Not run: add",NF," notrun=" notrun >"'$tmp.dbg'"
+ next
+ }
+state == 2 { # Failures: list broken over multiple lines
+ nfail += NF
+ for (i = 1; i <= NF; i++) flist = flist " " $i
+ print NR,": Failures: add",NF," nfail=" nfail >"'$tmp.dbg'"
+ next
+ }
+state == 3 { if (run >= '$minrun') printf "%s %4d %4d %4d %4d|%s|%s+%s\n","'$date'",run,run-failed,failed,notrun,"'$basevmname'",flist,nrlist
+ state = 0
+ notrun = 0
+ nfail = 0
+ }
+END { print NR,": END state=" state >"'$tmp.dbg'"
+ }'
+ # Need to sort multiple runs one this date and pick the one
+ # with the maximum passes and minimum not runs
+ #
+ # 2013-03-13 1 1 0 0|vm19-opensuse-64
+ # 2013-03-13 67 67 0 2|vm19-opensuse-64
+ # 2013-03-13 512 509 3 48|vm19-opensuse-64
+ # 2013-03-13 512 509 3 16|vm19-opensuse-64
+ $debug && sed -e 's/^/Debug: /' <$tmp.dbg
+ sort <$tmp.out --key=3,3nr --key=5,5n \
+ | sed -e 1q >$tmp.tmp
+ if [ -s $tmp.tmp ]
+ then
+ if $debug
+ then
+ echo "Debug: summary lines ..."
+ sed -e 's/^/Debug: /' <$tmp.out
+ fi
+ sed -e 's/|[^|]*$//' <$tmp.tmp | _what >>$tmp.found
+ nfail=`awk <$tmp.tmp '{print $4}'`
+ if [ $nfail -gt 0 ]
+ then
+ sed -e 's/.*|//' -e 's/+.*//' <$tmp.tmp \
+ | tr ' ' '\012' \
+ | sed -e "s/\$/ X $basevmname/" >>$tmp.map
+ fi
+ if $nflag
+ then
+ nrun=`sed -e 's/|.*//' <$tmp.tmp | awk '{print $5}'`
+ if [ $nrun -gt 0 ]
+ then
+ sed -e 's/.*+//' <$tmp.tmp \
+ | tr ' ' '\012' \
+ | sed -e "s/\$/ - $basevmname/" >>$tmp.map
+ fi
+ fi
+ $recent && break
+ else
+ $debug && echo "Debug: tag lines, but no QA results found"
+ fi
+ else
+ $debug && echo "Debug: no QA result tag lines found"
+ fi
+ done
+ if [ -f $tmp.found ]
+ then
+ sort $tmp.found
+ cat $tmp.found >>$tmp.counts
+ else
+ if [ -f $tmp.seen ]
+ then
+ printf "%-30s|%s\n" "Daily runs, but no QA" "$basevmname" | _what
+ elif [ ! -f $tmp.seen ]
+ then
+ printf "%-30s|%s\n" "No daily runs" "$basevmname" | _what
+ fi
+ fi
+
+done
+
+if [ -f $tmp.counts ]
+then
+ awk <$tmp.counts '
+ { nrun += $2; nfail += $4 }
+END { printf "Summary: %d run, %d failed (%.2f%%)\n", nrun, nfail, 100*nfail/nrun }'
+fi
+
+if [ -f $tmp.map ]
+then
+ echo
+ if $nflag
+ then
+ echo "==== QA Failure (X) and Not Run (-) Map ===="
+ else
+ echo "==== QA Failure (X) Map ===="
+ fi
+ echo
+ ( ( sed -e 's/.* //' <$tmp.map | sort | uniq ) \
+ ; echo "---" \
+ ; sort -n $tmp.map \
+ ; echo "END" \
+ ) \
+ | awk '
+function heading() {
+ printf "%4.4s","Host"
+ for (i = 0; i < nh; i++) {
+ if (host[i] ~ /^vm/)
+ printf " %2.2s",substr(host[i],length(host[i])-1)
+ else if (host[i] == "bozo-laptop")
+ printf " %2.2s","bl"
+ else if (host[i] == "bozo-vm")
+ printf " %2.2s","bv"
+ else
+ printf " %2.2s",substr(host[i],1,2)
+ }
+ printf "\n"
+}
+BEGIN { nh = 0; state = 0 }
+$1 == "---" { heading()
+ printf "%4.4s","QA"
+ for (i = 0; i < nh; i++) printf " %2.2s"," "
+ printf " %4.4s QA groups\n","QA"
+ state = 1
+ last = $1
+ next
+ }
+state == 0 { host[nh] = $1; nh++; next }
+$1 != last { if (last != "---") {
+ printf "%4.4s",last
+ for (i = 0; i < nh; i++) printf " %2.2s",fail[i]
+ printf " %4.4s ",last
+ cmd = "grep \"^" last " \" $HOME/src/pcp/qa/group | sed -e \"s/^[0-9]* //\""
+ system(cmd)
+ }
+ for (i = 0; i < nh; i++) fail[i] = " "
+ last = $1
+ }
+$1 == last { for (i = 0; i < nh; i++) {
+ if (host[i] == $3) {
+ fail[i] = $2
+ break
+ }
+ }
+ }
+END { heading() }' \
+ | sed \
+ -e 's/ remote//' \
+ -e 's/ sanity//' \
+ -e 's/ ostest//' \
+ -e 's/ local//' \
+ -e 's/ oss//' \
+ -e 's/ #[0-9][0-9]*//g'
+fi
+
diff --git a/qa/admin/show-me-all b/qa/admin/show-me-all
new file mode 100755
index 0000000..08fbd70
--- /dev/null
+++ b/qa/admin/show-me-all
@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# Trawl pcp-daily log directories looking for _all_ the failures
+# for one or more tests
+#
+
+tmp=/var/tmp/$$
+sts=0
+trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+
+_usage()
+{
+ echo "Usage: $0 [options] seq ..."
+ echo "Options:"
+ echo " -f show me seq.full if it exists"
+ sts=1
+ exit
+}
+
+full=false
+verbose=false
+while getopts 'f?' p
+do
+ case "$p"
+ in
+ f) full=true
+ ;;
+
+ ?) _usage
+ # NOTREACHED
+ esac
+done
+shift `expr $OPTIND - 1`
+[ $# -ge 1 ] || _usage
+
+cd $HOME
+
+for seq
+do
+ find $HOME/Logs/by-vm -name "$seq.out.bad" \
+ | sort \
+ | while read bad
+ do
+ cd `dirname $bad`
+ for qabits in localconfig
+ do
+ if [ -L $qabits ]
+ then
+ :
+ else
+ rm -f $qabits
+ ln -s $HOME/src/pcp/qa/$qabits $qabits
+ fi
+ done
+ echo -n `echo "$bad" | sed -e "s;^$HOME/Logs/by-vm/;;" -e 's/[-/].*/-/'`
+ show-me $seq
+ $full && [ -f $seq.full ] && less $seq.full </dev/tty
+ done
+done
diff --git a/qa/archives/20071023-08-06-36.0 b/qa/archives/20071023-08-06-36.0
new file mode 100644
index 0000000..354a43b
--- /dev/null
+++ b/qa/archives/20071023-08-06-36.0
Binary files differ
diff --git a/qa/archives/20071023-08-06-36.index b/qa/archives/20071023-08-06-36.index
new file mode 100644
index 0000000..91c8b50
--- /dev/null
+++ b/qa/archives/20071023-08-06-36.index
Binary files differ
diff --git a/qa/archives/20071023-08-06-36.meta b/qa/archives/20071023-08-06-36.meta
new file mode 100644
index 0000000..abbb9b9
--- /dev/null
+++ b/qa/archives/20071023-08-06-36.meta
Binary files differ
diff --git a/qa/archives/GNUmakefile b/qa/archives/GNUmakefile
new file mode 100644
index 0000000..32372fd
--- /dev/null
+++ b/qa/archives/GNUmakefile
@@ -0,0 +1,20 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/archives
+SRCARCH = chartqa1.0 viewqa1.0 viewqa2.0 viewqa3.0 rattle.0 oview-short.0 \
+ snort-disks.0 vldb-disks.0 moomba.pmkstat.0 gap.0 gap2.0 \
+ 20071023-08-06-36.0 dm-io.0 mysql-1.0
+SRCEXTRAS = $(subst .0,.meta,$(SRCARCH)) $(subst .0,.index,$(SRCARCH))
+SCRIPTS = mk.gap.sh mk.mysql.sh
+OTHERS = GNUmakefile.install
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 755 $(SCRIPTS) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(OTHERS) $(SRCARCH) $(SRCEXTRAS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/archives/GNUmakefile.install b/qa/archives/GNUmakefile.install
new file mode 100644
index 0000000..75d545f
--- /dev/null
+++ b/qa/archives/GNUmakefile.install
@@ -0,0 +1,11 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+default setup install:
+
+include $(BUILDRULES)
diff --git a/qa/archives/chartqa1.0 b/qa/archives/chartqa1.0
new file mode 100644
index 0000000..661be68
--- /dev/null
+++ b/qa/archives/chartqa1.0
Binary files differ
diff --git a/qa/archives/chartqa1.index b/qa/archives/chartqa1.index
new file mode 100644
index 0000000..3b13623
--- /dev/null
+++ b/qa/archives/chartqa1.index
Binary files differ
diff --git a/qa/archives/chartqa1.meta b/qa/archives/chartqa1.meta
new file mode 100644
index 0000000..a8eb887
--- /dev/null
+++ b/qa/archives/chartqa1.meta
Binary files differ
diff --git a/qa/archives/dm-io.0 b/qa/archives/dm-io.0
new file mode 100644
index 0000000..f7692dd
--- /dev/null
+++ b/qa/archives/dm-io.0
Binary files differ
diff --git a/qa/archives/dm-io.index b/qa/archives/dm-io.index
new file mode 100644
index 0000000..f6243a4
--- /dev/null
+++ b/qa/archives/dm-io.index
Binary files differ
diff --git a/qa/archives/dm-io.meta b/qa/archives/dm-io.meta
new file mode 100644
index 0000000..21127b9
--- /dev/null
+++ b/qa/archives/dm-io.meta
Binary files differ
diff --git a/qa/archives/gap.0 b/qa/archives/gap.0
new file mode 100644
index 0000000..c4cd714
--- /dev/null
+++ b/qa/archives/gap.0
Binary files differ
diff --git a/qa/archives/gap.index b/qa/archives/gap.index
new file mode 100644
index 0000000..8abc43c
--- /dev/null
+++ b/qa/archives/gap.index
Binary files differ
diff --git a/qa/archives/gap.meta b/qa/archives/gap.meta
new file mode 100644
index 0000000..d149218
--- /dev/null
+++ b/qa/archives/gap.meta
Binary files differ
diff --git a/qa/archives/gap2.0 b/qa/archives/gap2.0
new file mode 100644
index 0000000..5f6a479
--- /dev/null
+++ b/qa/archives/gap2.0
Binary files differ
diff --git a/qa/archives/gap2.index b/qa/archives/gap2.index
new file mode 100644
index 0000000..9db88b1
--- /dev/null
+++ b/qa/archives/gap2.index
Binary files differ
diff --git a/qa/archives/gap2.meta b/qa/archives/gap2.meta
new file mode 100644
index 0000000..b0c7e72
--- /dev/null
+++ b/qa/archives/gap2.meta
Binary files differ
diff --git a/qa/archives/mk.gap.sh b/qa/archives/mk.gap.sh
new file mode 100644
index 0000000..9c875d1
--- /dev/null
+++ b/qa/archives/mk.gap.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# Recipe for creating the gap and gap2 archives.
+#
+# gap: 10 sec data, 5 sec gap, 10 sec data
+# gap2: 10 sec data, 5 sec gap, 10 sec data, 5 sec gap, 10 sec data
+# sample.bin instances change across gaps
+#
+
+. $PCP_DIR/etc/pcp.env
+
+here=`pwd`
+tmp=/tmp/$$
+rm -rf $tmp
+mkdir -p $tmp/tmp
+cd $tmp
+
+trap "cd $here; rm -fr $tmp; exit" 0 1 2 3 15
+
+echo 'log mandatory on 1sec { pmcd.pdu_in,pmcd.numagents,hinv.ncpu,sample.bin["bin-100","bin-200","bin-400"] }' >tmp/A.config
+echo 'log mandatory on 1sec { pmcd.pdu_in,pmcd.numagents,hinv.ncpu,sample.bin["bin-100","bin-300","bin-400"] }' >tmp/B.config
+echo 'log mandatory on 1sec { pmcd.pdu_in,pmcd.numagents,hinv.ncpu,sample.bin["bin-100","bin-400"] }' >tmp/C.config
+
+${PCP_BINADM_DIR}/pmlogger -s 10 -c tmp/A.config tmp/A
+sleep 5
+${PCP_BINADM_DIR}/pmlogger -s 10 -c tmp/B.config tmp/B
+sleep 5
+${PCP_BINADM_DIR}/pmlogger -s 10 -c tmp/C.config tmp/C
+
+rm -f gap.index gap.meta gap.0
+${PCP_BINADM_DIR}/pmlogextract tmp/A tmp/B $here/gap
+
+rm -f gap2.index gap2.meta gap2.0
+${PCP_BINADM_DIR}/pmlogextract tmp/A tmp/B tmp/C $here/gap2
+
+exit
diff --git a/qa/archives/mk.mysql.sh b/qa/archives/mk.mysql.sh
new file mode 100755
index 0000000..9953960
--- /dev/null
+++ b/qa/archives/mk.mysql.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+#
+# Recipe for creating the mysql archive
+#
+
+. $PCP_DIR/etc/pcp.env
+
+here=`pwd`
+tmp=/tmp/$$
+rm -rf $tmp
+
+if pmprobe mysql 2>&1 | grep -q 'Unknown metric name'
+then
+ echo "Arrg, mysql PMDA is apparently not installed"
+ exit 1
+fi
+
+version=0
+while [ -f mysql-$version.0 ]
+do
+ version=`expr $version + 1`
+done
+
+trap "rm -rf $tmp; exit" 0 1 2 3 15
+
+echo 'log mandatory on 5sec { mysql }' >$tmp.config
+${PCP_BINADM_DIR}/pmlogger -s 5 -c $tmp.config mysql-$version &
+
+# Now do some work to make mysql stats move a little
+# We assume the example classicmodels DB has been installed
+# (available from http://www.mysqltutorial.org/mysql-sample-database.aspx)
+# and is available to be used.
+#
+# May need to change the user and password ...
+SQLUSER=root
+SQLPASSWORD=letmein
+
+for i in 1 2 3 4 5 6
+do
+ sleep 4
+ cat <<End-of-File | mysql -u$SQLUSER -p$SQLPASSWORD classicmodels
+select count(*) from customers;
+select count(*) from payments;
+select count(*) from employees;
+select count(*) from offices;
+select count(*) from orders;
+select count(*) from orderdetails;
+select count(*) from products;
+select count(*) from productlines;
+
+select productCode, productName, textDescription
+from products c1 inner join productlines c2
+on c1.productline = c2.productline;
+
+select c1.orderNumber, status, sum(quantityOrdered*priceEach) total
+from orders as c1 inner join orderdetails
+as c2 on c1.orderNumber = c2.orderNumber
+group by orderNumber;
+
+End-of-File
+done
+
+wait
diff --git a/qa/archives/moomba.pmkstat.0 b/qa/archives/moomba.pmkstat.0
new file mode 100644
index 0000000..e9ac65c
--- /dev/null
+++ b/qa/archives/moomba.pmkstat.0
Binary files differ
diff --git a/qa/archives/moomba.pmkstat.index b/qa/archives/moomba.pmkstat.index
new file mode 100644
index 0000000..5f165fd
--- /dev/null
+++ b/qa/archives/moomba.pmkstat.index
Binary files differ
diff --git a/qa/archives/moomba.pmkstat.meta b/qa/archives/moomba.pmkstat.meta
new file mode 100644
index 0000000..4483200
--- /dev/null
+++ b/qa/archives/moomba.pmkstat.meta
Binary files differ
diff --git a/qa/archives/mysql-1.0 b/qa/archives/mysql-1.0
new file mode 100644
index 0000000..0901aa6
--- /dev/null
+++ b/qa/archives/mysql-1.0
Binary files differ
diff --git a/qa/archives/mysql-1.index b/qa/archives/mysql-1.index
new file mode 100644
index 0000000..787620d
--- /dev/null
+++ b/qa/archives/mysql-1.index
Binary files differ
diff --git a/qa/archives/mysql-1.meta b/qa/archives/mysql-1.meta
new file mode 100644
index 0000000..67b9b47
--- /dev/null
+++ b/qa/archives/mysql-1.meta
Binary files differ
diff --git a/qa/archives/oview-short.0 b/qa/archives/oview-short.0
new file mode 100644
index 0000000..2a31775
--- /dev/null
+++ b/qa/archives/oview-short.0
Binary files differ
diff --git a/qa/archives/oview-short.index b/qa/archives/oview-short.index
new file mode 100644
index 0000000..50f1db5
--- /dev/null
+++ b/qa/archives/oview-short.index
Binary files differ
diff --git a/qa/archives/oview-short.meta b/qa/archives/oview-short.meta
new file mode 100644
index 0000000..42f242b
--- /dev/null
+++ b/qa/archives/oview-short.meta
Binary files differ
diff --git a/qa/archives/rattle.0 b/qa/archives/rattle.0
new file mode 100644
index 0000000..ac2de1d
--- /dev/null
+++ b/qa/archives/rattle.0
Binary files differ
diff --git a/qa/archives/rattle.index b/qa/archives/rattle.index
new file mode 100644
index 0000000..5b1202a
--- /dev/null
+++ b/qa/archives/rattle.index
Binary files differ
diff --git a/qa/archives/rattle.meta b/qa/archives/rattle.meta
new file mode 100644
index 0000000..5efe1ed
--- /dev/null
+++ b/qa/archives/rattle.meta
Binary files differ
diff --git a/qa/archives/snort-disks.0 b/qa/archives/snort-disks.0
new file mode 100644
index 0000000..e19ae7a
--- /dev/null
+++ b/qa/archives/snort-disks.0
Binary files differ
diff --git a/qa/archives/snort-disks.index b/qa/archives/snort-disks.index
new file mode 100644
index 0000000..5476757
--- /dev/null
+++ b/qa/archives/snort-disks.index
Binary files differ
diff --git a/qa/archives/snort-disks.meta b/qa/archives/snort-disks.meta
new file mode 100644
index 0000000..329c4b8
--- /dev/null
+++ b/qa/archives/snort-disks.meta
Binary files differ
diff --git a/qa/archives/spotinstance.0 b/qa/archives/spotinstance.0
new file mode 100644
index 0000000..126a4da
--- /dev/null
+++ b/qa/archives/spotinstance.0
Binary files differ
diff --git a/qa/archives/spotinstance.index b/qa/archives/spotinstance.index
new file mode 100644
index 0000000..511936d
--- /dev/null
+++ b/qa/archives/spotinstance.index
Binary files differ
diff --git a/qa/archives/spotinstance.meta b/qa/archives/spotinstance.meta
new file mode 100644
index 0000000..419445d
--- /dev/null
+++ b/qa/archives/spotinstance.meta
Binary files differ
diff --git a/qa/archives/viewqa1.0 b/qa/archives/viewqa1.0
new file mode 100644
index 0000000..430ff31
--- /dev/null
+++ b/qa/archives/viewqa1.0
Binary files differ
diff --git a/qa/archives/viewqa1.index b/qa/archives/viewqa1.index
new file mode 100644
index 0000000..0b91381
--- /dev/null
+++ b/qa/archives/viewqa1.index
Binary files differ
diff --git a/qa/archives/viewqa1.meta b/qa/archives/viewqa1.meta
new file mode 100644
index 0000000..b613de7
--- /dev/null
+++ b/qa/archives/viewqa1.meta
Binary files differ
diff --git a/qa/archives/viewqa2.0 b/qa/archives/viewqa2.0
new file mode 100644
index 0000000..f7c96f1
--- /dev/null
+++ b/qa/archives/viewqa2.0
Binary files differ
diff --git a/qa/archives/viewqa2.index b/qa/archives/viewqa2.index
new file mode 100644
index 0000000..88ff8ab
--- /dev/null
+++ b/qa/archives/viewqa2.index
Binary files differ
diff --git a/qa/archives/viewqa2.meta b/qa/archives/viewqa2.meta
new file mode 100644
index 0000000..f9303d8
--- /dev/null
+++ b/qa/archives/viewqa2.meta
Binary files differ
diff --git a/qa/archives/viewqa3.0 b/qa/archives/viewqa3.0
new file mode 100644
index 0000000..d0834c2
--- /dev/null
+++ b/qa/archives/viewqa3.0
Binary files differ
diff --git a/qa/archives/viewqa3.index b/qa/archives/viewqa3.index
new file mode 100644
index 0000000..7b2ef98
--- /dev/null
+++ b/qa/archives/viewqa3.index
Binary files differ
diff --git a/qa/archives/viewqa3.meta b/qa/archives/viewqa3.meta
new file mode 100644
index 0000000..1b747ee
--- /dev/null
+++ b/qa/archives/viewqa3.meta
Binary files differ
diff --git a/qa/archives/vldb-disks.0 b/qa/archives/vldb-disks.0
new file mode 100644
index 0000000..cd03022
--- /dev/null
+++ b/qa/archives/vldb-disks.0
Binary files differ
diff --git a/qa/archives/vldb-disks.index b/qa/archives/vldb-disks.index
new file mode 100644
index 0000000..0ef9ff2
--- /dev/null
+++ b/qa/archives/vldb-disks.index
Binary files differ
diff --git a/qa/archives/vldb-disks.meta b/qa/archives/vldb-disks.meta
new file mode 100644
index 0000000..f4beb82
--- /dev/null
+++ b/qa/archives/vldb-disks.meta
Binary files differ
diff --git a/qa/changeversion b/qa/changeversion
new file mode 100755
index 0000000..4c8c0cb
--- /dev/null
+++ b/qa/changeversion
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Cleanup when going from PCP 3.x to 3.6 or vice versa
+#
+
+here=`pwd`
+if [ -d $HOME/src/pcp/src/libpcp_fault/src/GNUmakefile ]
+then
+ # 3.x -> 3.6 make libpcp_fault and <pcp/fault.h>
+ #
+ cd $HOME/src/pcp
+ ${MAKE:-make} pcp.lsm
+ ./config.status
+ cd src/include
+ ${MAKE:-make}
+ cd ../libpcp_fault/src
+ ${MAKE:-make}
+ sudo ${MAKE:-make} install
+ ${MAKE:-make} clean
+else
+ # 3.6 -> 3.x cleanup
+ #
+ sudo rm -f /usr/lib/libpcp_fault* /usr/include/pcp/fault.h
+fi
+cd $here
+
+rm -f src/descreqX2 src/torture_logmeta
+rm -f src/check_fault_injection src/exercise_fault
+
+cd src
+if [ -f GNUmakefile.install ]
+then
+ # running QA in the tree
+ ${MAKE:-make} -f GNUmakefile.install
+else
+ ${MAKE:-make}
+fi
+cd $here
+
+echo "To check ..."
+echo "./check 192 479 480"
diff --git a/qa/check b/qa/check
new file mode 100755
index 0000000..db6231c
--- /dev/null
+++ b/qa/check
@@ -0,0 +1,550 @@
+#! /bin/sh
+#
+# Control script for running PCP QA tests
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+mypid=$$
+status=0
+needwrap=true
+try=0
+n_bad=0
+bad=""
+notrun=""
+interrupt=true
+myname=`basename $0`
+iam=$myname # a synonym
+
+# status and log files
+CHECKLOCK=/tmp/check-LOCK
+CHECKSTS=/tmp/check.sts # If you change these, hangcheck.pcpqa
+CHECKPID=/tmp/check.pid # will need to change, too.
+CHECKSLOG=/var/tmp/check-start.log # A check.log already exists for
+ # another reason.
+
+
+_wallclock()
+{
+ date "+%H %M %S" | $PCP_AWK_PROG '{ print $1*3600 + $2*60 + $3 }'
+}
+
+_timestamp()
+{
+ now=`date "+%D-%T"`
+ $PCP_ECHO_PROG $PCP_ECHO_N " [$now]""$PCP_ECHO_C"
+}
+
+_release_lock()
+{
+ if [ -f "$CHECKLOCK" ]
+ then
+ LOCKOWNER=`cat "$CHECKLOCK" 2>/dev/null` || return 0
+ [ "$LOCKOWNER" = "$mypid" ] && rm -f "$CHECKLOCK"
+ fi
+
+ return 0
+}
+
+_wrapup()
+{
+ # for hangcheck ...
+ # remove files that were used by hangcheck
+ #
+ if [ "$HANGCHECK" = true -a "$USER" = pcpqa ]
+ then
+ checkpid=`cat "$CHECKPID"`
+ [ "$checkpid" = "$mypid" -a -f "$CHECKSTS" ] && rm -f "$CHECKSTS"
+ [ "$checkpid" = "$mypid" -a -f "$CHECKPID" ] && rm -f "$CHECKPID"
+ fi
+
+ if [ -z "$tmp" ]
+ then
+ # did not get very far into the intialization!
+ :
+ else
+ # release the lock and remove backup files
+ _release_lock
+ [ -d $tmp ] && ( rm -rf $tmp/checksums ; rmdir $tmp )
+
+ if $showme
+ then
+ :
+ elif $needwrap
+ then
+ if [ -f check.time -a -f $tmp.time ]
+ then
+ cat check.time $tmp.time \
+ | $PCP_AWK_PROG '
+ { t[$1] = $2 }
+END { if (NR > 0) {
+ for (i in t) print i " " t[i]
+ }
+ }' \
+ | sort -n >$tmp.out
+ mv $tmp.out check.time
+ fi
+
+ echo "" >>check.log
+ date >>check.log
+ echo $list | fmt | sed -e 's/^/ /' >>check.log
+ $interrupt && echo "Interrupted! [running $seq]" >>check.log
+
+ if [ ! -z "$notrun" ]
+ then
+ [ $color = true ] && tput bold && tput setaf 4 # blue
+ echo "Not run:$notrun"
+ [ $color = true ] && tput sgr0 # reset
+ echo "Not run:$notrun" | fmt >>check.log
+ fi
+ if [ ! -z "$n_bad" -a "$n_bad" != 0 ]
+ then
+ [ $color = true ] && tput bold && tput setaf 1 # red
+ echo "Failures:$bad"
+ echo "Failed $n_bad of $try tests"
+ [ $color = true ] && tput sgr0 # reset
+ echo "Failures:$bad" | fmt >>check.log
+ echo "Failed $n_bad of $try tests" >>check.log
+ else
+ if [ $try != 0 ]
+ then
+ [ $color = true ] && tput bold && tput setaf 2 # green
+ echo "Passed all $try tests"
+ [ $color = true ] && tput sgr0 # reset
+ echo "Passed all $try tests" >>check.log
+ fi
+ fi
+ needwrap=false
+ fi
+
+ rm -f $tmp.*
+ fi
+}
+
+_addfiles ()
+{
+ af=$1
+ [ "$af" = "" ] && return 1
+ [ ! -f "$af" ] && touch "$af"
+ shift
+
+ for fn in "$@"
+ do
+ fgrep -s "$fn" "$af" >/dev/null
+ [ $? = 1 ] && echo "$fn" >>"$af"
+ done
+
+ return 0
+}
+
+_check_lock() {
+ # Check that a check process of that process ID found in
+ # $CHECKLOCK exists, and if not, release the lock.
+
+ [ ! -f "$CHECKLOCK" ] && return 0
+ PID=`cat "$CHECKLOCK" 2>/dev/null` || return 0
+
+ CCNT=`ps -e -o "pid args" | grep -v grep | grep "$PID" | grep check | \
+ $PCP_AWK_PROG '{ print $1 }'`
+ if [ "$PID" != "$CCNT" ]
+ then
+ # We can remove the lock; no check process found with that ID
+ $sudo rm -f "$CHECKLOCK"
+ fi
+
+ return 0
+}
+
+_get_lock()
+{
+ # Does someone else have a lock on check at this time? If so, we
+ # can't run a test until the lock is removed.
+ #
+ # NOTE: the use of check-LOCK rather than check.pid was done so that
+ # people running check manually (rather than run.pcpqa running check)
+ # can have tests running between themselves. This is better than
+ # having people waiting on one long series of tests passed to check
+ # and having spent 10 minutes waiting for nothing.
+
+ # Check that an instance of check who claims to have the lock actually
+ # exists!
+ _check_lock
+
+ # Get (make) a lock
+ echomessage=true
+ for sleeptime in \
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 \
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 \
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 \
+ 5 5 5 5 5 5 5 5 5 5 5 5 \
+ 5 5 5 5 5 5 5 5 5 5 5 5 \
+ 5 5 5 5 5 5 5 5 5 5 5 5 \
+ 5 5 5 5 5 5 5 5 5 5 5 5 \
+ 5 5 5 5 5 5 5 5 5 5 5 5 0 # 10 minutes waiting time per test...
+ do
+ if [ -f "$CHECKLOCK" ]
+ then
+ LOCKOWNER=`cat "$CHECKLOCK" 2>/dev/null` || continue
+
+ if [ "$LOCKOWNER" != $mypid ]
+ then
+ # wait until lock disappears...
+ if [ "$sleeptime" = 0 ]
+ then
+ # We should leave... something's terribly wrong.
+ echo ""
+ return 1
+ else
+ $echomessage && \
+ $PCP_ECHO_PROG $PCP_ECHO_N " waiting for lock [owner pid=$LOCKOWNER]... ""$PCP_ECHO_C" && \
+ echomessage=false
+ sleep $sleeptime
+ fi
+ else
+ # already have lock
+ break
+ fi
+ else
+ # make lock
+ echo "$mypid" >"$CHECKLOCK"
+ chmod a+r "$CHECKLOCK"
+ break
+ fi
+ done
+ $echomessage || echo "got it; proceeding: $seq"
+
+ return 0
+}
+
+_make_checkfiles()
+{
+ if [ ! -f $tmp.checkfiles ]
+ then
+ [ -z "$PCP_PMCDOPTIONS_PATH" ] && \
+ PCP_PMCDOPTIONS_PATH="$PCP_SYSCONF_DIR/pmcd/pmcd.options"
+ [ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+ [ -z "$PCP_PMIECONTROL_PATH" ] && \
+ PCP_PMIECONTROL_PATH="$PCP_SYSCONF_DIR/pmie/control"
+ _checkfiles="$PCP_PMCDCONF_PATH \
+ $PCP_PMLOGGERCONTROL_PATH \
+ $PCP_SYSCONF_DIR/pmlogger/config.default \
+ $PCP_PMLOGGERCONTROL_PATH \
+ $PCP_PMCDOPTIONS_PATH \
+ $PCP_DIR/etc/init.d/pcp \
+ $PCP_DIR/etc/pcp.conf $PCP_DIR/etc/pcp.env \
+ $PCP_PMDAS_DIR/sample/dsohelp.dir \
+ $PCP_PMDAS_DIR/sample/dsohelp.pag \
+ $PCP_PMDAS_DIR/sample/help.dir \
+ $PCP_PMDAS_DIR/sample/help.pag \
+ $PCP_PMDAS_DIR/simple/simple.conf"
+ fi
+}
+
+_checksums()
+{
+ cmd="$1"
+
+ _make_checkfiles
+
+ case "$cmd"
+ in
+ get)
+ mkdir -p $tmp/checksums
+ chmod a+w $tmp/checksums
+ for f in `cat $tmp.checkfiles`
+ do
+ buf=`echo $f | sed -e 's;/;+;g'`
+ buf=$tmp/checksums/$buf
+ [ -f $f ] && sum $f
+ [ -f $f -a ! -f $buf ] && $sudo cp $f $buf
+ done
+ ;;
+
+ check)
+ for f in `cat $tmp.checkfiles`
+ do
+ buf=`echo $f | sed -e 's;/;+;g'`
+ buf=$tmp/checksums/$buf
+ if [ ! -f $f ]
+ then
+ if fgrep "$f" $2 >/dev/null 2>&1
+ then
+ echo " Missing: \"$f\""
+ [ -f $buf ] && $sudo cp -f $buf $f
+ fi
+ else
+ _cs=`sum $f`
+ if fgrep "$_cs" $2 >/dev/null 2>&1
+ then
+ $sudo rm -f $f.$seq.O
+ else
+ echo " Changed: \"$f\""
+ $sudo cp -f $f $f.$seq.O
+ [ -f $buf ] && $sudo cp -f $buf $f
+ fi
+ fi
+
+ done
+ ;;
+
+ *)
+ bozo
+ ;;
+ esac
+ return 0
+}
+
+trap "_wrapup; exit \$status" 0 1 2 3 15
+
+# by default don't output timestamps
+timestamp=false
+
+# extra stuff for tracing QA runs - off/on via $qatrace
+qatrace=false
+qadepot=mazur.melbourne
+qasrc=`hostname`
+# constants - meaningful as state transitions in qavis
+qanotyet=1 # test not yet started
+qarunning=2 # test still going
+qafailed=3 # test failed
+qapassed=4 # test passed
+
+
+PCP_TRACE_TIMEOUT=15
+export PCP_TRACE_TIMEOUT
+
+# generic initialization... this may take a while to run, because (unless
+# $quick is true) make is run.
+. ./common
+
+# we have to cheat a bit... but we need to create a check.[pid|sts] file
+# to tell hangcheck that we are alive, but not ready to run yet.
+if [ "$HANGCHECK" = true -a "$USER" = pcpqa ]
+then
+ # for hangcheck ...
+ # Save pid of check in a well known place, so that hangcheck can be sure it
+ # has the right pid (getting the pid from ps output is not reliable enough).
+ #
+ if [ -f "$CHECKPID" ]
+ then
+ checkpidowner=`/bin/sh "ls -l $CHECKPID" | $PCP_AWK_PROG '{ print $3 }'`
+ if [ "$checkpidowner" != pcpqa ]
+ then
+ $sudo rm -f "$CHECKPID"
+ else
+ # There should be a BIG FAT WARNING here if QA is trying to
+ # run tests twice!
+ echo "$myname: a check.pid file already exists... are you already running tests?!" >&2
+ exit 1
+ fi
+ fi
+ [ ! -f "$CHECKPID" ] && echo "$mypid" >"$CHECKPID"
+
+ # for hangcheck ...
+ # Save the status of check in a well known place, so that hangcheck can be
+ # sure to know where check is up to (getting test number from ps output is
+ # not reliable enough since the trace stuff has been introduced).
+ #
+ if [ -f "$CHECKSTS" ]
+ then
+ checkpidowner=`/bin/sh "ls -l $CHECKSTS" | $PCP_AWK_PROG '{ print $3 }'`
+ if [ "$checkpidowner" != pcpqa ]
+ then
+ $sudo rm -f "$CHECKSTS"
+ else
+ echo "$myname: a check.sts file already exists... are you already running tests?!" >&2
+ exit 1
+ fi
+ fi
+ [ ! -f "$CHECKSTS" ] && echo "preamble" >"$CHECKSTS"
+fi
+
+[ -f check.time ] || touch check.time
+
+[ "`_get_config pmcd`" != on ] && _change_config pmcd on
+
+if $showme
+then
+ qatrace=false
+fi
+
+if $qatrace
+then
+ # if tracing turned on, make sure trace agent running ok
+ switchon=`pmprobe -h $qadepot trace.control.reset 2>&1 | $PCP_AWK_PROG '{ print $2 }'`
+ [ "$switchon" != "1" ] && qatrace=false
+fi
+
+if $qatrace
+then
+ for seq in $list
+ do
+ $verbose && printf "Preparing pmtrace tags: %-.16s:%s\r" \
+ "$qasrc" "$seq"
+ pmtrace -qh $qadepot -v $qanotyet "$qasrc:$seq" 2>/dev/null
+ done
+ $verbose && printf "%68s\r" " "
+fi
+
+torun=`echo $list | wc -w | sed -e 's/ //g'`
+haverun=0
+
+for seq in $list
+do
+ err=false
+ if $showme
+ then
+ echo $seq
+ continue
+ fi
+ if [ $torun -gt 9 ]
+ then
+ pct=`expr 100 \* $haverun / $torun`
+ haverun=`expr $haverun + 1`
+ $PCP_ECHO_PROG $PCP_ECHO_N "[$pct%] ""$PCP_ECHO_C"
+ fi
+ $PCP_ECHO_PROG $PCP_ECHO_N "$seq""$PCP_ECHO_C"
+ if [ ! -f $seq ]
+ then
+ echo " [not run, missing]"
+ notrun="$notrun $seq"
+ continue
+ else
+ # really going to try and run this one
+ #
+ rm -f $seq.out.bad
+ lasttime=`sed -n -e "/^$seq /s/.* //p" <check.time`
+ [ "X$lasttime" != X ] && $PCP_ECHO_PROG $PCP_ECHO_N " ${lasttime}s ...""$PCP_ECHO_C"
+ rm -f core $seq.notrun
+
+ # acquire lock
+ _get_lock
+ if [ $? != 0 ]
+ then echo "$myname: could not acquire lock; exiting" 2>&1
+ fi
+
+ if $check_config
+ then
+ # save checksums for critical conf and control files
+ [ ! -f $tmp.checksums ] && _checksums get >$tmp.checksums
+ fi
+
+ start=`_wallclock`
+ $timestamp && _timestamp
+
+ # for hangcheck ...
+ [ "$HANGCHECK" = true -a "$USER" = pcpqa ] && echo "$seq" >"$CHECKSTS"
+
+ if $qatrace
+ then
+ pmtrace -qh $qadepot -v $qarunning "$qasrc:$seq" 2>/dev/null
+ pmtrace -qh $qadepot -e "sh $seq" "$qasrc:$seq" >$tmp.out.1 2>&1
+ sts=$?
+ # check for trace errors on first line of test & blow them away
+ $PCP_AWK_PROG '/pmtrace: / {if (NR != 1) print $0; next} {print $0}' $tmp.out.1 > $tmp.out
+ else
+ sh $seq >$tmp.out 2>&1
+ sts=$?
+ fi
+ $timestamp && _timestamp
+ stop=`_wallclock`
+
+ # for hangcheck ...
+ [ "$HANGCHECK" = true -a "$USER" = pcpqa ] && echo "working" >"$CHECKSTS"
+
+ if $check_config
+ then
+ # check the saved checksums
+ _checksums check $tmp.checksums >$tmp.check
+ if [ -s $tmp.check ]
+ then
+ echo "$myname: $seq: ERROR: test failed to restore the following config files:" >>$tmp.out
+ cat $tmp.check >>$tmp.out
+ $PCP_ECHO_PROG $PCP_ECHO_N " [config not restored]""$PCP_ECHO_C"
+ fi
+ fi
+
+ # remove the lock
+ _release_lock
+
+ if [ -f core ]
+ then
+ $PCP_ECHO_PROG $PCP_ECHO_N " [dumped core]""$PCP_ECHO_C"
+ mv core $seq.core
+ err=true
+ fi
+
+ if [ -f $seq.notrun ]
+ then
+ [ $color = true ] && tput bold && tput setaf 4 # blue
+ echo " [not run] `cat $seq.notrun`"
+ [ $color = true ] && tput sgr0 # reset
+ notrun="$notrun $seq"
+ else
+ if [ $sts -ne 0 ]
+ then
+ $PCP_ECHO_PROG $PCP_ECHO_N " [failed, exit status $sts]""$PCP_ECHO_C"
+ err=true
+ fi
+ if [ ! -f $seq.out ]
+ then
+ echo " - no qualified output"
+ mv $tmp.out $seq.out.bad
+ err=true
+ else
+ if diff $seq.out $tmp.out >/dev/null 2>&1
+ then
+ echo ""
+ if $err
+ then
+ :
+ else
+ echo "$seq `expr $stop - $start`" >>$tmp.time
+ fi
+ else
+ [ $color = true ] && tput bold && tput setaf 1 # red
+ echo " - output mismatch (see $seq.out.bad)"
+ [ $color = true ] && tput sgr0 # reset
+ mv $tmp.out $seq.out.bad
+ $diff $seq.out $seq.out.bad
+ err=true
+ fi
+ fi
+
+ # really tried to run the test, update the state
+ #
+ if $qatrace
+ then
+ if $err
+ then
+ pmtrace -qh $qadepot -v $qafailed "$qasrc:$seq:$qaown" 2>/dev/null
+ else
+ pmtrace -qh $qadepot -v $qapassed "$qasrc:$seq:$qaown" 2>/dev/null
+ fi
+ fi
+ fi
+ fi
+
+ # come here for each test, except when $showme is true
+ #
+ if $err
+ then
+ bad="$bad $seq"
+ n_bad=`expr $n_bad + 1`
+ quick=false
+ [ $diff = true ] || echo "Check local PMCD is still alive ..."
+ $OPTION_AGENTS && _haveagents
+ $OPTION_LOGGER && _havelogger
+ fi
+ [ -f $seq.notrun ] || try=`expr $try + 1`
+ rm -f $seq.notrun
+done
+
+interrupt=false
+status=$n_bad
+exit
diff --git a/qa/check-gitignore b/qa/check-gitignore
new file mode 100755
index 0000000..9c2603f
--- /dev/null
+++ b/qa/check-gitignore
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# check .gitignore
+#
+
+#debug# tmp=/var/tmp/$$
+tmp=`pwd`/tmp
+sts=0
+#debug# trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+rm -f $tmp.*
+
+if [ ! -f .gitignore ]
+then
+ echo "No .gitignore here, do you know what you're doing?"
+ sts=1
+ exit $sts
+fi
+
+# check for .gitignore lines that do not match any existing file
+#
+sed -e '/^#/d' .gitignore \
+| while read pat
+do
+ for file in $pat
+ do
+ if [ ! -f "$file" ]
+ then
+ echo "Warning: no file matching .gitignore line: $pat"
+ else
+ echo "$file" >>$tmp.ignore
+ fi
+ done
+done
+
+sort -o $tmp.ignore $tmp.ignore
+
+git status \
+| awk '
+/Untracked files:/ { state = 1; next }
+state == 1 && /to include in what will be committed/ { state = 2; next }
+state == 2 { print }' \
+| sed -e 's/^#[ ]*//' >$tmp.status
+
diff --git a/qa/check-group b/qa/check-group
new file mode 100755
index 0000000..9558423
--- /dev/null
+++ b/qa/check-group
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# Check group file and qa scripts for a specific pcp command ($1)
+#
+# $1 is assumed to be _both_ the name of a command that appears in
+# the QA scripts (or part of a command, e.g. purify in _setup_purify)
+# and the name of a group in the group file
+#
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+if [ $# -ne 1 ]
+then
+ echo "Usage: $0 pcp-app"
+ exit 1
+fi
+
+for seq in [0-9][0-9]*[0-9]
+do
+ ( grep -v '^#' $seq \
+ | egrep -q "(^$1([ \'\"]|$))|([ /\'\"_]$1([ \'\"_]|$))" ) && echo $seq >>$tmp.tmp
+done
+
+sort -o $tmp.scripts $tmp.tmp
+
+check -r -n -g "$1" | sort \
+| while read f
+do
+ [ -f "$f" ] && echo "$f"
+done >$tmp.group
+
+comm -23 $tmp.scripts $tmp.group >$tmp.tmp
+if [ -s $tmp.tmp ]
+then
+ echo "$1 in QA scripts and NOT in group ..."
+ sort -n $tmp.tmp | sed -e 's/^/ /'
+ echo
+fi
+
+comm -13 $tmp.scripts $tmp.group >$tmp.tmp
+if [ -s $tmp.tmp ]
+then
+ echo "$1 in group and NOT in QA scripts ..."
+ sort -n $tmp.tmp | sed -e 's/^/ /'
+fi
+
+comm -12 $tmp.scripts $tmp.group >$tmp.tmp
+echo "$1 in group and QA scripts `wc -l <$tmp.tmp | sed -e 's/ //g'` times"
diff --git a/qa/chk.setup b/qa/chk.setup
new file mode 100755
index 0000000..285373d
--- /dev/null
+++ b/qa/chk.setup
@@ -0,0 +1,388 @@
+#! /bin/sh
+#
+# check PCP QA setup
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+PMCD_CONNECT_TIMEOUT=10
+export PMCD_CONNECT_TIMEOUT
+
+_fail_check()
+{
+ echo "... check failed!"
+ exit 1
+}
+
+_check_pmcd()
+{
+ # 5 seconds default seems like a reasonble max time to establish
+ # contact
+ rm -f $tmp.ok
+ _can_wait=5
+ _host=$1
+ _i=0
+ _dead=true
+ while [ $_i -lt $_can_wait ]
+ do
+ _sts=`pmprobe -n $PCP_VAR_DIR/pmns/root_pmcd -h $_host pmcd.numclients 2>/dev/null | $PCP_AWK_PROG '{print $2}'`
+ if [ "${_sts:-0}" -gt 0 ]
+ then
+ # numval really > 0, we're done
+ #
+ _dead=false
+ break
+ fi
+ sleep 1
+ _i=`expr $_i + 1`
+ done
+ if $_dead
+ then
+ :
+ else
+ touch $tmp.ok
+ fi
+}
+
+_check_pmlogger()
+{
+ $PCP_ECHO_PROG $PCP_ECHO_N "Contacting primary logger at $host ... ""$PCP_ECHO_C"
+ if pmlc -P -h $1 </dev/null 2>/dev/null | grep 'Connected to primary pmlogger' >/dev/null
+ then
+ echo "OK"
+ else
+ echo "not running"
+ fi
+}
+
+_check_pmdas()
+{
+ rm -f $tmp.bad
+ $PCP_ECHO_PROG $PCP_ECHO_N "Checking installed PMDAS at $host ... ""$PCP_ECHO_C"
+ pminfo -f -h $1 pmcd.agent.type >$tmp.tmp
+ for pmda in sample simple
+ do
+ if grep '"'$pmda'"' $tmp.tmp >/dev/null
+ then
+ :
+ else
+ echo $pmda >>$tmp.bad
+ fi
+ done
+ if [ -f $tmp.bad ]
+ then
+ echo "missing - `cat $tmp.bad`"
+ else
+ echo "OK"
+ fi
+}
+
+
+# files in the PCP distribution
+#
+fail=false
+for file in $PCP_DIR/etc/pcp.env
+do
+ if [ ! -f "$file" ]
+ then
+ echo "$0: Error: cannot file \"$file\" from the PCP distribution"
+ fail=true
+ fi
+done
+
+# files in the PCP QA distribution
+#
+for file in mk.localconfig common.rc common.setup common.product \
+ common.check common.config
+do
+ if [ ! -f "$file" ]
+ then
+ echo "$0: Error: cannot file \"$file\" from the PCP QA distribution"
+ fail=true
+ fi
+done
+
+# no point proceeding if any of these files are missing
+#
+$fail && _fail_check
+
+if [ ! -f localconfig ]
+then
+ # need localconfig
+ #
+ if ./mk.localconfig
+ then
+ if [ -f GNUmakefile.install ]
+ then
+ # running QA in the tree
+ ${MAKE:-make} -f GNUmakefile.install setup | egrep -v 'Entering|Leaving|Nothing'
+ else
+ ${MAKE:-make} setup | egrep -v 'Entering|Leaving|Nothing'
+ fi
+ else
+ echo "$0: Error: need to fix failure in mk.localconfig"
+ _fail_check
+ fi
+ if [ ! -f localconfig ]
+ then
+ echo "$0: Error: mk.localconfig failed to create the file \"localconfig\""
+ _fail_check
+ fi
+fi
+
+# source hierarchy
+#
+# common.product
+# common.setup
+# common.rc
+# $PCP_DIR/etc/pcp.env
+# localconfig
+# common.check
+# common.config
+# localconfig
+#
+. ./common.product
+. ./common.check
+. ./common.config
+
+# things we care about from $PCP_DIR/etc/pcp.env
+#
+
+# files
+#
+for var in PCP_PMCDCONF_PATH PCP_PMCDOPTIONS_PATH
+do
+ eval file=\$$var
+ if [ -z "$file" ]
+ then
+ echo "$0: Error: variable \$$var is not set from $PCP_DIR/etc/pcp.env"
+ fail=true
+ else
+ if [ ! -f "$file" ]
+ then
+ echo "$0: Error: cannot find file \"$file\" (\$$var from $PCP_DIR/etc/pcp.env)"
+ fail=true
+ fi
+ fi
+done
+
+# programs
+#
+for var in PCP_AWK_PROG
+do
+ eval prog=\$$var
+ # strip args if any
+ prog=`echo $prog | sed -e 's/ .*//'`
+ if [ -z "$prog" ]
+ then
+ echo "$0: Error: variable \$$var is not set from $PCP_DIR/etc/pcp.env"
+ fail=true
+ else
+ if which $prog >/dev/null 2>&1
+ then
+ :
+ else
+ echo "$0: Error: cannot find executable program \"$prog\" (\$$var from $PCP_DIR/etc/pcp.env)"
+ fail=true
+ fi
+ fi
+done
+
+# directories
+#
+# these ones should be in $PCP_DIR/etc/pcp.conf but are not currently used in
+# the QA scripts, but are tested here for completeness
+#
+xtra="PCP_LIB_DIR PCP_INC_DIR PCP_MAN_DIR"
+#
+for var in PCP_RC_DIR PCP_PMDAS_DIR PCP_VAR_DIR PCP_DEMOS_DIR PCP_LOG_DIR \
+ PCP_BIN_DIR PCP_BINADM_DIR PCP_TMP_DIR PCP_SHARE_DIR PCP_DOC_DIR \
+ $xtra
+do
+ eval dir=\$$var
+ if [ -z "$dir" ]
+ then
+ echo "$0: Warning: variable \$$var is not set from $PCP_DIR/etc/pcp.env"
+ else
+ if [ ! -d "$dir" ]
+ then
+ echo "$0: Warning: cannot find directory \"$prog\" (\$$var from $PCP_DIR/etc/pcp.env)"
+ fi
+ fi
+done
+
+# common.rc will unconditionally set these ones, else fail ... so no need to
+# check
+# $PCP_PMCD_PROG
+# $PCP_PMCDLOG_PATH
+
+# localconfig will unconditionally set these ones ... no real sane checking
+# I can do here!
+# $PCP_PLATFORM (redundant, copied from $PCP_DIR/etc/pcp.conf)
+# $PCP_VER
+# $PCP_EOE_VER
+
+# files from common.product
+#
+for var in PCP_PMCD_PATH
+do
+ eval file=\$$var
+ if [ -z "$file" ]
+ then
+ echo "$0: Error: variable \$$var is not set from common.product"
+ fail=true
+ else
+ if [ ! -f "$file" ]
+ then
+ echo "$0: Error: cannot find file \"$file\" (\$$var from common.product)"
+ fail=true
+ fi
+ fi
+done
+
+# no point proceeding if any of these files are missing
+#
+$fail && _fail_check
+
+if [ $# -eq 0 ]
+then
+ # down to the common.config things ... these are the most contentious
+ # and the ones that need local tuning ...
+ #
+ # $PCPQA_CLOSE_X_SERVER is set here, but is hard to check so skip that one.
+ #
+ for var in PCPQA_FAR_PMCD PCPQA_HYPHEN_HOST
+ do
+ eval host=\$$var
+ if [ -z "$host" ]
+ then
+ echo "$0: Warning: variable \$$var is not set from common.config"
+ elif [ "$host" = "some-host" -o "$host" = "far_away_pmcd" ]
+ then
+ echo "$0: Warning: variable \$$var using bogus default from common.config"
+ else
+ # try to contact pmcd ...
+ #
+ $PCP_ECHO_PROG $PCP_ECHO_N "Contacting pmcd at $host ... ""$PCP_ECHO_C"
+ _check_pmcd $host
+ if [ -f $tmp.ok ]
+ then
+ echo "OK"
+ _check_pmlogger $host
+ _check_pmdas $host
+ else
+ echo "no response (warning)"
+ fi
+ fi
+ done
+fi
+
+# no point proceeding if any of these variables are not set
+#
+$fail && _fail_check
+
+# the other pmcd's we think we can talk to ...
+#
+if [ -f GNUmakefile.install ]
+then
+ # running QA in the tree
+ ${MAKE:-make} -f GNUmakefile.instll qa_hosts >/dev/null 2>&1
+else
+ ${MAKE:-make} qa_hosts >/dev/null 2>&1
+fi
+if [ ! -f qa_hosts ]
+then
+ echo "$0: Error: ${MAKE:-make} failed to create the file \"qa_hosts\""
+ _fail_check
+fi
+
+# failures here are not fatal ... some of the hosts may be off with the
+# pixies
+#
+echo "hullo world" >$tmp.hullo
+[ $# -eq 0 ] && set -- `cat qa_hosts`
+for host
+do
+ # try to contact remote pmcd ...
+ #
+ $PCP_ECHO_PROG $PCP_ECHO_N "Contacting remote pmcd at $host ... ""$PCP_ECHO_C"
+ _check_pmcd $host
+ if [ -f $tmp.ok ]
+ then
+ echo "OK"
+ # pmcd there, check primary pmlogger
+ _check_pmlogger $host
+ # and the installed pmdas
+ _check_pmdas $host
+ # if the host is there, then the login for pcpqa needs to be
+ # setup and and ssh/scp working without passwords
+ $PCP_ECHO_PROG $PCP_ECHO_N "Trying scp/ssh for login pcpqa at $host ... ""$PCP_ECHO_C"
+ echo "== ssh 1st rm ==" >$tmp.out
+ ssh pcpqa@$host rm -f chk.hullo >>$tmp.out 2>&1
+ echo "== scp -> $host ==" >>$tmp.out
+ scp $tmp.hullo pcpqa@$host:chk.hullo >>$tmp.out 2>&1
+ echo "== ssh cat ==" >>$tmp.out
+ ssh pcpqa@$host cat chk.hullo >$tmp.ans 2>>$tmp.out
+ echo "== ssh 2nd rm ==" >>$tmp.out
+ ssh pcpqa@$host rm -f chk.hullo >>$tmp.out 2>&1
+ if [ "`cat $tmp.ans`" = "`cat $tmp.hullo`" ]
+ then
+ echo "OK"
+ else
+ echo "failed"
+ fail=true
+ echo "Expected output: \"`cat $tmp.hullo`\""
+ echo "Actual output: \"`cat $tmp.ans`\""
+ echo "Diagnostic Log:"
+ cat $tmp.out
+ fi
+ # check remote shell's path includes the PCP binary directories
+ #
+ $PCP_ECHO_PROG $PCP_ECHO_N "Trying shell's path for login pcpqa at $host ... ""$PCP_ECHO_C"
+ echo "== ssh $host pmhostname ==" >$tmp.out
+ if ssh pcpqa@$host pmhostname >>$tmp.out 2>&1
+ then
+ echo "OK"
+ else
+ echo "failed"
+ fail=true
+ cat $tmp.out
+ fi
+ else
+ echo "no response (warning)"
+ fi
+done
+
+# down to pmcd on the local host
+#
+for host in localhost `hostname | sed -e 's/\..*//'` `_get_fqdn`
+do
+ # try to contact pmcd ...
+ #
+ $PCP_ECHO_PROG $PCP_ECHO_N "Contacting local pmcd at $host ... ""$PCP_ECHO_C"
+ _check_pmcd $host
+ if [ -f $tmp.ok ]
+ then
+ echo "OK"
+ else
+ echo "no response (fatal)"
+ fail=true
+ fi
+done
+
+# no point proceeding if any of these cannot be contacted
+#
+$fail && _fail_check
+
+echo "Check the sanity of these:"
+$PCP_ECHO_PROG $PCP_ECHO_N " \$PCP_PLATFORM=$PCP_PLATFORM [y] ? ""$PCP_ECHO_C"
+read ans
+[ ! -z "$ans" -a "$ans" != y ] && _fail_check
+$PCP_ECHO_PROG $PCP_ECHO_N " \$PCP_VERSION=$PCP_VERSION [y] ? ""$PCP_ECHO_C"
+read ans
+[ ! -z "$ans" -a "$ans" != y ] && _fail_check
+
+exit 0
diff --git a/qa/cisco/ATM-12-0 b/qa/cisco/ATM-12-0
new file mode 100644
index 0000000..2b6f515
--- /dev/null
+++ b/qa/cisco/ATM-12-0
@@ -0,0 +1,21 @@
+>
+show interface
+ATM12/0 is up, line protocol is up
+ Hardware is cxBus ATM
+ Internet address is 150.166.230.24 255.255.255.0
+ MTU 4470 bytes, BW 156250 Kbit, DLY 80 usec, rely 255/255, load 1/255
+ Encapsulation ATM, loopback not set, keepalive set (10 sec)
+ Encapsulation(s): AAL5, PVC mode
+ 256 TX buffers, 256 RX buffers, 2048 maximum active VCs, 1024 VCs per VP, 15 current VCCs
+ Last input 0:00:00, output 0:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Output queue 0/40, 511 drops; input queue 0/75, 10612 drops
+ 5 minute input rate 181000 bits/sec, 116 packets/sec
+ 5 minute output rate 160000 bits/sec, 68 packets/sec
+ 658262505 packets input, 1239748718 bytes, 199 no buffer
+ Received 0 broadcasts, 0 runts, 0 giants
+ 2570 input errors, 2569 CRC, 1 frame, 0 overrun, 0 ignored, 0 abort
+ 788426419 packets output, 4188341273 bytes, 0 underruns
+ 0 output errors, 0 collisions, 21 interface resets, 0 restarts
+ 0 output buffer failures, 63 output buffers swapped out
+>
diff --git a/qa/cisco/Ethernet-0 b/qa/cisco/Ethernet-0
new file mode 100644
index 0000000..93563d5
--- /dev/null
+++ b/qa/cisco/Ethernet-0
@@ -0,0 +1,21 @@
+Username:
+>
+show interface
+Ethernet0 is up, line protocol is up
+ Hardware is Lance, address is 0000.0c03.ed85 (bia 0000.0c03.ed85)
+ Description: Sydney, Australia
+ Internet address is 155.11.226.3, subnet mask is 255.255.255.128
+ MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, rely 255/255, load 1/255
+ Encapsulation ARPA, loopback not set, keepalive set (10 sec)
+ ARP type: ARPA, ARP Timeout 4:00:00
+ Last input 0:00:00, output 0:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Output queue 0/40, 19188 drops; input queue 1/75, 0 drops
+ Five minute input rate 5000 bits/sec, 10 packets/sec
+ Five minute output rate 60000 bits/sec, 13 packets/sec
+ 12884820 packets input, 1321046112 bytes, 0 no buffer
+ Received 1570813 broadcasts, 0 runts, 0 giants
+ 891 input errors, 891 CRC, 634 frame, 0 overrun, 0 ignored, 0 abort
+ 14717105 packets output, 870622060 bytes, 0 underruns
+ 98605 output errors, 1883820 collisions, 1 interface resets, 0 restarts
+>
diff --git a/qa/cisco/Ethernet-1-0 b/qa/cisco/Ethernet-1-0
new file mode 100644
index 0000000..f11c392
--- /dev/null
+++ b/qa/cisco/Ethernet-1-0
@@ -0,0 +1,27 @@
+>
+show int e1/0
+Ethernet1/0 is up, line protocol is up
+ Hardware is AmdP2, address is 0050.7343.f011 (bia 0050.7343.f011)
+ Description: >>> Connecion to melbourne pix-e1 <<<
+ Internet address is 134.14.71.241/30
+ MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
+ reliability 255/255, txload 3/255, rxload 1/255
+ Encapsulation ARPA, loopback not set
+ Keepalive set (10 sec)
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input 00:09:05, output 00:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Queueing strategy: fifo
+ Output queue 0/40, 0 drops; input queue 0/75, 0 drops
+ 30 second input rate 26000 bits/sec, 4 packets/sec
+ 30 second output rate 118000 bits/sec, 97 packets/sec
+ 3657465 packets input, 2161281566 bytes, 0 no buffer
+ Received 79047 broadcasts, 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 0 input packets with dribble condition detected
+ 13202080 packets output, 4162655553 bytes, 0 underruns
+ 6 output errors, 249819 collisions, 11 interface resets
+ 0 babbles, 0 late collision, 207020 deferred
+ 6 lost carrier, 0 no carrier
+ 0 output buffer failures, 0 output buffers swapped out
+>
diff --git a/qa/cisco/Ethernet-3-5 b/qa/cisco/Ethernet-3-5
new file mode 100644
index 0000000..55e6c8b
--- /dev/null
+++ b/qa/cisco/Ethernet-3-5
@@ -0,0 +1,20 @@
+>
+show interface
+Ethernet3/5 is up, line protocol is up
+ Hardware is cxBus Ethernet, address is 0000.0c38.436d (bia 0000.0c38.436d)
+ Internet address is 198.29.108.4, subnet mask is 255.255.255.0
+ MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, rely 255/255, load 2/255
+ Encapsulation ARPA, loopback not set, keepalive set (10 sec)
+ ARP type: ARPA, ARP Timeout 4:00:00
+ Last input 0:00:03, output 0:00:01, output hang never
+ Last clearing of "show interface" counters 6w2d
+ Output queue 0/40, 54880 drops; input queue 0/75, 1492 drops
+ 5 minute input rate 1000 bits/sec, 0 packets/sec
+ 5 minute output rate 91000 bits/sec, 98 packets/sec
+ 24627812 packets input, 1448819515 bytes, 862 no buffer
+ Received 3959194 broadcasts, 79 runts, 4 giants
+ 292 input errors, 195 CRC, 14 frame, 0 overrun, 0 ignored, 0 abort
+ 0 input packets with dribble condition detected
+ 150470373 packets output, 3227527737 bytes, 0 underruns
+ 1274 output errors, 11605581 collisions, 0 interface resets, 0 restarts
+>
diff --git a/qa/cisco/FastEthernet-0-5 b/qa/cisco/FastEthernet-0-5
new file mode 100644
index 0000000..21e54a7
--- /dev/null
+++ b/qa/cisco/FastEthernet-0-5
@@ -0,0 +1,36 @@
+! donated by Tore Høivaag Larsen
+
+Username:
+Password:
+
+bgo-sw20#
+show int
+FastEthernet0/5 is up, line protocol is up (connected)
+ Hardware is Fast Ethernet, address is ec30.91f9.0206 (bia ec30.91f9.0206)
+ Description: office-vlan
+ MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
+ reliability 255/255, txload 1/255, rxload 1/255
+ Encapsulation ARPA, loopback not set
+ Keepalive set (10 sec)
+ Full-duplex, 100Mb/s, media type is 10/100BaseTX
+ input flow-control is off, output flow-control is unsupported
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input never, output 00:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
+ Queueing strategy: fifo
+ Output queue: 0/40 (size/max)
+ 5 minute input rate 0 bits/sec, 0 packets/sec
+ 5 minute output rate 1000 bits/sec, 2 packets/sec
+ 10110404 packets input, 7324243891 bytes, 0 no buffer
+ Received 1915 broadcasts (0 multicasts)
+ 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 0 watchdog, 1216 multicast, 0 pause input
+ 0 input packets with dribble condition detected
+ 21549935 packets output, 20222705373 bytes, 0 underruns
+ 0 output errors, 0 collisions, 1 interface resets
+ 0 babbles, 0 late collision, 0 deferred
+ 0 lost carrier, 0 no carrier, 0 PAUSE output
+ 0 output buffer failures, 0 output buffers swapped out
+bgo-sw20#
diff --git a/qa/cisco/FastEthernet-0-6 b/qa/cisco/FastEthernet-0-6
new file mode 100644
index 0000000..2ceae35
--- /dev/null
+++ b/qa/cisco/FastEthernet-0-6
@@ -0,0 +1,36 @@
+! donated by Tore Høivaag Larsen
+
+Username:
+Password:
+
+bgo-sw20#
+show int
+FastEthernet0/6 is up, line protocol is up (connected)
+ Hardware is Fast Ethernet, address is ec30.91f9.0207 (bia ec30.91f9.0207)
+ Description: office-vlan
+ MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
+ reliability 255/255, txload 1/255, rxload 1/255
+ Encapsulation ARPA, loopback not set
+ Keepalive set (10 sec)
+ Full-duplex, 100Mb/s, media type is 10/100BaseTX
+ input flow-control is off, output flow-control is unsupported
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input never, output 00:00:01, output hang never
+ Last clearing of "show interface" counters never
+ Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
+ Queueing strategy: fifo
+ Output queue: 0/40 (size/max)
+ 5 minute input rate 0 bits/sec, 0 packets/sec
+ 5 minute output rate 4000 bits/sec, 6 packets/sec
+ 16145175 packets input, 4063397146 bytes, 0 no buffer
+ Received 9320 broadcasts (0 multicasts)
+ 0 runts, 0 giants, 0 throttles
+ 1 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 0 watchdog, 4454 multicast, 0 pause input
+ 0 input packets with dribble condition detected
+ 99101098 packets output, 27283555831 bytes, 0 underruns
+ 0 output errors, 0 collisions, 1 interface resets
+ 0 babbles, 0 late collision, 0 deferred
+ 0 lost carrier, 0 no carrier, 0 PAUSE output
+ 0 output buffer failures, 0 output buffers swapped out
+bgo-sw20#
diff --git a/qa/cisco/FastEthernet-1-0 b/qa/cisco/FastEthernet-1-0
new file mode 100644
index 0000000..27a4833
--- /dev/null
+++ b/qa/cisco/FastEthernet-1-0
@@ -0,0 +1,24 @@
+cmd#
+show interface
+FastEthernet1/0 is up, line protocol is up
+ Hardware is cyBus FastEthernet Interface, address is 0060.3eb0.8c20 (bia 0060.3eb0.8c20)
+ Internet address is 192.111.17.1 255.255.255.0
+ MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, rely 255/255, load 1/255
+ Encapsulation ARPA, loopback not set, keepalive set (10 sec), fdx, MII
+ ARP type: ARPA, ARP Timeout 4:00:00
+ Last input 0:00:05, output 0:00:05, output hang never
+ Last clearing of "show interface" counters never
+ Output queue 0/40, 0 drops; input queue 0/75, 362 drops
+ 5 minute input rate 8000 bits/sec, 1 packets/sec
+ 5 minute output rate 11000 bits/sec, 0 packets/sec
+ 4615550 packets input, 1942263093 bytes, 33 no buffer
+ Received 1947224 broadcasts, 0 runts, 8 giants
+ 30351 input errors, 30351 CRC, 15187 frame, 0 overrun, 0 ignored, 0 abort
+ 0 watchdog, 27381 multicast
+ 0 input packets with dribble condition detected
+ 11521698 packets output, 1811832796 bytes, 0 underruns
+ 0 output errors, 0 collisions, 2 interface resets, 0 restarts
+ 0 babbles, 0 late collision, 0 deferred
+ 0 lost carrier, 0 no carrier
+ 0 output buffer failures, 0 output buffers swapped out
+cmd#
diff --git a/qa/cisco/Fddi-2-0 b/qa/cisco/Fddi-2-0
new file mode 100644
index 0000000..53453c9
--- /dev/null
+++ b/qa/cisco/Fddi-2-0
@@ -0,0 +1,26 @@
+Username:
+Password:
+>
+show interface
+Fddi2/0 is up, line protocol is up
+ Hardware is cxBus FDDI, address is 0000.0c38.4360 (bia 0000.0c38.4360)
+ Internet address is 192.26.80.22, subnet mask is 255.255.255.0
+ MTU 4470 bytes, BW 100000 Kbit, DLY 100 usec, rely 255/255, load 1/255
+ Encapsulation SNAP, loopback not set, keepalive not set
+ ARP type: SNAP, ARP Timeout 4:00:00
+ Phy-A state is connect, neighbor is unk, cmt signal bits 008/000, status QLS
+ Phy-B state is active, neighbor is M, cmt signal bits 20C/00E, status ILS
+ CFM is wrap B, token rotation 5000 usec, ring operational 0:00:58
+ Upstream neighbor 0800.6904.155d, downstream neighbor 0040.0b80.a052
+ Last input 0:00:00, output 0:00:00, output hang never
+ Last clearing of "show interface" counters 1w0d
+ Output queue 0/40, 85 drops; input queue 0/75, 33437 drops
+ Five minute input rate 160000 bits/sec, 39 packets/sec
+ Five minute output rate 93000 bits/sec, 108 packets/sec
+ 33780622 packets input, 4009491185 bytes, 87 no buffer
+ Received 3768432 broadcasts, 0 runts, 0 giants
+ 2 input errors, 1 CRC, 1 frame, 0 overrun, 19 ignored, 0 abort
+ 83194423 packets output, 612803885 bytes, 492 underruns
+ 0 output errors, 0 collisions, 0 interface resets, 0 restarts
+ 21602 transitions, 0 traces, 11625 claims, 0 beacon
+>
diff --git a/qa/cisco/GNUmakefile b/qa/cisco/GNUmakefile
new file mode 100644
index 0000000..3e107a6
--- /dev/null
+++ b/qa/cisco/GNUmakefile
@@ -0,0 +1,23 @@
+#!gmake
+
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/cisco
+
+CISCOS = ATM-12-0 Ethernet-0 Ethernet-1-0 Ethernet-3-5 \
+ FastEthernet-0-5 FastEthernet-0-6 FastEthernet-1-0 \
+ Fddi-2-0 GigabitEthernet-0-1 Hssi-3-0 hugh-800 \
+ Serial-0 Serial-1 Serial-1-0-min Serial-1-0-sec \
+ Vlan-1 Vlan-160 Vlan-256
+
+LSRCFILES = $(CISCOS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CISCOS) $(TESTDIR)
+ $(SUBDIRS_MAKERULE)
+
+include $(BUILDRULES)
diff --git a/qa/cisco/GigabitEthernet-0-1 b/qa/cisco/GigabitEthernet-0-1
new file mode 100644
index 0000000..1e8da67
--- /dev/null
+++ b/qa/cisco/GigabitEthernet-0-1
@@ -0,0 +1,35 @@
+! donated by Tore Høivaag Larsen
+
+Username:
+Password:
+
+bgo-sw20#
+show int
+GigabitEthernet0/1 is up, line protocol is up (connected)
+ Hardware is Gigabit Ethernet, address is ec30.91f9.0201 (bia ec30.91f9.0201)
+ MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
+ reliability 255/255, txload 1/255, rxload 1/255
+ Encapsulation ARPA, loopback not set
+ Keepalive not set
+ Full-duplex, 100Mb/s, link type is auto, media type is 10/100/1000BaseTX
+ input flow-control is off, output flow-control is unsupported
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input 00:00:00, output 00:00:14, output hang never
+ Last clearing of "show interface" counters never
+ Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
+ Queueing strategy: fifo
+ Output queue: 0/40 (size/max)
+ 5 minute input rate 32000 bits/sec, 50 packets/sec
+ 5 minute output rate 2000 bits/sec, 2 packets/sec
+ 1329418643 packets input, 375837411567 bytes, 0 no buffer
+ Received 1047381126 broadcasts (0 multicasts)
+ 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 0 watchdog, 691665983 multicast, 0 pause input
+ 0 input packets with dribble condition detected
+ 231392551 packets output, 168989386887 bytes, 0 underruns
+ 0 output errors, 0 collisions, 1 interface resets
+ 0 babbles, 0 late collision, 0 deferred
+ 0 lost carrier, 0 no carrier, 0 PAUSE output
+ 0 output buffer failures, 0 output buffers swapped out
+bgo-sw20#
diff --git a/qa/cisco/Hssi-3-0 b/qa/cisco/Hssi-3-0
new file mode 100644
index 0000000..0bee9f8
--- /dev/null
+++ b/qa/cisco/Hssi-3-0
@@ -0,0 +1,22 @@
+>
+show interface
+Hssi3/0 is administratively down, line protocol is down
+ Hardware is cxBus HSSI
+ Description: 45 Meg Microwave Link to Building 27
+ Internet address is 150.166.124.1 255.255.255.0
+ MTU 4470 bytes, BW 45045 Kbit, DLY 200 usec, rely 255/255, load 1/255
+ Encapsulation HDLC, loopback not set, keepalive set (10 sec)
+ Last input 1:07:12, output 1:07:08, output hang never
+ Last clearing of "show interface" counters never
+ Output queue 0/40, 2 drops; input queue 0/75, 37 drops
+ 5 minute input rate 0 bits/sec, 0 packets/sec
+ 5 minute output rate 0 bits/sec, 0 packets/sec
+ 306700515 packets input, 1443052046 bytes, 5 no buffer
+ Received 1118787 broadcasts, 0 runts, 0 giants
+ 0 parity
+ 241 input errors, 0 CRC, 241 frame, 0 overrun, 0 ignored, 0 abort
+ 246381377 packets output, 3684064154 bytes, 0 underruns
+ 0 output errors, 0 applique, 210 interface resets, 0 restarts
+ 0 output buffer failures, 83 output buffers swapped out
+ 8214 carrier transitions
+>
diff --git a/qa/cisco/Serial-0 b/qa/cisco/Serial-0
new file mode 100644
index 0000000..5b02bab
--- /dev/null
+++ b/qa/cisco/Serial-0
@@ -0,0 +1,22 @@
+>
+show interface
+Serial0 is up, line protocol is up
+ Hardware is MK5025
+ Description: frame-relay to MtVA, Tokyo, Hong Kong
+ Internet address is 155.11.201.172, subnet mask is 255.255.255.128
+ MTU 1500 bytes, BW 64 Kbit, DLY 20000 usec, rely 255/255, load 15/255
+ Encapsulation FRAME-RELAY, loopback not set, keepalive set (10 sec)
+ LMI DLCI 0, LMI sent 346516, LMI stat recvd 345070, LMI upd recvd 2
+ LMI type is ANSI Annex D
+ Last input 0:00:01, output 0:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Output queue 0/8, 298580 drops; input queue 0/75, 0 drops
+ Five minute input rate 60000 bits/sec, 16 packets/sec
+ Five minute output rate 4000 bits/sec, 12 packets/sec
+ 18139408 packets input, 2763796661 bytes, 0 no buffer
+ Received 0 broadcasts, 0 runts, 0 giants
+ 189 input errors, 189 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
+ 15860554 packets output, 3098844973 bytes, 0 underruns
+ 0 output errors, 0 collisions, 668 interface resets, 0 restarts
+ 686 carrier transitions
+>
diff --git a/qa/cisco/Serial-1 b/qa/cisco/Serial-1
new file mode 100644
index 0000000..0b75353
--- /dev/null
+++ b/qa/cisco/Serial-1
@@ -0,0 +1,24 @@
+>
+show interface
+Serial1 is up, line protocol is up
+ Hardware is HD64570
+ Description: Frame-relay, MtV, Hong Kong, Sydney
+ MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, rely 255/255, load 5/255
+ Encapsulation FRAME-RELAY, loopback not set, keepalive set (10 sec)
+ LMI enq sent 14998, LMI stat recvd 14885, LMI upd recvd 0, DTE LMI up
+ LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0
+ LMI DLCI 0 LMI type is ANSI Annex D frame relay DTE
+ Broadcast queue 0/200, broadcasts sent/dropped 508604/0
+ Last input 0:00:00, output 0:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Output queue 0/40, 947 drops; input queue 0/75, 0 drops
+ Five minute input rate 117000 bits/sec, 29 packets/sec
+ Five minute output rate 32000 bits/sec, 20 packets/sec
+ 2578327 packets input, 1105345262 bytes, 0 no buffer
+ Received 0 broadcasts, 0 runts, 0 giants
+ 54 input errors, 4 CRC, 0 frame, 0 overrun, 1 ignored, 4 abort
+ 1975049 packets output, 675844616 bytes, 0 underruns
+ 0 output errors, 0 collisions, 142 interface resets, 0 restarts
+ 3 carrier transitions
+ DCD=up DSR=up DTR=up RTS=up CTS=up
+>
diff --git a/qa/cisco/Serial-1-0-min b/qa/cisco/Serial-1-0-min
new file mode 100644
index 0000000..f36f661
--- /dev/null
+++ b/qa/cisco/Serial-1-0-min
@@ -0,0 +1,26 @@
+>
+show interface
+Serial1/0 is up, line protocol is up
+ Hardware is M4T
+ Description: frame-relay using subinterfaces
+ MTU 1500 bytes, BW 64 Kbit, DLY 20000 usec, rely 255/255, load 11/255
+ Encapsulation FRAME-RELAY, loopback not set, keepalive set (10 sec)
+ LMI enq sent 10084, LMI stat recvd 9997, LMI upd recvd 0, DTE LMI up
+ LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0
+ LMI DLCI 0 LMI type is ANSI Annex D frame relay DTE
+ FR SVC disabled, LAPF state down
+ Broadcast queue 0/200, broadcasts sent/dropped 53152/0, interface broadcasts 49826
+ Last input 00:00:01, output 00:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Queueing strategy: fifo
+ Output queue 0/8, 0 drops; input queue 0/75, 0 drops
+ 5 minute input rate 3000 bits/sec, 4 packets/sec
+ 5 minute output rate 3000 bits/sec, 4 packets/sec
+ 429076 packets input, 132623595 bytes, 0 no buffer
+ Received 0 broadcasts, 0 runts, 1 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
+ 474808 packets output, 73186481 bytes, 0 underruns
+ 0 output errors, 0 collisions, 31 interface resets
+ 0 output buffer failures, 0 output buffers swapped out
+ 35 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
+>
diff --git a/qa/cisco/Serial-1-0-sec b/qa/cisco/Serial-1-0-sec
new file mode 100644
index 0000000..027cf37
--- /dev/null
+++ b/qa/cisco/Serial-1-0-sec
@@ -0,0 +1,26 @@
+>
+show interface
+Serial1/0 is up, line protocol is up
+ Hardware is M4T
+ Description: frame-relay using subinterfaces
+ MTU 1500 bytes, BW 64 Kbit, DLY 20000 usec, rely 255/255, load 31/255
+ Encapsulation FRAME-RELAY, loopback not set, keepalive set (10 sec)
+ LMI enq sent 39756, LMI stat recvd 39753, LMI upd recvd 0, DTE LMI up
+ LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0
+ LMI DLCI 0 LMI type is ANSI Annex D frame relay DTE
+ FR SVC disabled, LAPF state down
+ Broadcast queue 0/200, broadcasts sent/dropped 91696/0, interface broadcasts 85069
+ Last input 00:00:00, output 00:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Queueing strategy: fifo
+ Output queue 0/8, 0 drops; input queue 0/75, 0 drops
+ 30 second input rate 62000 bits/sec, 9 packets/sec
+ 30 second output rate 8000 bits/sec, 5 packets/sec
+ 2238005 packets input, 630502832 bytes, 0 no buffer
+ Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
+ 111 input errors, 108 CRC, 0 frame, 0 overrun, 0 ignored, 3 abort
+ 2274950 packets output, 230325061 bytes, 0 underruns
+ 0 output errors, 0 collisions, 2 interface resets
+ 0 output buffer failures, 0 output buffers swapped out
+ 3 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
+>
diff --git a/qa/cisco/Vlan-1 b/qa/cisco/Vlan-1
new file mode 100644
index 0000000..28ae692
--- /dev/null
+++ b/qa/cisco/Vlan-1
@@ -0,0 +1,28 @@
+! donated by Tore Høivaag Larsen
+
+Username:
+Password:
+
+bgo-sw20#
+show int
+Vlan1 is up, line protocol is up
+ Hardware is EtherSVI, address is ec30.91f9.0240 (bia ec30.91f9.0240)
+ MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
+ reliability 255/255, txload 1/255, rxload 1/255
+ Encapsulation ARPA, loopback not set
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input 00:00:05, output never, output hang never
+ Last clearing of "show interface" counters never
+ Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
+ Queueing strategy: fifo
+ Output queue: 0/40 (size/max)
+ 5 minute input rate 0 bits/sec, 0 packets/sec
+ 5 minute output rate 0 bits/sec, 0 packets/sec
+ 891266 packets input, 284700228 bytes, 0 no buffer
+ Received 0 broadcasts (0 IP multicasts)
+ 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 0 packets output, 0 bytes, 0 underruns
+ 0 output errors, 0 interface resets
+ 0 output buffer failures, 0 output buffers swapped out
+bgo-sw20#
diff --git a/qa/cisco/Vlan-160 b/qa/cisco/Vlan-160
new file mode 100644
index 0000000..25fd516
--- /dev/null
+++ b/qa/cisco/Vlan-160
@@ -0,0 +1,29 @@
+! donated by Tore Høivaag Larsen
+
+Username:
+Password:
+
+bgo-sw20#
+show int
+Vlan160 is up, line protocol is up
+ Hardware is EtherSVI, address is ec30.91f9.0241 (bia ec30.91f9.0241)
+ Internet address is 10.163.160.210/24
+ MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
+ reliability 255/255, txload 1/255, rxload 1/255
+ Encapsulation ARPA, loopback not set
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input 00:00:00, output 00:00:01, output hang never
+ Last clearing of "show interface" counters never
+ Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
+ Queueing strategy: fifo
+ Output queue: 0/40 (size/max)
+ 5 minute input rate 3000 bits/sec, 4 packets/sec
+ 5 minute output rate 1000 bits/sec, 2 packets/sec
+ 61717640 packets input, 5045205764 bytes, 0 no buffer
+ Received 0 broadcasts (0 IP multicasts)
+ 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 1190554 packets output, 656481017 bytes, 0 underruns
+ 0 output errors, 0 interface resets
+ 0 output buffer failures, 0 output buffers swapped out
+bgo-sw20#
diff --git a/qa/cisco/Vlan-256 b/qa/cisco/Vlan-256
new file mode 100644
index 0000000..1b68e25
--- /dev/null
+++ b/qa/cisco/Vlan-256
@@ -0,0 +1,23 @@
+>
+show int Vlan256
+Vlan256 is up, line protocol is up
+ Hardware is Cat6k RP Virtual Ethernet, address is 0030.b630.b318 (bia 0030.b630.b318)
+ Description: Uplink to CTC tipctc2 (Area 2)
+ Internet address is 192.132.156.72/26
+ MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
+ reliablility 255/255, txload 1/255, rxload 44/255
+ Encapsulation ARPA, loopback not set
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input 00:00:00, output never, output hang never
+ Last clearing of "show interface" counters never
+ Queueing strategy: fifo
+ Output queue 0/40, 2 drops; input queue 0/75, 1027 drops
+ 5 minute input rate 1754000 bits/sec, 158 packets/sec
+ 5 minute output rate 9000 bits/sec, 6 packets/sec
+ 3087365859 packets input, 816292345 bytes, 224 no buffer
+ Received 3085491728 broadcasts, 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 110141390 packets output, 3736073981 bytes, 0 underruns
+ 0 output errors, 3 interface resets
+ 0 output buffer failures, 0 output buffers swapped out
+>
diff --git a/qa/cisco/hugh-800 b/qa/cisco/hugh-800
new file mode 100644
index 0000000..f31d26e
--- /dev/null
+++ b/qa/cisco/hugh-800
@@ -0,0 +1,59 @@
+Trying 192.168.1.254...
+Connected to cisco-800.localdomain.
+Escape character is '^]'.
+
+Username: hugh
+Password:
+
+pp-adsl>
+pp-adsl>terminal length 0
+pp-adsl>show int a0
+ATM0 is down, line protocol is down
+ Hardware is PQUICC_SAR (with Alcatel ADSL Module)
+ MTU 1500 bytes, sub MTU 1500, BW 800 Kbit, DLY 80 usec,
+ reliability 0/255, txload 1/255, rxload 1/255
+ Encapsulation ATM, loopback not set
+ Encapsulation(s): AAL5 AAL2, PVC mode
+ 10 maximum active VCs, 1024 VCs per VP, 0 current VCCs
+ VC Auto Creation Disabled.
+ VC idle disconnect time: 300 seconds
+ Last input never, output never, output hang never
+ Last clearing of "show interface" counters never
+ Input queue: 0/208/0/0 (size/max/drops/flushes); Total output drops: 0
+ Queueing strategy: Per VC Queueing
+ 5 minute input rate 984 bits/sec, 0 packets/sec
+ 5 minute output rate 3648 bits/sec, 0 packets/sec
+ 0 packets input, 4242 bytes, 0 no buffer
+ Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
+ 0 packets output, 1313 bytes, 0 underruns
+ 0 output errors, 0 collisions, 1 interface resets
+ 0 output buffer failures, 0 output buffers swapped out
+pp-adsl>show int e0
+Ethernet0 is up, line protocol is up
+ Hardware is PQUICC Ethernet, address is 0004.27fd.74d7 (bia 0004.27fd.74d7)
+ Description: *** Private LAN ***
+ Internet address is 192.168.1.254/24
+ MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
+ reliability 255/255, txload 1/255, rxload 1/255
+ Encapsulation ARPA, loopback not set
+ Keepalive set (10 sec)
+ Half-duplex, 10Mb/s
+ ARP type: ARPA, ARP Timeout 04:00:00
+ Last input 00:00:00, output 00:00:00, output hang never
+ Last clearing of "show interface" counters never
+ Input queue: 1/32/0/0 (size/max/drops/flushes); Total output drops: 0
+ Queueing strategy: fifo
+ Output queue: 0/100 (size/max)
+ 5 minute input rate 1000 bits/sec, 1 packets/sec
+ 5 minute output rate 2000 bits/sec, 2 packets/sec
+ 27856 packets input, 2802084 bytes, 0 no buffer
+ Received 7060 broadcasts, 0 runts, 0 giants, 0 throttles
+ 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
+ 0 input packets with dribble condition detected
+ 32011 packets output, 1969425 bytes, 0 underruns
+ 0 output errors, 1 collisions, 0 interface resets
+ 0 babbles, 0 late collision, 3 deferred
+ 0 lost carrier, 0 no carrier
+ 0 output buffer failures, 0 output buffers swapped out
+pp-adsl>quit
diff --git a/qa/collectl/GNUmakefile b/qa/collectl/GNUmakefile
new file mode 100644
index 0000000..e61d3a0
--- /dev/null
+++ b/qa/collectl/GNUmakefile
@@ -0,0 +1,17 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/collectl
+
+RAWFILES = $(shell echo *.raw)
+BIGFILES = $(shell echo *.raw.gz)
+
+LSRCFILES = $(RAWFILES) $(BIGFILES)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(RAWFILES) $(BIGFILES) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/collectl/debian_sid_defaults.raw.gz b/qa/collectl/debian_sid_defaults.raw.gz
new file mode 100644
index 0000000..90281ac
--- /dev/null
+++ b/qa/collectl/debian_sid_defaults.raw.gz
Binary files differ
diff --git a/qa/collectl/debian_sid_detailed.raw.gz b/qa/collectl/debian_sid_detailed.raw.gz
new file mode 100644
index 0000000..325431e
--- /dev/null
+++ b/qa/collectl/debian_sid_detailed.raw.gz
Binary files differ
diff --git a/qa/collectl/dynamic_instances.raw b/qa/collectl/dynamic_instances.raw
new file mode 100644
index 0000000..55a5a19
--- /dev/null
+++ b/qa/collectl/dynamic_instances.raw
@@ -0,0 +1,40 @@
+################################################################################
+# Collectl: V3.6.3-2 HiRes: 1 Options: -D
+# Host: somehost DaemonOpts: -f /var/log/collectl -r00:00,7 -m -F60 -s+YZ
+# Distro: Fedora release 15 (Lovelock) Platform: 4243BQ3
+# Date: 20130509-151203 Secs: 1368076323 TZ: +1000
+# SubSys: bcdfijmnstYZ Options: Interval: 10:60 NumCPUs: 4 [HYPER] NumBud: 3 Flags: ix
+# Filters: NfsFilt: EnvFilt:
+# HZ: 100 Arch: x86_64-linux-thread-multi PageSize: 4096
+# Cpu: GenuineIntel Speed(MHz): 2801.000 Cores: 2 Siblings: 4 Nodes: 1
+# Kernel: 2.6.43.8-1.fc15.x86_64 Memory: 8059036 kB Swap: 8191996 kB
+# NumDisks: 5 DiskNames: sda dm-0 dm-1 dm-2 sdb
+# NumNets: 5 NetNames: em1: lo: virbr0: wlan1: tun0:
+# NumSlabs: 110 Version: 2.1
+# SCSI: DA:0:00:00:00 CD:1:00:00:00 DA:45:00:00:00
+################################################################################
+>>> 1368076380.001 <<<
+buddy Node 0, zone DMA 0 0 1 0 2 1 1 0 1 1 3
+buddy Node 0, zone DMA32 4699 2759 1239 1183 1120 701 370 122 20 1 0
+buddy Node 0, zone Normal 11964 6 4 255 13 0 0 0 0 0 0
+cpu 66056578 4079 13437064 575690241 4513586 1463897 1701791 0 28602 0
+cpu0 24488595 2578 3862828 132668410 2807446 852693 928381 0 28602 0
+cpu1 9013725 274 2942727 152664595 372285 151221 587016 0 0 0
+cpu2 24707653 908 3751001 135711218 1049520 327219 116856 0 0 0
+cpu3 7846603 318 2880506 154646017 284333 132762 69536 0 0 0
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912176 5603463 382020192 181762487 0 53315746 240138520
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065785 0 30744632 30452662 0 10343959 42486043
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181601 0 343270096 583962290 0 44222818 629197479
+disk 253 3 dm-3 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+>>> 1368076390.001 <<<
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912190 5603474 382020376 181762699 0 53315955 240138732
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065788 0 30744656 30452728 0 10344025 42486109
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 4 dm-4 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 5 dm-5 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+disk 253 6 dm-6 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+load 1.08 1.19 1.30 2/658 4944
diff --git a/qa/collectl/missing_instances.raw b/qa/collectl/missing_instances.raw
new file mode 100644
index 0000000..b499e1b
--- /dev/null
+++ b/qa/collectl/missing_instances.raw
@@ -0,0 +1,38 @@
+################################################################################
+# Collectl: V3.6.3-2 HiRes: 1 Options: -D
+# Host: somehost DaemonOpts: -f /var/log/collectl -r00:00,7 -m -F60 -s+YZ
+# Distro: Fedora release 15 (Lovelock) Platform: 4243BQ3
+# Date: 20130509-151203 Secs: 1368076323 TZ: +1000
+# SubSys: bcdfijmnstYZ Options: Interval: 10:60 NumCPUs: 4 [HYPER] NumBud: 3 Flags: ix
+# Filters: NfsFilt: EnvFilt:
+# HZ: 100 Arch: x86_64-linux-thread-multi PageSize: 4096
+# Cpu: GenuineIntel Speed(MHz): 2801.000 Cores: 2 Siblings: 4 Nodes: 1
+# Kernel: 2.6.43.8-1.fc15.x86_64 Memory: 8059036 kB Swap: 8191996 kB
+# NumDisks: 5 DiskNames: sda dm-0 dm-1 dm-2 sdb
+# NumNets: 5 NetNames: em1: lo: virbr0: wlan1: tun0:
+# NumSlabs: 110 Version: 2.1
+# SCSI: DA:0:00:00:00 CD:1:00:00:00 DA:45:00:00:00
+################################################################################
+>>> 1368076380.001 <<<
+buddy Node 0, zone DMA 0 0 1 0 2 1 1 0 1 1 3
+buddy Node 0, zone DMA32 4699 2759 1239 1183 1120 701 370 122 20 1 0
+buddy Node 0, zone Normal 11964 6 4 255 13 0 0 0 0 0 0
+cpu 66056578 4079 13437064 575690241 4513586 1463897 1701791 0 28602 0
+cpu0 24488595 2578 3862828 132668410 2807446 852693 928381 0 28602 0
+cpu1 9013725 274 2942727 152664595 372285 151221 587016 0 0 0
+cpu2 24707653 908 3751001 135711218 1049520 327219 116856 0 0 0
+cpu3 7846603 318 2880506 154646017 284333 132762 69536 0 0 0
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912176 5603463 382020192 181762487 0 53315746 240138520
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065785 0 30744632 30452662 0 10343959 42486043
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181601 0 343270096 583962290 0 44222818 629197479
+disk 253 3 dm-3 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+>>> 1368076390.001 <<<
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912190 5603474 382020376 181762699 0 53315955 240138732
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 4 dm-4 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 5 dm-5 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+disk 253 6 dm-6 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+load 1.08 1.19 1.30 2/658 4944
diff --git a/qa/collectl/rhel6.raw.gz b/qa/collectl/rhel6.raw.gz
new file mode 100644
index 0000000..ac31056
--- /dev/null
+++ b/qa/collectl/rhel6.raw.gz
Binary files differ
diff --git a/qa/collectl/some_host.raw b/qa/collectl/some_host.raw
new file mode 100644
index 0000000..cf1ffd6
--- /dev/null
+++ b/qa/collectl/some_host.raw
@@ -0,0 +1,43 @@
+################################################################################
+# Collectl: V3.6.3-2 HiRes: 1 Options: -D
+# Host: somehost DaemonOpts: -f /var/log/collectl -r00:00,7 -m -F60 -s+YZ
+# Distro: Fedora release 15 (Lovelock) Platform: 4243BQ3
+# Date: 20130509-151203 Secs: 1368076323 TZ: +1000
+# SubSys: bcdfijmnstYZ Options: Interval: 10:60 NumCPUs: 4 [HYPER] NumBud: 3 Flags: ix
+# Filters: NfsFilt: EnvFilt:
+# HZ: 100 Arch: x86_64-linux-thread-multi PageSize: 4096
+# Cpu: GenuineIntel Speed(MHz): 2801.000 Cores: 2 Siblings: 4 Nodes: 1
+# Kernel: 2.6.43.8-1.fc15.x86_64 Memory: 8059036 kB Swap: 8191996 kB
+# NumDisks: 5 DiskNames: sda dm-0 dm-1 dm-2 sdb
+# NumNets: 5 NetNames: em1: lo: virbr0: wlan1: tun0:
+# NumSlabs: 110 Version: 2.1
+# SCSI: DA:0:00:00:00 CD:1:00:00:00 DA:45:00:00:00
+################################################################################
+>>> 1368076380.001 <<<
+buddy Node 0, zone DMA 0 0 1 0 2 1 1 0 1 1 3
+buddy Node 0, zone DMA32 4699 2759 1239 1183 1120 701 370 122 20 1 0
+buddy Node 0, zone Normal 11964 6 4 255 13 0 0 0 0 0 0
+cpu 66056578 4079 13437064 575690241 4513586 1463897 1701791 0 28602 0
+cpu0 24488595 2578 3862828 132668410 2807446 852693 928381 0 28602 0
+cpu1 9013725 274 2942727 152664595 372285 151221 587016 0 0 0
+cpu2 24707653 908 3751001 135711218 1049520 327219 116856 0 0 0
+cpu3 7846603 318 2880506 154646017 284333 132762 69536 0 0 0
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912176 5603463 382020192 181762487 0 53315746 240138520
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065785 0 30744632 30452662 0 10343959 42486043
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181601 0 343270096 583962290 0 44222818 629197479
+disk 253 3 dm-3 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+>>> 1368076390.001 <<<
+cpu 66056579 4079 13437064 575690241 4513586 1463897 1701791 0 28602 0
+cpu0 24488596 2578 3862828 132668410 2807446 852693 928381 0 28602 0
+cpu1 9013726 274 2942727 152664595 372285 151221 587016 0 0 0
+cpu2 24707654 908 3751001 135711218 1049520 327219 116856 0 0 0
+cpu3 7846604 318 2880506 154646017 284333 132762 69536 0 0 0
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912190 5603474 382020376 181762699 0 53315955 240138732
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065788 0 30744656 30452728 0 10344025 42486109
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 3 dm-3 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+load 1.08 1.19 1.30 2/658 4944
diff --git a/qa/collectl/some_host_later.raw b/qa/collectl/some_host_later.raw
new file mode 100644
index 0000000..d35bc15
--- /dev/null
+++ b/qa/collectl/some_host_later.raw
@@ -0,0 +1,40 @@
+################################################################################
+# Collectl: V3.6.3-2 HiRes: 1 Options: -D
+# Host: somehost DaemonOpts: -f /var/log/collectl -r00:00,7 -m -F60 -s+YZ
+# Distro: Fedora release 15 (Lovelock) Platform: 4243BQ3
+# Date: 20130510-151203 Secs: 1378076323 TZ: +1000
+# SubSys: bcdfijmnstYZ Options: Interval: 10:60 NumCPUs: 4 [HYPER] NumBud: 3 Flags: ix
+# Filters: NfsFilt: EnvFilt:
+# HZ: 100 Arch: x86_64-linux-thread-multi PageSize: 4096
+# Cpu: GenuineIntel Speed(MHz): 2801.000 Cores: 2 Siblings: 4 Nodes: 1
+# Kernel: 2.6.43.8-1.fc15.x86_64 Memory: 8059036 kB Swap: 8191996 kB
+# NumDisks: 5 DiskNames: sda dm-0 dm-1 dm-2 sdb
+# NumNets: 5 NetNames: em1: lo: virbr0: wlan1: tun0:
+# NumSlabs: 110 Version: 2.1
+# SCSI: DA:0:00:00:00 CD:1:00:00:00 DA:45:00:00:00
+################################################################################
+>>> 1378076380.001 <<<
+buddy Node 0, zone DMA 0 0 1 0 2 1 1 0 1 1 3
+buddy Node 0, zone DMA32 4699 2759 1239 1183 1120 701 370 122 20 1 0
+buddy Node 0, zone Normal 11964 6 4 255 13 0 0 0 0 0 0
+cpu 66056578 4079 13437064 575690241 4513586 1463897 1701791 0 28602 0
+cpu0 24488595 2578 3862828 132668410 2807446 852693 928381 0 28602 0
+cpu1 9013725 274 2942727 152664595 372285 151221 587016 0 0 0
+cpu2 24707653 908 3751001 135711218 1049520 327219 116856 0 0 0
+cpu3 7846603 318 2880506 154646017 284333 132762 69536 0 0 0
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912176 5603463 382020192 181762487 0 53315746 240138520
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065785 0 30744632 30452662 0 10343959 42486043
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181601 0 343270096 583962290 0 44222818 629197479
+disk 253 3 dm-3 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+>>> 1378076390.001 <<<
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912190 5603474 382020376 181762699 0 53315955 240138732
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065788 0 30744656 30452728 0 10344025 42486109
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 4 dm-4 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 5 dm-5 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+disk 253 6 dm-6 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+load 1.08 1.19 1.30 2/658 4944
diff --git a/qa/collectl/truncated.raw b/qa/collectl/truncated.raw
new file mode 100644
index 0000000..50ccce0
--- /dev/null
+++ b/qa/collectl/truncated.raw
@@ -0,0 +1,38 @@
+################################################################################
+# Collectl: V3.6.3-2 HiRes: 1 Options: -D
+# Host: somehost DaemonOpts: -f /var/log/collectl -r00:00,7 -m -F60 -s+YZ
+# Distro: Fedora release 15 (Lovelock) Platform: 4243BQ3
+# Date: 20130509-151203 Secs: 1368076323 TZ: +1000
+# SubSys: bcdfijmnstYZ Options: Interval: 10:60 NumCPUs: 4 [HYPER] NumBud: 3 Flags: ix
+# Filters: NfsFilt: EnvFilt:
+# HZ: 100 Arch: x86_64-linux-thread-multi PageSize: 4096
+# Cpu: GenuineIntel Speed(MHz): 2801.000 Cores: 2 Siblings: 4 Nodes: 1
+# Kernel: 2.6.43.8-1.fc15.x86_64 Memory: 8059036 kB Swap: 8191996 kB
+# NumDisks: 5 DiskNames: sda dm-0 dm-1 dm-2 sdb
+# NumNets: 5 NetNames: em1: lo: virbr0: wlan1: tun0:
+# NumSlabs: 110 Version: 2.1
+# SCSI: DA:0:00:00:00 CD:1:00:00:00 DA:45:00:00:00
+################################################################################
+>>> 1368076380.001 <<<
+buddy Node 0, zone DMA 0 0 1 0 2 1 1 0 1 1 3
+buddy Node 0, zone DMA32 4699 2759 1239 1183 1120 701 370 122 20 1 0
+buddy Node 0, zone Normal 11964 6 4 255 13 0 0 0 0 0 0
+cpu 66056578 4079 13437064 575690241 4513586 1463897 1701791 0 28602 0
+cpu0 24488595 2578
+cpu1 9013725 274 2942727 152664595 372285 151221 587016 0 0 0
+cpu2 24707653 908 3751001 135711218 1049520 327219 116856 0 0 0
+cpu3 7846603 318 2880506 154646017 284333 132762 69536 0 0 0
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912176 5603463 382020192 181762487 0 53315746 240138520
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065785 0 30744632 30452662 0 10343959 42486043
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181601 0 343270096 583962290 0 44222818 629197479
+disk 253 3 dm-3 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+>>> 1368076390.001 <<<
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912190 5603474 382020376 181762699 0 53315955 240138732
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 4 dm-4
+disk 253 5 dm-5 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+disk 253 6 dm-6 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+load 1.08 1.19 somecrap
diff --git a/qa/collectl/wrong_host.raw b/qa/collectl/wrong_host.raw
new file mode 100644
index 0000000..85329bd
--- /dev/null
+++ b/qa/collectl/wrong_host.raw
@@ -0,0 +1,40 @@
+################################################################################
+# Collectl: V3.6.3-2 HiRes: 1 Options: -D
+# Host: wronghost DaemonOpts: -f /var/log/collectl -r00:00,7 -m -F60 -s+YZ
+# Distro: Fedora release 15 (Lovelock) Platform: 4243BQ3
+# Date: 20130509-151203 Secs: 1368076323 TZ: +1000
+# SubSys: bcdfijmnstYZ Options: Interval: 10:60 NumCPUs: 4 [HYPER] NumBud: 3 Flags: ix
+# Filters: NfsFilt: EnvFilt:
+# HZ: 100 Arch: x86_64-linux-thread-multi PageSize: 4096
+# Cpu: GenuineIntel Speed(MHz): 2801.000 Cores: 2 Siblings: 4 Nodes: 1
+# Kernel: 2.6.43.8-1.fc15.x86_64 Memory: 8059036 kB Swap: 8191996 kB
+# NumDisks: 5 DiskNames: sda dm-0 dm-1 dm-2 sdb
+# NumNets: 5 NetNames: em1: lo: virbr0: wlan1: tun0:
+# NumSlabs: 110 Version: 2.1
+# SCSI: DA:0:00:00:00 CD:1:00:00:00 DA:45:00:00:00
+################################################################################
+>>> 1368076380.001 <<<
+buddy Node 0, zone DMA 0 0 1 0 2 1 1 0 1 1 3
+buddy Node 0, zone DMA32 4699 2759 1239 1183 1120 701 370 122 20 1 0
+buddy Node 0, zone Normal 11964 6 4 255 13 0 0 0 0 0 0
+cpu 66056578 4079 13437064 575690241 4513586 1463897 1701791 0 28602 0
+cpu0 24488595 2578 3862828 132668410 2807446 852693 928381 0 28602 0
+cpu1 9013725 274 2942727 152664595 372285 151221 587016 0 0 0
+cpu2 24707653 908 3751001 135711218 1049520 327219 116856 0 0 0
+cpu3 7846603 318 2880506 154646017 284333 132762 69536 0 0 0
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912176 5603463 382020192 181762487 0 53315746 240138520
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065785 0 30744632 30452662 0 10343959 42486043
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181601 0 343270096 583962290 0 44222818 629197479
+disk 253 3 dm-3 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+>>> 1368076390.001 <<<
+disk 8 0 sda 13911739 267073 1248592592 58081804 4912190 5603474 382020376 181762699 0 53315955 240138732
+disk 253 0 dm-0 719598 0 5756784 7528566 1000667 0 8005336 79745372 0 1433788 87559095
+disk 253 1 dm-1 2055386 0 118779300 12033276 1065788 0 30744656 30452728 0 10344025 42486109
+disk 253 2 dm-2 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 4 dm-4 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 253 5 dm-5 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+disk 8 16 sdb 0 0 0 0 0 0 0 0 0 0 0
+disk 253 6 dm-6 11405437 0 1123902160 45227468 8181621 0 343270256 583962446 0 44222961 629197635
+load 1.08 1.19 1.30 2/658 4944
diff --git a/qa/common b/qa/common
new file mode 100755
index 0000000..9ef32f2
--- /dev/null
+++ b/qa/common
@@ -0,0 +1,761 @@
+#!/bin/sh
+#
+# common procedures for PCP QA scripts
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# for _wait_for_pmlogger() and _change_config()
+. ./common.check
+
+# per product QA script customization
+#
+. ./common.setup
+[ -z "$DEFAULT_HOST" ] && DEFAULT_HOST=`hostname`
+
+_setenvironment()
+{
+ MSGVERB="text:action"
+ export MSGVERB
+ export PCP_BINADM_DIR
+}
+
+_log_fyi()
+{
+ echo "FYI ... here are the PMCD logs"
+ for log
+ do
+ if [ ! -f $log ]
+ then
+ # try in the other place
+ #
+ case $log
+ in
+ $PCP_LOG_DIR/pmcd/*)
+ __try=`echo $log | sed -e "s;/pmcd/;/;"`
+ ;;
+ *)
+ __try=`echo $log | sed -e "s;$PCP_LOG_DIR/;$PCP_LOG_DIR/pmcd/;"`
+ ;;
+ esac
+ [ -f $__try ] && log=$__try
+ fi
+ if [ -f $log ]
+ then
+ echo "::::::::: start $log ::::::::"
+ cat $log
+ echo ":::::::::: end $log :::::::::"
+
+ [ $log != $PCP_LOG_DIR/pmcd/pmcd.log ] && $sudo rm -f $log
+ else
+ echo "$log: not found"
+ fi
+ done
+}
+
+_havesudo()
+{
+ if [ -z "$PCP_DIR" ]
+ then
+ setuid=`$sudo id | sed -e 's/(.*//' -e 's/.*=//'`
+ if [ "$setuid" != 0 ]
+ then
+ echo "\"sudo\" is not an executable setuid root. This is fatal."
+ echo "As root, you need to setup your sudoers file for pcpqa."
+ exit 1
+ fi
+ fi
+}
+
+_haveagents()
+{
+ restart=false
+ here=`pwd`
+
+ # PMDAs than need to be here for QA
+ #
+ COMMON_PMDAS="sample sampledso simple"
+ if [ -d $PCP_PMDAS_DIR/cisco ]
+ then
+ # cisco PMDA requires that you can reach a router
+ #
+ if which ping >/dev/null 2>&1
+ then
+ # Note: PCP_QA_CISCOROUTER needs to be defined in common.rc
+ if ping -c 1 $PCP_QA_CISCOROUTER >/dev/null 2>&1
+ then
+ COMMON_PMDAS="$COMMON_PMDAS cisco"
+ fi
+ fi
+ fi
+
+ for agent in $COMMON_PMDAS
+ do
+ probe=$agent
+ agentlog=$PCP_LOG_DIR/pmcd/$agent.log
+
+ # make this empty to stop any attempt to reinstall
+ #
+ agentdir=$PCP_PMDAS_DIR/$agent
+
+ case $agent
+ in
+ cisco)
+ probe=cisco.bytes_in
+ ;;
+ sample)
+ probe=sample.milliseconds
+ ;;
+ sampledso)
+ probe=sampledso.milliseconds
+ agentdir=$PCP_PMDAS_DIR/sample
+ ;;
+ simple)
+ probe=simple.numfetch
+ ;;
+ weblog)
+ probe=web.allservers.numalive
+ ;;
+ webping)
+ probe=webping.count
+ ;;
+ oracle)
+ eval "probe=oracle.$ORACLE_SID.version"
+ eval "agentlog=$PCP_LOG_DIR/pmcd/oracle-$ORACLE_SID.log"
+ agentdir=''
+ ;;
+ oraping)
+ probe=oraping.control.count
+ ;;
+ esac
+ reinstall=false
+ while true
+ do
+ [ $diff = true ] || echo "PMDA probe: pminfo -h $QA_HOST -f $probe"
+ if pminfo -h $QA_HOST -f $probe 2>&1 \
+ | tail -1 \
+ | egrep "^[ ]*((value)|(inst))[ ]" >/dev/null
+ then
+ break
+ else
+ echo "PMDA $agent is not responding"
+ if $restart
+ then
+ :
+ else
+ _log_fyi $PCP_LOG_DIR/pmcd/pmcd.log $agentlog
+ echo "Restarting PMCD ..."
+ $sudo $PCP_RC_DIR/pcp restart
+ restart=true
+ fi
+ if $reinstall
+ then
+ [ -f $here/$iam.out ] && cat $here/$iam.out
+ echo "Cannot make PMDA $agent work, ... giving up!"
+ exit 1
+ else
+ if [ -z "$agentdir" ]
+ then
+ echo "Skip PMDA re-install"
+ break
+ elif [ -d "$agentdir" ]
+ then
+ echo "Trying to re-install PMDA $agent from $agentdir ..."
+ _log_fyi $PCP_LOG_DIR/pmcd/pmcd.log $agentlog
+ cd $agentdir
+ unset ROOT TOOLROOT MAKEFLAGS
+ $sudo ./Remove </dev/null >>$here/$iam.out
+ case $agent
+ in
+ cisco)
+ cd $here
+ ./common.install.cisco $iam $agentdir
+ ;;
+ *)
+ $sudo ./Install </dev/null >>$here/$iam.out
+ ;;
+ esac
+ cd $here
+ reinstall=true
+ else
+ echo "Cannot find PMDA directory ($agentdir)"
+ echo "to re-install, ... giving up!"
+ exit 1
+ fi
+ fi
+ fi
+ done
+ done
+}
+
+_havelogger()
+{
+ if [ -z "`_get_pids_by_name 'pmlogger.*-P'`" ]
+ then
+ echo "Primary pmlogger not running ..."
+ echo "chkconfig pmlogger on, and restart PMCD"
+ _change_config pmlogger on
+ [ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control"
+ if sed -e '/^#/d' "$PCP_PMLOGGERCONTROL_PATH" \
+ | $PCP_AWK_PROG '$2 == "y" && $3 == "n" { sts=1 } END { exit 1-sts }'
+ then
+ : echo "have primary pmlogger line in control file"
+ else
+ : echo "no primary pmlogger line in control file"
+ if $PCP_AWK_PROG '$2 == "y" && $3 == "n" { sts=1} END { exit 1-sts }' <$PCP_PMLOGGERCONTROL_PATH
+ then
+ : echo uncomment
+ sed <$PCP_PMLOGGERCONTROL_PATH >$tmp.tmp \
+ -e '/^#[^ ][^ ]*[ ][ ]*y/s/#//'
+ $sudo cp $tmp.tmp $PCP_PMLOGGERCONTROL_PATH
+ else
+ : echo add
+ cp $PCP_PMLOGGERCONTROL_PATH $tmp.tmp
+ if [ -e $PCP_LOG_DIR/pmlogger ]
+ then
+ cat >>$tmp.tmp <<'End-of-File'
+
+# added by PCP QA
+LOCALHOSTNAME y n PCP_LOG_DIR/pmlogger/LOCALHOSTNAME -c config.default
+End-of-File
+ else
+ cat >>$tmp.tmp <<'End-of-File'
+
+# added by PCP QA
+LOCALHOSTNAME y n PCP_LOG_DIR/LOCALHOSTNAME -c config.default
+End-of-File
+ fi
+ $sudo cp $tmp.tmp $PCP_PMLOGGERCONTROL_PATH
+ fi
+ fi
+ $sudo $PCP_RC_DIR/pcp restart
+ _wait_for_pmlogger
+ fi
+}
+
+_havepmcdtrace()
+{
+ fix=false
+ for trace in traceconn tracepdu
+ do
+ bit=`pminfo -h $QA_HOST -f pmcd.control.$trace | sed -n -e '/value/s/ *value *//p'`
+ if [ "X$bit" != X1 ]
+ then
+ pminfo -h $QA_HOST -f pmcd.control.$trace
+ echo "PMCD event tracing not enabled!"
+ fix=true
+ fi
+ done
+ if $fix
+ then
+ echo "fix options, and restart PMCD"
+ [ -z "PCP_PMCDOPTIONS_PATH" ] && \
+ PCP_PMCDOPTIONS_PATH="$PCP_SYSCONF_DIR/pmcd/pmcd.options"
+ PCPQA_PMCDOPTIONS="$PCP_PMCDOPTIONS_PATH"
+ sed <$PCPQA_PMCDOPTIONS >$tmp.tmp -e '/^-T/s/^/#/'
+ cat >>$tmp.tmp <<'End-of-File'
+
+# added by PCP QA
+-T 3
+End-of-File
+ $sudo cp $tmp.tmp $PCPQA_PMCDOPTIONS
+ $sudo $PCP_RC_DIR/pcp restart
+ _wait_for_pmlogger
+ fi
+
+}
+
+here=`pwd`
+rm -f $here/$iam.out
+_setenvironment
+
+check=${check-true}
+quick=${quick-false}
+
+# Try and guess what "make" is called ... configure leaves a comment
+# like this
+#NB: don't override $(MAKE); gnumake sets it well, propagating -j etc.
+#MAKE = /usr/local/bin/gmake
+# in builddefs, so try there ...
+#
+if [ -f $PCP_INC_DIR/builddefs ]
+then
+ make=`sed <$PCP_INC_DIR/builddefs -n -e '/^#NB: don.t override \$(MAKE);/{
+N
+s/.*MAKE[ ]*=[ ]*//p
+}'`
+ [ -n "$make" ] && export MAKE=$make
+fi
+
+if $check
+then
+ if $quick
+ then
+ :
+ else
+ if [ -f GNUmakefile.install ]
+ then
+ # running QA in the tree
+ ${MAKE:-make} -f GNUmakefile.install >/tmp/$$.make 2>&1
+ ( cd qt; ./setup-executables )
+ else
+ ${MAKE:-make} >/tmp/$$.make 2>&1
+ fi
+ if [ $? != 0 ]
+ then
+ cat /tmp/$$.make
+ echo "Warning: ${MAKE:-make} failed -- some tests may be missing"
+ warn=1
+ fi
+ rm -f /tmp/$$.make
+ fi
+fi
+
+diff=diff
+if [ ! -z "$DISPLAY" ]
+then
+ which tkdiff >/dev/null 2>&1 && diff=tkdiff
+ which xdiff >/dev/null 2>&1 && diff=xdiff
+ which xxdiff >/dev/null 2>&1 && diff=xxdiff
+ which gdiff >/dev/null 2>&1 && diff=gdiff
+fi
+
+color=false
+verbose=false
+paranoid=false
+group=false
+xgroup=false
+rflag=false
+selbygroup=false
+snarf=''
+showme=false
+sortme=false
+have_test_arg=false
+check_config=false
+rm -f $tmp.list $tmp.tmp $tmp.sed
+
+for r
+do
+
+ if $group
+ then
+ selbygroup=true
+
+ # arg after -g
+ group_list=`
+ if $rflag
+ then
+ sed -e 's/\([0-9]\):\(retired\|reserved\) /\1 /' <group
+ else
+ sed -e '/[0-9]:\(retired\|reserved\) /d' <group
+ fi \
+ | sed -n -e 's/$/ /' -e "/^[0-9][0-9]*.* $r /"'{
+s/ .*//p
+}'`
+ if [ -z "$group_list" ]
+ then
+ echo "Group \"$r\" is empty or not defined; ignored" >&2
+ else
+ [ ! -s $tmp.list ] && touch $tmp.list
+ for t in $group_list
+ do
+ if grep -s "^$t\$" $tmp.list >/dev/null
+ then
+ :
+ else
+ echo "$t" >>$tmp.list
+ fi
+ done
+ fi
+ group=false
+ continue
+
+ elif $xgroup
+ then
+ selbygroup=true
+
+ # if no test numbers, do everything from group file
+ [ -s $tmp.list ] || \
+ if $rflag
+ then
+ sed -e 's/\([0-9]\):\(retired\|reserved\) /\1 /' <group
+ else
+ sed -e '/[0-9]:\(retired\|reserved\) /d' <group
+ fi \
+ | sed -n -e '/^[0-9]/s/[ ].*//p' >$tmp.list
+
+ # arg after -x
+ group_list=`
+ if $rflag
+ then
+ sed -e 's/\([0-9]\):\(retired\|reserved\) /\1 /' <group
+ else
+ sed -e '/[0-9]:\(retired\|reserved\) /d' <group
+ fi \
+ | sed -n \
+ -e "/^[0-9].* $r /s/[ ].*//p" \
+ -e "/^[0-9].* $r\$/s/[ ].*//p"`
+ if [ -z "$group_list" ]
+ then
+ echo "Group \"$r\" is empty or not defined; ignored" >&2
+ else
+ numsed=0
+ rm -f $tmp.sed
+ for t in $group_list
+ do
+ if [ $numsed -gt 100 ]
+ then
+ sed -f $tmp.sed <$tmp.list >$tmp.tmp
+ mv $tmp.tmp $tmp.list
+ numsed=0
+ rm -f $tmp.sed
+ fi
+ echo "/^$t\$/d" >>$tmp.sed
+ numsed=`expr $numsed + 1`
+ done
+ sed -f $tmp.sed <$tmp.list >$tmp.tmp
+ mv $tmp.tmp $tmp.list
+ fi
+ xgroup=false
+ continue
+
+ elif [ ! -z "$snarf" ]
+ then
+ case $snarf
+ in
+ d)
+ QA_DIR=$r
+ ;;
+ h)
+ QA_HOST=$r
+ ;;
+ u)
+ QA_USER=$r
+ ;;
+ esac
+ snarf=''
+ continue
+ fi
+
+ xpand=true
+ range=false
+ case "$r"
+ in
+
+ -\?) # usage
+ echo "Usage: $0 [options] [testlist]"'
+
+common options
+ -v verbose
+
+check options
+ -c check configuration files [off]
+ -C color mode output [off]
+ -g group include tests from these groups (multiple flags allowed)
+ -G report groups and number of tests per group
+ -l line mode diff [xdiff]
+ -s sssh mode diff [no diff, regular output]
+ -n show me, do not run tests
+ -q quick, no PMDA checks (you are on your own)
+ -r include reserved and retired tests
+ -t turn on tracing
+ -T output timestamps
+ -x group exclude tests from these groups (multiple flags allowed)
+
+show-me options
+ -d QA_DIR [isms/pcp2.0/qa]
+ -h QA_HOST ['`hostname`']
+ -u QA_USER [pcpqa]
+'
+ exit 0
+ ;;
+
+ -c) # check config files
+ check_config=true
+ xpand=false
+ ;;
+
+ -C) # color mode for results and summaries
+ color=true
+ xpand=false
+ ;;
+
+ -d) # directory for show-me
+ snarf=d
+ xpand=false
+ ;;
+
+ -G) # -G report groups and number of tests per group
+ sed -n -e '/^[a-z]/{
+s/[ ].*//
+p
+}' <group >$tmp.group
+ cat $tmp.group
+ echo ===
+ LC_COLLATE=POSIX sort $tmp.group \
+ | while read group
+ do
+ num=`
+ if $rflag
+ then
+ sed -e 's/\([0-9]\):\(retired\|reserved\) /\1 /' <group
+ else
+ sed -e '/[0-9]:\(retired\|reserved\) /d' <group
+ fi \
+ | egrep "^[0-9].*[ ]$group([ ]|$)" \
+ | wc -l \
+ | sed -e 's/ //g'`
+ printf "%-20.20s %3d\n" $group $num
+ done
+ exit 0
+ ;;
+
+ -g) # -g group ... pick from group file
+ group=true
+ xpand=false
+ ;;
+
+ -h) # host for show-me
+ snarf=h
+ xpand=false
+ ;;
+
+ -l) # line mode for diff, not gdiff over modems
+ diff=diff
+ xpand=false
+ ;;
+
+ -n) # show me, don't do it
+ showme=true
+ quick=true
+ xpand=false
+ ;;
+
+ -q) # "quick", no PMDA checks (you are on your own)
+ quick=true
+ xpand=false
+ ;;
+
+ -r) # include reserved and retired tests
+ rflag=true
+ xpand=false
+ ;;
+
+ -s) # sssh mode for diff, no diff at all
+ diff=true
+ xpand=false
+ ;;
+
+ -t) # turn on tracing
+ qatrace=true
+ xpand=false
+ ;;
+
+ -T) # turn on timestamp output
+ timestamp=true
+ xpand=false
+ ;;
+
+ -u) # user for show-me
+ snarf=u
+ xpand=false
+ ;;
+
+ -v)
+ verbose=true
+ xpand=false
+ ;;
+
+ -x) # -x group ... exclude from group file
+ xgroup=true
+ xpand=false
+ ;;
+
+ '[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
+ echo "No tests?" >&2
+ status=1
+ exit $status
+ ;;
+
+ [0-9]*-[0-9]*)
+ eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
+ range=true
+ ;;
+
+ [0-9]*-)
+ eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
+ end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/ *$//' -e 's/.* //'`
+ if [ -z "$end" ]
+ then
+ echo "No tests in range \"$r\"?" >&2
+ status=1
+ exit $status
+ fi
+ range=true
+ ;;
+
+ *)
+ start=$r
+ end=$r
+ ;;
+
+ esac
+
+ if $xpand
+ then
+ start=`echo $start | sed -e 's/^0*\(.\)/\1/'`
+ end=`echo $end | sed -e 's/^0*\(.\)/\1/'`
+ have_test_arg=true
+ if $rflag
+ then
+ sed -e 's/\([0-9]\):\(retired\|reserved\) /\1 /' <group
+ else
+ sed -e '/[0-9]:\(retired\|reserved\) /d' <group
+ fi >$tmp.group
+ $PCP_AWK_PROG </dev/null '
+BEGIN { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
+ | while read id
+ do
+ # if test not present, silently forget about it
+ [ -f $id ] || continue
+ if egrep -s "^$id([ ]|$)" $tmp.group >/dev/null
+ then
+ # in group file ... OK
+ echo $id >>$tmp.list
+ elif egrep -s "^$id:retired([ ]|$)" group >/dev/null
+ then
+ # in group file, but retired
+ echo "$id - retired test, ignored"
+ elif egrep -s "^$id:reserved([ ]|$)" group >/dev/null
+ then
+ # in group file, but reserved
+ echo "$id - reserved test, ignored"
+ else
+ # oops
+ $range || echo "$id - unknown test, ignored"
+ fi
+ done
+ fi
+
+done
+
+if [ -s $tmp.list ]
+then
+ # found some valid test numbers ... this is good
+ :
+else
+ if $have_test_arg
+ then
+ # had test numbers, but none in group file ... do nothing
+ touch $tmp.list
+ else
+ if $selbygroup
+ then
+ echo "No tests selected?" >&2
+ exit 1
+ else
+ # no test numbers, do everything from group file
+ touch $tmp.list
+ if $rflag
+ then
+ sed -e 's/\([0-9]\):\(retired\|reserved\) /\1 /' <group
+ else
+ sed -e '/[0-9]:\(retired\|reserved\) /d' <group
+ fi \
+ | sed -n -e '/^[0-9]/{
+s/[ ].*//
+p
+}' \
+ | while read id
+ do
+ [ -f $id ] || continue
+ echo $id >>$tmp.list
+ done
+ fi
+ fi
+fi
+
+list=`sort -n $tmp.list`
+rm -f $tmp.list $tmp.tmp $tmp.sed
+
+# re-process the product-specific setup in case command line args have
+# changed things, e.g. -h hostname
+#
+. ./common.setup
+
+[ -z "$QA_HOST" ] && QA_HOST=$DEFAULT_HOST
+export QA_HOST QA_DIR QA_USER
+
+if $check
+then
+ x=`pminfo -h $QA_HOST -v pmcd.control.timeout 2>&1`
+ if [ ! -z "$x" ]
+ then
+ echo "Is pmcd running on host $QA_HOST? Simple test produces ..."
+ echo "$x"
+ exit 1
+ fi
+fi
+
+case $iam
+in
+ show-me)
+ # don't need sudo
+ ;;
+ *)
+
+ _havesudo
+ ;;
+esac
+
+case $iam
+in
+ check|remake)
+ # $PCP_RC_DIR/pcp needs this to produce deterministic output now
+ #
+ _change_config verbose on
+ ;;
+esac
+
+if $quick
+then
+ :
+else
+ ./mk.localconfig
+
+ $OPTION_AGENTS && _haveagents
+ $OPTION_LOGGER && _havelogger
+ $OPTION_PMCD_TRACE && _havepmcdtrace
+
+ if [ -f GNUmakefile.install ]
+ then
+ # running QA in the tree
+ ${MAKE:-make} -f GNUmakefile.install setup
+ else
+ ${MAKE:-make} setup
+ fi
+ if [ $? != 0 ]
+ then
+ echo "Error: ${MAKE:-make} setup failed"
+ exit 1
+ fi
+
+ # since pmcd no longer runs as root, normal users must be able
+ # to read all dirs on the path to the qa home ...
+ #
+ x=`pwd`
+ while [ -n "$x" -a "$x" != / ]
+ do
+ prot=`ls -ld "$x" | sed -e 's/[ ].*//'`
+ case $prot
+ in
+ dr?xr?xr?[xt]*)
+ ;;
+ *)
+ echo "Warning: parent directory $x (mode=$prot) not world readable and searchable"
+ ;;
+ esac
+ x=`dirname $x`
+ done
+fi
diff --git a/qa/common.avahi b/qa/common.avahi
new file mode 100644
index 0000000..38bcc35
--- /dev/null
+++ b/qa/common.avahi
@@ -0,0 +1,43 @@
+#
+# Common shell routines for testing Avahi service discovery
+# Copyright (c) 2013-2014 Red Hat.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+avahi_notrun_checks()
+{
+ _get_libpcp_config
+ $service_discovery || _notrun "No support for service discovery"
+
+ # Is avahi-browse installed?
+ which avahi-browse >/dev/null 2>&1 || _notrun avahi-browse is not installed
+
+ # Is the avahi-daemon installed and running? (maybe /sbin or /usr/sbin)
+ avahi-daemon --check 2>/dev/null || _notrun avahi-daemon is not available
+}
+
+avahi_cleanup()
+{
+ cd $here
+ $sudo $signal -a "$service" >/dev/null 2>&1
+ rm -f $tmp.*
+}
+
+avahi_service()
+{
+ $sudo "$PCP_RC_DIR/$service" restart > $seq.full 2>&1
+}
+
+avahi_verify()
+{
+ echo "Verify $service avahi service advertising"
+ hostname=`hostname`
+ avahi-browse -rt -d local "_$service._tcp" | \
+ tee -a $seq.full | \
+ grep -m1 "hostname = .$hostname" | \
+ sed -e "s/$hostname/HOSTNAME/g"
+}
diff --git a/qa/common.check b/qa/common.check
new file mode 100644
index 0000000..8b66507
--- /dev/null
+++ b/qa/common.check
@@ -0,0 +1,1620 @@
+#
+# common preliminary check procedures for QA scripts
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+if [ ! -f localconfig ]
+then
+ ./mk.localconfig
+fi
+
+# need to know what version we're running
+. ./localconfig
+
+# common routine for preventing a test from running on some platforms
+# use: _notrun "Reason for not running this test is ..."
+#
+_notrun()
+{
+ echo $@ >$here/$seq.notrun
+ echo "$seq: [not run] `cat $here/$seq.notrun`"
+ exit 0
+}
+
+# common routine for failing a test in a standard way
+# use: _fail "Reason for failing this test is ..."
+#
+_fail()
+{
+ echo FAIL: $@ 1>&2
+ status=1
+ exit $status
+}
+
+# calculate the size of a given fail, echo it on standard output
+#
+_filesize()
+{
+ filename=$1
+
+ if [ $PCP_PLATFORM = darwin ]
+ then
+ # Mac OS X format
+ # stat(1) format
+ # 234881026 5304024 -rwxr-xr-x 1 kenj kenj 0 2016 "May 4 14:00:42 2011" "Apr 27 20:14:16 2011" "Apr 27 20:14:16 2011" "Apr 27 20:14:16 2011" 4096 8 0 441
+ stat $filename 2>&1 | $PCP_AWK_PROG '{ print $8 }'
+ else
+ # stat(1) format
+ # File: `441'
+ # Size: 2016 Blocks: 8 IO Block: 4096 regular file
+ # Device: 816h/2070d Inode: 758237 Links: 1
+ # Access: (0755/-rwxr-xr-x) Uid: ( 1000/ kenj) Gid: ( 1000/ kenj)
+ # Access: 2011-05-09 06:52:58.000000000 +1000
+ # Modify: 2011-02-27 14:42:30.000000000 +1100
+ # Change: 2011-02-28 19:21:27.000000000 +1100
+ stat $filename 2>&1 | $PCP_AWK_PROG '$1 == "Size:" { print $2 }'
+ fi
+}
+
+# determine whether sufficient free space exists to run a test;
+# passed in parameter is the size needed, in megabytes.
+#
+_check_freespace()
+{
+ needspace=$1
+
+ # Filesystem 1M-blocks Used Available Use% Mounted on
+ # /dev/sda5 57349 24838 29621 46% /
+ free=`df -mP . | $PCP_AWK_PROG 'NR == 2 { print $4 }'`
+
+ if [ -z "$free" ]
+ then
+ echo "Cannot determine free space (df -mP fails)"
+ elif [ "$free" -lt "$needspace" ]
+ then
+ echo "Insufficient free space ($free MB, need $needspace MB)"
+ fi
+}
+
+# check that a given agent (argument 1) is up and running;
+# indicated by return status and agent warnings to stdout.
+#
+_check_agent()
+{
+ agent=$1
+ quiet=$2
+ sts=0
+
+ [ X"$quiet" = "X" ] && quiet=false
+
+ pminfo -f $agent 2>&1 | \
+ $PCP_AWK_PROG '
+BEGIN { value=0; metric=0; warn=0 }
+NF==0 { next }
+/ value / { value++; next }
+/^'$agent'/ { metric++
+ if ($0 !~ /:/) next
+ }
+ { warn++ }
+END { if (warn) printf "%d warnings, ",warn
+ printf "%d metrics and %d values\n",metric,value
+ }' > $tmp.fetch 2>&1
+
+ pminfo -v $agent 2>&1 | LC_COLLATE=POSIX sort >$tmp.verify
+ $quiet || cat $tmp.fetch
+ if grep warnings $tmp.fetch > /dev/null 2>&1
+ then
+ # X warnings, Y metrics and Z values
+ num_warn=`sed -n -e '/warnings/s/ .*//p' < $tmp.fetch`
+ if [ "$num_warn" -gt 0 ]
+ then
+ echo "Warnings when fetching $agent metrics:"
+ cat $tmp.verify
+ sts=1
+ fi
+ else
+ num_warn=0
+ fi
+
+ return $sts
+}
+
+#
+# prepare and cleanup pmda routines work together to ensure
+# pmcd+pmda state is left as it was at the start of a test.
+#
+_prepare_pmda()
+{
+ agent=$1
+
+ iam=$agent
+ done_clean=false
+ install_on_cleanup=false
+ pminfo $agent >/dev/null 2>&1 && install_on_cleanup=true
+ # copy the pmcd config file to restore state later.
+ cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+ unset ROOT MAKEFLAGS
+}
+
+_cleanup_pmda()
+{
+ agent=$1
+
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/$agent; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/$agent; $sudo ./Remove >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+}
+
+_host_to_ipaddr()
+{
+ perl -MSocket -e '
+ my $packed_ip = gethostbyname("'$1'");
+ if (defined $packed_ip) {
+ my $ip_address = inet_ntoa($packed_ip);
+ print $ip_address;
+ }'
+}
+
+_ipaddr_to_host()
+{
+ perl -MSocket -e '
+ my $iaddr = inet_aton("'$1'");
+ if (defined $iaddr) {
+ my $name = gethostbyaddr($iaddr, AF_INET);
+ print $name;
+ }'
+}
+
+_host_to_fqdn()
+{
+ ans=`hostname -f 2>/dev/null | grep '\.'`
+ if [ -z "$ans" ]
+ then
+ if which nslookup >/dev/null 2>&1
+ then
+ ans=`nslookup $1 2>&1 | sed -n -e '/^Name:[ ][ ]*/s///p'`
+ fi
+ fi
+ if [ -z "$ans" ]
+ then
+ if which domainname >/dev/null 2>&1
+ then
+ ans=`domainname`
+ [ -z "$ans" ] || ans="$1.$ans"
+ fi
+ fi
+ if [ -z "$ans" ]
+ then
+ # fake out localhost.localdomain if no working DNS
+ ans=localhost.localdomain
+ fi
+ echo "$ans"
+}
+
+_check_metric()
+{
+ if pminfo -h ${2-localhost} -f $1 2>&1 | grep " value " >/dev/null
+ then
+ :
+ else
+ echo "Check failed for metric \"$1\" at host \"${2-localhost}\" ... is PMDA installed?"
+ exit 1
+ fi
+}
+
+# wait_for_pmcd [maxdelay [host]]
+#
+_wait_for_pmcd()
+{
+ # 20 seconds default seems like a reasonble max time to get going
+ #debug# set -x
+ _can_wait=${1-20}
+ _host=${2-localhost}
+ _i=0
+ _dead=true
+ #debug# ping -c 2 $_host
+ #debug# pcp -h $_host
+ #debug# pcp -h `hostname`
+ while [ $_i -lt $_can_wait ]
+ do
+ #debug# pmprobe -n $PCP_VAR_DIR/pmns/root_pmcd -h $_host pmcd.numclients
+ _sts=`pmprobe -n $PCP_VAR_DIR/pmns/root_pmcd -h $_host pmcd.numclients 2>/dev/null | $PCP_AWK_PROG '{print $2}'`
+ if [ "${_sts:-0}" -gt 0 ]
+ then
+ # numval really > 0, we're done
+ #
+ _dead=false
+ break
+ fi
+ sleep 1
+ _i=`expr $_i + 1`
+ done
+ if $_dead
+ then
+ echo "Arrgghhh ... pmcd at $_host failed to start after $_can_wait seconds"
+ echo "=== failing pmprobe ==="
+ echo "+ pmprobe -n $PCP_VAR_DIR/pmns/root_pmcd -h $_host pmcd.numclients"
+ pmprobe -n $PCP_VAR_DIR/pmns/root_pmcd -h $_host pmcd.numclients
+ case $_host
+ in
+ localhost)
+ echo "=== pmcd.log ==="
+ cat $PCP_LOG_DIR/pmcd/pmcd.log
+
+ echo "likely looking processes ..."
+ ps "$PCP_PS_ALL_FLAGS" | egrep "[p]m|[P]ID"
+ ;;
+ *)
+ ssh pcpqa@$_host "sh -c '. \$PCP_DIR/etc/pcp.env; echo; echo "=== pmcd.log ==="; [ -f \$PCP_LOG_DIR/pmcd/pmcd.log ] && cat \$PCP_LOG_DIR/pmcd/pmcd.log; [ -f \$PCP_LOG_DIR/pmcd.log ] && cat \$PCP_LOG_DIR/pmcd.log; echo; echo likely looking processes ...; ( ps \$PCP_PS_ALL_FLAGS | egrep \"[p]m|[P]ID\" )'" </dev/null
+ ;;
+ esac
+ status=2
+ exit $status
+ fi
+}
+
+# wait_for_pmlogger [pid logfile [maxdelay]]
+#
+_wait_for_pmlogger()
+{
+ # 20 seconds default seems like a reasonable max time to get going
+ _maxdelay=20
+
+ case $# in
+ 0)
+ _pid="-P"
+ dir_hostname=`hostname || echo localhost`
+ _logfile="$PCP_LOG_DIR/pmlogger/$dir_hostname/pmlogger.log"
+ _iam="primary"
+ ;;
+ 2)
+ _pid=$1
+ _logfile=$2
+ _iam="pid=$_pid"
+ ;;
+ 3)
+ _pid=$1
+ _logfile=$2
+ _maxdelay=$3
+ _iam="pid=$_pid"
+ ;;
+ *)
+ echo "_wait_for_pmlogger(): wrong number of arguments"
+ status=1
+ exit $status
+ ;;
+ esac
+
+ #debug# set -x
+ _i=0
+ _dead=true
+ rm -f $tmp._wait_for_pmlogger.pmlc
+ while [ $_i -lt $_maxdelay ]
+ do
+ #debug# ps -ef | grep "[^0-9]$_pid[^0-9]"
+ echo "pmlc $_pid" >> $tmp._wait_for_pmlogger.pmlc
+ if pmlc $_pid </dev/null 2>&1 \
+ | tee -a $tmp._wait_for_pmlogger.pmlc \
+ | egrep "Connection refused|Transport endpoint is not connected" >/dev/null
+ then
+ sleep 1
+ _i=`expr $_i + 1`
+ else
+ # pmlogger socket has been set up ...
+ _dead=false
+ # give pmlogger a chance to detect that pmlc has gone away
+ # so the port is free
+ sleep 1
+ break
+ fi
+ done
+ if $_dead
+ then
+ echo "Arrgghhh ... pmlogger ($_iam) failed to start after $_maxdelay seconds"
+ echo "at `date`."
+ echo "pmlogger log ($_logfile) ..."
+ cat $_logfile
+ echo
+
+ # If pmlc could not connect to pmlogger, report details
+ if [ -s $tmp._wait_for_pmlogger.pmlc ]
+ then
+ echo "pmlc output ..."
+ cat $tmp._wait_for_pmlogger.pmlc
+ echo
+ fi
+
+ # If pmlogger could not connect to PMCD, find which host it was
+ # connecting to, and get the pmcd.log file from that host.
+ cat $_logfile | $PCP_AWK_PROG '/pmlogger: Cannot connect to PMCD on host/' \
+ | sed -e ' s/pmlogger: Cannot connect to PMCD on host "//g' \
+ -e ' s/": .*//g' >$tmp._wait_for_pmlogger.host
+ if [ -s $tmp._wait_for_pmlogger.host ]
+ then
+ _pmcdhost=`cat $tmp._wait_for_pmlogger.host`
+ echo "pmcd log ($_pmcdhost:$PCP_LOG_DIR/pmcd/pmcd.log) ..."
+ if [ -r /hosts/$_pmcdhost$PCP_LOG_DIR/pmcd/pmcd.log ]
+ then
+ cat /hosts/$_pmcdhost$PCP_LOG_DIR/pmcd/pmcd.log
+ elif [ -r /hosts/$_pmcdhost$PCP_LOG_DIR/pmcd.log ]
+ then
+ cat /hosts/$_pmcdhost$PCP_LOG_DIR/pmcd.log
+ else
+ if [ "`hostname | sed -e 's/\..*//'`" != $_pmcdhost ]
+ then
+ if scp -q $_pmcdhost:$PCP_LOG_DIR/pmcd/pmcd.log \
+ $tmp._wait_for_pmlogger.pmcdlog
+ then
+ cat $tmp._wait_for_pmlogger.pmcdlog
+ elif scp -q $_pmcdhost:$PCP_LOG_DIR/pmcd.log \
+ $tmp._wait_for_pmlogger.pmcdlog
+ then
+ cat $tmp._wait_for_pmlogger.pmcdlog
+ fi
+ else
+ cat $PCP_LOG_DIR/pmcd/pmcd.log
+ fi
+ fi
+ fi
+ base=`cat $_logfile | sed -n '/^Archive basename:[ ]*/s///p'`
+ if [ -n "$base" -a -f $base.0 ]
+ then
+ echo "archive created ..."
+ pmdumplog -l $base.0
+ nres=`pmdumplog $base.0 | grep '^[0-9]' | wc -l | sed -e 's/ //g'`
+ echo "archive contains $nres records"
+ else
+ echo "archive not created"
+ fi
+ echo
+ echo "local pmlogger map ..."
+ for map in $PCP_TMP_DIR/pmlogger/*
+ do
+ if [ "`echo $map`" = "$PCP_TMP_DIR"'/pmlogger/*' ]
+ then
+ echo "No files in $PCP_TMP_DIR/pmlogger !?"
+ else
+ ls -l $map
+ cat $map
+ fi
+ done
+ echo
+ echo "Likely looking processes ..."
+ ps $PCP_PS_ALL_FLAGS | egrep '[p]m|[P]ID'
+ status=2
+ exit $status
+ fi
+ rm -f $tmp._wait_for_pmlogger.*
+}
+
+# Start a pmlogger with appropriate privs that it can create
+# portmap files in PCP_TMP_DIR (requires pcp or root account)
+#
+# Couple of side-effects to be aware of:
+# Returns with $pid containing the backgrounded pmlogger PID;
+# Creates the pmlogger archive, logfile, etc as root/pcp, not
+# as the user running QA (so, tmp cleanup needs to use sudo).
+#
+_start_up_pmlogger()
+{
+ cat >$tmp.cmd <<End-of-File
+#!/bin/sh
+pmlogger $@ &
+echo pid=\$!
+End-of-File
+
+ __user=root
+ id pcp >/dev/null 2>&1 && __user=pcp
+
+ $sudo -u $__user sh $tmp.cmd $@ >$tmp.pid
+ eval `cat $tmp.pid`
+}
+
+# wait for a pmlogger process to end that is not our child
+# (else we could just use shell wait command). Instead we
+# must keep tabs on the PID file and bail when its gone.
+#
+_wait_pmlogger_end()
+{
+ pid=$1
+
+ while true
+ do
+ test -f "$PCP_TMP_DIR/pmlogger/$pid" || return
+ pmsleep 0.1
+ done
+}
+
+# ensure primary logger allows pmlc state changes
+#
+_writable_primary_logger()
+{
+ configfile="$PCP_SYSCONF_DIR/pmlogger/config.default"
+
+ echo "_open_primary_logger checking config file: $configfile" >>$seq.full
+
+ # first, move aside the default configuration file
+ $sudo mv "$configfile" "$configfile.$seq"
+
+ # next, create a new default configuration file
+ PMLOGCONF="$PCP_BINADM_DIR/pmlogconf"
+ test -f "$configfile" || \
+ $sudo $PMLOGCONF -q -h localhost "$configfile" >>$seq.full 2>&1
+
+ # finally, open it up to local access from pmlc
+ $sudo sed -i -e 's/^allow localhost.*$/allow localhost : all;/g' \
+ -e 's/^allow local:.*$/allow local:* : all;/g' "$configfile"
+}
+
+# restore primary logger pmlc access restrictions
+#
+_restore_primary_logger()
+{
+ configfile="$PCP_SYSCONF_DIR/pmlogger/config.default"
+
+ # close out access from local pmlc once more
+ test -f "$configfile" && \
+ $sudo sed -i -e 's/^allow localhost.*$/allow localhost : enquire;/g' \
+ -e 's/^allow local:.*$/allow local:* : enquire;/g' \
+ "$configfile"
+
+ # if there was an initial configuration, put it back
+ test -f "$configfile.$seq" && $sudo mv "$configfile.$seq" "$configfile"
+ ( id pcp && $sudo chown pcp:pcp "$configfile" ) >/dev/null 2>&1
+}
+
+# purify support
+#
+# typical usage:
+#
+# At the top before outputting $seq.out but after setting $seq ...
+# _check_purify prog
+#
+# Main code...
+# _setup_purify prog
+# _run_purify [arg1] [arg2]
+#
+
+# initial setup for running purify
+# creates purified binary in $_purify_dir
+#
+_setup_purify()
+{
+ # Need to change these to match Purify setup locally, if you
+ # have Purify!
+ #
+ LM_LICENSE_FILE=27000@snort.melbourne.sgi.com
+ RSU_LICENSE_MAP=/usr/Rational/config/LICENSE_MAP
+ export LM_LICENSE_FILE RSU_LICENSE_MAP
+
+ rm -f $seq.full
+ _path=$1
+ _prog=`echo $_path | sed -e 's#.*/##'`
+ _pure_prog="$_prog.pure"
+ _purify_dir=$tmp.purify
+
+ rm -rf $_purify_dir
+ mkdir $_purify_dir
+ cp $_path $_purify_dir
+ _here=`pwd`
+ cd $_purify_dir
+
+ cat >.purify<<EOF
+suppress umr _write
+suppress miu
+EOF
+ unset PURIFYOPTIONS PUREOPTIONS
+ purify -log-file=stderr $_prog >out 2>&1
+ if [ ! -x $_prog.pure ]
+ then
+ cat out
+ echo "Hmm ... purify failed to create $_prog.pure"
+ exit
+ fi
+ cd $_here
+}
+
+_run_purify()
+{
+ args=$*
+
+ _here=`pwd`
+ cd $_purify_dir
+ $_purify_dir/$_pure_prog $args > $tmp._purify.out 2>&1
+ cat $tmp._purify.out >>$_here/$seq.full
+ if grep -i expired $tmp._purify.out >/dev/null; then
+ cat $tmp._purify.out
+ else
+ _filter_purify < $tmp._purify.out
+ fi
+ cd $_here
+}
+
+_filter_purify()
+{
+ $PCP_AWK_PROG '
+state == 0 && /License successfully checked out/ { state = 1; next }
+state == 0 && /Purify checking enabled/ { state = 1; next }
+state == 1 { print }' \
+ | sed \
+ -e 's/pid [0-9][0-9]*/pid PID/g' \
+ -e "s;$_purify_dir;TMP;g" \
+ -e '/reserved for Purify internal use/d' \
+ -e 's/suppressed chunks/suppressed blocks/g' \
+ | $PCP_AWK_PROG -v extra="$PURIFY_FILTER_EXTRA" '
+/Purify instrumented/ { skip = 0 }
+/bytes leaked\./ { print "..."; skip = 1; next }
+skip == 1 { next }
+ { print }
+/Purify Heap Analysis/ { print "..."; skip = 1 }
+/Basic memory usage \(including Purify/ { print "..."; skip = 1 }
+extra != "" && /Current file descriptors/ { print "..."; skip = 1 }' \
+ | (if [ "$PURIFY_FILTER_EXTRA" ]
+ then sed -e 's/in use: [0-9][0-9]*/in use: N/'
+ else cat -
+ fi)
+}
+
+_check_purify()
+{
+ [ $# -eq 1 ] || _notrun "_check_purify needs executable as argument"
+ _path=$1
+ which purify >/dev/null 2>&1
+ [ $? -eq 0 ] || _notrun "No purify binary found"
+}
+
+_check_display()
+{
+ # note: non-X systems (MacOSX, Windows) must pass here unchallenged
+ which xdpyinfo >/dev/null 2>&1
+ if test $? -eq 0
+ then
+ DISPLAY=$PCPQA_CLOSE_X_SERVER xdpyinfo >/dev/null 2>&1 || \
+ _notrun "Failed sanity check on DISPLAY $PCPQA_CLOSE_X_SERVER"
+ fi
+}
+
+# valgrind support
+#
+# typical usage:
+#
+# At the top before outputting $seq.out but after setting $seq ...
+# _check_valgrind
+#
+# Main code...
+# _run_valgrind app [arg1 [arg2] ... ]
+#
+
+_check_valgrind()
+{
+ which valgrind >/dev/null 2>&1
+ [ $? -eq 0 ] || _notrun "No valgrind binary found"
+}
+
+# Note: because we may be avoiding leaks in system libraries
+# via the suppressions, there is potential indeterminism for
+# the following case:
+# -All heap blocks were freed -- no leaks are possible
+# +LEAK SUMMARY:
+# +definitely lost: 0 bytes in 0 blocks
+# +indirectly lost: 0 bytes in 0 blocks
+#
+_filter_valgrind()
+{
+ noleak="LEAK SUMMARY:\ndefinitely lost: 0 bytes in 0 blocks\nindirectly lost: 0 bytes in 0 blocks"
+ sed \
+ -e 's/^==*[1-9][0-9]*==* *//' \
+ -e '/^$/d' \
+ -e '/^Copyright (/d' \
+ -e '/^Using Valgrind-/d' \
+ -e '/^Parent PID:/d' \
+ -e '/^HEAP SUMMARY:/d' \
+ -e '/^in use at exit:/d' \
+ -e '/^total heap usage:/d' \
+ -e '/^possibly lost:/d' \
+ -e '/^still reachable:/d' \
+ -e '/^suppressed:/d' \
+ -e '/^Reachable blocks (those to which a pointer was found)/d' \
+ -e '/^To see them, rerun with:/d' \
+ -e '/^For counts of detected and suppressed errors,/d' \
+ -e '/^ERROR SUMMARY:/s/ (suppressed: [^)]*)/ .../' \
+ -e "s/^All heap blocks were freed -- .*/$noleak/g"
+}
+
+_run_valgrind()
+{
+ __version=`valgrind --version | sed -e 's/valgrind-//'`
+ if [ -f $here/valgrind-suppress-$__version ]
+ then
+ __extra="--suppressions=$here/valgrind-suppress-$__version"
+ echo "Warning: using extra $__extra" >>$seq.full
+ else
+ __extra=''
+ fi
+ valgrind \
+ --leak-check=full --read-var-info=yes \
+ --suppressions=$here/valgrind-suppress $__extra \
+ --log-file=$tmp._valgrind \
+ $* 2>$tmp._valgrind.err >$tmp._valgrind.out
+ echo "=== std out ==="
+ cat $tmp._valgrind.out
+ echo "=== std err ==="
+ cat $tmp._valgrind.err
+ echo "=== valgrind report ===" >>$seq.full
+ cat $tmp._valgrind >>$seq.full
+ echo "=== filtered valgrind report ==="
+ _filter_valgrind <$tmp._valgrind
+}
+
+#
+# Checks that given_value is in range of correct_value +/- tolerance.
+# Tolerance can be an absolute value or a percentage of the correct value
+# (see examples with tolerances below).
+# Outputs suitable message to stdout if it's not in range.
+#
+# A verbose option, -v, may be used as the LAST argument
+#
+# e.g.
+# foo: 0.0298 = 0.03 +/- 5%
+# _within_tolerance "foo" 0.0298 0.03 5%
+#
+# foo: 0.0298 = 0.03 +/- 0.01
+# _within_tolerance "foo" 0.0298 0.03 0.01
+#
+# foo: 0.0298 = 0.03 -0.01 +0.002
+# _within_tolerance "foo" 0.0298 0.03 0.01 0.002
+#
+# foo: verbose output of 0.0298 = 0.03 +/- 5%
+# _within_tolerance "foo" 0.0298 0.03 5% -v
+
+_within_tolerance()
+{
+ _name=$1
+ _given_val=$2
+ _correct_val=$3
+ _mintol=$4
+ _maxtol=$_mintol
+ _verbose=0
+ _debug=false
+
+ # maxtol arg is optional
+ # verbose arg is optional
+ if [ $# -ge 5 ]
+ then
+ if [ "$5" = "-v" ]
+ then
+ _verbose=1
+ else
+ _maxtol=$5
+ fi
+ fi
+ if [ $# -ge 6 ]
+ then
+ [ "$6" = "-v" ] && _verbose=1
+ fi
+
+ # find min with or without %
+ _mintolerance=`echo $_mintol | sed -e 's/%//'`
+ if [ $_mintol = $_mintolerance ]
+ then
+ _min=`echo "scale=5; $_correct_val-$_mintolerance" | bc`
+ else
+ _min=`echo "scale=5; $_correct_val-$_mintolerance*0.01*$_correct_val" | bc`
+ fi
+
+ # find max with or without %
+ _maxtolerance=`echo $_maxtol | sed -e 's/%//'`
+ if [ $_maxtol = $_maxtolerance ]
+ then
+ _max=`echo "scale=5; $_correct_val+$_maxtolerance" | bc`
+ else
+ _max=`echo "scale=5; $_correct_val+$_maxtolerance*0.01*$_correct_val" | bc`
+ fi
+
+ $_debug && echo "min = $_min"
+ $_debug && echo "max = $_max"
+
+ cat <<EOF > $tmp._bc.1
+scale=5;
+if ($_min <= $_given_val) 1;
+if ($_min > $_given_val) 0;
+EOF
+
+ cat <<EOF > $tmp._bc.2
+scale=5;
+if ($_given_val <= $_max) 1;
+if ($_given_val > $_max) 0;
+EOF
+
+ _above_min=`bc < $tmp._bc.1`
+ _below_max=`bc < $tmp._bc.2`
+
+ _in_range=`expr $_above_min \& $_below_max`
+
+ # fix up min, max precision for output
+ # can vary for 5.3, 6.2
+ _min=`echo $_min | sed -e 's/0*$//'` # get rid of trailling zeroes
+ _max=`echo $_max | sed -e 's/0*$//'` # get rid of trailling zeroes
+
+ if [ $_in_range -eq 1 ]
+ then
+ [ $_verbose -eq 1 ] && echo $_name is in range
+ return 0
+ else
+ [ $_verbose -eq 1 ] && echo $_name has value of $_given_val
+ [ $_verbose -eq 1 ] && echo $_name is NOT in range $_min .. $_max
+ return 1
+ fi
+}
+
+# comment pmlogger_check and pmsnap entries in the crontab file
+# (also cron.pmcheck and cron.pmsnap entries for backwards compatibility)
+# Usage: _remove_cron backup sudo
+#
+# backup - where to keep the old crontab file
+# sudo - location of sudo
+#
+_remove_cron()
+{
+ rc_backup=${1:-crontab}
+ rc_sudo=${2:-sudo}
+
+ $rc_sudo rm -f $rc_backup
+ if $rc_sudo crontab -l 2>/dev/null >$rc_backup
+ then
+ :
+ else
+ # error, make sure the backup is empty so no changes are made
+ echo >$rc_backup
+ fi
+
+ if [ -s $rc_backup ]
+ then
+ $rc_sudo cat $rc_backup \
+ | sed \
+ -e 's/^[^#].*pmlogger_check/#&/' \
+ -e 's/^[^#].*pmsnap/#&/' \
+ -e 's/^[^#].*cron.pmcheck/#&/' \
+ -e 's/^[^#].*cron.pmsnap/#&/' \
+ | $rc_sudo crontab > /dev/null 2>&1
+ fi
+}
+
+# restore crontab back to original state
+# Usage: _restore_cron backup sudo
+#
+# backup - where to keep the old crontab file
+# sudo - location of sudo
+#
+_restore_cron()
+{
+ rc_backup=${1:-crontab}
+ rc_sudo=${2:-sudo}
+
+ if [ -s $rc_backup ]
+ then
+ $rc_sudo rm -f rc_cron_out rc_cron_check rc_cron_diff
+ if $rc_sudo crontab $rc_backup >rc_cron_out 2>&1
+ then
+ # check everything is OK
+ #
+ $rc_sudo crontab -l >rc_cron_check
+ sed -e '/^#/d' $rc_backup >$rc_backup.clean
+ sed -e '/^#/d' rc_cron_check >rc_cron_check.clean
+ if diff -u $rc_backup.clean rc_cron_check.clean >rc_cron_diff 2>&1
+ then
+ :
+ else
+ echo "_restore_cron: Warning: could not restore crontab to original state"
+ echo " Unexpected differences ..."
+ diff -u $rc_backup rc_cron_check
+ fi
+ $rc_sudo rm -f rc_cron_check rc_cron_diff
+ else
+ echo "_restore_cron: Warning: could not restore crontab to original state"
+ echo " crontab(1) failed ..."
+ cat rc_cron_out
+ fi
+ $rc_sudo rm -f rc_cron_out rc_cron_check rc_cron_diff
+ fi
+}
+
+# get offset into an archive relative to the first pmResult
+# past the preamble
+#
+# Usage: _arch_start archive [offset]
+#
+_arch_start()
+{
+ pmdumplog -z $1 \
+ | $PCP_AWK_PROG '
+/^[0-9][0-9]:[0-9][0-9]:/ { if ($3 ~ /pmcd.pmlogger.host/) next
+ split($1, t, ":")
+ t[3] += '"${2-0}"'
+ while (t[3] < 0) {
+ t[3] += 60
+ t[2]--
+ }
+ while (t[3] > 60) {
+ t[3] -= 60
+ t[2]++
+ }
+ while (t[2] < 0) {
+ t[2] += 60
+ t[1]--
+ }
+ while (t[2] > 60) {
+ t[2] -= 60
+ t[1]++
+ }
+ while (t[1] < 0)
+ t[1] += 24
+ while (t[1] > 23)
+ t[1] -= 24
+ printf "@%02d:%02d:%06.3f",t[1],t[2],t[3]
+ exit
+ }'
+}
+
+# get an unused ipc port ... returned on std out, empty for failure
+# Usage: _get_port tcp|udp low_port high_port
+#
+_get_port()
+{
+ [ $# -ne 3 ] && return
+ __proto=$1
+ __port=$2
+ while [ $__port -le "$3" ]
+ do
+ if fuser $__port/$__proto >/dev/null 2>&1
+ then
+ :
+ else
+ echo $__port
+ return
+ fi
+ __port=`expr $__port + 1`
+ done
+}
+
+# get host endianness ("le" or "be")
+_get_endian()
+{
+ check=`echo a | od -x 2>&1 | sed -e 's/^0[^ ]* *//' -e 's/ //g' -e '/^$/d'`
+ case "$check"
+ in
+ 0a61) echo le ;;
+ 610a) echo be ;;
+ *)
+ echo "Arrgh ... od -x returned something odd ($check)"
+ echo a | od -x
+ status=1
+ exit
+ ;;
+ esac
+}
+
+# get host word size ("32" or "64")
+_get_word_size()
+{
+ machine=`uname -m`
+ case "$machine"
+ in
+ i?86|athlon|ppc)
+ size=32
+ # but, apps are 64-bit on my Mac OS X
+ [ $PCP_PLATFORM = darwin ] && size=64
+ ;;
+ x86_64|ia64|ppc64|s390x|aarch64)
+ size=64
+ ;;
+ *)
+ echo "uname gave machine type with unknown word size ($machine)"
+ status=1
+ exit
+ ;;
+ esac
+ echo $size
+}
+
+# _all_hostnames host - generate all hostnames (or IP addresses) for this host,
+# that map to some network interface, excluding loopback
+#
+_all_hostnames()
+{
+ touch $tmp._addr
+ ssh pcpqa@$1 </dev/null netstat -in 2>/dev/null >$tmp._tmp
+ if grep 'Network.*Address' $tmp._tmp >/dev/null
+ then
+ # This is the IRIX version of netstat -in, get IP addr from the
+ # Address field
+ #
+ # Name Mtu Network Address Ipkts Ierrs ...
+ # ef0 1500 134.14.55.128 134.14.55.149 712168207 10 ...
+ # 134.14.55.159
+ # 134.14.55.147
+ # ef2* 1500 none none 0 0 ...
+ # lo0 32992 127 127.0.0.1 23628402 0 ...
+ #
+ $PCP_AWK_PROG <$tmp._tmp >$tmp._addr '
+/^lo/ { next }
+NF >= 4 && $4 ~ /^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/ { print $4 }
+NF == 1 && $1 ~ /^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/ { print $1 }
+END { print "End-of-List" }'
+ else
+ ssh pcpqa@$1 </dev/null /sbin/ifconfig 2>/dev/null >$tmp._tmp
+ if grep 'UP.*RUNNING' $tmp._tmp >/dev/null
+ then
+ # This is the Linux version of ifconfig, get IP addr from the
+ # inet addr: line
+ #
+ # eth0 Link encap:Ethernet HWaddr 00:90:27:98:EE:A8
+ # inet addr:134.14.55.176 Bcast:134.14.55.255 ...
+ # UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ # ...
+ #
+ # lo Link encap:Local Loopback
+ # inet addr:127.0.0.1 Mask:255.0.0.0
+ # UP LOOPBACK RUNNING MTU:16436 Metric:1
+ # ...
+ #
+ # Note addr: tag is not present in some ifconfig output
+ #
+ $PCP_AWK_PROG <$tmp._tmp '
+/^lo/ { skip=1; next }
+skip == 1 && NF > 0 { next }
+skip == 1 { skip = 0 }
+$1 == "inet" && $2 ~ /addr:/ { print $2 }
+$1 == "inet" && $2 ~ /^[0-9]/ { print $2 }
+END { print "End-of-List" }' \
+ | sed -e 's/addr://' >$tmp._addr
+ else
+ # Nothing we can do really, as there is no way of passing
+ # an error back from here, other than returning an empty
+ # list
+ return
+ fi
+ fi
+ cat $tmp._addr \
+ | while read __ip
+ do
+ if [ "$__ip" = "End-of-List" ]
+ then
+ echo
+ break
+ fi
+ # check that ip addr is reachable
+ if ping -c 1 $__ip >/dev/null 2>&1
+ then
+ __host=`_ipaddr_to_host $__ip`
+ if [ ! -z "$__host" ]
+ then
+ $PCP_ECHO_PROG $PCP_ECHO_N ",$__host""$PCP_ECHO_C"
+ else
+ $PCP_ECHO_PROG $PCP_ECHO_N ",$__ip""$PCP_ECHO_C"
+ fi
+ fi
+ done \
+ | sed -e 's/^,//'
+}
+
+# _all_ipaddrs - generate all IP addresses for this host,
+# that map to some network interface, excluding
+# loopback, slip, ppp
+#
+# See _all_hostnames() above for comments on the method used.
+#
+_all_ipaddrs()
+{
+ touch $tmp._addr
+ if [ "$1" = "localhost" ]
+ then
+ netstat -in 2>/dev/null >$tmp._tmp
+ else
+ ssh pcpqa@$1 </dev/null netstat -in 2>/dev/null >$tmp._tmp
+ fi
+ if grep 'Network.*Address' $tmp._tmp >/dev/null
+ then
+ # this is the IRIX version of netstat -in, get IP addr from the
+ # Address field
+ #
+ $PCP_AWK_PROG <$tmp._tmp >$tmp._addr '
+/^lo/ || /^sl/ || /^pp/ { next }
+NF >= 4 && $4 ~ /^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/ { print $4 }
+NF == 1 && $1 ~ /^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/ { print $1 }
+END { print "End-of-List" }'
+ else
+ if [ "$1" = "localhost" ]
+ then
+ /sbin/ifconfig 2>/dev/null >$tmp._tmp
+ else
+ ssh pcpqa@$1 </dev/null /sbin/ifconfig 2>/dev/null >$tmp._tmp
+ fi
+ if grep 'UP.*RUNNING' $tmp._tmp >/dev/null
+ then
+ # This is the Linux version of ifconfig, get IP addr from the
+ # inet addr: line
+ #
+# ppp0 Link encap:Point-to-Point Protocol
+# inet addr:134.14.52.219 P-t-P:134.14.52.189 Mask:255.255.255.255
+# UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1522 Metric:1
+# RX packets:50119 errors:0 dropped:0 overruns:0 frame:0
+# TX packets:47474 errors:0 dropped:0 overruns:0 carrier:0
+# collisions:0 txqueuelen:3
+# RX bytes:7017171 (6.6 Mb) TX bytes:3952015 (3.7 Mb)
+ #
+ # Note addr: tag is not present in some ifconfig output,
+ # AND UP comes first!
+ #
+ $PCP_AWK_PROG <$tmp._tmp '
+/^[a-z]/ { loopback = 0 }
+/^lo/ { loopback = 1; next }
+$1 == "inet" && $2 ~ /addr:/ { save = $2; next }
+$1 == "inet" && $2 ~ /^[0-9]/ { save = $2; next }
+$1 == "TX" { if (loopback == 0 && save != 0)
+ print save
+ save = 0
+ }
+END { print "End-of-List" }' \
+ | sed -e 's/addr://' >$tmp._addr
+ else
+ # Nothing we can do really, as there is no way of passing
+ # an error back from here, other than returning an empty
+ # list
+ return
+ fi
+ fi
+ cat $tmp._addr \
+ | while read __ip
+ do
+ if [ "$__ip" = "End-of-List" ]
+ then
+ echo
+ break
+ fi
+ $PCP_ECHO_PROG $PCP_ECHO_N ",$__ip""$PCP_ECHO_C"
+ done \
+ | sed -e 's/^,//'
+}
+
+# fqdn for localhost
+#
+_get_fqdn()
+{
+ _host_to_fqdn `hostname`
+}
+
+# Distro-specific filtering for init, rc scripts, chkconfig, et al
+#
+_filter_init_distro()
+{
+ if [ -f /etc/mandriva-release ]
+ then
+ # looks like this is a Mandriva bug ... see
+ # http://mandriva.598463.n5.nabble.com/Bug-24409-initscripts-New-netfs-provides-local-fs-scripts-can-t-be-turned-off-td869820.html
+ #
+ sed \
+ -e '/Warning: netfs is needed by pcp in runlevel/d'
+ else
+ cat
+ fi
+}
+
+# deal with chkconfig et al
+# assumes $sudo is set correctly
+# try very hard to _not_ emit messages unless serious errors encountered
+#
+_change_config()
+{
+ if [ $PCP_PLATFORM = linux ]
+ then
+ pat=$1
+ [ "$1" = "verbose" ] && pat=""
+
+ if which systemctl >/dev/null 2>&1
+ then
+ # Run with systemd whenever it is available now
+ #
+ case "$2"
+ in
+ on) act=enable ;;
+ off) act=disable ;;
+ *)
+ echo "_change_config: Error: \$2=$2 not \"on\" or \"off\" as expected"
+ exit 1
+ ;;
+ esac
+ if [ -n "$pat" ]
+ then
+ $sudo systemctl $act $pat.service >$tmp._tmp 2>$tmp._err
+ [ $? -eq 0 ] || cat $tmp._tmp
+ fi
+ elif which chkconfig >/dev/null 2>&1
+ then
+ # Try the older RedHat and SuSE way ..
+ #
+ [ -n "$pat" ] && $sudo chkconfig $pat $2
+ elif [ -x /usr/sbin/sysv-rc-conf ]
+ then
+ # Try the Debian and Ubuntu way ..
+ #
+ [ -n "$pat" ] && $sudo /usr/sbin/sysv-rc-conf $pat $2
+ elif which rc-update >/dev/null 2>&1
+ then
+ # Try the Gentoo way ..
+ #
+ if [ -n "$pat" ]
+ then
+ case $2
+ in
+ on) act=add ;;
+ off) act=delete ;;
+ *)
+ echo "_change_config: Error: \$2=$2 not \"on\" or \"off\" as expected"
+ exit 1
+ ;;
+ esac
+ if [ -z "`$sudo rc-update show default | grep $pat`" ]
+ then
+ $sudo rc-update $act $pat >$tmp._tmp 2>&1
+ [ $? -eq 0 ] || cat $tmp._tmp
+ fi
+ fi
+ else
+ # I have no clue!
+ #
+ echo "_change_config: Error: cannot change config \"$1 $2\""
+ exit 1
+ fi
+ elif [ $PCP_PLATFORM = solaris ]
+ then
+ # Try the Solaris way ..
+ #
+ if which svcadm >/dev/null 2>&1
+ then
+ case $1
+ in
+ pmcd) pat=pmcd ;;
+ pmlogger) pat=pmlogger ;;
+ verbose) pat="" ;;
+ *) pat=$1 ;;
+ esac
+ if [ -n "$pat" ]
+ then
+ if [ "$2" = on ]
+ then
+ state=`svcs -l svc:/application/pcp/$pat | sed -n '/^state[ ]/s///p'`
+ [ -n "$state" -a "$state" != "online" ] \
+ && $sudo svcadm clear svc:/application/pcp/$pat
+ $sudo svcadm enable svc:/application/pcp/$pat
+ elif [ "$2" = off ]
+ then
+ $sudo svcadm disable svc:/application/pcp/$pat
+ else
+ echo "_change_config: Error: \$2=$2 not \"on\" or \"off\" as expected"
+ exit 1
+ fi
+ fi
+ else
+ echo "_change_config: Error: cannot find svcs for Solaris"
+ exit 1
+ fi
+ elif [ $PCP_PLATFORM = darwin ]
+ then
+ case $1
+ in
+ pmcd) pat=PMCD ;;
+ pmlogger) pat=PMLOGGER ;;
+ pmie) pat=PMIE ;;
+ verbose) pat="" ;;
+ *) pat=$1 ;;
+ esac
+ if [ -n "$pat" ]
+ then
+ state=`sed -n -e "/^$pat=/{"'
+s/.*=//
+s/-//g
+p
+}' /etc/hostconfig`
+ if [ -z "$state" ]
+ then
+ echo "_change_config: Error: No $pat control line in /etc/hostconfig"
+ echo "You need to add a $pat=-YES- line to this file"
+ exit 1
+ fi
+ if [ "$2" = "on" ]
+ then
+ req_state=YES
+ elif [ "$2" = "off" ]
+ then
+ req_state=NO
+ else
+ echo "_change_config: Error: bad state ($2) should be on or off"
+ exit 1
+ fi
+ if [ "$state" != "$req_state" ]
+ then
+ sed </etc/hostconfig >$tmp._state \
+ -e "/^$pat=/s/-.*/-$req_state-/"
+ sudo cp $tmp._state /etc/hostconfig
+ fi
+ fi
+ else
+ # I have no idea what to do for this platform!
+ #
+ echo "_change_config: Error: cannot \"$1 $2\" for $PCP_PLATFORM"
+ exit 1
+ fi 2>&1 \
+ | _filter_init_distro
+}
+
+_get_config()
+{
+ if [ "$PCP_PLATFORM" = linux ]
+ then
+ case $1
+ in
+ pmlogger|pmcd) pat=$1 ;;
+ verbose) pat="" ;;
+ *) pat=$1 ;;
+ esac
+
+ if which systemctl >/dev/null 2>&1
+ then
+ # Run with systemd whenever it is available now
+ #
+ if [ -z "$pat" ]
+ then
+ # unconditionally "on", or no such option
+ #
+ echo on
+ else
+ if systemctl -q is-enabled $pat.service
+ then
+ echo on
+ else
+ echo off
+ fi
+ fi
+ elif which chkconfig >/dev/null 2>&1
+ then
+ # Try the older RedHat and SuSE way ..
+ #
+ if [ -z "$pat" ]
+ then
+ # unconditionally "on", or no such option
+ #
+ echo on
+ else
+ if chkconfig $pat >$tmp.__tmp 2>&1
+ then
+ # success from chkconfig is only useful if no output
+ # was generated ... in the latter case, grep the output
+ # for hints (this is for SuSE SLES9 in particular)
+ #
+ if [ -s $tmp.__tmp ]
+ then
+ if grep ' on$' $tmp.__tmp >/dev/null
+ then
+ echo on
+ elif grep ' off$' $tmp.__tmp >/dev/null
+ then
+ echo off
+ else
+ echo off
+ fi
+ else
+ echo on
+ fi
+ else
+ echo off
+ fi
+ fi
+ elif [ -x /usr/sbin/sysv-rc-conf ]
+ then
+ # Try the Debian and Ubuntu way ..
+ #
+ if [ -z "$pat" ]
+ then
+ # unconditionally "on", or no such option
+ #
+ echo on
+ else
+ if $sudo /usr/sbin/sysv-rc-conf $pat
+ then
+ echo on
+ else
+ echo off
+ fi
+ fi
+ elif which rc-update >/dev/null 2>&1
+ then
+ # Try the Gentoo way ..
+ #
+ if [ -z "$pat" ]
+ then
+ # unconditionally "on", or no such option
+ #
+ echo on
+ else
+ if rc-update show default | grep $pat >/dev/null
+ then
+ echo on
+ else
+ echo off
+ fi
+ fi
+ else
+ echo "_change_config: Error: don't know how to change config for Linux"
+ exit 1
+ fi
+ elif [ $PCP_PLATFORM = solaris ]
+ then
+ if which svcs >/dev/null 2>&1
+ then
+ case $1
+ in
+ pmlogger|pmcd) pat=$1 ;;
+ verbose) pat="" ;;
+ *) pat=$1 ;;
+ esac
+ if [ -z "$pat" ]
+ then
+ # unconditionally "on", or no such option
+ #
+ echo on
+ else
+ state=`svcs -H svc:/application/pcp/$pat | sed -e 's/[ ].*//'`
+ case "$state"
+ in
+ online|maintenance)
+ echo on
+ ;;
+ offline|disabled)
+ echo off
+ ;;
+ *)
+ echo "_change_config: Error: smf ($state) from svcs not expected"
+ exit 1
+ ;;
+ esac
+ fi
+ else
+ echo "_change_config: Error: cannot find svcs for Solaris"
+ exit 1
+ fi
+ elif [ $PCP_PLATFORM = darwin ]
+ then
+ case $1
+ in
+ pmcd) pat=PMCD ;;
+ pmlogger) pat=PMLOGGER ;;
+ pmie) pat=PMIE ;;
+ verbose) pat="" ;;
+ *) pat=$1 ;;
+ esac
+ if [ -n "$pat" ]
+ then
+ state=`sed -n -e "/^$pat=/{"'
+s/.*=//
+s/-//g
+p
+}' /etc/hostconfig`
+ if [ -z "$state" ]
+ then
+ echo "_change_config: Error: No $pat control line in /etc/hostconfig" >&2
+ echo "You need to add a $pat=-YES- line to this file" >&2
+ exit 1
+ fi
+ if [ "$state" = "YES" ]
+ then
+ echo on
+ elif [ "$state" = "NO" ]
+ then
+ echo off
+ else
+ echo "_change_config: Error: bad state ($state) should be YES or NO" >&2
+ exit 1
+ fi
+ fi
+ else
+ echo "_change_config: Error: cannot \"$1 $2\" for $PCP_PLATFORM"
+ fi
+}
+
+# disable all system pmloggers running via the control file
+#
+_disable_loggers()
+{
+ [ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_VAR_DIR/config/pmlogger/control"
+ if [ -f $PCP_PMLOGGERCONTROL_PATH ]
+ then
+ [ ! -f $tmp.control ] && \
+ $sudo cp $PCP_PMLOGGERCONTROL_PATH $tmp.control
+ fi
+ cat <<End-of-File >$tmp._tmp
+# dummy file created by qa/$seq on `date`
+# the goal here is to have a controlled primary logger that does
+# not make requests to pmcd!
+\$version=1.1
+LOCALHOSTNAME y n PCP_LOG_DIR/pmlogger/LOCALHOSTNAME -c /dev/null
+End-of-File
+ $sudo cp $tmp._tmp $PCP_PMLOGGERCONTROL_PATH
+}
+
+_restore_loggers()
+{
+ [ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \
+ PCP_PMLOGGERCONTROL_PATH="$PCP_VAR_DIR/config/pmlogger/control"
+ [ -f $tmp.control ] && \
+ $sudo cp $tmp.control $PCP_PMLOGGERCONTROL_PATH
+}
+
+# _check_core [dir]
+# checks for core files in dir (defaults to .)
+#
+_check_core()
+{
+ if [ -z "$1" ]
+ then
+ dir=""
+ else
+ if [ -d $1 ]
+ then
+ dir=$1/
+ else
+ echo "_check_core: aaargh $1 is not a directory!"
+ return
+ fi
+ fi
+ if [ "`echo ${dir}core*`" != "${dir}core*" ]
+ then
+ [ -z "$here" ] && here=/tmp
+ [ -z "$seq" ] && seq=9999
+ $PCP_ECHO_PROG $PCP_ECHO_N "Dumped core! (saved in $here as""$PCP_ECHO_C"
+ for c in ${dir}core*
+ do
+ d=`basename $c`
+ $sudo mv $c $here/$seq.$d
+ $PCP_ECHO_PROG $PCP_ECHO_N " $seq.$d""$PCP_ECHO_C"
+ done
+ echo ")"
+ status=1
+ fi
+}
+
+# prepare for a save-able pmcd and pmda configuration.
+#
+_prepare_pmda_install()
+{
+ [ -z "$1" ] && echo "Error: bad _prepare_pmda_install call"
+ iam=$1
+
+ # copy the pmcd config file to restore state later.
+ cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+ cd $PCP_PMDAS_DIR/$iam
+ if [ -f Makefile -o -f GNUmakefile ] ; then
+ if $sudo ${MAKE:-make} clobber >$tmp._tmp 2>&1 ; then
+ :
+ else
+ cat $tmp._tmp
+ echo "Arrgh, ${MAKE:-make} clobber failed"
+ exit
+ fi
+ fi
+
+ # start from a known starting point
+ $sudo ./Remove >/dev/null 2>&1
+ [ -f $PCP_VAR_DIR/config/$iam/$iam.conf ] && \
+ $sudo mv $PCP_VAR_DIR/config/$iam/$iam.conf $tmp.$iam.conf
+}
+
+# restore a saved pmcd configuration and ensure pmda back in place.
+#
+_restore_pmda_install()
+{
+ [ -z "$1" ] && echo "Error: bad _restore_pmda_install call"
+ iam=$1
+ signal=$PCP_BINADM_DIR/pmsignal
+
+ [ -f $tmp.$iam.conf ] && \
+ $sudo mv $tmp.$iam.conf $PCP_VAR_DIR/config/$iam/$iam.conf
+
+ if diff $tmp.pmcd.conf $PCP_PMCDCONF_PATH > /dev/null 2>&1
+ then
+ :
+ else
+# do a default install which ensures the pmns and any views are installed
+
+ cd $PCP_PMDAS_DIR/$iam
+ $sudo ./Install < /dev/null > /dev/null 2>&1
+
+# PMDA may have been installed differently to default. As everything is
+# installed we can use the old pmcd.conf file to restore state.
+
+ if diff $tmp.pmcd.conf $PCP_PMCDCONF_PATH > /dev/null 2>&1
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ $sudo $signal -a -s HUP pmcd
+ fi
+ fi
+}
+
+# find a local port that is not in use, optionally starting from a suggested port
+#
+_find_free_port()
+{
+ base=$1
+ [ -z "$base" ] && base=54321
+
+ while $PCP_BINADM_DIR/telnet-probe -c localhost $base
+ do
+ base=`expr $base + 1`
+ done
+ echo $base
+}
+
+_get_ino()
+{
+ # get inode number for $1
+ # throw away stderr (and return '') in case $1 has been removed by now
+ #
+ stat "$1" 2>/dev/null \
+ | sed -n '/Device:[ ].*[ ]Inode:/{
+s/Device:[ ].*[ ]Inode:[ ]*//
+s/[ ].*//
+p
+}'
+}
+
+_get_primary_logger_pid()
+{
+ # get pid for primary pmlogger
+ #
+ _primary_inode=`_get_ino $PCP_TMP_DIR/pmlogger/primary`
+ _pid=''
+ for _file in $PCP_TMP_DIR/pmlogger/*
+ do
+ case "$_file"
+ in
+ */primary|*\*)
+ ;;
+ */[0-9]*)
+ _inode=`_get_ino "$_file"`
+ if [ "$_primary_inode" = "$_inode" ]
+ then
+ _pid="`echo $_file | sed -e 's/.*\/\([^/]*\)$/\1/'`"
+ break
+ fi
+ ;;
+ esac
+ done
+ echo $_pid
+}
+
+_get_libpcp_config()
+{
+ pmconfig -L -s > $tmp.config
+ . $tmp.config
+ rm $tmp.config
+}
diff --git a/qa/common.compress b/qa/common.compress
new file mode 100644
index 0000000..a8e77cc
--- /dev/null
+++ b/qa/common.compress
@@ -0,0 +1,120 @@
+#
+# Common shell routines for testing archive (de)compression
+#
+# Copyright (c) 2014 Red Hat.
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_filter_compression()
+{
+ # Mac OS X, FreeBSD and Solaris strangeness
+ sed \
+ -e '/: Undefined error: 0/s//: Success/' \
+ -e '/: Error 0/s//: Success/' \
+ -e '/: No such file or directory/s//: Success/' \
+ -e '/^[ ]*$/d'
+}
+
+status=0 # success is the default!
+deflate=none # default compression mode (e.g. bzip2)
+inflate=none # default compression mode (e.g. unbzip2)
+suffix=.huh # default compression file suffix (e.g. bz2)
+
+$sudo rm -rf $tmp $tmp.* $seq.full
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+_prepare_compress()
+{
+ deflate="$1"
+ inflate="$2"
+ suffix="$3"
+
+ mkdir $tmp
+ cp src/mv-bigbin* $tmp
+}
+
+_run_tools()
+{
+ base=`echo $1 | sed -e 's/\..*//'`
+ [ $# -eq 1 ] && echo "pmdumplog ..."
+ pmdumplog -a $base
+ [ $# -eq 1 ] && echo "pminfo ..."
+ pminfo -f -a $1 sample.colour
+ [ $# -eq 1 ] && echo "pmprobe in the middle ..."
+ pmprobe -v -O +10sec -a $1 sampledso.milliseconds
+ [ $# -eq 1 ] && echo "pmval & pmval -r ..."
+ pmval -f 4 -t 3sec -a $1 sample.milliseconds 2>&1
+ pmval -f 4 -r -a $1 sample.milliseconds 2>&1
+ [ $# -eq 1 ] && echo "pmie ..."
+ echo 'sample.milliseconds > 0 -> print "%v";' \
+ | pmie -t 4sec -a $1 2>&1 \
+ | grep -v 'Info: evaluator exiting'
+}
+
+_exercise_compression()
+{
+ _run_tools src/mv-bigbin n | tee $full >$tmp.orig
+
+ cd $tmp
+ echo "expect only a few lines of diff output ..."
+ echo
+ echo "--- $deflate first volume ---" | tee -a $here/$seq.full
+ eval $deflate mv-bigbin.0 | _filter_compression
+ ls -l >>$here/$seq.full
+ _run_tools mv-bigbin | tee -a $here/$seq.full >$tmp.new
+ diff $tmp.orig $tmp.new | sed -e '/^[0-9]/d'
+ eval $inflate mv-bigbin.0.$suffix | _filter_compression
+
+ echo
+ echo "--- $deflate last volume and use existing .9.$suffix in -a arg ---" \
+ | tee -a $here/$seq.full
+ eval $deflate mv-bigbin.9 | _filter_compression
+ ls -l >>$here/$seq.full
+ _run_tools mv-bigbin.9.$suffix | tee -a $here/$seq.full >$tmp.new
+ diff $tmp.orig $tmp.new | sed -e '/^[0-9]/d'
+ eval $inflate mv-bigbin.9.$suffix | _filter_compression
+
+ echo
+ echo "--- $deflate middle volume and used existing .1 in -a arg ---" \
+ | tee -a $here/$seq.full
+ eval $deflate mv-bigbin.5 | _filter_compression
+ ls -l >>$here/$seq.full
+ _run_tools mv-bigbin.1 | tee -a $here/$seq.full >$tmp.new
+ diff $tmp.orig $tmp.new | sed -e '/^[0-9]/d'
+
+ echo
+ echo "--- $deflate first, middle and last volume and use .meta in -a arg ---" \
+ | tee -a $here/$seq.full
+ eval $deflate mv-bigbin.0 | _filter_compression
+ eval $deflate mv-bigbin.9 | _filter_compression
+ ls -l >>$here/$seq.full
+ _run_tools mv-bigbin.meta | tee -a $here/$seq.full >$tmp.new
+ diff $tmp.orig $tmp.new | sed -e '/^[0-9]/d'
+
+ echo
+ echo "--- $deflate first few, middle and last few volumes and use existing .7.$suffix in -a arg ---" \
+ | tee -a $here/$seq.full
+ eval $deflate mv-bigbin.1 | _filter_compression
+ eval $deflate mv-bigbin.7 | _filter_compression
+ eval $deflate mv-bigbin.8 | _filter_compression
+ ls -l >>$here/$seq.full
+ _run_tools mv-bigbin.7.$suffix | tee -a $here/$seq.full >$tmp.new
+ diff $tmp.orig $tmp.new | sed -e '/^[0-9]/d'
+
+ echo
+ echo "--- some error cases ---"
+ for arch in mv-bigbin.10 mv-bigbin.10.$suffix
+ do
+ pminfo -a $arch
+ pmprobe -a $arch sample.bin
+ pmval -a $arch sample.milliseconds
+ pmie -a $arch </dev/null
+ done
+ touch null.0.$suffix null.meta null.index
+ pminfo -a null 2>&1 | _filter_compression
+}
diff --git a/qa/common.config b/qa/common.config
new file mode 100644
index 0000000..047e228
--- /dev/null
+++ b/qa/common.config
@@ -0,0 +1,103 @@
+# common PCP QA configuration parameters
+#
+# NOTE each local site will need to either add stuff in here or have
+# a local version of this file
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+. ./localconfig
+
+# The ones of interest
+#
+# PCPQA_CLOSE_X_SERVER
+# host running an X server that allows remote X11 requests and
+# has a low-latency network connection to where the tests are
+# being run
+#
+# PCPQA_FAR_PMCD
+# a remote host across the Pacific that should be running pmcd(1)
+#
+# PCPQA_HYPHEN_HOST
+# a remote host that has a hyphen (-) in the hostname and is running
+# pmcd(1) ... you may need to make a local alias in /etc/hosts or
+# equivalent if you don't have a real valid hostname like this.
+#
+# PCPQA_SOCKS_SERVER
+# the local "socks" server to be used with pmsocks(1) ... may be
+# a hostname or an IP address
+#
+# PCPQA_CISCO_ROUTER
+# a cisco router that can be monitored with pmdacisco during QA
+#
+
+# domain-based defaults
+#
+domain=`_get_fqdn | sed -e 's/[^.][^.]*\.//'`
+
+case "$domain"
+in
+ engr.sgi.com)
+ PCPQA_CLOSE_X_SERVER=${PCPQA_CLOSE_X_SERVER:-groan:0}
+ PCPQA_FAR_PMCD=${PCPQA_FAR_PMCD:-snort.melbourne.sgi.com}
+ PCPQA_HYPHEN_HOST=${PCPQA_HYPHEN_HOST:-gate-babylon}
+ PCPQA_SOCKS_SERVER=sgigate.sgi.com
+ PCPQA_CISCO_ROUTER=melbourne-l0.wan.sgi.com
+ ;;
+ melbourne.sgi.com)
+ PCPQA_CLOSE_X_SERVER=${PCPQA_CLOSE_X_SERVER:-rattle:0}
+ PCPQA_FAR_PMCD=${PCPQA_FAR_PMCD:-babylon.engr.sgi.com}
+ # foo-bar.melbourne is also known as ptg-gate.melbourne
+ PCPQA_HYPHEN_HOST=${PCPQA_HYPHEN_HOST:-foo-bar.melbourne.sgi.com}
+ PCPQA_SOCKS_SERVER=sgigate.sgi.com
+ PCPQA_CISCO_ROUTER=melbourne-l0.wan.sgi.com
+ ;;
+ engr.acx)
+ PCPQA_CLOSE_X_SERVER=:0
+ PCPQA_FAR_PMCD=${PCPQA_FAR_PMCD:-web1.drp.acx}
+ PCPQA_HYPHEN_HOST=${PCPQA_HYPHEN_HOST:-nathan-laptop}
+ PCPQA_SOCKS_SERVER=${PCPQA_SOCKS_SERVER:-my_socks_server}
+ PCPQA_CISCO_ROUTER=${PCPQA_CISCO_ROUTER:-cisco}
+ ;;
+ scott.net.au)
+ PCPQA_CLOSE_X_SERVER=:0
+ PCPQA_FAR_PMCD=${PCPQA_FAR_PMCD:-verge}
+ PCPQA_HYPHEN_HOST=${PCPQA_HYPHEN_HOST:-debian-laptop}
+ PCPQA_SOCKS_SERVER=${PCPQA_SOCKS_SERVER:-my_socks_server}
+ PCPQA_CISCO_ROUTER=${PCPQA_CISCO_ROUTER:-cisco_router}
+ ;;
+ localdomain|localhost|local)
+ PCPQA_SOCKS_SERVER=${PCPQA_SOCKS_SERVER:-my_socks_server}
+ case "`hostname | sed -e 's/\..*//'`"
+ in
+ bozo|bozo-laptop|bozo-vm)
+ PCPQA_HYPHEN_HOST=bozo-vm
+ # LinuxMint
+ PCPQA_CLOSE_X_SERVER=localhost:10.0
+ # Ubuntu
+ PCPQA_CLOSE_X_SERVER=$DISPLAY
+ PCPQA_SOCKS_SERVER=192.168.1.100
+ ;;
+ vm*|comma)
+ PCPQA_CLOSE_X_SERVER=$DISPLAY
+ PCPQA_SOCKS_SERVER=192.168.1.100
+ ;;
+ *)
+ PCPQA_CLOSE_X_SERVER=:0.0
+ ;;
+ esac
+ PCPQA_FAR_PMCD=${PCPQA_FAR_PMCD:-hilo.sgi.com}
+ PCPQA_HYPHEN_HOST=${PCPQA_HYPHEN_HOST:-bozo-laptop}
+ PCPQA_CISCO_ROUTER=${PCPQA_CISCO_ROUTER:-cisco_router}
+ ;;
+ *)
+ # need to set up these assignments if you're not running in one
+ # of the DNS domains above
+ #
+ PCPQA_CLOSE_X_SERVER=${PCPQA_CLOSE_X_SERVER:-:0}
+ PCPQA_HYPHEN_HOST=${PCPQA_HYPHEN_HOST:-some-host}
+ PCPQA_FAR_PMCD=${PCPQA_FAR_PMCD:-far_away_pmcd}
+ PCPQA_SOCKS_SERVER=${PCPQA_SOCKS_SERVER:-my_socks_server}
+ PCPQA_CISCO_ROUTER=${PCPQA_CISCO_ROUTER:-cisco_router}
+ ;;
+esac
diff --git a/qa/common.discovery b/qa/common.discovery
new file mode 100644
index 0000000..c83a369
--- /dev/null
+++ b/qa/common.discovery
@@ -0,0 +1,64 @@
+#
+# Common shell routines for testing service discovery
+# Copyright (c) 2014 Red Hat.
+#
+
+_filter_discovery_sought()
+{
+ # Only pmcd is guaranteed to be running, but other services may also be.
+ # Transform two cases - no servers vs found servers - into deterministic
+ # output for the --all invocations
+ sed \
+ -e 's/No \(pmproxy servers\) discovered/Sought \1/g' \
+ -e 's/No \(pmwebd servers\) discovered/Sought \1/g' \
+ -e 's/Discovered \(pmproxy servers\):/Sought \1/g' \
+ -e 's/Discovered \(pmwebd servers\):/Sought \1/g' \
+ # end
+}
+
+_filter_discovery_unresolved()
+{
+ sed -e '/ pcp:/d;
+ / proxy:/d;
+ / http:/d' \
+ | _filter_discovery_sought
+}
+
+_filter_discovery_resolved()
+{
+ # Pass unresolved urls, filter the resolved ones.
+ sed -e '/ pcp:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / proxy:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / http:\/\/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/{p;b};
+ / pcp:/d;
+ / proxy:/d;
+ / http:/d' \
+ | _filter_discovery_sought \
+ | _filter_discovery_unresolvable
+}
+
+_filter_discovery_unresolvable()
+{
+ # For each unresolved address in the response, see if we can resolve
+ # it using dig(1). If not, filter it out as an unresolvable result.
+ # Oherwise, leave it in as an erroneous result.
+ while read line
+ do
+ # If the line is an unresolved service, then see if we can resolve it
+ # using dig(1).
+ if echo $line | grep -q -e '^pcp://' -e '^proxy://' -e '^http://';
+ then
+ addr=`echo $line |
+ sed -e 's|pcp://\(.*\):[0-9]\+|\1|'`
+
+ # If dig(1) can not resolve this address, then it is a correctly
+ # unresolved address. Filter it out. Otherwise keep it as an
+ # erroneously unresolved address.
+ dug=`dig -x $addr +short`
+ [ -z "$dug" ] && continue
+ fi
+
+ # Keep this line
+ echo $line
+ done
+} \ No newline at end of file
diff --git a/qa/common.filter b/qa/common.filter
new file mode 100644
index 0000000..d3d5b63
--- /dev/null
+++ b/qa/common.filter
@@ -0,0 +1,734 @@
+# standard PCP QA test output filters
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# pmcd log file
+#
+_filter_pmcd_log()
+{
+ $PCP_AWK_PROG '
+/^active/ { state = 1 }
+/_pmRead: timeout/ && state == 0 { next }
+/pduread: timeout/ && state == 0 { next }
+/assuming PCP 1.x PMDA/ && state == 0 { next }
+/ok .* INADDR_ANY/ { $2 = "FD" }
+/ok .*pmcd.socket$/ { $2 = "FD"; $4 = "UNIX_DOMAIN_SOCKET" }
+ { print }' \
+ | sed \
+ -e '/^__pmGetAddrInfo/d' \
+ -e '/:__pmHostEntFree(/d' \
+ -e '/^__pmHostEntGetName/d' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
+ -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATE]/' \
+ -e '/pcp([0-9][0-9]*)/s//pcp(PID)/' \
+ -e '/pcp\[[0-9][0-9]*]/s//pcp[PID]/' \
+ -e '/pmcd([0-9][0-9]*)/s//pmcd(PID)/' \
+ -e '/^\(Log for pmcd on\) [^ ][^ ]*/s//\1 HOST/' \
+ -e '/^pmcd: PID/s/=.*/= PID/' \
+ -e '/started PMDA/s/=.*/= PID/' \
+ -e 's/ \[0x[0-9a-f]*]//' \
+ -e '/^->/s/->[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/-> /' \
+ -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;" \
+ -e '/get_scsi_sn:/d' \
+ -e '/Info: CleanupAgent/d' \
+ -e '/using .* kmem interface/d' \
+ -e '/pmcd_wait failed: exit status:/d' \
+ -e 's/: host-based access control/: access control/g' \
+ -e '/^User access list empty: user-based access control turned off$/d' \
+ -e '/^Group access list empty: group-based access control turned off$/d' \
+ -e '/pmcd caught SIG.* from pid=/s/=[0-9][0-9]*/=N/g' \
+ -e '/^linux.*pmda_linux/{
+s/linux/[OS] /
+s/60/??/
+s/ i:[0-9] / i:? /
+s/lib=[^ ]*/lib=[OS]pmda.$DSO_SUFFIX/
+s/entry=[^ ]*/entry=[OS]_init/
+}' \
+ -e '/^darwin.*pmda_darwin/{
+s/darwin/[OS] /
+s/78/??/
+s/ i:[0-9] / i:? /
+s/lib=[^ ]*/lib=[OS]pmda.$DSO_SUFFIX/
+s/entry=[^ ]*/entry=[OS]_init/
+}' \
+ -e '/^solaris.*pmda_solaris/{
+s/solaris/[OS] /
+s/75/??/
+s/ i:[0-9] / i:? /
+s/lib=[^ ]*/lib=[OS]pmda.$DSO_SUFFIX/
+s/entry=[^ ]*/entry=[OS]_init/
+}' \
+ -e "/^pmcd.*pmda_pmcd/s/lib=.*pmda_pmcd.$DSO_SUFFIX/lib=...pmda_pmcd.\$DSO_SUFFIX/" \
+ -e '/Warning:.* linux .* Direct mapping/d' \
+ -e '/NOTICE: using \/proc\/partitions for disk I\/O stats/d' \
+ -e '/NOTICE: using \/proc\/diskstats for disk I\/O stats/d' \
+ -e '/NOTICE: detected slabinfo version/d' \
+ -e '/Warning: xfs metrics are not available/d' \
+ -e '/Warning: cihb_getstats: info+recv init: /d' \
+ -e '/Warning: cihb_getstats: V0 api probe: Not supported/d' \
+ -e '/Warning: cihb_getstats: V0 api probe: Invalid argument/d' \
+ -e '/Warning: cihb_getstats: V[01] api probe: Resource temporarily unavailable/d' \
+ -e '/Warning: cihb_getstats: no stats available in this kernel/d' \
+ -e '/Warning: cihb_getstats: no support for V0 or V1 api/d' \
+ -e '/Warning: common_init: NON-CXFS Kernel: disabling metrics/d' \
+ -e '/Warning: nfsd_init: direct map disabled/d' \
+ -e '/Warning: cxfs_.*: NON-CXFS Kernel: disabling metrics/d' \
+ -e '/Warning: cxfs_.*: NON-CXFS or incompatible Kernel: disabling metrics/d' \
+ -e '/Warning: cxfs_common_init: direct map disabled/d' \
+ -e '/Warning: cxfs_server_init: direct map disabled/d' \
+ -e '/Warning: kmeminit: cannot change to group "sys": Operation not permitted/d' \
+ -e '/Warning: cms_getstats: could not retrieve stats version Not supported/d' \
+ -e '/Warning: cms_getstats: could not retrieve stats version Invalid argument/d' \
+ -e '/Warning: cms_reload: No cms instrumentation in this kernel:/d' \
+ -e '/Error: Cannot open stat device \/hw\/tape/d' \
+ -e '/Note: computed HZ=/d' \
+ -e '/Warning: Symbol address mismatch between System.map/d' \
+ -e '/Warning: mismatch for .* between System.map/d' \
+ -e '/Warning: only reported first .* mismatches between System.map/d' \
+ -e '/Warning: proc.psinfo.wchan_s symbol names may not be accurate!/d' \
+ -e '/Warning: Valid System.map file not found!/d' \
+ -e '/Warning: proc.psinfo.wchan_s symbol names cannot be derived!/d' \
+ -e '/Warning: Addresses will be returned for proc.psinfo.wchan_s instead!/d' \
+ -e '/NOTICE: using ".*" for kernel symbols map/d' \
+ -e '/NOTICE: using kernel 2\.4 or earlier CPU types/d' \
+ -e '/NOTICE: using kernel 2\.6\.0 to 2\.6\.4 CPU types/d' \
+ -e '/NOTICE: using 64 bit CPU time types/d' \
+ | sed \
+ -e '/Connected from.*Operations denied/{
+P
+: more
+N
+s/^..*\n//
+t more
+}' \
+ | $PCP_AWK_PROG '
+/^active agent/ { state = 1 }
+state == 2 && NF == 0 { state = 0 }
+state == 2 { print base,$0; next }
+ { print NR,$0 }
+state == 1 && /^=====/ { state = 2; base = NR+1 }' \
+ | LC_COLLATE=POSIX _POSIX2_VERSION=0 sort +0n -1 +2n -3 \
+ | sed -e 's/^[^ ]* //'
+}
+
+# pmlogger log file
+#
+_filter_pmlogger_log()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
+ -e 's/pmlogger([1-9][0-9]*) Error:/pmlogger(PID) Error:/' \
+ -e '/^pmlogger: Signalled (signal=[1-9][0-9]*).*/d' \
+ -e '/^\(Log for pmlogger on\) [^ ][^ ]*/s//\1 HOST/' \
+ -e '/^Starting logger/s/host ".*/host "HOST"/' \
+ -e '/^Archive basename: /s/:.*/: ARCHIVE/' \
+ -e '/^pmlc request/s/ from .*:/ from HOST:/'
+}
+
+# pmie log file
+#
+_filter_pmie_log()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]/DATE/' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e '/^\(Log for pmie on\) [^ ][^ ]*/s//\1 HOST/' \
+ -e 's/^pmie: PID = [0-9][0-9]*, default host = .*/pmie: PID,HOST/g' \
+ -e '/pmie(.*) Info: pmie caught SIGINT or SIGTERM/d' \
+ -e '/pmie([0-9][0-9]*)/s//pmie(PID)/' \
+ -e '/^pmie: /s/- on line/- near line/'
+}
+_show_pmie_exit()
+{
+ fgrep "evaluator exiting" | \
+ sed -e 's/.* Info: evaluator exiting/pmie: note - evaluator exiting/g'
+}
+_show_pmie_errors()
+{
+ egrep -v '^Log finished |^Log for pmie on ' \
+ | $PCP_AWK_PROG '{ if (NF > 0) print }' \
+ | sed \
+ -e 's/.*Info: evaluator exiting/pmie: note - evaluator exiting/g' \
+ -e '/^pmie: /s/- on line/- near line/'
+}
+
+# pmdumplog -a
+#
+_filter_pmdumplog()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+ -e '/^\(Performance metrics from host\) [^ ][^ ]*/s//\1 HOST/' \
+ -e '/^archive:/s/\( *\).*/\1ARCHIVE/' \
+ -e '/^host:/s/\( *\).*/\1HOST/'
+}
+
+# pmdumptext
+#
+_filter_pmdumptext()
+{
+ sed \
+ -e 's/^[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/'
+}
+
+# some common -D diagnostics
+#
+_filter_dbg()
+{
+ sed \
+ -e '/^__pmLogSetTime(/s/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
+ -e '/^__pmLogRead:/s/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
+}
+
+# cull the optional PMDA
+#
+_filter_optional_pmdas()
+{
+ sed \
+ -e '/pmdaaconex/d' \
+ -e '/pmdaapache/d' \
+ -e '/pmdaarray/d' \
+ -e '/pmdaash/d' \
+ -e '/pmdabash/d' \
+ -e '/pmdabonding/d' \
+ -e '/pmdabrocade/d' \
+ -e '/pmdacisco/d' \
+ -e '/pmdadbping/d' \
+ -e '/pmdadmcache/d' \
+ -e '/pmdadmf/d' \
+ -e '/pmda_environ/d' \
+ -e '/pmdaelasticsearch/d' \
+ -e '/pmdaespping/d' \
+ -e '/pmdagfs2/d' \
+ -e '/pmdagluster/d' \
+ -e '/pmdahippi/d' \
+ -e '/pmdahotproc/d' \
+ -e '/pmdaib/d' \
+ -e '/pmdainfiniband/d' \
+ -e '/pmdainfmx7/d' \
+ -e '/pmdainfmxping/d' \
+ -e '/pmdajbd2/d' \
+ -e '/pmdajstat/d' \
+ -e '/pmdakvm/d' \
+ -e '/pmdalab/d' \
+ -e '/pmdalogger/d' \
+ -e '/pmdalmsensors/d' \
+ -e '/pmdalockstat/d' \
+ -e '/pmdalsf/d' \
+ -e '/pmdamaillog/d' \
+ -e '/pmdamailq/d' \
+ -e '/pmdamemcache/d' \
+ -e '/pmdammv/d' \
+ -e '/pmdamounts/d' \
+ -e '/pmdampi/d' \
+ -e '/pmdamysql/d' \
+ -e '/pmdanamed/d' \
+ -e '/pmdanasavg/d' \
+ -e '/pmdanetfilter/d' \
+ -e '/pmdanetprobe/d' \
+ -e '/pmdanews/d' \
+ -e '/pmdanginx/d' \
+ -e '/pmdanvidia/d' \
+ -e '/pmdaoracle/d' \
+ -e '/pmdaoraping/d' \
+ -e '/pmdapapi/d' \
+ -e '/pmdapdns/d' \
+ -e '/pmdapmcd/d' \
+ -e '/pmdaproc/d' \
+ -e '/pmdaprocess/d' \
+ -e '/pmdarpm/d' \
+ -e '/pmdarsyslog/d' \
+ -e '/pmdaroomtemp/d' \
+ -e '/pmdasamba/d' \
+ -e '/pmdasendmail/d' \
+ -e '/pmdashping/d' \
+ -e '/pmda_simple/d' \
+ -e '/pmdasimple/d' \
+ -e '/pmdasnia/d' \
+ -e '/pmdasnmp/d' \
+ -e '/pmdassping/d' \
+ -e '/pmdasummary/d' \
+ -e '/pmdasystemd/d' \
+ -e '/pmdasystemtap/d' \
+ -e '/pmdasyb10/d' \
+ -e '/pmdasybping/d' \
+ -e '/pmdatrace/d' \
+ -e '/pmdatrivial/d' \
+ -e '/pmdatxmon/d' \
+ -e '/pmdavmware/d' \
+ -e '/pmdawatch/d' \
+ -e '/pmdaweblog/d' \
+ -e '/pmdawebping/d' \
+ -e '/pmdaxfs/d' \
+ -e '/pmdaxvm/d' \
+ -e '/pmdazimbra/d' \
+ -e '/pmdazswap/d' \
+
+}
+
+# cull the optional top-level PMNS entries
+#
+_filter_top_pmns()
+{
+ sed \
+ -e 's/$/ /' \
+ -e '/^ aim /d' \
+ -e '/^ array /d' \
+ -e '/^ ash /d' \
+ -e '/^ bash /d' \
+ -e '/^ bonding /d' \
+ -e '/^ brocade /d' \
+ -e '/^ broken /d' \
+ -e '/^ cgroup /d' \
+ -e '/^ cisco /d' \
+ -e '/^ datatape /d' \
+ -e '/^ dbping /d' \
+ -e '/^ dmcache /d' \
+ -e '/^ dmf /d' \
+ -e '/^ elasticsearch /d' \
+ -e '/^ environ /d' \
+ -e '/^ gfs2 /d' \
+ -e '/^ gluster /d' \
+ -e '/^ hippi /d' \
+ -e '/^ hotproc /d' \
+ -e '/^ hw /d' \
+ -e '/^ infmxping /d' \
+ -e '/^ informix /d' \
+ -e '/^ jbd2 /d' \
+ -e '/^ jstat /d' \
+ -e '/^ kvm /d' \
+ -e '/^ lab /d' \
+ -e '/^ lmsensors /d' \
+ -e '/^ logger /d' \
+ -e '/^ lsf /d' \
+ -e '/^ mailq /d' \
+ -e '/^ memcache /d' \
+ -e '/^ mmv /d' \
+ -e '/^ mpi /d' \
+ -e '/^ mysql /d' \
+ -e '/^ named /d' \
+ -e '/^ netfilter /d' \
+ -e '/^ netprobe /d' \
+ -e '/^ news /d' \
+ -e '/^ nginx /d' \
+ -e '/^ nvidia /d' \
+ -e '/^ oracle /d' \
+ -e '/^ oraping /d' \
+ -e '/^ pdns /d' \
+ -e '/^ postgresql /d' \
+ -e '/^ proc /d' \
+ -e '/^ rpm /d' \
+ -e '/^ rsyslog /d' \
+ -e '/^ samba /d' \
+ -e '/^ sendmail /d' \
+ -e '/^ shping /d' \
+ -e '/^ simple /d' \
+ -e '/^ snmp /d' \
+ -e '/^ ssping /d' \
+ -e '/^ espping /d' \
+ -e '/^ summary /d' \
+ -e '/^ sybase /d' \
+ -e '/^ sybping /d' \
+ -e '/^ sysother /d' \
+ -e '/^ systemd /d' \
+ -e '/^ systemtap /d' \
+ -e '/^ trace /d' \
+ -e '/^ trivial /d' \
+ -e '/^ txmon /d' \
+ -e '/^ vmware /d' \
+ -e '/^ web /d' \
+ -e '/^ webping /d' \
+ -e '/^ zimbra /d' \
+ -e '/^ zswap /d' \
+ -e 's/ $//'
+
+}
+
+# handle pmDumpResult() output
+#
+_filter_dumpresult()
+{
+ sed \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \
+ -e '/value /{
+s/\(value.*\) 0x[0-9a-f][0-9a-f]*/\1 HEXNUMBER/
+s/\(value.*\) -*[0-9][0-9]*\.[0-9][0-9]*e[+-]*[0-9][0-9]*/\1 NUMBER/
+s/\(value.*\) -*[0-9][0-9]*\.[0-9][0-9]*/\1 NUMBER/
+s/\(value.*\) -*[0-9][0-9]*\.[0-9][0-9]*/\1 NUMBER/
+s/\(value.*\) -*[0-9][0-9]*e[+-]*[0-9][0-9]*/\1 NUMBER/
+s/\(value.*\) -*[0-9][0-9]*/\1 NUMBER/
+s/\(value.*\) \[.*]/\1 AGGREGATE/
+s/\(value.*\) ".*"/\1 STRING/
+}' \
+ -e '/inst /{
+s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/
+s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK];
+}'
+
+}
+
+_filter_cron_scripts()
+{
+ sed \
+ -e 's/cron\.pmcheck/PMLOGGER.CHECK/g' \
+ -e 's/pmlogger_check/PMLOGGER.CHECK/g' \
+ -e 's/pmlogger\.check/PMLOGGER.CHECK/g' \
+ -e 's/cron\.pmdaily/PMLOGGER.DAILY/g' \
+ -e 's/pmlogger_daily/PMLOGGER.DAILY/g' \
+ -e 's/pmlogger\.daily/PMLOGGER.DAILY/g' \
+ -e 's/cron\.logmerge/PMLOGGER.MERGE/g' \
+ -e 's/cron\.pmlogmerge/PMLOGGER.MERGE/g' \
+ -e 's/pmlogger\.merge/PMLOGGER.MERGE/g' \
+ -e 's/pmlogger_merge/PMLOGGER.MERGE/g' \
+ -e 's/cron\.pmsnap/pmsnap/g'
+}
+
+_filter_pcp_start()
+{
+ sed \
+ -e "s;$PCP_LOG_DIR/pmcd/pmcd.log;\$PCP_LOG_DIR/pmcd.log;" \
+ -e "s;$PCP_LOG_DIR/pmcd.log;\$PCP_LOG_DIR/pmcd.log;" \
+ -e "s;$PCP_RC_DIR/pmcd;\$PCP_RC_DIR/pmcd;" \
+ -e "s;$PCP_RC_DIR/pmlogger;\$PCP_RC_DIR/pmlogger;" \
+ -e "s;$PCP_RC_DIR/pcp;\$PCP_RC_DIR/pmcd;" \
+ -e '/$PCP_RC_DIR\/pmcd/{
+s/ PMCD / pmcd /
+}' \
+ -e "s;$PCP_BINADM_DIR/pmcd;\$PCP_BINADM_DIR/pmcd;" \
+ -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;" \
+ -e "s;$PCP_PMLOGGERCONTROL_PATH;\$PCP_PMLOGGERCONTROL_PATH;" \
+ -e "s;$PCP_VAR_DIR/;\$PCP_VAR_DIR/;" \
+ -e "s;$PCP_SYSCONF_DIR/;\$PCP_SYSCONF_DIR/;" \
+ -e "s;/usr/etc/pmcd;\$PCP_BINADM_DIR/pmcd;" \
+ -e '/Warning: Forcing PMCD to terminate!/s/PMCD/pmcd/' \
+ -e '/^Starting PCP$/d' \
+ -e 's/^\(Performance Co-Pilot starting .*\.\.\.\) *\(\$PCP_RC_DIR\)/\1\
+\2/' \
+ -e '/^Performance Co-Pilot/s/\.\.\. *$/.../' \
+ -e '/^Performance Co-Pilot starting/{
+s/\.\.\.[. ]*done/.../
+s/\.\.\.[. ]*failed/.../
+s/Performance Co-Pilot starting PMCD (logfile is [^)]*) .../Starting pmcd ... /
+s/Performance Co-Pilot starting archive loggers .../Starting pmlogger ... /
+}' \
+ -e '/^Performance Co-Pilot installing/s//Installing/' \
+ -e '/^\.[. ]*done$/d' \
+ -e '/^\.[. ]*failed$/d' \
+ -e '/^Waiting for PMCD/{
+s/PMCD/pmcd/
+s/\.\.\.[. ]*done/.../
+s/\.\.\.\.*/.../
+}' \
+ -e '/^Waiting for pmcd/{
+s/\.\.\.[. ]*done/.../
+s/\.\.\.\.*/.../
+}' \
+ -e 's/^\(Waiting .*\.\.\.\)\(\$PCP_RC_DIR\)/\1\
+\2/' \
+ -e '/^[ ]*$/d' \
+ | _filter_init_distro
+}
+
+_filter_pcp_stop()
+{
+ sed \
+ -e '/Stopping pmlogger .../d' \
+ -e '/^Waiting for PMIE/s/PMIE/pmie/' \
+ -e '/^Waiting for pmie/s/\.\.\.[. ]*done/.../' \
+ -e '/^Waiting for PMCD/{
+s/\.\.\.[. ]*done/.../
+s/PMCD/pmcd/
+s/\.\.\.\.*/.../
+}' \
+ -e '/^Waiting for pmcd/{
+s/\.\.\.[. ]*done/.../
+s/\.\.\.\.*/.../
+}' \
+ -e '/Warning: Forcing PMCD to terminate!/s/PMCD/pmcd/' \
+ -e '/^Waiting for pmie/s/\.\.\. *$/.../' \
+ -e '/^Performance Co-Pilot/s/\.\.\. *$/.../' \
+ -e '/^\.[. ]*done$/d' \
+ | _filter_init_distro
+}
+
+_filter_pmie_start()
+{
+ sed \
+ -e '/^Waiting for PMIE/s/PMIE/pmie/' \
+ -e '/^Waiting for pmie process(es) to terminate/d' \
+ -e "s;$PCP_RC_DIR/pmie;\$PCP_RC_DIR/pmie;g" \
+ -e '/(pmie) is disabled/d' \
+ -e '/To enable/d' \
+ -e '/update-rc.d -f pmie remove/d' \
+ -e '/update-rc.d pmie defaults/d' \
+ -e '/\/sbin\/chkconfig pmie on/d' \
+ -e '/\/usr\/sbin\/sysv-rc-conf pmie on/d' \
+ -e '/update-rc.d -f pmie defaults/d' \
+ -e '/ln -sf \.\.\/init.d\/pmie \/etc\/rc\.d\//d' \
+ -e "s;$PCP_PMIECONTROL_PATH;\$PCP_PMIECONTROL_PATH;" \
+ -e '/^\.\.*done$/d' \
+ -e "s;/private/tmp;/tmp;g" \
+ -e '/^$/d' \
+ | _filter_init_distro
+}
+
+_filter_pmie_stop()
+{
+ sed \
+ -e "s;$PCP_RC_DIR/pmie;\$PCP_RC_DIR/pmie;g" \
+ -e '/^Waiting for PMIE/s/PMIE/pmie/' \
+ -e '/^Waiting for pmie/s/\.\.\.[. ]*done/.../' \
+ -e '/^Waiting for pmie/s/\.\.\. *$/.../' \
+ | _filter_init_distro
+}
+
+_filterall_pcp_start()
+{
+ _filter_pcp_start \
+ | sed \
+ -e '/rebuilding PMNS/d' \
+ -e '/installing /d'
+}
+
+_sort_pmdumplog_d()
+{
+ cat >$tmp.tmp
+ egrep '(^Descriptions)|(^$)' $tmp.tmp
+ $PCP_AWK_PROG <$tmp.tmp '
+/^Descriptions/ { next }
+NF == 0 { next }
+$1 == "PMID:" { printf "%s|",$0; next }
+$1 == "Data" { printf "%s|",$0; next }
+ { print }' \
+ | LC_COLLATE=POSIX _POSIX2_VERSION=0 sort -t'(' +1 -2 \
+ | tr '|' '\012' \
+ | src/hex2nbo
+}
+
+_filter_pmda_install()
+{
+ sed \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/' \
+ -e '/^Installing .mchart view*/d' \
+ -e '/Terminate PMDA/,/Updating the PMCD/c\
+Terminate PMDA if already installed ...\
+[...install files, make output...]\
+Updating the PMCD control file, and notifying PMCD ...' \
+ -e '/Installing files/,/Updating the Performance Metrics/c\
+Installing files ...\
+[...install files, make output...]\
+Updating the Performance Metrics Name Space (PMNS) ...'
+}
+
+_filter_pmda_remove()
+{
+ _filter_pmda_install |
+ sed \
+ -e '/Removing files/d' \
+ -e '/Updating the PMCD control file/c\
+Updating the PMCD control file, and notifying PMCD ...\
+[...removing files...]'
+}
+
+# Make sure that quotes which span multiple lines get appended onto
+# the one line, separated by \\n (instead of newlines).
+# This allows for easier sed processing.
+# BUG: problem handling a single " which isn't supposed to match,
+# say in a comment or pattern search
+# Partial solution: filter out: /"/
+#
+_quote_filter()
+{
+ sed -e 's#/"/#/dbl-quote/#g' |\
+ $PCP_AWK_PROG '
+ /"/ { # unfinished quote - start or end
+ n = split($0, arr, /"/)
+ if ( (n % 2) == 0) { # odd number of quotes
+ line[line_num++] = $0
+ if (inquote) {
+ inquote = 0
+ for(i=0;i<=line_num;i++){
+ printf("%s\\n", line[i])
+ }
+ printf("\n")
+ line_num = 0
+ }
+ else {
+ inquote = 1
+ }
+ next
+ }
+ else {
+ print; next
+ }
+ }
+ inquote == 1 {
+ line[line_num++] = $0
+ next
+ }
+ {print}
+ '
+}
+
+#
+# concat lines between inst/value pairs
+# inst ... value
+# inst ... value XXXX
+# YYYYYYY
+# inst ... value
+# becomes
+# inst ... value
+# inst ... value XXXX\\nYYYYYYY
+# inst ... value
+#
+_inst_value_filter()
+{
+ $PCP_AWK_PROG '
+ function print_line() {
+ if (line_num > 0) {
+ for(i=0;i<line_num-1;i++){
+ printf("%s\\n", line[i])
+ }
+ printf("%s", line[line_num-1]);
+ printf("\n")
+ line_num = 0
+ }
+ }
+$1 == "inst" && $2 ~ /^\[/ {
+ print_line()
+ line[line_num++] = $0
+ next
+ }
+ # terminate run of inst...value ".... extending over multiple
+ # lines with a line ending in a ", or a line introducing new
+ # proc metric
+ /"$/ && line_num > 0 {
+ line[line_num++] = $0
+ print_line()
+ next
+ }
+ ( (/proc\./ && /numval/ && /valfmt/) || /^proc\./ ) \
+ && line_num > 0 {
+ x = $0
+ print_line()
+ print x
+ next
+ }
+ line_num>0 { # continuation of value
+ line[line_num++] = $0
+ next
+ }
+ {print}
+ END {
+ print_line()
+ }
+ '
+}
+
+_filter_torture_api()
+{
+ sed \
+ -e '/Name space load/d' \
+ -e '/PMAPI operations/s/[0-9][0-9]* PMAPI/N PMAPI/' \
+ | _filter_top_pmns \
+ | _filter_dumpresult \
+ | sed -e '/PM_ID_NULL/{
+/No values returned!/s//No PMDA, no values [filtered]/
+/No PMCD agent for domain of request/s//No PMDA, no values [filtered]/
+}' \
+ -e '/kernel\.all\.pswitch/s/valfmt: [01]/valfmt: 0-or-1/' \
+ -e '/kernel\.all\.cpu/s/valfmt: [01]/valfmt: 0-or-1/' \
+ -e '/^ hostname /d' \
+ -e '/^ license /d' \
+ -e '/^ services /d' \
+ -e '/^ aconex /d' \
+ -e '/^ apache /d' \
+ -e '/^ bonding /d' \
+ -e '/^ cihb /d' \
+ -e '/^ cms /d' \
+ -e '/^ cxfs /d' \
+ -e '/^ dmcache /d' \
+ -e '/^ dynamic /d' \
+ -e '/^ elasticsearch /d' \
+ -e '/^ engr /d' \
+ -e '/^ feature /d' \
+ -e '/^ idiot /d' \
+ -e '/^ idl /d' \
+ -e '/^ infiniband /d' \
+ -e '/^ ipc /d' \
+ -e '/^ kaio /d' \
+ -e '/^ kpreempt /d' \
+ -e '/^ kswitch /d' \
+ -e '/^ kvm /d' \
+ -e '/^ maillog /d' \
+ -e '/^ mounts /d' \
+ -e '/^ mt /d' \
+ -e '/^ named /d' \
+ -e '/^ nasavg /d' \
+ -e '/^ netfilter /d' \
+ -e '/^ numa /d' \
+ -e '/^ nvidia /d' \
+ -e '/^ origin /d' \
+ -e '/^ papi /d' \
+ -e '/^ pdns /d' \
+ -e '/^ p76 /d' \
+ -e '/^ process /d' \
+ -e '/^ roomtemp /d' \
+ -e '/^ rpm /d' \
+ -e '/^ rsyslog /d' \
+ -e '/^ samba /d' \
+ -e '/^ softtemp /d' \
+ -e '/^ stream /d' \
+ -e '/^ sysfs /d' \
+ -e '/^ sysioctl /d' \
+ -e '/^ tmpfs /d' \
+ -e '/^ udf /d' \
+ -e '/^ vfs /d' \
+ -e '/^ vmware /d' \
+ -e '/^ waitio /d' \
+ -e '/^ xvm /d' \
+ -e '/^ zimbra /d' \
+ -e '/^ zswap /d' \
+
+}
+
+_filter_install()
+{
+ sed \
+ -e 's/.* \(hash table entries\)/ NNN \1/' \
+ -e 's/.* \(non-leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(leaf nodes\)/ NNN \1/' \
+ -e 's/.* \(bytes of symbol table\)/ NNN \1/' \
+ -e '/Performance Co-Pilot starting/d'
+}
+
+_filter_post()
+{
+ sed \
+ -e 's/^host [^ :]*:/host <host>:/'
+}
+
+_filter_console()
+{
+ sed \
+ -e 's/^ *[0-9]*\.[0-9][0-9]/<timestamp>/' \
+ -e 's/0x0$/(nil)/' \
+ -e 's/0x[0-9a-f]*/<addr>/' \
+ -e 's/src=[^ ]*/src=<host>/' \
+ -e '/Tab::updateTimeAxis:/s/used .*/used .../'
+}
+
+_filter_views()
+{
+ sed \
+ -e "s,^Load View: $PCP_VAR_DIR,Load View: PCP_VAR_DIR," \
+ -e '/QGtkStyle was unable to detect the current GTK+ theme./d'
+}
diff --git a/qa/common.gfs2 b/qa/common.gfs2
new file mode 100644
index 0000000..4606e1f
--- /dev/null
+++ b/qa/common.gfs2
@@ -0,0 +1,154 @@
+#
+# Common pre-test checking and settings for GFS2 QA. Handles setup for
+# the basic environment needed for GFS2 pmda testing.
+#
+# Copyright (c) 2013 Red Hat, Inc. All Rights Reserved.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_gfs2_filesystem_support_tests()
+{
+ [ $PCP_VER -ge 3611 ] || _notrun "Installed pcp version is too old"
+ [ $PCP_PLATFORM = linux ] || _notrun "GFS2 test, only works with Linux"
+
+ grep gfs2 /proc/filesystems >/dev/null
+ if [ $? -ne 0 ]; then
+ $sudo modprobe gfs2
+ if [ $? -ne 0 ]; then
+ _notrun "no GFS2 module to load and not builtin"
+ fi
+
+ grep gfs2 /proc/filesystems >/dev/null
+ if [ $? -ne 0 ]; then
+ _notrun "failed to load the gfs2 module successfully, sorry"
+ fi
+ fi
+
+ if ! type "mkfs.gfs2" > /dev/null; then
+ _notrun "mkfs.gfs2 not found, please install gfs2-utils"
+ fi
+}
+
+_debugfs_mount_tests()
+{
+ if [ ! -d /sys/kernel/debug/gfs2/ ]; then
+ $sudo mount -t debugfs none /sys/kernel/debug
+
+ if [ ! -d /sys/kernel/debug/gfs2/ ]; then
+ _notrun "debugfs not mounted and have been unable to mount"
+ fi
+ fi
+}
+
+_gfs2_tracepoints_support_tests()
+{
+ [ -d /sys/kernel/debug/tracing/events/gfs2 ] || \
+ _notrun "No kernel support for GFS2 tracepoint stats"
+
+ [ -d /sys/kernel/debug/tracing/events/gfs2/gfs2_glock_lock_time ] || \
+ _notrun "No GFS2 support for gfs2_glock_lock_time tracepoint"
+}
+
+_gfs2_sysfs_support_tests()
+{
+ for fs in 1 0
+ do
+ [ -f /sys/kernel/debug/gfs2/loop$fs/glocks ] || \
+ _notrun "No GFS2 glocks sysfs support"
+
+ [ -f /sys/kernel/debug/gfs2/loop$fs/glstats ] || \
+ _notrun "No GFS2 glstats sysfs support"
+
+ [ -f /sys/kernel/debug/gfs2/loop$fs/sbstats ]|| \
+ _notrun "No GFS2 sbstats sysfs support"
+ done
+}
+
+_gfs2_filter_pminfo()
+{
+ # The order in which loop device paths are evaluated is non-deterministic
+ # but that's ok; we just want to check both are found and have some value
+ #
+ tee -a $here/$seq.full | sed \
+ -e 's/value [-?0-9.e+][-?0-9.e+]*/value NUMBER/' \
+ -e 's/"loop[01]"/"loopN"/g'
+}
+
+_pmcount()
+{
+ pminfo $1 | grep -c .
+}
+
+_filter_gfs2()
+{
+ sed -e 's/ and [0-9[0-9]* values/ and N values/g'
+}
+
+_setup_gfs2_mounts()
+{
+ # create a couple of filesystems on sparse files, mount.
+ for fs in 1 0
+ do
+ echo "creating pseudo device $fs"
+ dd of=$tmp.loop$fs if=/dev/zero bs=1048576 seek=1024 count=1 2>/dev/null
+ echo "creating a mount point $fs"
+ mkfs.gfs2 -O -p lock_nolock -j 1 $tmp.loop$fs >/dev/null
+ echo "creating device file $fs"
+ $sudo losetup /dev/loop$fs $tmp.loop$fs
+ echo "creating a mount point $fs"
+ mkdir -p $tmp.mount$fs.dir
+ echo "mounting pseudo device $fs"
+ $sudo mount -t gfs2 /dev/loop$fs $tmp.mount$fs.dir
+ done
+}
+
+_setup_gfs2_tracepoints()
+{
+ enable_tracing=$1
+ [ "X$enable_tracing" == X ] && enable_tracing=false
+
+ file=/sys/kernel/debug/tracing/events/gfs2/enable
+ [ -f $file ] || _notrun "Cannot enable gfs2 tracepoints"
+
+ $enable_tracing || continue
+ echo "enabling gfs2 tracepoints"
+ $sudo sh -c "echo 1 > $file"
+}
+
+_install_pmda()
+{
+ # install the PMDA
+ cd $PCP_PMDAS_DIR/$iam
+ $sudo ./Remove < /dev/null >/dev/null 2>&1
+ $sudo ./Install < /dev/null >$tmp.out 2>&1
+ cat $tmp.out | _filter_pmda_install | sed \
+ -e '/.*pmcd.*/d' \
+ -e '/.*pmlogger.*/d' \
+ -e '/Latest.*/d' \
+ -e '/Duplicate.*/d'
+}
+
+_remove_pmda()
+{
+ cd $PCP_PMDAS_DIR/$iam
+ $sudo ./Remove < /dev/null > /dev/null 2>&1
+}
+
+_cleanup()
+{
+ for fs in 0 1
+ do
+ $sudo umount $tmp.mount$fs.dir
+ $sudo losetup -d /dev/loop$fs
+ done
+
+ _restore_pmda_install $iam
+ $sudo rm -fr $tmp.*.dir
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
diff --git a/qa/common.install.cisco b/qa/common.install.cisco
new file mode 100755
index 0000000..6763eec
--- /dev/null
+++ b/qa/common.install.cisco
@@ -0,0 +1,102 @@
+#!/bin/sh
+#
+# Install the Cisco PMDA for PCP QA
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+tmp=/var/tmp/$$
+status=0
+trap "rm -f $tmp; exit \$status" 1 2 3 15
+
+. ./common.rc
+
+# need localconfig
+#
+if [ ! -f localconfig ]
+then
+ if ./mk.localconfig
+ then
+ :
+ else
+ echo "Arrggh: Cannot make localconfig ... fix the PCP QA installation first!"
+ status=1
+ exit
+ fi
+fi
+
+. ./localconfig
+
+#DEBUG# echo PCP_VER=$PCP_VER
+
+here=`pwd`
+cd $2
+
+# melbourne-l0 (was wanptg) should have no password ... complain to
+# noc@corp.sgi.com if one re-appears
+#
+# in Mtn View, here is the scoop from shambel@sgi.com on 14 Mar 2000
+# The router that's on the other side of the ptg connection is
+# intl2.corp.sgi.com which has no user level password. Will this
+# work for you? When this router goes away (sometime later this
+# year) you can use the user level password thed00rs on almost
+# any of the cisco's in your region and most of the wan routers
+# on the wanring here in Mt View.
+#
+# Note: PCP_QA_CISCOROUTER needs to be defined in common.rc
+
+# This is done to quickly get a fully qualified hostname, either from
+# hostname(1), or pmhostname(1)
+hostnma=`$PCP_BINADM_DIR/pmhostname`
+hostnmb=`hostname`
+suprhostname=`echo "" | awk -v hostnma="$hostnma" -v hostnmb="$hostnmb" '
+END {
+ if (length(hostnma) > length(hostnmb)) print hostnma
+ else print hostnmb
+}'`
+case "$suprhostname"
+in
+ # TEMPORARY: include engr and americas until a replacement for
+ # b43-11-cisco6-168.corp can be found.
+ #
+ *.melbourne.*|*.engr.*|*.americas.*)
+ cat <<End-of-File >$tmp
+both
+$PCP_QA_CISCOROUTER
+
+End-of-File
+ if [ "$PCP_VER" -gt 2200 ]
+ then
+ echo >>$tmp
+ fi
+ cat <<End-of-File >>$tmp
+s2/2
+s2/2.1
+e1/0
+quit
+
+End-of-File
+ #DEBUG# cat $tmp
+ $sudo ./Install <$tmp >>$here/$1.out
+ ;;
+
+# *.engr.*)
+# cat <<End-of-File | $sudo ./Install >>$here/$1.out
+#both
+#b43-11-cisco6-168.corp
+#
+#
+#
+#
+#
+#quit
+#
+#End-of-File
+# ;;
+
+ *)
+ echo "Error: don't know how to install cisco PMDA on host `$PCP_BINADM_DIR/pmhostname`"
+ exit 1
+ ;;
+esac
+
diff --git a/qa/common.pcpweb b/qa/common.pcpweb
new file mode 100644
index 0000000..2342174
--- /dev/null
+++ b/qa/common.pcpweb
@@ -0,0 +1,107 @@
+#!/bin/sh
+#
+# Common pre-test checking for weblog and webping PCP QA tests
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+. ./localconfig
+. ./common.product
+
+_installed()
+{
+ versions $1 | fgrep $1 > /dev/null 2>&1
+}
+
+_remove_pmda()
+{
+ ( cd $PCP_PMDAS_DIR/$1 ; $sudo ./Remove ) 2>&1
+ _pmda_installed $1 $PCP_PMCDCONF_PATH \
+ && _fail "couldn't install $1 pmda"
+}
+
+_install_pmda()
+{
+ ( cd $PCP_PMDAS_DIR/$1 ; $sudo ./Install < /dev/null ) 2>&1
+ _pmda_installed $1 $PCP_PMCDCONF_PATH \
+ || _fail "couldn't install $1 pmda"
+}
+
+_save_state()
+{
+ $sudo cp $PCP_PMCDCONF_PATH $PCP_PMCDCONF_PATH.$seq \
+ || _fail "couldn't save pmcd.conf"
+
+ if [ -f $PCP_VAR_DIR/config/web/webping.conf ]
+ then
+ $sudo cp $PCP_VAR_DIR/config/web/webping.conf $PCP_VAR_DIR/config/web/webping.conf.$seq \
+ || _fail "couldn't save webping.conf"
+ fi
+
+ if [ -f $PCP_VAR_DIR/config/web/webdefaults ]
+ then
+ $sudo cp $PCP_VAR_DIR/config/web/webdefaults $PCP_VAR_DIR/config/web/webdefaults.$seq \
+ || _fail "couldn't save webdefaults"
+ fi
+}
+
+_pmda_installed()
+{
+ grep "^$1" "$2" >/dev/null
+}
+
+_restore_state()
+{
+ if [ -f $PCP_PMCDCONF_PATH.$seq ]
+ then
+
+ # reset pmda installation state
+ for pmda in weblog webping
+ do
+ if _pmda_installed $pmda $PCP_PMCDCONF_PATH.$seq
+ then
+ _pmda_installed $pmda $PCP_PMCDCONF_PATH \
+ || _install_pmda $pmda > /dev/null
+ else
+ _pmda_installed $pmda $PCP_PMCDCONF_PATH \
+ && _remove_pmda $pmda > /dev/null
+ fi
+ done
+
+ # copy back saved configuration files
+ [ -f $PCP_PMCDCONF_PATH.$seq ] \
+ && $sudo mv $PCP_PMCDCONF_PATH.$seq $PCP_PMCDCONF_PATH
+
+ [ -f $PCP_VAR_DIR/config/web/webping.conf.$seq ] \
+ && $sudo mv $PCP_VAR_DIR/config/web/webping.conf.$seq $PCP_VAR_DIR/config/web/webping.conf
+
+ [ -f $PCP_VAR_DIR/config/web/webdefaults.$seq ] \
+ && $sudo mv $PCP_VAR_DIR/config/web/webdefaults.$seq $PCP_VAR_DIR/config/web/webdefaults
+
+ # restart pmcd to pick up new configuration
+ $sudo $PCP_BINADM_DIR/pmsignal -a -s HUP pmcd
+ _wait_for_pmcd
+ fi
+
+}
+
+_pmget()
+{
+ pminfo -f $1 | $PCP_AWK_PROG '/^ *value/ { print $2 }' \
+ || _fail "Couldn't get value for $1"
+}
+
+_pmcount()
+{
+ pminfo $1 | grep -c .
+}
+
+_require_pmda()
+{
+ _pmda_installed $1 $PCP_PMCDCONF_PATH \
+ || _install_pmda $1 > /dev/null
+}
+
+##############################################################################
+
+unset ROOT
diff --git a/qa/common.product b/qa/common.product
new file mode 100644
index 0000000..9319907
--- /dev/null
+++ b/qa/common.product
@@ -0,0 +1,11 @@
+# define product-specific macros for QA tests
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# set up, in case QA test is run stand alone (not from check or remake)
+#
+. ./common.setup
+. ./localconfig
+
+PCP_PMCD_PATH=$PCP_BINADM_DIR/pmcd
diff --git a/qa/common.python b/qa/common.python
new file mode 100755
index 0000000..86d039d
--- /dev/null
+++ b/qa/common.python
@@ -0,0 +1,31 @@
+#
+# Common shell routines for testing python modules
+# Copyright (c) 2012-2014 Red Hat.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# verify output from unittest indicates successful testing
+_check_unittest()
+{
+ mode=$1
+ file=$2
+
+ $PCP_ECHO_PROG $PCP_ECHO_N "$mode - ""$PCP_ECHO_C"
+ if grep OK $file
+ then
+ return 0
+ fi
+
+ # Give some hint as to what went wrong ...
+ #
+ $PCP_AWK_PROG <$file '
+$1 == "FAIL:" { want = 1 }
+$1 == "File" { want = 1 }
+want == 1 && $1 == "Ran" { exit }
+want == 1 { print }'
+ return 1
+}
diff --git a/qa/common.qt b/qa/common.qt
new file mode 100644
index 0000000..f43a4d8
--- /dev/null
+++ b/qa/common.qt
@@ -0,0 +1,17 @@
+. /etc/pcp.conf
+. ./common.sh
+. ./common.check
+. ./common.filter
+. ./common.config
+
+tmp=/tmp/$$
+here=`pwd`
+sudo=sudo
+host=`hostname`
+
+# hackery for dbus-based environments
+#
+if which dbus-launch >/dev/null 2>&1
+then
+ eval `dbus-launch | grep 'BUS_ADDRESS='`
+fi
diff --git a/qa/common.rc b/qa/common.rc
new file mode 100644
index 0000000..dd0e651
--- /dev/null
+++ b/qa/common.rc
@@ -0,0 +1,86 @@
+# common preamble for lots of parts of the PCP QA environment ...
+# set $PATH, config-driven setup, etc
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+#
+# From pcpintro(1) man page ...
+#
+unset PCP_STDERR PCP_SECURE_SOCKETS
+unset PMCD_CONNECT_TIMEOUT PMCD_RECONNECT_TIMEOUT
+unset PMCD_REQUEST_TIMEOUT PMCD_WAIT_TIMEOUT
+unset PMNS_DEFAULT PCP_COUNTER_WRAP
+unset PMDA_PATH PMCD_PORT PMLOGGER_PORT
+unset PMDA_LOCAL_PROC PMDA_LOCAL_SAMPLE PMIECONF_PATH
+unset PMPROXY_PORT PMPROXY_HOST
+
+# source the PCP configuration environment variables
+if [ -r $PCP_DIR/etc/pcp.env ]
+then
+ . $PCP_DIR/etc/pcp.env
+else
+ echo "Error: unable to read $PCP_DIR/etc/pcp.env!" >&2
+ exit 1
+fi
+
+# augment $PATH for QA specific dirs
+#
+for dir in /sbin /usr/sbin
+do
+ [ -d "$dir" ] && PATH="$PATH:$dir"
+done
+
+# QA default environment variables
+PCP_PMCD_PROG=$PCP_BINADM_DIR/pmcd
+PCP_PMCDLOG_PATH=$PCP_LOG_DIR/pmcd/pmcd.log
+export PCP_PMCD_PROG PCP_PMCDLOG_PATH
+
+# In openSUSE 12.1, /etc/rc.status intercepts our rc script and passes
+# control to systemctl which uses systemd ... the result is that messages
+# from our rc scripts are sent to syslog by default, and there is no
+# apparent way to revert to the classical behaviour, so this "hack" allows
+# PCP QA to set $PCPQA_NO_RC_STATUS and continue to see stdout and stderr
+# from our rc scripts
+# - Ken 1 Dec 2011
+#
+PCPQA_NO_RC_STATUS=
+export PCPQA_NO_RC_STATUS
+
+case $PCP_PLATFORM
+in
+ linux|freebsd|solaris|aix)
+ DSO_SUFFIX=so
+ ;;
+ darwin)
+ DSO_SUFFIX=dylib
+ ;;
+ mingw)
+ DSO_SUFFIX=dll
+ ;;
+esac
+
+sudo=`which sudo`
+if $sudo -E true >/dev/null 2>&1
+then
+ # sudo has -E to preserve the environment
+ #
+ sudo="$sudo -E"
+fi
+real_sudo="$sudo"
+
+# running with PCP_DIR set, probably don't want to do most things as
+# root ... leave $real_sudo alone just in case
+# However, if $PCP_DIR exists and is owned by someone other than ourselves,
+# real sudo is guessed necessary.
+if [ -n "$PCP_DIR" ]
+then
+ pcp_dir_owner=`ls -ld $PCP_DIR | awk '{print $3}'`
+ whoami=`whoami`
+ if [ "$pcp_dir_owner" = "$whoami" ]; then
+ sudo=''
+ fi
+fi
+here=`pwd`
+tmp=/tmp/$$
+[ "X$seq" != X ] && tmp=/tmp/$seq-$$
diff --git a/qa/common.rpm b/qa/common.rpm
new file mode 100644
index 0000000..22f3f58
--- /dev/null
+++ b/qa/common.rpm
@@ -0,0 +1,212 @@
+#
+# Copyright (c) 2013-2014 Red Hat.
+#
+# Common pre-test checking and settings for pmdarpm QA. Handles
+# setup for the basic environment needed for all RPM PMDA tests.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+_rpm_support_tests()
+{
+ which rpmbuild >/dev/null 2>&1 || _notrun "No rpmbuild binary found"
+ test -x "$PCP_PMDAS_DIR/rpm/pmdarpm" || _notrun "pmdarpm not installed"
+}
+
+_rpm_pmda_prepare()
+{
+ _prepare_pmda_install rpm
+ cd $PCP_PMDAS_DIR/rpm
+ $sudo ./Install </dev/null >/dev/null 2>&1
+ cd $here
+}
+
+_rpm_pmda_restore()
+{
+ _restore_pmda_install rpm
+ cd $here
+}
+
+_remove_rpm_pmda()
+{
+ cd $PCP_PMDAS_DIR/rpm
+ $sudo ./Remove < /dev/null > /dev/null 2>&1
+ cd $here
+}
+
+#
+# Build a spec file and source tarball for a test RPM.
+# Sample specfile based on the Maximum RPM book example
+# cos I'm too lame to come up with my own lame example.
+#
+# If successful sets variables on return for later use:
+# $rpm_{bin,dbg,src}_pkg $rpm_spec $rpm_name
+#
+_rpm_package_prepare()
+{
+ echo "Preparing RPM package"
+ dir=$tmp.build.dir
+ mkdir -p $dir
+
+ tgz=qaplayer-1.0.tgz
+ tar=$dir/$tgz
+ usr=`id -u -n`
+ grp=`id -g -n`
+
+ # prepare the spec file
+ cat >$dir/qaplayer.spec <<End-of-file
+Summary: A QA player app that rocks!
+Name: qaplayer
+Version: 1.0
+Release: 1
+License: GPL
+BuildArch: noarch
+Group: Applications/Sound
+Source: $tgz
+URL: http://www.gnomovision.com/qaplayer/qaplayer.html
+Distribution: WSS Linux
+Vendor: White Socks Software, Inc.
+Packager: Santa Claus <sclaus@northpole.com>
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-$usr
+
+%description
+It slices! It dices! It's a QA player app that
+can't be beat. By using the resonant frequency
+of the QA itself, it is able to simulate 20X
+oversampling. This leads to sound quality that
+cannot be equaled with more mundane software...
+
+%prep
+%setup
+
+%clean
+rm -Rf \$RPM_BUILD_ROOT
+
+%build
+%install
+mkdir -p \$RPM_BUILD_ROOT/%{_localstatedir}/qaplayer
+
+%files
+%defattr(-,$usr,$grp)
+%dir %{_localstatedir}/qaplayer
+End-of-file
+
+ echo file: $dir/qaplayer.spec >> seq.full
+ cat $dir/qaplayer.spec >> $seq.full
+
+ # prepare a source tarball
+ mkdir qaplayer-1.0 2>/dev/null
+ ln $seq qaplayer-1.0/$seq 2>/dev/null
+ tar czf $dir/qaplayer-1.0.tgz qaplayer-1.0/$seq
+ rm -fr qaplayer-1.0
+
+ # prepare an installable RPM
+ rpmbuild -ba \
+ --define "_topdir $dir" \
+ --define '_builddir %{_topdir}' \
+ --define '_sourcedir %{_topdir}' \
+ --define '_rpmdir %{_topdir}' \
+ --define '_srcrpmdir %{_topdir}' \
+ --define '_specdir %{_topdir}' \
+ --define '_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.noarch.rpm' \
+ $dir/qaplayer.spec >> $seq.full 2>&1
+
+ rpm_dbg_pkg=$dir/qaplayer-debuginfo-1.0-1.noarch.rpm
+ rpm_bin_pkg=$dir/qaplayer-1.0-1.noarch.rpm
+ rpm_src_pkg=$dir/qaplayer-1.0-1.src.rpm
+ rpm_spec=$dir/qaplayer.spec
+ rpm_name=qaplayer
+ rpm_inst=qaplayer-1.0-1.noarch
+}
+
+_rpm_prepare_check()
+{
+ if [ "X$rpm_name" = "X" -o "X$rpm_inst" = "X" ]
+ then
+ echo "QA test bug - _rpm_package_prepare not yet done?"
+ exit 1
+ fi
+}
+
+_rpm_package_install()
+{
+ if [ "X$rpm_name" != "X" ]
+ then
+ rpm -q $rpm_name >/dev/null 2>&1
+ if [ $? -eq 0 ]
+ then
+ echo "$rpm_name already installed!?!"
+ else
+ echo "Installing $rpm_name" | tee -a $seq.full
+ echo "RPM pathname: $rpm_bin_pkg" >> $seq.full
+ $sudo rpm -i $rpm_bin_pkg >> $seq.full 2>&1
+ $sudo rpm -qa >> $seq.full 2>&1
+ fi
+ fi
+}
+
+_rpm_package_install_await()
+{
+ countdown=150 # 15 seconds
+
+ _rpm_prepare_check
+ while [ $countdown -gt 0 ]
+ do
+ pminfo -f rpm.arch | grep -q "or \"$rpm_inst\"]" && return 0
+ pmsleep 0.1
+ countdown=`expr $countdown - 1`
+ done
+
+ echo "rpm_package_install_await gave up awaiting $rpm_inst install!"
+ exit 1
+}
+
+_rpm_package_remove()
+{
+ if [ "X$rpm_name" != "X" ]
+ then
+ if rpm -q $rpm_name >/dev/null 2>&1
+ then
+ echo "Removing $rpm_name" | tee -a $seq.full
+ $sudo rpm -e $rpm_name >> $seq.full 2>&1
+ fi
+ fi
+}
+
+_rpm_package_remove_await()
+{
+ countdown=150 # 15 seconds
+
+ _rpm_prepare_check
+ while [ $countdown -gt 0 ]
+ do
+ pminfo -f rpm.arch | grep -q "or \"$rpm_inst\"]" || return 0
+ pmsleep 0.1
+ countdown=`expr $countdown - 1`
+ done
+
+ echo "rpm_package_remove_await gave up awaiting $rpm_name removal!"
+ exit 1
+}
+
+
+_rpm_cleanup()
+{
+ $remove_on_cleanup && _remove_rpm_pmda
+
+ # replace the pmcd setup with original
+ _rpm_pmda_restore
+
+ # remove any newly installed RPM
+ _rpm_package_remove
+
+ $sudo rm -fr $tmp.*.dir
+ $sudo rm -f $tmp.*
+ exit $status
+}
+
+remove_on_cleanup=true
+pminfo rpm >/dev/null 2>&1 && remove_on_cleanup=false
diff --git a/qa/common.secure b/qa/common.secure
new file mode 100644
index 0000000..3916372
--- /dev/null
+++ b/qa/common.secure
@@ -0,0 +1,196 @@
+#
+# Common shell routines for testing security extensions
+# Copyright (c) 2012-2014 Red Hat.
+#
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+usersdb=${HOME}/.pki/nssdb
+collectordb=$tmp/pki/nssdb
+collectorpw=$tmp/pki/nssdb/pass
+PCP_SECURE_DB_METHOD=${PCP_SECURE_DB_METHOD-'sql:'}
+certopts="-d $PCP_SECURE_DB_METHOD$collectordb -f $collectorpw -z $tmp.rand"
+
+userid=`id -u`
+groupid=`id -g`
+username=`id -u -n`
+groupname=`id -g -n`
+
+qahost=`_get_fqdn`
+hostname=`hostname | sed -e 's/\..*//'`
+
+nss_notrun_checks()
+{
+ _get_libpcp_config
+ [ "$secure_sockets" = "true" ] || _notrun "Secure sockets not supported"
+ which certutil >/dev/null 2>&1 || _notrun "certutil not installed (NSS tools)"
+ [ -c /dev/urandom ] || _notrun "No random number generator special file found"
+
+ fips=false # testing for exposure to Red Hat bug 1035509
+ fipsfile=/proc/sys/crypto/fips_enabled
+ if [ -f $fipsfile ]
+ then
+ test `cat $fipsfile` -ne 0 && fips=true
+ fi
+ $fips && _notrun "FIPS mode interacts badly with system NSS databases"
+}
+
+nss_cleanup()
+{
+ unset PCP_SECURE_SOCKETS
+
+ # restore any modified pmcd configuration file
+ cf=$PCP_PMCDOPTIONS_PATH
+ if test -f $cf.$seq
+ then
+ $sudo rm -f $cf
+ $sudo mv $cf.$seq $cf
+ fi
+
+ # restore user certificate DB from existing installation
+ if test -d $usersdb.$seq
+ then
+ $sudo rm -fr $usersdb
+ $sudo mv $usersdb.$seq $usersdb
+ fi
+}
+
+# backup pmcd configuration and certificate DBs from existing installation
+nss_backup()
+{
+ for f in $PCP_PMCDOPTIONS_PATH $usersdb
+ do
+ [ -e $f ] && $sudo mv $f $f.$seq
+ done
+}
+
+nss_filter_pminfo()
+{
+ sed \
+ -e "s/$qahost/QAHOST/g" \
+ -e "s/$hostname/HOST/g" \
+ -e "/^SHA1 fingerprint is .*/d" \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+nss_setup_randomness()
+{
+ dd if=/dev/urandom of=$tmp.rand bs=1 count=10000 >/dev/null 2>&1
+}
+
+nss_subject_name()
+{
+ fqdn=$1
+ host=$2
+ echo $fqdn | sed -e "s/^$host\./dc=/g" -e 's/\./,dc=/g'
+}
+
+nss_setup_certificates()
+{
+ certdomain=`nss_subject_name $qahost $hostname`
+
+ echo "setup_certificates host details:" >> $seq.full
+ echo "HOST=$hostname" >> $seq.full
+ echo "QAHOST=$qahost" >> $seq.full
+ echo "DOMAIN=$certdomain" >> $seq.full
+
+ # create self-signed (-x) server certificate locally
+ echo "== Creating local certificates" | tee -a $seq.full
+ $sudo certutil $certopts -S -x \
+ -n "Local CA certificate" -s "cn=Local PCP Installation, $certdomain" \
+ -t "CT,," >> $seq.full 2>&1
+ sleep 1 # so that the next cert does not get the same serial number
+ $sudo certutil $certopts -S \
+ -n "PCP Collector certificate" -s "cn=PCP Collector" \
+ -c "Local CA certificate" -8 "$qahost,$hostname" \
+ -t "P,," >> $seq.full 2>&1
+ echo "== Certificate DB and local certificates created" | tee -a $seq.full
+
+ # export ascii copy of the certificate for later use
+ $sudo certutil $certopts -L -n "Local CA certificate" -a > $tmp.cacert.asc
+ cat $tmp.cacert.asc >> $seq.full
+}
+
+nss_setup_collector()
+{
+ withcerts=$1
+ fqdn=$2
+ host=$3
+
+ # prepare new locations for certificates
+ $sudo rm -fr $collectordb
+ $sudo mkdir -p -m 0755 $collectordb
+
+ # prepare password file for certificates
+ echo "$seq.password" > $tmp.password
+ $sudo mv $tmp.password $collectorpw
+
+ echo "== Creating empty certificate DB" | tee -a $seq.full
+ $sudo certutil $certopts -N
+
+ $withcerts && nss_setup_certificates $fqdn $host
+
+ if [ -d $collectordb ]
+ then
+ $sudo chmod -R 0644 $collectordb/*
+ $sudo chown -R pcp:pcp $collectordb
+ fi
+
+ cat <<End-Of-File >$tmp.options
+# Dummy lines added by PCP QA test $seq
+#
+-l $tmp.pmcd.log
+-C $PCP_SECURE_DB_METHOD$collectordb
+-P $collectorpw
+End-Of-File
+ $sudo cp $tmp.options $PCP_PMCDOPTIONS_PATH
+ echo "Start pmcd, modified \$PCP_PMCDOPTIONS_PATH (pmcd.options):" | tee -a $seq.full
+ $sudo $PCP_RC_DIR/pcp restart | tee -a $seq.full >$tmp.out
+ _wait_for_pmcd
+ grep -i 'starting pmcd' $tmp.out | sed -e "s/$$/MYPID/" | _filter_pcp_start
+ echo "Checking pmcd.log for unexpected messages" | tee -a $seq.full
+ egrep 'Error:|Info:' $tmp.pmcd.log
+ cat $tmp.pmcd.log >> $seq.full
+ echo "--- end of pmcd.log ---" >> $seq.full
+}
+
+nss_setup_empty_userdb()
+{
+ $sudo rm -fr $usersdb
+ echo > $tmp.empty
+ mkdir -p -m 0755 $usersdb
+ certutil -N -d $PCP_SECURE_DB_METHOD$usersdb -f $tmp.empty
+}
+
+nss_import_cert_userdb()
+{
+ certutil -A -d $PCP_SECURE_DB_METHOD$usersdb -n "Local CA certificate" -t "CT,," -a -i $tmp.cacert.asc
+}
+
+find_users()
+{
+ limit=$1
+ tail -n $limit /etc/passwd | $PCP_AWK_PROG -F: '{ print $1 }'
+}
+
+find_groups()
+{
+ limit=$1
+ tail -n $limit /etc/group | $PCP_AWK_PROG -F: '{ print $1 }'
+}
+
+filter_sample_log_credentials()
+{
+ grep Info $PCP_LOG_DIR/pmcd/sample.log | \
+ sed \
+ -e '/processid=/d' \
+ -e '/ctx=[0-9][0-9]*/s//ctx=N/' \
+ -e "s/userid=$userid/userid=UID/g" \
+ -e "s/groupid=$groupid/groupid=GID/g" \
+ -e "s/username=$username/username=USER/g" \
+ -e '/pmdasample([0-9][0-9]*)/s//pmdasample(PID)/' \
+ -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATETIME]/'
+}
diff --git a/qa/common.setup b/qa/common.setup
new file mode 100644
index 0000000..838cbc1
--- /dev/null
+++ b/qa/common.setup
@@ -0,0 +1,27 @@
+# per product QA setup
+#
+# called from "common" (before args processed and again after args processed)
+#
+# called from "common.product" so individual QA scripts can get access to
+# same information when run stand alone (not from check or remake)
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# standard stuff
+if [ -z "$__done_common_rc" ]
+then
+ . ./common.rc
+ __done_common_rc=yes
+fi
+
+# Checking options (true or false)
+#
+OPTION_AGENTS=true
+OPTION_LOGGER=true
+OPTION_PMCD_TRACE=true
+
+# Default PMCD host ... normally empty, but could be remote_hostname to
+# run QA using remote PMDAs
+#
+[ -z "$DEFAULT_HOST" ] && DEFAULT_HOST=''
diff --git a/qa/common.sh b/qa/common.sh
new file mode 100644
index 0000000..45cc8f1
--- /dev/null
+++ b/qa/common.sh
@@ -0,0 +1,41 @@
+. /etc/pcp.env
+
+export PCP_STDERR=""
+export PATH=.:$PATH
+
+# get offset into an archive relative to the first pmResult
+# past the preamble
+#
+# Usage: _arch_start archive [offset]
+#
+_arch_start()
+{
+ pmdumplog -z $1 \
+ | $PCP_AWK_PROG '
+/^[0-9][0-9]:[0-9][0-9]:/ { if ($3 ~ /pmcd.pmlogger.host/) next
+ split($1, t, ":")
+ t[3] += '"${2-0}"'
+ while (t[3] < 0) {
+ t[3] += 60
+ t[2]--
+ }
+ while (t[3] > 60) {
+ t[3] -= 60
+ t[2]++
+ }
+ while (t[2] < 0) {
+ t[2] += 60
+ t[1]--
+ }
+ while (t[2] > 60) {
+ t[2] -= 60
+ t[1]++
+ }
+ while (t[1] < 0)
+ t[1] += 24
+ while (t[1] > 23)
+ t[1] -= 24
+ printf "@%02d:%02d:%06.3f",t[1],t[2],t[3]
+ exit
+ }'
+}
diff --git a/qa/disk-work b/qa/disk-work
new file mode 100755
index 0000000..4883b01
--- /dev/null
+++ b/qa/disk-work
@@ -0,0 +1,28 @@
+#! /bin/sh
+# helper script for testing totals for disk metrics
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+. $PCP_DIR/etc/pcp.conf
+
+KILL_PID=
+
+cleanup()
+{
+ if [ "X$KILL_PID" != X ]
+ then
+ $signal -s TERM $KILL_PID
+ KILL_PID=
+ fi
+}
+
+trap "cleanup; exit" 0 1 2 3 15
+signal=$PCP_BINADM_DIR/pmsignal
+
+while true
+do
+ ls -R / >/dev/null 2>/dev/null &
+ KILL_PID=$!
+ wait
+done
diff --git a/qa/findmetric b/qa/findmetric
new file mode 100755
index 0000000..9ab010a
--- /dev/null
+++ b/qa/findmetric
@@ -0,0 +1,110 @@
+#!/bin/sh
+#
+# find metrics in the QA archives
+#
+# command line args are alternate patterns matched in the output
+# from pminfo -d ... so metric names and metric descriptors
+#
+
+tmp=/var/tmp/$$
+sts=0
+trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+
+_usage()
+{
+ echo >&2 "Usage: `basename $0` [options] pat ..."
+ echo >&2 " -a search archives [default]"
+ echo >&2 " -h search localhost live metrics"
+}
+
+arch=true
+while getopts "ah?" c
+do
+ case $c
+ in
+ a)
+ arch=true
+ ;;
+ h)
+ arch=false
+ ;;
+ ?)
+ _usage
+ sts=1
+ exit
+ ;;
+ esac
+done
+shift `expr $OPTIND - 1`
+
+if [ $# -eq 0 ]
+then
+ _usage
+ sts=1
+ exit
+fi
+
+pat=""
+for arg
+do
+ if [ -z "$pat" ]
+ then
+ pat="($arg)"
+ else
+ pat="$pat|($arg)"
+ fi
+done
+
+if $arch
+then
+ srclist="`echo src/*.0`"
+else
+ srclist='ignoreme'
+fi
+
+for src in $srclist
+do
+ if $arch
+ then
+ pminfo -d -a $src 2>&1
+ else
+ pminfo -d 2>&1
+ fi \
+ | sed -e '/^[a-z]/{
+s/$/|/
+N
+s/$/|/
+N
+s/|./|/g
+s/ */ /g
+s/| Data Type: /|/
+s/ InDom: /|/
+s/ Semantics: /|/
+s/ Units: /|/
+}' \
+ | egrep "$pat" >$tmp.out
+
+ if [ -s $tmp.out ]
+ then
+ if $arch
+ then
+ pmdumplog -l $src >$tmp.info
+ vers=`sed -n <$tmp.info -e '/Log Format Version/{
+s/.*Version //
+s/)//
+p
+}'`
+ host=`sed -n <$tmp.info -e '/ from host /{
+s/.* from host //
+p
+}'`
+ echo "=== `basename $src .0` (V.$vers) host: $host ==="
+ grep commencing $tmp.info
+ grep ending $tmp.info
+ sed <$tmp.out -e "s/^/ /"
+ else
+ echo "=== `hostname` ==="
+ sed <$tmp.out -e "s/^/ /"
+ fi
+ fi
+done
diff --git a/qa/getpmcdhosts b/qa/getpmcdhosts
new file mode 100755
index 0000000..2c63015
--- /dev/null
+++ b/qa/getpmcdhosts
@@ -0,0 +1,627 @@
+#! /bin/sh
+#
+# Output a list of hosts from the "qa_hosts" file which meet certain
+# criteria specified by the options (see _usage).
+# The list of QA hosts can be overridden by setting the environment
+# variable QA_HOSTS.
+#
+# Allows QA tests to get hostnames of particular configurations
+# that they need.
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+. ./common.rc
+
+tmp=/tmp/$$
+tmp=`pwd`/tmp
+rm -rf $tmp.*
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+HOSTS=qa_hosts
+SSH_USER=pcpqa
+
+_usage()
+{
+ echo >&2 'Usage: getpmcdhosts [options]
+
+Options:
+-a {pmda} pmda connected to pmcd
+-b 32|64 kernel binary format
+-D debug/trace (see also -V)
+-e big|little endianess
+-h hostfile name of host file, default is qa_hosts
+-L do not consider localhost
+-m {metric}<op>{value} satisfies metric value predicate
+-n num match first num hosts
+-P return host running a primary pmlogger
+-p multi|single multi or single processor
+-s system operating system (uname -s)
+-v {item}<op>{ver} version of item
+-V verbose diagnostics (see also -D)
+
+Legal item:
+ipc inter-process protocol (deprecated)
+libpcp shared library (deprecated)
+pcp PCP version installed
+
+<op> is one of =, >, >=, <, <= or !=
+
+Most options may be used together but not repeated.
+The environment variable QA_STS overrides the default host
+file and -h
+'
+ exit 1
+}
+
+#
+# _checkpmcdhost moomba _ 64 _ multi 2 _ _ _
+#
+# Parameters:
+# host name
+# agent name | _
+# binfmt 32 | n32 | 64 | _
+# primary true | false
+# proc multi | single | _
+# pcp 1 | 2 | _
+# msg true | false | _
+# system irix | linux | _
+# endian big | small | _
+#
+
+_checkpmcdhost()
+{
+ HOST=$1
+ AGENT=$2
+ BINFMT=$3
+ PRIMARY=$4
+ PROC=$5
+ PCP=$6
+ MSG=$7
+ SYSTEM=${8}
+ ENDIAN=${9}
+ ERROR=0
+
+ # check that host has a running pmcd
+ #
+ if pminfo -h $HOST -f pmcd.agent.status >/dev/null 2>&1
+ then
+ :
+ else
+ $MSG && echo "$HOST: No running pmcd" >&2
+ return 1
+ fi
+
+ # check for running agent
+ #
+ if [ "$AGENT" != "_" ]
+ then
+ if pmprobe -h $HOST -I pmcd.agent.type 2>/dev/null | grep $AGENT >/dev/null 2>&1
+ then
+ :
+ else
+ $MSG && echo "$HOST: $AGENT not running" >&2
+ return 1
+ fi
+ fi
+
+ # check binfmt
+ #
+ if [ "$BINFMT" != "_" ]
+ then
+ # only want 32 or 64 (not ia32 or n32 etc...)
+ # if want to be specific then use "-m pmcd.simabi=ia32"
+ objfmt=`pmprobe -h $HOST -v pmcd.simabi 2>/dev/null \
+ | sed -e 's/\"//g' \
+ | $PCP_AWK_PROG 'NF > 2 { for (i = 3; i <= NF; i++) printf "%s ",$i }' \
+ | sed -e 's/.*x86-64/64/g' \
+ -e 's/.*x86_64/64/g' \
+ -e 's/IA-64/64/g' \
+ -e 's/ $//' \
+ -e 's/[a-zA-Z]//g' `
+
+ if [ "$objfmt" != $BINFMT ]
+ then
+ $MSG && echo "$HOST: binary format $BINFMT != $objfmt" >&2
+ return 1
+ fi
+ fi
+
+ # check operating system name
+ #
+ if [ "$SYSTEM" != "_" ]
+ then
+ osname=`ssh -q $SSH_USER@$HOST uname -s`
+ if echo $osname | grep -i $SYSTEM >/dev/null 2>&1
+ then
+ :
+ else
+ $MSG && echo "$HOST: system $SYSTEM no match with $osname " >&2
+ return 1;
+ fi
+ fi
+
+ # check that host is running primary pmlogger
+ #
+ if $PRIMARY
+ then
+ if pminfo -h $HOST -f pmcd.pmlogger.host | grep primary > /dev/null 2>&1
+ then
+ :
+ else
+ $MSG && echo "$HOST: is _not_ running primary pmlogger" >&2
+ return 1
+ fi
+ fi
+
+ # check number of processors
+ #
+ if [ "$PROC" != "_" ]
+ then
+ $VERBOSE && echo "+ pmprobe -h $HOST -v hinv.ncpu | sed ..."
+ ncpu=`pmprobe -h $HOST -v hinv.ncpu 2>/dev/null \
+ | sed -e 's/\"//g' \
+ | $PCP_AWK_PROG 'NF == 3 && $3 ~ /^[0-9][0-9]*$/ { print $3 }'`
+ $VERBOSE && echo "-> |$ncpu|"
+
+ if [ -z "$ncpu" -o "$ncpu" = 0 ]
+ then
+ if $MSG
+ then
+ echo "$HOST: Unknown number of processors, pmprobe -> `pmprobe -h $HOST -v hinv.ncpu 2>&1`" >&2
+ fi
+ return 1
+ fi
+ if [ "$ncpu" -gt 1 -a "$PROC" = "single" ]
+ then
+ $MSG && echo "$HOST: Has $ncpu processors" >&2
+ return 1
+ elif [ "$ncpu" -eq 1 -a "$PROC" = "multi" ]
+ then
+ $MSG && echo "$HOST: Has only one processor" >&2
+ return 1
+ fi
+ fi
+
+ # check endianess
+ #
+ if [ "$ENDIAN" != "_" ]
+ then
+ $VERBOSE && echo "+ echo a | ssh -q $SSH_USER@$HOST od -x"
+ check=`echo a | ssh -q $SSH_USER@$HOST "od -x" 2>&1 | sed -e 's/^0[^ ]* *//' -e 's/[ ]*$//' -e '/^$/d'`
+ $VERBOSE && echo "-> |$check|"
+ case "$check"
+ in
+ 0a61)
+ if [ "$ENDIAN" = big ]
+ then
+ $MSG && echo "$HOST: little endian" >&2
+ return 1
+ fi
+ ;;
+ 610a)
+ if [ "$ENDIAN" = little ]
+ then
+ $MSG && echo "$HOST: big endian" >&2
+ return 1
+ fi
+ ;;
+ *)
+ echo "$0: INTERNAL BOTCH: expecting 0a61 or 610a, got \"$check\"" >&2
+ exit 1
+ ;;
+ esac
+ fi
+
+ # check the item value pairs
+ #
+ if [ -s "$tmp.items" ]
+ then
+ cat $tmp.items \
+ | while read item op value
+ do
+ case "$item"
+ in
+ pcp)
+ if pmprobe -h $HOST -v pmcd.version >$tmp.probe 2>$tmp.err
+ then
+ :
+ else
+ rm -f $tmp.probe
+ fi
+ ;;
+ *)
+ echo "$0: INTERNAL BOTCH item=\"$item\" not expected here!"
+ exit 1
+ ;;
+ esac
+ if [ -s $tmp.probe ]
+ then
+ satisfies=`sed -e 's/"//g' $tmp.probe \
+ | $PCP_AWK_PROG '
+BEGIN { op = "'"$op"'"; value="'"$value"'" }
+NF >=3 { if ( $2 < 0 ) {
+ print "0";
+ exit;
+ }
+ # got a value
+ if (op == "=") {
+ if ($3 == value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == "<") {
+ if ($3 < value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == "<=") {
+ if ($3 <= value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == ">") {
+ if ($3 > value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == ">=") {
+ if ($3 >= value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == "!=") {
+ if ($3 != value)
+ print "1";
+ else
+ print "0";
+ }
+ else {
+ print "2";
+ }
+ exit;
+ }
+ { print "0" }'`
+ if [ $satisfies -ne 1 ]
+ then
+ $MSG && echo "$HOST: does not satisfy predicate $metric $op $value" >&2
+ return 1
+ fi
+ else
+ $MSG && echo "$HOST: pmprobe failed `cat $tmp.errs`" >&2
+ return 1
+ fi
+ done
+ [ $? -eq 1 ] && return 1
+ fi
+
+ # check the metric value pairs
+ #
+ if [ -s "$tmp.metrics" ]
+ then
+ cat $tmp.metrics \
+ | while read metric op value
+ do
+ if pmprobe -h $HOST -v $metric >$tmp.probe 2>$tmp.errs
+ then
+ satisfies=`sed -e 's/"//g' $tmp.probe \
+ | $PCP_AWK_PROG '
+BEGIN { op = "'"$op"'"; value="'"$value"'" }
+NF >=3 { if ( $2 < 0 ) {
+ print "0";
+ exit;
+ }
+ # got a value
+ if (op == "=") {
+ if ($3 == value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == "<") {
+ if ($3 < value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == "<=") {
+ if ($3 <= value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == ">") {
+ if ($3 > value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == ">=") {
+ if ($3 >= value)
+ print "1";
+ else
+ print "0";
+ }
+ else if (op == "!=") {
+ if ($3 != value)
+ print "1";
+ else
+ print "0";
+ }
+ else {
+ print "2";
+ }
+ exit;
+ }
+ { print "0" }'`
+ if [ $satisfies -ne 1 ]
+ then
+ $MSG && echo "$HOST: does not satisfy predicate $metric $op $value" >&2
+ return 1
+ fi
+ else
+ $MSG && echo "$HOST: pmprobe failed `cat $tmp.errs`" >&2
+ return 1
+ fi
+ done
+ [ $? -eq 1 ] && return 1
+ fi
+
+ return 0
+}
+
+# Go thru table of hosts and see which meet the
+# given criteria and return either the first one
+# or a list of them if need be.
+#
+
+# set defaults
+AGENT="_"
+BINFMT="_"
+PROC="_"
+PCP="_"
+SYSTEM="_"
+ENDIAN="_"
+
+PRIMARY=false
+LOCAL=false
+LIST=true
+MSG=false
+COUNT=0
+VERBOSE=false
+
+while getopts "a:b:De:h:Lm:n:Pp:s:v:V" c
+do
+ case $c
+ in
+ a)
+ AGENT=$OPTARG
+ ;;
+ b)
+ BINFMT=$OPTARG
+ ;;
+ D)
+ MSG=true
+ ;;
+ e)
+ ENDIAN=$OPTARG
+ case "$ENDIAN"
+ in
+ big|little)
+ ;;
+ small) # synonym for little
+ ENDIAN=little
+ ;;
+ *)
+ echo "$0: Illegal endianess $ENDIAN" >&2
+ _usage
+ #NOTREACHED
+ ;;
+ esac
+ ;;
+ h)
+ HOSTS=$OPTARG
+ if [ ! -f $OPTARG ]
+ then
+ echo "$0: Cannot open hostfile $OPTARG" >&2
+ _usage
+ #NOTREACHED
+ fi
+ ;;
+ L)
+ LOCAL=true
+ ;;
+ m)
+ metric=`echo $OPTARG | sed -e 's/[ ]*//' -e 's/[=<>!].*//'`
+ value=`echo $OPTARG | sed -e 's/[ ]*//' -e 's/.*[=<>!]//'`
+ op=`echo $OPTARG | sed -e 's/[ ]*//' -e "s/$metric//" -e "s/$value//"`
+ case "$op"
+ in
+ '='|'<'|'<='|'>'|'>='|'!=')
+ ;;
+ *)
+ echo "$0: Illegal metric argument: $OPTARG" >&2
+ _usage
+ #NOTREACHED
+ ;;
+ esac
+ echo "$metric $op $value" >> $tmp.metrics
+ $MSG && echo "---tmp.metrics---" >&2
+ $MSG && cat $tmp.metrics >&2
+ ;;
+
+ n)
+ COUNT=$OPTARG
+ if [ $COUNT -eq 1 ]
+ then
+ LIST=false
+ fi
+ ;;
+ P)
+ PRIMARY=true
+ ;;
+ p)
+ PROC=$OPTARG
+ ;;
+ s)
+ SYSTEM=$OPTARG
+ ;;
+ v)
+ item=`echo $OPTARG | sed -e 's/[ ]*//' -e 's/[=<>!].*//'`
+ value=`echo $OPTARG | sed -e 's/[ ]*//' -e 's/.*[=<>!]//'`
+ op=`echo $OPTARG | sed -e 's/[ ]*//' -e "s/$item//" -e "s/$value//"`
+ case "$item"
+ in
+ "ipc"|"libpcp")
+ echo "$0: Deprecated item \"$item\", ignored" >&2
+ continue
+ ;;
+ "pcp")
+ value=`echo "$value" | sed -e 's/\./ /g' | $PCP_AWK_PROG '
+NF==1 { print $0 ".0.0" }
+NF==2 { print $0 ".0" }
+NF>2 { print $0 }' | sed -e 's/ /./g'`
+ ;;
+ *)
+ echo "$0: Illegal item $item" >&2
+ _usage
+ #NOTREACHED
+ esac
+ case "$op"
+ in
+ '='|'<'|'<='|'>'|'>='|'!=')
+ ;;
+ *)
+ echo "$0: Illegal metric argument: $OPTARG" >&2
+ _usage
+ #NOTREACHED
+ ;;
+ esac
+ echo "$item $op $value" >> $tmp.items
+ $MSG && echo "---tmp.items---" >&2
+ $MSG && cat $tmp.items >&2
+ ;;
+
+ V)
+ VERBOSE=true
+ ;;
+
+ *)
+ _usage
+ #NOTREACHED
+ ;;
+ esac
+done
+if [ $# -ne `expr $OPTIND - 1` ]
+then
+ _usage
+ #NOTREACHED
+fi
+
+# Verify the options
+#
+
+err=0
+
+if [ "$BINFMT" != "_" -a "$BINFMT" != 32 -a "$BINFMT" != 64 ]
+then
+ echo "$0: -b option takes 32 or 64" >&2
+ err=1
+fi
+
+if [ "$PROC" != "_" -a "$PROC" != "multi" -a "$PROC" != "single" ]
+then
+ echo "$0: -p options takes multi or single" >&2
+ err=1
+fi
+
+if [ $err -eq 1 ]
+then
+ _usage
+ exit 1
+fi
+
+# Use qa_hosts file if environment variable $QA_HOSTS is not set (or null)
+#
+if [ -z "$QA_HOSTS" ]
+then
+ if [ ! -f $HOSTS ]
+ then
+ if [ -f GNUmakefile.install ]
+ then
+ # running QA in the tree
+ ${MAKE:-make} -f GNUmakefile.install $HOSTS >$tmp.make.out 2>&1
+ else
+ ${MAKE:-make} $HOSTS >$tmp.make.out 2>&1
+ fi
+ if [ $? -ne 0 ]
+ then
+ :
+ else
+ cat $tmp.make.out >&2
+ echo "$0: Unable to make \"$HOSTS\"" >&2
+ exit 1
+ fi
+ fi
+ QA_HOSTS=`cat $HOSTS`
+fi
+
+# Remove the localhost if requested
+#
+if $LOCAL
+then
+ localhost=`hostname | sed -e 's/\..*//'`
+ QA_HOSTS=`echo $QA_HOSTS | sed \
+ -e 's/$/ /' \
+ -e "s/$localhost\.[^ ]* //g" \
+ -e "s/$localhost //g"`
+fi
+
+$MSG && ( echo "Checking hosts:"; echo "$QA_HOSTS"; echo ) >&2
+
+# Iterate through hosts
+#
+
+i=0
+for HOST in $QA_HOSTS
+do
+ if _checkpmcdhost $HOST $AGENT $BINFMT $PRIMARY $PROC $PCP $MSG $SYSTEM $ENDIAN
+ then
+ if $LIST
+ then
+ if $MSG
+ then
+ echo "-> $HOST" >&2
+ else
+ $PCP_ECHO_PROG $PCP_ECHO_N "$HOST ""$PCP_ECHO_C"
+ fi
+ else
+ echo "$HOST"
+ fi
+ i=`expr $i + 1`
+ fi
+
+ if [ $COUNT -gt 0 -a $i -ge $COUNT ]
+ then
+ break
+ fi
+done
+
+# if been using \c then do final \n
+#
+
+$LIST && echo
+
+if [ $i -lt $COUNT ]
+then
+ echo "$0: unable to get $COUNT host(s) with options: \"$@\"" >&2
+ exit
+fi
+
+status=0
+exit
diff --git a/qa/gluster/GNUmakefile b/qa/gluster/GNUmakefile
new file mode 100644
index 0000000..265d1f9
--- /dev/null
+++ b/qa/gluster/GNUmakefile
@@ -0,0 +1,22 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/gluster
+
+SCRIPT = test.sh
+INFOFILES = $(shell echo info-*)
+PROFFILES = $(shell echo profile-*)
+
+LSRCFILES = $(SCRIPT) $(INFOFILES) $(PROFFILES)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 755 $(SCRIPT) $(TESTDIR)/$(SCRIPT)
+ $(INSTALL) -m 644 $(INFOFILES) $(PROFFILES) $(TESTDIR)
+
+include $(BUILDRULES)
+
+%.py : %.python
+ $(LN_S) $< $@
diff --git a/qa/gluster/info-multi b/qa/gluster/info-multi
new file mode 100644
index 0000000..e1eab1b
--- /dev/null
+++ b/qa/gluster/info-multi
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cliOutput><opRet>0</opRet><opErrno>0</opErrno><opErrstr></opErrstr><volInfo><volumes><volume><name>gv0</name><id>e0639031-6ad9-4e76-84c2-ab565ff3b019</id><type>2</type><status>1</status><brickCount>2</brickCount><distCount>2</distCount><stripeCount>1</stripeCount><replicaCount>2</replicaCount><transport>0</transport><bricks><brick>crunch.scott.net.au:/export/brick1/glusterdev1</brick><brick>smash.scott.net.au:/export/brick1/glusterdev1</brick></bricks><optCount>2</optCount><options><option><name>diagnostics.count-fop-hits</name><value>on</value></option><option><name>diagnostics.latency-measurement</name><value>on</value></option></options></volume><volume><name>gv1</name><id>adfgww31-12d9-5e76-44d2-fed344566019</id><type>2</type><status>1</status><brickCount>2</brickCount><distCount>2</distCount><stripeCount>3</stripeCount><replicaCount>4</replicaCount><transport>0</transport><bricks><brick>crunch.scott.net.au:/export/brick2/glusterdev2</brick><brick>smash.scott.net.au:/export/brick2/glusterdev2</brick></bricks><optCount>2</optCount><options><option><name>diagnostics.count-fop-hits</name><value>off</value></option><option><name>diagnostics.latency-measurement</name><value>off</value></option></options></volume><count>2</count></volumes></volInfo></cliOutput>
+
diff --git a/qa/gluster/info-raid1 b/qa/gluster/info-raid1
new file mode 100644
index 0000000..057654b
--- /dev/null
+++ b/qa/gluster/info-raid1
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cliOutput>
+ <opRet>0</opRet>
+ <opErrno>0</opErrno>
+ <opErrstr/>
+ <volInfo>
+ <volumes>
+ <volume>
+ <name>raid6</name>
+ <id>b79fa2e5-d739-4ea1-b2a8-5925294e1e78</id>
+ <status>1</status>
+ <statusStr>Started</statusStr>
+ <brickCount>2</brickCount>
+ <distCount>2</distCount>
+ <stripeCount>1</stripeCount>
+ <replicaCount>2</replicaCount>
+ <type>2</type>
+ <typeStr>Replicate</typeStr>
+ <transport>0</transport>
+ <bricks>
+ <brick>gprfs035-10ge:/mnt/brick1/brick</brick>
+ <brick>gprfs036-10ge:/mnt/brick1/brick</brick>
+ </bricks>
+ <optCount>3</optCount>
+ <options>
+ <option>
+ <name>performance.read-ahead-page-count</name>
+ <value>16</value>
+ </option>
+ <option>
+ <name>performance.write-behind</name>
+ <value>on</value>
+ </option>
+ <option>
+ <name>performance.write-behind-window-size</name>
+ <value>4194304</value>
+ </option>
+ </options>
+ </volume>
+ <volume>
+ <name>raid1</name>
+ <id>d94c7b29-0644-487a-a66c-fb55a28f313f</id>
+ <status>1</status>
+ <statusStr>Started</statusStr>
+ <brickCount>12</brickCount>
+ <distCount>2</distCount>
+ <stripeCount>1</stripeCount>
+ <replicaCount>2</replicaCount>
+ <type>5</type>
+ <typeStr>Distributed-Replicate</typeStr>
+ <transport>0</transport>
+ <bricks>
+ <brick>gprfs033-10ge:/mnt/brick-sdb/brick</brick>
+ <brick>gprfs034-10ge:/mnt/brick-sdb/brick</brick>
+ <brick>gprfs033-10ge:/mnt/brick-sdc/brick</brick>
+ <brick>gprfs034-10ge:/mnt/brick-sdc/brick</brick>
+ <brick>gprfs033-10ge:/mnt/brick-sdd/brick</brick>
+ <brick>gprfs034-10ge:/mnt/brick-sdd/brick</brick>
+ <brick>gprfs033-10ge:/mnt/brick-sde/brick</brick>
+ <brick>gprfs034-10ge:/mnt/brick-sde/brick</brick>
+ <brick>gprfs033-10ge:/mnt/brick-sdf/brick</brick>
+ <brick>gprfs034-10ge:/mnt/brick-sdf/brick</brick>
+ <brick>gprfs033-10ge:/mnt/brick-sdg/brick</brick>
+ <brick>gprfs034-10ge:/mnt/brick-sdg/brick</brick>
+ </bricks>
+ <optCount>2</optCount>
+ <options>
+ <option>
+ <name>diagnostics.count-fop-hits</name>
+ <value>on</value>
+ </option>
+ <option>
+ <name>diagnostics.latency-measurement</name>
+ <value>on</value>
+ </option>
+ </options>
+ </volume>
+ <count>2</count>
+ </volumes>
+ </volInfo>
+</cliOutput>
diff --git a/qa/gluster/info-single b/qa/gluster/info-single
new file mode 100644
index 0000000..d253264
--- /dev/null
+++ b/qa/gluster/info-single
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cliOutput><opRet>0</opRet><opErrno>0</opErrno><opErrstr></opErrstr><volInfo><volumes><volume><name>gv0</name><id>e0639031-6ad9-4e76-84c2-ab565ff3b019</id><type>2</type><status>1</status><brickCount>2</brickCount><distCount>1</distCount><stripeCount>2</stripeCount><replicaCount>3</replicaCount><transport>0</transport><bricks><brick>crunch.scott.net.au:/export/brick1/glusterdev1</brick><brick>smash.scott.net.au:/export/brick1/glusterdev1</brick></bricks><optCount>2</optCount><options><option><name>diagnostics.count-fop-hits</name><value>on</value></option><option><name>diagnostics.latency-measurement</name><value>on</value></option></options></volume><count>1</count></volumes></volInfo></cliOutput>
+
diff --git a/qa/gluster/profile-gv0-info b/qa/gluster/profile-gv0-info
new file mode 100644
index 0000000..385a0eb
--- /dev/null
+++ b/qa/gluster/profile-gv0-info
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cliOutput><opRet>0</opRet><opErrno>0</opErrno><opErrstr></opErrstr><volProfile><volname>gv0</volname><profileOp>3</profileOp><brickCount>1</brickCount><brick><brickName>smash.scott.net.au:/export/brick1/glusterdev1</brickName><cumulativeStats><blockStats><block><size>1</size><reads>0</reads><writes>0</writes></block><block><size>2</size><reads>0</reads><writes>0</writes></block><block><size>4</size><reads>0</reads><writes>0</writes></block><block><size>8</size><reads>0</reads><writes>0</writes></block><block><size>16</size><reads>0</reads><writes>0</writes></block><block><size>32</size><reads>0</reads><writes>0</writes></block><block><size>64</size><reads>0</reads><writes>0</writes></block><block><size>128</size><reads>0</reads><writes>0</writes></block><block><size>256</size><reads>0</reads><writes>0</writes></block><block><size>512</size><reads>0</reads><writes>0</writes></block><block><size>1024</size><reads>0</reads><writes>0</writes></block><block><size>2048</size><reads>0</reads><writes>0</writes></block><block><size>4096</size><reads>0</reads><writes>0</writes></block><block><size>8192</size><reads>0</reads><writes>0</writes></block><block><size>16384</size><reads>0</reads><writes>0</writes></block><block><size>32768</size><reads>0</reads><writes>0</writes></block><block><size>65536</size><reads>0</reads><writes>0</writes></block><block><size>131072</size><reads>0</reads><writes>0</writes></block><block><size>262144</size><reads>0</reads><writes>0</writes></block><block><size>524288</size><reads>0</reads><writes>0</writes></block><block><size>1048576</size><reads>0</reads><writes>0</writes></block><block><size>2097152</size><reads>0</reads><writes>0</writes></block><block><size>4194304</size><reads>0</reads><writes>0</writes></block><block><size>8388608</size><reads>0</reads><writes>0</writes></block><block><size>16777216</size><reads>0</reads><writes>0</writes></block><block><size>33554432</size><reads>0</reads><writes>0</writes></block><block><size>67108864</size><reads>0</reads><writes>0</writes></block><block><size>134217728</size><reads>0</reads><writes>0</writes></block><block><size>268435456</size><reads>0</reads><writes>0</writes></block><block><size>536870912</size><reads>0</reads><writes>0</writes></block><block><size>1073741824</size><reads>0</reads><writes>0</writes></block><block><size>2147483648</size><reads>0</reads><writes>0</writes></block></blockStats><fopStats><fop><name>GETXATTR</name><hits>2</hits><avgLatency>101.400000</avgLatency><minLatency>68.000000</minLatency><maxLatency>134.000000</maxLatency></fop><fop><name>LOOKUP</name><hits>4</hits><avgLatency>148.500000</avgLatency><minLatency>137.000000</minLatency><maxLatency>175.000000</maxLatency></fop></fopStats><duration>371442</duration><totalRead>42</totalRead><totalWrite>24</totalWrite></cumulativeStats><intervalStats><blockStats><block><size>1</size><reads>0</reads><writes>0</writes></block><block><size>2</size><reads>0</reads><writes>0</writes></block><block><size>4</size><reads>0</reads><writes>0</writes></block><block><size>8</size><reads>0</reads><writes>0</writes></block><block><size>16</size><reads>0</reads><writes>0</writes></block><block><size>32</size><reads>0</reads><writes>0</writes></block><block><size>64</size><reads>0</reads><writes>0</writes></block><block><size>128</size><reads>0</reads><writes>0</writes></block><block><size>256</size><reads>0</reads><writes>0</writes></block><block><size>512</size><reads>0</reads><writes>0</writes></block><block><size>1024</size><reads>0</reads><writes>0</writes></block><block><size>2048</size><reads>0</reads><writes>0</writes></block><block><size>4096</size><reads>0</reads><writes>0</writes></block><block><size>8192</size><reads>0</reads><writes>0</writes></block><block><size>16384</size><reads>0</reads><writes>0</writes></block><block><size>32768</size><reads>0</reads><writes>0</writes></block><block><size>65536</size><reads>0</reads><writes>0</writes></block><block><size>131072</size><reads>0</reads><writes>0</writes></block><block><size>262144</size><reads>0</reads><writes>0</writes></block><block><size>524288</size><reads>0</reads><writes>0</writes></block><block><size>1048576</size><reads>0</reads><writes>0</writes></block><block><size>2097152</size><reads>0</reads><writes>0</writes></block><block><size>4194304</size><reads>0</reads><writes>0</writes></block><block><size>8388608</size><reads>0</reads><writes>0</writes></block><block><size>16777216</size><reads>0</reads><writes>0</writes></block><block><size>33554432</size><reads>0</reads><writes>0</writes></block><block><size>67108864</size><reads>0</reads><writes>0</writes></block><block><size>134217728</size><reads>0</reads><writes>0</writes></block><block><size>268435456</size><reads>0</reads><writes>0</writes></block><block><size>536870912</size><reads>0</reads><writes>0</writes></block><block><size>1073741824</size><reads>0</reads><writes>0</writes></block><block><size>2147483648</size><reads>0</reads><writes>0</writes></block></blockStats><fopStats/><duration>14867</duration><totalRead>0</totalRead><totalWrite>0</totalWrite></intervalStats></brick></volProfile></cliOutput>
+
diff --git a/qa/gluster/profile-raid1-info b/qa/gluster/profile-raid1-info
new file mode 100644
index 0000000..c0ffd6a
--- /dev/null
+++ b/qa/gluster/profile-raid1-info
@@ -0,0 +1,5666 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cliOutput>
+ <opRet>0</opRet>
+ <opErrno>0</opErrno>
+ <opErrstr/>
+ <volProfile>
+ <volname>raid1</volname>
+ <profileOp>3</profileOp>
+ <brickCount>12</brickCount>
+ <brick>
+ <brickName>gprfs034-10ge:/mnt/brick-sdd/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5233</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>538399</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>11920</hits>
+ <avgLatency>58.836997</avgLatency>
+ <minLatency>13.000000</minLatency>
+ <maxLatency>74349.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>320.000000</avgLatency>
+ <minLatency>320.000000</minLatency>
+ <maxLatency>320.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533168</hits>
+ <avgLatency>534.905833</avgLatency>
+ <minLatency>107.000000</minLatency>
+ <maxLatency>1970752.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>4380.305681</avgLatency>
+ <minLatency>116.000000</minLatency>
+ <maxLatency>1599322.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>1</hits>
+ <avgLatency>154.000000</avgLatency>
+ <minLatency>154.000000</minLatency>
+ <maxLatency>154.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>67.950000</avgLatency>
+ <minLatency>27.000000</minLatency>
+ <maxLatency>167.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>2</hits>
+ <avgLatency>30.500000</avgLatency>
+ <minLatency>27.000000</minLatency>
+ <maxLatency>34.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>1</hits>
+ <avgLatency>585.000000</avgLatency>
+ <minLatency>585.000000</minLatency>
+ <maxLatency>585.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>95.000000</avgLatency>
+ <minLatency>95.000000</minLatency>
+ <maxLatency>95.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>86.952381</avgLatency>
+ <minLatency>36.000000</minLatency>
+ <maxLatency>458.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>345.440623</avgLatency>
+ <minLatency>26.000000</minLatency>
+ <maxLatency>34372.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>2</hits>
+ <avgLatency>347.000000</avgLatency>
+ <minLatency>331.000000</minLatency>
+ <maxLatency>363.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20782640</hits>
+ <avgLatency>489.500779</avgLatency>
+ <minLatency>16.000000</minLatency>
+ <maxLatency>1927436.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>262.632023</avgLatency>
+ <minLatency>10.000000</minLatency>
+ <maxLatency>33916.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>64.500000</avgLatency>
+ <minLatency>56.000000</minLatency>
+ <maxLatency>73.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>2</hits>
+ <avgLatency>78.000000</avgLatency>
+ <minLatency>51.000000</minLatency>
+ <maxLatency>105.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1322622</hits>
+ <avgLatency>153.926877</avgLatency>
+ <minLatency>7.000000</minLatency>
+ <maxLatency>556435.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>2</hits>
+ <avgLatency>212.000000</avgLatency>
+ <minLatency>145.000000</minLatency>
+ <maxLatency>279.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>64056</hits>
+ <avgLatency>10552.223976</avgLatency>
+ <minLatency>37.000000</minLatency>
+ <maxLatency>144117.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12808</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>35305951244</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs034-10ge:/mnt/brick-sde/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5462</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>4</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>4</reads>
+ <writes>538782</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>87</reads>
+ <writes>356</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>11474</hits>
+ <avgLatency>53.506885</avgLatency>
+ <minLatency>12.000000</minLatency>
+ <maxLatency>6365.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>388.000000</avgLatency>
+ <minLatency>388.000000</minLatency>
+ <maxLatency>388.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533316</hits>
+ <avgLatency>608.348525</avgLatency>
+ <minLatency>113.000000</minLatency>
+ <maxLatency>2222139.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>4118.445528</avgLatency>
+ <minLatency>123.000000</minLatency>
+ <maxLatency>69382.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPEN</name>
+ <hits>1</hits>
+ <avgLatency>133.000000</avgLatency>
+ <minLatency>133.000000</minLatency>
+ <maxLatency>133.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READ</name>
+ <hits>87</hits>
+ <avgLatency>264.252874</avgLatency>
+ <minLatency>146.000000</minLatency>
+ <maxLatency>442.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>180</hits>
+ <avgLatency>364.761111</avgLatency>
+ <minLatency>131.000000</minLatency>
+ <maxLatency>3267.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>66.450000</avgLatency>
+ <minLatency>40.000000</minLatency>
+ <maxLatency>138.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>5</hits>
+ <avgLatency>55.200000</avgLatency>
+ <minLatency>28.000000</minLatency>
+ <maxLatency>92.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>2</hits>
+ <avgLatency>25221.500000</avgLatency>
+ <minLatency>10396.000000</minLatency>
+ <maxLatency>40047.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>84.000000</avgLatency>
+ <minLatency>84.000000</minLatency>
+ <maxLatency>84.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>75.904762</avgLatency>
+ <minLatency>41.000000</minLatency>
+ <maxLatency>118.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>346.385992</avgLatency>
+ <minLatency>28.000000</minLatency>
+ <maxLatency>24965.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>4</hits>
+ <avgLatency>2309.000000</avgLatency>
+ <minLatency>265.000000</minLatency>
+ <maxLatency>8172.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784709</hits>
+ <avgLatency>520.187270</avgLatency>
+ <minLatency>16.000000</minLatency>
+ <maxLatency>2470887.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>259.614707</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>11790.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>105.000000</avgLatency>
+ <minLatency>86.000000</minLatency>
+ <maxLatency>124.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>4</hits>
+ <avgLatency>66.000000</avgLatency>
+ <minLatency>43.000000</minLatency>
+ <maxLatency>104.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1322922</hits>
+ <avgLatency>153.483344</avgLatency>
+ <minLatency>9.000000</minLatency>
+ <maxLatency>558934.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>4</hits>
+ <avgLatency>217.500000</avgLatency>
+ <minLatency>167.000000</minLatency>
+ <maxLatency>325.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>64414</hits>
+ <avgLatency>10474.744481</avgLatency>
+ <minLatency>38.000000</minLatency>
+ <maxLatency>144856.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12807</duration>
+ <totalRead>11843377</totalRead>
+ <totalWrite>35379058332</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs034-10ge:/mnt/brick-sdb/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5314</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>539209</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>19514</hits>
+ <avgLatency>50.367326</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>17264.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>18191.000000</avgLatency>
+ <minLatency>18191.000000</minLatency>
+ <maxLatency>18191.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533897</hits>
+ <avgLatency>395.164075</avgLatency>
+ <minLatency>105.000000</minLatency>
+ <maxLatency>1346210.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>4086.282878</avgLatency>
+ <minLatency>121.000000</minLatency>
+ <maxLatency>83130.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPEN</name>
+ <hits>8</hits>
+ <avgLatency>44.250000</avgLatency>
+ <minLatency>37.000000</minLatency>
+ <maxLatency>53.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>1</hits>
+ <avgLatency>167.000000</avgLatency>
+ <minLatency>167.000000</minLatency>
+ <maxLatency>167.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>71.200000</avgLatency>
+ <minLatency>34.000000</minLatency>
+ <maxLatency>156.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>10</hits>
+ <avgLatency>37.100000</avgLatency>
+ <minLatency>23.000000</minLatency>
+ <maxLatency>82.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>1</hits>
+ <avgLatency>539.000000</avgLatency>
+ <minLatency>539.000000</minLatency>
+ <maxLatency>539.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>90.000000</avgLatency>
+ <minLatency>90.000000</minLatency>
+ <maxLatency>90.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>93.095238</avgLatency>
+ <minLatency>36.000000</minLatency>
+ <maxLatency>273.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>344.134242</avgLatency>
+ <minLatency>28.000000</minLatency>
+ <maxLatency>18476.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>2</hits>
+ <avgLatency>311.000000</avgLatency>
+ <minLatency>302.000000</minLatency>
+ <maxLatency>320.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784960</hits>
+ <avgLatency>519.056066</avgLatency>
+ <minLatency>20.000000</minLatency>
+ <maxLatency>2072837.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>257.409950</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>11262.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>98.000000</avgLatency>
+ <minLatency>91.000000</minLatency>
+ <maxLatency>105.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>2</hits>
+ <avgLatency>94.500000</avgLatency>
+ <minLatency>89.000000</minLatency>
+ <maxLatency>100.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1324080</hits>
+ <avgLatency>153.505994</avgLatency>
+ <minLatency>7.000000</minLatency>
+ <maxLatency>548299.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>2</hits>
+ <avgLatency>182.000000</avgLatency>
+ <minLatency>105.000000</minLatency>
+ <maxLatency>259.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63804</hits>
+ <avgLatency>10529.011379</avgLatency>
+ <minLatency>37.000000</minLatency>
+ <maxLatency>125635.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12808</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>35359425865</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs034-10ge:/mnt/brick-sdf/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5423</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>6</reads>
+ <writes>539908</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>534</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>9903</hits>
+ <avgLatency>87.256185</avgLatency>
+ <minLatency>13.000000</minLatency>
+ <maxLatency>58277.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>336.000000</avgLatency>
+ <minLatency>336.000000</minLatency>
+ <maxLatency>336.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>534476</hits>
+ <avgLatency>468.169117</avgLatency>
+ <minLatency>108.000000</minLatency>
+ <maxLatency>2318072.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>4096.801826</avgLatency>
+ <minLatency>119.000000</minLatency>
+ <maxLatency>50061.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>270</hits>
+ <avgLatency>348.062963</avgLatency>
+ <minLatency>109.000000</minLatency>
+ <maxLatency>6583.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>62.400000</avgLatency>
+ <minLatency>38.000000</minLatency>
+ <maxLatency>106.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>3</hits>
+ <avgLatency>40.666667</avgLatency>
+ <minLatency>24.000000</minLatency>
+ <maxLatency>58.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>3</hits>
+ <avgLatency>19336.666667</avgLatency>
+ <minLatency>15375.000000</minLatency>
+ <maxLatency>25684.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>103.000000</avgLatency>
+ <minLatency>103.000000</minLatency>
+ <maxLatency>103.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>82.523810</avgLatency>
+ <minLatency>33.000000</minLatency>
+ <maxLatency>272.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>339.894257</avgLatency>
+ <minLatency>23.000000</minLatency>
+ <maxLatency>27307.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>3</hits>
+ <avgLatency>337.666667</avgLatency>
+ <minLatency>230.000000</minLatency>
+ <maxLatency>465.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784341</hits>
+ <avgLatency>705.013952</avgLatency>
+ <minLatency>27.000000</minLatency>
+ <maxLatency>1964147.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>253.043098</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>11858.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>60.000000</avgLatency>
+ <minLatency>52.000000</minLatency>
+ <maxLatency>68.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>6</hits>
+ <avgLatency>52.500000</avgLatency>
+ <minLatency>42.000000</minLatency>
+ <maxLatency>59.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1325240</hits>
+ <avgLatency>239.881677</avgLatency>
+ <minLatency>8.000000</minLatency>
+ <maxLatency>691590.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>6</hits>
+ <avgLatency>220.000000</avgLatency>
+ <minLatency>123.000000</minLatency>
+ <maxLatency>550.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63580</hits>
+ <avgLatency>10410.842529</avgLatency>
+ <minLatency>38.000000</minLatency>
+ <maxLatency>118305.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12807</duration>
+ <totalRead>660229</totalRead>
+ <totalWrite>35476226498</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs034-10ge:/mnt/brick-sdg/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5322</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>538606</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>10280</hits>
+ <avgLatency>52.695233</avgLatency>
+ <minLatency>14.000000</minLatency>
+ <maxLatency>11609.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>401.000000</avgLatency>
+ <minLatency>401.000000</minLatency>
+ <maxLatency>401.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533286</hits>
+ <avgLatency>492.997581</avgLatency>
+ <minLatency>107.000000</minLatency>
+ <maxLatency>1004485.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>4257.557952</avgLatency>
+ <minLatency>116.000000</minLatency>
+ <maxLatency>738192.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>61.700000</avgLatency>
+ <minLatency>40.000000</minLatency>
+ <maxLatency>104.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>2</hits>
+ <avgLatency>33.500000</avgLatency>
+ <minLatency>32.000000</minLatency>
+ <maxLatency>35.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>95.000000</avgLatency>
+ <minLatency>95.000000</minLatency>
+ <maxLatency>95.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>78.666667</avgLatency>
+ <minLatency>34.000000</minLatency>
+ <maxLatency>171.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>336.512670</avgLatency>
+ <minLatency>29.000000</minLatency>
+ <maxLatency>18883.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>2</hits>
+ <avgLatency>357.000000</avgLatency>
+ <minLatency>259.000000</minLatency>
+ <maxLatency>455.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20782184</hits>
+ <avgLatency>598.386085</avgLatency>
+ <minLatency>15.000000</minLatency>
+ <maxLatency>1911038.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>255.672629</avgLatency>
+ <minLatency>10.000000</minLatency>
+ <maxLatency>29837.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>97.000000</avgLatency>
+ <minLatency>90.000000</minLatency>
+ <maxLatency>104.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1322858</hits>
+ <avgLatency>177.622480</avgLatency>
+ <minLatency>8.000000</minLatency>
+ <maxLatency>628838.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63708</hits>
+ <avgLatency>10476.659509</avgLatency>
+ <minLatency>46.000000</minLatency>
+ <maxLatency>133020.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12807</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>35319881728</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs034-10ge:/mnt/brick-sdc/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5246</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>7</reads>
+ <writes>537128</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>534</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>9507</hits>
+ <avgLatency>56.807510</avgLatency>
+ <minLatency>13.000000</minLatency>
+ <maxLatency>5666.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>373.000000</avgLatency>
+ <minLatency>373.000000</minLatency>
+ <maxLatency>373.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>531876</hits>
+ <avgLatency>536.963245</avgLatency>
+ <minLatency>110.000000</minLatency>
+ <maxLatency>1946240.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>4372.943031</avgLatency>
+ <minLatency>112.000000</minLatency>
+ <maxLatency>1528103.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>270</hits>
+ <avgLatency>318.977778</avgLatency>
+ <minLatency>107.000000</minLatency>
+ <maxLatency>2127.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>67.300000</avgLatency>
+ <minLatency>39.000000</minLatency>
+ <maxLatency>112.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>6</hits>
+ <avgLatency>36.666667</avgLatency>
+ <minLatency>26.000000</minLatency>
+ <maxLatency>44.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>3</hits>
+ <avgLatency>24699.666667</avgLatency>
+ <minLatency>20607.000000</minLatency>
+ <maxLatency>28639.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>134.000000</avgLatency>
+ <minLatency>134.000000</minLatency>
+ <maxLatency>134.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>91.000000</avgLatency>
+ <minLatency>35.000000</minLatency>
+ <maxLatency>343.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>344.282530</avgLatency>
+ <minLatency>27.000000</minLatency>
+ <maxLatency>139017.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>6</hits>
+ <avgLatency>362.166667</avgLatency>
+ <minLatency>276.000000</minLatency>
+ <maxLatency>558.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784946</hits>
+ <avgLatency>468.532728</avgLatency>
+ <minLatency>17.000000</minLatency>
+ <maxLatency>1781173.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>257.849294</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>9609.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>82.000000</avgLatency>
+ <minLatency>66.000000</minLatency>
+ <maxLatency>98.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>6</hits>
+ <avgLatency>51.000000</avgLatency>
+ <minLatency>43.000000</minLatency>
+ <maxLatency>65.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1320046</hits>
+ <avgLatency>150.794497</avgLatency>
+ <minLatency>8.000000</minLatency>
+ <maxLatency>208918.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>6</hits>
+ <avgLatency>286.833333</avgLatency>
+ <minLatency>131.000000</minLatency>
+ <maxLatency>594.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63926</hits>
+ <avgLatency>10515.739339</avgLatency>
+ <minLatency>43.000000</minLatency>
+ <maxLatency>120501.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12808</duration>
+ <totalRead>770193</totalRead>
+ <totalWrite>35293311411</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs033-10ge:/mnt/brick-sdc/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5246</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>5</reads>
+ <writes>537128</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>534</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>39991</hits>
+ <avgLatency>48.336101</avgLatency>
+ <minLatency>12.000000</minLatency>
+ <maxLatency>8824.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>417.000000</avgLatency>
+ <minLatency>417.000000</minLatency>
+ <maxLatency>417.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>531876</hits>
+ <avgLatency>356.286213</avgLatency>
+ <minLatency>107.000000</minLatency>
+ <maxLatency>1527772.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>3953.850445</avgLatency>
+ <minLatency>125.000000</minLatency>
+ <maxLatency>59969.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>270</hits>
+ <avgLatency>346.548148</avgLatency>
+ <minLatency>104.000000</minLatency>
+ <maxLatency>4912.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>61.750000</avgLatency>
+ <minLatency>38.000000</minLatency>
+ <maxLatency>108.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>6</hits>
+ <avgLatency>30.833333</avgLatency>
+ <minLatency>29.000000</minLatency>
+ <maxLatency>34.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>3</hits>
+ <avgLatency>25329.000000</avgLatency>
+ <minLatency>20165.000000</minLatency>
+ <maxLatency>28187.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>125.000000</avgLatency>
+ <minLatency>125.000000</minLatency>
+ <maxLatency>125.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>83.952381</avgLatency>
+ <minLatency>23.000000</minLatency>
+ <maxLatency>230.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>338.245911</avgLatency>
+ <minLatency>26.000000</minLatency>
+ <maxLatency>21319.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>6</hits>
+ <avgLatency>317.666667</avgLatency>
+ <minLatency>197.000000</minLatency>
+ <maxLatency>546.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784946</hits>
+ <avgLatency>471.902071</avgLatency>
+ <minLatency>17.000000</minLatency>
+ <maxLatency>2593081.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>255.287207</avgLatency>
+ <minLatency>10.000000</minLatency>
+ <maxLatency>23068.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>98.500000</avgLatency>
+ <minLatency>84.000000</minLatency>
+ <maxLatency>113.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>6</hits>
+ <avgLatency>72.500000</avgLatency>
+ <minLatency>43.000000</minLatency>
+ <maxLatency>141.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1320046</hits>
+ <avgLatency>148.346107</avgLatency>
+ <minLatency>7.000000</minLatency>
+ <maxLatency>322001.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>6</hits>
+ <avgLatency>258.166667</avgLatency>
+ <minLatency>119.000000</minLatency>
+ <maxLatency>769.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63751</hits>
+ <avgLatency>10315.958009</avgLatency>
+ <minLatency>36.000000</minLatency>
+ <maxLatency>109029.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12804</duration>
+ <totalRead>550155</totalRead>
+ <totalWrite>35293311411</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs033-10ge:/mnt/brick-sde/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5462</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>4</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>4</reads>
+ <writes>538782</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>356</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>38024</hits>
+ <avgLatency>47.081080</avgLatency>
+ <minLatency>12.000000</minLatency>
+ <maxLatency>6395.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>378.000000</avgLatency>
+ <minLatency>378.000000</minLatency>
+ <maxLatency>378.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533316</hits>
+ <avgLatency>443.953695</avgLatency>
+ <minLatency>112.000000</minLatency>
+ <maxLatency>813019.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>3972.896785</avgLatency>
+ <minLatency>127.000000</minLatency>
+ <maxLatency>141066.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPEN</name>
+ <hits>1</hits>
+ <avgLatency>127.000000</avgLatency>
+ <minLatency>127.000000</minLatency>
+ <maxLatency>127.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>180</hits>
+ <avgLatency>353.683333</avgLatency>
+ <minLatency>110.000000</minLatency>
+ <maxLatency>2606.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>117.550000</avgLatency>
+ <minLatency>28.000000</minLatency>
+ <maxLatency>1156.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>5</hits>
+ <avgLatency>54.400000</avgLatency>
+ <minLatency>33.000000</minLatency>
+ <maxLatency>91.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>2</hits>
+ <avgLatency>108976.000000</avgLatency>
+ <minLatency>11725.000000</minLatency>
+ <maxLatency>206227.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>87.000000</avgLatency>
+ <minLatency>87.000000</minLatency>
+ <maxLatency>87.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>70.523810</avgLatency>
+ <minLatency>22.000000</minLatency>
+ <maxLatency>132.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>332.104301</avgLatency>
+ <minLatency>28.000000</minLatency>
+ <maxLatency>13968.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>4</hits>
+ <avgLatency>2690.750000</avgLatency>
+ <minLatency>254.000000</minLatency>
+ <maxLatency>9842.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784709</hits>
+ <avgLatency>482.076572</avgLatency>
+ <minLatency>17.000000</minLatency>
+ <maxLatency>2251176.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>251.390378</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>12535.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>52.500000</avgLatency>
+ <minLatency>49.000000</minLatency>
+ <maxLatency>56.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>4</hits>
+ <avgLatency>68.000000</avgLatency>
+ <minLatency>51.000000</minLatency>
+ <maxLatency>90.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1322922</hits>
+ <avgLatency>143.565014</avgLatency>
+ <minLatency>8.000000</minLatency>
+ <maxLatency>174227.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>4</hits>
+ <avgLatency>285.750000</avgLatency>
+ <minLatency>184.000000</minLatency>
+ <maxLatency>454.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63263</hits>
+ <avgLatency>10230.817587</avgLatency>
+ <minLatency>38.000000</minLatency>
+ <maxLatency>110331.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12804</duration>
+ <totalRead>440118</totalRead>
+ <totalWrite>35379058332</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs033-10ge:/mnt/brick-sdg/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5322</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>538606</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>39218</hits>
+ <avgLatency>48.012061</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>13462.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>454.000000</avgLatency>
+ <minLatency>454.000000</minLatency>
+ <maxLatency>454.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533286</hits>
+ <avgLatency>439.071629</avgLatency>
+ <minLatency>106.000000</minLatency>
+ <maxLatency>1322746.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>3951.011128</avgLatency>
+ <minLatency>112.000000</minLatency>
+ <maxLatency>54487.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>71.700000</avgLatency>
+ <minLatency>43.000000</minLatency>
+ <maxLatency>139.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>2</hits>
+ <avgLatency>28.500000</avgLatency>
+ <minLatency>26.000000</minLatency>
+ <maxLatency>31.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>127.000000</avgLatency>
+ <minLatency>127.000000</minLatency>
+ <maxLatency>127.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>68.095238</avgLatency>
+ <minLatency>31.000000</minLatency>
+ <maxLatency>248.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>331.543826</avgLatency>
+ <minLatency>26.000000</minLatency>
+ <maxLatency>14854.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>2</hits>
+ <avgLatency>260.500000</avgLatency>
+ <minLatency>248.000000</minLatency>
+ <maxLatency>273.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20782184</hits>
+ <avgLatency>504.742271</avgLatency>
+ <minLatency>16.000000</minLatency>
+ <maxLatency>2019151.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>252.481140</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>12324.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>85.500000</avgLatency>
+ <minLatency>83.000000</minLatency>
+ <maxLatency>88.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1322858</hits>
+ <avgLatency>144.324226</avgLatency>
+ <minLatency>7.000000</minLatency>
+ <maxLatency>253325.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63969</hits>
+ <avgLatency>10281.412043</avgLatency>
+ <minLatency>37.000000</minLatency>
+ <maxLatency>118875.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12804</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>35319881728</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs033-10ge:/mnt/brick-sdf/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5423</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>6</reads>
+ <writes>539908</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>534</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>39595</hits>
+ <avgLatency>48.260791</avgLatency>
+ <minLatency>12.000000</minLatency>
+ <maxLatency>15411.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>400.000000</avgLatency>
+ <minLatency>400.000000</minLatency>
+ <maxLatency>400.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>534476</hits>
+ <avgLatency>464.594899</avgLatency>
+ <minLatency>109.000000</minLatency>
+ <maxLatency>1191204.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>3990.688216</avgLatency>
+ <minLatency>119.000000</minLatency>
+ <maxLatency>151853.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>270</hits>
+ <avgLatency>304.807407</avgLatency>
+ <minLatency>107.000000</minLatency>
+ <maxLatency>978.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>62.550000</avgLatency>
+ <minLatency>37.000000</minLatency>
+ <maxLatency>175.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>3</hits>
+ <avgLatency>27.000000</avgLatency>
+ <minLatency>23.000000</minLatency>
+ <maxLatency>29.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>3</hits>
+ <avgLatency>20523.333333</avgLatency>
+ <minLatency>16452.000000</minLatency>
+ <maxLatency>24098.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>99.000000</avgLatency>
+ <minLatency>99.000000</minLatency>
+ <maxLatency>99.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>80.761905</avgLatency>
+ <minLatency>30.000000</minLatency>
+ <maxLatency>279.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>335.063919</avgLatency>
+ <minLatency>30.000000</minLatency>
+ <maxLatency>24396.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>3</hits>
+ <avgLatency>439.666667</avgLatency>
+ <minLatency>295.000000</minLatency>
+ <maxLatency>569.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784341</hits>
+ <avgLatency>595.271530</avgLatency>
+ <minLatency>16.000000</minLatency>
+ <maxLatency>2422863.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>251.641562</avgLatency>
+ <minLatency>12.000000</minLatency>
+ <maxLatency>21350.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>53.500000</avgLatency>
+ <minLatency>49.000000</minLatency>
+ <maxLatency>58.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>6</hits>
+ <avgLatency>54.333333</avgLatency>
+ <minLatency>42.000000</minLatency>
+ <maxLatency>87.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1325240</hits>
+ <avgLatency>164.152950</avgLatency>
+ <minLatency>7.000000</minLatency>
+ <maxLatency>536345.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>6</hits>
+ <avgLatency>187.166667</avgLatency>
+ <minLatency>118.000000</minLatency>
+ <maxLatency>277.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>64097</hits>
+ <avgLatency>10364.207857</avgLatency>
+ <minLatency>38.000000</minLatency>
+ <maxLatency>106076.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12804</duration>
+ <totalRead>660164</totalRead>
+ <totalWrite>35476226498</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs033-10ge:/mnt/brick-sdb/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5314</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>539209</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>29984</hits>
+ <avgLatency>88.945538</avgLatency>
+ <minLatency>13.000000</minLatency>
+ <maxLatency>222369.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>17564.000000</avgLatency>
+ <minLatency>17564.000000</minLatency>
+ <maxLatency>17564.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533897</hits>
+ <avgLatency>381.345003</avgLatency>
+ <minLatency>108.000000</minLatency>
+ <maxLatency>1006956.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>3928.992149</avgLatency>
+ <minLatency>125.000000</minLatency>
+ <maxLatency>58029.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPEN</name>
+ <hits>8</hits>
+ <avgLatency>79.375000</avgLatency>
+ <minLatency>40.000000</minLatency>
+ <maxLatency>106.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>1</hits>
+ <avgLatency>133.000000</avgLatency>
+ <minLatency>133.000000</minLatency>
+ <maxLatency>133.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>70.250000</avgLatency>
+ <minLatency>42.000000</minLatency>
+ <maxLatency>119.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>10</hits>
+ <avgLatency>35.600000</avgLatency>
+ <minLatency>21.000000</minLatency>
+ <maxLatency>66.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>1</hits>
+ <avgLatency>546.000000</avgLatency>
+ <minLatency>546.000000</minLatency>
+ <maxLatency>546.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>132.000000</avgLatency>
+ <minLatency>132.000000</minLatency>
+ <maxLatency>132.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>84.000000</avgLatency>
+ <minLatency>32.000000</minLatency>
+ <maxLatency>323.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>337.179076</avgLatency>
+ <minLatency>30.000000</minLatency>
+ <maxLatency>26751.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>2</hits>
+ <avgLatency>304.500000</avgLatency>
+ <minLatency>302.000000</minLatency>
+ <maxLatency>307.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20784960</hits>
+ <avgLatency>692.996056</avgLatency>
+ <minLatency>19.000000</minLatency>
+ <maxLatency>2096924.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>251.662996</avgLatency>
+ <minLatency>10.000000</minLatency>
+ <maxLatency>12348.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>96.500000</avgLatency>
+ <minLatency>72.000000</minLatency>
+ <maxLatency>121.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>2</hits>
+ <avgLatency>43.500000</avgLatency>
+ <minLatency>40.000000</minLatency>
+ <maxLatency>47.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1324080</hits>
+ <avgLatency>233.503368</avgLatency>
+ <minLatency>8.000000</minLatency>
+ <maxLatency>702050.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>2</hits>
+ <avgLatency>183.000000</avgLatency>
+ <minLatency>115.000000</minLatency>
+ <maxLatency>251.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63873</hits>
+ <avgLatency>10244.214911</avgLatency>
+ <minLatency>36.000000</minLatency>
+ <maxLatency>112599.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12805</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>35359425865</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ <brick>
+ <brickName>gprfs033-10ge:/mnt/brick-sdd/brick</brickName>
+ <cumulativeStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>6</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>5233</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>538399</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats>
+ <fop>
+ <name>STAT</name>
+ <hits>37578</hits>
+ <avgLatency>50.066502</avgLatency>
+ <minLatency>11.000000</minLatency>
+ <maxLatency>41796.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>MKDIR</name>
+ <hits>1</hits>
+ <avgLatency>381.000000</avgLatency>
+ <minLatency>381.000000</minLatency>
+ <maxLatency>381.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>UNLINK</name>
+ <hits>533168</hits>
+ <avgLatency>559.038367</avgLatency>
+ <minLatency>108.000000</minLatency>
+ <maxLatency>1193882.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>RMDIR</name>
+ <hits>64070</hits>
+ <avgLatency>3966.203824</avgLatency>
+ <minLatency>115.000000</minLatency>
+ <maxLatency>158808.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>WRITE</name>
+ <hits>1</hits>
+ <avgLatency>163.000000</avgLatency>
+ <minLatency>163.000000</minLatency>
+ <maxLatency>163.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>STATFS</name>
+ <hits>20</hits>
+ <avgLatency>65.000000</avgLatency>
+ <minLatency>28.000000</minLatency>
+ <maxLatency>114.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FLUSH</name>
+ <hits>2</hits>
+ <avgLatency>41.500000</avgLatency>
+ <minLatency>38.000000</minLatency>
+ <maxLatency>45.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FSYNC</name>
+ <hits>1</hits>
+ <avgLatency>769.000000</avgLatency>
+ <minLatency>769.000000</minLatency>
+ <maxLatency>769.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>SETXATTR</name>
+ <hits>1</hits>
+ <avgLatency>180.000000</avgLatency>
+ <minLatency>180.000000</minLatency>
+ <maxLatency>180.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>GETXATTR</name>
+ <hits>21</hits>
+ <avgLatency>82.619048</avgLatency>
+ <minLatency>33.000000</minLatency>
+ <maxLatency>222.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>OPENDIR</name>
+ <hits>127583</hits>
+ <avgLatency>338.910302</avgLatency>
+ <minLatency>29.000000</minLatency>
+ <maxLatency>27731.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>CREATE</name>
+ <hits>2</hits>
+ <avgLatency>351.500000</avgLatency>
+ <minLatency>311.000000</minLatency>
+ <maxLatency>392.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>LOOKUP</name>
+ <hits>20782640</hits>
+ <avgLatency>503.561339</avgLatency>
+ <minLatency>24.000000</minLatency>
+ <maxLatency>1954321.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIR</name>
+ <hits>169728</hits>
+ <avgLatency>259.697310</avgLatency>
+ <minLatency>10.000000</minLatency>
+ <maxLatency>12803.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>INODELK</name>
+ <hits>2</hits>
+ <avgLatency>94.500000</avgLatency>
+ <minLatency>90.000000</minLatency>
+ <maxLatency>99.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FINODELK</name>
+ <hits>2</hits>
+ <avgLatency>87.000000</avgLatency>
+ <minLatency>79.000000</minLatency>
+ <maxLatency>95.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>ENTRYLK</name>
+ <hits>1322622</hits>
+ <avgLatency>155.024290</avgLatency>
+ <minLatency>7.000000</minLatency>
+ <maxLatency>523155.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>FXATTROP</name>
+ <hits>2</hits>
+ <avgLatency>214.500000</avgLatency>
+ <minLatency>181.000000</minLatency>
+ <maxLatency>248.000000</maxLatency>
+ </fop>
+ <fop>
+ <name>READDIRP</name>
+ <hits>63621</hits>
+ <avgLatency>10257.584728</avgLatency>
+ <minLatency>33.000000</minLatency>
+ <maxLatency>108888.000000</maxLatency>
+ </fop>
+ </fopStats>
+ <duration>12804</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>35305951244</totalWrite>
+ </cumulativeStats>
+ <intervalStats>
+ <blockStats>
+ <block>
+ <size>1</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>64</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>128</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>256</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>512</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1024</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2048</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4096</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8192</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16384</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>32768</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>65536</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>131072</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>262144</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>524288</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1048576</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2097152</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>4194304</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>8388608</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>16777216</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>33554432</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>67108864</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>134217728</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>268435456</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>536870912</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>1073741824</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ <block>
+ <size>2147483648</size>
+ <reads>0</reads>
+ <writes>0</writes>
+ </block>
+ </blockStats>
+ <fopStats/>
+ <duration>20</duration>
+ <totalRead>0</totalRead>
+ <totalWrite>0</totalWrite>
+ </intervalStats>
+ </brick>
+ </volProfile>
+</cliOutput>
diff --git a/qa/gluster/test.sh b/qa/gluster/test.sh
new file mode 100755
index 0000000..a8718b5
--- /dev/null
+++ b/qa/gluster/test.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+command="$1"
+shift
+case "$command"
+in
+ info|stats)
+ testcase="$1"
+ cat $GLUSTER_HOME/$testcase
+ ;;
+
+ start|stop)
+ volume="$1"
+ sequence="$2"
+ filename="$3"
+ echo "$command $volume - test $sequence" > "$filename"
+ ;;
+
+ *) # just ignore anything else
+ ;;
+esac
diff --git a/qa/group b/qa/group
new file mode 100644
index 0000000..c0e4dfc
--- /dev/null
+++ b/qa/group
@@ -0,0 +1,1031 @@
+## QA groups control
+##
+## define groups
+##
+## Do not start group name with a digit, expect alphabetic
+##
+## Last comment starting with a single # before a group name is the
+## one-line summary that "new" will report when asked to list groups
+##
+## Comments starting with a ## (or #<anything_other_than_whitesspace>
+## are ignored for the purposes of one-line summaries.
+
+# separate groups by distribution
+oss
+sgi
+
+# catch-all
+other
+
+# sanity check ... quick coverage of most functionality
+## Expectation is to run in 3-5 minutes, and must pass 100%
+## in the sense of no failures; _notrun is OK.
+## NOTE: used by testing orgs beyond developers, must pass!
+sanity
+
+# local check ... runs on localhost alone, no remotes used
+## NOTE: used by testing orgs beyond developers, do not add
+## tests here that are known to fail - goal is for 100% pass
+## rate, but due to test volume and chaos theory, some tests
+## do fail sometimes, on some platforms, during a full moon.
+local
+
+# packaging verification
+## Suitable for standalone use, particularly immediately after
+## installation to check.
+verify
+
+# flaky checks ... known to have intermittent races/hangs.
+## NOTE: some threading race conditions (possibly in tests),
+## prevent 100% pass rate being achieved here. Goal is to
+## get this group devoid of any tests.
+flakey
+
+## specific apps
+##
+# pmcd app and control infrastructure
+pmcd
+# pmcd proxy
+pmproxy
+# strip chart app
+pmchart
+# pmdumptext app
+pmdumptext
+# pmdumplog app
+pmdumplog
+# pmloglabel app
+pmloglabel
+# pmlogger app (not control scripts)
+pmlogger
+# pmie app, sample rules and friends
+pmie
+# dbpmda app
+dbpmda
+# pmlc app and pmlc-pmlogger IPC
+pmlc
+# pmfind app
+pmfind
+# folio handling (mkaf and pmafm), also record mode
+folio
+# pmval app
+pmval
+# pmkstat app
+pmkstat
+# pmstat app
+pmstat
+# pmem app
+pmem
+# pminfo app
+pminfo
+# pmprobe app
+pmprobe
+# diskstat
+diskstat
+# pmpost
+pmpost
+# pmdate
+pmdate
+
+# general PDU encode/decode
+pdu
+
+# PMNS related functions/programs
+pmns
+
+# PCP version compatability
+compat
+
+# generic libpcp services (not pdu, not context, not archive)
+libpcp
+
+# fetch-specific, optfetch, groupfetch
+fetch
+
+# archive support in libpcp, includes interp.c
+archive
+
+# getopt support - libpcp, pmgetopt, python
+getopt
+
+# cron.*, pm*log* apps (except pmlogger)
+logutil
+
+# NSS, SASL, other authentication
+secure
+
+# log extraction app
+pmlogextract
+# log reduction app
+pmlogreduce
+# log summary app
+pmlogsummary
+# pmlogger configuration app
+pmlogconf
+
+# general context manipulations, includes profile cacheing
+context
+
+# indom specific services
+indom
+
+# PM_CONTEXT_LOCAL
+context_local
+
+# PCP on different platforms
+interop
+
+# memory leaks, assorted
+mem_leak
+
+# general pmdas, but includes libpcp_pmda
+pmda
+
+# pmda installation scripts and procedures
+pmda.install
+
+## Assorted PMDAs
+pmda.apache
+pmda.cisco
+pmda.dmcache
+pmda.environ
+pmda.gfs2
+pmda.hotproc
+pmda.jbd2
+pmda.kvm
+pmda.logger
+pmda.mailq
+pmda.memcache
+pmda.mmv
+pmda.mpi
+pmda.news
+pmda.nvidia
+pmda.papi
+pmda.pmcd
+pmda.proc
+pmda.rsyslog
+pmda.sample
+pmda.sendmail
+pmda.shping
+pmda.simple
+pmda.summary
+pmda.systemd
+pmda.trivial
+pmda.txmon
+pmda.weblog
+pmda.xfs
+pmda.zswap
+
+# tools which use PCP_COUNTER_WRAP
+wrap
+
+# pmstore command and pmStore() libpcp routine
+pmstore
+
+# trace library and PMDA
+trace
+
+# libirixpmda
+libirixpmda
+
+# Linux platform PMDA
+pmda.linux
+
+# metrics class tests
+libqmc
+
+# libpcp_import - pmi* routines for log importing
+libpcp_import
+
+# pmsocks
+pmsocks
+
+# newhelp, chkhelp and associated library support
+help
+
+# pmgadgets
+pmgadgets
+
+# tests that use purify
+purify
+
+# tests that use valgrind
+valgrind
+
+# pmcd_wait - wait for pmcd to be ready for connections
+pmcd_wait
+
+# pmimport and plugins
+pmimport
+
+# pmieconf - app, pconf and lconf
+pmieconf
+
+# os testing - eagan
+ostest
+
+# mpi stuff
+mpi
+
+# mpi library
+libpcp_mpi
+
+# mpi read library
+libpcp_mpiread
+
+# dmf stuff
+dmf
+
+# derived metrics
+derive
+
+# event records and pmevent
+event
+
+# multi-threading and thread-safe exercises
+threads
+
+# perl bits
+perl
+
+# python modules and client tools
+python
+
+# fault injection (in libpcp)
+fault
+
+# log rewriting app
+pmlogrewrite
+
+# log checking
+pmlogcheck
+
+# Python
+pcp.py
+
+# Uses avahi
+avahi
+
+# test-group association ... one line per test
+# add :retired or :reserved as a tag immediately after the test number
+# to keep the test number allocated, but prevent the test from being run
+
+# ... use sort -n from here on down to tidy up this mess
+#
+000 other pmcd local ostest oss
+001 pdu local ostest oss sanity
+002 pdu pmcd local ostest oss sanity
+003 pdu pmcd mem_leak local ostest oss
+004 context local ostest oss sanity
+005 context archive local ostest oss sanity
+006 libpcp local ostest oss
+007 fetch local ostest oss sanity
+008 pmda libirixpmda ostest local oss
+009 pmda libirixpmda local ostest oss
+010 libpcp local ostest oss sanity
+011 mem_leak local ostest oss
+012 archive local oss
+013 archive pmdumplog local ostest oss
+014 archive local ostest oss pmdumplog
+015 pdu local ostest oss pmstore
+016 archive indom local ostest oss pmdumplog
+017 context local ostest oss
+018 pmcd local ostest oss
+019 context_local local ostest oss
+020 context_local local ostest oss
+021 other local ostest oss
+022 context_local pmda pmda.proc local ostest oss
+023 pmcd local pmprobe ostest oss
+024 context context_local ostest remote oss
+025 context pmlc local ostest oss
+026 other help local ostest oss sanity libpcp
+027 libpcp local ostest oss sanity
+028 pmns local ostest oss
+029 pmns local ostest oss pmdumplog
+030 pdu pmcd pmda context_local local ostest oss pmstore
+031 pmns local oss sanity
+032 pmlc local ostest oss
+033 libirixpmda local ostest oss
+034 pmlogger archive local ostest oss sanity pmdumplog
+037 archive local ostest oss
+038 pmlogger local oss pmdumplog
+039 pmlogger archive local ostest oss pmdumplog
+040 pmlogger mem_leak local ostest oss
+041 pmcd local ostest oss
+043 libpcp fetch pmlc local ostest oss pmstore
+044 fetch pmval local ostest oss
+045 libpcp pmda local ostest oss pmstore
+046 archive pmlogger pmdumplog local ostest oss
+048 archive local ostest oss sanity
+049 archive local ostest oss
+050 archive local ostest oss
+051 pmcd ostest remote oss
+052 pmns local ostest oss
+053 other local pmprobe ostest oss
+054 pmlogger archive ostest remote oss pmdumplog
+055 pmie ostest local oss sanity
+057 pmns local ostest oss
+058 pmval local ostest oss
+059 archive local ostest oss sanity pmdumplog
+060 archive context local ostest oss
+061 pmlogger pmlc local ostest oss pmdumplog
+062 pmcd local ostest oss
+063 fetch local ostest oss
+065 libpcp local ostest oss pmstore
+066 pmcd ostest remote oss
+067 pmcd local ostest oss
+068 context pmlc local ostest oss sanity
+069 pmcd pmval remote oss
+070 other ostest remote oss
+071 context_local local ostest oss
+072 pmlogger ostest remote oss pmdumplog
+074 pmda pmda.cisco pmda.pmcd local ostest oss sanity
+075 pmval pmstore ostest remote oss
+076 pmda.pmcd local ostest oss
+077 libpcp ostest remote oss
+078 pmdumplog local ostest oss
+079 libpcp archive local ostest oss
+080 libpcp pmval local oss sanity
+081 indom archive pmns remote oss pmdumplog
+082 pmns local ostest oss
+083 pmlc pmlogger compat remote oss
+084 other local ostest oss
+085 pmlogger local ostest oss sanity
+086 libpcp ostest remote oss
+087 archive local ostest oss sanity
+088 archive #500237 pmval local ostest oss
+089 archive pmval local ostest oss
+090 archive local ostest oss
+091 archive local ostest oss sanity
+092 archive local ostest oss
+093 archive local ostest oss
+094 pmval archive local ostest oss
+095 archive local ostest oss
+096 pmda.proc local oss
+097 archive local ostest oss
+098 pmlc pmlogger other local oss pmdumplog
+099 pmlc local oss
+100 pmlc pmlogger local oss pmdumplog
+101 pmlc pmlogger remote oss pmdumplog
+102 pmlc local oss
+103 pmlc pmlogger local oss pmdumplog
+104 pmlc pmlogger local oss pmdumplog
+105 pmlc pmlogger local oss pmdumplog
+106 pmlc pmlogger local oss pmdumplog
+107 pmlc pmlogger local oss sanity
+108 pmda.cisco pmda.sample local oss
+109 other local pmprobe oss
+110 pmda.simple pmda.proc local pmda.install oss
+111 pmda.proc pmval local oss
+112 pmns local oss sanity
+113 libirixpmda local oss
+114 pmda.linux local oss
+115 pmie remote oss
+116 other pmie pmval remote pmlc oss
+117 libirixpmda local oss
+118 pmie local oss
+119 logutil local #877570 oss
+120 libirixpmda local oss
+121 pmlogconf #893249 local oss
+122 trace local #893884 remote oss
+123 libpcp local oss
+124 pmie local #870661 oss
+125 pmval archive
+126:retired pmda.linux local oss
+127 pmlogreduce local oss sanity pmdumplog
+128 libirixpmda pminfo local oss
+129 pmlogreduce local oss pmval
+130 libirixpmda local oss
+131 libpcp remote oss
+132 pmlogger local oss
+133 pmlc pmlogger local oss pmdumplog
+134 pmlc pmlogger local oss pmdumplog
+135 pmlc archive local oss pmdumplog
+136 pmlogger local oss pmdumplog pmloglabel
+137 dbpmda local pmda.simple oss sanity
+138 pmns local oss
+139 pmlc local oss
+140 pmns local oss
+141 archive context local oss
+142 pmlogreduce local oss
+143 pmns local oss
+144 pmlogreduce local oss pmval
+145 pmns local oss
+146 pmns libpcp local oss sanity
+147 dbpmda local oss
+148 libirixpmda local oss
+149 libirixpmda local oss
+150 pmlogreduce local oss pmval
+151 logutil local oss pmlogextract
+152 pmda.pmcd pmval local oss
+153 folio local oss sanity
+154 pmda.cisco help local oss sanity
+155 pmcd pmstore pmda.sample local oss sanity
+156 pmda.sample pmda.proc local pmcd_wait pmda.install oss
+157 pmlogger local oss
+158 pmval pmie local oss
+159 pmda.cisco pmda.proc remote pmda.install oss
+160 libpcp local oss
+161 pmlogger local oss
+162 pmda pmda.proc local pmda.shping pmda.install oss
+163 archive local oss
+164 diskstat local oss pmval pmdumplog
+165 pmval local oss
+166 pmlogreduce local oss pmval pmdumplog archive
+167 pmda.pmcd pmval local oss
+168 pmlogextract #933456 local oss pmstore
+169 pmcd local oss
+170 other local oss
+171 archive local oss pmdumplog
+172 pmcd pmlc local oss
+173 archive local oss pmdumplog
+174 dbpmda local oss
+175 pmval local oss
+176 libpcp pmval local oss
+177 archive pmval local oss pmdumplog
+178 logutil pmval local pmlogextract oss sanity pmdumplog
+179 pmval pmlc local oss pmdumplog
+180 archive pmval local oss
+181 pmval archive pmval local oss
+182 pmlc pmlogger local oss
+183 logutil local oss
+184 logutil remote folio oss sanity pmdumplog
+185 logutil local folio oss
+186 logutil local pmlogextract oss
+187 pmcd pmlogger #327288 remote oss pmstore
+188 libpcp local oss
+189 pmie local oss
+190 libpcp local oss
+191 pmie local oss
+192 pdu local oss
+193 libpcp pmcd #935490 local oss pdu
+194 libpcp pmcd #935490 local oss
+195 archive local oss pmdumplog
+196 pmcd remote oss
+197 context local oss
+198 pmda context #934332 local oss
+199 pmda.trivial pmda.proc local pmda.install oss
+200 context local oss
+201 pmda local oss sanity
+202 logutil pmval local pmlogextract oss pmdumplog
+203 logutil archive pmval local pmlogextract oss pmdumplog
+204 pmlogger local oss pmdumplog
+205 pdu local oss
+206 archive pmval local oss
+207 pmns local oss sanity
+208 pmns local oss sanity
+209 pmval local oss
+210 pmns local oss pmval pmie sanity pmdumplog
+211 pmns local oss pmval pmie pmdumplog
+212 pmda pmda.cisco local oss
+213 dbpmda pmns local oss pmda.sample pmda.mmv
+214 pmlogextract local oss pmdumplog
+215 other pmsocks pmval remote oss
+216 pmda.linux local oss
+217 folio local oss
+218 archive logutil local pmlogextract oss pmdumplog
+219 other local oss
+220 pmlogger local oss
+221 pmlogger local oss
+222 other local oss
+223:retired pmns local oss
+224 pmcd local oss
+225 derive local oss
+226 dbpmda local oss
+227 folio local oss
+228 pmie local oss
+229 pmie local oss
+230 pmlogger pmlc local oss
+231 pmie #421411 local oss
+232 libpcp local oss sanity
+233 context_local local oss
+234 logutil local pmdumplog pmlogsummary pmlogextract oss sanity
+235 pmns local oss
+236 pmns local oss
+237 pmns local oss
+238 pmns local oss
+239 pmns local oss
+240 pmns local oss
+241 pmda.mmv local oss pmval perl
+242 pmlogger local oss
+243 pmcd local pmprobe oss
+244 pmcd local pmprobe oss
+245 pmns local oss
+246 derive local oss
+247 derive local oss
+248 pmlogger local oss pmdumplog
+249 derive local oss sanity
+250 pmns local oss
+251 archive pmval local oss
+252 pmlogger local oss pmdumplog
+253 derive local oss
+254 libpcp pmns local oss
+255 compat pmda #508731 #509091 pmda.proc help pmda.install local pmda.simple oss
+256 derive pmns local oss sanity
+257 libpcp pmns compat remote oss
+258 trace local pmda.install oss
+259 derive pmval local oss
+260 derive pmie local oss
+261 logutil pmdumplog pmval local pmlogextract oss
+262 context_local pmie pmsocks remote pmstat oss
+263 derive local oss sanity
+264 pmns local oss
+265 libpcp local oss
+266 logutil #466346 patch2140 patch2141 local pmlogextract oss pmdumplog
+267 pmlogger local oss
+268 interop local oss
+269 wrap pmval pmkstat local oss
+270 pmlogextract logutil local oss pmdumplog
+271 archive local oss pmdumplog
+272 pmcd pmval pmprobe remote oss
+273 libpcp local oss
+274 pmda help local pmda.install oss dbpmda
+275 derive local oss
+276 pmie pmval indom local oss
+277 libpcp pdu interop local oss
+278 other help local oss sanity
+279 pmcd local oss
+280 pmlogger logutil local folio oss
+281 archive mem_leak #504616 local oss
+282 pmcd local pmprobe logutil oss
+283 context pmcd local oss
+284:retired pdu local purify oss
+285 dbpmda local oss
+286 pmda.linux local oss
+287 pmlogreduce local oss pmval
+288 archive local oss
+289 libpcp fetch archive #505498 local oss
+290:retired pmns local purify oss
+291 logutil local pmlogextract oss pmdumplog
+292 pmlogextract logutil pmval local oss
+293 pmstat #939275 local oss
+294 pmproxy local oss pmval pmie
+295 pmproxy local oss pmval
+296 pmcd local oss
+297 pmproxy local oss
+298 pmie local oss
+299 libpcp local oss sanity
+300 pmcd local oss
+301 pmda pmcd pmlogger local oss
+302 pmlogextract logutil local oss pmdumplog
+303 logutil local pmlogextract oss pmdumplog
+304 pmlogger local oss
+305 pmgadgets local oss
+306 other local oss
+307 pmlc #936084 local oss
+308 pmlc pmlogger #452417 remote oss pmdumplog pmda.proc
+309 libpcp pmcd pmda.linux pmda.simple local oss
+310 pmie local oss
+311 archive compat pmlogger #509592 pminfo local oss pmstore pmdumplog
+312 pmie local oss
+313 pmval archive local oss pmdumplog
+314 pmie local oss
+315 pmie local oss
+316 libpcp local oss
+317 logutil pmlogsummary local oss
+318 pmie local oss
+319 pmie local oss
+320 local folio oss
+321 pmie local oss
+322 pmlc pmlogger remote oss
+323 pmda.shping pmda.proc local pmda.install oss
+324 pmda.txmon pmda.proc local pmda.install oss
+325 libpcp local oss
+326 pmlogger pmval libpcp pmcd local pmda.install folio oss pmdumplog
+327 archive oss local pmdumplog pmloglabel
+328 logutil local pmlogextract oss pmdumplog
+329:retired archive mem_leak local purify oss
+330:retired archive mem_leak local purify oss
+331:retired archive mem_leak local purify oss
+332:retired archive mem_leak local purify oss
+333:retired archive mem_leak local purify oss
+334 derive local oss
+335 derive local oss
+336 trace local pmda.install oss
+337 pmlogextract local oss pmval pmdumplog
+338 logutil pmlogextract local oss sanity
+339 pmie local oss
+340 pmcd remote oss
+341 pmda local oss
+342 other remote oss
+343 pmlogreduce local oss pmdumplog
+344 context_local local oss
+345 pmns derive local oss sanity
+346 pmda.mailq local pmda.install oss
+347 pmda.news local pmda.install oss perl
+348 pmda.kvm local pmda.install oss
+349 pmda.summary local pmda.install oss
+350 pmda.simple pmda local oss
+351 derive local oss
+352 derive pmlogger local oss pmdumplog
+353 pmsocks remote oss
+354 folio local oss sanity
+355 trace local pmda.install oss
+356 derive local oss
+357 other local oss
+358 pmie local oss pmstore
+359 pmcd pminfo sanity local oss
+360 pmie remote oss
+361 pmda.linux local oss
+362 pmlogconf local oss
+363 logutil local oss
+364 pmlogconf local oss
+365 pmcd remote oss
+366 pmlogconf local oss
+367 pdu local trace oss
+368 pmlogconf local oss
+369 pmimport local oss sanity pmdumplog perl
+370 pmimport local oss derive pmdumplog perl
+371 pmimport local oss pmdumplog perl libpcp_pmi
+372 pmimport local oss pmdumplog perl
+373 pmimport local oss perl
+374 pmlc pmlogger remote oss
+375 pmlc pmlogger remote oss
+376 trace local pmda.install oss
+377 other local oss
+378 pmie local oss
+379 pmda.cisco local oss
+380 libpcp pmda pmda.sample local oss
+381 logutil pmlc remote oss
+382 dbpmda pmda pmda.sample local oss
+383 pmda.cisco local flakey oss
+384 pmda.pmcd local oss
+385 libpcp pmda.sample pminfo pmprobe local oss event sanity
+386 pdu mem_leak valgrind local oss
+387 pmns mem_leak valgrind local oss
+388 archive mem_leak valgrind local oss
+389 pmlogger local oss
+390 pmda.proc local pmval oss
+391 archive mem_leak valgrind local oss
+392 pmns local oss
+393 archive mem_leak valgrind local oss
+394 archive mem_leak valgrind local oss flakey
+395 archive mem_leak valgrind local oss
+396 pmval local oss
+397 dbpmda libpcp local oss pdu event sanity
+398 pmcd local oss
+399 pmie local oss
+400 pminfo mem_leak valgrind context_local libpcp local oss event
+401 libpcp pminfo local oss event sanity
+402 archive local pmprobe oss
+403 pmprobe pminfo pmval #541380 local oss sanity
+404 libpcp local oss event sanity
+405 libpcp mem_leak valgrind local oss event
+406 libpcp local oss event
+407 derive local oss event sanity
+408 pmda local #627395 help oss
+409 libpcp pminfo local oss event
+410 pmdumplog local oss event
+411 pmda.simple local pmda.install oss
+412 wrap archive libpcp pmval local oss pmdumplog
+413 pmie local oss event
+414 libpcp local oss
+415 pmval pmstore local oss event
+416 pmda.news dbpmda local oss sanity perl
+417 archive local oss pmdumplog
+418 pmdumplog local oss
+419 pmdumplog local oss
+420 folio local oss pmdumplog
+421 trace local pmda.install oss
+422 libpcp local oss pmstore
+423 libpcp local oss
+424 logutil local pmlogsummary oss
+425 wrap logutil local pmlogsummary oss pmdumplog
+426 trace local oss
+427 pmcd #564017 local oss
+428 archive local pmval oss pmstore
+429 pmns local oss
+430 logutil local #553276 #568199 folio oss
+431 derive local oss
+432 pmlogreduce local oss
+433 pmie local #573184 oss
+434 pmval local oss
+435 archive local oss sanity pmdumplog
+436 archive local oss sanity pmdumplog
+437 archive local oss sanity
+438 archive local oss pmdumplog
+439 pmlc local oss
+440 pmlogger local oss pmdumplog
+441 pmlogger local oss
+442 pmlogextract local oss
+443 event local oss
+444 event local oss
+445 trace local oss
+446 trace local oss
+447 event local oss
+448 libpcp local oss
+449 threads local flakey oss
+450 pmlogextract local #584487 pmval oss
+451 threads local oss
+452 pmda.linux local oss
+453 perl local oss sanity
+454 pmcd local oss
+455 pmda.rsyslog local flakey pmda.install oss
+456 logutil local #591459 folio oss pmlogextract
+457 pmda.logger pmda.install event local flakey oss
+458 pmda.logger pmda.install event local oss
+459 pmlogreduce local oss valgrind
+460 pmlogextract local #598265 oss pmdumplog
+461 pmda.logger pmda.install event local oss
+462 pmcd_wait local #589006 #581025 oss
+463 pmns local oss
+464 pmns local oss
+465 pmdumplog local #625913 folio oss
+466 pmlogger local #625913 oss
+467 pmns pmdumptext local oss
+468 pmns pmdumptext local oss
+469 help local #626853 oss
+470 threads local oss
+471 pmda local #621699 oss
+472 threads local oss
+473 threads local oss
+474 threads local oss
+475 threads local oss
+476 fault local oss
+477 event fault local oss
+478 fault local oss
+479 archive pmdumplog local oss
+480 archive fault local oss
+481 pmlogrewrite local oss
+482 pmlogsummary local oss pmdumplog
+483 pmlogrewrite local oss pmdumplog
+484 pmlogrewrite local oss pmdumplog
+485 pmlogrewrite local oss pmdumplog
+486 pmlogrewrite local oss pmdumplog
+487 pmlogrewrite pmdumplog local oss
+488 pmlogrewrite pmdumplog local oss
+489 pmda local oss
+490 pmlogrewrite mem_leak valgrind local oss
+491 pmda local oss
+492 pmlogrewrite local oss
+493 pmlogrewrite local oss
+494 pmlogrewrite pmdumplog local oss
+495 pmlogrewrite pmval local oss pmlogextract
+496 pmlogrewrite pmdumplog local oss
+497 pmlogconf local oss
+498 event pmda local oss
+499 pmlogrewrite local oss
+500 logutil local #636417 folio oss
+501 pmie local oss
+502 pmlogrewrite local oss
+503 logutil pmlogrewrite local oss pmlogextract
+504 pmie remote pmsocks oss
+505 pmlogrewrite local oss
+506 pmlogrewrite local oss
+507 other local oss
+508 archive pmlogreduce pmlogextract local oss
+509 derive pmns local oss
+510 pmlogger pmlc local oss
+511 pmimport pmdumplog pmlogsummary perl local oss
+512 threads pminfo pmlogger pmlogextract pmdumplog dbpmda local oss fault
+513 libpcp pdu local oss
+514 pmie local oss
+515 pmie local oss
+516 pmie local oss
+517 other local oss
+518 other local oss flakey
+519 pmie remote oss
+520 pmie local oss
+521 pmie local oss
+522 pmcd local oss
+523 pmie local oss
+524 libpcp pmlogger local oss
+525 pmda.summary pmie local oss
+526 pmimport local oss valgrind
+527 libpcp_import perl local oss
+528 pmimport pmdumplog perl local oss
+529 pmie local oss
+530 logutil local pmlogextract local oss
+531 dbpmda local pmda.sample oss
+532 logutil pmlogextract local oss
+533 dbpmda local pmda.sample oss
+534 pmie local oss
+535 pmie local pmprobe oss
+536 pmimport local oss
+537 pmimport perl local oss
+538 pmie local oss pmstore
+539 pmpost local oss flakey
+540 pmda.linux local pminfo oss
+541 pmie #535080 local pmprobe oss
+542 pmdate #666344 local oss
+543 logutil remote oss pmlogextract
+544 pmimport local oss
+545 pmsocks local oss
+546 pmcd local oss
+547 libpcp pmcd local oss
+548 pmie local oss sanity
+549 pmie local oss
+550 libpcp pmcd local oss
+551 libpcp pmcd local oss
+552 libpcp local oss
+553 dbpmda python pmda.gluster local oss
+554 pmie local oss
+555 pmie local oss
+556 pmie local oss
+557 pmie local oss
+558 pmie local oss
+559 pmlogsummary local oss
+560 pmda.simple local pmda.install oss
+564 logutil local oss pmlogextract
+565 pmda.sendmail local pmda.install oss
+566 pmlogcheck local oss
+569 pmprobe #679693 local oss sanity
+570 pmns #690735 local oss
+571 pmlogger local oss pmdumplog
+572 pmcd pmda local pmda.install oss pmda.sample pmda.simple pmda.trivial
+574 libpcp pmns compat local oss sanity
+575 pmie local oss
+578 pmcd local pmda.install oss pmval
+580 indom local ostest oss
+581 pmie local oss
+583 pmie #698718 remote oss
+584:retired libpcp pmie local #698774 oss purify
+587 pmcd #754795 local pmda.install oss pmda.trivial
+589 remote oss
+592 pmda.sample local oss
+593 pmlogger #779495 local oss pmstore
+594 pmda.sample #779246 #782029 local oss
+597 pmda.shping pmda.proc pmda.install local oss
+599 pmie local oss
+600 libpcp local oss
+601 trace pmda.install local oss
+602 trace pmda.install local oss
+603 trace pmda.install remote oss
+605 trace local oss
+614 pmns local oss
+617 dbpmda help local oss
+622 pmie remote oss
+628 pmda local pmda.simple oss
+633 pmlogger local oss
+634 libirixpmda local pmval oss
+635 pmda.linux libirixpmda remote oss
+636 libpcp local oss
+638 pmns local oss
+639 pmns local oss
+640 pmpost local oss
+642 pmda.trivial pmns local oss pmda.simple pmda.sample pmda.sendmail trace
+643 pmda.trivial pmns local oss
+644 pmns local oss
+645 pmlogger local oss
+646 pmda.mmv local oss sanity
+647 pmda.mmv local oss
+648 pmda.mmv local oss
+649 pmda.mmv local oss
+650 pmlogger local oss pmdumplog
+651 pmproxy local oss
+652 pmda.systemd event flakey oss
+653 libpcp local oss
+654 pmda.gfs2 local oss
+655 pmda.gfs2 local oss
+660 pmwebapi local oss
+701 pmlogcheck local oss
+702 python libpcp local oss
+703 pmda.weblog local oss
+704:reserved pmda.mmv python mmv local oss
+705 libpcp local oss
+706 libpcp local oss
+707 python libpcp local oss
+708 python pmimport local oss
+709 python local oss
+710 python pmimport local oss
+711 pmimport pmdumplog pmlogsummary perl local oss
+712 context libpcp pmcd secure local oss
+713 context libpcp pmproxy secure local oss
+714 context libpcp pmcd secure local oss
+715 pmda.simple perl oss
+716 dbpmda pmda.simple perl oss
+717 pmda.simple python oss
+718 dbpmda pmda.simple python oss
+719 libpcp local oss
+720 libpcp local oss
+721 dbpmda local oss
+722 python local oss
+723 pmda.proc local oss
+724 pmfind local oss
+725 pmda.jbd2 local oss
+726 pmlogger pmdumplog local oss
+727 avahi local oss
+728 libpcp getopt local oss
+729 python local oss
+730 pmda.proc local oss
+731 pmda.proc local oss
+733 pmie pmval pmdumplog local oss
+734 libpcp pmstat remote oss
+735 pmda.proc local oss
+736 pmlogrewrite local oss
+737 python local oss
+738 logutil local oss
+739 python getopt local oss
+740 pmda.sample pmstore secure local oss
+741 python getopt local oss
+742 python local oss
+743 python local oss
+744 pmda.nvidia local oss
+745 pmda.nvidia local oss
+748 pmlogrewrite pmda.mysql local oss
+749 pmcd local oss
+750 pmda.rpm local oss
+751 pmda.rpm local oss
+752 libpcp local oss
+753 derive pmie local oss
+755 pmda.apache pmda.install local oss
+763 pmda local oss
+764 pmie local oss
+766 pmfind local oss
+768 pmlogextract local oss
+775 sanity pmfind local oss
+776 pmfind local oss
+779 pmda local oss
+780 pmwebapi local oss
+781 logutil local oss
+783 pmda.rpm local oss
+786 context context_local libpcp local oss
+787:reserved archive local oss pmie pmlogrewrite pmdumplog pmval
+798 pmda.nfsclient local oss
+815 pmie local oss
+823 pmda.sample pmstore secure local oss
+824 pmlogsummary local oss #1132476
+827 pmlogrewrite pmda.linux local oss
+828 valgrind archive context local oss
+829 python local oss
+830 other local oss
+831 pmda.sample pmstore secure local oss
+832 pmda.sample pmstore secure local oss
+833 archive context local oss
+834 pmie local oss
+835 pmda.memcache local oss
+836 pmlogsummary local oss
+840 avahi local oss
+841 pmda local oss
+842 python local oss
+844 pmda.linux local oss
+861 pmcd pmda.pmcd local oss
+875 libpcp local oss
+876 pmda.xfs local oss
+897 pmlc pmlogger local oss
+899 libpcp getopt local oss
+900 libpcp sanity local oss
+901 libpcp event local oss
+902 libpcp mem_leak valgrind event local oss
+903 pmda.papi local oss
+914 pmda.papi local oss
+922 derive pmie pmval local oss
+928 archive local oss
+929 logutil local oss
+943 pmprobe pmda.proc local oss
+944 pmcd secure local oss
+945 pmlogrewrite pmda.xfs local oss
+946 pmfind avahi local oss
+950 avahi local oss
+957 pmda.linux local oss
+958 archive local oss
+959 pmda.sample pmstore local oss
+962 archive local oss
+966 secure local oss
+972 pmda.zswap dbpmda local oss
+973 pmda.zswap pmda.install local oss
+978 libpcp getopt sanity local oss
+979 python local oss
+980 python local oss
+985 pmda.dmcache dbpmda local oss
+986 pmda.dmcache pmda.install local oss
+987 pmda.xfs local oss
+988 pmda.xfs local oss valgrind
+991 python local oss
+994 other verify oss
+1000 pmdumptext local sgi
+1001 pmchart local
+1002 pmchart local
+1003 pmchart local
+1004 pmchart local
+1005 pmchart local
+1006 pmchart local
+1007 pmchart local
+1008 pmdumptext libqmc local
+1009 pmdumptext libqmc local
+1010 pmdumptext pmlogger libqmc local
+1011 pmdumptext pmval libqmc local
+1012 pmdumptext libqmc local
+1013 libqmc local
+1014 libqmc local
+1015 libqmc local
+1016 libqmc local
+1017:retired libqmc local flakey
+1018:retired libqmc local flakey
+1019:retired libqmc local flakey
+1020:retired libqmc local flakey
+1021 libqmc local
+1022 pmdumptext local
+1023 pmdumptext local
+1025 pmdumptext pmlogger pmdumplog pmloglabel local
+1026 pmdumptext remote
+1027 pmdumptext local pmstore
+1028 pmdumptext local
+1029 libqmc local pmstore
+1044 pmie local pmieconf sgi sanity
+1045 pmie local pmieconf sgi
+1046 pmie local pmieconf sgi
+1047 pmie local pmieconf sgi
+1049 pmie pmieconf local sgi
+1050 pmieconf local sgi
+1051 pmieconf #696008 local sgi
+1108 logutil local folio sgi pmlogextract
diff --git a/qa/group-stats b/qa/group-stats
new file mode 100755
index 0000000..e729cb0
--- /dev/null
+++ b/qa/group-stats
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# Report test frequency by group
+#
+# Sample lines ...
+# # log rewriting app
+# pmlogrewrite
+#
+# 015 pdu local ostest oss sanity pmstore
+#
+
+awk <group '
+/^\#/ { next }
+NF == 0 { next }
+/^[0-9]/ { for (i = 2; i <= NF; i++) {
+ if (f[$i] == "") {
+ if ($i == "remote" || $i == "local" || $i == "sanity" ||
+ $i == "oss" || $i == "ostest" ||
+ $i ~ /^\#/ || $i ~ /patch/) {
+ # control "groups" or sgi bug numbers
+ continue
+ }
+ printf "Warning[%d]: test %s: group \"%s\" not declared\n",NR,$1,$i
+ }
+ else
+ f[$i]++
+ }
+ next
+ }
+ { if ($i == "remote" || $i == "local" || $i == "sanity" ||
+ $i == "oss" || $i == "ostest")
+ next
+ f[$1] = 0
+ }
+END { for (g in f) {
+ if (f[g] != "")
+ printf "%3d %s\n",f[g],g
+ }
+ }' \
+| sort -k 1,1nr -k2,2
diff --git a/qa/interact/GNUmakefile b/qa/interact/GNUmakefile
new file mode 100644
index 0000000..ce07d77
--- /dev/null
+++ b/qa/interact/GNUmakefile
@@ -0,0 +1,15 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(subst pcp,pcp-gui,$(PCP_VAR_DIR))/testsuite/interact
+TESTCASES = $(shell echo *-testcases)
+LSRCFILES = $(TESTCASES) GNUmakefile.install
+
+default setup:
+
+install: $(TESTCASES)
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(TESTCASES) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+include $(BUILDRULES)
diff --git a/qa/interact/GNUmakefile.install b/qa/interact/GNUmakefile.install
new file mode 100644
index 0000000..dd1e65d
--- /dev/null
+++ b/qa/interact/GNUmakefile.install
@@ -0,0 +1 @@
+default setup install:
diff --git a/qa/interact/chart-control-testcases b/qa/interact/chart-control-testcases
new file mode 100644
index 0000000..4ce56db
--- /dev/null
+++ b/qa/interact/chart-control-testcases
@@ -0,0 +1,101 @@
+Chart Correctness and Control
+=============================
+
+Live mode
+
+[ ] Run: pmchart -c views/ScaleManual -t 1
+ This should display two charts - the top one with instantaneous
+ sample metrics (sample.double.one and sample.double.ten), lower
+ chart with one counter metric (sample.byte_ctr).
+
+[ ] Select the top chart, open the Edit Chart dialog, disable Auto-
+ Scaling on the Y-Axis. Set Minimum to zero, Maximum to 12,
+ and press OK. Verify that the Y-Axis increases to this range.
+[ ] Repeat the above, except now set the Maximum to 5. Verify that
+ the Y-Axis updates to show the new maximum and that only the
+ yellow chart (sample.double.one) remains visible.
+[ ] Repeat once more, now setting Minimum to 5 and Maximum to 15.
+ Verify the Y-Axis scale change and that only the blue plot
+ (sample.double.ten) is now visible.
+
+[ ] Click the Live button to expose the Time Controls. Press the
+ Stop button. Wait 5 seconds, then press Play.
+[ ] Verify that there is a "gap" in all chart data (not zero) for
+ the time stopped, then it should continue to plot as before.
+
+[ ] Change the Interval to 0 seconds, and then press Play.
+ Verify that the Interval returns back to its previous valid
+ state and the charts are updated as before.
+[ ] Change the Interval to 1.5 seconds, and then press Play.
+ Verify that the time pulse is emitted now every two seconds
+ and that the display is updated at that frequency now.
+
+[ ] Change the Timezone to UTC in the Time Control dialog.
+ Verify that the position text is updated with the new time,
+ and that the pmchart time axis is updated also.
+[ ] Change back to localtime, verify position and time axis again.
+
+[ ] Run: pmchart -c CPU -L -t 0.025
+[ ] This should be updating extremely frequently, and depending on
+ the capabilities of your hardware will either keep up beautifully
+ (wow, nice machine!) or frequently miss updates (this is the case
+ with my laptop). To increase the probability that deltas will be
+ missed, wiggle the cursor around over the CPU chart, which makes
+ pmchart do more work. When updates are missed pmchart must plot
+ a blank section in the chart, but then it should continue on with
+ normal plotting.
+
+
+Archive mode
+
+[ ] Run: pmchart -c views/ScaleManual -t 1 -a archives/chartqa1
+ This should display two charts - the top one with instantaneous
+ sample metrics (sample.double.one and sample.double.ten), lower
+ chart with one counter metric (sample.byte_ctr). The initial
+ display should show a series of values for Thurs, Oct 11 2007,
+ with one visible "gap" in the series (both charts, same time).
+
+[ ] Click the Archive button to expose the Time Controls.
+[ ] Press Play, and let it run through to the end of the archive
+ (its not very long). There should be two time periods where
+ no values are displayed (note: plotting should stop completely
+ in these sections - broken lines, the plot values should *not*
+ dip to zero).
+[ ] Verify that when the end of the archive is reached, the time
+ controls are updated to Stop state, in both the Time Control
+ window and pmchart.
+[ ] Press Back, and let it run back to the start of the archive.
+ Verify that when the start of the archive is reached, time
+ controls are updated to Stop state in both the Time Control
+ window and pmchart.
+[ ] Change the Archive Control mode to Step, then take three steps
+ forward, and four steps back. Verify that the time controls
+ are update to Stop state in both the Time Control window and
+ pmchart.
+[ ] Change the Archive Control mode to Fast. Fast forward to the
+ end of the archive, verify it stops at the end, then fast back
+ to the start. Again verify that it stops, and the interface
+ state (icons) in both windows is updated to indicate this.
+[ ] Change back to Normal Archive Control mode. Press Play. Now
+ increase and decrease the playback Speed while pmchart is
+ displaying the data from the archive. Use both the direct
+ text input mechanism, and the wheel. You can use the little
+ button next to the wheel to reset Speed to its original value.
+[ ] Play space invaders! Randomly change mode, direction, speed,
+ etc. and verify that the interface doesn't get into a hung or
+ unexpected state.
+
+[ ] Change the Interval to 0 seconds, and then press Play.
+ Verify that the Interval returns back to its previous valid
+ state and the charts are updated as before.
+[ ] Change the Interval to 1.5 seconds, and then press Play.
+ Verify that the time pulse is emitted now every two seconds
+ and that the display is updated at that frequency now.
+
+[ ] Change the Timezone to UTC in the Time Control dialog.
+ Verify that the position text is updated with the new time,
+ and that the pmchart time axis is updated also. Also verify
+ that the Archive Bounds dialog displays an updated timeframe.
+[ ] Change back to localtime from the archive; verify position,
+ time axis and Archive Bounds again.
+
diff --git a/qa/interact/chart-create-edit-testcases b/qa/interact/chart-create-edit-testcases
new file mode 100644
index 0000000..349e8e2
--- /dev/null
+++ b/qa/interact/chart-create-edit-testcases
@@ -0,0 +1,227 @@
+Creating and Editing Charts
+===========================
+
+Live Create
+
+[ ] Start pmchart, click on New Chart in the File Menu Item or Toolbar.
+ Verify that the New Chart dialog is displayed with no entries in
+ the Chart Plots list, one host in the Available Metrics list, and
+ one level of the local hosts metric namespace expanded.
+[ ] Resize the window, down to its minimum size and up to a larger size
+ than the initial window. Verify the child widget layout remains as
+ sensible as possible for the window size.
+[ ] Before selecting anything click on the OK push button, and verify
+ that a warning dialog is displayed (No metrics selected), that
+ the New Chart dialog remains on screen and no chart is created in
+ the main pmchart window.
+
+[ ] Verify the metic namespace traversal and selection functionality:
+ - Double click on the hostname, verify the metric list collapses.
+ - Double click on the hostname, verify the list reappears.
+ - Select "sample", then "seconds". Verify the full metric path has
+ appeared in the text box below the list.
+ - Click the blue Metric Info button and in the Info dialog verify
+ that the Info tab displays the metric name, short help text,
+ descriptor (type, indom, semantics, units), long help, and the
+ current value. Then click on the Value tab, which should cause
+ the pmtime live window to be displayed and the current values
+ for sample.seconds should be reported at the current interval.
+ - Click the red Delete button. It should be disabled, so nothing
+ should happen here at this stage.
+ - Click the left-arrow button and verify the metric appears in the
+ Chart Plots list, fully expanded, and with the default colour.
+ - Now click the big red Smite button again, and verify the metric
+ is removed from the Chart Plots list.
+ - Select samples.seconds again from the Available Metrics list, and
+ press OK. Verify that a line plot chart is created which starts
+ plotting this metric (its value should constantly hover very close
+ to the sample interval).
+
+[ ] Verify default metric colors
+ - Open the Settings dialog and select the Colors tab.
+ - Open the New Chart dialog, navigate to sample.hordes in the
+ Available Metrics list, and (multi-) select the first 50 instances.
+ - Click OK and verify from the legend that the colours selected match
+ the default plot colour rotation.
+ - Select Delete Chart from the Edit menu.
+
+[ ] Verify chart metadata
+ - Open the New Chart dialog, navigate to sample.load and click
+ on the left-arrow button to add it to the Chart Plots list.
+ - Click on the Chart tab, and modify the following attributes:
+ Title: NewChartQA
+ Style: Area Plot
+ Legend: Off
+ Y-Axis Auto-Scale: Off
+ Min: 40
+ Max: 45
+ - Click OK, and verify that the chart is created with all of these
+ parameters in effect.
+ - Close the Chart
+ - Open the New Chart dialog, navigate to the sample metrics and
+ select both recv_pdu and xmit_pdu, and add them to the Chart Plot
+ list simultaneously using the left-arrow button.
+ - Click on the Chart tab and set Style: to Stacked Bar.
+ - Click OK, and verify that a stacked bar chart is created.
+ - Close the Chart
+
+[ ] Add Host
+ - Open up the New Chart dialog
+ - Push the Add Host button
+ - enter no.such.host and verify nothing bad happens
+ - enter your valid remote QA host and verify it is added to
+ the Available Metrics list with its top level metric names.
+ - Select sample.long.one from the first host, and sample.long.ten
+ from the second, and add the two metrics to the Chart Plot list.
+ - Click on the Chart dialog, and set the style to Stacked Bar.
+ - Click on OK and verify that a bar chart is created with the two
+ metrics, one from each host, values one and ten respectively.
+ - Close the Chart
+
+[ ] Verify color selection Tab
+ - Open up the New Chart dialog
+ - Add the sample.drift metric to the Chart Plots and click Colors.
+ - Verify that the First colour box (below Revert button) displays
+ the current (#-cycle default) colour.
+ - Drag the cursor around in the color and darkness selection boxes
+ and verify that the colour box above the Apply (left arrow) push
+ button changes as you move the cursor. Verify that the HSV/RGV
+ values change as well.
+ - Type into each of the HSV/RGB spin boxes - they should not accept
+ non-numeric input, modifying a value on one row (HSV or RGB) will
+ affect values on the other, and all have a range between 0 - 255,
+ except for Hue, which is 0 - 359.
+ - Select a colour different to the default plot colour, and press
+ the Apply button. Verify that the colour displayed in the Chart
+ Plot list is updated.
+ - Press the Revert button, and verify that the colour displayed in
+ the Chart Plot list is reverted to its previous value.
+ - Press OK.
+
+
+Live Edit
+
+[ ] Click on Edit Chart from the Edit menu. Verify that the metric
+ from the previous exercise (sample.drift) is the only one displayed
+ in the Chart Plots list, and its colour matches the previous colour.
+[ ] Select sample.drift in the Chart Plots list.
+
+[ ] Verify the color selection Tab
+ - Select a new (different) colour and press the left-arrow button to
+ Apply the change.
+ - Enter a plot label of "Drifter".
+ - Press OK, and verify that the chart changes to using the new colour
+ and new legend label for its sample.drift plot.
+
+[ ] Verify changing each piece of chart metadata
+ - Click on the Edit Chart action, and modify the following attributes:
+ Title: EditChartQA
+ Style: Utilization
+ Legend: Off
+ Y-Axis Auto-Scale: Off
+ Min: 1
+ Max: 1
+ - Click OK, and verify that a window is displayed preventing min/max
+ from being the same.
+ - Change Y-Axis Max: to 1.
+ - Click OK, and verify that the chart is created with all of these
+ parameters in effect.
+ - Click on the Edit Chart action, and modify the following attributes:
+ Title: EditChartQA2
+ Style: Line Plot
+ Legend: On
+ Y-Axis Auto-Scale: On
+ - Click OK, and verify that the chart is created with all of these
+ parameters in effect.
+
+[ ] Verify adding and removing metrics
+ - Bring up the Edit Chart dialog. Select the sample.drift metric from
+ Chart Plots and press the red Delete button. Now press OK, and make
+ sure that a dialog is displayed preventing the creation of a chart
+ with no metrics.
+ - Press Cancel.
+ - Bring up the Edit Chart dialog. Select the sample.drift metric from
+ Chart Plots and press the red Delete button. Select sample.load in
+ the Available Metrics list, add it to the Chart Plots list, and then
+ press OK. Verify that the chart is now displaying only sample.load.
+
+[ ] Check handling of instance names with spaces
+ - Run: pmchart -a archives/spotinstance -c views/SpotInstances
+ - Edit -> Chart
+ + Verify that the list of existing chart metrics shows the instance
+ name correctly - i.e. "kernel.all.cpu.wait.total" is listed as an
+ instance name and not part of the metric name.
+
+[ ] Check the conversion of plot style in live mode
+ - Run: pmchart -c CPU -c CPU
+ (yes, the view appears twice)
+ - Edit -> Chart
+ + step through the Styles for the bottom chart, and verify that the
+ results mactch those shown in the top chart
+ Utilization -> Line Plot -> Utilization
+ Utilization -> Bar Plot -> Utilization
+ Utilization -> Stacked Bar Plot -> Utilization
+ Utilization -> Area Plot -> Utilization
+
+[ ] Check the hiding of plots in archive mode
+ - Run: pmchart -c CPU -c CPU -t 1 -a archives/viewqa1
+ (yes, the view appears twice)
+ - in the lower chart, go through this sequence and verify that the
+ plotted values match the values in the upper chart ... at the
+ end of each cycle the two charts should be identical
+ + click Idle off in the legend
+ + click User off in the legend
+ + click Kernel off in the legend
+ + click Nice off in the legend
+ + click Intr off in the legend
+ + click Wait off in the legend
+ (bottom chart should be blank)
+ + click Wait on in the legend
+ + click Intr on in the legend
+ + click Nice on in the legend
+ + click Kernel on in the legend
+ + click User on in the legend
+ + click Idle on in the legend
+ - Edit -> Chart and change Style to Line Plot for both charts (may need
+ to Step in the pmtime dialog to get the plots updated correctly), then
+ repeat the legend off and on sequence above
+
+Archive Create
+
+[ ] Click on the Archive Tab. Click on the New Chart toolbutton. Click
+ on the Archive push button, and open up pcp-gui/qa/archives/viewqa1,
+ pcp-gui/qa/archives/viewqa2 and pcp-gui/qa/archives/viewqa3.
+[ ] Verify that the hosts "edge" and "leaf" are displayed along with the
+ top level of their respective metric namespaces.
+ Verify also that the Time Axis in the main window has been updated
+ to display a timeframe in September 2007, EST.
+[ ] Create a CPU view from the archive
+ - Select all of the kernel.all.cpu metrics from the Available Metrics
+ list and add them to the Chart Plots list.
+ - Modify each of the colours - dark blue for "user", red for "sys",
+ "green" for idle, cyan for "wait.total" and light yellow for "intr".
+ - Change the chart properties:
+ Title: CPU Utilisation QA
+ Style: utilisation
+ - Press OK and inspect your handiwork.
+[ ] Close the Archive Tab.
+
+
+Error handling
+
+[ ] Go through all the "problematic" sample PMDA metrics and verify:
+ - Attempt to create a chart with sample.darkness.
+ (should not be possible - instance domain but no values)
+ - Attempt to create a chart with sample.noinst.
+ (should not be possible - no instance domain)
+ - Attempt to create a chart with sample.needprofile.
+ (should not be possible - no profile set)
+ - Attempt to create a chart with sample.string.null
+ (should not be possible - string value)
+ - Attempt to create a chart with sample.aggregate.null
+ (should not be possible - aggregate value)
+ - Attempt to create a chart with sample.bad.unknown
+ (should not be possible - unknown PMID)
+ - Attempt to create a chart with sample.bad.nosupport
+ (should not be possible - ENOSUPPORT PCP errno)
+
diff --git a/qa/interact/chart-scaling-testcases b/qa/interact/chart-scaling-testcases
new file mode 100644
index 0000000..a49b47f
--- /dev/null
+++ b/qa/interact/chart-scaling-testcases
@@ -0,0 +1,53 @@
+Scaling Charts
+==============
+
+See also qa 006 for automated tests.
+
+[ ] Start pmchart as follows:
+ $ pmafm 20071023-08-06-36.folio replay
+
+[ ] The initial configuration should be from top to bottom (5 charts):
+
+ Y-axis scale Max Y-axis value
+ Kbyte 1000
+ byte/millisec 1000
+ nanosec 1000
+ <nothing> 1000
+ Kbyte/sec 1000
+
+[ ] Open pmtime
+ - move the time slider back to the start of the archive
+ - change Archive Control to Step
+ - click Step Forward 10 times
+
+ The chart configuration should change to be:
+
+ Y-axis scale Max Y-axis value
+ Gbyte 110
+ Mbyte/millisec 36
+ millisec 10
+ <nothing> 0.18
+ Kbyte/sec 80
+
+[ ] Change Archive Control to Fast, and click Fast Forward until the end
+ of the archive is reached.
+
+ The chart configuration should change to be:
+
+ Y-axis scale Max Y-axis value
+ Gbyte 110
+ Mbyte/millisec 100
+ hour 30
+ <nothing> 1
+ Mbyte/sec 50
+
+[ ] Click Fast Backward until the start of the archive is reached.
+
+ The chart configuration should change to be:
+
+ Y-axis scale Max Y-axis value
+ Gbyte 110
+ Mbyte/millisec 36
+ millisec 0.1
+ <nothing> 0.18
+ Kbyte/sec 80
diff --git a/qa/interact/export-print-testcases b/qa/interact/export-print-testcases
new file mode 100644
index 0000000..0616a0c
--- /dev/null
+++ b/qa/interact/export-print-testcases
@@ -0,0 +1,57 @@
+Export and Print
+================
+
+Export
+
+[ ] Run: pmchart -a archives/chartqa1 -c views/ScaleManual
+[ ] Verify that the default image format (png) is show, the default file
+ name is $HOME/chart.png, and that the Width/Height are 302/280 pixels
+ respectively.
+[ ] Shift the quality slider up/down - check that the value is updated in
+ the Quality spin box. Check the reverse also - that the slider moves
+ when values are entered via the Quality spin box controls.
+[ ] Enter the following parameters:
+ - Image format: jpeg (make sure that the file extension changes)
+ - Transparent background disabled
+ - Filename /tmp/qa1.jpeg
+ - All Charts in Tab enabled
+ and Press OK.
+[ ] Verify using an image editor (eog, gimp, xv, ...) that a jpeg image
+ matching the main pmchart window is generated in that file.
+[ ] Select the second (bottom) chart in the main window, then open the
+ Export dialog once again.
+[ ] The previous settings should all have been preserved. Enable the
+ transparent background option, and click the Selected Chart Only
+ toggle button. When you click that button, the Width/Heigth should
+ be updated to 302/151 pixels. Modify those values to 300/150 pixels.
+ Change the format to png (check the filename extension is updated),
+ and press OK.
+[ ] Verify with your image viewing tool that a transparent background
+ png format image with only the selected chart has been generated,
+ and that it has dimensions 300/150 pixels.
+[ ] Open the Export dialog once again, and press OK. You should see a
+ dialog prompting you whether you want to overwrite the existing
+ /tmp/qa1.png file. Click cancel, and cancel in the export dialog.
+
+
+Print
+
+[ ] Open the Print Dialog, click on Print to File, and enter the
+ file name "/tmp/qa2.pdf".
+[ ] Set paper Orientation to Landscape.
+[ ] Set paper Format to B5.
+[ ] Press Print, and verify that the file generated displays both of
+ the charts and matches the above printing parameters, using a pdf
+ viewing tool (xpdf, gnome-viewer, ...)
+
+[ ] Open the Print Dialog, click on Print to File, and enter the
+ file name "/tmp/qa3.pdf".
+[ ] Set paper Orientation to Portrait.
+[ ] Set paper Format to A4.
+[ ] Press Print, and verify that the file generated matches these
+ parameters, using your pdf viewing tool, and shows both graphs.
+
+[ ] If you have a printer connected, send a job to the printer instead
+ of to a file, and verify it once more (print parameters will now
+ depend on your printer and available paper).
+
diff --git a/qa/interact/help-system-testcases b/qa/interact/help-system-testcases
new file mode 100644
index 0000000..2ea61b1
--- /dev/null
+++ b/qa/interact/help-system-testcases
@@ -0,0 +1,19 @@
+On-Line Help System
+===================
+
+[ ] Check the Manual is accessible from Help menu.
+[ ] Verify the Tutorial is accessible from Help menu.
+[ ] Check that the About dialog shows current version.
+[ ] Verify the See Also dialog is showing good stuff.
+[ ] Check "What's This" by randomly selecting main window/dialog widgets
+ and seeing if a/ Tooltip help is displayed for each, and b/ if it makes
+ any sense. Search for any widgets that don't display some help, they
+ need to be fixed.
+
+[ ] Repeat each of the above items for pmtime.
+
+[ ] Check any major new features in this release are documented.
+[ ] Skim-read the manual looking for out-of-date images, typos, etc.
+[ ] Skim-read the tutorial looking for out-of-date images, typos, etc.
+
+[ ] Verify that the manual and tutorial are accessible on the Web.
diff --git a/qa/interact/query-testcases b/qa/interact/query-testcases
new file mode 100644
index 0000000..5cea555
--- /dev/null
+++ b/qa/interact/query-testcases
@@ -0,0 +1,80 @@
+pmquery
+=======
+
+Message
+
+[ ] Run: pmquery -icon archive -b One -b Two -b Three
+ This should display a dialog with three numbered buttons,
+ an archive icon and empty text box. Click on the button
+ labeled "Two", and the dialog should be dismissed and the
+ text "Two" written to the terminal.
+
+[ ] Run: pmquery -icon info -b One -b Two -B Three
+ This should display a dialog with three numbered buttons,
+ a light bulb icon and empty text box, and the button with'
+ label Three should be visibly the default. Hit the enter
+ key, and the dialog should be dismissed with the text
+ "Three" written to the terminal.
+
+[ ] Run: pmquery -icon error -b Cancel -B OK
+ A dialog with stop sign and two buttons. Hit the Escape
+ key and the window should be dismissed with no output sent
+ to the terminal.
+
+[ ] Run: pmquery -icon question -buttons OK,Cancel -default OK
+ Window should have a question mark icon, two buttons, with
+ the OK button being leftmost and default. Press the OK
+ button and verify that the text OK is sent to the terminal.
+
+[ ] Run: pmquery -icon question -buttons OK:1,Cancel,201:201
+ A window should be displayed with three buttons - the third
+ should have the label "201", and clicking it should cause
+ pmquery to exit with status 201 - verify this by typing
+ "echo $?" in the terminal after clicking the "201" button.
+
+Input
+
+[ ] Run: pmquery -icon host -input -t default.local
+ The window should have the conputer icon, and an editable
+ text box containing the text default.local. Append "123"
+ to the text and press "Continue" - verify that the modified
+ string is displayed in the terminal.
+
+
+File I/O
+
+[ ] Run: echo Text | pmquery -icon critical -file -
+ Should display an error icon and a text box containing the
+ string "Text"
+
+[ ] Run: pmquery -icon critical -file /dev/null
+ Should display an error icon and an empty text box.
+
+[ ] Run: pmquery -icon critical -file /tmp/message
+ Should display a "no such file" error message
+
+[ ] Run: echo Text > /tmp/message
+ pmquery -icon critical -file /tmp/message
+ Should display an error icon and a text box containing the
+ string "Text".
+
+[ ] Run: pmquery -icon critical -B OK -print
+ Hit the OK button and text "OK" should be written out.
+
+[ ] Run: pmquery -icon critical -B OK -noprint
+ Hit the OK button and no text should be written out.
+
+[ ] Run: pmquery -icon critical -B OK -timeout 2
+ Wait for two seconds, and the dialog should dismiss itself.
+
+[ ] Run: pmquery -icon critical -file /tmp/message -useslider
+ Text box with "Text" should have a vertical slider.
+
+[ ] Run: pmquery -icon critical -file /tmp/message -noslider
+ Text box with "Text" should have no vertical slider.
+
+[ ] Run: pmquery -icon critical -file /tmp/message -noframe
+ Text box with "Text" should have no outline frame.
+
+[ ] Run: pmquery -icon critical -t one -t two -t three -header Eek
+ Three lines of text, a single button and window titled "Eek".
diff --git a/qa/interact/record-testcases b/qa/interact/record-testcases
new file mode 100644
index 0000000..d0bc9dc
--- /dev/null
+++ b/qa/interact/record-testcases
@@ -0,0 +1,56 @@
+Record Mode
+===========
+
+Phase A:
+[ ] Check running pmlogger processes (ps auw | grep pmlogger)
+[ ] Open one CPU View for localhost and a second CPU view for
+ a remote host, click Record -> Start -> OK
+[ ] Verify red light comes on and Record menu items are:
+ enabled (Query/Stop/Detach) and disabled (Start)
+[ ] Click Record -> Query, check contents of 2 pmlogger popups
+[ ] Click Record -> Stop, check contents of 2 pmlogger popups.
+[ ] Verify red light is now disabled and Record menu items are
+ disabled (Query/Stop/Detach) and enabled (Start).
+[ ] Click on newly created Tab, click on Archive Time Control
+ push button in bottom left corner, in pmtime select Options
+ -> Boundaries and verify the time window matches up with
+ the timeframe recorded.
+[ ] Fast forward through the archive, then Fast Back to start,
+ checking the charts for both hosts matches expectations.
+[ ] Verify no additional pmlogger processes are running.
+[ ] Run: pmafm ~/.pcp/pmlogger/[timenow].folio replay
+ Verify a pmchart starts up with appropriate archive view
+ of CPU utilisation for both hosts.
+
+Phase B:
+[ ] Check running pmlogger processes (ps auw | grep pmlogger)
+[ ] Open one CPU View for localhost and a second CPU view for
+ a remote host, click Record -> Start -> OK
+[ ] Verify red light comes on and Record menu items are:
+ enabled (Query/Stop/Detach) and disabled (Start)
+[ ] Click Record -> Detach, check contents of 2 pmlogger popups.
+[ ] Verify red light is now disabled and Record . menu items:
+ disabled (Query/Stop/Detach) and enabled (Start)
+[ ] Verify two additional pmlogger processes are running.
+
+Phase C:
+[ ] Open a Disk View for localhost, click Record -> Start
+[ ] Verify only valid double precision numbers can be entered
+ as the time interval, try: abc, 1.1.1, 12.a4, -1 (all bad)
+[ ] Set the time units to minutes and the interval to 0.001.
+[ ] Push folio button, set folio to "/tmp/folio" from popup
+[ ] Push logfile button, try set log to "/tmp" from popup
+ (verify this isn't possible), then "/var/tmp/pmlogger.log"
+ from the popup.
+[ ] Push archive button, set name to "/tmp/archive/record"
+[ ] Click OK
+[ ] Leave run for a few seconds, then click Record -> Stop
+[ ] Run: pmdumplog -l /tmp/archive/record
+ Verify the output matches the time recorded
+[ ] Run: pminfo -a /tmp/archive/record
+ Verify the output lists several kernel.all.cpu metrics,
+ and three pmcd.pmlogger metrics.
+[ ] Run: pmafm /tmp/folio replay
+ Verify a pmchart starts up with appropriate archive view
+[ ] Run: rm -fr /tmp/archive /var/tmp/pmlogger.log /tmp/folio
+
diff --git a/qa/interact/search-testcases b/qa/interact/search-testcases
new file mode 100644
index 0000000..7b14b54
--- /dev/null
+++ b/qa/interact/search-testcases
@@ -0,0 +1,75 @@
+Search Dialog for Metric Selection
+==================================
+
+[ ] Start pmchart, click on New Chart from the File Menu Item or Toolbar
+ Verify that the Search icon (magnifying glass) is enabled on
+ the central menu bar
+ Click the Search icon
+ The Metric Seach dialog should appear with
+ - Metric Name Pattern empty
+ - Instance Name Pattern empty
+ - Clear and Cancel buttons enabled
+ - Select All, Search and OK buttons disabled
+
+[ ] In the Metric Name Pattern input field, enter sample.bi
+ Note that Search is enabled at the first keystroke (s)
+ Excute the search via each of the following
+ - Enter
+ - click Search
+ - type Alt-S
+ Results should always be the same ... sample.bigid and the 9 instances
+ of the sample.bin metric
+
+[ ] Test the selection behaviour for the matched metrics
+ - Select All button
+ - Click (select one, deselect all others)
+ - Shift-click (select a range to last click)
+ - Ctl-click (toggle single item selection)
+
+[ ] Select All then Ctl-click sample.bin[bin-500], then click OK
+ Expect 9 metrics to be selected in the New Chart dialog, and the Available
+ Metrics tree to be expanded at the [-]-- sample and [-]-- bin nodes
+
+[ ] Return to the Metric Search dialog.
+ Expect the previous state to be preserved - Metric Name Pattern is
+ sample.bi, 10 matching results and 9 selected results, all buttons enabled
+
+[ ] Click Clear
+ Should revert to the initial state
+ - Metric Name Pattern empty
+ - Instance Name Pattern empty
+ - Clear and Cancel buttons enabled
+ - Select All, Search and OK buttons disabled
+
+[ ] Go to the New Chart dialog,
+ - in live mode, select disk.all.read and select all of the instances
+ for network.interface.total.packets.
+ - in archive mode, select sample.bigid and all of the instances for
+ pmcd.pmlogger.port
+ Click the search icon to open the Search Metric dialog.
+ The New Chart dialog should be unchanged and insensitive (Search
+ Metric is modal).
+
+[ ] In the Instance Name Pattern, enter ^bin-[0-5]..$ then click Search.
+ Expect 40 matches for the instance names bin-100 to bin-500 for the
+ 8 metrics (.bin .bogus_bin .bucket and .part_bin for the sample and
+ sampledso pmdas)
+ In the Metric Name Pattern, enter b.*_bin then click Search.
+ Expect just 10 matches for the .bogus_bin metrics in the sample and
+ sampledso pmdas.
+
+[ ] Click Select All, then click OK.
+ Back in the New Chart dialog, click the Insert plot into button
+ and verify that all of metrics appear in the chart
+ - disk.all.read (or sample.bigid)
+ - all the instances of network.interface.total.packets (or
+ pmcd.pmlogger.port)
+ - instances bin-100 thru bin-500 for sample.bogus_bin
+ - instances bin-100 thru bin-500 for dsosample.bogus_bin
+
+[ ] Repeat all of the above for archive mode, starting pmchart as
+ follows:
+ Run: $ pmchart -a pcp-gui/qa/archives/viewqa1
+ There are no sampledso metrics in this archive, so the set of
+ matching metrics will typically be halved compared to the live
+ tests.
diff --git a/qa/interact/settings-testcases b/qa/interact/settings-testcases
new file mode 100644
index 0000000..0b6a92d
--- /dev/null
+++ b/qa/interact/settings-testcases
@@ -0,0 +1,103 @@
+Global Settings
+===============
+
+Sampling
+
+[ ] Open the Settings dialog. This is available from the Edit
+ menu (Linux) or from the pmchart Preferences menu on a Mac.
+[ ] Type some invalid chart intervals into the one-line editor
+ (try: abc, 0.1.1, -1 - none should be possible)
+[ ] Set the chart interval to zero and press OK - should block
+ this with an error dialog.
+
+[ ] Type some invalid logger intervals into the one-line editor
+ (try: 0XY, 1.0.2, -1 - none should be possible)
+[ ] Set the logger interval to zero and press OK - should block
+ this with an error dialog.
+
+[ ] Set default logger interval to 20 minutes
+ Change units to Milliseconds; value should be: 1,200,000
+ Change units to Seconds; value should be: 1,200
+ Change units to Minutes; value should be: 20
+ Change units to Hours; value should be: 0.333333
+ Change units to Days; value should be: 0.138888
+ Change units to Weeks; value should be: 0.001984
+[ ] Set default chart interval to 0.25 seconds
+ Change units to Milliseconds; value should be: 250
+ Change units to Seconds; value should be: 0.25
+ Change units to Minutes; value should be: 0.004166
+ Change units to Hours; value should be: 0.000069
+ Change units to Days; value should be: 0.000002
+ Change units to Weeks; value should be: 0.000000
+ Change units to Seconds; reset value to 0.25 seconds
+[ ] Move the sample history and visible history sliders - they
+ should never allow visible history to become less than the
+ sample history, and neither is ever allowed to become less
+ than 2.
+[ ] Check that only numeric values can be entered into each of
+ the visible and simple history spin boxes - check range of
+ values is again 2 -> maximum (360 at the moment).
+[ ] Check that the spin box Up/Down arrows increase/decrease
+ each value by 1, and that PageUp/PageDown increase/decrease
+ each value by 10 - check the range of values is again 2 ->
+ the maximum, for all of Up/Down/PageUp/PageDown.
+[ ] Set sample history size to 4
+[ ] Set visible history size to 2
+[ ] Press OK, exit pmchart, restart pmchart, bring up Settings
+ dialog and verify the following values are set...
+ ( ) Default Chart Interval: 0.25 seconds
+ ( ) Default Record Interval: 1200 seconds
+ ( ) Default Visible Points: 2
+ ( ) Default Sample Count: 4
+
+
+Colors
+
+[ ] Open the Settings Dialog, click on the Colors tab.
+[ ] Click the Selected Chart Highlight button, select a different
+ colour (hot pink), and click OK. Verify that the push button
+ changes colour to your selection.
+[ ] Click the Canvas Background button, select a different colour
+ (white), and click OK. Verify that the push button changes
+ colour to your selection.
+[ ] Click on one of the existing Default plot colours and select a
+ different colour. Verify the new colour is displayed for that
+ button.
+[ ] Click on any three of the white (empty) color buttons and make
+ a colour selection for each. Any three buttons - gaps in the
+ set are fine, and testing extremes (next free slot, last free)
+ is a good idea too).
+[ ] Push the OK button to accept your changes.
+[ ] Open the QA View "qa/views/RotateColors", and expand the window
+ the full height of your screen . Also open the Settings dialog
+ again at the colors page, and verify that the colors have been
+ used for each plot in the View in the order listed on the page.
+[ ] Verify also that the Settings dialog is displaying the colours
+ you selected before, but with no spaces between colours now -
+ i.e. with any unused (white) "gap" buttons removed.
+[ ] Finally, verify that the plot after the final colour specified
+ originally in the Settings dialog has rotated back to the first
+ colour, the next has rotated back to the second colour, etc.
+
+
+Toolbar
+
+[ ] Open the Settings Dialog, click on the Toolbar tab.
+[ ] Uncheck the "Show Toolbar on Startup" check box.
+[ ] Select "Right and Vertical" from the Location/Orientation box.
+[ ] Quit pmchart. Restart pmchart. Verify that the Toolbar is not
+ displayed at all. Verify also that the Toolbar option from the
+ Options menu is not checked.
+[ ] Select the Toolbar item in the Options menu. Verify that the
+ toolbar is now displayed on the right of the main charting area
+ instead of across the top of the main window.
+[ ] Open the Settings dialog once more, verifying that the "Show
+ Toolbar on Startup" option is not checked and that the Location/
+ Orientation combo box shows Right/Vertical.
+[ ] Make a series of selections from the Actions list (items are
+ selected and deselected simply by clicking on them). Press the
+ OK button and verify that the main window is updated to display
+ your selected actions, instead of the defaults.
+[ ] Exit pmchart. Restart pmchart. Verify that your selected set of
+ actions is still displayed, in preference to the defaults.
+
diff --git a/qa/interact/tab-create-edit-testcases b/qa/interact/tab-create-edit-testcases
new file mode 100644
index 0000000..0ea288e
--- /dev/null
+++ b/qa/interact/tab-create-edit-testcases
@@ -0,0 +1,70 @@
+Creating and Editing Tabs
+=========================
+
+Live Edit
+
+[ ] Run: pmchart -t 0.5 -c CPU -c Disk
+[ ] Select Start from the Record menu. Press OK to start recording.
+[ ] Click on Edit Tab in the Edit Menu, to bring up the default live
+ mode tab details.
+ Verify that the Live Hosts button is checked, the displayed Label
+ matches the original Tab ("Live") and the default sample ranges
+ are displayed correctly in both sliders and spin boxes (should be
+ 60 Visible and 180 Total Samples). Verify also that it is not
+ possible to modify the Live/Archive radio button selection.
+[ ] Modify the Total samples using both the spinbox and the slider to
+ increase and decrease its value. Verify that the Total Samples
+ value cannot be reduced below the Visible Samples value, and that
+ neither can be reduced below 2. Modify the Visible Samples value
+ using both methods. Verify that its value cannot be increased
+ beyond the Total Samples value.
+[ ] Verify the minimum and maximum ranges of both Visible and Total
+ Samples - currently this is 2 to 360.
+[ ] Press Cancel.
+
+[ ] Click on the Zoom In button (from the Toolbar or Edit menu)
+ repeatedly. Verify that the number of visible points decreases
+ down to the minimum (2 samples) and that the toolbar and menu
+ actions become disabled at that point.
+[ ] Click on the Zoom Out button repeatedly. Verify that the number
+ of visible points increases up to the maximum (360 samples), that
+ the Zoom In action becomes enabled after the first press, and that
+ the Zoom Out action is disabled once the maximum is reached.
+[ ] Zoom In three clicks, then expose the Edit Tab dialog. The Visible
+ Samples should be 252, and the Total Samples should still be 360.
+[ ] Resize the Edit Tab window, down to its minimum size and up to a
+ larger size than the initial window. Verify the child widget layout
+ remains as sensible as possible for the window size.
+[ ] Change the Label to "LiveQA", set Visible points to 120 and press OK.
+ Verify that the changes are made to the current pmchart Live tab.
+
+Live Create
+
+[ ] Click on the Create Tab chart from the Edit menu or toolbar.
+ Check the Live Hosts radio button, set the Label to "LiveQA2", set
+ Visible points to 12 and Total points to 24. Press OK. Verify that
+ a new Live Tab is created with each of those parameters (use Edit
+ Tab dialog to verify the total/visible points setting).
+[ ] Open the CPU and Disk views in the new Tab. Verify that they start
+ to display data matching the same charts in the original Live tab.
+[ ] Select Close Tab from the File menu.
+
+Archive Create
+
+[ ] Select Stop from the Record menu.
+[ ] Verify that a new Archive Tab is created named "Record".
+[ ] Click on the new tab and verify that it is of archive type, has a
+ sensible time axis, and is displaying the same CPU/Disk views as
+ the original Live tab.
+[ ] Click on the archive time control button, and verify that the Bounds
+ dialog in the Time Controls matches the length of time you recorded.
+
+Archive Edit
+
+[ ] Click on the Edit Tab dialog for the new Archive Tab. Verify that
+ it displays the Archive radio button as checked (and not editable),
+ that the samples settings match the original Live Tab.
+[ ] Modify the Label to be "RecordQA" and press OK.
+[ ] Click on the Zoom In and Zoom Out toolbar buttons a few times and
+ verify that nothing unexpected happens.
+
diff --git a/qa/interact/view-create-save-testcases b/qa/interact/view-create-save-testcases
new file mode 100644
index 0000000..be941bd
--- /dev/null
+++ b/qa/interact/view-create-save-testcases
@@ -0,0 +1,124 @@
+Opening and Saving Views
+========================
+
+Live Open
+
+[ ] Start pmchart, click on Open View in the File Menu Item or Toolbar
+ Verify that the initial view displays the System views (CPU, Disk,
+ Loadavg, NFS, etc). All View names should be fully visible with a
+ (light blue folder) View icon associated with each.
+[ ] Resize the window, down to its minimum size and up to a larger size
+ than the initial window. Verify the child widget layout remains as
+ sensible as possible for the window size.
+[ ] Before selecting anything click on the Open push button, and verify
+ that a warning dialog is displayed (No views specified) and that
+ the Open View dialog remains on screen.
+
+[ ] Verify the filesystem traversal functionality - select your home
+ directory from the Path combo box. The list of displayed files
+ should be updated to match, and the System View toolbutton (top-
+ right corner) should no longer be selected.
+[ ] Click on the Parent toolbutton (arrow icon, just right of the Path
+ combo box), and verify this traverses to the parent directory).
+ Check that the Path combo box is updated each time to show the new
+ full path. Repeat clicking it until the root directory is reached.
+[ ] Click on the Path combo box, all directories visited should be in
+ the list.
+[ ] Select your home directory from the Path combo box again. Now walk
+ to the root of the filesystem by entering the parent directory (..)
+ into the File text box.
+
+[ ] Click on the Host combo box. At this stage it should just show the
+ local QA host name. Click on the Add Host push button, to the right
+ of the Host combo box. Enter an invalid name, e.g. no.such.host in
+ the Add Host dialog. Verify that the error is reported and that the
+ dialog stays on-screen. Press Cancel.
+[ ] Click the Add Host button once more, and this time enter a valid
+ remote hostname. Click OK, and then verify that the Host combobox
+ now displays two hosts, with the newly added host first in the list
+ (and selected as the default host now).
+ **Note: the host used next should be the local (not remote) QA host:
+[ ] Switch (back) to the local QA host in the Host combo box. Click
+ on the CPU and Disk view icons (need Ctrl+Click, for multi-select)
+ then click on the Open button. Verify that these views are indeed
+ opened in the main pmchart window (should have CPU/Disk metrics,
+ legend on, auto-scale for Disk view, 100% utilisation view for CPU).
+
+Live Save
+
+[ ] Select the Save View option from the File menu.
+[ ] Resize the window, down to its minimum size and up to a larger size
+ than the initial window. Verify the child widget layout remains as
+ sensible sensible as possible for the window size.
+[ ] Verify the filesystem traversal functionality - select your home
+ directory from the Path combo box. The list of displayed files
+ should be updated to match, and the User View toolbutton (top-
+ right corner) should no longer be selected.
+[ ] Click on the Parent toolbutton (arrow icon, just right of the Path
+ combo box), and verify this traverses to the parent directory).
+ Check that the Path combo box is updated each time to show the new
+ full path. Repeat clicking it until the root directory is reached.
+[ ] Click on the Path combo box, all directories visited should be in
+ the list.
+[ ] Select your home directory from the Path combo box again. Now walk
+ to the root of the filesystem by entering the parent directory (..)
+ into the File text box.
+
+[ ] Click on the User Views toolbutton (top right corner). Enter the
+ name "DynamicQA" into the File text box, and click the Save button.
+[ ] Open the Save Views dialog once more. Enter the name "DynamicQA"
+ into the File text box, and click the Save button. Verify that a
+ warning message is displayed saying that file exists; press Cancel.
+[ ] Check the "Preserve hostname in View" box. Enter the view name
+ "LiteralQA" in the file text box, and press the Save button.
+[ ] Create a new tab - click the New Tab tool button on the main window,
+ then enter the Label "Dynamic QA", ensure Live Host radio button is
+ enabled, and press the OK button. Click on the DynamicQA Tab (if it
+ isn't already visible), and Click the Open View tool button. Select
+ the remote host name entered earlier on, select our new "DynamicQA"
+ view from the list of views, and press OK. Verify that the view just
+ created shows metrics from the *remote* host.
+[ ] Create a new tab - click the New Tab tool button on the main window,
+ then enter the Label "Literal QA", ensure Live Host radio button is
+ enabled, and press the OK button. Click on the LiteralQA Tab (if it
+ isn't already visible), and Click the Open View tool button. Select
+ the remote host name entered earlier on, select our new "LiteralQA"
+ view from the list of views, and press OK. Verify that the view just
+ created shows metrics from the *local* host.
+
+Archive Open
+
+[ ] Click on the Archive Tab. Click on the Open View toolbutton. Click
+ on the Archive push button, and open up pcp-gui/qa/archives/viewqa1,
+ pcp-gui/qa/archives/viewqa2 and pcp-gui/qa/archives/viewqa3.
+[ ] Verify that the hosts "edge" and "leaf" are displayed alongside each
+ archive in the Archive combo box, and that "edge" is highlighted.
+ Verify also that the Time Axis in the main window has been updated
+ to display a timeframe in September 2007, EST.
+[ ] Navigate to pcp-gui/qa/views/NoSuchHost, and press the Open button.
+ Verify that an error dialog is displayed regarding no.such.host, and
+ that the main pmchart window is unchanged.
+[ ] Click on the User Views tool button, and open up the DynamicQA view.
+ Verify that this view is successfully opened for the host "edge".
+
+Archive Save
+
+[ ] Bring up the Save View dialog, enter "DynamicQA2" into the File text
+ box, and press the Save button.
+[ ] Bring up the Save View dialog, check the "Preserve hostname in View"
+ box, enter the view name "LiteralQA2" in the file text box, and press
+ the Save button.
+[ ] Bring up the Save View dialog, click on the User Views toolbutton
+ (near top right corner). Enter "LiteralQA2" into the File text box,
+ and press the Save button.
+[ ] Quit out of pmchart.
+ Run: $ pmchart -c LiteralQA2 -a pcp-gui/qa/archives/viewqa1
+ Verify that this fails and no changes are made to the pmchart window.
+ Run: $ pcp-gui -c LiteralQA2 -a pcp-gui/qa/archives/viewqa2
+ Verify that this successfully opens up an archive view.
+ Run: $ pmchart -c DynamicQA2 -h <remote>
+ Verify that this succeeds and opens up a live view.
+ Run: $ pmchart -c DynamicQA2 -a pcp-gui/qa/archives/viewqa1
+ Verify that this successfully opens up an archive view.
+ Run: $ pmchart -c DynamicQA2 -a pcp-gui/qa/archives/viewqa2
+ Verify that this successfully opens up an archive view.
diff --git a/qa/linux/GNUmakefile b/qa/linux/GNUmakefile
new file mode 100644
index 0000000..a2a851f
--- /dev/null
+++ b/qa/linux/GNUmakefile
@@ -0,0 +1,16 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/linux
+ROOTFILES = $(shell echo *-root-*.tgz)
+LSRCFILES = $(ROOTFILES) GNUmakefile.install
+
+default setup default_pcp:
+
+install install_pcp: $(ROOTFILES)
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(ROOTFILES) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+include $(BUILDRULES)
+
diff --git a/qa/linux/GNUmakefile.install b/qa/linux/GNUmakefile.install
new file mode 100644
index 0000000..dd1e65d
--- /dev/null
+++ b/qa/linux/GNUmakefile.install
@@ -0,0 +1 @@
+default setup install:
diff --git a/qa/linux/cgroups-root-001.tgz b/qa/linux/cgroups-root-001.tgz
new file mode 100644
index 0000000..70ad5cc
--- /dev/null
+++ b/qa/linux/cgroups-root-001.tgz
Binary files differ
diff --git a/qa/linux/xfs-root-001.tgz b/qa/linux/xfs-root-001.tgz
new file mode 100644
index 0000000..0993a4e
--- /dev/null
+++ b/qa/linux/xfs-root-001.tgz
Binary files differ
diff --git a/qa/localconfig b/qa/localconfig
new file mode 100644
index 0000000..3d1e99e
--- /dev/null
+++ b/qa/localconfig
@@ -0,0 +1,4 @@
+PCP_PLATFORM=linux
+PCP_VER=3910
+PCP_EOE_VER=0
+PCP_PRO_VER=0
diff --git a/qa/mk.localconfig b/qa/mk.localconfig
new file mode 100755
index 0000000..0eff86a
--- /dev/null
+++ b/qa/mk.localconfig
@@ -0,0 +1,55 @@
+#! /bin/sh
+#
+# re-create localconfig files (platform, versions) if need be
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# generic initialization
+. ./common.rc
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+eval `./mk.pcpversion $PCP_VERSION`
+
+if which rpm >/dev/null 2>&1
+then
+ PCP_PRO_VER=0
+ rpm -q pcp-pro >/dev/null 2>&1
+ [ $? = 0 ] && {
+ PCP_PRO_VER=`rpm -q pcp-pro \
+ | sed -e 's/pcp-pro-//' \
+ -e 's/\.//g' \
+ -e 's/-.*//' \
+ -e 's/^\(..\)\(.\)$/\10\2/'`
+ }
+else
+ PCP_PRO_VER=$PCP_VER
+fi
+
+cat <<End-of-File >$tmp.out
+PCP_PLATFORM=$PCP_PLATFORM
+PCP_VER=$PCP_VER
+PCP_EOE_VER=$PCP_VER
+PCP_PRO_VER=$PCP_PRO_VER
+End-of-File
+
+write_localconfig()
+{
+ awk -F= '{ print "#define",$1,$2 }' < $tmp.out > src/localconfig.h
+ mv $tmp.out localconfig
+}
+
+if [ ! -f localconfig ]
+then
+ echo "Installing \"localconfig\""
+ write_localconfig
+elif diff $tmp.out localconfig >/dev/null
+then
+ :
+else
+ echo "Updating \"localconfig\""
+ rm -f localconfig
+ write_localconfig
+fi
diff --git a/qa/mk.pcpversion b/qa/mk.pcpversion
new file mode 100755
index 0000000..de865cb
--- /dev/null
+++ b/qa/mk.pcpversion
@@ -0,0 +1,15 @@
+#! /bin/sh
+#
+# given a dotted notation pcp version string, produce a single number
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+VERSION=$1
+PCP_VER=`echo "$VERSION" \
+ | sed \
+ -e '/^[^.]*\.[^.]*$/s/$/.0/' \
+ -e 's/\.\([0-9]\)$/.0\1/' \
+ -e 's/\.//g'`
+[ -z "$PCP_VER" ] && PCP_VER=0
+echo PCP_VER=$PCP_VER
diff --git a/qa/mk.qa_hosts b/qa/mk.qa_hosts
new file mode 100755
index 0000000..896b73b
--- /dev/null
+++ b/qa/mk.qa_hosts
@@ -0,0 +1,83 @@
+#! /bin/sh
+#
+# make qa_hosts from qa_hosts.master
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+iam=mk.qa_hosts
+
+# Need to clear some environment variables so that behaviour is the same
+# when we're called via make from common.check, where the environment has
+# already been set in common.check and possibly modified in make to include
+# parenthesis around the value, e.g. PCP_AWK_PROG="/usr/bin/gawk --posix"
+# which blows up below otherwise.
+#
+# Unsetting PCP_ENV_DONE forces pcp.env to be sourced again, and unsetting
+# PCP_AWK_PROG allows it to be assigned a new value.
+#
+unset PCP_ENV_DONE
+unset PCP_AWK_PROG
+
+# generic initialization
+. ./common.rc
+
+if [ ! -f qa_hosts.master ]
+then
+ echo "$0: Cannot find \"qa_hosts.master\""
+ exit 1
+fi
+
+if [ -f qa_hosts -a ! -w qa_hosts ]
+then
+ echo "$0: Cannot write \"qa_hosts\""
+ exit 1
+fi
+
+my_host=`hostname | sed -e 's/\..*//'`
+my_fqdn=`pmhostname`
+if [ -z "$my_fqdn" -o "$my_host" = "$my_fqdn" ]; then
+ if [ -x /bin/domainname ]; then
+ my_domain=`domainname`
+ [ -z "$my_domain" ] || my_fqdn=${my_host}.${my_domain}
+ fi
+fi
+[ -z "$my_fqdn" -o "$my_host" = "$my_fqdn" ] && my_fqdn=$my_host".localdomain"
+
+rm -f qa_hosts
+grep "^#order" qa_hosts.master \
+| while read tag pat recipe
+do
+ if echo $my_fqdn | fgrep "$pat" >/dev/null 2>&1
+ then
+ trap "rm -f /tmp/$$; exit 1" 1 2 3 15
+
+ # strip qa_hosts.master leaving only hosts
+ #
+ sed -e 's/#.*//' -e '/^ *$/d' qa_hosts.master >/tmp/$$
+
+ # match in turn
+ #
+ for sel in $recipe
+ do
+ fgrep $sel /tmp/$$ \
+ | $PCP_AWK_PROG '
+BEGIN { srand('$$') }
+ { print 100*rand(),$0 }' \
+ | LC_COLLATE=POSIX _POSIX2_VERSION=0 sort +0n -1 \
+ | cut -d' ' -f2 >>qa_hosts
+ done
+
+ rm -f /tmp/$$
+ break
+ fi
+done
+
+if [ ! -f qa_hosts ]
+then
+ echo "$0: no #order line matches this host \"$my_fqdn\", local testing only"
+ touch qa_hosts
+fi
+
+exit 0
+
diff --git a/qa/mk.variant b/qa/mk.variant
new file mode 100755
index 0000000..6674530
--- /dev/null
+++ b/qa/mk.variant
@@ -0,0 +1,117 @@
+#!/bin/sh
+#
+# Make a QA test variant based on PCP version
+#
+
+if [ -f localconfig ]
+then
+ . ./localconfig
+ echo "Current QA being configured for PCP before PCP_VER=$PCP_VER"
+else
+ echo "No localconfig, run mk.localconfig first"
+ exit 1
+fi
+
+tmp=/var/tmp/$$
+rm -f $tmp.*
+sts=0
+trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+
+for seq
+do
+ case "$seq"
+ in
+ ?) seq=00$seq
+ ;;
+ ??) seq=0$seq
+ ;;
+ esac
+
+ if [ ! -f "$seq.out" ]
+ then
+ echo "$seq: No current $seq.out file ... giving up"
+ sts=1
+ exit
+ fi
+
+ files=`echo ${seq}* \
+ | sed \
+ -e 's/^/ /' \
+ -e 's/$/ /' \
+ -e "s/ $seq / /" \
+ -e "s/ $seq\.out / /" \
+ -e "s/ $seq\.full / /" \
+ -e "s/ $seq\.full.ok / /" \
+ -e "s/ $seq\.out.bad / /"\
+ -e "s/ $seq\.out.bak / /"\
+ -e 's/^ //' \
+ -e 's/ $//'`
+ if [ -n "$files" ]
+ then
+ echo "$seq: Unexpected extra files ($files) ... giving up"
+ sts=1
+ exit
+ fi
+
+ rm -f $tmp.1 $tmp.2 $tmp.tmp
+ awk <$seq '
+state == 0 && NF == 0 { state = 1 }
+state == 0 { print >"'"$tmp.1"'"; next }
+state == 1 && /^seq=/ { next }
+state == 1 && /QA output created by/ { next }
+state == 1 && /^#/ { next }
+state == 1 && /^\. / { next }
+state == 1 && NF == 0 { next }
+state == 1 { state = 2 }
+state == 2 { print >"'"$tmp.2"'"; next }
+'
+ touch $tmp.tmp
+ [ -f $tmp.1 ] && cat $tmp.1 >>$tmp.tmp
+ cat <<End-of-File >>$tmp.tmp
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=\`basename \$0\`
+
+rm -f \$seq.out
+if [ \$PCP_VER -lt $PCP_VER ]
+then
+ ln \$seq.out.1 \$seq.out || exit 1
+else
+ ln \$seq.out.2 \$seq.out || exit 1
+fi
+
+echo "QA output created by \$seq"
+
+End-of-File
+ [ -f $tmp.2 ] && cat $tmp.2 >>$tmp.tmp
+
+ #debug# gdiff $seq $tmp.tmp
+
+ cp $tmp.tmp $seq
+ git mv $seq.out $seq.out.1
+ cp $seq.out.1 $seq.out.2
+ git add $seq.out.2
+
+ if grep "^$seq.out\$" .gitignore >/dev/null 2>&1
+ then
+ echo "$seq.out: Warning: already in .gitignore"
+ else
+ echo "$seq.out" >>.gitignore
+ fi
+
+ echo "OK: $seq modified, $seq.out -> $seq.out.1, new $seq.out.2 needs editing"
+
+done
+
+# cut, sort, paste .gitignore
+#
+grep -v '^[0-9][0-9]*\.out$' .gitignore >$tmp.1
+grep '^[0-9][0-9]*\.out$' .gitignore | sort -n >$tmp.2
+cat $tmp.1 $tmp.2 >.gitignore
+
+# will be remade as needed
+rm -f qa_outfiles
diff --git a/qa/new b/qa/new
new file mode 100755
index 0000000..94bbf1a
--- /dev/null
+++ b/qa/new
@@ -0,0 +1,236 @@
+#!/bin/sh
+#
+# Make a new PCP QA test
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Usage: new [base-seq-no group ...]
+#
+# base-seq-no defaults to some random place in the range 700-999
+#
+
+# generic initialization
+. ./common.rc
+
+tmp=/tmp/$$
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_cleanup()
+{
+ :
+}
+
+if [ "$USER" = "pcpqa" ]
+then
+ if [ ! -z "$REMOTEUSER" -a "$REMOTEUSER" != UNKNOWN ]
+ then
+ USER=$REMOTEUSER
+ else
+ echo "Error: user \"pcpqa\" cannot create tests ... who are you?"
+ $PCP_ECHO_PROG $PCP_ECHO_N "Enter login: ""$PCP_ECHO_C"
+ read USER
+ if [ ! -z "$USER" ]
+ then
+ grep "^$USER:" /etc/passwd >/dev/null || USER=''
+ fi
+ if [ -z "$USER" ]
+ then
+ echo "If you're not going to be serious, then I won't play"
+ exit 1
+ fi
+ fi
+fi
+
+if [ ! -f group ]
+then
+ echo "Creating the group index ..."
+ cat <<'End-of-File' >group
+## QA groups control
+##
+## define groups
+##
+## Do not start group name with a digit, expect alphabetic
+##
+## Last comment starting with a single # before a group name is the
+## one-line summary that "new" will report when asked to list groups
+##
+## Comments starting with a ## (or #<anything_other_than_whitesspace>
+## are ignored for the purposes of one-line summaries.
+
+# catch-all
+other
+
+## test-group association ... one line per test
+## add :retired or :reserved as a tag immediately after the test number
+## to keep the test number allocated, but prevent the test from being run
+
+## ... use sort -n from here on down to tidy up this mess
+##
+End-of-File
+fi
+
+if [ ! -w group ]
+then
+ echo "Error: cannot write index file \"group\""
+ _cleanup
+ exit 1
+fi
+
+if [ -f GNUmakefile.install ]
+then
+ # running QA in the tree
+ ${MAKE:-make} -f GNUmakefile.install >$tmp.out 2>&1
+else
+ ${MAKE:-make} >$tmp.out 2>&1
+fi
+if [ $? -ne 0 ]
+then
+ cat $tmp.out
+ echo "Warning: ${MAKE:-make} failed -- some tests may be missing"
+fi
+
+if [ $# -gt 0 ]
+then
+ try=$1
+ shift
+else
+ # random in the range 700-999 based on user name convered from alpha
+ # to numeric, prefixed by current clock seconds
+ #
+ sec=`date +%S`
+ try=`echo "$USER" \
+ | tr 'a-z' '0-90-90-9' \
+ | awk '{ srand('"$sec"'+$1); print int(700+rand()*300) }'`
+fi
+# pick first hole after $try, provided the test does not already exist
+#
+while true
+do
+ id=`sed -n -e 's/:\(retired\|reserved\) / /' -e '/^[0-9]/s/[ ].*//p' <group \
+ | LC_COLLATE=POSIX sort -n \
+ | $PCP_AWK_PROG '
+BEGIN { last = '$try' }
+$1 > '$try' { if ($1 != last+1) {
+ exit
+ }
+ last = $1
+ }
+END { printf "%03d\n",last+1 }'`
+ [ ! -f $id ] && break
+ # already exists, move on ...
+ #
+ try=`expr $id + 1`
+done
+
+echo "Next test is $id"
+
+if [ -f $id ]
+then
+ echo "Error: test $id already exists!"
+ _cleanup
+ exit 1
+fi
+
+$PCP_ECHO_PROG $PCP_ECHO_N "Creating skeletal script for you to edit ...""$PCP_ECHO_C"
+
+cat <<End-of-File >$id
+#!/bin/sh
+# PCP QA Test No. $id
+# [what am I here for?]
+#
+# Copyright (c) `date +%Y` [who are you?]. All Rights Reserved.
+#
+
+seq=\`basename \$0\`
+echo "QA output created by \$seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+# test for-some-thing || _notrun No support for some-thing
+
+status=1 # failure is the default!
+\$sudo rm -rf \$tmp.* \$seq.full
+trap "cd \$here; rm -rf \$tmp.*; exit \\\$status" 0 1 2 3 15
+
+# real QA test starts here
+
+# if error
+exit
+
+# optional stuff if your test has verbose output to help resolve problems
+#echo
+#echo "If failure, check \$seq.full"
+
+# success, all done
+status=0
+
+exit
+End-of-File
+
+sleep 2 # latency to read messages to this point
+echo ""
+
+chmod 755 $id
+${EDITOR-vi} $id
+
+if [ $# -eq 0 ]
+then
+ while true
+ do
+ $PCP_ECHO_PROG $PCP_ECHO_N "Add to group(s) [other] (? for list): ""$PCP_ECHO_C"
+ read ans
+ [ -z "$ans" ] && ans=other
+ if [ "X$ans" = "X?" ]
+ then
+ $PCP_AWK_PROG <group '
+BEGIN { text = "# ???" }
+/^[a-zA-Z]/ { printf "%-16.16s %s\n",$1,text; text = "# ???"; next }
+NF < 2 { next }
+$1 == "#" { text = $0 }' \
+ | LC_COLLATE=POSIX sort
+ else
+ break
+ fi
+ done
+ $PCP_ECHO_PROG $PCP_ECHO_N "Runs on QA machine alone? (local pmcd, local pmlogger, no ssh, ...) [y] ""$PCP_ECHO_C"
+ read _ans
+ if [ -z "$_ans" -o "$_ans" = "y" ]
+ then
+ ans="$ans local"
+ else
+ ans="$ans remote"
+ fi
+else
+ # expert mode, groups are on the command line
+ #
+ for g in $*
+ do
+ if grep "^$g[ ]" group >/dev/null
+ then
+ :
+ else
+ echo "Warning: group \"$g\" not defined in ./group"
+ fi
+ done
+ ans="$*"
+fi
+
+$PCP_ECHO_PROG $PCP_ECHO_N "Adding $id to group index ...""$PCP_ECHO_C"
+dist=oss
+[ "$id" -ge 1000 ] && dist=sgi
+echo "$id $ans $dist" >>group
+echo " done."
+
+# sort the tests numerically
+#
+$PCP_AWK_PROG <group '
+BEGIN { state = "head" }
+state == "head" && /^[0-9]/ { state = "list" }
+ { print >"'$tmp'." state }'
+sort -n $tmp.list >>$tmp.head
+cp $tmp.head group
+
+exit 0
diff --git a/qa/nfsclient/GNUmakefile b/qa/nfsclient/GNUmakefile
new file mode 100644
index 0000000..46f8128
--- /dev/null
+++ b/qa/nfsclient/GNUmakefile
@@ -0,0 +1,16 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/nfsclient
+
+QAFILES = $(shell echo *.qa)
+
+LSRCFILES = $(QAFILES)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(QAFILES) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/nfsclient/mountstats.qa b/qa/nfsclient/mountstats.qa
new file mode 100644
index 0000000..60b8d03
--- /dev/null
+++ b/qa/nfsclient/mountstats.qa
@@ -0,0 +1,203 @@
+device rootfs mounted on / with fstype rootfs
+device proc mounted on /proc with fstype proc
+device sysfs mounted on /sys with fstype sysfs
+device devtmpfs mounted on /dev with fstype devtmpfs
+device devpts mounted on /dev/pts with fstype devpts
+device tmpfs mounted on /dev/shm with fstype tmpfs
+device /dev/sda2 mounted on / with fstype ext3
+device /proc/bus/usb mounted on /proc/bus/usb with fstype usbfs
+device /dev/md0 mounted on /scratch with fstype ext3
+device /dev/sda1 mounted on /var with fstype ext3
+device none mounted on /proc/sys/fs/binfmt_misc with fstype binfmt_misc
+device sunrpc mounted on /var/lib/nfs/rpc_pipefs with fstype rpc_pipefs
+device ifs-nas.test.edu:/ifs mounted on /ifs with fstype nfs statvers=1.1
+ opts: rw,vers=3,rsize=32768,wsize=32768,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.113.10.9,mountvers=3,mountport=300,mountproto=tcp,local_lock=none
+ age: 12515493
+ caps: caps=0x3fc7,wtmult=512,dtsize=32768,bsize=0,namlen=255
+ sec: flavor=1,pseudoflavor=1
+ events: 17785 787338 294 23041 15373 24424 862832 67472 7 118 45200 34250 3133 4240 4843 5136 4402 12345 0 15 67079 0 0 0 0 0 0
+ bytes: 479073312 173647641 0 0 12762151 173521215 3167 45200
+ RPC iostats version: 1.0 p/v: 100003/3 (nfs)
+ xprt: tcp 789 1 193 0 0 71411 71411 0 180054 0 73 6675888 108644
+ per-op statistics
+ NULL: 0 0 0 0 0 0 0 0
+ GETATTR: 17785 17785 0 2834060 1991920 109 11012 11360
+ SETATTR: 8599 8599 0 1700172 1238256 32 10760 10911
+ LOOKUP: 20976 20976 0 4017640 2523984 58 4390 4643
+ ACCESS: 8245 8245 0 1338504 989400 38 4384 4538
+ READLINK: 1 1 0 172 136 0 0 0
+ READ: 450 450 0 76688 12819860 3 2638 2658
+ WRITE: 9523 9523 0 175240916 1523680 3423263 57150 3480542
+ CREATE: 4592 4592 0 863264 1249024 17 8733 8815
+ MKDIR: 228 228 0 45540 62016 0 399 403
+ SYMLINK: 13 13 0 2960 3536 0 16 16
+ MKNOD: 0 0 0 0 0 0 0 0
+ REMOVE: 478 478 0 86072 68832 1 1161 1169
+ RMDIR: 7 7 0 1188 1008 0 29 29
+ RENAME: 36 36 0 8580 9360 0 44 45
+ LINK: 0 0 0 0 0 0 0 0
+ READDIR: 5 5 0 900 37748 0 19 19
+ READDIRPLUS: 281 281 0 51680 999596 1 7390 7397
+ FSSTAT: 5 5 0 800 840 0 1 1
+ FSINFO: 2 2 0 216 328 0 0 0
+ PATHCONF: 1 1 0 108 140 0 0 0
+ COMMIT: 182 182 0 31232 27664 1 520 524
+
+device 124.10.30.235:/nfsdata/ mounted on /mnt/nfsv4 with fstype nfs4 statvers=1.1
+ opts: rw,vers=4,rsize=1048576,wsize=1048576,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=124.10.30.234,minorversion=0,local_lock=none
+ age: 19 (time, in seconds, since the NFS is mounted)
+ caps: caps=0xfff7,wtmult=512,dtsize=32768,bsize=0,namlen=255
+ nfsv4: bm0=0xfdffafff,bm1=0xf9be3e,acl=0x0
+ sec: flavor=1,pseudoflavor=1
+ events: 0 168232 0 0 0 10095 217808 0 2 9797 0 9739 0 0 19739 19739 0 19739 0 0 0 0 0 0 0 0 0
+ bytes: 1612840960 0 0 0 627536112 0 158076 0
+ RPC iostats version: 1.0 p/v: 100003/4 (nfs)
+ xprt: tcp 737 0 1 0 0 69698 69697 0 81817 0 2 1082 12119
+ per-op statistics
+ NULL: 0 0 0 0 0 0 0 0
+ READ: 9797 9797 0 1567520 628138612 71 7953 8200
+ WRITE: 0 0 0 0 0 0 0 0
+ COMMIT: 0 0 0 0 0 0 0 0
+ OPEN: 19740 19740 0 4737600 7343280 505 3449 4172
+ OPEN_CONFIRM: 10211 10211 0 1552072 694348 74 836 1008
+ OPEN_NOATTR: 0 0 0 0 0 0 0 0
+ OPEN_DOWNGRADE: 0 0 0 0 0 0 0 0
+ CLOSE: 19739 19739 0 3316152 2605548 334 3045 3620
+ SETATTR: 0 0 0 0 0 0 0 0
+ FSINFO: 1 1 0 132 108 0 0 0
+ RENEW: 0 0 0 0 0 0 0 0
+ SETCLIENTID: 0 0 0 0 0 0 0 0
+ SETCLIENTID_CONFIRM: 0 0 0 0 0 0 0 0
+ LOCK: 0 0 0 0 0 0 0 0
+ LOCKT: 0 0 0 0 0 0 0 0
+ LOCKU: 0 0 0 0 0 0 0 0
+ ACCESS: 96 96 0 14584 19584 0 8 10
+ GETATTR: 1 1 0 132 188 0 0 0
+ LOOKUP: 10095 10095 0 1655576 2382420 36 898 1072
+ LOOKUP_ROOT: 0 0 0 0 0 0 0 0
+ REMOVE: 0 0 0 0 0 0 0 0
+ RENAME: 0 0 0 0 0 0 0 0
+ LINK: 0 0 0 0 0 0 0 0
+ SYMLINK: 0 0 0 0 0 0 0 0
+ CREATE: 0 0 0 0 0 0 0 0
+ PATHCONF: 1 1 0 128 72 0 0 0
+ STATFS: 0 0 0 0 0 0 0 0
+ READLINK: 0 0 0 0 0 0 0 0
+ READDIR: 0 0 0 0 0 0 0 0
+ SERVER_CAPS: 2 2 0 256 176 0 0 0
+ DELEGRETURN: 0 0 0 0 0 0 0 0
+ GETACL: 0 0 0 0 0 0 0 0
+ SETACL: 0 0 0 0 0 0 0 0
+ FS_LOCATIONS: 0 0 0 0 0 0 0 0
+ RELEASE_LOCKOWNER: 0 0 0 0 0 0 0 0
+ SECINFO: 0 0 0 0 0 0 0 0
+ EXCHANGE_ID: 0 0 0 0 0 0 0 0
+ CREATE_SESSION: 0 0 0 0 0 0 0 0
+ DESTROY_SESSION: 0 0 0 0 0 0 0 0
+ SEQUENCE: 0 0 0 0 0 0 0 0
+ GET_LEASE_TIME: 0 0 0 0 0 0 0 0
+ RECLAIM_COMPLETE: 0 0 0 0 0 0 0 0
+ LAYOUTGET: 0 0 0 0 0 0 0 0
+ GETDEVICEINFO: 0 0 0 0 0 0 0 0
+ LAYOUTCOMMIT: 0 0 0 0 0 0 0 0
+ LAYOUTRETURN: 0 0 0 0 0 0 0 0
+
+device ifs-nas.test.edu:/ifs/foo mounted on /ifsfoo with fstype nfs statvers=1.1
+ opts: rw,vers=3,rsize=32768,wsize=32768,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.113.10.9,mountvers=3,mountport=300,mountproto=tcp,local_lock=none
+ age: 12517593
+ caps: caps=0x3fc7,wtmult=512,dtsize=32768,bsize=0,namlen=255
+ sec: flavor=1,pseudoflavor=1
+ events: 18208 803179 300 23283 15692 25573 880806 67591 7 119 45315 34974 3195 4261 4906 5245 4638 12448 0 15 67137 0 0 0 0 0 0
+ bytes: 481069398 174069257 0 0 12770069 173926447 3169 45315
+ RPC iostats version: 1.0 p/v: 100003/3 (nfs)
+ xprt: tcp 789 1 193 0 0 73641 73641 0 182290 0 73 6675888 108650
+ per-op statistics
+ NULL: 0 0 0 0 0 0 0 0
+ GETATTR: 18208 18208 0 2901740 2039296 111 11080 11435
+ SETATTR: 8651 8651 0 1710200 1245744 32 10806 10957
+ LOOKUP: 22280 22280 0 4268744 2694468 62 4569 4837
+ ACCESS: 8503 8503 0 1380816 1020360 39 4439 4597
+ READLINK: 1 1 0 172 136 0 0 0
+ READ: 451 451 0 76860 12827908 3 2653 2673
+ WRITE: 9605 9605 0 175660936 1536800 3423264 57254 3480649
+ CREATE: 4640 4640 0 872724 1262080 17 8829 8912
+ MKDIR: 228 228 0 45540 62016 0 399 403
+ SYMLINK: 13 13 0 2960 3536 0 16 16
+ MKNOD: 0 0 0 0 0 0 0 0
+ REMOVE: 525 525 0 94420 75600 2 1236 1245
+ RMDIR: 7 7 0 1188 1008 0 29 29
+ RENAME: 44 44 0 10388 11440 0 53 53
+ LINK: 0 0 0 0 0 0 0 0
+ READDIR: 5 5 0 900 37748 0 19 19
+ READDIRPLUS: 288 288 0 52968 1046580 1 7729 7735
+ FSSTAT: 5 5 0 800 840 0 1 1
+ FSINFO: 2 2 0 216 328 0 0 0
+ PATHCONF: 1 1 0 108 140 0 0 0
+ COMMIT: 182 182 0 31232 27664 1 520 524
+
+device 124.10.30.235:/nfsdata41 mounted on /mnt/nfs41 with fstype nfs4 statvers=1.1
+ opts: rw,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=124.10.30.234,local_lock=none
+ age: 44
+ impl_id: name='',domain='',date='0,0'
+ caps: caps=0x3ffff,wtmult=512,dtsize=32768,bsize=0,namlen=255
+ nfsv4: bm0=0xfdffbfff,bm1=0xf9be3e,bm2=0x800,acl=0x3,sessions,pnfs=not configured
+ sec: flavor=1,pseudoflavor=1
+ events: 67379 1692812 0 30749 0 980 1984612 0 0 0 0 0 0 0 96611 96611 0 96611 0 0 0 0 0 0 0 0 0
+ bytes: 0 0 0 0 0 0 0 0
+ RPC iostats version: 1.0 p/v: 100003/4 (nfs)
+ xprt: tcp 674 0 1 0 0 279772 279771 0 649944 0 5 1711 90409
+ per-op statistics
+ NULL: 0 0 0 0 0 0 0 0
+ READ: 0 0 0 0 0 0 0 0
+ WRITE: 0 0 0 0 0 0 0 0
+ COMMIT: 0 0 0 0 0 0 0 0
+ OPEN: 96612 96612 0 27824256 34007424 13349 16253 32061
+ OPEN_CONFIRM: 0 0 0 0 0 0 0 0
+ OPEN_NOATTR: 0 0 0 0 0 0 0 0
+ OPEN_DOWNGRADE: 0 0 0 0 0 0 0 0
+ CLOSE: 96610 96610 0 19708440 17003360 2936 11082 15386
+ SETATTR: 0 0 0 0 0 0 0 0
+ FSINFO: 1 1 0 168 152 0 0 0
+ RENEW: 0 0 0 0 0 0 0 0
+ SETCLIENTID: 0 0 0 0 0 0 0 0
+ SETCLIENTID_CONFIRM: 0 0 0 0 0 0 0 0
+ LOCK: 0 0 0 0 0 0 0 0
+ LOCKT: 0 0 0 0 0 0 0 0
+ LOCKU: 0 0 0 0 0 0 0 0
+ ACCESS: 16932 16932 0 3183200 2844576 83 1919 2308
+ GETATTR: 67380 67380 0 12128380 15632160 336 8367 10644
+ LOOKUP: 1236 1236 0 247176 167784 7 153 197
+ LOOKUP_ROOT: 0 0 0 0 0 0 0 0
+ REMOVE: 0 0 0 0 0 0 0 0
+ RENAME: 0 0 0 0 0 0 0 0
+ LINK: 0 0 0 0 0 0 0 0
+ SYMLINK: 0 0 0 0 0 0 0 0
+ CREATE: 980 980 0 219516 305760 5 168 197
+ PATHCONF: 1 1 0 164 116 0 0 0
+ STATFS: 0 0 0 0 0 0 0 0
+ READLINK: 0 0 0 0 0 0 0 0
+ READDIR: 0 0 0 0 0 0 0 0
+ SERVER_CAPS: 2 2 0 328 280 0 0 0
+ DELEGRETURN: 0 0 0 0 0 0 0 0
+ GETACL: 0 0 0 0 0 0 0 0
+ SETACL: 0 0 0 0 0 0 0 0
+ FS_LOCATIONS: 0 0 0 0 0 0 0 0
+ RELEASE_LOCKOWNER: 0 0 0 0 0 0 0 0
+ SECINFO: 0 0 0 0 0 0 0 0
+ EXCHANGE_ID: 0 0 0 0 0 0 0 0
+ CREATE_SESSION: 0 0 0 0 0 0 0 0
+ DESTROY_SESSION: 0 0 0 0 0 0 0 0
+ SEQUENCE: 0 0 0 0 0 0 0 0
+ GET_LEASE_TIME: 0 0 0 0 0 0 0 0
+ RECLAIM_COMPLETE: 0 0 0 0 0 0 0 0
+ LAYOUTGET: 0 0 0 0 0 0 0 0
+ GETDEVICEINFO: 0 0 0 0 0 0 0 0
+ LAYOUTCOMMIT: 0 0 0 0 0 0 0 0
+ LAYOUTRETURN: 0 0 0 0 0 0 0 0
+ SECINFO_NO_NAME: 0 0 0 0 0 0 0 0
+ TEST_STATEID: 0 0 0 0 0 0 0 0
+ FREE_STATEID: 0 0 0 0 0 0 0 0
+ GETDEVICELIST: 0 0 0 0 0 0 0 0
+ BIND_CONN_TO_SESSION: 0 0 0 0 0 0 0 0
+ DESTROY_CLIENTID: 0 0 0 0 0 0 0 0
+
diff --git a/qa/nfsclient/nonfsmounts.qa b/qa/nfsclient/nonfsmounts.qa
new file mode 100644
index 0000000..1e82959
--- /dev/null
+++ b/qa/nfsclient/nonfsmounts.qa
@@ -0,0 +1,36 @@
+device rootfs mounted on / with fstype rootfs
+device proc mounted on /proc with fstype proc
+device sysfs mounted on /sys with fstype sysfs
+device devtmpfs mounted on /dev with fstype devtmpfs
+device devpts mounted on /dev/pts with fstype devpts
+device tmpfs mounted on /dev/shm with fstype tmpfs
+device /dev/mapper/vg_smash-lv_root mounted on / with fstype ext4
+device none mounted on /selinux with fstype selinuxfs
+device devtmpfs mounted on /dev with fstype devtmpfs
+device /proc/bus/usb mounted on /proc/bus/usb with fstype usbfs
+device /dev/sda1 mounted on /boot with fstype ext4
+device /dev/mapper/vg_smash-lv_home mounted on /home with fstype xfs
+device /dev/mapper/vg_smash-lv_source mounted on /source with fstype xfs
+device debugfs mounted on /sys/kernel/debug with fstype debugfs
+device /dev/mapper/vg_smash-lv_home mounted on /var/lib/libvirt with fstype xfs
+device /dev/mapper/vg_smash-lv_source mounted on /source/build/debug-info-path/git with fstype xfs
+device none mounted on /proc/sys/fs/binfmt_misc with fstype binfmt_misc
+device cgroup mounted on /cgroup/cpuset with fstype cgroup
+device cgroup mounted on /cgroup/cpu with fstype cgroup
+device cgroup mounted on /cgroup/cpuacct with fstype cgroup
+device cgroup mounted on /cgroup/memory with fstype cgroup
+device cgroup mounted on /cgroup/devices with fstype cgroup
+device cgroup mounted on /cgroup/freezer with fstype cgroup
+device cgroup mounted on /cgroup/net_cls with fstype cgroup
+device cgroup mounted on /cgroup/blkio with fstype cgroup
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/etc/named with fstype ext4
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/var/named with fstype ext4
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/etc/named.conf with fstype ext4
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/etc/named.rfc1912.zones with fstype ext4
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/etc/rndc.key with fstype ext4
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/usr/lib64/bind with fstype ext4
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/etc/named.iscdlv.key with fstype ext4
+device /dev/mapper/vg_smash-lv_root mounted on /var/named/chroot/etc/named.root.key with fstype ext4
+device sunrpc mounted on /var/lib/nfs/rpc_pipefs with fstype rpc_pipefs
+device /etc/auto.misc mounted on /misc with fstype autofs
+device -hosts mounted on /net with fstype autofs
diff --git a/qa/pconf/GNUmakefile b/qa/pconf/GNUmakefile
new file mode 100644
index 0000000..5efad8a
--- /dev/null
+++ b/qa/pconf/GNUmakefile
@@ -0,0 +1,18 @@
+#!gmake
+
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf
+SUBDIRS = cpu disk filesys global memory network
+
+default default_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+setup:
+
+install install_pcp: $(SUBDIRS)
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(SUBDIRS_MAKERULE)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/cpu/GNUmakefile b/qa/pconf/cpu/GNUmakefile
new file mode 100644
index 0000000..3588b68
--- /dev/null
+++ b/qa/pconf/cpu/GNUmakefile
@@ -0,0 +1,17 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/cpu
+CONFIGS = aggregate_util excess_fpe load_average \
+ single_util system_calls system_mode
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/cpu/aggregate_util b/qa/pconf/cpu/aggregate_util
new file mode 100644
index 0000000..504264b
--- /dev/null
+++ b/qa/pconf/cpu/aggregate_util
@@ -0,0 +1,34 @@
+#pmieconf-rules 1
+#
+
+rule cpu.aggregate_util
+ default = "$rule$"
+ predicate =
+"some_host (
+ kernel.all.cpu.user $hosts$ +
+ kernel.all.cpu.sys $hosts$ +
+ kernel.all.cpu.intr $hosts$
+ > hinv.ncpu $hosts$ * $threshold$ / 100
+)"
+ enabled = no
+ version = 1
+ help =
+"The average processor utilization over all CPUs exceeded
+threshold percent during the last sample interval.";
+
+string rule
+ default = "aggregate processor saturation"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 90
+ help =
+"Threshold percentage for CPU saturation, in the range 0 (idle)
+to 100 (completely busy), independent of the number of CPUs.";
+
+string action_expand
+ default = %h
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/cpu/excess_fpe b/qa/pconf/cpu/excess_fpe
new file mode 100644
index 0000000..fe166eb
--- /dev/null
+++ b/qa/pconf/cpu/excess_fpe
@@ -0,0 +1,43 @@
+#pmieconf-rules 1
+#
+
+rule cpu.excess_fpe
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ kernel.percpu.cpu.sys $hosts$ > $systime_util$ / 100 &&
+ kernel.percpu.syscall $hosts$ < $syscall_rate$
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"This predicate attempts to detect processes generating very large
+numbers of floating point exceptions (FPEs). Characteristic of this
+situation is heavy system time coupled with low system call rates
+(exceptions are delivered through the kernel to the process, taking
+some system time, but no system call is serviced on the applications
+behalf.";
+
+string rule
+ default = "possible high floating point exception rate"
+ modify = no
+ display = no;
+
+percent systime_util
+ default = 50
+ help =
+"Threshold percentage for kernel CPU utilization, in the range 0
+(idle) to 100 (completely busy)";
+
+double syscall_rate
+ default = 100
+ help =
+"Threshold system call rate at which something is deemed amiss.";
+
+string action_expand
+ default = %i@%h
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/cpu/load_average b/qa/pconf/cpu/load_average
new file mode 100644
index 0000000..e5fa9bc
--- /dev/null
+++ b/qa/pconf/cpu/load_average
@@ -0,0 +1,29 @@
+#pmieconf-rules 1
+#
+
+rule cpu.load_average
+ default = "$rule$"
+ predicate =
+"some_host (
+ kernel.all.load $hosts$ #'1 minute'
+ > hinv.ncpu $hosts$ * $threshold$
+)"
+ enabled = yes
+ version = 1
+ help =
+"The current 1-minute load average is higher than threshold times the
+number of CPUs.
+The load average measures the number of processes that are running,
+runnable or soon to be runnable (i.e. in short term sleep).";
+
+string rule
+ default = "high 1-minute load average"
+ modify = no
+ display = no;
+
+double threshold
+ default = 1.5
+ help =
+"The threshold multiplier for load per CPU, typically in the range
+0.5 (very light load) to 4.0 (very heavy load ).";
+
diff --git a/qa/pconf/cpu/single_util b/qa/pconf/cpu/single_util
new file mode 100644
index 0000000..3f5dc81
--- /dev/null
+++ b/qa/pconf/cpu/single_util
@@ -0,0 +1,36 @@
+#pmieconf-rules 1
+#
+
+rule cpu.single_util
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ kernel.percpu.cpu.user $hosts$ +
+ kernel.percpu.cpu.sys $hosts$ +
+ kernel.percpu.cpu.intr $hosts$
+ > $threshold$ / 100
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"The average processor utilization for at least one CPU exceeded
+threshold percent during the last sample interval.";
+
+string rule
+ default = "single processor saturation"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 95
+ help =
+"Threshold percentage for CPU saturation, in the range 0 (idle)
+to 100 (completely busy)";
+
+string action_expand
+ default = %i@%h
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/cpu/system_calls b/qa/pconf/cpu/system_calls
new file mode 100644
index 0000000..c2244e1
--- /dev/null
+++ b/qa/pconf/cpu/system_calls
@@ -0,0 +1,29 @@
+#pmieconf-rules 1
+#
+
+rule cpu.system_calls
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( kernel.all.syscall $hosts$ / hinv.ncpu $hosts$ )
+ > $threshold$ count/sec
+)"
+ enabled = no
+ version = 1
+ help =
+"Average number of system calls per CPU per second exceeded threshold
+over the past sample interval.";
+
+string rule
+ default = "high average system call rate per CPU"
+ modify = no
+ display = no;
+
+double threshold
+ default = 2500
+ help =
+"The threshold of system calls per second per CPU. The appropriate
+value is a function of the processor type and the workload, but in
+the range 500 (a few, expensive systems calls) to 5000 (many,
+lightweight system calls) would be typical.";
+
diff --git a/qa/pconf/cpu/system_mode b/qa/pconf/cpu/system_mode
new file mode 100644
index 0000000..bdecce7
--- /dev/null
+++ b/qa/pconf/cpu/system_mode
@@ -0,0 +1,45 @@
+#pmieconf-rules 1
+#
+
+rule cpu.system_mode
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( kernel.all.cpu.user $hosts$
+ + kernel.all.cpu.sys $hosts$
+ > hinv.ncpu $hosts$ * $busy$ / 100 ) &&
+ ( kernel.all.cpu.sys $hosts$ /
+ ( kernel.all.cpu.user $hosts$
+ + kernel.all.cpu.sys $hosts$ )
+ > $threshold$ / 100 )
+)"
+ enabled = yes
+ version = 1
+ help =
+"The average processor utilization over all CPUs was at least busy
+percent during the last sample interval, and the ratio of system time
+to busy time exceeded threshold percent.";
+
+string rule
+ default = "busy executing in system mode"
+ modify = no
+ display = no;
+
+percent busy
+ default = 75
+ help =
+"Busy percentage for average CPU utilization, in the range 0 (idle)
+to 100 (completely busy), independent of the number of CPUs.";
+
+percent threshold
+ default = 80
+ help =
+"Threshold percentage for system time as a fraction of the non-idle
+CPU time, in the range 0 (no system time) to 100 (all system time),
+independent of the number of CPUs.";
+
+string action_expand
+ default = "%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/disk/GNUmakefile b/qa/pconf/disk/GNUmakefile
new file mode 100644
index 0000000..ef3575e
--- /dev/null
+++ b/qa/pconf/disk/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/disk
+CONFIGS = average_iops single_iops
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/disk/average_iops b/qa/pconf/disk/average_iops
new file mode 100644
index 0000000..9b03ebe
--- /dev/null
+++ b/qa/pconf/disk/average_iops
@@ -0,0 +1,31 @@
+#pmieconf-rules 1
+#
+
+rule disk.average_iops
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( disk.all.total $hosts$ / hinv.ndisk $hosts$ )
+ > $threshold$ count/sec
+)"
+ enabled = no
+ version = 1
+ help =
+"The average rate of disk I/O operations per spindle per second
+exceeded the threshold during the last sample interval.";
+
+string rule
+ default = "high average disk activity per spindle"
+ modify = no
+ display = no;
+
+double threshold
+ default = 25
+ help =
+"Threshold in units of disk I/O operations per spindle per second.
+As a hint, the achievable peak is of the order of 100, although the
+disk model, the number of disks per controller, the spindle load
+balance and the distribution of transfer sizes all combine to make
+the practical peak either larger or smaller for any specific
+system.";
+
diff --git a/qa/pconf/disk/single_iops b/qa/pconf/disk/single_iops
new file mode 100644
index 0000000..cc42eff
--- /dev/null
+++ b/qa/pconf/disk/single_iops
@@ -0,0 +1,37 @@
+#pmieconf-rules 1
+#
+
+rule disk.single_iops
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ disk.dev.total $hosts$ > $threshold$ count/sec
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"For at least one spindle, the average rate of disk I/O operations
+per second exceeded the threshold during the last sample interval.";
+
+string rule
+ default = "busy disk spindle"
+ modify = no
+ display = no;
+
+double threshold
+ default = 40
+ help =
+"Threshold in units of disk I/O operations per second.
+As a hint, the achievable peak is of the order of 100 IOPS for one
+disk, although the disk model, the number of disks per controller,
+the spindle load balance and the distribution of transfer sizes all
+combine to make the practical peak either larger or smaller for any
+specific system.";
+
+string action_expand
+ default = "%v:%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/filesys/GNUmakefile b/qa/pconf/filesys/GNUmakefile
new file mode 100644
index 0000000..3620af7
--- /dev/null
+++ b/qa/pconf/filesys/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/filesys
+CONFIGS = buffer_cache capacity
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/filesys/buffer_cache b/qa/pconf/filesys/buffer_cache
new file mode 100644
index 0000000..e964d0e
--- /dev/null
+++ b/qa/pconf/filesys/buffer_cache
@@ -0,0 +1,37 @@
+#pmieconf-rules 1
+#
+
+rule filesys.buffer_cache
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( (kernel.all.io.lread $hosts$
+ - kernel.all.io.bread $hosts$)
+ / kernel.all.io.lread $hosts$ ) < $threshold$ / 100
+ && kernel.all.io.lread $hosts$ > 30 * 16 Kbytes/sec
+)"
+ enabled = no
+ version = 1
+ help =
+"Some file system read activity (at least 30 x 16 Kbyte logical reads
+per second), and the read hit ratio in the buffer cache is below
+threshold percent.";
+
+string rule
+ default = "low read hit ratio in buffer cache"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 80
+ help =
+"The minimum acceptable buffer cache read hit ratio, expressed as a
+percentage. Values may be in the range 0 (nothing is read from the
+cache and poor performance is expected) to 100 (all reads come from
+the cache, no disk I/O required and good performance expected).";
+
+string action_expand
+ default = "%v%@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/filesys/capacity b/qa/pconf/filesys/capacity
new file mode 100644
index 0000000..ffccddf
--- /dev/null
+++ b/qa/pconf/filesys/capacity
@@ -0,0 +1,34 @@
+#pmieconf-rules 1
+#
+
+rule filesys.capacity
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ ( 100 * filesys.used $hosts$ >
+ $threshold$ * filesys.capacity $hosts$ ) &&
+ rate filesys.used $hosts$ > 0
+ )
+)"
+ enabled = yes
+ version = 1
+ help =
+"Filesystem is at least threshold percent full and the allocated
+space is growing.";
+
+string rule
+ default = "imminent file system full"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 95
+ help =
+"The threshold of file system fullness, usually in the range 90 to 99.";
+
+string action_expand
+ default = "%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/global/GNUmakefile b/qa/pconf/global/GNUmakefile
new file mode 100644
index 0000000..d0eb2b0
--- /dev/null
+++ b/qa/pconf/global/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/global
+CONFIGS = pcp_eoe sss
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/global/pcp_eoe b/qa/pconf/global/pcp_eoe
new file mode 100644
index 0000000..6abcb66
--- /dev/null
+++ b/qa/pconf/global/pcp_eoe
@@ -0,0 +1,93 @@
+#pmieconf-rules 1
+#
+
+
+#
+# parameter definitions applicable to all rules
+# (unless overridden at the level of an individual rule or group)
+#
+
+double global.delta
+ default = 120
+ help =
+"Sample interval in seconds between evaluations of this rule.";
+
+unsigned global.holdoff
+ default = 15
+ help =
+"Once the condition is true, this parameter controls suppression of
+further evaluation of the rule for the specified number of minutes.
+A value of zero allows re-evaluation of the rule at the next sample
+time.";
+
+hostlist global.hosts
+ default = ""
+ help =
+"May be set to a list of host names for which the rules will be
+evaluated. Each host name should be prefixed by a colon and
+multiple entries separated by white space, e.g. :myhost :yourhost
+If the list is empty, the host will be the host named in the -h
+option to pmie(1) if specified, else the local host.";
+
+
+#
+# action definitions applicable to all rules follow
+#
+# o $rule$ defined locally & contains the "message" to be propagated
+# o $action_expand$ often overridden locally & contains the part of the
+# action string which is rule-semantics specific and will be expanded
+# possibly multiple times on truthful evaluation of the predicate to
+# contain values/instances/hosts which matched,e.g:
+# "%v@%h" might expand to "1.1@moomba 1.7@rattle 4.5@wobbly" if all
+# the rule is true for all of the hosts moomba, rattle and wobbly.
+#
+
+string global.action_expand
+ display = no
+ modify = no
+ default = "%v@%h"; # (value@host)
+ # some common alternatives:
+ # %i@%h (inst@host)
+ # %h (host)
+ # %v:%i@%h (value:inst@host)
+ # %v%@%h (value%@host)
+
+shell global.email_action
+ enabled = no
+ default = "/usr/sbin/Mail -s '$rule$^ $action_expand$^' $email_recipients$"
+ help =
+"The system log file /var/adm/SYSLOG will be updated when the rule
+condition is true.";
+
+string global.email_recipients
+ default = "root"
+ help =
+"Space separated list of e-mail addresses for notification from the
+\"email_action\" when it is enabled";
+
+shell global.user_action
+ enabled = no
+ default = "$user_command$"
+ help =
+"Execute \"user_command\" when the rule condition is true";
+
+string global.user_command
+ default = "/usr/bin/true $rule$^ $action_expand$"
+ help =
+"Shell (sh(1)) command line to execute when rule condition is true
+and \"user_action\" is enabled.";
+
+shell global.pcplog_action
+ enabled = yes
+ default = "/usr/pcp/bin/pmpost $rule$^ $action_expand$"
+ help =
+"The PCP notices file /var/adm/pcplog/NOTICES will be updated when
+the rule condition is true.";
+
+syslog global.syslog_action
+ enabled = no
+ default = "-p daemon.info $rule$^ $action_expand$"
+ help =
+"The system log file /var/adm/SYSLOG will be updated when the rule
+condition is true.";
+
diff --git a/qa/pconf/global/sss b/qa/pconf/global/sss
new file mode 100644
index 0000000..ce80501
--- /dev/null
+++ b/qa/pconf/global/sss
@@ -0,0 +1,10 @@
+#pmieconf-rules 1
+#
+
+shell global.sss_action
+ enabled = no
+ default = "/usr/bin/sslogger -cSSTOOLS -tPERFORMANCE -m '$rule$^ $action_expand$^'"
+ help =
+"The SSS (System Support Software) framework for the support of SGI
+systems will be notified when the rule condition is true.";
+
diff --git a/qa/pconf/memory/GNUmakefile b/qa/pconf/memory/GNUmakefile
new file mode 100644
index 0000000..658a17f
--- /dev/null
+++ b/qa/pconf/memory/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/memory
+CONFIGS = exhausted
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)/$(CONFIGS)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/memory/exhausted b/qa/pconf/memory/exhausted
new file mode 100644
index 0000000..fad39ea
--- /dev/null
+++ b/qa/pconf/memory/exhausted
@@ -0,0 +1,26 @@
+#pmieconf-rules 1
+#
+
+rule memory.exhausted
+ default = "$rule$"
+ predicate =
+"some_host (30 %_sample swap.pagesout $hosts$ @0..9 > 0)"
+ enabled = yes
+ version = 1
+ help =
+"The system is swapping modified pages out of main memory to the
+swap partitions, and has been doing this on at least 3 of the
+last 10 evaluations of this rule.
+There appears to be insufficient main memory to meet the resident
+demands of the current workload.";
+
+string rule
+ default = "chronic main memory exhaustion"
+ modify = no
+ display = no;
+
+string action_expand
+ default = "%h"
+ modify = no
+ display = no;
+
diff --git a/qa/pconf/network/GNUmakefile b/qa/pconf/network/GNUmakefile
new file mode 100644
index 0000000..73b87b6
--- /dev/null
+++ b/qa/pconf/network/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/network
+CONFIGS = interface_bytes interface_packets tcp_dropped_conns tcp_retransmit
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/network/interface_bytes b/qa/pconf/network/interface_bytes
new file mode 100644
index 0000000..5f75885
--- /dev/null
+++ b/qa/pconf/network/interface_bytes
@@ -0,0 +1,52 @@
+#pmieconf-rules 1
+#
+
+rule network.interface_bytes
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ network.interface.total.bytes $hosts$ $interfaces$ >
+ $threshold$ Kbytes/sec
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"For at least one network interface, the average transfer rate (in
+and/or out) exceeded the threshold during the last sample interval.";
+
+string rule
+ default = "busy network interface (bytes)"
+ modify = no
+ display = no;
+
+double threshold
+ default = 500
+ help =
+"Threshold in units of Kbytes (in or out) per second per interface.
+A tolerable value depends on the type of network interface and
+the packet size; some experimentation may be required to find an
+accpetable threshold.";
+
+string interfaces
+ default = ""
+ help =
+"May be set to a list of network interfaces for which the rule will
+be evaluated, as a subset of configured network interfaces. Each
+network interface should be enclosed in single quotes, prefixed by a
+pound or hash (#) and multiple entries separated by white space,
+e.g. #'ec0' #'ec2'
+To discover the names of the network interfaces, execute the
+following command on the target host:
+ pminfo -f network.interface.total.bytes
+the (double) quoted instance names are the required network interface
+names.
+This is most useful to remove the loopback, SLIP and PPP interfaces
+from the rule evaluations.";
+
+string action_expand
+ default = "%v:%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/network/interface_packets b/qa/pconf/network/interface_packets
new file mode 100644
index 0000000..b98198d
--- /dev/null
+++ b/qa/pconf/network/interface_packets
@@ -0,0 +1,53 @@
+#pmieconf-rules 1
+#
+
+rule network.interface_packets
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ network.interface.total.packets $hosts$ $interfaces$ >
+ $threshold$ count/sec
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"For at least one network interface, the average rate of packet
+transfers (in and/or out) exceeded the threshold during the last
+sample interval.";
+
+string rule
+ default = "busy network interface (packets)"
+ modify = no
+ display = no;
+
+double threshold
+ default = 2000
+ help =
+"Threshold in units of packets (in or out) per second per interface.
+A tolerable value depends on the type of network interface and
+the packet size; some experimentation may be required to find
+an accpetable threshold.";
+
+string interfaces
+ default =""
+ help =
+"May be set to a list of network interfaces for which the rule will
+be evaluated, as a subset of configured network interfaces. Each
+network interface should be enclosed in single quotes, prefixed by a
+pound or hash (#) and multiple entries separated by white space,
+e.g. #'ec0' #'ec2'
+To discover the names of the network interfaces, execute the
+following command on the target host:
+ pminfo -f network.interface.total.packets
+the (double) quoted instance names are the required network interface
+names.
+This is most useful to remove the loopback, SLIP and PPP interfaces
+from the rule evaluations.";
+
+string action_expand
+ default = "%v:%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/network/tcp_dropped_conns b/qa/pconf/network/tcp_dropped_conns
new file mode 100644
index 0000000..4b03184
--- /dev/null
+++ b/qa/pconf/network/tcp_dropped_conns
@@ -0,0 +1,42 @@
+#pmieconf-rules 1
+#
+
+rule network.tcp_dropped_conns
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( 100 * ( network.tcp.drops $hosts$ +
+ network.tcp.conndrops $hosts$ +
+ network.tcp.timeoutdrop $hosts$ ) /
+ network.tcp.connects $hosts$ ) > $threshold$ &&
+ network.tcp.connects $hosts$ > 20 count/minute
+)"
+ enabled = no
+ version = 1
+ help =
+"There is some TCP connection activity (at least 20 connections
+per minute) and the average ratio of TCP dropped connections to
+successful connections exceeds threshold percent during the last
+sample interval.
+High drop rates indicate either network congestion (check the packet
+retransmission rate) or an application like a Web browser that is
+prone to terminating TCP connections prematurely, perhaps due to
+sluggish response or user impatience.";
+
+string rule
+ default = "high number of dropped TCP connections"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 20
+ help =
+"Maximum acceptable percentage of dropped TCP connections per new
+TCP connection, in the range 0 (not expecting any connections to be
+dropped) to 100 (expect most connections to be dropped).";
+
+string action_expand
+ default = "%v%@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/network/tcp_retransmit b/qa/pconf/network/tcp_retransmit
new file mode 100644
index 0000000..0c14119
--- /dev/null
+++ b/qa/pconf/network/tcp_retransmit
@@ -0,0 +1,39 @@
+#pmieconf-rules 1
+#
+
+rule network.tcp_retransmit
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( 100 * ( network.tcp.sndrexmitpack $hosts$ +
+ network.tcp.rexmttimeo $hosts$ ) /
+ network.tcp.sndpack $hosts$ ) > $threshold$ &&
+ network.tcp.sndpack $hosts$ > 100 count/second
+)"
+ enabled = no
+ version = 1
+ help =
+"There is some network output activity (at least 100 TCP packets per
+second) and the average ratio of retransmitted TCP packets to output
+TCP packets exceeds threshold percent during the last sample
+interval.
+High retransmission rates are suggestive of network congestion, or
+long latency between the end-points of the TCP connections.";
+
+string rule
+ default = "high number of TCP packet retransmissions"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 20
+ help =
+"Maximum acceptable percentage of retransmiited TCP packets per TCP
+output packet, in the range 0 (not expecting any retransmission) to
+100 (chronic saturation on the network).";
+
+string action_expand
+ default = "%v%@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pmdas/GNUmakefile b/qa/pmdas/GNUmakefile
new file mode 100644
index 0000000..2a8805b
--- /dev/null
+++ b/qa/pmdas/GNUmakefile
@@ -0,0 +1,25 @@
+#!gmake
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2010 Aconex. All Rights Reserved.
+#
+
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pmdas
+SUBDIRS = broken bigun dynamic slow slow_python
+LSRCFILES = GNUmakefile.install
+
+default default_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+setup: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+install install_pcp: $(SUBDIRS)
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(SUBDIRS_MAKERULE)
+
+include $(BUILDRULES)
diff --git a/qa/pmdas/GNUmakefile.install b/qa/pmdas/GNUmakefile.install
new file mode 100644
index 0000000..bd16ec2
--- /dev/null
+++ b/qa/pmdas/GNUmakefile.install
@@ -0,0 +1,40 @@
+#!gmake
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2010 Aconex. All Rights Reserved.
+#
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+# special variant of SUBDIRS_MAKERULE for running QA in the tree
+#
+SUBDIRS_MAKERULE = \
+ @for d in `echo $^ `; do \
+ if test -d "$$d" ; then \
+ $(ECHO) === $$d ===; \
+ if test -f "$$d/GNUmakefile.install"; then \
+ $(MAKE) -C $$d -f GNUmakefile.install $@ || exit $$?; \
+ else \
+ $(MAKE) -C $$d $@ || exit $$?; \
+ fi; \
+ fi; \
+ done
+
+SUBDIRS = broken bigun dynamic slow slow_python
+
+default default_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+setup: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+install install_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+include $(BUILDRULES)
diff --git a/qa/pmdas/bigun/GNUmakefile b/qa/pmdas/bigun/GNUmakefile
new file mode 100644
index 0000000..a4160d9
--- /dev/null
+++ b/qa/pmdas/bigun/GNUmakefile
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pmdas/bigun
+
+CFILES = bigun.c
+LIBTARGET = bigun.$(DSOSUFFIX)
+TARGETS = $(LIBTARGET)
+MYFILES = domain.h help pmns root
+MYSCRIPTS = Install Remove
+LSRCFILES = $(MYFILES) $(MYSCRIPTS) GNUmakefile.install
+LDIRT = help.pag help.dir
+
+LLDFLAGS = $(PCP_LIBS)
+LLDLIBS = $(PCP_PMDALIB)
+
+default default_pcp setup: $(TARGETS)
+
+$(LIBTARGET): bigun.o
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CFILES) $(MYFILES) $(TESTDIR)
+ $(INSTALL) -m 755 $(MYSCRIPTS) $(TARGETS) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+include $(BUILDRULES)
diff --git a/qa/pmdas/bigun/GNUmakefile.install b/qa/pmdas/bigun/GNUmakefile.install
new file mode 100644
index 0000000..bc8f87e
--- /dev/null
+++ b/qa/pmdas/bigun/GNUmakefile.install
@@ -0,0 +1,43 @@
+#!gmake
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+SHELL = sh
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+include $(PCP_INC_DIR)/builddefs
+
+# remove -Lpath and -Ipath options from builddefs CFLAGS value
+#
+PCP_LIBS =
+TMP := $(CFLAGS:-I%=)
+ifdef PCP_DIR
+# put -Ipath and -Lpath back but use paths for run-time environment
+#
+CFLAGS = $(TMP) -I$(PCP_INC_DIR)/..
+LDFLAGS = -L$(PCP_LIB_DIR)
+else
+CFLAGS = $(TMP)
+endif
+
+CFILES = bigun.c
+LIBTARGET = bigun.$(DSOSUFFIX)
+TARGETS = $(LIBTARGET)
+MYFILES = domain.h help pmns root
+MYSCRIPTS = Install Remove
+LDIRT = help.pag help.dir
+
+LLDLIBS = -lpcp_pmda -lpcp $(LIB_FOR_MATH) $(LIB_FOR_DLOPEN) $(LIB_FOR_PTHREADS)
+
+default default_pcp setup: $(TARGETS)
+
+$(LIBTARGET): bigun.o
+
+install install_pcp:
+
+include $(PCP_INC_DIR)/buildrules
diff --git a/qa/pmdas/bigun/Install b/qa/pmdas/bigun/Install
new file mode 100755
index 0000000..4845424
--- /dev/null
+++ b/qa/pmdas/bigun/Install
@@ -0,0 +1,24 @@
+#! /bin/sh
+
+. $PCP_DIR/etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+if [ -f GNUmakefile.install ]
+then
+ # running within the source tree, not in the 'testsuite' directory
+ #
+ PCP_MAKE_PROG="$PCP_MAKE_PROG -f GNUmakefile.install"
+fi
+
+# Make sure DSO PMDA exists
+make
+
+iam=bigun
+pmda_interface=4
+dso_opt=true
+dso_name=`pwd`/bigun.${dso_suffix}
+daemon_opt=false
+
+pmdaSetup
+pmdaInstall
+exit 0
diff --git a/qa/pmdas/bigun/Remove b/qa/pmdas/bigun/Remove
new file mode 100755
index 0000000..1061fd5
--- /dev/null
+++ b/qa/pmdas/bigun/Remove
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+. $PCP_DIR/etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+iam=bigun
+
+pmdaSetup
+pmdaRemove
+
+exit 0
diff --git a/qa/pmdas/bigun/bigun.c b/qa/pmdas/bigun/bigun.c
new file mode 100644
index 0000000..735d952
--- /dev/null
+++ b/qa/pmdas/bigun/bigun.c
@@ -0,0 +1,71 @@
+/*
+ * bigun PMDA ... one big value for QA
+ *
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+static pmdaMetric metrics[] = {
+ { NULL,
+ { PMDA_PMID(0,0), PM_TYPE_AGGREGATE_STATIC, PM_INDOM_NULL, PM_SEM_DISCRETE,
+ PMDA_PMUNITS(0, 0, 0, 0, 0, 0) } }
+};
+
+#define MYSIZE (1024*1024)
+static pmValueBlock *vbp;
+
+/*
+ * callback provided to pmdaFetch
+ */
+static int
+bigun_fetchCallBack(pmdaMetric *mdesc, unsigned int inst, pmAtomValue *atom)
+{
+ if (pmid_cluster(mdesc->m_desc.pmid) != 0 ||
+ pmid_item(mdesc->m_desc.pmid) != 0)
+ return PM_ERR_PMID;
+ if (inst != PM_IN_NULL)
+ return PM_ERR_INST;
+
+ atom->vbp = vbp;
+ return 1;
+}
+
+/* Initialise the DSO agent */
+void
+bigun_init(pmdaInterface *dp)
+{
+ int i;
+ int sep = __pmPathSeparator();
+ char helppath[MAXPATHLEN];
+
+ /*
+ * Note: helpfile is only available if the PMDA has been installed
+ * from $PCP_VAR_DIR/testsuite/pmdas/bigun ... when the PMDA install
+ * comes from QA run from some other directory, the helpfile may not
+ * be found ... fortunately nothing in QA depends on the helpfile
+ * being available for the bigun PMDA.
+ */
+ snprintf(helppath, sizeof(helppath),
+ "%s%c" "testsuite" "%c" "pmdas" "%c" "bigun" "%c" "help",
+ pmGetConfig("PCP_VAR_DIR"), sep, sep, sep, sep);
+ pmdaDSO(dp, PMDA_INTERFACE_4, "bigun DSO", helppath);
+ if (dp->status != 0)
+ return;
+
+ pmdaSetFetchCallBack(dp, bigun_fetchCallBack);
+ pmdaInit(dp, NULL, 0, metrics, sizeof(metrics)/sizeof(metrics[0]));
+
+ vbp = (pmValueBlock *)malloc(PM_VAL_HDR_SIZE+MYSIZE);
+ if (vbp == NULL) {
+ fprintf(stderr, "bigun_init: malloc failed: %s\n", pmErrStr(-errno));
+ exit(1);
+ }
+ vbp->vtype = PM_TYPE_AGGREGATE_STATIC;
+ vbp->vlen = PM_VAL_HDR_SIZE+MYSIZE;
+ for (i = 0; i < MYSIZE; i += sizeof(int))
+ memcpy((void *)&vbp->vbuf[i], (void *)&i, sizeof(int));
+}
diff --git a/qa/pmdas/bigun/domain.h b/qa/pmdas/bigun/domain.h
new file mode 100644
index 0000000..6f108f2
--- /dev/null
+++ b/qa/pmdas/bigun/domain.h
@@ -0,0 +1,2 @@
+/* reuse the QA BROKEN domain id */
+#define BIGUN 249
diff --git a/qa/pmdas/bigun/help b/qa/pmdas/bigun/help
new file mode 100644
index 0000000..70fd765
--- /dev/null
+++ b/qa/pmdas/bigun/help
@@ -0,0 +1 @@
+@ bigun.sumo one big value
diff --git a/qa/pmdas/bigun/pmns b/qa/pmdas/bigun/pmns
new file mode 100644
index 0000000..8d52234
--- /dev/null
+++ b/qa/pmdas/bigun/pmns
@@ -0,0 +1,4 @@
+bigun {
+ sumo 249:0:0
+}
+
diff --git a/qa/pmdas/bigun/root b/qa/pmdas/bigun/root
new file mode 100644
index 0000000..80ad70e
--- /dev/null
+++ b/qa/pmdas/bigun/root
@@ -0,0 +1,5 @@
+root {
+ bigun
+}
+
+#include "pmns"
diff --git a/qa/pmdas/broken/GNUmakefile b/qa/pmdas/broken/GNUmakefile
new file mode 100644
index 0000000..4834cad
--- /dev/null
+++ b/qa/pmdas/broken/GNUmakefile
@@ -0,0 +1,83 @@
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2009-2010 Aconex. All Rights Reserved.
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+STDPMID = $(TOPDIR)/src/pmns/stdpmid
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pmdas/broken
+
+CFILES = broken_pmda.c
+CFILES_TARGETS = $(CFILES)
+
+TARGETS = $(subst broken_pmda,,$(basename $(CFILES_TARGETS))) \
+ broken_pmda_2_0 broken_pmda_2_1 broken_pmda_2_2 \
+ broken_pmda_2_3 broken_pmda_2_4 broken_pmda_2_5
+
+LLDFLAGS = $(PCP_LIBS)
+LLDLIBS = $(PCPLIB)
+
+# all archives, except the ones checked into the source tree,
+# then add executables beyond $(TARGETS)
+#
+LDIRT = *.log help.pag help.dir $(subst .c,.o,$(CFILES)) \
+ broken_pmda_*.c real_broken_pmns broken_v?.dir broken_v?.pag \
+ $(TARGETS)
+
+default default_pcp setup: $(CFILES_TARGETS) $(TARGETS)
+
+MYFILES = broken_help broken_pmns domain.h
+MYSCRIPTS = broken_Install broken_Remove
+LSRCFILES += $(MYFILES) $(MYSCRIPTS) GNUmakefile.install
+
+include $(BUILDRULES)
+
+$(TARGETS):
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CFILES) $(MYFILES) $(TESTDIR)
+ $(INSTALL) -m 755 $(MYSCRIPTS) $(TARGETS) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+real_broken_pmns: domain.h broken_pmns
+ cat domain.h >real_broken_pmns
+ echo >>real_broken_pmns
+ echo 'root {' >>real_broken_pmns
+ echo ' broken' >>real_broken_pmns
+ echo '}' >>real_broken_pmns
+ echo >>real_broken_pmns
+ cat broken_pmns >>real_broken_pmns
+
+broken_pmda_2_0: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -o $@ $@.c -lpcp_pmda $(LDLIBS) $(LDFLAGS)
+
+broken_pmda_2_1: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_1 -o $@ $@.c -lpcp_pmda $(LDLIBS) $(LDFLAGS)
+
+broken_pmda_2_2: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_2 -o $@ $@.c -lpcp_pmda $(LDLIBS) $(LDFLAGS)
+
+broken_pmda_2_3: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_3 -o $@ $@.c -lpcp_pmda $(LDLIBS) $(LDFLAGS)
+
+broken_pmda_2_4: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_4 -o $@ $@.c -lpcp_pmda $(LDLIBS) $(LDFLAGS)
+
+broken_pmda_2_5: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_5 -o $@ $@.c -lpcp_pmda $(LDLIBS) $(LDFLAGS)
diff --git a/qa/pmdas/broken/GNUmakefile.install b/qa/pmdas/broken/GNUmakefile.install
new file mode 100644
index 0000000..44f7722
--- /dev/null
+++ b/qa/pmdas/broken/GNUmakefile.install
@@ -0,0 +1,97 @@
+#!gmake
+#
+# Copyright (c) 2009-2010 Aconex. All Rights Reserved.
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+STDPMID = $(PCP_VAR_DIR)/pmns/stdpmid
+
+# remove -Lpath and -Ipath options from builddefs CFLAGS value
+#
+PCP_LIBS =
+TMP := $(CFLAGS:-I%=)
+ifdef PCP_DIR
+# put -Ipath and -Lpath back but use paths for run-time environment
+#
+CFLAGS = $(TMP) -I$(PCP_INC_DIR)/.. -L$(PCP_LIB_DIR)
+else
+CFLAGS = $(TMP)
+endif
+CFILES = broken_pmda.c
+CFILES_TARGETS = $(CFILES)
+
+TARGETS = $(subst broken_pmda,,$(basename $(CFILES_TARGETS))) \
+ broken_pmda_2_0 broken_v2.dir broken_pmda_2_1 broken_pmda_2_2 \
+ broken_pmda_2_3 broken_pmda_2_4 broken_pmda_2_5
+
+LLDLIBS = -lpcp $(LIB_FOR_MATH) $(LIB_FOR_DLOPEN) $(LIB_FOR_PTHREADS)
+
+
+# all archives, except the ones checked into the source tree,
+# then add executables beyond $(TARGETS)
+#
+LDIRT = *.log help.pag help.dir $(subst .c,.o,$(CFILES)) \
+ broken_pmda_*.c real_broken_pmns broken_v?.dir broken_v?.pag \
+ $(TARGETS)
+
+default default_pcp setup: $(CFILES_TARGETS) $(TARGETS)
+
+MYFILES = broken_help broken_pmns
+MYSCRIPTS = broken_Install broken_Remove
+
+include $(PCP_INC_DIR)/buildrules
+
+$(TARGETS):
+
+install install_pcp:
+
+broken_v2.dir: broken_help real_broken_pmns
+ rm -f broken_v2.pag broken_v2.dir
+ newhelp -n real_broken_pmns -v 2 -o broken_v2 broken_help
+
+real_broken_pmns: domain.h broken_pmns
+ cat domain.h >real_broken_pmns
+ echo >>real_broken_pmns
+ echo 'root {' >>real_broken_pmns
+ echo ' broken' >>real_broken_pmns
+ echo '}' >>real_broken_pmns
+ echo >>real_broken_pmns
+ cat broken_pmns >>real_broken_pmns
+
+broken_pmda_2_0: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+broken_pmda_2_1: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_1 -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+broken_pmda_2_2: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_2 -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+broken_pmda_2_3: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_3 -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+broken_pmda_2_4: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_4 -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+broken_pmda_2_5: broken_pmda.c domain.h
+ rm -f $@ $@.c
+ ln -s broken_pmda.c $@.c
+ $(CCF) $(CDEFS) -DVERSION_2 -DBUG_5 -o $@ $@.c -lpcp_pmda $(LDLIBS)
diff --git a/qa/pmdas/broken/broken_Install b/qa/pmdas/broken/broken_Install
new file mode 100755
index 0000000..32fa109
--- /dev/null
+++ b/qa/pmdas/broken/broken_Install
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Install the broken PMDA and/or PMNS
+#
+
+# source the PCP configuration environment variables
+. $PCP_DIR/etc/pcp.env
+
+# Get the common procedures and variable assignments
+#
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+# The name of the PMDA
+#
+iam=broken
+
+# Do it
+#
+_setup
+
+dso_opt=false
+daemon_opt=false
+pmns_source=broken_pmns
+help_source=broken_help
+
+_install
+
+exit 0
diff --git a/qa/pmdas/broken/broken_Remove b/qa/pmdas/broken/broken_Remove
new file mode 100755
index 0000000..9d264ff
--- /dev/null
+++ b/qa/pmdas/broken/broken_Remove
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Remove the broken PMDA
+#
+
+# source the PCP configuration environment variables
+. $PCP_DIR/etc/pcp.env
+
+# Get the common procedures and variable assignments
+#
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+# The name of the PMDA
+#
+iam=broken
+
+# Do it
+#
+_setup
+_remove
+
+exit 0
diff --git a/qa/pmdas/broken/broken_help b/qa/pmdas/broken/broken_help
new file mode 100644
index 0000000..684c4c0
--- /dev/null
+++ b/qa/pmdas/broken/broken_help
@@ -0,0 +1,39 @@
+#
+# broken help file
+# help is provided for all metrics except broken.bad.help
+#
+
+@ broken.valid.one calls to fetch callback
+The number of calls to the PMDA-supplied fetch callback function.
+
+@ broken.valid.two has instance domain
+Valid metric with an instance domain.
+
+@ broken.valid.three has another instance domain
+Valid instance domain with non-sequential serial number.
+
+@ broken.bad.type illegal data type
+Data type in pmDesc is set to PM_TYPE_NOSUPPORT.
+
+@ broken.bad.semantics semantics too high
+Metric semantics set to -1.
+
+@ broken.bad.scale scale too high
+Scale of metrics beyond defined range.
+
+@ broken.bad.indom undefined indom
+The indom is set beyond the bounds of the indom table.
+
+@ broken.no.fetch no fetch method implemented
+The fetch callback does not handle this metric.
+
+@ broken.no.shorthelp
+There is no short help for the metric
+
+@ broken.no.longhelp no long help
+
+@ broken.no.instfetch missing fetch for one instance
+One instance is not supported by fetch callback
+
+@ broken.no.instances empty inst list
+The inst list is empty
diff --git a/qa/pmdas/broken/broken_pmda.c b/qa/pmdas/broken/broken_pmda.c
new file mode 100644
index 0000000..c6c3e43
--- /dev/null
+++ b/qa/pmdas/broken/broken_pmda.c
@@ -0,0 +1,387 @@
+/*
+ * Broken, a PMDA which is broken in several ways
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <time.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+#include "domain.h"
+
+/*
+ * Broken PMDA
+ *
+ * This PMDA is broken in several ways. This is used to test libpcp_pmda
+ * error recovery and messages to the user. Not all the metrics are invalid,
+ * and the metric id's are intentionally sparse to force non-direct mapping.
+ *
+ * The macro BUG_? can be used to turn certain bad things on which may
+ * be fatal.
+ *
+ * BUG Metrics
+ * * broken.valid.one - returns num calls to fetch callback
+ * * broken.valid.two - has instance domain, fixed values
+ * * broken.bad.type - illegal data type
+ * * broken.valid.three - normal, fixed value
+ * * broken.no.fetch - no fetch method implemented for this metric
+ * * broken.no.help - no help text for this metric
+ * * broken.no.shorthelp - no short help on metric
+ * * broken.no.longhelp - no long help on metric
+ * * broken.bad.semantics - illegal semantics
+ * * broken.bad.scale - illegal scale
+ * * broken.no.pmns - not defined in pmns
+ * * broken.no.instfetch - one instance not handled by fetch
+ * * broken.no.instances - instance domain with no instances
+ *
+ * 1 broken.bad.indom - metric with undefined instance
+ * 2 - no instance domain supplied
+ * 3 - no metrics supplied
+ * 4 - bad help file path
+ *
+ * The macro VERSION_? can be used to force this to be a PCP 1.X or 2.0 PMDA
+ *
+ * 1 - use pcp1.X headers and link with compat libs
+ * 2 - use pcp2.o headers and latest libs
+ */
+
+/*
+ * list of instances
+ */
+
+#ifndef BUG_2
+static pmdaInstid _indom0[] = {
+ { 0, "a" }, { 1, "b" }, { 2, "c" }
+};
+#endif
+
+static pmdaInstid _indom1[] = {
+ { 50, "x" }, { 10, "y" }, { 9, "z" }
+};
+
+/*
+ * list of instace domains
+ */
+
+static pmdaIndom indomtab[] = {
+#define INDOM_0 0
+#ifndef BUG_2
+ { INDOM_0, 3, _indom0 },
+#endif
+#define INDOM_1 7
+ { INDOM_1, 3, _indom1 },
+#define INDOM_2 8
+ { INDOM_2, 0, (pmdaInstid *)0 }
+};
+
+
+
+#ifndef BUG_3
+
+/*
+ * all metrics supported in this PMDA - one table entry for each
+ */
+
+static pmdaMetric metrictab[] = {
+/* valid.one */
+ { (void *)0,
+ { PMDA_PMID(0,0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* valid.two */
+ { (void *)0,
+ { PMDA_PMID(0,1), PM_TYPE_U32, INDOM_0, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* bad.type */
+ { (void *)0,
+ { PMDA_PMID(0,5), PM_TYPE_NOSUPPORT, PM_INDOM_NULL, PM_SEM_COUNTER,
+ { 0, 0, 0, 0, 0, 0 } }, },
+/* valid.three */
+ { (void *)0,
+ { PMDA_PMID(0,7), PM_TYPE_U32, INDOM_1, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.fetch */
+ { (void *)0,
+ { PMDA_PMID(0,9), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.help */
+ { (void *)0,
+ { PMDA_PMID(0,10), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.shorthelp */
+ { (void *)0,
+ { PMDA_PMID(0,11), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.longhelp */
+ { (void *)0,
+ { PMDA_PMID(0,12), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.isntfetch */
+ { (void *)0,
+ { PMDA_PMID(0,13), PM_TYPE_U32, INDOM_1, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* bad.semantics */
+ { (void *)0,
+ { PMDA_PMID(1,1), PM_TYPE_U32, PM_INDOM_NULL, -1,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* bad.scale */
+ { (void *)0,
+ { PMDA_PMID(1,2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+/* no.pmns */
+ { (void *)0,
+ { PMDA_PMID(1,3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+#ifdef BUG_1
+/* bad.indom */
+ { (void *)0,
+ { PMDA_PMID(1,4), PM_TYPE_U32, 17, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+#endif
+/* no.instances */
+ { (void *)0,
+ { PMDA_PMID(0,14), PM_TYPE_U32, INDOM_2, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+};
+
+#endif
+
+static int _isDSO = 1; /* =0 I am a daemon */
+static char *_logFile = "broken.log";
+#if defined(VERSION_1)
+static char *_helpText = "pmdas/broken/broken_v1";
+#else
+static char *_helpText = "pmdas/broken/broken_v2";
+#endif
+
+/*
+ * callback provided to pmdaFetch
+ */
+
+static int
+broken_fetchCallBack(pmdaMetric *mdesc, unsigned int inst, pmAtomValue *atom)
+{
+ static int count = 0;
+ __pmID_int *idp = (__pmID_int *)&(mdesc->m_desc.pmid);
+
+ switch (idp->cluster) {
+ case 0:
+ switch (idp->item) {
+ case 0:
+ atom->l = ++count;
+ break;
+ case 1:
+ switch (inst) {
+ case 0:
+ atom->l = 1;
+ break;
+ case 1:
+ atom->l = 2;
+ break;
+ case 2:
+ atom->l = 3;
+ break;
+ default:
+ return PM_ERR_INST;
+ }
+ break;
+ /* broken.bogus.one: metric not defined in table but is in pmns */
+ case 2:
+ fprintf(stderr,
+ "%s: Fetching metric 0.2 which does not exist\n",
+ pmProgname);
+ atom->l = 42;
+ break;
+ /* metric not defined in table or pmns */
+ case 3:
+ fprintf(stderr,
+ "%s: Fetching metric 0.3 which does not exist\n",
+ pmProgname);
+ atom->l = -1;
+ break;
+ case 5:
+ atom->d = 3.14;
+ break;
+ case 7:
+ switch (inst) {
+ case 50:
+ atom->l = 44;
+ break;
+ case 10:
+ atom->l = 45;
+ break;
+ case 9:
+ atom->l = 46;
+ break;
+ default:
+ return PM_ERR_INST;
+ }
+ break;
+ case 10:
+ atom->l = 55;
+ break;
+ case 11:
+ atom->l = 66;
+ break;
+ case 12:
+ atom->l = 77;
+ break;
+ case 13:
+ switch (inst) {
+ case 50:
+ atom->l = 44;
+ break;
+ case 9:
+ atom->l = 46;
+ break;
+ default:
+ return PM_ERR_INST;
+ }
+ break;
+ case 14:
+ fprintf(stderr, "PMID %s requested with inst = %d\n",
+ pmIDStr(mdesc->m_desc.pmid), inst);
+ return PM_ERR_VALUE;
+ default:
+ return PM_ERR_PMID;
+ }
+ break;
+ case 1:
+ switch (idp->item) {
+ case 1:
+ atom->l = 333;
+ break;
+ case 2:
+ atom->l = 12345;
+ break;
+ case 3:
+ atom->l = 4321;
+ break;
+#ifdef BUG_4
+ case 4:
+ fprintf(stderr, "Eeek! Should not be trying to get PMID %s\n",
+ pmIDStr(mdesc->m_desc.pmid));
+ break;
+#endif
+ default:
+ return PM_ERR_PMID;
+ }
+ break;
+ default:
+ return PM_ERR_PMID;
+ }
+
+ return 0;
+}
+
+/*
+ * Initialise the agent (both daemon and DSO).
+ */
+
+void
+broken_init(pmdaInterface *dp)
+{
+#if defined(BUG_5)
+ if (_isDSO)
+ /*
+ * we don't grok PMDA_INTERFACE_77 ... 77 is arbitrary, just needs
+ * to be bigger than currently validand supported
+ */
+#if defined(VERSION_1)
+ pmdaDSO(dp, 77, "broken DSO", BROKEN, _helpText);
+#else
+ pmdaDSO(dp, 77, "broken DSO", _helpText);
+#endif
+#elif defined(VERSION_1)
+ if (_isDSO)
+ pmdaDSO(dp, PMDA_PROTOCOL_2, "broken DSO", BROKEN, _helpText);
+#else
+ if (_isDSO)
+ pmdaDSO(dp, PMDA_INTERFACE_2, "broken DSO", _helpText);
+#endif
+
+ if (dp->status != 0)
+ return;
+
+ pmdaSetFetchCallBack(dp, broken_fetchCallBack);
+
+#if defined(BUG_2)
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]),
+ metrictab, sizeof(metrictab)/sizeof(metrictab[0]));
+#elif defined(BUG_3)
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]),
+ (pmdaMetric *)0, -1);
+#elif defined(BUG_4)
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]),
+ metrictab, sizeof(metrictab)/sizeof(metrictab[0]));
+#else
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]),
+ metrictab, sizeof(metrictab)/sizeof(metrictab[0]));
+#endif
+}
+
+static void
+usage(void)
+{
+ fprintf(stderr, "Usage: %s [options]\n\n", pmProgname);
+ fputs("Options:\n"
+ " -d N set pmDebug debugging flag to N\n"
+ " -D domain use domain (numeric) for metrics domain of PMDA\n"
+ " -h helpfile get help text from helpfile rather then default path\n"
+ " -l logfile write log into logfile rather than using default log name\n"
+ "\nExactly one of the following options may appear:\n"
+ " -i port expect PMCD to connect on given inet port (number or name)\n"
+ " -p expect PMCD to supply stdin/stdout (pipe)\n"
+ " -u socket expect PMCD to connect on given unix domain socket\n"
+ " -6 port expect PMCD to connect on given ipv6 port (number or name)\n",
+ stderr);
+ exit(1);
+}
+
+/*
+ * Set up the agent if running as a daemon.
+ */
+
+int
+main(int argc, char **argv)
+{
+ int err = 0;
+ pmdaInterface desc;
+
+ __pmSetProgname(argv[0]);
+ _isDSO = 0;
+
+#if defined(BUG_5)
+ /*
+ * we don't grok PMDA_INTERFACE_77 ... 77 is arbitrary, just needs
+ * to be bigger than currently valid and supported
+ */
+ pmdaDaemon(&desc, 77, pmProgname, BROKEN, _logFile,
+ _helpText);
+#elif defined(VERSION_1)
+ pmdaDaemon(&desc, PMDA_PROTOCOL_2, pmProgname, BROKEN, _logFile,
+ _helpText);
+#else
+ pmdaDaemon(&desc, PMDA_INTERFACE_2, pmProgname, BROKEN, _logFile,
+ _helpText);
+#endif
+
+ if (desc.status != 0) {
+ fprintf(stderr, "pmdaDaemon() failed!\n");
+ exit(1);
+ }
+
+ if (pmdaGetOpt(argc, argv, "D:d:h:i:l:pu:6:", &desc, &err) != EOF)
+ err++;
+
+ if (err)
+ usage();
+
+ pmdaOpenLog(&desc);
+ broken_init(&desc);
+ pmdaConnect(&desc);
+ pmdaMain(&desc);
+
+ exit(0);
+}
diff --git a/qa/pmdas/broken/broken_pmda.v1.c b/qa/pmdas/broken/broken_pmda.v1.c
new file mode 100644
index 0000000..00cda3e
--- /dev/null
+++ b/qa/pmdas/broken/broken_pmda.v1.c
@@ -0,0 +1,386 @@
+/*
+ * Broken, a PMDA which is broken in several ways
+ *
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <time.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+#include "domain.h"
+
+/*
+ * Broken PMDA
+ *
+ * This PMDA is broken in several ways. This is used to test libpcp_pmda
+ * error recovery and messages to the user. Not all the metrics are invalid,
+ * and the metric id's are intentionally sparse to force non-direct mapping.
+ *
+ * The macro BUG_? can be used to turn certain bad things on which may
+ * be fatal.
+ *
+ * BUG Metrics
+ * * broken.valid.one - returns num calls to fetch callback
+ * * broken.valid.two - has instance domain, fixed values
+ * * broken.bad.type - illegal data type
+ * * broken.valid.three - normal, fixed value
+ * * broken.no.fetch - no fetch method implemented for this metric
+ * * broken.no.help - no help text for this metric
+ * * broken.no.shorthelp - no short help on metric
+ * * broken.no.longhelp - no long help on metric
+ * * broken.bad.semantics - illegal semantics
+ * * broken.bad.scale - illegal scale
+ * * broken.no.pmns - not defined in pmns
+ * * broken.no.instfetch - one instance not handled by fetch
+ * * broken.no.instances - instance domain with no instances
+ *
+ * 1 broken.bad.indom - metric with undefined instance
+ * 2 - no instance domain supplied
+ * 3 - no metrics supplied
+ * 4 - bad help file path
+ *
+ * The macro VERSION_? can be used to force this to be a PCP 1.X or 2.0 PMDA
+ *
+ * 1 - use pcp1.X headers and link with compat libs
+ * 2 - use pcp2.o headers and latest libs
+ */
+
+#ifndef BUG_2
+
+/*
+ * list of instances
+ */
+
+static pmdaInstid _indom0[] = {
+ { 0, "a" }, { 1, "b" }, { 2, "c" }
+};
+
+static pmdaInstid _indom1[] = {
+ { 50, "x" }, { 10, "y" }, { 9, "z" }
+};
+
+/*
+ * list of instace domains
+ */
+
+static pmdaIndom indomtab[] = {
+#define INDOM_0 0
+ { INDOM_0, 3, _indom0 },
+#define INDOM_1 7
+ { INDOM_1, 3, _indom1 },
+#define INDOM_2 8
+ { INDOM_2, 0, (pmdaInstid *)0 }
+};
+
+#else
+
+#define INDOM_0 0
+#define INDOM_1 7
+#define INDOM_2 8
+
+#endif
+
+
+#ifndef BUG_3
+
+/*
+ * all metrics supported in this PMDA - one table entry for each
+ */
+
+static pmdaMetric metrictab[] = {
+/* valid.one */
+ { (void *)0,
+ { PMDA_PMID(0,0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* valid.two */
+ { (void *)0,
+ { PMDA_PMID(0,1), PM_TYPE_U32, INDOM_0, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* bad.type */
+ { (void *)0,
+ { PMDA_PMID(0,5), PM_TYPE_NOSUPPORT, PM_INDOM_NULL, PM_SEM_COUNTER,
+ { 0, 0, 0, 0, 0, 0 } }, },
+/* valid.three */
+ { (void *)0,
+ { PMDA_PMID(0,7), PM_TYPE_U32, INDOM_1, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.fetch */
+ { (void *)0,
+ { PMDA_PMID(0,9), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.help */
+ { (void *)0,
+ { PMDA_PMID(0,10), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.shorthelp */
+ { (void *)0,
+ { PMDA_PMID(0,11), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.longhelp */
+ { (void *)0,
+ { PMDA_PMID(0,12), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* no.isntfetch */
+ { (void *)0,
+ { PMDA_PMID(0,13), PM_TYPE_U32, INDOM_1, PM_SEM_INSTANT,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* bad.semantics */
+ { (void *)0,
+ { PMDA_PMID(1,1), PM_TYPE_U32, PM_INDOM_NULL, -1,
+ { 0, 1, 0, 0, PM_TIME_SEC, 0 } }, },
+/* bad.scale */
+ { (void *)0,
+ { PMDA_PMID(1,2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+/* no.pmns */
+ { (void *)0,
+ { PMDA_PMID(1,3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+#ifdef BUG_1
+/* bad.indom */
+ { (void *)0,
+ { PMDA_PMID(1,4), PM_TYPE_U32, 17, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+#endif
+/* no.instances */
+ { (void *)0,
+ { PMDA_PMID(0,14), PM_TYPE_U32, INDOM_2, PM_SEM_COUNTER,
+ { 1, 0, 0, 10, 0, 0 } }, },
+};
+
+#endif
+
+static int _isDSO = 1; /* =0 I am a daemon */
+static char *_logFile = "broken.log";
+#if defined(VERSION_1)
+static char *_helpText = "pmdas/broken/broken_v1";
+#else
+static char *_helpText = "pmdas/broken/broken_v2";
+#endif
+
+/*
+ * callback provided to pmdaFetch
+ */
+
+static int
+broken_fetchCallBack(pmdaMetric *mdesc, unsigned int inst, pmAtomValue *atom)
+{
+ static int count = 0;
+ _pmID_int *idp = (_pmID_int *)&(mdesc->m_desc.pmid);
+
+ switch (idp->cluster) {
+ case 0:
+ switch (idp->item) {
+ case 0:
+ atom->l = ++count;
+ break;
+ case 1:
+ switch (inst) {
+ case 0:
+ atom->l = 1;
+ break;
+ case 1:
+ atom->l = 2;
+ break;
+ case 2:
+ atom->l = 3;
+ break;
+ default:
+ return PM_ERR_INST;
+ }
+ break;
+ /* broken.bogus.one: metric not defined in table but is in pmns */
+ case 2:
+ fprintf(stderr,
+ "%s: Fetching metric 0.2 which does not exist\n",
+ pmProgname);
+ atom->l = 42;
+ break;
+ /* metric not defined in table or pmns */
+ case 3:
+ fprintf(stderr,
+ "%s: Fetching metric 0.3 which does not exist\n",
+ pmProgname);
+ atom->l = -1;
+ break;
+ case 5:
+ atom->d = 3.14;
+ break;
+ case 7:
+ switch (inst) {
+ case 50:
+ atom->l = 44;
+ break;
+ case 10:
+ atom->l = 45;
+ break;
+ case 9:
+ atom->l = 46;
+ break;
+ default:
+ return PM_ERR_INST;
+ }
+ break;
+ case 10:
+ atom->l = 55;
+ break;
+ case 11:
+ atom->l = 66;
+ break;
+ case 12:
+ atom->l = 77;
+ break;
+ case 13:
+ switch (inst) {
+ case 50:
+ atom->l = 44;
+ break;
+ case 9:
+ atom->l = 46;
+ break;
+ default:
+ return PM_ERR_INST;
+ }
+ break;
+ case 14:
+ fprintf(stderr, "PMID %s requested with inst = %d\n",
+ pmIDStr(mdesc->m_desc.pmid), inst);
+ return PM_ERR_VALUE;
+ default:
+ return PM_ERR_PMID;
+ }
+ break;
+ case 1:
+ switch (idp->item) {
+ case 1:
+ atom->l = 333;
+ break;
+ case 2:
+ atom->l = 12345;
+ break;
+ case 3:
+ atom->l = 4321;
+ break;
+#ifdef BUG_4
+ case 4:
+ fprintf(stderr, "Eeek! Should not be trying to get PMID %s\n",
+ pmIDStr(mdesc->m_desc.pmid));
+ break;
+#endif
+ default:
+ return PM_ERR_PMID;
+ }
+ break;
+ default:
+ return PM_ERR_PMID;
+ }
+
+ return 0;
+}
+
+/*
+ * Initialise the agent (both daemon and DSO).
+ */
+
+void
+broken_init(pmdaInterface *dp)
+{
+#if defined(BUG_5)
+ if (_isDSO)
+ /* we don't grok PMDA_INTERFACE_4 ... */
+#if defined(VERSION_1)
+ pmdaDSO(dp, 4, "broken DSO", BROKEN, _helpText);
+#else
+ pmdaDSO(dp, 4, "broken DSO", _helpText);
+#endif
+#elif defined(VERSION_1)
+ if (_isDSO)
+ pmdaDSO(dp, PMDA_PROTOCOL_2, "broken DSO", BROKEN, _helpText);
+#else
+ if (_isDSO)
+ pmdaDSO(dp, PMDA_INTERFACE_2, "broken DSO", _helpText);
+#endif
+
+ if (dp->status != 0)
+ return;
+
+ pmdaSetFetchCallBack(dp, broken_fetchCallBack);
+
+#if defined(BUG_2)
+ pmdaInit(dp, (pmdaIndom *)0, 0, metrictab,
+ sizeof(metrictab)/sizeof(metrictab[0]));
+#elif defined(BUG_3)
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]),
+ (pmdaMetric *)0, -1);
+#elif defined(BUG_4)
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]),
+ metrictab, sizeof(metrictab)/sizeof(metrictab[0]));
+#else
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]),
+ metrictab, sizeof(metrictab)/sizeof(metrictab[0]));
+#endif
+}
+
+static void
+usage(void)
+{
+ fprintf(stderr, "Usage: %s [options]\n\n", pmProgname);
+ fputs("Options:\n"
+ " -d N set pmDebug debugging flag to N\n"
+ " -D domain use domain (numeric) for metrics domain of PMDA\n"
+ " -h helpfile get help text from helpfile rather then default path\n"
+ " -l logfile write log into logfile rather than using default log name\n"
+ "\nExactly one of the following options may appear:\n"
+ " -i port expect PMCD to connect on given inet port (number or name)\n"
+ " -p expect PMCD to supply stdin/stdout (pipe)\n"
+ " -u socket expect PMCD to connect on given unix domain socket\n"
+ " -6 port expect PMCD to connect on given ipv6 port (number or name)\n",
+ stderr);
+ exit(1);
+}
+
+/*
+ * Set up the agent if running as a daemon.
+ */
+
+int
+main(int argc, char **argv)
+{
+ int err = 0;
+ pmdaInterface desc;
+
+ __pmSetProgname(argv[0]);
+ _isDSO = 0;
+
+#if defined(BUG_5)
+ /* we don't grok PMDA_INTERFACE_4 ... */
+ pmdaDaemon(&desc, 4, pmProgname, BROKEN, _logFile,
+ _helpText);
+#elif defined(VERSION_1)
+ pmdaDaemon(&desc, PMDA_PROTOCOL_2, pmProgname, BROKEN, _logFile,
+ _helpText);
+#else
+ pmdaDaemon(&desc, PMDA_INTERFACE_2, pmProgname, BROKEN, _logFile,
+ _helpText);
+#endif
+
+ if (desc.status != 0) {
+ fprintf(stderr, "pmdaDaemon() failed!\n");
+ exit(1);
+ }
+
+ if (pmdaGetOpt(argc, argv, "D:d:h:i:l:pu:6:", &desc, &err) != EOF)
+ err++;
+
+ if (err)
+ usage();
+
+ pmdaOpenLog(&desc);
+ broken_init(&desc);
+ pmdaConnect(&desc);
+ pmdaMain(&desc);
+
+ exit(0);
+}
diff --git a/qa/pmdas/broken/broken_pmns b/qa/pmdas/broken/broken_pmns
new file mode 100644
index 0000000..926ab3f
--- /dev/null
+++ b/qa/pmdas/broken/broken_pmns
@@ -0,0 +1,36 @@
+/*
+ * Metrics for a broken PMDA
+ */
+
+broken {
+ valid
+ bad
+ no
+ bogus
+}
+
+broken.valid {
+ one BROKEN:0:0
+ two BROKEN:0:1
+ three BROKEN:0:7
+}
+
+broken.bad {
+ type BROKEN:0:5
+ semantics BROKEN:1:1
+ scale BROKEN:1:2
+ indom BROKEN:1:4
+}
+
+broken.no {
+ fetch BROKEN:0:9
+ help BROKEN:0:10
+ shorthelp BROKEN:0:11
+ longhelp BROKEN:0:12
+ instfetch BROKEN:0:13
+ instances BROKEN:0:14
+}
+
+broken.bogus {
+ one BROKEN:0:2
+}
diff --git a/qa/pmdas/broken/domain.h b/qa/pmdas/broken/domain.h
new file mode 100644
index 0000000..3de61ee
--- /dev/null
+++ b/qa/pmdas/broken/domain.h
@@ -0,0 +1 @@
+#define BROKEN 249
diff --git a/qa/pmdas/dynamic/GNUmakefile b/qa/pmdas/dynamic/GNUmakefile
new file mode 100644
index 0000000..ef4e8f4
--- /dev/null
+++ b/qa/pmdas/dynamic/GNUmakefile
@@ -0,0 +1,29 @@
+#
+# Copyright (c) 2012 Red Hat.
+#
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pmdas/dynamic
+
+CFILES = dynamic.c
+CMDTARGET = pmdadynamic
+TARGETS = $(LIBTARGET) $(CMDTARGET)
+MYFILES = domain.h help pmns root
+MYSCRIPTS = Install Remove
+LSRCFILES = $(MYSCRIPTS) $(MYFILES) GNUmakefile.install
+LDIRT = help.pag help.dir
+
+LLDFLAGS = $(PCP_LIBS)
+LLDLIBS = $(PCP_PMDALIB)
+
+default default_pcp setup: $(TARGETS)
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CFILES) $(MYFILES) $(TESTDIR)
+ $(INSTALL) -m 755 $(MYSCRIPTS) $(TARGETS) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+include $(BUILDRULES)
diff --git a/qa/pmdas/dynamic/GNUmakefile.install b/qa/pmdas/dynamic/GNUmakefile.install
new file mode 100644
index 0000000..5606aef
--- /dev/null
+++ b/qa/pmdas/dynamic/GNUmakefile.install
@@ -0,0 +1,39 @@
+#!gmake
+#
+# Copyright (c) 2009 Aconex. All Rights Reserved.
+#
+
+SHELL = sh
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+include $(PCP_INC_DIR)/builddefs
+
+# remove -Lpath and -Ipath options from builddefs CFLAGS value
+#
+PCP_LIBS =
+TMP := $(CFLAGS:-I%=)
+ifdef PCP_DIR
+# put -Ipath and -Lpath back but use paths for run-time environment
+#
+CFLAGS = $(TMP) -I$(PCP_INC_DIR)/..
+LDFLAGS = -L$(PCP_LIB_DIR)
+else
+CFLAGS = $(TMP)
+endif
+
+CFILES = dynamic.c
+CMDTARGET = pmdadynamic
+TARGETS = $(LIBTARGET) $(CMDTARGET)
+LDIRT = *.log help.dir help.pag
+
+LLDLIBS = -lpcp_pmda -lpcp $(LIB_FOR_MATH) $(LIB_FOR_DLOPEN) $(LIB_FOR_PTHREADS)
+
+default default_pcp setup:: $(TARGETS)
+
+install install_pcp:
+
+include $(PCP_INC_DIR)/buildrules
diff --git a/qa/pmdas/dynamic/Install b/qa/pmdas/dynamic/Install
new file mode 100755
index 0000000..17eec23
--- /dev/null
+++ b/qa/pmdas/dynamic/Install
@@ -0,0 +1,16 @@
+#!/bin/sh
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+. /etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+PCP_PMDAS_DIR=${PCP_VAR_DIR}/testsuite/pmdas
+
+iam=dynamic
+dso_opt=false
+pmda_interface=4
+
+pmdaSetup
+pmdaInstall
+exit 0
diff --git a/qa/pmdas/dynamic/Remove b/qa/pmdas/dynamic/Remove
new file mode 100755
index 0000000..c29b0a7
--- /dev/null
+++ b/qa/pmdas/dynamic/Remove
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Remove the dynamic PMDA
+#
+
+. /etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+iam=dynamic
+pmdaSetup
+pmdaRemove
+exit 0
diff --git a/qa/pmdas/dynamic/domain.h b/qa/pmdas/dynamic/domain.h
new file mode 100644
index 0000000..b17087b
--- /dev/null
+++ b/qa/pmdas/dynamic/domain.h
@@ -0,0 +1 @@
+#define DYNAMIC 247
diff --git a/qa/pmdas/dynamic/dynamic.c b/qa/pmdas/dynamic/dynamic.c
new file mode 100644
index 0000000..05c73ec
--- /dev/null
+++ b/qa/pmdas/dynamic/dynamic.c
@@ -0,0 +1,420 @@
+/*
+ * Dynamic PMDA for testing dynamic indom support
+ *
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <syslog.h>
+#include <errno.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+#include "domain.h"
+
+/*
+ * Dynamic PMDA
+ *
+ * This PMDA has several metrics with a single dynamic indom.
+ * This indom can be controlled by several storable metrics.
+ *
+ * Metrics
+ *
+ * dynamic.numinst - number of instances in the indom right now
+ * dynamic.discrete - discrete metric
+ * dynamic.instant - instantaneous metric
+ * dynamic.counter - counter metric
+ * dynamic.control.add - add an instance
+ * dynamic.control.del - delete an instance
+ *
+ */
+
+/* data and function prototypes for dynamic instance domain handling */
+struct Dynamic {
+ int id;
+ char name[16];
+ unsigned counter;
+};
+
+/*
+ * list of instances
+ */
+
+static struct Dynamic *insts = NULL;
+static pmdaInstid *instids = NULL;
+static unsigned numInsts = 0;
+static unsigned sizeInsts = 0;
+
+/*
+ * list of instance domains
+ */
+
+static pmdaIndom indomtab[] = {
+#define DYNAMIC_INDOM 0
+ { DYNAMIC_INDOM, 0, NULL }
+};
+
+/*
+ * all metrics supported in this PMDA - one table entry for each
+ */
+
+static pmdaMetric metrictab[] = {
+/* numinsts */
+ { NULL,
+ { PMDA_PMID(0,0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ PMDA_PMUNITS(0,0,0,0,0,0) }, },
+/* discrete */
+ { NULL,
+ { PMDA_PMID(0,1), PM_TYPE_STRING, DYNAMIC_INDOM, PM_SEM_DISCRETE,
+ PMDA_PMUNITS(0,0,0,0,0,0) }, },
+/* instant */
+ { NULL,
+ { PMDA_PMID(0,2), PM_TYPE_U32, DYNAMIC_INDOM, PM_SEM_INSTANT,
+ PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
+/* counter */
+ { NULL,
+ { PMDA_PMID(0,3), PM_TYPE_U32, DYNAMIC_INDOM, PM_SEM_COUNTER,
+ PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
+/* control.add */
+ { NULL,
+ { PMDA_PMID(1,4), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ PMDA_PMUNITS(0,0,0,0,0,0) }, },
+/* control.del */
+ { NULL,
+ { PMDA_PMID(1,5), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ PMDA_PMUNITS(0,0,0,0,0,0) }, },
+};
+
+/*
+ * callback provided to pmdaFetch
+ */
+static int
+dynamic_fetchCallBack(pmdaMetric *mdesc, unsigned int inst, pmAtomValue *atom)
+{
+ __pmID_int *idp = (__pmID_int *)&(mdesc->m_desc.pmid);
+
+ if (inst != PM_IN_NULL &&
+ !(idp->cluster == 0 && idp->item >= 1 && idp->item <= 3))
+ return PM_ERR_INST;
+
+ __pmNotifyErr(LOG_DEBUG, "dynamic_fetch: %d.%d[%d]\n",
+ idp->cluster, idp->item, inst);
+
+ if (idp->cluster == 0) {
+ switch (idp->item) {
+ case 0: /* numinst */
+ atom->ul = numInsts;
+ break;
+
+ case 1: /* discrete */
+ if (inst < sizeInsts)
+ if (insts[inst].id >= 0)
+ atom->cp = insts[inst].name;
+ else
+ return PM_ERR_INST;
+ else
+ return PM_ERR_INST;
+ break;
+
+ case 2: /* instant */
+ if (inst < sizeInsts)
+ if (insts[inst].id >= 0)
+ atom->ul = insts[inst].counter;
+ else
+ return PM_ERR_INST;
+ else
+ return PM_ERR_INST;
+ break;
+
+ case 3: /* counter */
+ if (inst < sizeInsts)
+ if (insts[inst].id >= 0)
+ atom->ul = insts[inst].counter;
+ else
+ return PM_ERR_INST;
+ else
+ return PM_ERR_INST;
+ break;
+
+ default:
+ return PM_ERR_PMID;
+ }
+ }
+ else if (idp->cluster == 1) { /* dynamic.control */
+ switch(idp->item) {
+ case 4: /* add */
+ atom->ul = sizeInsts;
+ break;
+
+ case 5: /* del */
+ atom->ul = sizeInsts - numInsts;
+ break;
+
+ default:
+ return PM_ERR_PMID;
+ }
+ }
+ else
+ return PM_ERR_PMID;
+
+ return 1;
+}
+
+/*
+ * wrapper for pmdaFetch which increments the counters for each instance
+ */
+static int
+dynamic_fetch(int numpmid, pmID pmidlist[], pmResult **resp, pmdaExt *pmda)
+{
+ int i;
+
+ for (i = 0; i < sizeInsts; i++)
+ if (insts[i].id >= 0)
+ insts[i].counter += insts[i].id;
+
+ return pmdaFetch(numpmid, pmidlist, resp, pmda);
+}
+
+/*
+ * add or delete an instance
+ */
+/*ARGSUSED*/
+static int
+dynamic_store(pmResult *result, pmdaExt *pmda)
+{
+ int i;
+ int j;
+ int changed = 0;
+ int sts = 0;
+ int val;
+ pmValueSet *vsp = NULL;
+ __pmID_int *pmidp = NULL;
+
+ for (i = 0; i < result->numpmid; i++) {
+ vsp = result->vset[i];
+ pmidp = (__pmID_int *)&vsp->pmid;
+
+ if (pmidp->cluster == 1) { /* all storable metrics are cluster 1 */
+
+ switch (pmidp->item) {
+ case 4: /* add */
+
+ val = vsp->vlist[0].value.lval;
+ if (val < 0) {
+ sts = PM_ERR_SIGN;
+ }
+ else if (val < sizeInsts) {
+ if (insts[val].id >= 0) {
+ sts = PM_ERR_INST;
+ }
+ else {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ __pmNotifyErr(LOG_DEBUG,
+ "dynamic_store: Adding instance %d (size = %d)\n",
+ val, sizeInsts);
+#endif
+
+ insts[val].id = val;
+ insts[val].counter = 0;
+ numInsts++;
+ changed = 1;
+ }
+ }
+ else {
+ insts = (struct Dynamic*)realloc(insts, (val + 1) * sizeof(struct Dynamic));
+ if (insts == NULL) {
+ __pmNotifyErr(LOG_ERR,
+ "dynamic_store: Unable to realloc %d bytes\n",
+ (int)(val * sizeof(struct Dynamic)));
+ sizeInsts = 0;
+ numInsts = 0;
+ changed = 1;
+ sts = PM_ERR_TOOBIG;
+ }
+ else {
+ for (i = sizeInsts; i <= val; i++) {
+ insts[i].id = -1;
+ sprintf(insts[i].name, "%d", i);
+ insts[i].counter = 0;
+ }
+ insts[val].id = val;
+ changed = 1;
+ sizeInsts = val + 1;
+ numInsts++;
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ __pmNotifyErr(LOG_DEBUG,
+ "dynamic_store: Adding instance %d (size = %d)\n",
+ val, sizeInsts);
+#endif
+ }
+ }
+ break;
+
+ case 5: /* del */
+ val = vsp->vlist[0].value.lval;
+ if (val < 0) { /* delete all */
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ __pmNotifyErr(LOG_DEBUG,
+ "dynamic_store: Removing all instances\n");
+#endif
+
+ for (i = 0; i < sizeInsts; i++) {
+ insts[i].id = -1;
+ insts[i].counter = 0;
+ }
+ numInsts = 0;
+ changed = 1;
+ }
+ else if (val < sizeInsts) {
+ if (insts[val].id < 0) {
+ sts = PM_ERR_INST;
+ }
+ else {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ __pmNotifyErr(LOG_DEBUG,
+ "dynamic_store: Removing instance %d\n",
+ val);
+#endif
+ insts[val].id = -1;
+ insts[val].counter = 0;
+ changed = 1;
+ numInsts--;
+ }
+ }
+ else
+ sts = PM_ERR_INST;
+ break;
+
+ default:
+ sts = PM_ERR_PMID;
+ break;
+ }
+ }
+ else if (pmidp->cluster == 0 && pmidp->item <= 3) {
+ sts = -EACCES;
+ break;
+ }
+ else {
+ sts = PM_ERR_PMID;
+ break;
+ }
+ }
+
+ if (changed) {
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ __pmNotifyErr(LOG_DEBUG,
+ "dynamic_store: Resizing to %d instances\n",
+ numInsts);
+#endif
+
+ if (numInsts > 0) {
+ instids = (pmdaInstid *)realloc(instids,
+ numInsts * sizeof(pmdaInstid));
+ if (instids == NULL) {
+ __pmNotifyErr(LOG_ERR,
+ "dynamic_store: Could not realloc %d bytes\n",
+ (int)(numInsts * sizeof(pmdaInstid)));
+ sts = PM_ERR_TOOBIG;
+ }
+ else {
+ for (i = 0, j = 0; i < sizeInsts; i++) {
+ if (insts[i].id >= 0) {
+ instids[j].i_inst = insts[i].id;
+ instids[j].i_name = insts[i].name;
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL1)
+ __pmNotifyErr(LOG_DEBUG,
+ "dynamic_store: [%d] %d \"%s\"\n",
+ j, instids[j].i_inst,
+ instids[j].i_name);
+#endif
+
+ j++;
+ }
+ }
+ indomtab[DYNAMIC_INDOM].it_numinst = numInsts;
+ indomtab[DYNAMIC_INDOM].it_set = instids;
+ }
+ }
+ else {
+ indomtab[DYNAMIC_INDOM].it_numinst = 0;
+ indomtab[DYNAMIC_INDOM].it_set = NULL;
+ }
+ }
+
+ return sts;
+}
+
+/*
+ * Initialise the agent (both daemon and DSO).
+ */
+void
+dynamic_init(pmdaInterface *dp)
+{
+ if (dp->status != 0)
+ return;
+
+ dp->version.two.fetch = dynamic_fetch;
+ dp->version.two.store = dynamic_store;
+
+ pmdaSetFetchCallBack(dp, dynamic_fetchCallBack);
+
+ pmdaInit(dp, indomtab, sizeof(indomtab)/sizeof(indomtab[0]), metrictab,
+ sizeof(metrictab)/sizeof(metrictab[0]));
+}
+
+static void
+usage(void)
+{
+ fprintf(stderr, "Usage: %s [options]\n\n", pmProgname);
+ fputs("Options:\n"
+ " -d domain use domain (numeric) for metrics domain of PMDA\n"
+ " -l logfile write log into logfile rather than using default log name\n"
+ "\nExactly one of the following options may appear:\n"
+ " -i port expect PMCD to connect on given inet port (number or name)\n"
+ " -p expect PMCD to supply stdin/stdout (pipe)\n"
+ " -u socket expect PMCD to connect on given unix domain socket\n"
+ " -6 port expect PMCD to connect on given ipv6 port (number or name)\n",
+ stderr);
+ exit(1);
+}
+
+/*
+ * Set up the agent if running as a daemon.
+ */
+int
+main(int argc, char **argv)
+{
+ int sep = __pmPathSeparator();
+ int err = 0;
+ pmdaInterface dispatch;
+ char helppath[MAXPATHLEN];
+
+ __pmSetProgname(argv[0]);
+ snprintf(helppath, sizeof(helppath),
+ "%s%c" "testsuite" "%c" "pmdas" "%c" "dynamic" "%c" "help",
+ pmGetConfig("PCP_VAR_DIR"), sep, sep, sep, sep);
+ pmdaDaemon(&dispatch, PMDA_INTERFACE_4, pmProgname, DYNAMIC,
+ "dynamic.log", helppath);
+
+ if (pmdaGetOpt(argc, argv, "D:d:h:i:l:pu:6:?", &dispatch, &err) != EOF)
+ err++;
+
+ if (err)
+ usage();
+
+ pmdaOpenLog(&dispatch);
+ dynamic_init(&dispatch);
+ pmdaConnect(&dispatch);
+ pmdaMain(&dispatch);
+
+ exit(0);
+}
diff --git a/qa/pmdas/dynamic/help b/qa/pmdas/dynamic/help
new file mode 100644
index 0000000..110151e
--- /dev/null
+++ b/qa/pmdas/dynamic/help
@@ -0,0 +1,25 @@
+#
+# dynamic help file
+#
+
+@ dynamic.numinsts number of instances
+The number of instances currently being exported
+
+@ dynamic.discrete instance id as a string
+The instance identifier exported as a string
+
+@ dynamic.instant counter as a instaneous value
+The counter for the instance exported as an instaneous value
+
+@ dynamic.counter counter as a counter
+The counter for the instance exported as a counter
+
+@ dynamic.control.add add an instance
+Storing the instance id of an instance not currently exported
+will all that instance to the indom.
+
+@ dynamic.control.del delete an instance
+Storing the instance id of an instance that is currently being
+exported will remove that instance from the indom. Storing a negative
+number will cause all instances to be removed.
+
diff --git a/qa/pmdas/dynamic/pmns b/qa/pmdas/dynamic/pmns
new file mode 100644
index 0000000..aa81933
--- /dev/null
+++ b/qa/pmdas/dynamic/pmns
@@ -0,0 +1,18 @@
+/*
+ * Metrics for a dynamic PMDA
+ */
+
+#include <stdpmid>
+
+dynamic {
+ numinsts DYNAMIC:0:0
+ discrete DYNAMIC:0:1
+ instant DYNAMIC:0:2
+ counter DYNAMIC:0:3
+ control
+}
+
+dynamic.control {
+ add DYNAMIC:1:4
+ del DYNAMIC:1:5
+}
diff --git a/qa/pmdas/dynamic/root b/qa/pmdas/dynamic/root
new file mode 100644
index 0000000..22fccee
--- /dev/null
+++ b/qa/pmdas/dynamic/root
@@ -0,0 +1,5 @@
+root {
+ dynamic
+}
+
+#include "pmns"
diff --git a/qa/pmdas/slow/GNUmakefile b/qa/pmdas/slow/GNUmakefile
new file mode 100644
index 0000000..32e93dd
--- /dev/null
+++ b/qa/pmdas/slow/GNUmakefile
@@ -0,0 +1,37 @@
+#!gmake
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+IAM = slow
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pmdas/$(IAM)
+LSRCFILES = Install Remove pmda$(IAM).pl GNUmakefile.install
+LDIRT = domain.h root pmns *.log
+
+default default_pcp setup: check_domain
+
+include $(BUILDRULES)
+
+install: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 755 Install Remove $(TESTDIR)
+ $(INSTALL) -m 644 pmda$(IAM).pl $(TESTDIR)/pmda$(IAM).pl
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+install_pcp: install
+
+check_domain: $(TOPDIR)/src/pmns/stdpmid
+ $(DOMAIN_PERLRULE)
diff --git a/qa/pmdas/slow/GNUmakefile.install b/qa/pmdas/slow/GNUmakefile.install
new file mode 100644
index 0000000..8340ba8
--- /dev/null
+++ b/qa/pmdas/slow/GNUmakefile.install
@@ -0,0 +1,5 @@
+default default_pcp setup:
+
+clobber clean:
+ rm -f domain.h domain.h.perl domain.h.save
+ rm -f pmns pmns.perl pmns.save
diff --git a/qa/pmdas/slow/Install b/qa/pmdas/slow/Install
new file mode 100755
index 0000000..6ef6ec9
--- /dev/null
+++ b/qa/pmdas/slow/Install
@@ -0,0 +1,38 @@
+#! /bin/sh
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# Install the slow PMDA
+#
+
+. $PCP_DIR/etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+iam=slow
+perl_opt=true
+daemon_opt=false
+forced_restart=false
+
+pmdaSetup
+$PCP_ECHO_PROG $PCP_ECHO_N "Startup delay (secs) [0]? $PCP_ECHO_C"
+read x
+[ -z "$x" ] && x=0
+$PCP_ECHO_PROG $PCP_ECHO_N "Fetch delay (secs) [0]? $PCP_ECHO_C"
+read y
+[ -z "$y" ] && y=0
+perl_args="$perl_args $x $y"
+[ "$x" -lt 0 ] && check_delay=`expr -1 \* $x + 2`
+[ "$x" -gt 0 ] && check_delay=`expr $x + 2`
+
+pmdaInstall
+exit 0
diff --git a/qa/pmdas/slow/Remove b/qa/pmdas/slow/Remove
new file mode 100755
index 0000000..5641c52
--- /dev/null
+++ b/qa/pmdas/slow/Remove
@@ -0,0 +1,25 @@
+#! /bin/sh
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# Remove the slow PMDA
+#
+
+. $PCP_DIR/etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+iam=slow
+
+pmdaSetup
+pmdaRemove
+exit 0
diff --git a/qa/pmdas/slow/pmdaslow.pl b/qa/pmdas/slow/pmdaslow.pl
new file mode 100644
index 0000000..7d8311f
--- /dev/null
+++ b/qa/pmdas/slow/pmdaslow.pl
@@ -0,0 +1,74 @@
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+use strict;
+use warnings;
+use PCP::PMDA;
+
+use vars qw( $pmda $start_delay $fetch_delay );
+
+sub slow_fetch_callback
+{
+ my ($cluster, $item, $inst) = @_;
+ my $metric_name = pmda_pmid_name($cluster, $item);
+
+ if ($fetch_delay > 0) {
+ sleep($fetch_delay);
+ }
+
+ $pmda->log("slow_fetch_callback $metric_name $cluster:$item ($inst)\n");
+
+ if ($inst != PM_IN_NULL) { return (PM_ERR_INST, 0); }
+ if (!defined($metric_name)) { return (PM_ERR_PMID, 0); }
+
+ return (17, 1);
+}
+
+# Usage: pmdaslow [startdelay [fetchdelay]]
+#
+$start_delay = 0;
+$start_delay = $ARGV[0] unless !defined($ARGV[0]);
+$fetch_delay = 0;
+$fetch_delay = $ARGV[1] unless !defined($ARGV[1]);
+
+#debug# print 'start delay: ',$start_delay,' sec\n';
+#debug# print 'fetch delay: ',$fetch_delay,' sec\n';
+
+$pmda = PCP::PMDA->new('slow', 243);
+$pmda->connect_pmcd unless $start_delay < 0;
+
+if ($start_delay < 0) {
+ sleep(-$start_delay);
+}
+if ($start_delay > 0) {
+ sleep($start_delay);
+}
+
+$pmda->add_metric(pmda_pmid(0,0), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'slow.seventeen', '', '');
+
+$pmda->set_fetch_callback(\&slow_fetch_callback);
+$pmda->set_user('pcp');
+$pmda->run;
+
+=pod
+
+=head1 NAME
+
+pmdaslow - QA PMDA
+
+=head1 DESCRIPTION
+
+DO NOT INSTALL THIS PMDA.
diff --git a/qa/pmdas/slow_python/GNUmakefile b/qa/pmdas/slow_python/GNUmakefile
new file mode 100644
index 0000000..20ffe63
--- /dev/null
+++ b/qa/pmdas/slow_python/GNUmakefile
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+IAM = slow_python
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pmdas/$(IAM)
+PYSCRIPT = pmda$(IAM).python
+LSRCFILES = Install Remove $(PYSCRIPT) GNUmakefile.install
+
+# Uses some domain as slow PMDA (QA never installs both together)
+#
+DOMAIN = SLOW
+
+LDIRT = domain.h $(IAM).log pmns.python
+
+default default_pcp setup: check_domain
+
+include $(BUILDRULES)
+
+install_pcp install: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 755 Install Remove $(TESTDIR)
+ $(INSTALL) -m 644 $(PYSCRIPT) $(TESTDIR)/$(PYSCRIPT)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+check_domain: $(TOPDIR)/src/pmns/stdpmid
+ $(DOMAIN_PYTHONRULE)
diff --git a/qa/pmdas/slow_python/GNUmakefile.install b/qa/pmdas/slow_python/GNUmakefile.install
new file mode 100644
index 0000000..62a9c73
--- /dev/null
+++ b/qa/pmdas/slow_python/GNUmakefile.install
@@ -0,0 +1,5 @@
+default default_pcp setup:
+
+clobber clean:
+ rm -f domain.h domain.h.python domain.h.save
+ rm -f pmns pmns.python pmns.save
diff --git a/qa/pmdas/slow_python/Install b/qa/pmdas/slow_python/Install
new file mode 100755
index 0000000..ab05eb8
--- /dev/null
+++ b/qa/pmdas/slow_python/Install
@@ -0,0 +1,38 @@
+#! /bin/sh
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# Install the slow PMDA
+#
+
+. $PCP_DIR/etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+iam=slow_python
+python_opt=true
+daemon_opt=false
+forced_restart=false
+
+pmdaSetup
+$PCP_ECHO_PROG $PCP_ECHO_N "Startup delay (secs) [0]? $PCP_ECHO_C"
+read x
+[ -z "$x" ] && x=0
+$PCP_ECHO_PROG $PCP_ECHO_N "Fetch delay (secs) [0]? $PCP_ECHO_C"
+read y
+[ -z "$y" ] && y=0
+python_args="$python_args $x $y"
+[ "$x" -lt 0 ] && check_delay=`expr -1 \* $x + 2`
+[ "$x" -gt 0 ] && check_delay=`expr $x + 2`
+
+pmdaInstall
+exit 0
diff --git a/qa/pmdas/slow_python/Remove b/qa/pmdas/slow_python/Remove
new file mode 100755
index 0000000..c3cbda8
--- /dev/null
+++ b/qa/pmdas/slow_python/Remove
@@ -0,0 +1,25 @@
+#! /bin/sh
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# Remove the slow PMDA
+#
+
+. $PCP_DIR/etc/pcp.env
+. $PCP_SHARE_DIR/lib/pmdaproc.sh
+
+iam=slow_python
+
+pmdaSetup
+pmdaRemove
+exit 0
diff --git a/qa/pmdas/slow_python/pmdaslow_python.python b/qa/pmdas/slow_python/pmdaslow_python.python
new file mode 100644
index 0000000..c1da8e8
--- /dev/null
+++ b/qa/pmdas/slow_python/pmdaslow_python.python
@@ -0,0 +1,84 @@
+'''
+Python implementation of the "slow_python" Performance Metrics Domain Agent.
+'''
+#
+# Copyright (c) 2013 Red Hat.
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import sys
+import os
+import time
+import ctypes
+from ctypes import c_int, POINTER, cast
+import cpmapi as c_api
+from pcp.pmda import PMDA, pmdaMetric
+from pcp.pmapi import pmUnits, pmContext as PCP
+
+class SlowPMDA(PMDA):
+ '''
+ A slow Performance Metrics Domain Agent.
+ DO NOT INSTALL - for QA ONLY.
+ '''
+
+ def slow_fetch_callback(self, cluster, item, inst):
+ global fetch_delay
+
+ if int(fetch_delay) < 0:
+ time.sleep(-1*int(fetch_delay))
+
+ if int(fetch_delay) > 0:
+ time.sleep(int(fetch_delay))
+
+ if cluster == 0 and item == 0:
+ return [13, 1]
+ return [c_api.PM_ERR_PMID, 0]
+
+ def __init__(self, name, domain):
+ global start_delay
+
+ PMDA.__init__(self, name, domain)
+
+ self.configfile = PCP.pmGetConfig('PCP_PMDAS_DIR')
+ self.configfile += '/' + name + '/' + name + '.conf'
+
+ if int(start_delay) > 0:
+ self.connect_pmcd()
+
+ if int(start_delay) < 0:
+ time.sleep(-1*int(start_delay))
+ if int(start_delay) > 0:
+ time.sleep(int(start_delay))
+
+ self.add_metric(name + '.thirteen', pmdaMetric(self.pmid(0, 0),
+ c_api.PM_TYPE_32, c_api.PM_INDOM_NULL, c_api.PM_SEM_INSTANT,
+ pmUnits(0, 0, 0, 0, 0, 0)))
+
+ self.set_fetch_callback(self.slow_fetch_callback)
+ self.set_user(PCP.pmGetConfig('PCP_USER'))
+
+# Usage: pmdaslow [startdelay [fetchdelay]]
+#
+start_delay = 0
+if len(sys.argv) >= 2:
+ start_delay = sys.argv[1]
+fetch_delay = 0
+if len(sys.argv) >= 3:
+ fetch_delay = sys.argv[2]
+
+#debug# print 'start delay: ', start_delay, ' sec'
+#debug# print 'fetch delay: ', fetch_delay, ' sec'
+
+if __name__ == '__main__':
+ SlowPMDA('slow_python', 242).run()
+
diff --git a/qa/pmlogconv/GNUmakefile b/qa/pmlogconv/GNUmakefile
new file mode 100755
index 0000000..dd6d225
--- /dev/null
+++ b/qa/pmlogconv/GNUmakefile
@@ -0,0 +1,44 @@
+#!gmake
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+# remove -Lpath and -Ipath options from builddefs CFLAGS value
+#
+PCP_LIBS =
+TMP := $(CFLAGS:-I%=)
+ifdef PCP_DIR
+# put -Ipath and -Lpath back but use paths for run-time environment
+#
+CFLAGS = $(TMP) -I$(PCP_INC_DIR)/..
+LDFLAGS = -L$(PCP_LIB_DIR)
+else
+CFLAGS = $(TMP)
+endif
+
+CFILES = pmlogconv.c logio.c libpcp.c
+LLDLIBS = -lpcp
+TARGET = pmlogconv
+
+LDIRT = $(TARGET)
+
+default: $(TARGET)
+
+$(TARGET): $(OBJECTS)
+
+include $(BUILDRULES)
+
+install: default
+ $(INSTALL) -m 755 $(TARGET) $(PCP_BIN_DIR)/$(TARGET)
+
+pmlogconv.o: pmlogconv.c
+logio.o: logio.c
+libpcp.o: libpcp.c
diff --git a/qa/pmlogconv/libpcp.c b/qa/pmlogconv/libpcp.c
new file mode 100644
index 0000000..44ebc59
--- /dev/null
+++ b/qa/pmlogconv/libpcp.c
@@ -0,0 +1,489 @@
+/*
+ * Copyright (c) 1995-2002,2004 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ */
+
+#include "pcp/pmapi.h"
+#include "pcp/impl.h"
+
+#define PM_LOG_VERS01 1
+
+/*
+ * Routines in this file are lifted from libpcp to allow obsolete
+ * functionality to be restored to read V1 archives ...
+ */
+
+/*
+ * logutil.c
+ */
+
+int
+__pmLogChkLabel(__pmLogCtl *lcp, FILE *f, __pmLogLabel *lp, int vol)
+{
+ int len;
+ int version = UNKNOWN_VERSION;
+ int xpectlen = sizeof(__pmLogLabel) + 2 * sizeof(len);
+ int n;
+
+ if (vol >= 0 && vol < lcp->l_numseen && lcp->l_seen[vol]) {
+ /* FastPath, cached result of previous check for this volume */
+ fseek(f, (long)(sizeof(__pmLogLabel) + 2*sizeof(int)), SEEK_SET);
+ return 0;
+ }
+
+ if (vol >= 0 && vol >= lcp->l_numseen) {
+ lcp->l_seen = (int *)realloc(lcp->l_seen, (vol+1)*(int)sizeof(lcp->l_seen[0]));
+ if (lcp->l_seen == NULL)
+ lcp->l_numseen = 0;
+ else {
+ int i;
+ for (i = lcp->l_numseen; i < vol; i++)
+ lcp->l_seen[i] = 0;
+ lcp->l_numseen = vol+1;
+ }
+ }
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, "__pmLogChkLabel: fd=%d vol=%d", fileno(f), vol);
+#endif
+
+ fseek(f, (long)0, SEEK_SET);
+ n = (int)fread(&len, 1, sizeof(len), f);
+ len = ntohl(len);
+ if (n != sizeof(len) || len != xpectlen) {
+ if (feof(f)) {
+ clearerr(f);
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, " file is empty\n");
+#endif
+ return PM_ERR_NODATA;
+ }
+ else {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, " header read -> %d (expect %d) or bad header len=%d (expected %d)\n",
+ n, (int)sizeof(len), len, xpectlen);
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ return -errno;
+ }
+ else
+ return PM_ERR_LABEL;
+ }
+ }
+
+ if ((n = (int)fread(lp, 1, sizeof(__pmLogLabel), f)) != sizeof(__pmLogLabel)) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, " bad label len=%d: expected %d\n",
+ n, (int)sizeof(__pmLogLabel));
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ return -errno;
+ }
+ else
+ return PM_ERR_LABEL;
+ }
+ else {
+ /* swab internal log label */
+ lp->ill_magic = ntohl(lp->ill_magic);
+ lp->ill_pid = ntohl(lp->ill_pid);
+ lp->ill_start.tv_sec = ntohl(lp->ill_start.tv_sec);
+ lp->ill_start.tv_usec = ntohl(lp->ill_start.tv_usec);
+ lp->ill_vol = ntohl(lp->ill_vol);
+ }
+
+ n = (int)fread(&len, 1, sizeof(len), f);
+ len = ntohl(len);
+ if (n != sizeof(len) || len != xpectlen) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, " trailer read -> %d (expect %d) or bad trailer len=%d (expected %d)\n",
+ n, (int)sizeof(len), len, xpectlen);
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ return -errno;
+ }
+ else
+ return PM_ERR_LABEL;
+ }
+
+ version = lp->ill_magic & 0xff;
+ if ((lp->ill_magic & 0xffffff00) != PM_LOG_MAGIC ||
+ (version != PM_LOG_VERS01 && version != PM_LOG_VERS02) ||
+ lp->ill_vol != vol) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, " version %d not supported\n", version);
+#endif
+ return PM_ERR_LABEL;
+ }
+ else {
+ if (__pmSetVersionIPC(fileno(f), version) < 0)
+ return -errno;
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, " [magic=%8x version=%d vol=%d pid=%d host=%s]\n",
+ lp->ill_magic, version, lp->ill_vol, (int)lp->ill_pid, lp->ill_hostname);
+#endif
+ }
+
+ if (vol >= 0 && vol < lcp->l_numseen)
+ lcp->l_seen[vol] = 1;
+
+ return version;
+}
+
+/*
+ * logmeta.c
+ */
+
+static char *
+StrTimeval(__pmTimeval *tp)
+{
+ if (tp == NULL) {
+ static char *null_timeval = "<null timeval>";
+ return null_timeval;
+ }
+ else {
+ static char sbuf[13];
+ static struct tm *tmp;
+ time_t t = tp->tv_sec;
+ tmp = localtime(&t);
+ sprintf(sbuf, "%02d:%02d:%02d.%03d", /* safe */
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec, tp->tv_usec/1000);
+ return sbuf;
+ }
+}
+
+static int
+addindom(__pmLogCtl *lcp, pmInDom indom, const __pmTimeval *tp, int numinst,
+ int *instlist, char **namelist, int *indom_buf, int allinbuf)
+{
+ __pmLogInDom *idp;
+ __pmHashNode *hp;
+ int sts;
+
+ if ((idp = (__pmLogInDom *)malloc(sizeof(__pmLogInDom))) == NULL)
+ return -errno;
+ idp->stamp = *tp; /* struct assignment */
+ idp->numinst = numinst;
+ idp->instlist = instlist;
+ idp->namelist = namelist;
+ idp->buf = indom_buf;
+ idp->allinbuf = allinbuf;
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA)
+ fprintf(stderr, "addindom( ..., %s, %s, numinst=%d)\n",
+ pmInDomStr(indom), StrTimeval((__pmTimeval *)tp), numinst);
+#endif
+
+
+ if ((hp = __pmHashSearch((unsigned int)indom, &lcp->l_hashindom)) == NULL) {
+ idp->next = NULL;
+ sts = __pmHashAdd((unsigned int)indom, (void *)idp, &lcp->l_hashindom);
+ }
+ else {
+ idp->next = (__pmLogInDom *)hp->data;
+ hp->data = (void *)idp;
+ sts = 0;
+ }
+ return sts;
+}
+
+/*
+ * load _all_ of the hashed pmDesc and __pmLogInDom structures from the metadata
+ * log file -- used at the initialization (NewContext) of an archive
+ * If version 2 then
+ * load all the names from the meta data and create l_pmns.
+ */
+int
+__pmLogLoadMeta(__pmLogCtl *lcp)
+{
+ int rlen;
+ int check;
+ pmDesc *dp;
+ int sts = 0;
+ __pmLogHdr h;
+ FILE *f = lcp->l_mdfp;
+ int version2 = ((lcp->l_label.ill_magic & 0xff) == PM_LOG_VERS02);
+ int numpmid = 0;
+ int n;
+
+ if (version2) {
+ if ((sts = __pmNewPMNS(&(lcp->l_pmns))) < 0) {
+ goto end;
+ }
+ }
+
+ fseek(f, (long)(sizeof(__pmLogLabel) + 2*sizeof(int)), SEEK_SET);
+ for ( ; ; ) {
+ n = (int)fread(&h, 1, sizeof(__pmLogHdr), f);
+
+ /* swab hdr */
+ h.len = ntohl(h.len);
+ h.type = ntohl(h.type);
+
+ if (n != sizeof(__pmLogHdr) || h.len <= 0) {
+ if (feof(f)) {
+ clearerr(f);
+ sts = 0;
+ goto end;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: header read -> %d: expected: %d\n",
+ n, (int)sizeof(__pmLogHdr));
+ }
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ sts = -errno;
+ }
+ else
+ sts = PM_ERR_LOGREC;
+ goto end;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: record len=%d, type=%d @ offset=%d\n",
+ h.len, h.type, (int)(ftell(f) - sizeof(__pmLogHdr)));
+ }
+#endif
+ rlen = h.len - (int)sizeof(__pmLogHdr) - (int)sizeof(int);
+ if (h.type == TYPE_DESC) {
+ numpmid++;
+ if ((dp = (pmDesc *)malloc(sizeof(pmDesc))) == NULL) {
+ sts = -errno;
+ goto end;
+ }
+ if ((n = (int)fread(dp, 1, sizeof(pmDesc), f)) != sizeof(pmDesc)) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: pmDesc read -> %d: expected: %d\n",
+ n, (int)sizeof(pmDesc));
+ }
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ sts = -errno;
+ }
+ else
+ sts = PM_ERR_LOGREC;
+ goto end;
+ }
+ else {
+ /* swab desc */
+ dp->type = ntohl(dp->type);
+ dp->sem = ntohl(dp->sem);
+ dp->indom = __ntohpmInDom(dp->indom);
+ dp->units = __ntohpmUnits(dp->units);
+ dp->pmid = __ntohpmID(dp->pmid);
+ }
+
+ if ((sts = __pmHashAdd((int)dp->pmid, (void *)dp, &lcp->l_hashpmid)) < 0)
+ goto end;
+
+ if (version2) {
+ char name[MAXPATHLEN];
+ int numnames;
+ int i;
+ int len;
+
+ /* read in the names & store in PMNS tree ... */
+ if ((n = (int)fread(&numnames, 1, sizeof(numnames), f)) !=
+ sizeof(numnames)) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: numnames read -> %d: expected: %d\n",
+ n, (int)sizeof(numnames));
+ }
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ sts = -errno;
+ }
+ else
+ sts = PM_ERR_LOGREC;
+ goto end;
+ }
+ else {
+ /* swab numnames */
+ numnames = ntohl(numnames);
+ }
+
+ for (i = 0; i < numnames; i++) {
+ if ((n = (int)fread(&len, 1, sizeof(len), f)) !=
+ sizeof(len)) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: len name[%d] read -> %d: expected: %d\n",
+ i, n, (int)sizeof(len));
+ }
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ sts = -errno;
+ }
+ else
+ sts = PM_ERR_LOGREC;
+ goto end;
+ }
+ else {
+ /* swab len */
+ len = ntohl(len);
+ }
+
+ if ((n = (int)fread(name, 1, len, f)) != len) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: name[%d] read -> %d: expected: %d\n",
+ i, n, len);
+ }
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ sts = -errno;
+ }
+ else
+ sts = PM_ERR_LOGREC;
+ goto end;
+ }
+ name[len] = '\0';
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: PMID: %s name: %s\n",
+ pmIDStr(dp->pmid), name);
+ }
+#endif
+
+ if ((sts = __pmAddPMNSNode(lcp->l_pmns, dp->pmid, name)) < 0) {
+ /*
+ * If we see a duplicate PMID, its a recoverable error.
+ * We wont be able to see all of the data in the log, but
+ * its better to provide access to some rather than none,
+ * esp. when only one or two metric IDs may be corrupted
+ * in this way (which we may not be interested in anyway).
+ */
+ if (sts != PM_ERR_PMID)
+ goto end;
+ sts = 0;
+ }
+ }/*for*/
+ }/*version2*/
+ }
+ else if (h.type == TYPE_INDOM) {
+ int *tbuf;
+ pmInDom indom;
+ __pmTimeval *when;
+ int numinst;
+ int *instlist;
+ char **namelist;
+ char *namebase;
+ int *stridx;
+ int i;
+ int k;
+ int allinbuf;
+
+ if ((tbuf = (int *)malloc(rlen)) == NULL) {
+ sts = -errno;
+ goto end;
+ }
+ if ((n = (int)fread(tbuf, 1, rlen, f)) != rlen) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: indom read -> %d: expected: %d\n",
+ n, rlen);
+ }
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ sts = -errno;
+ }
+ else
+ sts = PM_ERR_LOGREC;
+ goto end;
+ }
+
+ k = 0;
+ when = (__pmTimeval *)&tbuf[k];
+ when->tv_sec = ntohl(when->tv_sec);
+ when->tv_usec = ntohl(when->tv_usec);
+ k += sizeof(*when)/sizeof(int);
+ indom = __ntohpmInDom((unsigned int)tbuf[k++]);
+ numinst = ntohl(tbuf[k++]);
+ if (numinst > 0) {
+ instlist = &tbuf[k];
+ k += numinst;
+ stridx = &tbuf[k];
+#if defined(HAVE_32BIT_PTR)
+ namelist = (char **)stridx;
+ allinbuf = 1; /* allocation is all in tbuf */
+#else
+ allinbuf = 0; /* allocation for namelist + tbuf */
+ /* need to allocate to hold the pointers */
+ namelist = (char **)malloc(numinst*sizeof(char*));
+ if (namelist == NULL) {
+ sts = -errno;
+ goto end;
+ }
+#endif
+ k += numinst;
+ namebase = (char *)&tbuf[k];
+ for (i = 0; i < numinst; i++) {
+ instlist[i] = ntohl(instlist[i]);
+ namelist[i] = &namebase[ntohl(stridx[i])];
+ }
+ }
+ else {
+ /* no instances, or an error */
+ instlist = NULL;
+ namelist = NULL;
+ }
+ if ((sts = addindom(lcp, indom, when, numinst, instlist, namelist, tbuf, allinbuf)) < 0)
+ goto end;
+ }
+ else
+ fseek(f, (long)rlen, SEEK_CUR);
+ n = (int)fread(&check, 1, sizeof(check), f);
+ check = ntohl(check);
+ if (n != sizeof(check) || h.len != check) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOGMETA) {
+ fprintf(stderr, "__pmLogLoadMeta: trailer read -> %d or len=%d: expected %d @ offset=%d\n",
+ n, check, h.len, (int)(ftell(f) - sizeof(check)));
+ }
+#endif
+ if (ferror(f)) {
+ clearerr(f);
+ sts = -errno;
+ }
+ else
+ sts = PM_ERR_LOGREC;
+ goto end;
+ }
+ }/*for*/
+end:
+
+ fseek(f, (long)(sizeof(__pmLogLabel) + 2*sizeof(int)), SEEK_SET);
+
+ if (version2 && sts == 0) {
+ __pmFixPMNSHashTab(lcp->l_pmns, numpmid, 1);
+ }
+ return sts;
+}
diff --git a/qa/pmlogconv/logio.c b/qa/pmlogconv/logio.c
new file mode 100644
index 0000000..655d21b
--- /dev/null
+++ b/qa/pmlogconv/logio.c
@@ -0,0 +1,261 @@
+/*
+ * utils for pmlogconv
+ *
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* pinched from pmlogextract and libpcp */
+
+#include "pcp/pmapi.h"
+#include "pcp/impl.h"
+
+/*
+ * raw read of next log record - largely stolen from __pmLogRead in libpcp
+ */
+int
+_pmLogGet(__pmLogCtl *lcp, int vol, __pmPDU **pb)
+{
+ int head;
+ int tail;
+ int sts;
+ long offset;
+ char *p;
+ __pmPDU *lpb;
+ FILE *f;
+
+ if (vol == PM_LOG_VOL_META)
+ f = lcp->l_mdfp;
+ else
+ f = lcp->l_mfp;
+
+ offset = ftell(f);
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG) {
+ fprintf(stderr, "_pmLogGet: fd=%d vol=%d posn=%ld ",
+ fileno(f), vol, offset);
+ }
+#endif
+
+again:
+ sts = (int)fread(&head, 1, sizeof(head), f);
+ if (sts != sizeof(head)) {
+ if (sts == 0) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, "AFTER end\n");
+#endif
+ fseek(f, offset, SEEK_SET);
+ if (vol != PM_LOG_VOL_META) {
+ if (lcp->l_curvol < lcp->l_maxvol) {
+ if (__pmLogChangeVol(lcp, lcp->l_curvol+1) == 0) {
+ f = lcp->l_mfp;
+ goto again;
+ }
+ }
+ }
+ return PM_ERR_EOL;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, "Error: hdr fread=%d %s\n", sts, strerror(errno));
+#endif
+ if (sts > 0)
+ return PM_ERR_LOGREC;
+ else
+ return -errno;
+ }
+
+ if ((lpb = (__pmPDU *)malloc(ntohl(head))) == NULL) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, "Error: __pmFindPDUBuf(%d) %s\n",
+ (int)ntohl(head), strerror(errno));
+#endif
+ fseek(f, offset, SEEK_SET);
+ return -errno;
+ }
+
+ lpb[0] = head;
+ if ((sts = (int)fread(&lpb[1], 1, ntohl(head) - sizeof(head), f)) != ntohl(head) - sizeof(head)) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, "Error: data fread=%d %s\n", sts, strerror(errno));
+#endif
+ if (sts == 0) {
+ fseek(f, offset, SEEK_SET);
+ return PM_ERR_EOL;
+ }
+ else if (sts > 0)
+ return PM_ERR_LOGREC;
+ else
+ return -errno;
+ }
+
+
+ p = (char *)lpb;
+ memcpy(&tail, &p[ntohl(head) - sizeof(head)], sizeof(head));
+ if (head != tail) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, "Error: head-tail mismatch (%d-%d)\n",
+ (int)ntohl(head), (int)ntohl(tail));
+#endif
+ return PM_ERR_LOGREC;
+ }
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG) {
+ if (vol != PM_LOG_VOL_META || ntohl(lpb[1]) == TYPE_INDOM) {
+ fprintf(stderr, "@");
+ if (sts >= 0) {
+ struct timeval stamp;
+ __pmTimeval *tvp = (__pmTimeval *)&lpb[vol == PM_LOG_VOL_META ? 2 : 1];
+ stamp.tv_sec = ntohl(tvp->tv_sec);
+ stamp.tv_usec = ntohl(tvp->tv_usec);
+ __pmPrintStamp(stderr, &stamp);
+ }
+ else
+ fprintf(stderr, "unknown time");
+ }
+ fprintf(stderr, " len=%d (incl head+tail)\n", (int)ntohl(head));
+ }
+#endif
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_PDU) {
+ int i, j;
+ struct timeval stamp;
+ __pmTimeval *tvp = (__pmTimeval *)&lpb[vol == PM_LOG_VOL_META ? 2 : 1];
+ fprintf(stderr, "_pmLogGet");
+ if (vol != PM_LOG_VOL_META || ntohl(lpb[1]) == TYPE_INDOM) {
+ fprintf(stderr, " timestamp=");
+ stamp.tv_sec = ntohl(tvp->tv_sec);
+ stamp.tv_usec = ntohl(tvp->tv_usec);
+ __pmPrintStamp(stderr, &stamp);
+ }
+ fprintf(stderr, " " PRINTF_P_PFX "%p ... " PRINTF_P_PFX "%p", lpb, &lpb[ntohl(head)/sizeof(__pmPDU) - 1]);
+ fputc('\n', stderr);
+ fprintf(stderr, "%03d: ", 0);
+ for (j = 0, i = 0; j < ntohl(head)/sizeof(__pmPDU); j++) {
+ if (i == 8) {
+ fprintf(stderr, "\n%03d: ", j);
+ i = 0;
+ }
+ fprintf(stderr, "0x%x ", lpb[j]);
+ i++;
+ }
+ fputc('\n', stderr);
+ }
+#endif
+
+ *pb = lpb;
+ return 0;
+}
+
+int
+_pmLogPut(FILE *f, __pmPDU *pb)
+{
+ int rlen = ntohl(pb[0]);
+ int sts;
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG) {
+ fprintf(stderr, "_pmLogPut: fd=%d rlen=%d\n",
+ fileno(f), rlen);
+ }
+#endif
+
+ if ((sts = (int)fwrite(pb, 1, rlen, f)) != rlen) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_LOG)
+ fprintf(stderr, "_pmLogPut: fwrite=%d %s\n", sts, strerror(errno));
+#endif
+ return -errno;
+ }
+ return 0;
+}
+
+/*
+ * like __pmDecodeDesc but pmDesc in metadata not PDU
+ */
+typedef struct {
+ __pmLogHdr hdr;
+ pmDesc desc;
+} desc_t;
+
+void
+_pmUnpackDesc(__pmPDU *pdubuf, pmDesc *desc)
+{
+ desc_t *pp;
+
+ pp = (desc_t *)pdubuf;
+ desc->type = ntohl(pp->desc.type);
+ desc->sem = ntohl(pp->desc.sem);
+ desc->indom = __ntohpmInDom(pp->desc.indom);
+ desc->units = __ntohpmUnits(pp->desc.units);
+ desc->pmid = __ntohpmID(pp->desc.pmid);
+ return;
+}
+
+/*
+ * like rewrite_pdu() from pmlogger
+ */
+
+typedef struct {
+ pmID pmid;
+ int numval; /* no. of vlist els to follow, or error */
+ int valfmt; /* insitu or pointer */
+ __pmValue_PDU vlist[1]; /* zero or more */
+} vlist_t;
+
+typedef struct {
+ int hdr;
+ // __pmPDUHdr hdr;
+ __pmTimeval timestamp; /* when returned */
+ int numpmid; /* no. of PMIDs to follow */
+ __pmPDU data[1]; /* zero or more */
+} result_t;
+
+#define PM_ERR_BASE1 1000
+#define XLATE_ERR_1TO2(e) \
+ ((e) <= -PM_ERR_BASE1 ? (e)+PM_ERR_BASE1-PM_ERR_BASE2 : (e))
+
+void
+rewrite_pdu(__pmPDU *pb)
+{
+ result_t *pp = (result_t *)pb;
+ int vsize;
+ int numpmid;
+ int numval;
+ vlist_t *vlp;
+ int i;
+
+ numpmid = ntohl(pp->numpmid);
+ vsize = 0;
+ for (i = 0; i < numpmid; i++) {
+ vlp = (vlist_t *)&pp->data[vsize/sizeof(__pmPDU)];
+ numval = ntohl(vlp->numval);
+ vsize += sizeof(vlp->pmid) + sizeof(vlp->numval);
+ if (numval > 0)
+ vsize += sizeof(vlp->valfmt) + numval * sizeof(__pmValue_PDU);
+ if (numval < 0)
+ vlp->numval = htonl(XLATE_ERR_1TO2(numval));
+ }
+
+ return;
+}
+
diff --git a/qa/pmlogconv/pmlogconv.c b/qa/pmlogconv/pmlogconv.c
new file mode 100644
index 0000000..0387ec0
--- /dev/null
+++ b/qa/pmlogconv/pmlogconv.c
@@ -0,0 +1,354 @@
+/*
+ * pmlogconv - convert PCP archive logs from V1 to V2 format
+ */
+
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/param.h>
+#include "pcp/pmapi.h"
+#include "pcp/impl.h"
+
+#define LOG 0
+#define META 1
+
+typedef struct { /* input archive control */
+ int ctx;
+ char *name;
+ pmLogLabel label;
+ __pmPDU *pb[2];
+ int pick[2];
+ int eof[2];
+} inarch_t;
+
+static __pmLogCtl logctl; /* output archive control */
+
+static inarch_t inarch;
+static __pmTimeval current; /* most recently output timestamp */
+
+static __pmHashCtl pmid_done;
+
+static int exit_status = 0;
+
+extern int _pmLogGet(__pmLogCtl *, int, __pmPDU **);
+extern int _pmLogPut(FILE *, __pmPDU *);
+extern void _pmUnpackDesc(__pmPDU *, pmDesc *);
+extern void rewrite_pdu(__pmPDU *);
+
+/*
+ *
+ */
+void
+writelabel_metati(int do_rewind)
+{
+ if (do_rewind) rewind(logctl.l_tifp);
+ logctl.l_label.ill_vol = PM_LOG_VOL_TI;
+ __pmLogWriteLabel(logctl.l_tifp, &logctl.l_label);
+
+
+ if (do_rewind) rewind(logctl.l_mdfp);
+ logctl.l_label.ill_vol = PM_LOG_VOL_META;
+ __pmLogWriteLabel(logctl.l_mdfp, &logctl.l_label);
+}
+
+void
+writelabel_data(void)
+{
+ logctl.l_label.ill_vol = 0;
+ __pmLogWriteLabel(logctl.l_mfp, &logctl.l_label);
+}
+
+static void
+_report(FILE *fp)
+{
+ off_t here;
+ struct stat sbuf;
+
+ here = lseek(fileno(fp), 0L, SEEK_CUR);
+ fprintf(stderr, "Error occurred at byte offset %ld into a file of", here);
+ if (fstat(fileno(fp), &sbuf) < 0)
+ fprintf(stderr, ": stat: %s\n", strerror(errno));
+ else
+ fprintf(stderr, " %ld bytes.\n", sbuf.st_size);
+ fprintf(stderr, "The last record, and the remainder of this file will not be merged.\n");
+ exit_status = 1;
+}
+
+/*
+ * pick next archive record
+ * - if next metadata is pmDesc, output this
+ * - else choose youngest data or pmInDom metadata
+ * - if data and pmIndom have same timestamp, choose pmInDom
+ */
+static int
+nextrec(void)
+{
+ int sts;
+ int pick = PM_ERR_EOL;
+ __pmTimeval *this;
+ __pmLogCtl *lcp;
+ __pmContext *ctxp;
+
+ if (!inarch.eof[META]) {
+ if (inarch.pb[META] == (__pmPDU *)0) {
+ /* refill metadata buffer */
+ ctxp = __pmHandleToPtr(inarch.ctx);
+ lcp = ctxp->c_archctl->ac_log;
+ if ((sts = _pmLogGet(lcp, PM_LOG_VOL_META, &inarch.pb[META])) < 0) {
+ inarch.eof[META] = 1;
+ if (sts != PM_ERR_EOL) {
+ fprintf(stderr, "%s: Error: __pmLogRead[meta %s]: %s\n",
+ pmProgname, inarch.name, pmErrStr(sts));
+ _report(lcp->l_mdfp);
+ exit(1);
+ }
+ }
+ }
+ }
+
+ if (!inarch.eof[LOG]) {
+ if (inarch.pb[LOG] == (__pmPDU *)0) {
+ ctxp = __pmHandleToPtr(inarch.ctx);
+ lcp = ctxp->c_archctl->ac_log;
+ if ((sts = _pmLogGet(lcp, 0, &inarch.pb[LOG])) < 0) {
+ inarch.eof[LOG] = 1;
+ if (sts != PM_ERR_EOL) {
+ fprintf(stderr, "%s: Error: __pmLogRead[log %s]: %s\n",
+ pmProgname, inarch.name, pmErrStr(sts));
+ _report(lcp->l_mfp);
+ exit(1);
+ }
+ }
+ }
+ }
+
+ if (!inarch.eof[META] && ntohl(inarch.pb[META][1]) == TYPE_DESC) {
+ /* pmDesc entry, output this immediately */
+ pmDesc desc;
+ _pmUnpackDesc(inarch.pb[META], &desc);
+ if (__pmHashSearch((int)desc.pmid, &pmid_done) != (__pmHashNode *)0) {
+ /* already been processed from another log, skip this one */
+ fprintf(stderr, "Botch: pmDesc for pmid %s seen twice in input archive\n", pmIDStr(desc.pmid));
+ exit(1);
+ }
+ __pmHashAdd((int)desc.pmid, (void *)0, &pmid_done);
+ inarch.pick[META] = TYPE_DESC;
+ return 0;
+ }
+
+ if (!inarch.eof[LOG]) {
+ this = (__pmTimeval *)&inarch.pb[LOG][1];
+ inarch.pick[LOG] = 1;
+ pick = 0;
+ current.tv_sec = ntohl(this->tv_sec);
+ current.tv_usec = ntohl(this->tv_usec);
+ }
+
+ if (!inarch.eof[META]) {
+ this = (__pmTimeval *)&inarch.pb[META][2];
+ if (ntohl(this->tv_sec) < current.tv_sec ||
+ (ntohl(this->tv_sec) == current.tv_sec && ntohl(this->tv_usec) <= current.tv_usec)) {
+ inarch.pick[LOG] = 0;
+ inarch.pick[META] = TYPE_INDOM;
+ pick = 0;
+ current.tv_sec = ntohl(this->tv_sec);
+ current.tv_usec = ntohl(this->tv_usec);
+ }
+ }
+
+ return pick;
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ char *p;
+ int errflag = 0;
+ char *output;
+ char *pmnsfile = NULL;
+ int needti = 0;
+ off_t old_log_offset;
+ off_t new_log_offset;
+ off_t old_meta_offset;
+ off_t new_meta_offset;
+ extern char *optarg;
+ extern int optind;
+ extern int pmDebug;
+
+ /* trim cmd name of leading directory components */
+ pmProgname = argv[0];
+ for (p = pmProgname; *p; p++) {
+ if (*p == '/')
+ pmProgname = p+1;
+ }
+
+ while ((c = getopt(argc, argv, "D:n:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'n':
+ pmnsfile = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag != 0 || pmnsfile == NULL || optind != argc-2) {
+ fprintf(stderr,
+"Usage: %s [options] input-archive output-archive\n\
+\n\
+Options\n\
+ -D debug standard PCP debug flag\n\
+ -n pmnsfile PMNS to use (not optional)\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ fprintf(stderr, "%s: Error loading namespace: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ inarch.name = argv[optind];
+ if ((inarch.ctx = pmNewContext(PM_CONTEXT_ARCHIVE, inarch.name)) < 0) {
+ fprintf(stderr, "%s: Error: cannot open archive \"%s\": %s\n",
+ pmProgname, inarch.name, pmErrStr(inarch.ctx));
+ exit(1);
+ }
+ if ((sts = pmGetArchiveLabel(&inarch.label)) < 0) {
+ fprintf(stderr, "%s: Error: cannot get archive label record (%s): %s\n",
+ pmProgname, inarch.name, pmErrStr(sts));
+ exit(1);
+ }
+
+ inarch.pb[LOG] = inarch.pb[META] = (__pmPDU *)0;
+ inarch.eof[LOG] = inarch.eof[META] = 0;
+ inarch.pick[LOG] = inarch.pick[META] = 0;
+
+ output = argv[argc-1];
+ if ((sts = __pmLogCreate("", output, PM_LOG_VERS02, &logctl)) < 0) {
+ fprintf(stderr, "%s: Error: __pmLogCreate: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ logctl.l_label.ill_magic = PM_LOG_MAGIC | PM_LOG_VERS02;
+ logctl.l_label.ill_pid = inarch.label.ll_pid;
+ logctl.l_label.ill_start.tv_sec = inarch.label.ll_start.tv_sec;
+ logctl.l_label.ill_start.tv_usec = inarch.label.ll_start.tv_usec;
+ strcpy(logctl.l_label.ill_hostname, inarch.label.ll_hostname);
+ strcpy(logctl.l_label.ill_tz, inarch.label.ll_tz);
+ writelabel_metati(0);
+
+ /*
+ * do meta and log records at the same time ... in the case of an
+ * equal match, the log record is processed before the corresponding
+ * meta data
+ */
+ for ( ; ; ) {
+ if (nextrec() < 0)
+ break;
+
+ if (inarch.pick[LOG]) {
+ old_log_offset = ftell(logctl.l_mfp);
+ old_meta_offset = ftell(logctl.l_mdfp);
+ if (old_log_offset == 0) {
+ /* write label record for data file */
+ logctl.l_label.ill_start.tv_sec = current.tv_sec;
+ logctl.l_label.ill_start.tv_usec = current.tv_usec;
+ writelabel_data();
+ old_log_offset = ftell(logctl.l_mfp);
+ needti = 1;
+ }
+
+ /*
+ * ignore 2^31 check for vol switch on output archive ...
+ * if input archive is one volume, would have been unreadable
+ * if too large
+ * if input archive is multivolume, we create a single
+ * volume output, so there is a potential problem here ...
+ * TODO - revisit this issue only if a need arises
+ */
+
+ /* translate data record from V1 to V2 */
+ rewrite_pdu(inarch.pb[LOG]);
+
+ /* write data record out */
+ if ((sts = _pmLogPut(logctl.l_mfp, inarch.pb[LOG])) < 0) {
+ fprintf(stderr, "%s: Error: _pmLogPut: log data: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ /* free data record buffer */
+ free(inarch.pb[LOG]);
+ inarch.pb[LOG] = (__pmPDU *)0;
+ inarch.pick[LOG] = 0;
+
+ if (needti) {
+ fflush(logctl.l_mfp);
+ fflush(logctl.l_mdfp);
+ new_log_offset = ftell(logctl.l_mfp);
+ new_meta_offset = ftell(logctl.l_mdfp);
+ fseek(logctl.l_mfp, old_log_offset, SEEK_SET);
+ fseek(logctl.l_mdfp, old_meta_offset, SEEK_SET);
+ __pmLogPutIndex(&logctl, &current);
+ fseek(logctl.l_mfp, new_log_offset, SEEK_SET);
+ fseek(logctl.l_mdfp, new_log_offset, SEEK_SET);
+ needti = 0;
+ }
+ }
+
+ if (inarch.pick[META]) {
+ /* write metadata out and force temporal index update if indom */
+ if (inarch.pick[META] == TYPE_DESC) {
+ pmDesc desc;
+ char **names = NULL;
+ int numnames;
+ char *myname;
+
+ _pmUnpackDesc(inarch.pb[META], &desc);
+ if ((numnames = pmNameAll(desc.pmid, &names)) < 0) {
+ myname = strdup(pmIDStr(desc.pmid));
+ }
+ else {
+ myname = strdup(names[0]);
+ free(names);
+ }
+ __pmLogPutDesc(&logctl, &desc, 1, &myname);
+ free(myname);
+ }
+ else {
+ if ((sts = _pmLogPut(logctl.l_mdfp, inarch.pb[META])) < 0) {
+ fprintf(stderr, "%s: Error: _pmLogPut: meta data: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ needti = 1;
+ }
+ /* free metadata buffer */
+ free(inarch.pb[META]);
+ inarch.pb[META] = (__pmPDU *)0;
+ inarch.pick[META] = 0;
+ }
+ }
+
+ writelabel_metati(1);
+
+ exit(exit_status);
+}
diff --git a/qa/qa_hosts.master b/qa/qa_hosts.master
new file mode 100644
index 0000000..f30422a
--- /dev/null
+++ b/qa/qa_hosts.master
@@ -0,0 +1,92 @@
+#
+# master version of likely victim hosts for PCP QA
+#
+# entries are fully qualified domain names, in any order
+# the only pre-requisite is that they be running some version of PCP.
+#
+
+# Kenj Section
+bozo.localdomain
+bozo-vm.localdomain
+bozo-laptop.localdomain
+comma.localdomain
+fuji.localdomain
+colleens-imac.local
+vm00.localdomain
+vm01.localdomain
+vm02.localdomain
+vm03.localdomain
+emma.localdomain
+
+# SGI Section
+grundy.sgi.com
+
+# Nathans Section
+smash.scott.net.au
+verge.scott.net.au
+slick.scott.net.au
+sweet.scott.net.au
+cloud.scott.net.au
+crack.scott.net.au
+crunch.scott.net.au
+bounce.scott.net.au
+splash.scott.net.au
+boing.scott.net.au
+splat.scott.net.au
+
+# sort control lines
+# each line here is a specification that includes the keyword #order and
+# then two or more strings in the style of fgrep
+#
+# the first string is used to attempt a match with the fully qualified
+# domain name of the host host running the QA
+#
+# subsequent strings select entries from the list of hosts above in order
+# of increasing preference ... any unmatched hosts are not included
+
+# tag QA host? 1st choice 2nd choice ...
+# SGI Section
+#order .melbourne.sgi .melbourne.sgi .engr.sgi.com
+#order .engr.sgi.com .engr.sgi.com .melbourne.sgi
+#order .americas.sgi.com .americas.sgi.com .engr.sgi.com .melbourne.sgi
+#order .sgi.com .sgi.com
+# Nathans Section
+#order .scott.net.au .scott.net.au
+# Kenj Section
+#order bozo .localdomain
+#order bozo-vm .localdomain
+#order bozo-laptop .localdomain
+#order colleens-imac.local .local
+#order comma .localdomain
+#order emma .localdomain
+#order fuji .localdomain
+#order vm00 .localdomain
+#order vm01 .localdomain
+#order vm02 .localdomain
+#order vm03 .localdomain
+#order vm04 .localdomain
+#order vm05 .localdomain
+#order vm06 .localdomain
+#order vm07 .localdomain
+#order vm08 .localdomain
+#order vm09 .localdomain
+#order vm10 .localdomain
+#order vm11 .localdomain
+#order vm12 .localdomain
+#order vm13 .localdomain
+#order vm14 .localdomain
+#order vm15 .localdomain
+#order vm16 .localdomain
+#order vm17 .localdomain
+#order vm18 .localdomain
+#order vm19 .localdomain
+#order vm20 .localdomain
+#order vm21 .localdomain
+#order vm22 .localdomain
+#order vm23 .localdomain
+#order vm24 .localdomain
+#order vm25 .localdomain
+#order vm26 .localdomain
+#order vm27 .localdomain
+#order vm28 .localdomain
+#order vm29 .localdomain
diff --git a/qa/qt/GNUmakefile b/qa/qt/GNUmakefile
new file mode 100644
index 0000000..151ed77
--- /dev/null
+++ b/qa/qt/GNUmakefile
@@ -0,0 +1,22 @@
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt
+SUBDIRS = qmc_context qmc_desc qmc_dynamic qmc_event qmc_format \
+ qmc_group qmc_hosts qmc_indom qmc_metric qmc_source
+LSRCFILES = GNUmakefile.install setup-executables
+
+default setup default_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+install install_pcp: $(SUBDIRS)
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 755 setup-executables $(TESTDIR)/setup-executables
+ $(SUBDIRS_MAKERULE)
+
+include $(BUILDRULES)
diff --git a/qa/qt/GNUmakefile.install b/qa/qt/GNUmakefile.install
new file mode 100644
index 0000000..42bf49a
--- /dev/null
+++ b/qa/qt/GNUmakefile.install
@@ -0,0 +1,41 @@
+#!gmake
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2010 Aconex. All Rights Reserved.
+#
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+# special variant of SUBDIRS_MAKERULE for running QA in the tree
+#
+SUBDIRS_MAKERULE = \
+ @for d in `echo $^ `; do \
+ if test -d "$$d" ; then \
+ $(ECHO) === $$d ===; \
+ if test -f "$$d/GNUmakefile.install"; then \
+ $(MAKE) -C $$d -f GNUmakefile.install $@ || exit $$?; \
+ else \
+ $(MAKE) -C $$d $@ || exit $$?; \
+ fi; \
+ fi; \
+ done
+
+SUBDIRS = qmc_context qmc_desc qmc_dynamic qmc_event qmc_format \
+ qmc_group qmc_hosts qmc_indom qmc_metric qmc_source
+
+default default_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+setup: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+install install_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_context/GNUmakefile b/qa/qt/qmc_context/GNUmakefile
new file mode 100644
index 0000000..ee55cb0
--- /dev/null
+++ b/qa/qt/qmc_context/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_context
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_context/GNUmakefile.install b/qa/qt/qmc_context/GNUmakefile.install
new file mode 100644
index 0000000..d173e64
--- /dev/null
+++ b/qa/qt/qmc_context/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_context
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_context/qmc_context.cpp b/qa/qt/qmc_context/qmc_context.cpp
new file mode 100644
index 0000000..d7b7909
--- /dev/null
+++ b/qa/qt/qmc_context/qmc_context.cpp
@@ -0,0 +1,241 @@
+//
+// Test QmcContext class
+//
+
+#include <QTextStream>
+#include <qmc_context.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+int
+main(int argc, char* argv[])
+{
+ int fail = 0, sts = 0;
+ int c;
+ char buf[MAXHOSTNAMELEN];
+ QString source;
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ fail = 1;
+ }
+ else {
+ pmDebug |= sts;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (fail) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ }
+
+ (void)gethostname(buf, MAXHOSTNAMELEN);
+ buf[MAXHOSTNAMELEN-1] = '\0';
+
+ fprintf(stderr, "*** Simple connection ***\n");
+ source = QString("oview-short");
+
+ QmcSource *src1 = QmcSource::getSource(PM_CONTEXT_ARCHIVE, source, false);
+ if (src1->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to \"%s\": %s\n",
+ pmProgname, (const char *)source.toAscii(),
+ pmErrStr(src1->status()));
+ pmflush();
+ fail = 1;
+ }
+
+ QmcContext context1(src1);
+ if (context1.handle() < 0) {
+ pmflush();
+ fail = 1;
+ }
+
+ context1.dump(cout);
+
+ pmID pmid;
+ uint_t indomIndex;
+
+ fprintf(stderr, "\n*** Cacheing of descriptors and indoms ***\n");
+ QmcDesc *desc;
+ QmcIndom *indom = NULL;
+
+ sts = context1.lookupInDom("hinv.ncpu", indomIndex);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.ncpu: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+ else {
+ sts = context1.lookupPMID("hinv.ncpu", pmid);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.ncpu PMID: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+ desc = &context1.desc(pmid);
+ if (desc->status() < 0) {
+ pmprintf("%s: Error: hinv.ncpu descriptor: %s\n",
+ pmProgname, pmErrStr(desc->status()));
+ pmflush();
+ fail = 1;
+ }
+ else if (indomIndex < UINT_MAX) {
+ pmprintf("%s: Error: hinv.ncpu indom is not NULL\n",
+ pmProgname);
+ pmflush();
+ fail = 1;
+ }
+ }
+
+ sts = context1.lookupInDom("hinv.cputype", indomIndex);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.cputype: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+ else {
+ sts = context1.lookupPMID("hinv.cputype", pmid);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.cputype PMID: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+ desc = &context1.desc(pmid);
+ indom = &context1.indom(indomIndex);
+ if (desc->status() < 0) {
+ pmprintf("%s: Error: hinv.cputype descriptor: %s\n",
+ pmProgname, pmErrStr(desc->status()));
+ pmflush();
+ fail = 1;
+ }
+ else if (indom->status() < 0) {
+ pmprintf("%s: Error: hinv.cputype indom: %s\n",
+ pmProgname, pmErrStr(indom->status()));
+ pmflush();
+ fail = 1;
+ }
+ }
+
+ QmcIndom *indom2;
+
+ sts = context1.lookupInDom("hinv.map.cpu", indomIndex);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.map.cpu: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+ else {
+ sts = context1.lookupPMID("hinv.map.cpu", pmid);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.map.cpu PMID: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+
+ desc = &context1.desc(pmid);
+ indom2 = &context1.indom(indomIndex);
+
+ if (desc->status() < 0) {
+ pmprintf("%s: Error: hinv.map.cpu descriptor: %s\n",
+ pmProgname, pmErrStr(desc->status()));
+ pmflush();
+ fail = 1;
+ }
+ else if (indom2->status() < 0) {
+ pmprintf("%s: Error: hinv.map.cpu indom: %s\n",
+ pmProgname, pmErrStr(indom2->status()));
+ pmflush();
+ fail = 1;
+ }
+ else if (indom != indom2) {
+ pmprintf("%s: Error: hinv.cputype and hinv.map.cpu indoms are not the same\n",
+ pmProgname);
+ pmflush();
+ fail = 1;
+ }
+ }
+
+ sts = context1.lookupInDom("hinv.ncpu", indomIndex);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.ncpu: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+ else {
+ sts = context1.lookupPMID("hinv.ncpu", pmid);
+ if (sts < 0) {
+ pmprintf("%s: Error: hinv.ncpu PMID: %s\n",
+ pmProgname, pmErrStr(sts));
+ pmflush();
+ fail = 1;
+ }
+
+ desc = &context1.desc(pmid);
+
+ if (desc->status() < 0) {
+ pmprintf("%s: Error: hinv.ncpu descriptor: %s\n",
+ pmProgname, pmErrStr(desc->status()));
+ pmflush();
+ fail = 1;
+ }
+ else if (indomIndex < UINT_MAX) {
+ pmprintf("%s: Error: hinv.ncpu indom is not NULL\n",
+ pmProgname);
+ pmflush();
+ fail = 1;
+ }
+ }
+
+ context1.dump(cout);
+
+ fprintf(stderr, "\n*** Bad Context ***\n");
+ source = QString("no-such-host");
+ QmcSource *src2 = QmcSource::getSource(PM_CONTEXT_HOST, source);
+
+ if (src2->status() >= 0) {
+ pmprintf("%s: Error: Able to create context to \"%s\": %s\n",
+ pmProgname, (const char *)source.toAscii(),
+ pmErrStr(src1->status()));
+ pmflush();
+ fail = 1;
+ }
+
+ QmcContext context2(src2);
+
+ if (context2.handle() >= 0) {
+ pmprintf("%s: Error: Created a valid context to an invalid host\n",
+ pmProgname);
+ fail = 1;
+ }
+
+ pmflush();
+
+ context2.dump(cout);
+
+ fprintf(stderr, "\n*** Exiting ***\n");
+
+ pmflush();
+ return fail;
+}
diff --git a/qa/qt/qmc_context/qmc_context.pro b/qa/qt/qmc_context/qmc_context.pro
new file mode 100644
index 0000000..89d4d06
--- /dev/null
+++ b/qa/qt/qmc_context/qmc_context.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_context.cpp
+CONFIG += qt console warn_on
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_desc/GNUmakefile b/qa/qt/qmc_desc/GNUmakefile
new file mode 100644
index 0000000..f535da2
--- /dev/null
+++ b/qa/qt/qmc_desc/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_desc
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_desc/GNUmakefile.install b/qa/qt/qmc_desc/GNUmakefile.install
new file mode 100644
index 0000000..42a3c92
--- /dev/null
+++ b/qa/qt/qmc_desc/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_desc
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_desc/qmc_desc.cpp b/qa/qt/qmc_desc/qmc_desc.cpp
new file mode 100644
index 0000000..fcce0b4
--- /dev/null
+++ b/qa/qt/qmc_desc/qmc_desc.cpp
@@ -0,0 +1,102 @@
+//
+// Test QmcDesc class
+//
+
+#include <QTextStream>
+#include <qmc_source.h>
+#include <qmc_desc.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+ char buf[MAXHOSTNAMELEN];
+ QString source;
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ (void)gethostname(buf, MAXHOSTNAMELEN);
+ buf[MAXHOSTNAMELEN-1] = '\0';
+ source = buf;
+
+ fprintf(stderr,"*** Compare metric descriptor with pminfo output ***\n");
+ QmcSource *src = QmcSource::getSource(PM_CONTEXT_HOST, source, false);
+
+ if (src->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to \"%s\": %s\n",
+ pmProgname, buf, pmErrStr(src->status()));
+ pmflush();
+ return 1;
+ }
+
+ /* Linux hinv.ncpu PMID: 60.0.32 */
+ pmID hinv_ncpu = pmid_build(60, 0, 32);
+ QmcDesc hinv_ncpu_pmc(hinv_ncpu);
+ pmDesc hinv_ncpu_desc = hinv_ncpu_pmc.desc();
+
+ if (hinv_ncpu_pmc.status() < 0) {
+ pmprintf("\n%s: Error: hinv.ncpu: %s\n",
+ pmProgname, pmErrStr(hinv_ncpu_pmc.status()));
+ pmflush();
+ sts = 1;
+ }
+
+ printf("hinv.ncpu\n");
+ __pmPrintDesc(stdout, &hinv_ncpu_desc);
+ fflush(stdout);
+ fflush(stderr);
+ if (system("pminfo -d hinv.ncpu") < 0) {
+ pmprintf("%s: Error: Unable to run pminfo\n", pmProgname);
+ pmflush();
+ sts = 1;
+ }
+ fflush(stdout);
+ fflush(stderr);
+
+ fprintf(stderr, "\n*** Fetch a bad descriptor ***\n");
+ pmID bad = pmid_build(42,42,42);
+ QmcDesc bad_pmc(bad);
+
+ if (bad_pmc.status() < 0) {
+ pmprintf("%s: Error: Bogus metric: %s\n",
+ pmProgname, pmErrStr(bad_pmc.status()));
+ pmflush();
+ }
+ else
+ sts = 1;
+
+ return sts;
+}
+
diff --git a/qa/qt/qmc_desc/qmc_desc.pro b/qa/qt/qmc_desc/qmc_desc.pro
new file mode 100644
index 0000000..5d1e68d
--- /dev/null
+++ b/qa/qt/qmc_desc/qmc_desc.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_desc.cpp
+CONFIG += qt warn_on
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_dynamic/GNUmakefile b/qa/qt/qmc_dynamic/GNUmakefile
new file mode 100644
index 0000000..0ed50e6
--- /dev/null
+++ b/qa/qt/qmc_dynamic/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_dynamic
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_dynamic/GNUmakefile.install b/qa/qt/qmc_dynamic/GNUmakefile.install
new file mode 100644
index 0000000..827b780
--- /dev/null
+++ b/qa/qt/qmc_dynamic/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_dynamic
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_dynamic/qmc_dynamic.cpp b/qa/qt/qmc_dynamic/qmc_dynamic.cpp
new file mode 100644
index 0000000..98b55d0
--- /dev/null
+++ b/qa/qt/qmc_dynamic/qmc_dynamic.cpp
@@ -0,0 +1,351 @@
+//
+// Test Qt Metrics Class dynamic indom support
+//
+
+#include <errno.h>
+#include <QTextStream>
+#include <qmc_context.h>
+#include <qmc_group.h>
+#include <qmc_metric.h>
+#include <qmc_indom.h>
+
+#define ADD_INST "dynamic.control.add"
+#define DEL_INST "dynamic.control.del"
+#define mesg(str) msg(__LINE__, str)
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+void
+store(char const* name, char const* inst)
+{
+ char buf[128];
+
+ sprintf(buf, "pmstore %s %s > /dev/null\n", name, inst);
+ cout << name << ' ' << inst << endl;
+ if (system(buf) < 0) {
+ pmprintf("%s: cannot run system(%s)\n", pmProgname, buf);
+ pmflush();
+ exit(1);
+ }
+}
+
+void
+dump(QmcMetric const* num, QmcMetric const* discrete,
+ QmcMetric const* instant, QmcMetric const* counter)
+{
+ cout << "dynamic.numinsts = " << num->value(0) << endl << endl;
+ for (int i = 0; i < discrete->numInst(); i++) {
+ cout << '[' << discrete->instName(i) << "] = ";
+ if (discrete->error(i) < 0) {
+ cout << pmErrStr(discrete->error(i)) << endl;
+ }
+ else {
+ cout << '\"' << discrete->stringValue(i) << "\" = "
+ << instant->value(i) << " (";
+ if (counter->error(i) < 0)
+ cout << pmErrStr(counter->error(i)) << ")" << endl;
+ else
+ cout << counter->currentValue(i) << ")" << endl;
+ }
+ }
+ cout << endl;
+ discrete->indom()->dump(cout);
+}
+
+void
+update(QmcMetric* discrete, QmcMetric* instant,
+ QmcMetric* counter)
+{
+ if (discrete->indom()->changed())
+ discrete->updateIndom();
+ if (instant->indom()->changed())
+ instant->updateIndom();
+ if (counter->indom()->changed())
+ counter->updateIndom();
+}
+
+void
+msg(int line, char const* str)
+{
+ static int count = 1;
+
+ cout << endl << "*** " << count << ": Line " << line << " - " << str
+ << " ***" << endl;
+ cerr << endl << "*** " << count << ": Line " << line << " - " << str
+ << " ***" << endl;
+ count++;
+}
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+ char buf[MAXHOSTNAMELEN];
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ (void)gethostname(buf, MAXHOSTNAMELEN);
+ buf[MAXHOSTNAMELEN-1] = '\0';
+
+ mesg("Create two fetch groups");
+ QmcGroup group1;
+ pmflush();
+ QmcGroup group2;
+ pmflush();
+
+ mesg("Add number of instances to both groups");
+ QmcMetric* numinsts1 = group1.addMetric("dynamic.numinsts");
+ pmflush();
+ if (numinsts1->status() < 0)
+ exit(1);
+ else
+ numinsts1->dump(cout);
+
+ QmcMetric* numinsts2 = group2.addMetric("dynamic.numinsts");
+ pmflush();
+ if (numinsts2->status() < 0)
+ exit(1);
+ else
+ numinsts2->dump(cout);
+
+ mesg("Fetch both groups");
+ group1.fetch();
+ numinsts1->dump(cout);
+ group2.fetch();
+ numinsts2->dump(cout);
+
+ mesg("Add dynamic metrics to both groups");
+ QmcMetric* discrete1 = group1.addMetric("dynamic.discrete", 0.0, true);
+ pmflush();
+ if (discrete1->status() < 0)
+ exit(1);
+ else
+ discrete1->dump(cout);
+
+ QmcMetric* instant1 = group1.addMetric("dynamic.instant", 0.0, true);
+ pmflush();
+ if (instant1->status() < 0)
+ exit(1);
+ else
+ instant1->dump(cout);
+
+ QmcMetric* counter1 = group1.addMetric("dynamic.counter", 0.0, true);
+ pmflush();
+ if (counter1->status() < 0)
+ exit(1);
+ else
+ counter1->dump(cout);
+
+ QmcMetric* discrete2 = group2.addMetric("dynamic.discrete");
+ pmflush();
+ if (discrete2->status() < 0)
+ exit(1);
+ else
+ discrete2->dump(cout);
+
+ QmcMetric* instant2 = group2.addMetric("dynamic.instant");
+ pmflush();
+ if (instant2->status() < 0)
+ exit(1);
+ else
+ instant2->dump(cout);
+
+ QmcMetric* counter2 = group2.addMetric("dynamic.counter");
+ pmflush();
+ if (counter2->status() < 0)
+ exit(1);
+ else
+ counter2->dump(cout);
+
+ mesg("Fetch both groups");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Add an instance");
+ store(ADD_INST, "1");
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Update indom for first group");
+ update(discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Add another instance");
+ store(ADD_INST, "5");
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Update indom for first group");
+ update(discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Delete first instance");
+ store(DEL_INST, "1");
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Update indom for first group");
+ update(discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Update indom for second group");
+ update(discrete2, instant2, counter2);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Delete second instance, add new instance");
+ store(DEL_INST, "5");
+ store(ADD_INST, "3");
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Update indom for first group");
+ update(discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Update indom for second group");
+ update(discrete2, instant2, counter2);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Delete third instance");
+ store(DEL_INST, "3");
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Update indom for first group");
+ update(discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Update indom for second group");
+ update(discrete2, instant2, counter2);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Add second instance again");
+ store(ADD_INST, "5");
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Update indom for first group");
+ update(discrete1, instant1, counter1);
+
+ mesg("Fetch first group");
+ group1.fetch();
+ dump(numinsts1, discrete1, instant1, counter1);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ mesg("Update indom for second group");
+ update(discrete2, instant2, counter2);
+
+ mesg("Fetch second group");
+ group2.fetch();
+ dump(numinsts2, discrete2, instant2, counter2);
+
+ return 0;
+}
+
diff --git a/qa/qt/qmc_dynamic/qmc_dynamic.pro b/qa/qt/qmc_dynamic/qmc_dynamic.pro
new file mode 100644
index 0000000..ca9ff2e
--- /dev/null
+++ b/qa/qt/qmc_dynamic/qmc_dynamic.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_dynamic.cpp
+CONFIG += qt warn_on
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_event/GNUmakefile b/qa/qt/qmc_event/GNUmakefile
new file mode 100644
index 0000000..b125bca
--- /dev/null
+++ b/qa/qt/qmc_event/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_event
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_event/GNUmakefile.install b/qa/qt/qmc_event/GNUmakefile.install
new file mode 100644
index 0000000..35c201c
--- /dev/null
+++ b/qa/qt/qmc_event/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_event
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_event/qmc_event.cpp b/qa/qt/qmc_event/qmc_event.cpp
new file mode 100644
index 0000000..3b32e57
--- /dev/null
+++ b/qa/qt/qmc_event/qmc_event.cpp
@@ -0,0 +1,85 @@
+//
+// Test event tracing functionality in libqmc
+//
+// Caller can setup deterministic output by calling
+// "pmstore sample.event.reset 1" beforehand.
+//
+
+#include <errno.h>
+#include <QTextStream>
+#include <qmc_context.h>
+#include <qmc_group.h>
+#include <qmc_metric.h>
+#include <qmc_indom.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+
+ __pmSetProgname(argv[0]);
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ cerr << "*** Create a single fetch group ***" << endl;
+ QmcGroup group;
+ pmflush();
+
+ cerr << endl << "*** Event metric ***" << endl;
+ QmcMetric* sample_records = group.addMetric("sample.event.records");
+ if (sample_records->status() < 0)
+ sts = 1;
+ else
+ sample_records->dump(cerr);
+ pmflush();
+
+ QmcMetric* sample_seconds = group.addMetric("sample.seconds");
+ if (sample_seconds->status() < 0)
+ sts = 1;
+ else
+ sample_seconds->dump(cerr);
+ pmflush();
+
+ //
+ // pmdasample provides a 4-phase fetch pattern for sample.event
+ //
+ for (int i = 0; i < 4; i++) {
+ sleep(1);
+ cerr << endl << "*** Group Fetch " << i << " ***" << endl;
+ group.fetch();
+ sample_records->dump(cerr);
+ sample_seconds->dump(cerr);
+ }
+
+ cerr << endl << "*** Exiting ***" << endl;
+ return sts;
+}
diff --git a/qa/qt/qmc_event/qmc_event.pro b/qa/qt/qmc_event/qmc_event.pro
new file mode 100644
index 0000000..0f3c1e8
--- /dev/null
+++ b/qa/qt/qmc_event/qmc_event.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_event.cpp
+CONFIG += qt warn_on
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_format/GNUmakefile b/qa/qt/qmc_format/GNUmakefile
new file mode 100644
index 0000000..2350f48
--- /dev/null
+++ b/qa/qt/qmc_format/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_format
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_format/GNUmakefile.install b/qa/qt/qmc_format/GNUmakefile.install
new file mode 100644
index 0000000..1e53804
--- /dev/null
+++ b/qa/qt/qmc_format/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_format
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_format/qmc_format.cpp b/qa/qt/qmc_format/qmc_format.cpp
new file mode 100644
index 0000000..1387e31
--- /dev/null
+++ b/qa/qt/qmc_format/qmc_format.cpp
@@ -0,0 +1,37 @@
+//
+// Test QmcMetric::formatValue routines
+//
+
+#include <QTextStream>
+#include <qmc.h>
+#include <qmc_context.h>
+#include <qmc_metric.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+int
+main(int argc, char *argv[])
+{
+ double d;
+ char *endptr;
+
+ pmProgname = basename(argv[0]);
+ if (argc != 2) {
+ cerr << "Usage: " << pmProgname << " double" << endl;
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ d = strtod(argv[1], &endptr);
+ if (endptr != NULL && endptr[0] != '\0') {
+ cerr << pmProgname << ": argument \"" << argv[1]
+ << "\" must be a double (\"" << endptr << "\")" << endl;
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ cout << QmcMetric::formatNumber(d) << endl;
+
+ return 0;
+}
diff --git a/qa/qt/qmc_format/qmc_format.pro b/qa/qt/qmc_format/qmc_format.pro
new file mode 100644
index 0000000..5cf4561
--- /dev/null
+++ b/qa/qt/qmc_format/qmc_format.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_format.cpp
+CONFIG += qt warn_on
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/build/Default
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_group/GNUmakefile b/qa/qt/qmc_group/GNUmakefile
new file mode 100644
index 0000000..518d807
--- /dev/null
+++ b/qa/qt/qmc_group/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_group
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_group/GNUmakefile.install b/qa/qt/qmc_group/GNUmakefile.install
new file mode 100644
index 0000000..df5f994
--- /dev/null
+++ b/qa/qt/qmc_group/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_group
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_group/qmc_group.cpp b/qa/qt/qmc_group/qmc_group.cpp
new file mode 100644
index 0000000..8d6992e
--- /dev/null
+++ b/qa/qt/qmc_group/qmc_group.cpp
@@ -0,0 +1,835 @@
+//
+// Test QmcGroup class
+// It creates three groups representing three clients
+// Two groups are using live contexts, one group is using archives.
+//
+
+#include <QTextStream>
+#include <QStringList>
+#include <qmc_context.h>
+#include <qmc_group.h>
+#include <qmc_source.h>
+#include <qmc_metric.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+#define mesg(str) msg(__LINE__, str)
+#define checksts() pmflush(); if (sts < 0) fail(__LINE__, sts);
+
+class Client
+{
+private:
+
+ QmcGroup* _group;
+ QList<QmcMetric*> _metrics;
+
+ enum KeyWords { keyArch, keyContext, keyDesc, keyError, keyFetch,
+ keyHost, keyIndom, keyJump, keyList, keyMetric,
+ keyName, keyReal, keyString, keyEvent,
+ keyText, keyUpdate, keyWipe };
+
+ static char const* keywords[];
+ static char const* terminator;
+ static char const sep;
+ static char const cont;
+
+public:
+
+ ~Client()
+ { delete _group; }
+
+ Client()
+ { _group = new QmcGroup; }
+
+ QmcGroup const& group() const
+ { return *_group; }
+
+ // Represents a request for a context handle
+ int context(int type, char const* source);
+
+ // Represents a namespace lookup
+ int name(int context, char const* metric);
+
+ // Represents a help text lookup
+ int text(int context, char const* metric);
+
+ // Represents a list of specs
+ int list(QStringList const& list);
+
+ // Represents a jump to a time and interval for archives
+ int jump(int interval, int startSec, int startMSec);
+
+ // Represents a fetch
+ int fetch();
+
+ // Represents a wipe
+ int wipe();
+
+ // Represents an update of dynamic indoms
+ int update(QList<int> const& list);
+
+ // Dump out some debug stuff
+ void dump(QTextStream& os)
+ { _group->dump(os); }
+
+ friend QTextStream& operator<<(QTextStream& os, struct timeval const& tv);
+};
+
+QTextStream&
+operator<<(QTextStream& os, struct timeval const& tv)
+{
+ os << tv.tv_sec << Client::sep << tv.tv_usec;
+ return os;
+}
+
+char const* Client::keywords[] = { "ARCH", "CONTEXT", "DESC", "ERROR",
+ "FETCH", "HOST", "INDOM", "JUMP", "LIST",
+ "METRIC", "NAME", "REAL", "STRING", "EVENT",
+ "TEXT", "UPDATE", "WIPE" };
+
+char const* Client::terminator = ".\n";
+char const Client::sep = ' ';
+char const Client::cont = '-';
+
+int
+Client::context(int type, char const* source)
+{
+ uint_t numContexts = _group->numContexts();
+ QString qsource = source;
+ int sts = _group->use(type, qsource);
+
+ if (sts >= 0) {
+ sts = _group->contextIndex();
+ cout << keywords[keyContext] << sep << sts;
+ // We created a new context
+ if (_group->numContexts() > numContexts) {
+ QmcContext *context = _group->context(sts);
+ cout << sep << context->numIndoms() << sep << context->numIDs()
+ << sep << context->numMetrics() << sep;
+ if (context->source().type() == PM_CONTEXT_HOST)
+ cout << keywords[keyHost] << sep << context->source().host()
+ << sep << context->source().timezone() << endl;
+ else
+ cout << keywords[keyArch] << sep << context->source().host()
+ << sep << context->source().source() << sep
+ << context->source().start() << sep
+ << context->source().end() << sep
+ << context->source().timezone() << endl;
+ }
+ cout << terminator;
+ }
+ else {
+ cout << "ERROR " << sts << endl << terminator;
+ }
+ return sts;
+}
+
+int
+Client::name(int context, char const* metric)
+{
+ int sts = 0;
+ QStringList list;
+
+ if (context < 0 || context >= (int)_group->numContexts())
+ sts = PM_ERR_NOCONTEXT;
+
+ if (sts >= 0)
+ sts = _group->use(context);
+
+ if (sts >= 0)
+ sts = _group->context()->traverse(metric, list);
+
+ if (sts < 0)
+ cout << keywords[keyError] << sep << sts << endl << terminator;
+ else {
+ cout << keywords[keyName] << sep << list.size() << endl;
+ for (int i = 0; i < list.size(); i++)
+ cout << cont << sep << list[i] << endl;
+ cout << terminator;
+ }
+
+ return sts;
+}
+
+int
+Client::text(int context, char const* metric)
+{
+ int sts = 0;
+ pmID id;
+ char* buf;
+
+ if (context < 0 || context >= (int)_group->numContexts())
+ sts = PM_ERR_NOCONTEXT;
+
+ if (sts >= 0)
+ sts = _group->use(context);
+
+ if (sts >= 0)
+ sts = _group->context()->lookupPMID(metric, id);
+
+ if (sts >= 0)
+ sts = pmLookupText(id, PM_TEXT_HELP, &buf);
+
+ if (sts >= 0) {
+ cout << keywords[keyText] << sep << strlen(buf) << endl;
+ cout << buf << endl;
+ cout << terminator;
+ free(buf);
+ }
+ else
+ cout << keywords[keyError] << sep << sts << endl << terminator;
+
+ _group->useDefault();
+
+ return sts;
+}
+
+int
+Client::list(QStringList const& list)
+{
+ int l, sts = 0;
+ uint_t i;
+ uint_t j;
+ uint_t k;
+ uint_t numContexts = _group->numContexts();
+ uint_t numMetrics = _metrics.size();
+
+ _group->useDefault();
+
+ for (l = 0; l < list.size(); l++)
+ _metrics.append(_group->addMetric(list[l].toAscii().constData(), 0.0, false));
+
+ cout << keywords[keyList] << sep << _group->numContexts() << endl;
+
+ for (i = 0; i < _group->numContexts(); i++) {
+
+ QmcContext const *context = _group->context(i);
+
+ cout << keywords[keyContext] << sep << i << sep
+ << context->numIndoms() << sep << context->numIDs() << sep
+ << context->numMetrics();
+
+ // Client has not seen this context before
+ if (i >= numContexts) {
+ if (context->source().type() == PM_CONTEXT_HOST)
+ cout << sep << keywords[keyHost] << sep
+ << context->source().host() << sep
+ << context->source().timezone() << endl;
+ else
+ cout << sep << keywords[keyArch] << sep
+ << context->source().host() << sep
+ << context->source().source() << sep
+ << context->source().start() << sep
+ << context->source().end() << sep
+ << context->source().timezone() << endl;
+ }
+ else
+ cout << endl;
+
+ // Dump all indoms in context, but only list instances in use
+ for (j = 0; j < context->numIndoms(); j++) {
+
+ QmcIndom const& indom = context->indom(j);
+
+ cout << keywords[keyIndom] << sep << j << sep << indom.refCount()
+ << endl;
+ for (k = 0; k < (uint_t)indom.listLen(); k++) {
+ if (!indom.nullInst(k) && indom.refInst(k))
+ cout << cont << sep << k << sep << indom.name(k) << endl;
+ }
+ }
+
+ // Dump all descriptors in use
+ for (j = 0; j < context->numIDs(); j++) {
+
+ pmID id = context->id(j);
+ QmcDesc const& desc = context->desc(id);
+
+ cout << keywords[keyDesc] << sep << j << sep;
+ if (desc.desc().type == PM_TYPE_STRING)
+ cout << keywords[keyString];
+ else if (desc.desc().type == PM_TYPE_EVENT)
+ cout << keywords[keyEvent];
+ else
+ cout << keywords[keyReal];
+ cout << sep << desc.units() << endl;
+ }
+ }
+
+ // Dump new metrics listed by client
+ for (i = numMetrics; i < (uint_t)_metrics.size(); i++) {
+
+ QmcMetric const& metric = *_metrics[i];
+
+ cout << keywords[keyMetric] << sep << i << sep;
+
+ if (metric.status() < 0) {
+ cout << metric.status() << endl;
+ }
+ else {
+ cout << metric.numValues() << sep << metric.name() << sep
+ << metric.contextIndex()
+ << sep << metric.idIndex() << sep;
+ if (metric.indomIndex() == UINT_MAX)
+ cout << "-1" << endl;
+ else
+ cout << metric.indomIndex() << endl;
+ for (j = 0; j < (uint_t)metric.numInst(); j++)
+ cout << cont << sep << metric.instIndex(j) << endl;
+ }
+
+ }
+
+ cout << terminator;
+
+ return sts;
+}
+
+int
+Client::jump(int interval, int startSec, int startMSec)
+{
+ int sts;
+ struct timeval start;
+
+ start.tv_sec = startSec;
+ start.tv_usec = startMSec;
+
+ sts = _group->setArchiveMode(PM_MODE_INTERP, &start, interval);
+
+ if (sts < 0)
+ cout << keywords[keyError] << sts << endl << terminator;
+ else
+ cout << keywords[keyJump] << endl << terminator;
+
+ return sts;
+}
+
+int
+Client::fetch()
+{
+ int sts, i, j;
+
+ sts = _group->fetch();
+
+ cout << keywords[keyFetch] << sep << _group->numContexts() << sep
+ << _metrics.size() << endl;
+
+ for (i = 0; i < (int)_group->numContexts(); i++) {
+
+ QmcContext const *context = _group->context(i);
+
+ cout << keywords[keyContext] << sep << i << sep
+ << (long long)(context->timeDelta() * 1000.0) << sep
+ << context->timeStamp() << endl;
+ }
+
+ for (i = 0; i < _metrics.size(); i++) {
+
+ QmcMetric const& metric = *_metrics[i];
+
+ cout << keywords[keyMetric] << sep << i << sep;
+
+ if (metric.status() < 0) {
+ cout << metric.status() << endl;
+ }
+ else {
+ cout << metric.numValues();
+ if (metric.hasInstances() && metric.indom()->changed())
+ cout << sep << keywords[keyUpdate];
+ cout << endl;
+ for (j = 0; j < metric.numValues(); j++) {
+ cout << cont << sep;
+ if (metric.error(j) < 0)
+ cout << '?' << endl;
+ else {
+ int type = metric.desc().desc().type;
+ if (QmcMetric::real(type))
+ cout << metric.value(j);
+ else if (QmcMetric::event(type))
+ metric.dump(cout, j);
+ else
+ cout << metric.stringValue(j);
+ cout << endl;
+ }
+ }
+ }
+ }
+
+ cout << terminator;
+
+ return sts;
+}
+
+int
+Client::wipe()
+{
+ _metrics.clear();
+
+ delete _group;
+ _group = new QmcGroup;
+
+ cout << keywords[keyWipe] << endl << terminator;
+
+ return 0;
+}
+
+int
+Client::update(QList<int> const& list)
+{
+ int sts = 0;
+ QList<int> contexts;
+ QList<int> indoms;
+ QList<int> metrics;
+ int i, j, k;
+
+ // Generate unique list of contexts for updated metrics
+ for (i = 0; i < list.size(); i++) {
+ int index = list[i];
+
+ if (index < 0 || index >= _metrics.size()) {
+ sts = PM_ERR_PMID;
+ break;
+ }
+
+ int ctx = _metrics[index]->contextIndex();
+
+ for (j = 0; j < contexts.size(); j++)
+ if (contexts[j] == ctx)
+ break;
+ if (j == contexts.size())
+ contexts.append(ctx);
+ }
+
+ if (sts >= 0) {
+ cout << keywords[keyUpdate] << sep << contexts.size() << endl;
+
+ for (i = 0; i < contexts.size(); i++) {
+ uint_t cntx = contexts[i];
+ QmcContext *context = _group->context(cntx);
+
+ // Generate unique list of updated metrics for this context
+ metrics.clear();
+ for (j = 0; j < list.size(); j++) {
+ uint_t index = list[j];
+ if (_metrics[index]->status() >= 0 &&
+ _metrics[index]->contextIndex() == cntx)
+ metrics.append(index);
+ }
+
+ // Generate unique list of updated indoms for this context
+ indoms.clear();
+
+ for (j = 0; j < metrics.size(); j++) {
+
+ int indom = _metrics[metrics[j]]->indomIndex();
+ for (k = 0; k < indoms.size(); k++)
+ if (indoms[k] == indom)
+ break;
+ if (k == indoms.size())
+ indoms.append(indom);
+
+ _metrics[metrics[j]]->updateIndom();
+ }
+
+ cout << keywords[keyContext] << sep << cntx << sep
+ << indoms.size() << sep << list.size() << endl;
+
+ for (j = 0; j < indoms.size(); j++) {
+ QmcIndom const& indom = context->indom(indoms[j]);
+
+ cout << keywords[keyIndom] << sep << indoms[j] << sep
+ << indom.refCount() << endl;
+ for (k = 0; k < indom.listLen(); k++) {
+ if (!indom.nullInst(k) && indom.refInst(k))
+ cout << cont << sep << k << sep << indom.name(k) << endl;
+ }
+ }
+ }
+
+ for (i = 0; i < list.size(); i++) {
+ QmcMetric const& metric = *_metrics[list[i]];
+
+ cout << keywords[keyMetric] << sep << list[i] << sep;
+
+ if (metric.status() < 0) {
+ cout << metric.status() << endl;
+ }
+ else {
+ cout << metric.numValues() << endl;
+ for (j = 0; j < metric.numInst(); j++)
+ cout << cont << sep << metric.instIndex(j) << endl;
+ }
+ }
+ }
+ else
+ cout << keywords[keyError] << sep << sts << endl;
+
+ cout << terminator;
+
+ return sts;
+}
+
+void
+store(char const* name, char const* inst)
+{
+ char buf[128];
+
+ sprintf(buf, "pmstore %s %s > /dev/null\n", name, inst);
+ cout << name << ' ' << inst << endl;
+ if (system(buf) < 0) {
+ pmprintf("%s: system(%s) failed\n", pmProgname, buf);
+ pmflush();
+ exit(1);
+ }
+ if (system("pminfo -f dynamic") < 0) {
+ pmprintf("%s: system(pminfo) failed\n", pmProgname);
+ pmflush();
+ exit(1);
+ }
+}
+
+static int msgCount = 1;
+
+void
+msg(int line, char const* str)
+{
+ cout << endl << "*** " << msgCount << ": Line " << line << " - " << str
+ << " ***" << endl;
+ cerr << endl << "*** " << msgCount << ": Line " << line << " - " << str
+ << " ***" << endl;
+ msgCount++;
+}
+
+void
+fail(int line, int err)
+{
+ cout << endl << "*** " << msgCount << ": Testing failed at line " << line
+ << " - " << pmErrStr(err) << " ***" << endl;
+ cerr << endl << "*** " << msgCount << ": Testing failed at line " << line
+ << " - " << pmErrStr(err) << " ***" << endl;
+
+ pmflush();
+
+ exit(1);
+ /*NOTREACHED*/
+}
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+ const char *string;
+ QString archive1 = "archives/snort-disks";
+ // snort-disks timestamps
+ // 1117075022.613953 ... 1117075050.309912
+ QString archive2 = "archives/vldb-disks";
+ // vldb-disks timestamps
+ // 869629190.357184 ... 869629210.660548
+ QString archive3 = "archives/moomba.pmkstat";
+ QStringList metrics;
+ QList<int> metricIds;
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts || optind != argc) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ store("dynamic.control.del", "-1");
+
+ //
+ // Client 1 uses live contexts to the same host as pmjd
+ //
+
+ mesg("Client1: VERSION version");
+ Client* client1 = new Client;
+
+ mesg("Client1: LIST 2 hinv.ncpu kernel.all.load[1,15]");
+ metrics.clear();
+ metrics.append("hinv.ncpu");
+ metrics.append("kernel.all.load[1,15]");
+ sts = client1->list(metrics);
+
+ checksts();
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ //
+ // Client 2 uses live contexts to multiple hosts
+ // Client 2 does some namespace and helptext lookups first
+ //
+
+ mesg("Client2: VERSION version");
+ Client* client2 = new Client;
+
+
+ mesg("Client2: CONTEXT HOST localhost");
+ sts = client2->context(PM_CONTEXT_HOST, "localhost");
+
+ checksts();
+
+ int ctx = sts;
+
+ mesg("Client2: NAME 0 dynamic");
+ sts = client2->name(ctx, "dynamic");
+
+ checksts();
+
+ mesg("Client2: TEXT 0 dynamic.numinsts");
+ client2->text(ctx, "dynamic.numinsts");
+
+ checksts();
+
+ //
+ // Another fetch from Client 1
+ //
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ //
+ // Client 3 uses archives contexts
+ //
+
+ mesg("Client3: VERSION version");
+ Client* client3 = new Client;
+
+ mesg("Client3: CONTEXT ARCH archive1");
+ string = archive1.toAscii().constData();
+ sts = client3->context(PM_CONTEXT_ARCHIVE, string);
+
+ checksts();
+
+ mesg("Client3: CONTEXT ARCH archive2");
+ string = archive2.toAscii().constData();
+ sts = client3->context(PM_CONTEXT_ARCHIVE, string);
+
+ checksts();
+
+ //
+ // Client 1 does a fetch
+ //
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ //
+ // Client 2 sets up its metrics
+ //
+
+ mesg("Client2: LIST 4 dynamic.numinsts dynamic.discrete dynamic.instant dynamic.counter");
+ metrics.clear();
+ metrics.append("dynamic.numinsts");
+ metrics.append("dynamic.discrete");
+ metrics.append("dynamic.instant");
+ metrics.append("dynamic.counter");
+ sts = client2->list(metrics);
+
+ checksts();
+
+ mesg("Client2: FETCH");
+ sts = client2->fetch();
+
+ checksts();
+
+ //
+ // Client 3 specifies some metrics using the archive host and source
+ // names
+ //
+
+ mesg("Client3: LIST 4 snort:disk.dev.read[dks0d1,dks1d1,dks9d1] archives/vldb-disks/disk.dev.total[dks17d8,dks11d3,dks45d2] disk.dev.write[dks1d1,dks0d4] vldb.engr:disk.dev.total[dks18d6,dks11d3]");
+
+ metrics.clear();
+ metrics.append("snort:disk.dev.read[dks0d1,dks1d1,dks9d1]");
+ metrics.append("archives/vldb-disks/disk.dev.total[dks17d8,dks11d3,dks45d2]");
+ metrics.append("disk.dev.write[dks1d1,dks0d4]");
+ metrics.append("vldb.engr:disk.dev.total[dks18d6,dks11d3]");
+
+ sts = client3->list(metrics);
+
+ checksts();
+
+ mesg("Client3: JUMP 5000 869629200 0");
+ sts = client3->jump(5000, 869629200, 0);
+
+ checksts();
+
+ mesg("Client3: FETCH");
+ sts = client3->fetch();
+
+ checksts();
+
+ mesg("Client3: FETCH");
+ sts = client3->fetch();
+
+ checksts();
+
+ //
+ // Client 1 now wants to add some more metrics
+ //
+
+ mesg("Client1: LIST 2 hinv.ndisk disk.all.total");
+ metrics.clear();
+ metrics.append("hinv.ndisk");
+ metrics.append("disk.all.total");
+ sts = client1->list(metrics);
+
+ checksts();
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ //
+ // Client 3 jumps into the next archive
+ //
+
+ mesg("Client3: JUMP 2000 1117075022 0 ");
+ sts = client3->jump(2000, 1117075022, 0);
+
+ checksts();
+
+ mesg("Client3: FETCH");
+ sts = client3->fetch();
+
+ checksts();
+
+ mesg("Client3: FETCH");
+ sts = client3->fetch();
+
+ checksts();
+
+ mesg("Client3: FETCH");
+ sts = client3->fetch();
+
+ checksts();
+
+ //
+ // Client 1 wants to start afresh with some archive contexts
+ //
+
+ mesg("Client1: WIPE");
+ sts = client1->wipe();
+
+ checksts();
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ //
+ // Client 2 gets a fetch in but the indom has changed
+ //
+
+ mesg("Dynamic Indom Changes");
+ store("dynamic.control.add", "2");
+ store("dynamic.control.add", "4");
+
+ mesg("Client2: FETCH");
+ sts = client2->fetch();
+
+ checksts();
+
+ mesg("Client2: UPDATE 3 1 2 3");
+ metricIds.clear();
+ metricIds.append(1);
+ metricIds.append(2);
+ metricIds.append(3);
+ sts = client2->update(metricIds);
+
+ checksts();
+
+ mesg("Client2: FETCH");
+ sts = client2->fetch();
+
+ checksts();
+
+ mesg("Client2: FETCH");
+ sts = client2->fetch();
+
+ checksts();
+
+ //
+ // Client 1 adds some archive metrics
+ //
+
+ mesg("Client1: CONTEXT ARCH moomba.pmkstat");
+ string = archive3.toAscii().constData();
+ sts = client1->context(PM_CONTEXT_ARCHIVE, string);
+
+ checksts();
+
+ mesg("Client1: LIST 2 kernel.all.idle localhost:kernel.all.cpu.user");
+ metrics.clear();
+ metrics.append("irix.kernel.all.cpu.idle");
+ metrics.append("moomba:irix.kernel.all.cpu.user");
+ sts = client1->list(metrics);
+
+ checksts();
+
+ mesg("Client1: JUMP 5000 885849650 0");
+ sts = client1->jump(5000, 885849650, 0);
+
+ checksts();
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ mesg("Client1: FETCH");
+ sts = client1->fetch();
+
+ checksts();
+
+ // Client 3 gets a fetch in
+ mesg("Client3: FETCH");
+ sts = client3->fetch();
+
+ checksts();
+
+
+ mesg("Exiting");
+ pmflush();
+ return sts;
+}
diff --git a/qa/qt/qmc_group/qmc_group.pro b/qa/qt/qmc_group/qmc_group.pro
new file mode 100644
index 0000000..145909a
--- /dev/null
+++ b/qa/qt/qmc_group/qmc_group.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_group.cpp
+CONFIG += qt warn_on
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_hosts/GNUmakefile b/qa/qt/qmc_hosts/GNUmakefile
new file mode 100644
index 0000000..22150a8
--- /dev/null
+++ b/qa/qt/qmc_hosts/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_hosts
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_hosts/GNUmakefile.install b/qa/qt/qmc_hosts/GNUmakefile.install
new file mode 100644
index 0000000..5a0f3f6
--- /dev/null
+++ b/qa/qt/qmc_hosts/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_hosts
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_hosts/qmc_hosts.cpp b/qa/qt/qmc_hosts/qmc_hosts.cpp
new file mode 100644
index 0000000..c1d8939
--- /dev/null
+++ b/qa/qt/qmc_hosts/qmc_hosts.cpp
@@ -0,0 +1,115 @@
+//
+// Test host matching algorithm with multiple groups
+//
+
+#include <errno.h>
+#include <QTextStream>
+#include <qmc_context.h>
+#include <qmc_group.h>
+#include <qmc_metric.h>
+#include <qmc_indom.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+#define mesg(str) msg(__LINE__, str)
+
+void
+msg(int line, char const* str)
+{
+ static int count = 1;
+
+ cerr << endl << "*** " << count << ": Line " << line << " - " << str
+ << " ***" << endl;
+ count++;
+}
+
+void
+quit(int err)
+{
+ pmflush();
+ cerr << "Error: " << pmErrStr(err) << endl;
+ exit(1);
+}
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+ QString source;
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ mesg("Create two groups");
+ QmcGroup group1;
+ pmflush();
+ QmcGroup group2;
+ pmflush();
+
+ mesg("Create an archive context in both groups, but to different hosts");
+ source = "archives/oview-short";
+ sts = group1.use(PM_CONTEXT_ARCHIVE, source);
+
+ if (sts < 0)
+ quit(sts);
+
+ source = "archives/rattle";
+ sts = group2.use(PM_CONTEXT_ARCHIVE, source);
+
+ if (sts < 0)
+ quit(sts);
+
+ mesg("Try to create a host context to snort in group1");
+
+ // Should pass as it will get mapped to the archive
+ source = "snort";
+ sts = group1.use(PM_CONTEXT_HOST, source);
+
+ if (sts < 0)
+ quit(sts);
+
+ mesg("Try to create a host context to snort in group2");
+
+ // Should fail, this group has not seen an archive context for host snort
+ source = "snort";
+ sts = group2.use(PM_CONTEXT_HOST, source);
+
+ if (sts >= 0) {
+ mesg("Test failed: duplicate context created from another group");
+ pmflush();
+ exit(1);
+ }
+
+ pmflush();
+ return 0;
+}
+
diff --git a/qa/qt/qmc_hosts/qmc_hosts.pro b/qa/qt/qmc_hosts/qmc_hosts.pro
new file mode 100644
index 0000000..52634c6
--- /dev/null
+++ b/qa/qt/qmc_hosts/qmc_hosts.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_hosts.cpp
+CONFIG += qt warn_on
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_indom/GNUmakefile b/qa/qt/qmc_indom/GNUmakefile
new file mode 100644
index 0000000..6ac877f
--- /dev/null
+++ b/qa/qt/qmc_indom/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_indom
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_indom/GNUmakefile.install b/qa/qt/qmc_indom/GNUmakefile.install
new file mode 100644
index 0000000..90709fc
--- /dev/null
+++ b/qa/qt/qmc_indom/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_indom
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_indom/qmc_indom.cpp b/qa/qt/qmc_indom/qmc_indom.cpp
new file mode 100644
index 0000000..6b82913
--- /dev/null
+++ b/qa/qt/qmc_indom/qmc_indom.cpp
@@ -0,0 +1,133 @@
+//
+// Test QmcIndom class
+//
+
+#include <QTextStream>
+#include <qmc_context.h>
+#include <qmc_source.h>
+#include <qmc_desc.h>
+#include <qmc_indom.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ fprintf(stderr, "*** Lookup an indom ***\n");
+ QString source = QString("archives/oview-short");
+ QmcSource *src = QmcSource::getSource(PM_CONTEXT_ARCHIVE, source, false);
+
+ if (src->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to \"%s\": %s\n",
+ pmProgname, (const char *)source.toAscii(),
+ pmErrStr(src->status()));
+ pmflush();
+ return 1;
+ }
+
+ pmID hinv_map_cpu = pmid_build(1, 26, 9);
+ QmcDesc hinv_map_cpu_pmc(hinv_map_cpu);
+
+ if (hinv_map_cpu_pmc.status() < 0) {
+ pmprintf("\n%s: Error: hinv.map.cpu: %s\n",
+ pmProgname, pmErrStr(hinv_map_cpu_pmc.status()));
+ pmflush();
+ return 1;
+ }
+
+ QmcIndom indom(PM_CONTEXT_ARCHIVE, hinv_map_cpu_pmc);
+
+ if (indom.status() < 0) {
+ pmprintf("%s: Error: hinv.map.cpu: %s\n",
+ pmProgname, pmErrStr(indom.status()));
+ pmflush();
+ return 1;
+ }
+
+ indom.dump(cout);
+
+ if (indom.diffProfile()) {
+ pmprintf("%s: Error: Profile requires updating but there is nothing in it\n",
+ pmProgname);
+ sts = 1;
+ }
+
+ fprintf(stderr, "\n*** Reference one instance ***\n");
+ indom.lookup("cpu:1.3.a");
+
+ if (!indom.diffProfile()) {
+ pmprintf("%s: Error: Profile should require updating but flag not set\n",
+ pmProgname);
+ sts = 1;
+ }
+
+ indom.dump(cout);
+ indom.genProfile();
+
+ __pmProfile* profile = __pmHandleToPtr(pmWhichContext())->c_instprof;
+ __pmDumpProfile(stderr, PM_INDOM_NULL, profile);
+
+ if (indom.diffProfile()) {
+ pmprintf("%s: Error: Profile just generated but flag still set\n",
+ pmProgname);
+ sts = 1;
+ }
+
+ fprintf(stderr, "\n*** Reference all instances ***\n");
+ indom.refAll();
+
+ if (!indom.diffProfile()) {
+ pmprintf("%s: Error: All instances referenced but profile flag unset\n",
+ pmProgname);
+ sts = 1;
+ }
+
+ indom.dump(cout);
+ indom.genProfile();
+
+ profile = __pmHandleToPtr(pmWhichContext())->c_instprof;
+ __pmDumpProfile(stderr, PM_INDOM_NULL, profile);
+
+ if (indom.diffProfile()) {
+ pmprintf("%s: Error: Profile just generated but flag still set\n",
+ pmProgname);
+ sts = 1;
+ }
+
+ pmflush();
+ return sts;
+}
diff --git a/qa/qt/qmc_indom/qmc_indom.pro b/qa/qt/qmc_indom/qmc_indom.pro
new file mode 100644
index 0000000..bdf8cdb
--- /dev/null
+++ b/qa/qt/qmc_indom/qmc_indom.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_indom.cpp
+CONFIG += qt warn_on
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_metric/GNUmakefile b/qa/qt/qmc_metric/GNUmakefile
new file mode 100644
index 0000000..3be53f3
--- /dev/null
+++ b/qa/qt/qmc_metric/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_metric
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_metric/GNUmakefile.install b/qa/qt/qmc_metric/GNUmakefile.install
new file mode 100644
index 0000000..daf4be2
--- /dev/null
+++ b/qa/qt/qmc_metric/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_metric
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_metric/qmc_metric.cpp b/qa/qt/qmc_metric/qmc_metric.cpp
new file mode 100644
index 0000000..3df5487
--- /dev/null
+++ b/qa/qt/qmc_metric/qmc_metric.cpp
@@ -0,0 +1,280 @@
+//
+// Test QmcMetric class
+//
+
+#include <errno.h>
+#include <QTextStream>
+#include <qmc_context.h>
+#include <qmc_group.h>
+#include <qmc_metric.h>
+#include <qmc_indom.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+void
+changeConf(const char* str)
+{
+ char name[MAXPATHLEN];
+ FILE *fp;
+
+ sprintf(name, "%s/pmdas/simple/simple.conf", pmGetConfig("PCP_VAR_DIR"));
+ fp = fopen(name, "w");
+ if (fp == NULL) {
+ cerr << pmProgname << ": /var/pcp/pmdas/simple/simple.conf: "
+ << strerror(errno) << endl;
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ fprintf(fp, "%s\n", str);
+ fclose(fp);
+}
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ cerr << "*** Create a single fetch group ***" << endl;
+ QmcGroup group1;
+ pmflush();
+
+ cerr << endl << "*** Simple metric ***" << endl;
+ QmcMetric* hinv_ncpu = group1.addMetric("hinv.ncpu");
+ pmflush();
+
+ if (hinv_ncpu->status() < 0)
+ sts = 1;
+ else
+ hinv_ncpu->dump(cerr);
+
+ cerr << endl << "*** Metric with an Indom ***" << endl;
+ QmcMetric* percpu_user = group1.addMetric("sample.bin");
+ pmflush();
+
+ if (percpu_user->status() < 0)
+ sts = 1;
+ else
+ percpu_user->dump(cerr);
+
+ cerr << endl << "*** proc style specific instance ***" << endl;
+ QmcMetric* load_avg = group1.addMetric("kernel.all.load[1,5]");
+ pmflush();
+
+ if (load_avg->status() < 0)
+ sts = 1;
+ else
+ load_avg->dump(cerr);
+
+ cerr << endl << "*** String metric ***" << endl;
+ QmcMetric* sample_hullo = group1.addMetric("sample.string.hullo");
+
+ if (sample_hullo->status() < 0)
+ sts = 1;
+ else
+ sample_hullo->dump(cerr);
+
+ cerr << endl << "*** Rate converted metric ***" << endl;
+ QmcMetric* sample_seconds = group1.addMetric("sample.seconds");
+
+ if (sample_seconds->status() < 0)
+ sts = 1;
+ else
+ sample_seconds->dump(cerr);
+
+ cerr << endl << "*** Bogus metric ***" << endl;
+ QmcMetric* bogus_metric = group1.addMetric("bogus.metric");
+ pmflush();
+
+ if (bogus_metric->status() >= 0) {
+ pmprintf("%s: Error: bogus.metric was not invalid!\n",
+ pmProgname);
+ pmflush();
+ sts = 1;
+ }
+
+ cerr << endl << "*** Bogus instance ***" << endl;
+ QmcMetric* bogus_inst = group1.addMetric("kernel.all.load[2]");
+ pmflush();
+
+ if (bogus_inst->status() >= 0) {
+ pmprintf("%s: Error: kernel.all.load[2] was not invalid!\n",
+ pmProgname);
+ pmflush();
+ sts = 1;
+ }
+
+ pmflush();
+
+ sleep(1);
+
+ cerr << endl << "*** Group 1 Fetch 1 ***" << endl;
+ group1.fetch();
+ hinv_ncpu->dump(cerr);
+ percpu_user->dump(cerr);
+ load_avg->dump(cerr);
+ sample_hullo->dump(cerr);
+ sample_seconds->dump(cerr);
+
+ sleep(1);
+
+ cerr << endl << "*** Group 1 Fetch 2 ***" << endl;
+ group1.fetch();
+ hinv_ncpu->dump(cerr);
+ percpu_user->dump(cerr);
+ load_avg->dump(cerr);
+ sample_hullo->dump(cerr);
+ sample_seconds->dump(cerr);
+
+ cerr << endl << "*** Remove an instance ***" << endl;
+ load_avg->removeInst(0);
+ load_avg->dump(cerr);
+
+ sleep(1);
+
+ cerr << endl << "*** Group 1 Fetch 3 ***" << endl;
+ group1.fetch();
+ hinv_ncpu->dump(cerr);
+ percpu_user->dump(cerr);
+ load_avg->dump(cerr);
+ sample_hullo->dump(cerr);
+ sample_seconds->dump(cerr);
+
+ cerr << endl << "*** Add an instance ***" << endl;
+ load_avg->addInst("15");
+ load_avg->dump(cerr);
+
+ sleep(1);
+
+ cerr << endl << "*** Group 1 Fetch 4 ***" << endl;
+ group1.fetch();
+ hinv_ncpu->dump(cerr);
+ percpu_user->dump(cerr);
+ load_avg->dump(cerr);
+ sample_hullo->dump(cerr);
+ sample_seconds->dump(cerr);
+
+ cerr << endl << "*** Creating a new group ***" << endl;
+ QmcGroup group2;
+
+ cerr << endl << "*** Adding a metric with a dynamic indom ***" << endl;
+ QmcMetric* simple_now = group2.addMetric("simple.now");
+ pmflush();
+ simple_now->dump(cerr);
+
+ cerr << endl << "*** Group 2 Fetch 1 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+
+ cerr << endl << "*** Change the indom ***" << endl;
+ changeConf("sec,min,hour");
+
+ cerr << endl << "*** Group 2 Fetch 2 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+
+ cerr << endl << "*** Updating indom ***" << endl;
+ if (simple_now->indom()->changed())
+ simple_now->updateIndom();
+ else
+ cerr << "Nothing to update!" << endl;
+
+ simple_now->dump(cerr);
+ simple_now->indom()->dump(cerr);
+
+ cerr << endl << "*** Group 2 Fetch 3 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+
+ cerr << endl << "*** Remove instance from PMDA ***" << endl;
+ changeConf("sec,hour");
+
+ cerr << endl << "*** Group 2 Fetch 4 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+
+ cerr << endl << "*** Remove an instance ***" << endl;
+ simple_now->removeInst(1);
+ simple_now->dump(cerr);
+ simple_now->indom()->dump(cerr);
+
+ cerr << endl << "*** Updating indom ***" << endl;
+ if (simple_now->indom()->changed())
+ simple_now->updateIndom();
+ else
+ cerr << "Nothing to update!" << endl;
+
+ simple_now->dump(cerr);
+ simple_now->indom()->dump(cerr);
+
+ cerr << endl << "*** Group 2 Fetch 5 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+
+ cerr << endl << "*** Add another metric with the same indom ***" << endl;
+ QmcMetric* simple_now2 = group2.addMetric("simple.now");
+ simple_now2->dump(cerr);
+ simple_now2->indom()->dump(cerr);
+
+ cerr << endl << "*** Group 2 Fetch 6 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+ simple_now2->dump(cerr);
+
+ cerr << endl << "*** Add an instance to the PMDA ***" << endl;
+ changeConf("sec,min,hour");
+
+ cerr << endl << "*** Group 2 Fetch 7 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+ simple_now2->dump(cerr);
+
+ cerr << endl << "*** Updating indom ***" << endl;
+ if (simple_now2->indom()->changed())
+ simple_now2->updateIndom();
+ else
+ cerr << "Nothing to update!" << endl;
+
+ simple_now2->dump(cerr);
+ simple_now2->indom()->dump(cerr);
+
+ cerr << endl << "*** Group 2 Fetch 8 ***" << endl;
+ group2.fetch();
+ simple_now->dump(cerr);
+ simple_now2->dump(cerr);
+
+ cerr << endl << "*** Exiting ***" << endl;
+ return sts;
+}
diff --git a/qa/qt/qmc_metric/qmc_metric.pro b/qa/qt/qmc_metric/qmc_metric.pro
new file mode 100644
index 0000000..49262c9
--- /dev/null
+++ b/qa/qt/qmc_metric/qmc_metric.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_metric.cpp
+CONFIG += qt warn_on
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/qmc_source/GNUmakefile b/qa/qt/qmc_source/GNUmakefile
new file mode 100644
index 0000000..f6f1023
--- /dev/null
+++ b/qa/qt/qmc_source/GNUmakefile
@@ -0,0 +1,27 @@
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+COMMAND = qmc_source
+PROJECT = $(COMMAND).pro
+SOURCES = $(COMMAND).cpp
+TESTDIR = $(PCP_VAR_DIR)/testsuite/qt/$(COMMAND)
+
+LSRCFILES = $(PROJECT) $(SOURCES)
+LDIRDIRT = build $(COMMAND).xcodeproj
+LDIRT = $(COMMAND) *.o Makefile
+
+default default_pcp:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+install install_pcp: default
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+ $(INSTALL) -m 644 $(PROJECT) $(SOURCES) $(TESTDIR)
+ifeq "$(ENABLE_QT)" "true"
+ $(INSTALL) -m 755 $(BINARY) $(TESTDIR)/$(COMMAND)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_source/GNUmakefile.install b/qa/qt/qmc_source/GNUmakefile.install
new file mode 100644
index 0000000..13b7a03
--- /dev/null
+++ b/qa/qt/qmc_source/GNUmakefile.install
@@ -0,0 +1,18 @@
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+COMMAND = qmc_source
+PROJECT = $(COMMAND).pro
+
+default setup install:
+ifeq "$(ENABLE_QT)" "true"
+ $(QTMAKE)
+ $(LNMAKE)
+endif
+
+include $(BUILDRULES)
diff --git a/qa/qt/qmc_source/qmc_source.cpp b/qa/qt/qmc_source/qmc_source.cpp
new file mode 100644
index 0000000..ea753f7
--- /dev/null
+++ b/qa/qt/qmc_source/qmc_source.cpp
@@ -0,0 +1,126 @@
+//
+// Test QmcSource class
+//
+
+#include <QTextStream>
+#include <qmc_source.h>
+
+QTextStream cerr(stderr);
+QTextStream cout(stdout);
+
+int
+main(int argc, char* argv[])
+{
+ int sts = 0;
+ int c;
+ char buf[MAXHOSTNAMELEN];
+ QString source;
+
+ pmProgname = basename(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D':
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ pmprintf("%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ sts = 1;
+ }
+ else {
+ pmDebug |= sts;
+ sts = 0;
+ }
+ break;
+ case '?':
+ default:
+ sts = 1;
+ break;
+ }
+ }
+
+ if (sts) {
+ pmprintf("Usage: %s\n", pmProgname);
+ pmflush();
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ (void)gethostname(buf, MAXHOSTNAMELEN);
+ buf[MAXHOSTNAMELEN-1] = '\0';
+
+ fprintf(stderr,"*** Create an archive context ***\n");
+ source = "archives/oview-short";
+ QmcSource* src1 = QmcSource::getSource(PM_CONTEXT_ARCHIVE, source, false);
+
+ if (src1->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to \"oview-short\": %s\n",
+ pmProgname, pmErrStr(src1->status()));
+ pmflush();
+ sts = 1;
+ }
+
+ fprintf(stderr,"\n*** Create an archive context using the host name ***\n");
+ source = QString("snort");
+ QmcSource* src2 = QmcSource::getSource(PM_CONTEXT_HOST, source, true);
+
+ if (src2->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to \"%s\": %s\n",
+ pmProgname, (const char *)source.toAscii(),
+ pmErrStr(src2->status()));
+ pmflush();
+ sts = 1;
+ }
+
+ if (src1 != src2) {
+ pmprintf("%s: Error: Matching host to an archive failed: src1 = %s, src2 = %s\n",
+ pmProgname, (const char *)src1->desc().toAscii(),
+ (const char *)src2->desc().toAscii());
+ pmflush();
+ QmcSource::dumpList(cerr);
+ sts = 1;
+ }
+
+ fprintf(stderr,"\n*** Create two live contexts to the local host ***\n");
+ source = buf;
+ QmcSource* src3 = QmcSource::getSource(PM_CONTEXT_HOST, source);
+ QmcSource* src4 = QmcSource::getSource(PM_CONTEXT_HOST, source);
+
+ if (src3->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to \"%s\": %s\n",
+ pmProgname, buf, pmErrStr(src3->status()));
+ pmflush();
+ }
+
+ if (src4->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to \"%s\": %s\n",
+ pmProgname, buf, pmErrStr(src4->status()));
+ pmflush();
+ }
+
+ if (src3 != src4) {
+ pmprintf("%s: Error: Identical host test failed: src3 = %s, src4 = %s\n",
+ pmProgname, (const char *)src3->desc().toAscii(),
+ (const char *)src4->desc().toAscii());
+ pmflush();
+ QmcSource::dumpList(cerr);
+ sts = 1;
+ }
+
+ fprintf(stderr,"\n*** Create a local context ***\n");
+ source = QString::null;
+ QmcSource* src5 = QmcSource::getSource(PM_CONTEXT_LOCAL, source);
+
+ if (src5->status() < 0) {
+ pmprintf("%s: Error: Unable to create context to localhost: %s\n",
+ pmProgname, pmErrStr(src5->status()));
+ pmflush();
+ sts = 1;
+ }
+
+ fprintf(stderr,"\n*** List all known sources ***\n");
+ QmcSource::dumpList(cout);
+
+ pmflush();
+ return sts;
+}
diff --git a/qa/qt/qmc_source/qmc_source.pro b/qa/qt/qmc_source/qmc_source.pro
new file mode 100644
index 0000000..e0ed9f8
--- /dev/null
+++ b/qa/qt/qmc_source/qmc_source.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+LANGUAGE = C++
+SOURCES = qmc_source.cpp
+CONFIG += qt warn_on
+release:DESTDIR = build/debug
+debug:DESTDIR = build/release
+INCLUDEPATH += ../../../src/include
+INCLUDEPATH += ../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp/src
+LIBS += -L../../../src/libpcp_qmc/src
+LIBS += -L../../../src/libpcp_qmc/src/$$DESTDIR
+LIBS += -lpcp_qmc -lpcp
+QT -= gui
diff --git a/qa/qt/setup-executables b/qa/qt/setup-executables
new file mode 100755
index 0000000..2751da1
--- /dev/null
+++ b/qa/qt/setup-executables
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# Very ugly picker for executables from a build.
+#
+# Problem is that /var/lib/pcp/testsuite/qa is populated from the
+# packaging, but in a build context the qmc headers are defined in
+# ../../src/libpcp_qmc/src but the qmc library and the standard
+# PCP headers are not in ../../src they are out in the build area
+# c/o Makepkgs
+#
+
+if [ -z "$PCP_DIR" ]
+then
+ . /etc/pcp.conf
+else
+ . "$PCP_DIR"/etc/pcp.conf
+fi
+
+builddir=''
+for builddir in ../../build/deb/pcp-$PCP_VERSION/qa/qt $PCP_VAR_DIR/testsuite/qt ''
+do
+ [ -n "$builddir" -a -d "$builddir" ] && break
+done
+
+for x in qmc_*
+do
+ [ -x $x/$x ] && continue
+ echo -n "Hunting for $x executable ... "
+ if [ -z "$builddir" ]
+ then
+ echo "no build dir, not found"
+ elif [ -x $builddir/$x/$x ]
+ then
+ cp $builddir/$x/$x $x/$x
+ echo OK
+ else
+ echo "not found"
+ fi
+done
diff --git a/qa/recheck b/qa/recheck
new file mode 100755
index 0000000..165bb29
--- /dev/null
+++ b/qa/recheck
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# Rerun check for all the tests that failed last time ... the
+# ones with a *.out.bad file
+#
+
+list=`echo *.out.bad | sed -e 's/.out.bad//g'`
+
+if [ "$list" = "*" ]
+then
+ echo "Nothing failed, bozo!"
+ exit 1
+fi
+
+./check $* $list
diff --git a/qa/remake b/qa/remake
new file mode 100755
index 0000000..e0c916a
--- /dev/null
+++ b/qa/remake
@@ -0,0 +1,88 @@
+#! /bin/sh
+#
+# Recreate validate NNN.out files for PCP QA tests
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+tmp=/tmp/$$
+trap "rm -f NO-PREVIOUS-OUTPUT $tmp.*; exit" 0 1 2 3 15
+
+set -- $* -q
+
+# generic initialization
+iam=remake
+. ./common
+
+_do_diff()
+{
+ case $diff
+ in
+ xxdiff)
+ # hide the 0|1 output ... this is sick!
+ #
+ $diff $1 $2 >/dev/null
+ ;;
+ *)
+ $diff $1 $2
+ ;;
+ esac
+}
+
+[ -f check.time ] || touch check.time
+
+for seq in $list
+do
+ if [ -f expunged ] && $expunge && egrep "^$seq([ ]|\$)" expunged >/dev/null
+ then
+ echo "Remake: \"$seq\" has been expunged"
+ elif [ ! -f $seq ]
+ then
+ echo "Remake: cannot find \"$seq\""
+ else
+ if [ -f $seq.out -a ! -w $seq.out ]
+ then
+ echo "Error: cannot write \"$seq.out\""
+ exit 1
+ fi
+ if [ -f $seq.full.ok -a ! -w $seq.full.ok ]
+ then
+ echo "Error: cannot write \"$seq.full.ok\""
+ exit 1
+ fi
+ $PCP_ECHO_PROG $PCP_ECHO_N "$seq""$PCP_ECHO_C"
+ lasttime=`sed -n -e "/^$seq /s/.* //p" <check.time`
+ [ "X$lasttime" != X ] && $PCP_ECHO_PROG $PCP_ECHO_N " ${lasttime}s""$PCP_ECHO_C"
+ rm -f $seq.out.bak $seq.full.ok.bak
+ if sh $seq >$seq.new 2>&1
+ then
+ if [ -f $seq.notrun ]
+ then
+ echo " [not run] `cat $seq.notrun`"
+ echo "... obviously no $seq.out to save!"
+ rm -f $seq.notrun
+ continue
+ fi
+ if [ -f $seq.out ]
+ then
+ _do_diff $seq.out $seq.new
+ rm -f $seq.out.bad
+ else
+ touch NO-PREVIOUS-OUTPUT
+ _do_diff NO-PREVIOUS-OUTPUT $seq.new 2>/dev/null
+ rm -f NO-PREVIOUS-OUTPUT
+ fi
+ echo ""
+ [ -f $seq.out ] && mv $seq.out $seq.out.bak
+ mv $seq.new $seq.out
+ [ -f $seq.full.ok ] && mv $seq.full.ok $seq.full.ok.bak
+ [ -f $seq.full ] && mv $seq.full $seq.full.ok
+ else
+ echo " - failed (exit status $?)"
+ sed 's/^/ /' $seq.new
+ exit 1
+ fi
+ fi
+done
+
+exit 0
diff --git a/qa/sadist/859117-rhel5.bin b/qa/sadist/859117-rhel5.bin
new file mode 100644
index 0000000..ccebd00
--- /dev/null
+++ b/qa/sadist/859117-rhel5.bin
Binary files differ
diff --git a/qa/sadist/859117-rhel5.xml b/qa/sadist/859117-rhel5.xml
new file mode 100644
index 0000000..05c493c
--- /dev/null
+++ b/qa/sadist/859117-rhel5.xml
@@ -0,0 +1,2282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "DTD v1.0 sysstat //EN"
+"http://perso.orange.fr/sebastien.godard/sysstat.dtd">
+<sysstat>
+ <sysdata-version>1.0</sysdata-version>
+ <host nodename="localhost.localdomain">
+ <sysname>Linux</sysname>
+ <release>2.6.18-308.13.1.el5</release>
+ <statistics>
+ <timestamp date="2012-09-20" time="14:35:01" interval="60">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="235,69"/>
+ <cpu-load>
+ <cpu number="all" user="2,53" nice="0,00" system="0,80" iowait="11,04" steal="0,00" idle="85,63"/>
+ <cpu number="0" user="1,09" nice="0,00" system="1,52" iowait="26,66" steal="0,00" idle="70,73"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,03" iowait="0,00" steal="0,00" idle="99,97"/>
+ <cpu number="2" user="0,02" nice="0,00" system="0,12" iowait="0,00" steal="0,00" idle="99,87"/>
+ <cpu number="3" user="9,03" nice="0,00" system="1,49" iowait="17,54" steal="0,00" idle="71,94"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1144,86"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,26"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="83,76"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="3,62"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="5,39"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="53,82"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>482,39</tps>
+ <io-reads rtps="446,99" bread="7576,93"/>
+ <io-writes wtps="35,39" bwrtn="484,51"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="2,55" txpck="2,12" rxbyt="426,71" txbyt="370,60" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="110" tcpsck="8" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="1894,24" pgpgout="120,32" fault="380,08" majflt="0,48"/>
+ <memory per="second" unit="kB">
+ <memfree>410544</memfree>
+ <memused>484360</memused>
+ <memused-percent>54,12</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>17392</buffers>
+ <cached>261120</cached>
+ <frmpg>-749,88</frmpg>
+ <bufpg>7,10</bufpg>
+ <campg>472,39</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>8963</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>6051</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,43" ldavg-5="0,31" ldavg-15="0,15"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:36:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="34,82"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,09" iowait="0,12" steal="0,00" idle="99,79"/>
+ <cpu number="0" user="0,02" nice="0,00" system="0,20" iowait="0,20" steal="0,00" idle="99,58"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,05" iowait="0,00" steal="0,00" idle="99,95"/>
+ <cpu number="2" user="0,02" nice="0,00" system="0,07" iowait="0,00" steal="0,00" idle="99,92"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,07" iowait="0,27" steal="0,00" idle="99,67"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,25"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,42"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,57"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="6,88"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="2,12"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,28"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>3,20</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="3,20" bwrtn="32,02"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,52" txpck="0,02" rxbyt="26,75" txbyt="0,77" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="110" tcpsck="8" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="8,01" fault="20,19" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>410792</memfree>
+ <memused>484112</memused>
+ <memused-percent>54,10</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>17424</buffers>
+ <cached>261128</cached>
+ <frmpg>1,03</frmpg>
+ <bufpg>0,13</bufpg>
+ <campg>0,03</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>8963</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>6051</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,16" ldavg-5="0,25" ldavg-15="0,14"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:37:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="33,70"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,08" iowait="0,13" steal="0,00" idle="99,78"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,23" iowait="0,52" steal="0,00" idle="99,25"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,03" iowait="0,00" steal="0,00" idle="99,97"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,31"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,57"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,73"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="8,99"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,81</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,81" bwrtn="19,58"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,50" txpck="0,00" rxbyt="25,97" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="110" tcpsck="8" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="4,93" fault="20,16" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>410544</memfree>
+ <memused>484360</memused>
+ <memused-percent>54,12</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>17452</buffers>
+ <cached>261128</cached>
+ <frmpg>-1,03</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>8963</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>6051</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,06" ldavg-5="0,20" ldavg-15="0,12"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:38:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="35,21"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,08" iowait="0,07" steal="0,00" idle="99,85"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,25" iowait="0,28" steal="0,00" idle="99,47"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,02" iowait="0,03" steal="0,00" idle="99,95"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ <cpu number="3" user="0,02" nice="0,00" system="0,05" iowait="0,00" steal="0,00" idle="99,93"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,95"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="999,18"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,77"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,00"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>2,00</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="2,00" bwrtn="22,01"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,52" txpck="0,02" rxbyt="26,78" txbyt="0,77" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="110" tcpsck="8" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,47" fault="20,14" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>410668</memfree>
+ <memused>484236</memused>
+ <memused-percent>54,11</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>17480</buffers>
+ <cached>261132</cached>
+ <frmpg>0,52</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>8963</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>6051</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,02" ldavg-5="0,16" ldavg-15="0,11"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:39:01" interval="59">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="36,77"/>
+ <cpu-load>
+ <cpu number="all" user="0,02" nice="0,00" system="0,10" iowait="0,11" steal="0,00" idle="99,77"/>
+ <cpu number="0" user="0,05" nice="0,00" system="0,32" iowait="0,37" steal="0,00" idle="99,25"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,03" iowait="0,07" steal="0,00" idle="99,90"/>
+ <cpu number="3" user="0,02" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,97"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1012,35"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="999,00"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="4,19"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,16"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>2,27</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="2,27" bwrtn="24,30"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="2,43" txpck="1,82" rxbyt="1098,35" txbyt="179,25" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="110" tcpsck="8" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="6,45" fault="21,36" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>411040</memfree>
+ <memused>483864</memused>
+ <memused-percent>54,07</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>17508</buffers>
+ <cached>261136</cached>
+ <frmpg>1,58</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>8963</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>6054</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,00" ldavg-5="0,13" ldavg-15="0,10"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:40:01" interval="60">
+ <processes per="second" proc="2,42"/>
+ <context-switch per="second" cswch="388,89"/>
+ <cpu-load>
+ <cpu number="all" user="1,31" nice="0,00" system="1,34" iowait="14,31" steal="0,00" idle="83,04"/>
+ <cpu number="0" user="1,18" nice="0,02" system="1,90" iowait="4,65" steal="0,00" idle="92,24"/>
+ <cpu number="1" user="0,10" nice="0,00" system="0,12" iowait="0,08" steal="0,00" idle="99,70"/>
+ <cpu number="2" user="0,08" nice="0,00" system="0,33" iowait="0,00" steal="0,00" idle="99,58"/>
+ <cpu number="3" user="3,87" nice="0,00" system="3,02" iowait="52,50" steal="0,00" idle="40,62"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1219,93"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="995,75"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="103,79"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="3,62"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="5,39"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="111,39"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>373,13</tps>
+ <io-reads rtps="251,37" bread="3686,19"/>
+ <io-writes wtps="121,76" bwrtn="1509,81"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="70,35" txpck="42,31" rxbyt="47750,57" txbyt="4033,92" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="110" tcpsck="8" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="921,55" pgpgout="379,59" fault="908,19" majflt="9,39"/>
+ <memory per="second" unit="kB">
+ <memfree>335232</memfree>
+ <memused>559672</memused>
+ <memused-percent>62,54</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>39240</buffers>
+ <cached>306604</cached>
+ <frmpg>-316,08</frmpg>
+ <bufpg>90,61</bufpg>
+ <campg>189,58</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>13936</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11161</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,61" ldavg-5="0,26" ldavg-15="0,14"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:41:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="58,94"/>
+ <cpu-load>
+ <cpu number="all" user="0,39" nice="0,00" system="0,23" iowait="5,31" steal="0,00" idle="94,07"/>
+ <cpu number="0" user="0,25" nice="0,00" system="0,27" iowait="0,80" steal="0,00" idle="98,69"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,03" iowait="0,08" steal="0,00" idle="99,88"/>
+ <cpu number="2" user="0,03" nice="0,02" system="0,10" iowait="0,00" steal="0,00" idle="99,85"/>
+ <cpu number="3" user="1,29" nice="0,00" system="0,53" iowait="20,35" steal="0,00" idle="77,83"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1019,15"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,70"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="2,44"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="6,86"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="2,11"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="9,04"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>82,96</tps>
+ <io-reads rtps="2,26" bread="18,07"/>
+ <io-writes wtps="80,70" bwrtn="927,15"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="4,15" txpck="3,42" rxbyt="358,40" txbyt="3360,99" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="7" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="4,52" pgpgout="229,33" fault="294,47" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>414260</memfree>
+ <memused>480644</memused>
+ <memused-percent>53,71</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>39832</buffers>
+ <cached>306008</cached>
+ <frmpg>328,13</frmpg>
+ <bufpg>2,46</bufpg>
+ <campg>-2,47</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14135</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11321</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,39" ldavg-5="0,28" ldavg-15="0,16"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:42:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="31,28"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,10" iowait="0,16" steal="0,00" idle="99,73"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,23" iowait="0,48" steal="0,00" idle="99,28"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,07" iowait="0,12" steal="0,00" idle="99,82"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,07" iowait="0,00" steal="0,00" idle="99,93"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,05" iowait="0,03" steal="0,00" idle="99,92"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1007,93"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,15"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,77"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,01"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>2,04</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="2,04" bwrtn="22,30"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,53" txpck="0,05" rxbyt="27,51" txbyt="2,57" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="7" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,54" fault="20,15" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>414384</memfree>
+ <memused>480520</memused>
+ <memused-percent>53,70</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>39860</buffers>
+ <cached>306016</cached>
+ <frmpg>0,52</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,03</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14135</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11321</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,14" ldavg-5="0,23" ldavg-15="0,15"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:43:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="32,10"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,09" iowait="0,08" steal="0,00" idle="99,83"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,25" iowait="0,22" steal="0,00" idle="99,53"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,02" iowait="0,03" steal="0,00" idle="99,95"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,03" iowait="0,00" steal="0,00" idle="99,97"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,03" iowait="0,05" steal="0,00" idle="99,92"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,18"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,41"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,75"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,02"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,80</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,80" bwrtn="19,64"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,50" txpck="0,00" rxbyt="26,06" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="4,94" fault="20,14" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>414136</memfree>
+ <memused>480768</memused>
+ <memused-percent>53,72</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>39888</buffers>
+ <cached>306016</cached>
+ <frmpg>-1,04</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14135</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11321</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,05" ldavg-5="0,18" ldavg-15="0,13"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:44:01" interval="59">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="31,14"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,11" iowait="0,08" steal="0,00" idle="99,80"/>
+ <cpu number="0" user="0,02" nice="0,00" system="0,22" iowait="0,27" steal="0,00" idle="99,49"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,10" iowait="0,00" steal="0,00" idle="99,90"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,07" iowait="0,00" steal="0,00" idle="99,93"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,08" iowait="0,10" steal="0,00" idle="99,81"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,12"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,45"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,80"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="8,86"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,97</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,97" bwrtn="21,87"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,51" txpck="0,02" rxbyt="26,39" txbyt="0,78" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,43" fault="20,95" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>414136</memfree>
+ <memused>480768</memused>
+ <memused-percent>53,72</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>39924</buffers>
+ <cached>306016</cached>
+ <frmpg>0,00</frmpg>
+ <bufpg>0,15</bufpg>
+ <campg>0,00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14135</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11321</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,02" ldavg-5="0,15" ldavg-15="0,12"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:45:01" interval="60">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="30,35"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,08" iowait="0,06" steal="0,00" idle="99,85"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,23" iowait="0,17" steal="0,00" idle="99,60"/>
+ <cpu number="1" user="0,02" nice="0,00" system="0,03" iowait="0,02" steal="0,00" idle="99,93"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,03" iowait="0,05" steal="0,00" idle="99,92"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,17"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,48"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,67"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,02"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,91</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,91" bwrtn="20,32"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,50" txpck="0,00" rxbyt="26,07" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,15" fault="20,14" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>414508</memfree>
+ <memused>480396</memused>
+ <memused-percent>53,68</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>39944</buffers>
+ <cached>306020</cached>
+ <frmpg>1,55</frmpg>
+ <bufpg>0,08</bufpg>
+ <campg>0,02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14135</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11321</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,00" ldavg-5="0,12" ldavg-15="0,11"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:46:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="32,36"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,07" iowait="0,11" steal="0,00" idle="99,81"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,22" iowait="0,25" steal="0,00" idle="99,53"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,03" iowait="0,08" steal="0,00" idle="99,88"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,03" iowait="0,00" steal="0,00" idle="99,97"/>
+ <cpu number="3" user="0,02" nice="0,00" system="0,02" iowait="0,12" steal="0,00" idle="99,85"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,80"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="999,05"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,77"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,00"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,93</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,93" bwrtn="20,79"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,53" txpck="0,00" rxbyt="27,62" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,13" fault="20,18" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>414756</memfree>
+ <memused>480148</memused>
+ <memused-percent>53,65</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>39972</buffers>
+ <cached>306024</cached>
+ <frmpg>1,03</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14135</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11321</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,00" ldavg-5="0,09" ldavg-15="0,10"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:47:01" interval="60">
+ <processes per="second" proc="0,08"/>
+ <context-switch per="second" cswch="38,06"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,08" iowait="0,15" steal="0,00" idle="99,76"/>
+ <cpu number="0" user="0,02" nice="0,00" system="0,28" iowait="0,53" steal="0,00" idle="99,17"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,02" iowait="0,08" steal="0,00" idle="99,90"/>
+ <cpu number="2" user="0,02" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,97"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1010,87"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,50"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="3,33"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,00"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>2,67</tps>
+ <io-reads rtps="0,30" bread="4,80"/>
+ <io-writes wtps="2,37" bwrtn="26,41"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="2,67" txpck="1,28" rxbyt="212,27" txbyt="167,09" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="1,20" pgpgout="6,60" fault="24,94" majflt="0,02"/>
+ <memory per="second" unit="kB">
+ <memfree>414448</memfree>
+ <memused>480456</memused>
+ <memused-percent>53,69</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>40032</buffers>
+ <cached>306088</cached>
+ <frmpg>-1,28</frmpg>
+ <bufpg>0,25</bufpg>
+ <campg>0,27</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14148</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11323</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,00" ldavg-5="0,07" ldavg-15="0,09"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:48:01" interval="60">
+ <processes per="second" proc="0,15"/>
+ <context-switch per="second" cswch="42,74"/>
+ <cpu-load>
+ <cpu number="all" user="1,34" nice="0,00" system="0,19" iowait="0,38" steal="0,00" idle="98,09"/>
+ <cpu number="0" user="2,22" nice="0,00" system="0,57" iowait="1,27" steal="0,00" idle="95,94"/>
+ <cpu number="1" user="3,04" nice="0,00" system="0,13" iowait="0,27" steal="0,00" idle="96,56"/>
+ <cpu number="2" user="0,10" nice="0,00" system="0,05" iowait="0,00" steal="0,00" idle="99,85"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1012,89"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,26"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="5,63"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,02"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>9,38</tps>
+ <io-reads rtps="4,11" bread="121,54"/>
+ <io-writes wtps="5,28" bwrtn="64,51"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="3,16" txpck="1,84" rxbyt="404,17" txbyt="304,41" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="108" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="30,38" pgpgout="16,23" fault="505,74" majflt="0,28"/>
+ <memory per="second" unit="kB">
+ <memfree>336492</memfree>
+ <memused>558412</memused>
+ <memused-percent>62,40</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>40204</buffers>
+ <cached>307772</cached>
+ <frmpg>-325,36</frmpg>
+ <bufpg>0,72</bufpg>
+ <campg>7,03</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14461</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11382</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="1" plist-sz="142" ldavg-1="0,08" ldavg-5="0,07" ldavg-15="0,09"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:49:01" interval="60">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="35,57"/>
+ <cpu-load>
+ <cpu number="all" user="0,69" nice="0,00" system="0,14" iowait="0,17" steal="0,00" idle="99,00"/>
+ <cpu number="0" user="1,93" nice="0,00" system="0,47" iowait="0,57" steal="0,00" idle="97,03"/>
+ <cpu number="1" user="0,82" nice="0,00" system="0,02" iowait="0,07" steal="0,00" idle="99,10"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,05" iowait="0,00" steal="0,00" idle="99,95"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,05" iowait="0,03" steal="0,00" idle="99,92"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,98"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,55"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="1,43"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,00"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>15,50</tps>
+ <io-reads rtps="0,43" bread="3,47"/>
+ <io-writes wtps="15,07" bwrtn="196,17"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,75" txpck="0,25" rxbyt="42,17" txbyt="59,11" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="108" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,87" pgpgout="49,01" fault="48,82" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>334944</memfree>
+ <memused>559960</memused>
+ <memused-percent>62,57</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>40240</buffers>
+ <cached>307840</cached>
+ <frmpg>-6,45</frmpg>
+ <bufpg>0,15</bufpg>
+ <campg>0,28</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14463</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11382</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,03" ldavg-5="0,06" ldavg-15="0,08"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="14:50:01" interval="60">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="33,36"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,09" iowait="0,07" steal="0,00" idle="99,84"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,25" iowait="0,20" steal="0,00" idle="99,55"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,03" iowait="0,02" steal="0,00" idle="99,95"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,03" iowait="0,05" steal="0,00" idle="99,92"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,64"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,90"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,73"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,01"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,85</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,85" bwrtn="20,56"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,50" txpck="0,00" rxbyt="26,03" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="108" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,14" fault="20,14" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>334448</memfree>
+ <memused>560456</memused>
+ <memused-percent>62,63</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>40268</buffers>
+ <cached>307840</cached>
+ <frmpg>-2,07</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>14463</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>11382</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="142" ldavg-1="0,01" ldavg-5="0,05" ldavg-15="0,08"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="15:14:01" interval="60">
+ <processes per="second" proc="0,12"/>
+ <context-switch per="second" cswch="56,72"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,11" system="0,21" iowait="0,86" steal="0,00" idle="98,82"/>
+ <cpu number="0" user="0,02" nice="0,37" system="0,43" iowait="3,11" steal="0,00" idle="96,07"/>
+ <cpu number="1" user="0,02" nice="0,07" system="0,12" iowait="0,02" steal="0,00" idle="99,78"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,20" iowait="0,13" steal="0,00" idle="99,67"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,10" iowait="0,20" steal="0,00" idle="99,70"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1018,11"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="999,20"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="9,17"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="3,01"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="6,01"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,70"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>27,19</tps>
+ <io-reads rtps="16,65" bread="359,31"/>
+ <io-writes wtps="10,54" bwrtn="120,66"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="1,49" txpck="1,14" rxbyt="110,81" txbyt="171,84" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="89,79" pgpgout="30,07" fault="174,71" majflt="0,60"/>
+ <memory per="second" unit="kB">
+ <memfree>603684</memfree>
+ <memused>291220</memused>
+ <memused-percent>32,54</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>15864</buffers>
+ <cached>148876</cached>
+ <frmpg>-71,72</frmpg>
+ <bufpg>3,12</bufpg>
+ <campg>20,38</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>7879</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>5837</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="141" ldavg-1="0,18" ldavg-5="0,54" ldavg-15="0,31"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="15:15:01" interval="60">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="32,94"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,10" iowait="0,10" steal="0,00" idle="99,79"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,25" iowait="0,28" steal="0,00" idle="99,47"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,07" iowait="0,00" steal="0,00" idle="99,93"/>
+ <cpu number="2" user="0,02" nice="0,00" system="0,07" iowait="0,00" steal="0,00" idle="99,92"/>
+ <cpu number="3" user="0,02" nice="0,00" system="0,05" iowait="0,15" steal="0,00" idle="99,78"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1009,17"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="999,33"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,83"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,00"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>2,20</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="2,20" bwrtn="23,60"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,58" txpck="0,07" rxbyt="31,91" txbyt="7,20" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,93" fault="20,49" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>603940</memfree>
+ <memused>290964</memused>
+ <memused-percent>32,51</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>15896</buffers>
+ <cached>148880</cached>
+ <frmpg>1,07</frmpg>
+ <bufpg>0,13</bufpg>
+ <campg>0,02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>7879</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>5837</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,06" ldavg-5="0,44" ldavg-15="0,28"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="15:16:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="33,07"/>
+ <cpu-load>
+ <cpu number="all" user="0,01" nice="0,00" system="0,09" iowait="0,10" steal="0,00" idle="99,81"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,22" iowait="0,27" steal="0,00" idle="99,52"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,05" iowait="0,00" steal="0,00" idle="99,95"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,02" iowait="0,00" steal="0,00" idle="99,98"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,03" iowait="0,10" steal="0,00" idle="99,87"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1009,32"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="999,47"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,85"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,00"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,97</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,97" bwrtn="20,94"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,62" txpck="0,07" rxbyt="35,78" txbyt="6,47" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,20" fault="20,08" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>603940</memfree>
+ <memused>290964</memused>
+ <memused-percent>32,51</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>15924</buffers>
+ <cached>148884</cached>
+ <frmpg>0,00</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>7879</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>5837</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,02" ldavg-5="0,36" ldavg-15="0,26"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="15:17:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="34,92"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,15" iowait="0,07" steal="0,00" idle="99,78"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,23" iowait="0,27" steal="0,00" idle="99,50"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,10" iowait="0,00" steal="0,00" idle="99,90"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,13" iowait="0,00" steal="0,00" idle="99,87"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,12" iowait="0,02" steal="0,00" idle="99,87"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1009,06"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="999,32"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,73"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,01"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,92</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,92" bwrtn="20,55"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,50" txpck="0,00" rxbyt="26,03" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,14" fault="20,10" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>604312</memfree>
+ <memused>290592</memused>
+ <memused-percent>32,47</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>15952</buffers>
+ <cached>148888</cached>
+ <frmpg>1,55</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>7879</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>5837</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,01" ldavg-5="0,29" ldavg-15="0,24"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="15:18:01" interval="59">
+ <processes per="second" proc="0,05"/>
+ <context-switch per="second" cswch="34,18"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,15" iowait="0,09" steal="0,00" idle="99,75"/>
+ <cpu number="0" user="0,02" nice="0,00" system="0,25" iowait="0,22" steal="0,00" idle="99,51"/>
+ <cpu number="1" user="0,00" nice="0,00" system="0,14" iowait="0,00" steal="0,00" idle="99,86"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,12" iowait="0,00" steal="0,00" idle="99,88"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,10" iowait="0,12" steal="0,00" idle="99,78"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,44"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,79"/>
+ <irqcpu cpu="0" intr="1" value="0,00"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,78"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="8,86"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>1,92</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="1,92" bwrtn="21,60"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,53" txpck="0,02" rxbyt="27,27" txbyt="0,78" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,37" fault="20,92" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>603692</memfree>
+ <memused>291212</memused>
+ <memused-percent>32,54</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>15980</buffers>
+ <cached>148888</cached>
+ <frmpg>-2,63</frmpg>
+ <bufpg>0,12</bufpg>
+ <campg>0,00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>7879</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>5837</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,00" ldavg-5="0,23" ldavg-15="0,23"/>
+ </timestamp>
+ <timestamp date="2012-09-20" time="15:19:01" interval="60">
+ <processes per="second" proc="0,07"/>
+ <context-switch per="second" cswch="34,27"/>
+ <cpu-load>
+ <cpu number="all" user="0,00" nice="0,00" system="0,14" iowait="0,08" steal="0,00" idle="99,78"/>
+ <cpu number="0" user="0,00" nice="0,00" system="0,25" iowait="0,25" steal="0,00" idle="99,50"/>
+ <cpu number="1" user="0,02" nice="0,00" system="0,12" iowait="0,00" steal="0,00" idle="99,87"/>
+ <cpu number="2" user="0,00" nice="0,00" system="0,10" iowait="0,00" steal="0,00" idle="99,90"/>
+ <cpu number="3" user="0,00" nice="0,00" system="0,10" iowait="0,07" steal="0,00" idle="99,83"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="1008,46"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="998,65"/>
+ <irqcpu cpu="0" intr="1" value="0,07"/>
+ <irqcpu cpu="0" intr="6" value="0,00"/>
+ <irqcpu cpu="0" intr="8" value="0,00"/>
+ <irqcpu cpu="0" intr="9" value="0,00"/>
+ <irqcpu cpu="0" intr="10" value="0,70"/>
+ <irqcpu cpu="0" intr="11" value="0,00"/>
+ <irqcpu cpu="0" intr="12" value="0,00"/>
+ <irqcpu cpu="0" intr="15" value="9,02"/>
+ <irqcpu cpu="1" intr="0" value="0,00"/>
+ <irqcpu cpu="1" intr="1" value="0,00"/>
+ <irqcpu cpu="1" intr="6" value="0,00"/>
+ <irqcpu cpu="1" intr="8" value="0,00"/>
+ <irqcpu cpu="1" intr="9" value="0,00"/>
+ <irqcpu cpu="1" intr="10" value="0,00"/>
+ <irqcpu cpu="1" intr="11" value="0,00"/>
+ <irqcpu cpu="1" intr="12" value="0,00"/>
+ <irqcpu cpu="1" intr="15" value="0,00"/>
+ <irqcpu cpu="2" intr="0" value="0,00"/>
+ <irqcpu cpu="2" intr="1" value="0,00"/>
+ <irqcpu cpu="2" intr="6" value="0,00"/>
+ <irqcpu cpu="2" intr="8" value="0,00"/>
+ <irqcpu cpu="2" intr="9" value="0,00"/>
+ <irqcpu cpu="2" intr="10" value="0,00"/>
+ <irqcpu cpu="2" intr="11" value="0,00"/>
+ <irqcpu cpu="2" intr="12" value="0,00"/>
+ <irqcpu cpu="2" intr="15" value="0,00"/>
+ <irqcpu cpu="3" intr="0" value="0,00"/>
+ <irqcpu cpu="3" intr="1" value="0,00"/>
+ <irqcpu cpu="3" intr="6" value="0,00"/>
+ <irqcpu cpu="3" intr="8" value="0,00"/>
+ <irqcpu cpu="3" intr="9" value="0,00"/>
+ <irqcpu cpu="3" intr="10" value="0,00"/>
+ <irqcpu cpu="3" intr="11" value="0,00"/>
+ <irqcpu cpu="3" intr="12" value="0,00"/>
+ <irqcpu cpu="3" intr="15" value="0,00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0,00" pswpout="0,00"/>
+ <io per="second">
+ <tps>2,01</tps>
+ <io-reads rtps="0,00" bread="0,00"/>
+ <io-writes wtps="2,01" bwrtn="21,52"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0,00" xmtin="0,00" framerr="0,00" prtyerr="0,00" brk="0,00" ovrun="0,00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0,00" txpck="0,00" rxbyt="0,00" txbyt="0,00" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="0,57" txpck="0,05" rxbyt="31,28" txbyt="6,25" rxcmp="0,00" txcmp="0,00" rxmcst="0,00"/>
+ <net-edev rxerr="0,00" txerr="0,00" coll="0,00" rxdrop="0,00" txdrop="0,00" txcarr="0,00" rxfram="0,00" rxfifo="0,00" txfifo="0,00"/>
+ </net-device>
+ <net-nfs call="0,00" retrans="0,00" read="0,00" write="0,00" access="0,00" getatt="0,00"/>
+ <net-nfsd scall="0,00" badcall="0,00" packet="0,00" udp="0,00" tcp="0,00" hit="0,00" miss="0,00" sread="0,00" swrite="0,00" saccess="0,00" sgetatt="0,00"/>
+ <net-sock totsck="105" tcpsck="6" udpsck="6" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0,00" pgpgout="5,41" fault="20,12" majflt="0,00"/>
+ <memory per="second" unit="kB">
+ <memfree>603692</memfree>
+ <memused>291212</memused>
+ <memused-percent>32,54</memused-percent>
+ <swpfree>1048568</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0,00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>16000</buffers>
+ <cached>148896</cached>
+ <frmpg>0,00</frmpg>
+ <bufpg>0,08</bufpg>
+ <campg>0,03</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>7879</dentunusd>
+ <file-sz>0</file-sz>
+ <inode-sz>5837</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0,00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0,00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0,00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="140" ldavg-1="0,00" ldavg-5="0,19" ldavg-15="0,21"/>
+ </timestamp>
+ </statistics>
+ <restarts>
+ <boot date="2012-09-20" time="14:29:37"/>
+ <boot date="2012-09-20" time="15:09:29"/>
+ </restarts>
+ </host>
+</sysstat>
diff --git a/qa/sadist/891688-dash-time.xml b/qa/sadist/891688-dash-time.xml
new file mode 100644
index 0000000..f802b25
--- /dev/null
+++ b/qa/sadist/891688-dash-time.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sysstat PUBLIC "DTD v2.13 sysstat //EN"
+"http://pagesperso-orange.fr/sebastien.godard/sysstat.dtd">
+<sysstat>
+ <sysdata-version>2.13</sysdata-version>
+ <host nodename="very.elastic.org">
+ <sysname>Linux</sysname>
+ <release>3.6.8-2.fc17.x86_64</release>
+ <machine>x86_64</machine>
+ <number-of-cpus>1</number-of-cpus>
+ <file-date>2012-12-31</file-date>
+ <statistics>
+ <timestamp date="2012-12-31" time="05-10-01" utc="1" interval="600">
+ <process-and-context-switch per="second" proc="0.06" cswch="1272.70"/>
+ </timestamp>
+ </statistics>
+ <restarts>
+ </restarts>
+ </host>
+</sysstat>
diff --git a/qa/sadist/GNUmakefile b/qa/sadist/GNUmakefile
new file mode 100644
index 0000000..45cca77
--- /dev/null
+++ b/qa/sadist/GNUmakefile
@@ -0,0 +1,21 @@
+#!gmake
+
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/sadist
+
+SADBIN = fche-csb6-rhel6.bin 859117-rhel5.bin f16-sa20.bin \
+ rhel5-sa20.bin
+SADXML = fche-csb6-rhel6.xml smash-rhel6.xml smash-rhel5.xml \
+ 859117-rhel5.xml 891688-dash-time.xml
+
+LSRCFILES = $(SADBIN) $(SADXML)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(SADBIN) $(SADXML) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/sadist/f16-sa20.bin b/qa/sadist/f16-sa20.bin
new file mode 100644
index 0000000..fb49dc1
--- /dev/null
+++ b/qa/sadist/f16-sa20.bin
Binary files differ
diff --git a/qa/sadist/fche-csb6-rhel6.bin b/qa/sadist/fche-csb6-rhel6.bin
new file mode 100644
index 0000000..5ca9af2
--- /dev/null
+++ b/qa/sadist/fche-csb6-rhel6.bin
Binary files differ
diff --git a/qa/sadist/fche-csb6-rhel6.xml b/qa/sadist/fche-csb6-rhel6.xml
new file mode 100644
index 0000000..0b917f1
--- /dev/null
+++ b/qa/sadist/fche-csb6-rhel6.xml
@@ -0,0 +1,8599 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "DTD v2.5 sysstat //EN"
+"http://pagesperso-orange.fr/sebastien.godard/sysstat.dtd">
+<sysstat>
+ <sysdata-version>2.5</sysdata-version>
+ <host nodename="fche.csb6">
+ <sysname>Linux</sysname>
+ <release>2.6.32-279.1.1.el6.x86_64</release>
+ <machine>x86_64</machine>
+ <number-of-cpus>1</number-of-cpus>
+ <file-date>2012-09-12</file-date>
+ <statistics>
+ <timestamp date="2012-09-12" time="04:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="28.05"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.46" fault="23.49" majflt="0.00" pgfree="13.59" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.64</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.64" bwrtn="14.78"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>786072</memfree>
+ <memused>1136816</memused>
+ <memused-percent>59.12</memused-percent>
+ <buffers>176336</buffers>
+ <cached>534064</cached>
+ <commit>857456</commit>
+ <commit-percent>14.02</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75415</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72802</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.41" rd_sec="0.00" wr_sec="4.93" avgrq-sz="11.95" avgqu-sz="0.00" await="6.02" svctm="3.23" util-percent="0.13"/>
+ <disk-device dev="dev253-0" tps="0.62" rd_sec="0.00" wr_sec="4.93" avgrq-sz="8.00" avgqu-sz="0.00" await="5.54" svctm="2.17" util-percent="0.13"/>
+ <disk-device dev="dev253-1" tps="0.58" rd_sec="0.00" wr_sec="4.67" avgrq-sz="8.00" avgqu-sz="0.00" await="5.21" svctm="2.06" util-percent="0.12"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="11.53" svctm="4.21" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.18" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="562" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="04:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.85"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.05" fault="14.62" majflt="0.00" pgfree="7.38" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.33"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>786204</memfree>
+ <memused>1136684</memused>
+ <memused-percent>59.11</memused-percent>
+ <buffers>176352</buffers>
+ <cached>534080</cached>
+ <commit>857088</commit>
+ <commit-percent>14.01</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.06</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75414</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72798</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="268" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.11" avgrq-sz="11.57" avgqu-sz="0.00" await="4.88" svctm="2.76" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.11" avgrq-sz="8.00" avgqu-sz="0.00" await="4.66" svctm="1.92" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.86" avgrq-sz="8.00" avgqu-sz="0.00" await="3.49" svctm="1.48" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="22.42" svctm="8.58" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="561" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="04:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.28" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.24"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.28" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.24"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.06"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.03" pgpgout="7.79" fault="68.05" majflt="0.00" pgfree="72.35" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.00</tps>
+ <io-reads rtps="0.03" bread="0.20"/>
+ <io-writes wtps="4.98" bwrtn="46.75"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>785628</memfree>
+ <memused>1137260</memused>
+ <memused-percent>59.14</memused-percent>
+ <buffers>176384</buffers>
+ <cached>534108</cached>
+ <commit>857456</commit>
+ <commit-percent>14.02</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.24</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75415</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72802</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.09" rd_sec="0.07" wr_sec="15.58" avgrq-sz="14.34" avgqu-sz="0.40" await="369.73" svctm="4.64" util-percent="0.51"/>
+ <disk-device dev="dev253-0" tps="1.96" rd_sec="0.07" wr_sec="15.58" avgrq-sz="8.00" avgqu-sz="2.19" await="1118.57" svctm="2.59" util-percent="0.51"/>
+ <disk-device dev="dev253-1" tps="0.44" rd_sec="0.00" wr_sec="3.52" avgrq-sz="8.00" avgqu-sz="0.00" await="7.02" svctm="2.52" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.52" rd_sec="0.07" wr_sec="12.06" avgrq-sz="8.00" avgqu-sz="2.18" await="1441.75" svctm="2.61" util-percent="0.40"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.20" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="562" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="2"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="04:40:02" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.80"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.99" fault="13.29" majflt="0.00" pgfree="6.86" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.34</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.34" bwrtn="11.96"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>785372</memfree>
+ <memused>1137516</memused>
+ <memused-percent>59.16</memused-percent>
+ <buffers>176400</buffers>
+ <cached>534124</cached>
+ <commit>857864</commit>
+ <commit-percent>14.02</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.11</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75415</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72801</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="3.99" avgrq-sz="11.50" avgqu-sz="0.00" await="4.60" svctm="2.48" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.50" rd_sec="0.00" wr_sec="3.99" avgrq-sz="8.00" avgqu-sz="0.00" await="4.91" svctm="1.74" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.73" avgrq-sz="8.00" avgqu-sz="0.00" await="4.20" svctm="1.64" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="15.42" svctm="4.58" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.18" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="561" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="04:50:02" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.63"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.98" fault="12.80" majflt="0.00" pgfree="6.83" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.33</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.33" bwrtn="11.85"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>785388</memfree>
+ <memused>1137500</memused>
+ <memused-percent>59.16</memused-percent>
+ <buffers>176416</buffers>
+ <cached>534136</cached>
+ <commit>857584</commit>
+ <commit-percent>14.02</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.01</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75415</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72801</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="268" ldavg-1="0.07" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="3.95" avgrq-sz="11.67" avgqu-sz="0.00" await="3.92" svctm="2.45" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.49" rd_sec="0.00" wr_sec="3.95" avgrq-sz="8.00" avgqu-sz="0.00" await="4.21" svctm="1.70" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.70" avgrq-sz="8.00" avgqu-sz="0.00" await="3.61" svctm="1.53" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="13.00" svctm="4.11" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.16" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="561" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="05:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.20" iowait="0.11" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.41"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.20" iowait="0.11" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.41"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.99"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="6.28" fault="68.90" majflt="0.00" pgfree="71.81" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>3.87</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="3.87" bwrtn="37.69"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>783988</memfree>
+ <memused>1138900</memused>
+ <memused-percent>59.23</memused-percent>
+ <buffers>176448</buffers>
+ <cached>534152</cached>
+ <commit>857996</commit>
+ <commit-percent>14.03</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.58</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75415</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72802</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.73" rd_sec="0.00" wr_sec="12.56" avgrq-sz="17.29" avgqu-sz="0.21" await="294.21" svctm="4.71" util-percent="0.34"/>
+ <disk-device dev="dev253-0" tps="1.57" rd_sec="0.00" wr_sec="12.56" avgrq-sz="8.00" avgqu-sz="0.66" await="419.64" svctm="2.18" util-percent="0.34"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.66" avgrq-sz="8.00" avgqu-sz="0.00" await="7.09" svctm="2.66" util-percent="0.12"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.11" rd_sec="0.00" wr_sec="8.90" avgrq-sz="8.00" avgqu-sz="0.66" await="589.37" svctm="2.50" util-percent="0.28"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.20" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="562" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="05:10:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.14" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.68"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.14" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.68"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.85"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.45" fault="24.38" majflt="0.00" pgfree="10.72" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.63</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.63" bwrtn="14.68"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>784136</memfree>
+ <memused>1138752</memused>
+ <memused-percent>59.22</memused-percent>
+ <buffers>176464</buffers>
+ <cached>534176</cached>
+ <commit>857584</commit>
+ <commit-percent>14.02</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.06</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75415</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72801</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="268" ldavg-1="0.04" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.41" rd_sec="0.00" wr_sec="4.89" avgrq-sz="12.08" avgqu-sz="0.00" await="6.79" svctm="4.18" util-percent="0.17"/>
+ <disk-device dev="dev253-0" tps="0.61" rd_sec="0.00" wr_sec="4.89" avgrq-sz="8.00" avgqu-sz="0.00" await="7.03" svctm="2.78" util-percent="0.17"/>
+ <disk-device dev="dev253-1" tps="0.58" rd_sec="0.00" wr_sec="4.64" avgrq-sz="8.00" avgqu-sz="0.00" await="6.63" svctm="2.69" util-percent="0.16"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="14.42" svctm="4.42" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.31" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="561" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="05:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.66"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.07" fault="13.03" majflt="0.00" pgfree="6.87" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.41"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>784012</memfree>
+ <memused>1138876</memused>
+ <memused-percent>59.23</memused-percent>
+ <buffers>176488</buffers>
+ <cached>534192</cached>
+ <commit>857712</commit>
+ <commit-percent>14.02</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75415</dentunusd>
+ <file-nr>4608</file-nr>
+ <inode-nr>72801</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.14" avgrq-sz="11.53" avgqu-sz="0.00" await="4.94" svctm="2.75" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.14" avgrq-sz="8.00" avgqu-sz="0.00" await="4.95" svctm="1.92" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.78" avgrq-sz="8.00" avgqu-sz="0.00" await="3.95" svctm="1.58" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="15.41" svctm="5.48" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.28" txpck="2.16" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="561" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="05:30:01" interval="598">
+ <cpu-load-all>
+ <cpu number="all" usr="0.28" nice="0.00" sys="0.22" iowait="0.21" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.26"/>
+ <cpu number="0" usr="0.28" nice="0.00" sys="0.22" iowait="0.21" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.26"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="29.86"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.21" pgpgout="8.69" fault="72.94" majflt="0.00" pgfree="73.39" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.58</tps>
+ <io-reads rtps="0.01" bread="1.28"/>
+ <io-writes wtps="5.57" bwrtn="52.13"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780320</memfree>
+ <memused>1142568</memused>
+ <memused-percent>59.42</memused-percent>
+ <buffers>176552</buffers>
+ <cached>534524</cached>
+ <commit>861240</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-1.54</frmpg>
+ <bufpg>0.03</bufpg>
+ <campg>0.14</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75419</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72823</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.03" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.23" rd_sec="0.43" wr_sec="17.38" avgrq-sz="14.48" avgqu-sz="0.39" await="317.06" svctm="3.85" util-percent="0.47"/>
+ <disk-device dev="dev253-0" tps="2.17" rd_sec="0.43" wr_sec="17.38" avgrq-sz="8.19" avgqu-sz="2.13" await="980.31" svctm="2.18" util-percent="0.47"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.43" wr_sec="3.94" avgrq-sz="8.84" avgqu-sz="0.00" await="4.24" svctm="1.57" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.68" rd_sec="0.00" wr_sec="13.43" avgrq-sz="8.00" avgqu-sz="2.13" await="1267.79" svctm="2.36" util-percent="0.40"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.33" txpck="2.21" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="05:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="28.14"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.13" fault="12.83" majflt="0.00" pgfree="7.09" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.76"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780328</memfree>
+ <memused>1142560</memused>
+ <memused-percent>59.42</memused-percent>
+ <buffers>176584</buffers>
+ <cached>534544</cached>
+ <commit>860828</commit>
+ <commit-percent>14.07</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.00</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72823</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.25" avgrq-sz="11.71" avgqu-sz="0.00" await="3.75" svctm="2.26" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.25" avgrq-sz="8.00" avgqu-sz="0.00" await="3.68" svctm="1.55" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.69" avgrq-sz="8.00" avgqu-sz="0.00" await="3.17" svctm="1.36" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.07" rd_sec="0.00" wr_sec="0.56" avgrq-sz="8.00" avgqu-sz="0.00" await="7.05" svctm="2.81" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="05:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.11" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.11" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.76"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.06" fault="13.11" majflt="0.00" pgfree="7.03" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.37"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780080</memfree>
+ <memused>1142808</memused>
+ <memused-percent>59.43</memused-percent>
+ <buffers>176600</buffers>
+ <cached>534656</cached>
+ <commit>860960</commit>
+ <commit-percent>14.07</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.05</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72823</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.12" avgrq-sz="11.50" avgqu-sz="0.00" await="5.07" svctm="3.35" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.12" avgrq-sz="8.00" avgqu-sz="0.00" await="6.83" svctm="2.34" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="6.86" svctm="2.36" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="6.32" svctm="2.26" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.17" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="06:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.21" iowait="0.24" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.26"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.21" iowait="0.24" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.26"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="28.04"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.12" fault="68.99" majflt="0.00" pgfree="73.03" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.19</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.19" bwrtn="48.70"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780496</memfree>
+ <memused>1142392</memused>
+ <memused-percent>59.41</memused-percent>
+ <buffers>176636</buffers>
+ <cached>534668</cached>
+ <commit>861368</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.17</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72824</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.13" rd_sec="0.00" wr_sec="16.23" avgrq-sz="14.34" avgqu-sz="0.43" await="382.48" svctm="4.15" util-percent="0.47"/>
+ <disk-device dev="dev253-0" tps="2.03" rd_sec="0.00" wr_sec="16.23" avgrq-sz="8.00" avgqu-sz="2.30" await="1134.71" svctm="2.32" util-percent="0.47"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.73" avgrq-sz="8.00" avgqu-sz="0.00" await="4.61" svctm="1.75" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.56" rd_sec="0.00" wr_sec="12.51" avgrq-sz="8.00" avgqu-sz="2.30" await="1471.57" svctm="2.57" util-percent="0.40"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.31" txpck="2.21" rxkB="0.44" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="06:10:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.06" nice="0.00" sys="0.14" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.06" nice="0.00" sys="0.14" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.12" cswch="27.85"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.27" fault="24.90" majflt="0.00" pgfree="10.67" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.52</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.52" bwrtn="13.65"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780488</memfree>
+ <memused>1142400</memused>
+ <memused-percent>59.41</memused-percent>
+ <buffers>176652</buffers>
+ <cached>534684</cached>
+ <commit>861364</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.00</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72824</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.55" avgrq-sz="11.96" avgqu-sz="0.00" await="3.68" svctm="2.26" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.57" rd_sec="0.00" wr_sec="4.55" avgrq-sz="8.00" avgqu-sz="0.00" await="3.65" svctm="1.52" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.54" rd_sec="0.00" wr_sec="4.30" avgrq-sz="8.00" avgqu-sz="0.00" await="3.50" svctm="1.48" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="6.26" svctm="2.21" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.18" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="06:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.05" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.05" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.79"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.04" fault="12.80" majflt="0.00" pgfree="6.84" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.37</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.37" bwrtn="12.22"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780512</memfree>
+ <memused>1142376</memused>
+ <memused-percent>59.41</memused-percent>
+ <buffers>176668</buffers>
+ <cached>534700</cached>
+ <commit>861084</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.01</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72824</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.05" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.07" avgrq-sz="11.73" avgqu-sz="0.00" await="3.44" svctm="2.16" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.07" avgrq-sz="8.00" avgqu-sz="0.00" await="3.44" svctm="1.50" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.82" avgrq-sz="8.00" avgqu-sz="0.00" await="3.35" svctm="1.49" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="4.84" svctm="1.68" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.17" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.11" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="06:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.23" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.28"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.23" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.28"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.95"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.25" fault="66.80" majflt="0.00" pgfree="73.20" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.30</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.30" bwrtn="49.51"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780504</memfree>
+ <memused>1142384</memused>
+ <memused-percent>59.41</memused-percent>
+ <buffers>176700</buffers>
+ <cached>534712</cached>
+ <commit>861088</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.00</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72824</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.17" rd_sec="0.00" wr_sec="16.50" avgrq-sz="14.07" avgqu-sz="0.36" await="303.25" svctm="3.80" util-percent="0.45"/>
+ <disk-device dev="dev253-0" tps="2.06" rd_sec="0.00" wr_sec="16.50" avgrq-sz="8.00" avgqu-sz="1.95" await="946.70" svctm="2.16" util-percent="0.45"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.90" avgrq-sz="8.00" avgqu-sz="0.00" await="5.56" svctm="2.29" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.58" rd_sec="0.00" wr_sec="12.60" avgrq-sz="8.00" avgqu-sz="1.95" await="1237.81" svctm="2.12" util-percent="0.33"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.33" txpck="2.21" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="06:40:02" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.72"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.05" fault="13.23" majflt="0.00" pgfree="6.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.31"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780240</memfree>
+ <memused>1142648</memused>
+ <memused-percent>59.42</memused-percent>
+ <buffers>176716</buffers>
+ <cached>534728</cached>
+ <commit>861496</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.11</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72823</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="270" ldavg-1="0.08" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.10" avgrq-sz="11.57" avgqu-sz="0.00" await="4.30" svctm="2.85" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.10" avgrq-sz="8.00" avgqu-sz="0.00" await="4.37" svctm="1.98" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.85" avgrq-sz="8.00" avgqu-sz="0.00" await="4.33" svctm="2.00" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="4.89" svctm="1.79" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.30" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="06:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.57"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.04" fault="13.05" majflt="0.00" pgfree="6.84" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.37</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.37" bwrtn="12.21"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780124</memfree>
+ <memused>1142764</memused>
+ <memused-percent>59.43</memused-percent>
+ <buffers>176740</buffers>
+ <cached>534744</cached>
+ <commit>861492</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72823</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.07" ldavg-5="0.03" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.07" avgrq-sz="11.51" avgqu-sz="0.00" await="5.47" svctm="3.75" util-percent="0.13"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.07" avgrq-sz="8.00" avgqu-sz="0.00" await="7.01" svctm="2.61" util-percent="0.13"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.71" avgrq-sz="8.00" avgqu-sz="0.00" await="4.66" svctm="1.86" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="31.26" svctm="10.30" util-percent="0.05"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.16" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="07:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.19" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.32"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.19" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.32"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.21"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.50" fault="67.86" majflt="0.00" pgfree="72.13" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>4.74</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="4.74" bwrtn="45.02"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>780300</memfree>
+ <memused>1142588</memused>
+ <memused-percent>59.42</memused-percent>
+ <buffers>176780</buffers>
+ <cached>534760</cached>
+ <commit>861620</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.07</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>72823</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.99" rd_sec="0.00" wr_sec="15.01" avgrq-sz="15.11" avgqu-sz="0.32" await="318.45" svctm="4.18" util-percent="0.41"/>
+ <disk-device dev="dev253-0" tps="1.88" rd_sec="0.00" wr_sec="15.01" avgrq-sz="8.00" avgqu-sz="1.63" await="869.42" svctm="2.22" util-percent="0.42"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="3.98" avgrq-sz="8.00" avgqu-sz="0.00" await="4.50" svctm="2.04" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.38" rd_sec="0.00" wr_sec="11.03" avgrq-sz="8.00" avgqu-sz="1.63" await="1181.47" svctm="2.31" util-percent="0.32"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.33" txpck="2.21" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="07:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.07" nice="0.00" sys="0.16" iowait="0.08" steal="0.01" irq="0.02" soft="0.00" guest="0.00" idle="99.66"/>
+ <cpu number="0" usr="0.07" nice="0.00" sys="0.16" iowait="0.08" steal="0.01" irq="0.02" soft="0.00" guest="0.00" idle="99.66"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.14" cswch="28.30"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.42" fault="31.77" majflt="0.00" pgfree="13.21" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.61</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.61" bwrtn="14.51"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>779780</memfree>
+ <memused>1143108</memused>
+ <memused-percent>59.45</memused-percent>
+ <buffers>176796</buffers>
+ <cached>534776</cached>
+ <commit>862192</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.22</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75419</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>72823</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="272" ldavg-1="0.05" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.40" rd_sec="0.00" wr_sec="4.84" avgrq-sz="12.02" avgqu-sz="0.00" await="6.41" svctm="3.68" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.60" rd_sec="0.00" wr_sec="4.84" avgrq-sz="8.00" avgqu-sz="0.00" await="6.99" svctm="2.46" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.57" rd_sec="0.00" wr_sec="4.58" avgrq-sz="8.00" avgqu-sz="0.00" await="6.57" svctm="2.26" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="14.89" svctm="6.26" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.18" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="574" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="07:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.56"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.06" fault="12.80" majflt="0.00" pgfree="6.84" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.36"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>779928</memfree>
+ <memused>1142960</memused>
+ <memused-percent>59.44</memused-percent>
+ <buffers>176812</buffers>
+ <cached>534792</cached>
+ <commit>861784</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.06</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>72824</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.12" avgrq-sz="11.72" avgqu-sz="0.00" await="4.50" svctm="2.85" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.12" avgrq-sz="8.00" avgqu-sz="0.00" await="4.90" svctm="1.96" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="4.26" svctm="1.77" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="14.68" svctm="5.00" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.30" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="07:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.24" steal="0.01" irq="0.02" soft="0.01" guest="0.00" idle="99.28"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.24" steal="0.01" irq="0.02" soft="0.01" guest="0.00" idle="99.28"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.29"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.90" fault="67.34" majflt="0.00" pgfree="72.72" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.05</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.05" bwrtn="47.42"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>779976</memfree>
+ <memused>1142912</memused>
+ <memused-percent>59.44</memused-percent>
+ <buffers>176848</buffers>
+ <cached>534804</cached>
+ <commit>861980</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.02</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>72825</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.09" rd_sec="0.00" wr_sec="15.81" avgrq-sz="14.45" avgqu-sz="0.37" await="340.95" svctm="4.36" util-percent="0.48"/>
+ <disk-device dev="dev253-0" tps="1.98" rd_sec="0.00" wr_sec="15.81" avgrq-sz="8.00" avgqu-sz="0.64" await="323.39" svctm="2.42" util-percent="0.48"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="3.99" avgrq-sz="8.00" avgqu-sz="0.00" await="3.14" svctm="1.32" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.48" rd_sec="0.00" wr_sec="11.81" avgrq-sz="8.00" avgqu-sz="0.64" await="431.71" svctm="2.83" util-percent="0.42"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.22" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="574" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="07:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.56"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.01" fault="14.70" majflt="0.00" pgfree="7.38" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.35</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.35" bwrtn="12.04"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>779976</memfree>
+ <memused>1142912</memused>
+ <memused-percent>59.44</memused-percent>
+ <buffers>176864</buffers>
+ <cached>534816</cached>
+ <commit>861976</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.00</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>75420</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>72824</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.01" avgrq-sz="11.69" avgqu-sz="0.00" await="3.89" svctm="2.45" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.50" rd_sec="0.00" wr_sec="4.01" avgrq-sz="8.00" avgqu-sz="0.00" await="4.00" svctm="1.70" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.76" avgrq-sz="8.00" avgqu-sz="0.00" await="3.58" svctm="1.57" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="10.32" svctm="3.58" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="07:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.59" sys="1.17" iowait="3.88" steal="0.02" irq="0.07" soft="0.02" guest="0.00" idle="94.21"/>
+ <cpu number="0" usr="0.05" nice="0.59" sys="1.17" iowait="3.88" steal="0.02" irq="0.07" soft="0.02" guest="0.00" idle="94.21"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="1.07" cswch="92.24"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="97.93" pgpgout="45.69" fault="455.20" majflt="0.02" pgfree="208.17" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>51.78</tps>
+ <io-reads rtps="27.16" bread="587.58"/>
+ <io-writes wtps="24.62" bwrtn="274.12"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>682752</memfree>
+ <memused>1240136</memused>
+ <memused-percent>64.49</memused-percent>
+ <buffers>184816</buffers>
+ <cached>585344</cached>
+ <commit>862376</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-40.61</frmpg>
+ <bufpg>3.32</bufpg>
+ <campg>21.11</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105216</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100117</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.01" ldavg-5="0.05" ldavg-15="0.02"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="10.80" rd_sec="195.86" wr_sec="91.37" avgrq-sz="26.60" avgqu-sz="1.03" await="94.95" svctm="4.12" util-percent="4.45"/>
+ <disk-device dev="dev253-0" tps="20.49" rd_sec="195.86" wr_sec="91.37" avgrq-sz="14.02" avgqu-sz="4.62" await="225.56" svctm="2.25" util-percent="4.60"/>
+ <disk-device dev="dev253-1" tps="20.46" rd_sec="195.86" wr_sec="91.12" avgrq-sz="14.03" avgqu-sz="4.62" await="225.89" svctm="2.24" util-percent="4.59"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="14.84" svctm="4.89" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.21" rxkB="0.43" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.05" txpck="2.16" rxkB="0.24" txkB="0.16" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="18" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="08:00:02" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.21" iowait="0.35" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.17"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.21" iowait="0.35" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.17"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.51"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.74" fault="66.79" majflt="0.00" pgfree="72.23" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>4.90</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="4.90" bwrtn="46.46"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>682628</memfree>
+ <memused>1240260</memused>
+ <memused-percent>64.50</memused-percent>
+ <buffers>184852</buffers>
+ <cached>585356</cached>
+ <commit>861708</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105215</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100111</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.06" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.02" rd_sec="0.00" wr_sec="15.49" avgrq-sz="15.13" avgqu-sz="0.43" await="423.65" svctm="6.02" util-percent="0.62"/>
+ <disk-device dev="dev253-0" tps="1.94" rd_sec="0.00" wr_sec="15.49" avgrq-sz="8.00" avgqu-sz="0.73" await="379.24" svctm="3.20" util-percent="0.62"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.80" avgrq-sz="8.00" avgqu-sz="0.00" await="8.11" svctm="3.18" util-percent="0.15"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.46" rd_sec="0.00" wr_sec="11.69" avgrq-sz="8.00" avgqu-sz="0.73" await="499.98" svctm="3.20" util-percent="0.47"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.33" txpck="2.22" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="08:10:01" interval="598">
+ <cpu-load-all>
+ <cpu number="all" usr="0.06" nice="0.00" sys="0.15" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ <cpu number="0" usr="0.06" nice="0.00" sys="0.15" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="28.03"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.01" pgpgout="2.66" fault="24.88" majflt="0.00" pgfree="10.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.76</tps>
+ <io-reads rtps="0.01" bread="0.04"/>
+ <io-writes wtps="1.75" bwrtn="15.96"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>682380</memfree>
+ <memused>1240508</memused>
+ <memused-percent>64.51</memused-percent>
+ <buffers>184888</buffers>
+ <cached>585364</cached>
+ <commit>861880</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.42" rd_sec="0.01" wr_sec="5.32" avgrq-sz="12.57" avgqu-sz="0.00" await="8.12" svctm="3.38" util-percent="0.14"/>
+ <disk-device dev="dev253-0" tps="0.67" rd_sec="0.01" wr_sec="5.32" avgrq-sz="8.00" avgqu-sz="0.01" await="8.20" svctm="2.15" util-percent="0.14"/>
+ <disk-device dev="dev253-1" tps="0.58" rd_sec="0.01" wr_sec="4.67" avgrq-sz="8.00" avgqu-sz="0.00" await="6.63" svctm="1.83" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.08" rd_sec="0.00" wr_sec="0.66" avgrq-sz="8.00" avgqu-sz="0.00" await="19.45" svctm="4.49" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.27" txpck="2.16" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="08:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.19" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.49"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.19" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.49"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.23"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.94" fault="63.95" majflt="0.00" pgfree="66.87" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.30</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.30" bwrtn="11.64"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>690796</memfree>
+ <memused>1232092</memused>
+ <memused-percent>64.08</memused-percent>
+ <buffers>184912</buffers>
+ <cached>585380</cached>
+ <commit>861944</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>3.51</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="272" ldavg-1="0.03" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.33" rd_sec="0.00" wr_sec="3.88" avgrq-sz="11.88" avgqu-sz="0.00" await="3.95" svctm="2.26" util-percent="0.07"/>
+ <disk-device dev="dev253-0" tps="0.49" rd_sec="0.00" wr_sec="3.88" avgrq-sz="8.00" avgqu-sz="0.00" await="4.44" svctm="1.54" util-percent="0.07"/>
+ <disk-device dev="dev253-1" tps="0.44" rd_sec="0.00" wr_sec="3.52" avgrq-sz="8.00" avgqu-sz="0.00" await="3.17" svctm="1.17" util-percent="0.05"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="16.85" svctm="5.19" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.22" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="08:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.13" iowait="0.28" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.52"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.13" iowait="0.28" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.52"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.48"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.38" fault="16.66" majflt="0.00" pgfree="12.81" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.39" bwrtn="50.27"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>683160</memfree>
+ <memused>1239728</memused>
+ <memused-percent>64.47</memused-percent>
+ <buffers>184948</buffers>
+ <cached>585396</cached>
+ <commit>862072</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.19</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.20" rd_sec="0.00" wr_sec="16.76" avgrq-sz="13.98" avgqu-sz="0.45" await="372.42" svctm="4.80" util-percent="0.58"/>
+ <disk-device dev="dev253-0" tps="2.09" rd_sec="0.00" wr_sec="16.76" avgrq-sz="8.00" avgqu-sz="2.43" await="1160.44" svctm="2.75" util-percent="0.58"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.07" avgrq-sz="8.00" avgqu-sz="0.00" await="7.18" svctm="2.58" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.59" rd_sec="0.00" wr_sec="12.69" avgrq-sz="8.00" avgqu-sz="2.43" await="1530.70" svctm="2.84" util-percent="0.45"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.30" txpck="2.18" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="08:40:02" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.98"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.05" fault="12.75" majflt="0.00" pgfree="6.86" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.37</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.37" bwrtn="12.28"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>683308</memfree>
+ <memused>1239580</memused>
+ <memused-percent>64.46</memused-percent>
+ <buffers>184964</buffers>
+ <cached>585416</cached>
+ <commit>861660</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.06</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.09" avgrq-sz="11.98" avgqu-sz="0.00" await="5.56" svctm="3.63" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.09" avgrq-sz="8.00" avgqu-sz="0.00" await="5.49" svctm="2.44" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.84" avgrq-sz="8.00" avgqu-sz="0.00" await="4.12" svctm="1.81" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="26.21" svctm="12.00" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.30" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="08:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.20" iowait="0.21" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.31"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.20" iowait="0.21" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.31"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.05"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.33" fault="64.25" majflt="0.00" pgfree="70.64" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>4.62</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="4.62" bwrtn="43.96"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>683596</memfree>
+ <memused>1239292</memused>
+ <memused-percent>64.45</memused-percent>
+ <buffers>185000</buffers>
+ <cached>585424</cached>
+ <commit>861252</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.12</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100111</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.16" ldavg-5="0.03" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.95" rd_sec="0.00" wr_sec="14.65" avgrq-sz="15.37" avgqu-sz="0.33" await="342.33" svctm="4.88" util-percent="0.47"/>
+ <disk-device dev="dev253-0" tps="1.83" rd_sec="0.00" wr_sec="14.65" avgrq-sz="8.00" avgqu-sz="0.50" await="274.28" svctm="2.54" util-percent="0.47"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.69" avgrq-sz="8.00" avgqu-sz="0.00" await="3.26" svctm="1.25" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.37" rd_sec="0.00" wr_sec="10.97" avgrq-sz="8.00" avgqu-sz="0.50" await="365.40" svctm="2.98" util-percent="0.41"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.21" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="574" tcpsck="19" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="09:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.38"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.19" fault="16.38" majflt="0.00" pgfree="9.81" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.47</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.47" bwrtn="13.14"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>683216</memfree>
+ <memused>1239672</memused>
+ <memused-percent>64.47</memused-percent>
+ <buffers>185016</buffers>
+ <cached>585440</cached>
+ <commit>861660</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.38" avgrq-sz="11.77" avgqu-sz="0.00" await="4.97" svctm="3.37" util-percent="0.13"/>
+ <disk-device dev="dev253-0" tps="0.55" rd_sec="0.00" wr_sec="4.38" avgrq-sz="8.00" avgqu-sz="0.00" await="7.42" svctm="2.30" util-percent="0.13"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.11" avgrq-sz="8.00" avgqu-sz="0.00" await="7.06" svctm="2.19" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.27" avgrq-sz="8.00" avgqu-sz="0.00" await="12.95" svctm="4.10" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.30" txpck="2.20" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="09:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="28.04"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.25" fault="22.52" majflt="0.00" pgfree="10.07" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.49</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.49" bwrtn="13.50"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>683348</memfree>
+ <memused>1239540</memused>
+ <memused-percent>64.46</memused-percent>
+ <buffers>185032</buffers>
+ <cached>585456</cached>
+ <commit>861916</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.06</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.05" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.50" avgrq-sz="12.31" avgqu-sz="0.00" await="6.86" svctm="3.16" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.56" rd_sec="0.00" wr_sec="4.50" avgrq-sz="8.00" avgqu-sz="0.00" await="6.74" svctm="2.06" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.53" rd_sec="0.00" wr_sec="4.24" avgrq-sz="8.00" avgqu-sz="0.00" await="6.49" svctm="1.92" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="10.89" svctm="4.37" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.28" txpck="2.16" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="09:20:02" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.20" iowait="0.25" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.28"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.20" iowait="0.25" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.28"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.31"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.97" fault="66.76" majflt="0.00" pgfree="69.38" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.09</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.09" bwrtn="47.85"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>689104</memfree>
+ <memused>1233784</memused>
+ <memused-percent>64.16</memused-percent>
+ <buffers>185068</buffers>
+ <cached>585472</cached>
+ <commit>862328</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>2.40</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100115</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="272" ldavg-1="0.04" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.10" rd_sec="0.00" wr_sec="15.95" avgrq-sz="14.52" avgqu-sz="0.35" await="317.41" svctm="4.15" util-percent="0.46"/>
+ <disk-device dev="dev253-0" tps="1.99" rd_sec="0.00" wr_sec="15.95" avgrq-sz="8.00" avgqu-sz="0.61" await="308.05" svctm="2.29" util-percent="0.46"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.04" avgrq-sz="8.00" avgqu-sz="0.00" await="3.45" svctm="1.49" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.49" rd_sec="0.00" wr_sec="11.91" avgrq-sz="8.00" avgqu-sz="0.61" await="411.40" svctm="2.57" util-percent="0.38"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.33" txpck="2.21" rxkB="0.44" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="574" tcpsck="19" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="09:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.03" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.03" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.29"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.12" fault="16.01" majflt="0.00" pgfree="10.34" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.74"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>682416</memfree>
+ <memused>1240472</memused>
+ <memused-percent>64.51</memused-percent>
+ <buffers>185084</buffers>
+ <cached>585484</cached>
+ <commit>861508</commit>
+ <commit-percent>14.08</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-2.79</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100109</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="268" ldavg-1="0.03" ldavg-5="0.03" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.25" avgrq-sz="11.67" avgqu-sz="0.00" await="3.76" svctm="2.37" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.25" avgrq-sz="8.00" avgqu-sz="0.00" await="3.82" svctm="1.63" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="3.98" avgrq-sz="8.00" avgqu-sz="0.00" await="3.50" svctm="1.53" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.27" avgrq-sz="8.00" avgqu-sz="0.00" await="8.50" svctm="3.05" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.30" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="09:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.94"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.98" fault="13.34" majflt="0.00" pgfree="6.87" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.32</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.32" bwrtn="11.90"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>682036</memfree>
+ <memused>1240852</memused>
+ <memused-percent>64.53</memused-percent>
+ <buffers>185100</buffers>
+ <cached>585496</cached>
+ <commit>862452</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.32" rd_sec="0.00" wr_sec="3.97" avgrq-sz="12.25" avgqu-sz="0.00" await="5.13" svctm="3.35" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.50" rd_sec="0.00" wr_sec="3.97" avgrq-sz="8.00" avgqu-sz="0.00" await="6.04" svctm="2.21" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.71" avgrq-sz="8.00" avgqu-sz="0.00" await="4.98" svctm="1.86" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="21.47" svctm="7.32" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.28" txpck="2.16" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="09:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.20" iowait="0.40" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.13"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.20" iowait="0.40" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.13"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.52"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.52" fault="64.30" majflt="0.00" pgfree="68.71" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.49</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.49" bwrtn="51.11"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>690088</memfree>
+ <memused>1232800</memused>
+ <memused-percent>64.11</memused-percent>
+ <buffers>185144</buffers>
+ <cached>585516</cached>
+ <commit>862044</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>3.36</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.03" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.23" rd_sec="0.00" wr_sec="17.04" avgrq-sz="13.85" avgqu-sz="0.52" await="426.44" svctm="5.03" util-percent="0.62"/>
+ <disk-device dev="dev253-0" tps="2.13" rd_sec="0.00" wr_sec="17.04" avgrq-sz="8.00" avgqu-sz="1.01" await="475.81" svctm="2.91" util-percent="0.62"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.05" avgrq-sz="8.00" avgqu-sz="0.01" await="13.02" svctm="7.79" util-percent="0.39"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.62" rd_sec="0.00" wr_sec="12.99" avgrq-sz="8.00" avgqu-sz="1.01" await="619.93" svctm="3.26" util-percent="0.53"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.31" txpck="2.19" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="10:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.22"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.13" fault="16.53" majflt="0.00" pgfree="10.91" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.77"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>682328</memfree>
+ <memused>1240560</memused>
+ <memused-percent>64.52</memused-percent>
+ <buffers>185168</buffers>
+ <cached>585528</cached>
+ <commit>862456</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.24</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.26" avgrq-sz="11.76" avgqu-sz="0.00" await="3.64" svctm="2.22" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.26" avgrq-sz="8.00" avgqu-sz="0.00" await="3.53" svctm="1.52" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.86" avgrq-sz="8.00" avgqu-sz="0.00" await="3.37" svctm="1.51" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.40" avgrq-sz="8.00" avgqu-sz="0.00" await="5.13" svctm="1.83" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.30" txpck="2.20" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="10:10:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.14" iowait="0.04" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.14" iowait="0.04" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.10" cswch="27.99"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.30" fault="22.30" majflt="0.00" pgfree="10.05" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.53</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.53" bwrtn="13.80"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>682460</memfree>
+ <memused>1240428</memused>
+ <memused-percent>64.51</memused-percent>
+ <buffers>185184</buffers>
+ <cached>585544</cached>
+ <commit>862172</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.06</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.60" avgrq-sz="12.27" avgqu-sz="0.00" await="5.12" svctm="2.85" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.58" rd_sec="0.00" wr_sec="4.60" avgrq-sz="8.00" avgqu-sz="0.00" await="4.78" svctm="1.87" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.54" rd_sec="0.00" wr_sec="4.35" avgrq-sz="8.00" avgqu-sz="0.00" await="3.48" svctm="1.55" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="27.21" svctm="8.53" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.29" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="10:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.19" iowait="0.15" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.38"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.19" iowait="0.15" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.38"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.39"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.11" fault="64.69" majflt="0.00" pgfree="67.80" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>4.46</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="4.46" bwrtn="42.63"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>689580</memfree>
+ <memused>1233308</memused>
+ <memused-percent>64.14</memused-percent>
+ <buffers>185220</buffers>
+ <cached>585556</cached>
+ <commit>862172</commit>
+ <commit-percent>14.09</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>2.97</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.24" ldavg-5="0.06" ldavg-15="0.02"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.91" rd_sec="0.00" wr_sec="14.21" avgrq-sz="15.62" avgqu-sz="0.25" await="278.01" svctm="4.12" util-percent="0.37"/>
+ <disk-device dev="dev253-0" tps="1.78" rd_sec="0.00" wr_sec="14.21" avgrq-sz="8.00" avgqu-sz="0.34" await="191.86" svctm="2.12" util-percent="0.38"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.94" avgrq-sz="8.00" avgqu-sz="0.00" await="5.33" svctm="2.21" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.28" rd_sec="0.00" wr_sec="10.27" avgrq-sz="8.00" avgqu-sz="0.34" await="263.42" svctm="2.27" util-percent="0.29"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.20" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="10:30:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.31"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.08" fault="16.50" majflt="0.00" pgfree="10.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.48"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>681820</memfree>
+ <memused>1241068</memused>
+ <memused-percent>64.54</memused-percent>
+ <buffers>185236</buffers>
+ <cached>585572</cached>
+ <commit>862584</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.23</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.16" avgrq-sz="11.77" avgqu-sz="0.00" await="5.72" svctm="3.23" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.16" avgrq-sz="8.00" avgqu-sz="0.00" await="6.09" svctm="2.21" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.89" avgrq-sz="8.00" avgqu-sz="0.00" await="4.98" svctm="1.83" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.27" avgrq-sz="8.00" avgqu-sz="0.00" await="22.35" svctm="7.75" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.20" rxkB="0.43" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.05" txpck="2.15" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="10:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.95"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.08" fault="13.06" majflt="0.00" pgfree="6.88" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.47"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>681696</memfree>
+ <memused>1241192</memused>
+ <memused-percent>64.55</memused-percent>
+ <buffers>185252</buffers>
+ <cached>585580</cached>
+ <commit>862712</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.16" avgrq-sz="11.90" avgqu-sz="0.00" await="6.51" svctm="4.33" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.16" avgrq-sz="8.00" avgqu-sz="0.00" await="7.16" svctm="2.92" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.90" avgrq-sz="8.00" avgqu-sz="0.00" await="3.42" svctm="1.46" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="64.74" svctm="25.32" util-percent="0.08"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.28" txpck="2.17" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="10:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.34" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.17"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.34" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.17"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.61"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.01" pgpgout="10.32" fault="62.85" majflt="0.00" pgfree="69.20" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>6.78</tps>
+ <io-reads rtps="0.01" bread="0.04"/>
+ <io-writes wtps="6.78" bwrtn="61.94"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>688076</memfree>
+ <memused>1234812</memused>
+ <memused-percent>64.22</memused-percent>
+ <buffers>185284</buffers>
+ <cached>585600</cached>
+ <commit>862776</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>2.66</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="272" ldavg-1="0.04" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.62" rd_sec="0.01" wr_sec="20.65" avgrq-sz="12.78" avgqu-sz="0.50" await="306.87" svctm="3.64" util-percent="0.59"/>
+ <disk-device dev="dev253-0" tps="2.58" rd_sec="0.01" wr_sec="20.65" avgrq-sz="8.00" avgqu-sz="2.82" await="1092.07" svctm="2.28" util-percent="0.59"/>
+ <disk-device dev="dev253-1" tps="0.53" rd_sec="0.00" wr_sec="4.23" avgrq-sz="8.00" avgqu-sz="0.00" await="3.78" svctm="1.86" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="2.05" rd_sec="0.01" wr_sec="16.42" avgrq-sz="8.00" avgqu-sz="2.82" await="1372.32" svctm="2.39" util-percent="0.49"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.21" rxkB="0.46" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="11:00:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.67"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.67"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.37"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.92" fault="17.94" majflt="0.00" pgfree="11.52" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.29</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.29" bwrtn="11.53"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>680820</memfree>
+ <memused>1242068</memused>
+ <memused-percent>64.59</memused-percent>
+ <buffers>185300</buffers>
+ <cached>585612</cached>
+ <commit>862776</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.03</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="270" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.33" rd_sec="0.00" wr_sec="3.84" avgrq-sz="11.76" avgqu-sz="0.00" await="9.90" svctm="5.98" util-percent="0.20"/>
+ <disk-device dev="dev253-0" tps="0.48" rd_sec="0.00" wr_sec="3.84" avgrq-sz="8.00" avgqu-sz="0.00" await="9.16" svctm="4.09" util-percent="0.20"/>
+ <disk-device dev="dev253-1" tps="0.45" rd_sec="0.00" wr_sec="3.59" avgrq-sz="8.00" avgqu-sz="0.00" await="6.84" svctm="3.88" util-percent="0.17"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="42.00" svctm="16.42" util-percent="0.05"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.31" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="11:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.25" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.55"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.25" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.55"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.10" cswch="27.80"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.39" fault="22.31" majflt="0.00" pgfree="10.06" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.58</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.58" bwrtn="14.34"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>680968</memfree>
+ <memused>1241920</memused>
+ <memused-percent>64.59</memused-percent>
+ <buffers>185316</buffers>
+ <cached>585632</cached>
+ <commit>862364</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.06</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.10" ldavg-5="0.03" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.78" avgrq-sz="12.45" avgqu-sz="0.00" await="12.95" svctm="7.60" util-percent="0.29"/>
+ <disk-device dev="dev253-0" tps="0.60" rd_sec="0.00" wr_sec="4.78" avgrq-sz="8.00" avgqu-sz="0.01" await="14.47" svctm="4.88" util-percent="0.29"/>
+ <disk-device dev="dev253-1" tps="0.57" rd_sec="0.00" wr_sec="4.53" avgrq-sz="8.00" avgqu-sz="0.01" await="13.63" svctm="4.49" util-percent="0.25"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="29.47" svctm="11.89" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.16" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="11:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.20" iowait="0.21" steal="0.01" irq="0.02" soft="0.00" guest="0.00" idle="99.31"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.20" iowait="0.21" steal="0.01" irq="0.02" soft="0.00" guest="0.00" idle="99.31"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.32"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.54" fault="63.76" majflt="0.00" pgfree="70.48" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.50</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.50" bwrtn="51.21"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>680508</memfree>
+ <memused>1242380</memused>
+ <memused-percent>64.61</memused-percent>
+ <buffers>185368</buffers>
+ <cached>585652</cached>
+ <commit>862496</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.19</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.04" ldavg-5="0.04" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.23" rd_sec="0.00" wr_sec="17.07" avgrq-sz="13.90" avgqu-sz="0.35" await="288.98" svctm="4.57" util-percent="0.56"/>
+ <disk-device dev="dev253-0" tps="2.13" rd_sec="0.00" wr_sec="17.07" avgrq-sz="8.00" avgqu-sz="0.66" await="311.38" svctm="2.64" util-percent="0.56"/>
+ <disk-device dev="dev253-1" tps="0.52" rd_sec="0.00" wr_sec="4.19" avgrq-sz="8.00" avgqu-sz="0.01" await="15.26" svctm="3.81" util-percent="0.20"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.61" rd_sec="0.00" wr_sec="12.88" avgrq-sz="8.00" avgqu-sz="0.66" await="407.74" svctm="2.94" util-percent="0.47"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.21" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="2"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="11:30:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.11" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.11" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.74"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.11" fault="16.26" majflt="0.00" pgfree="9.68" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.40</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.40" bwrtn="12.64"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>680252</memfree>
+ <memused>1242636</memused>
+ <memused-percent>64.62</memused-percent>
+ <buffers>185392</buffers>
+ <cached>585684</cached>
+ <commit>862492</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.11</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.08" ldavg-5="0.02" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.21" avgrq-sz="12.04" avgqu-sz="0.00" await="5.48" svctm="3.54" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.21" avgrq-sz="8.00" avgqu-sz="0.00" await="6.04" svctm="2.36" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.81" avgrq-sz="8.00" avgqu-sz="0.00" await="4.34" svctm="1.74" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.40" avgrq-sz="8.00" avgqu-sz="0.00" await="22.30" svctm="8.80" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.28" txpck="2.17" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="1.97" txpck="2.13" rxkB="0.23" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.15" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="11:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.82"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.16" fault="13.03" majflt="0.00" pgfree="6.88" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.94"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>680136</memfree>
+ <memused>1242752</memused>
+ <memused-percent>64.63</memused-percent>
+ <buffers>185492</buffers>
+ <cached>585712</cached>
+ <commit>862492</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.04</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.05" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.31" avgrq-sz="12.13" avgqu-sz="0.00" await="6.49" svctm="3.38" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.54" rd_sec="0.00" wr_sec="4.31" avgrq-sz="8.00" avgqu-sz="0.00" await="6.81" svctm="2.24" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.06" avgrq-sz="8.00" avgqu-sz="0.00" await="6.15" svctm="2.05" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="17.26" svctm="5.37" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.31" txpck="2.19" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.00" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.18" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="11:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.46"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.08" fault="13.27" majflt="0.00" pgfree="6.82" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.49"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>679492</memfree>
+ <memused>1243396</memused>
+ <memused-percent>64.66</memused-percent>
+ <buffers>185872</buffers>
+ <cached>585732</cached>
+ <commit>863032</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.27</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100119</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="273" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.16" avgrq-sz="11.77" avgqu-sz="0.00" await="5.69" svctm="3.66" util-percent="0.13"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.16" avgrq-sz="8.00" avgqu-sz="0.00" await="6.17" svctm="2.49" util-percent="0.13"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.86" avgrq-sz="8.00" avgqu-sz="0.00" await="4.48" svctm="1.80" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.04" rd_sec="0.00" wr_sec="0.31" avgrq-sz="8.00" avgqu-sz="0.00" await="27.43" svctm="11.22" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.23" txpck="2.13" rxkB="0.41" txkB="0.34" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="1.91" txpck="2.08" rxkB="0.23" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.18" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="578" tcpsck="17" udpsck="18" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="12:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.47" nice="0.00" sys="0.25" iowait="0.26" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.00"/>
+ <cpu number="0" usr="0.47" nice="0.00" sys="0.25" iowait="0.26" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.00"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.06" cswch="26.02"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="11.36" fault="123.47" majflt="0.00" pgfree="133.38" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>6.89</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="6.89" bwrtn="68.15"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>679504</memfree>
+ <memused>1243384</memused>
+ <memused-percent>64.66</memused-percent>
+ <buffers>186300</buffers>
+ <cached>585792</cached>
+ <commit>862620</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.01</frmpg>
+ <bufpg>0.18</bufpg>
+ <campg>0.03</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.21" ldavg-5="0.09" ldavg-15="0.03"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.21" rd_sec="0.00" wr_sec="22.72" avgrq-sz="18.84" avgqu-sz="0.45" await="369.12" svctm="4.86" util-percent="0.59"/>
+ <disk-device dev="dev253-0" tps="2.84" rd_sec="0.00" wr_sec="22.72" avgrq-sz="8.00" avgqu-sz="2.35" await="829.04" svctm="2.07" util-percent="0.59"/>
+ <disk-device dev="dev253-1" tps="0.63" rd_sec="0.00" wr_sec="5.02" avgrq-sz="8.00" avgqu-sz="0.00" await="4.96" svctm="1.72" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="2.21" rd_sec="0.00" wr_sec="17.69" avgrq-sz="8.00" avgqu-sz="2.35" await="1063.07" svctm="2.21" util-percent="0.49"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.02" txpck="2.02" rxkB="0.38" txkB="0.32" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="1.66" txpck="1.93" rxkB="0.20" txkB="0.14" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.09" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="17" udpsck="15" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="12:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="28.50"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.73" fault="22.86" majflt="0.00" pgfree="10.20" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.79</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.79" bwrtn="16.38"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>679008</memfree>
+ <memused>1243880</memused>
+ <memused-percent>64.69</memused-percent>
+ <buffers>186712</buffers>
+ <cached>585860</cached>
+ <commit>863028</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.03</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.43" rd_sec="0.00" wr_sec="5.46" avgrq-sz="12.73" avgqu-sz="0.00" await="5.46" svctm="2.75" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.68" rd_sec="0.00" wr_sec="5.46" avgrq-sz="8.00" avgqu-sz="0.00" await="5.30" svctm="1.73" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.65" rd_sec="0.00" wr_sec="5.20" avgrq-sz="8.00" avgqu-sz="0.00" await="4.93" svctm="1.62" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="13.00" svctm="4.11" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.55" txpck="2.49" rxkB="0.47" txkB="0.39" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.24" txpck="2.45" rxkB="0.27" txkB="0.16" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.13" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="12:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.70"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.13" fault="12.72" majflt="0.00" pgfree="6.90" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.77"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>678520</memfree>
+ <memused>1244368</memused>
+ <memused-percent>64.71</memused-percent>
+ <buffers>187096</buffers>
+ <cached>585876</cached>
+ <commit>862340</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.20</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100110</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="268" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.26" avgrq-sz="11.71" avgqu-sz="0.00" await="6.84" svctm="4.55" util-percent="0.17"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.26" avgrq-sz="8.00" avgqu-sz="0.00" await="8.25" svctm="3.13" util-percent="0.17"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.00" avgrq-sz="8.00" avgqu-sz="0.00" await="7.05" svctm="2.59" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="27.16" svctm="11.63" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="12:30:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.20" iowait="0.30" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.21"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.20" iowait="0.30" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.21"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.31"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.10" fault="67.65" majflt="0.00" pgfree="72.82" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.18</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.18" bwrtn="48.59"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>678068</memfree>
+ <memused>1244820</memused>
+ <memused-percent>64.74</memused-percent>
+ <buffers>187468</buffers>
+ <cached>585892</cached>
+ <commit>863156</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.19</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.07" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.13" rd_sec="0.00" wr_sec="16.20" avgrq-sz="14.32" avgqu-sz="0.40" await="352.69" svctm="4.87" util-percent="0.55"/>
+ <disk-device dev="dev253-0" tps="2.02" rd_sec="0.00" wr_sec="16.20" avgrq-sz="8.00" avgqu-sz="2.21" await="1093.38" svctm="2.73" util-percent="0.55"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.79" avgrq-sz="8.00" avgqu-sz="0.00" await="5.12" svctm="3.12" util-percent="0.15"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.55" rd_sec="0.00" wr_sec="12.41" avgrq-sz="8.00" avgqu-sz="2.21" await="1425.71" svctm="2.61" util-percent="0.40"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.51" txpck="2.22" rxkB="0.46" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="12:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.90"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.04" fault="14.38" majflt="0.00" pgfree="7.40" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.36</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.36" bwrtn="12.21"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>677456</memfree>
+ <memused>1245432</memused>
+ <memused-percent>64.77</memused-percent>
+ <buffers>187852</buffers>
+ <cached>585900</cached>
+ <commit>863160</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.26</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.07" avgrq-sz="11.84" avgqu-sz="0.00" await="4.49" svctm="2.62" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.07" avgrq-sz="8.00" avgqu-sz="0.00" await="4.65" svctm="1.77" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.82" avgrq-sz="8.00" avgqu-sz="0.00" await="3.50" svctm="1.46" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="21.95" svctm="7.58" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.39" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="12:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.87"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.40" fault="13.05" majflt="0.00" pgfree="7.17" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.60</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.60" bwrtn="14.41"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>677696</memfree>
+ <memused>1245192</memused>
+ <memused-percent>64.76</memused-percent>
+ <buffers>188240</buffers>
+ <cached>585408</cached>
+ <commit>862468</commit>
+ <commit-percent>14.10</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.10</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>-0.21</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.04" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.40" rd_sec="0.00" wr_sec="4.80" avgrq-sz="12.15" avgqu-sz="0.00" await="8.16" svctm="2.96" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.60" rd_sec="0.00" wr_sec="4.80" avgrq-sz="8.00" avgqu-sz="0.01" await="8.83" svctm="1.96" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.04" avgrq-sz="8.00" avgqu-sz="0.00" await="3.54" svctm="1.37" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.10" rd_sec="0.00" wr_sec="0.76" avgrq-sz="8.00" avgqu-sz="0.00" await="36.98" svctm="5.09" util-percent="0.05"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.66" txpck="2.17" rxkB="0.44" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="13:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.20" iowait="0.31" steal="0.01" irq="0.02" soft="0.00" guest="0.00" idle="99.20"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.20" iowait="0.31" steal="0.01" irq="0.02" soft="0.00" guest="0.00" idle="99.20"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.02"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.39" fault="67.40" majflt="0.00" pgfree="72.80" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.38" bwrtn="50.27"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>676624</memfree>
+ <memused>1246264</memused>
+ <memused-percent>64.81</memused-percent>
+ <buffers>188628</buffers>
+ <cached>585416</cached>
+ <commit>863288</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.45</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.19" rd_sec="0.00" wr_sec="16.72" avgrq-sz="14.10" avgqu-sz="0.48" await="405.29" svctm="5.14" util-percent="0.61"/>
+ <disk-device dev="dev253-0" tps="2.10" rd_sec="0.00" wr_sec="16.77" avgrq-sz="8.00" avgqu-sz="2.69" await="1280.75" svctm="2.91" util-percent="0.61"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.72" avgrq-sz="8.00" avgqu-sz="0.00" await="7.05" svctm="2.70" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.63" rd_sec="0.00" wr_sec="13.06" avgrq-sz="8.00" avgqu-sz="2.68" await="1643.18" svctm="2.99" util-percent="0.49"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.78" txpck="2.20" rxkB="0.46" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="13:10:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.08" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.72"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.08" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.72"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.68"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.52" fault="22.52" majflt="0.00" pgfree="10.14" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.68</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.68" bwrtn="15.18"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>676384</memfree>
+ <memused>1246504</memused>
+ <memused-percent>64.82</memused-percent>
+ <buffers>189048</buffers>
+ <cached>585444</cached>
+ <commit>862876</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.18</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.42" rd_sec="0.00" wr_sec="5.10" avgrq-sz="12.27" avgqu-sz="0.00" await="8.13" svctm="3.69" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.63" rd_sec="0.00" wr_sec="5.04" avgrq-sz="8.00" avgqu-sz="0.00" await="7.86" svctm="2.44" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.60" rd_sec="0.00" wr_sec="4.79" avgrq-sz="8.00" avgqu-sz="0.00" await="7.08" svctm="2.16" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="22.74" svctm="7.79" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.28" txpck="2.18" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="13:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.56"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.07" fault="13.03" majflt="0.00" pgfree="6.90" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.45"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>676012</memfree>
+ <memused>1246876</memused>
+ <memused-percent>64.84</memused-percent>
+ <buffers>189416</buffers>
+ <cached>585456</cached>
+ <commit>862880</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.15" avgrq-sz="11.85" avgqu-sz="0.00" await="3.61" svctm="2.20" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.15" avgrq-sz="8.00" avgqu-sz="0.00" await="3.99" svctm="1.50" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.90" avgrq-sz="8.00" avgqu-sz="0.00" await="3.67" svctm="1.38" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="8.84" svctm="3.42" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.31" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.15" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="13:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.21" iowait="0.34" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.17"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.21" iowait="0.34" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.17"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.15"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.01" pgpgout="9.27" fault="67.67" majflt="0.00" pgfree="73.40" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>6.03</tps>
+ <io-reads rtps="0.01" bread="0.04"/>
+ <io-writes wtps="6.02" bwrtn="55.63"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>674636</memfree>
+ <memused>1248252</memused>
+ <memused-percent>64.92</memused-percent>
+ <buffers>189800</buffers>
+ <cached>585472</cached>
+ <commit>863008</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.57</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.39" rd_sec="0.01" wr_sec="18.54" avgrq-sz="13.34" avgqu-sz="0.55" await="393.95" svctm="4.14" util-percent="0.58"/>
+ <disk-device dev="dev253-0" tps="2.32" rd_sec="0.01" wr_sec="18.54" avgrq-sz="8.00" avgqu-sz="3.21" await="1383.69" svctm="2.49" util-percent="0.58"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.02" avgrq-sz="8.00" avgqu-sz="0.00" await="4.96" svctm="2.05" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.82" rd_sec="0.01" wr_sec="14.52" avgrq-sz="8.00" avgqu-sz="3.21" await="1765.12" svctm="2.69" util-percent="0.49"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.21" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="13:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.69"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.18" fault="13.24" majflt="0.00" pgfree="6.91" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.47</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.47" bwrtn="13.09"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>674008</memfree>
+ <memused>1248880</memused>
+ <memused-percent>64.95</memused-percent>
+ <buffers>190200</buffers>
+ <cached>585484</cached>
+ <commit>863412</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.26</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.36" avgrq-sz="11.63" avgqu-sz="0.00" await="6.05" svctm="3.88" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.55" rd_sec="0.00" wr_sec="4.36" avgrq-sz="8.00" avgqu-sz="0.00" await="8.19" svctm="2.68" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.11" avgrq-sz="8.00" avgqu-sz="0.00" await="8.15" svctm="2.63" util-percent="0.14"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="8.89" svctm="3.47" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.15" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="13:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.17" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.65"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.17" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.65"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.59"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.10" fault="13.02" majflt="0.00" pgfree="6.90" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.41</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.41" bwrtn="12.62"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>673636</memfree>
+ <memused>1249252</memused>
+ <memused-percent>64.97</memused-percent>
+ <buffers>190556</buffers>
+ <cached>585496</cached>
+ <commit>863416</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.21" avgrq-sz="11.89" avgqu-sz="0.00" await="9.23" svctm="5.83" util-percent="0.21"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.21" avgrq-sz="8.00" avgqu-sz="0.01" await="13.46" svctm="3.93" util-percent="0.21"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.95" avgrq-sz="8.00" avgqu-sz="0.01" await="13.51" svctm="3.91" util-percent="0.19"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="12.58" svctm="4.26" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="14:00:01" interval="598">
+ <cpu-load-all>
+ <cpu number="all" usr="0.70" nice="0.00" sys="0.29" iowait="0.72" steal="0.01" irq="0.02" soft="0.02" guest="0.00" idle="98.25"/>
+ <cpu number="0" usr="0.70" nice="0.00" sys="0.29" iowait="0.72" steal="0.01" irq="0.02" soft="0.02" guest="0.00" idle="98.25"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="28.28"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="1.14" pgpgout="38.06" fault="70.16" majflt="0.00" pgfree="92.74" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>24.43</tps>
+ <io-reads rtps="0.33" bread="6.82"/>
+ <io-writes wtps="24.10" bwrtn="228.36"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>674324</memfree>
+ <memused>1248564</memused>
+ <memused-percent>64.93</memused-percent>
+ <buffers>190948</buffers>
+ <cached>586184</cached>
+ <commit>863136</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.29</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.29</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.00" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="5.18" rd_sec="2.27" wr_sec="76.12" avgrq-sz="15.13" avgqu-sz="1.13" await="217.82" svctm="1.96" util-percent="1.01"/>
+ <disk-device dev="dev253-0" tps="9.62" rd_sec="2.27" wr_sec="76.12" avgrq-sz="8.15" avgqu-sz="15.89" await="1650.77" svctm="1.06" util-percent="1.02"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.94" avgrq-sz="8.00" avgqu-sz="0.00" await="5.55" svctm="1.92" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="9.13" rd_sec="2.27" wr_sec="72.18" avgrq-sz="8.15" avgqu-sz="15.88" await="1739.61" svctm="1.01" util-percent="0.92"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.82" txpck="2.44" rxkB="0.99" txkB="0.37" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="14:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.58"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.33" fault="22.57" majflt="0.00" pgfree="10.09" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.55</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.55" bwrtn="13.98"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>673580</memfree>
+ <memused>1249308</memused>
+ <memused-percent>64.97</memused-percent>
+ <buffers>191340</buffers>
+ <cached>586196</cached>
+ <commit>863132</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.31</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.39" rd_sec="0.00" wr_sec="4.66" avgrq-sz="12.09" avgqu-sz="0.00" await="4.52" svctm="2.24" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.58" rd_sec="0.00" wr_sec="4.66" avgrq-sz="8.00" avgqu-sz="0.00" await="4.69" svctm="1.48" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.55" rd_sec="0.00" wr_sec="4.41" avgrq-sz="8.00" avgqu-sz="0.00" await="4.38" svctm="1.35" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.95" svctm="3.79" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="14:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.58"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.23" fault="14.89" majflt="0.00" pgfree="7.48" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.49</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.49" bwrtn="13.37"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>673192</memfree>
+ <memused>1249696</memused>
+ <memused-percent>64.99</memused-percent>
+ <buffers>191712</buffers>
+ <cached>586216</cached>
+ <commit>863544</commit>
+ <commit-percent>14.12</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.46" avgrq-sz="11.93" avgqu-sz="0.00" await="4.11" svctm="2.48" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.56" rd_sec="0.00" wr_sec="4.46" avgrq-sz="8.00" avgqu-sz="0.00" await="4.27" svctm="1.68" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.10" avgrq-sz="8.00" avgqu-sz="0.00" await="3.63" svctm="1.41" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="11.56" svctm="4.78" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="14:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.28" nice="0.00" sys="0.24" iowait="0.49" steal="0.01" irq="0.02" soft="0.01" guest="0.00" idle="98.95"/>
+ <cpu number="0" usr="0.28" nice="0.00" sys="0.24" iowait="0.49" steal="0.01" irq="0.02" soft="0.01" guest="0.00" idle="98.95"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.73"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.36" pgpgout="22.17" fault="65.23" majflt="0.00" pgfree="77.50" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>14.68</tps>
+ <io-reads rtps="0.11" bread="2.16"/>
+ <io-writes wtps="14.57" bwrtn="133.03"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>671268</memfree>
+ <memused>1251620</memused>
+ <memused-percent>65.09</memused-percent>
+ <buffers>192096</buffers>
+ <cached>586432</cached>
+ <commit>863264</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.80</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.09</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="3.52" rd_sec="0.72" wr_sec="44.34" avgrq-sz="12.80" avgqu-sz="0.85" await="241.78" svctm="2.36" util-percent="0.83"/>
+ <disk-device dev="dev253-0" tps="5.58" rd_sec="0.72" wr_sec="44.34" avgrq-sz="8.08" avgqu-sz="4.93" await="884.73" svctm="1.49" util-percent="0.83"/>
+ <disk-device dev="dev253-1" tps="0.44" rd_sec="0.00" wr_sec="3.55" avgrq-sz="8.00" avgqu-sz="0.00" await="3.94" svctm="1.52" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="5.13" rd_sec="0.72" wr_sec="40.79" avgrq-sz="8.09" avgqu-sz="4.93" await="960.93" svctm="1.49" util-percent="0.77"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.40" txpck="2.23" rxkB="0.49" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="14:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.70"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.70"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.95"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.08" fault="13.24" majflt="0.00" pgfree="6.86" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.48"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>670772</memfree>
+ <memused>1252116</memused>
+ <memused-percent>65.12</memused-percent>
+ <buffers>192464</buffers>
+ <cached>586456</cached>
+ <commit>863796</commit>
+ <commit-percent>14.12</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.16" avgrq-sz="11.94" avgqu-sz="0.00" await="7.87" svctm="5.11" util-percent="0.18"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.16" avgrq-sz="8.00" avgqu-sz="0.01" await="9.92" svctm="3.44" util-percent="0.18"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.91" avgrq-sz="8.00" avgqu-sz="0.00" await="9.62" svctm="3.34" util-percent="0.16"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="14.53" svctm="4.89" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.20" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.15" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="14:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.69"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.14" fault="12.83" majflt="0.00" pgfree="6.92" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.83"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>670524</memfree>
+ <memused>1252364</memused>
+ <memused-percent>65.13</memused-percent>
+ <buffers>192824</buffers>
+ <cached>586472</cached>
+ <commit>863392</commit>
+ <commit-percent>14.11</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.28" avgrq-sz="11.80" avgqu-sz="0.00" await="3.38" svctm="2.06" util-percent="0.07"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.28" avgrq-sz="8.00" avgqu-sz="0.00" await="3.54" svctm="1.42" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.02" avgrq-sz="8.00" avgqu-sz="0.00" await="3.31" svctm="1.32" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="7.16" svctm="2.95" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="15:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.30" nice="0.00" sys="0.25" iowait="0.47" steal="0.02" irq="0.02" soft="0.01" guest="0.00" idle="98.93"/>
+ <cpu number="0" usr="0.30" nice="0.00" sys="0.25" iowait="0.47" steal="0.02" irq="0.02" soft="0.01" guest="0.00" idle="98.93"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.62"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.47" pgpgout="24.39" fault="64.91" majflt="0.00" pgfree="78.19" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>16.07</tps>
+ <io-reads rtps="0.15" bread="2.81"/>
+ <io-writes wtps="15.92" bwrtn="146.32"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>670072</memfree>
+ <memused>1252816</memused>
+ <memused-percent>65.15</memused-percent>
+ <buffers>193192</buffers>
+ <cached>586752</cached>
+ <commit>864952</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.19</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.12</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.05" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="3.78" rd_sec="0.94" wr_sec="48.77" avgrq-sz="13.16" avgqu-sz="0.78" await="206.15" svctm="1.97" util-percent="0.74"/>
+ <disk-device dev="dev253-0" tps="6.15" rd_sec="0.94" wr_sec="48.77" avgrq-sz="8.09" avgqu-sz="4.77" await="776.20" svctm="1.21" util-percent="0.74"/>
+ <disk-device dev="dev253-1" tps="0.44" rd_sec="0.00" wr_sec="3.55" avgrq-sz="8.00" avgqu-sz="0.00" await="5.14" svctm="1.76" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="5.70" rd_sec="0.94" wr_sec="45.22" avgrq-sz="8.09" avgqu-sz="4.77" await="836.28" svctm="1.17" util-percent="0.67"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.48" txpck="2.26" rxkB="0.53" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="15:10:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.64"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.39" fault="22.60" majflt="0.00" pgfree="10.09" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.59</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.59" bwrtn="14.36"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>669708</memfree>
+ <memused>1253180</memused>
+ <memused-percent>65.17</memused-percent>
+ <buffers>193592</buffers>
+ <cached>586768</cached>
+ <commit>864544</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.15</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.39" rd_sec="0.00" wr_sec="4.79" avgrq-sz="12.17" avgqu-sz="0.00" await="5.26" svctm="2.76" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.60" rd_sec="0.00" wr_sec="4.79" avgrq-sz="8.00" avgqu-sz="0.00" await="5.72" svctm="1.82" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.57" rd_sec="0.00" wr_sec="4.53" avgrq-sz="8.00" avgqu-sz="0.00" await="5.29" svctm="1.66" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="13.42" svctm="4.74" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="15:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.62"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.98" fault="13.02" majflt="0.00" pgfree="6.86" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.32</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.32" bwrtn="11.85"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>669344</memfree>
+ <memused>1253544</memused>
+ <memused-percent>65.19</memused-percent>
+ <buffers>193948</buffers>
+ <cached>586780</cached>
+ <commit>864540</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.15</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.33" rd_sec="0.00" wr_sec="3.95" avgrq-sz="11.96" avgqu-sz="0.00" await="6.43" svctm="4.06" util-percent="0.13"/>
+ <disk-device dev="dev253-0" tps="0.49" rd_sec="0.00" wr_sec="3.95" avgrq-sz="8.00" avgqu-sz="0.00" await="7.50" svctm="2.73" util-percent="0.13"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.70" avgrq-sz="8.00" avgqu-sz="0.00" await="7.11" svctm="2.64" util-percent="0.12"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="13.16" svctm="4.11" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="15:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.28" nice="0.00" sys="0.24" iowait="0.44" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.00"/>
+ <cpu number="0" usr="0.28" nice="0.00" sys="0.24" iowait="0.44" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.00"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.43"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.17" pgpgout="23.13" fault="64.20" majflt="0.00" pgfree="77.34" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>15.21</tps>
+ <io-reads rtps="0.07" bread="1.00"/>
+ <io-writes wtps="15.14" bwrtn="138.77"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>668712</memfree>
+ <memused>1254176</memused>
+ <memused-percent>65.22</memused-percent>
+ <buffers>194332</buffers>
+ <cached>586884</cached>
+ <commit>864540</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.26</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.04</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.16" ldavg-5="0.03" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="3.60" rd_sec="0.33" wr_sec="46.26" avgrq-sz="12.95" avgqu-sz="0.73" await="203.38" svctm="1.82" util-percent="0.66"/>
+ <disk-device dev="dev253-0" tps="5.81" rd_sec="0.33" wr_sec="46.26" avgrq-sz="8.03" avgqu-sz="3.12" await="538.20" svctm="1.13" util-percent="0.66"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.71" avgrq-sz="8.00" avgqu-sz="0.01" await="11.04" svctm="3.84" util-percent="0.18"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="5.34" rd_sec="0.33" wr_sec="42.54" avgrq-sz="8.03" avgqu-sz="3.12" await="584.03" svctm="1.12" util-percent="0.60"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.50" txpck="2.23" rxkB="0.51" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="15:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.79"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.05" fault="13.26" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.37</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.37" bwrtn="12.29"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>668208</memfree>
+ <memused>1254680</memused>
+ <memused-percent>65.25</memused-percent>
+ <buffers>194700</buffers>
+ <cached>586896</cached>
+ <commit>865076</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.10" avgrq-sz="11.86" avgqu-sz="0.00" await="4.17" svctm="2.57" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.10" avgrq-sz="8.00" avgqu-sz="0.00" await="4.22" svctm="1.75" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.84" avgrq-sz="8.00" avgqu-sz="0.00" await="3.90" svctm="1.65" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.16" svctm="3.32" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="15:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.07"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.14" fault="12.79" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.44</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.44" bwrtn="12.85"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>667836</memfree>
+ <memused>1255052</memused>
+ <memused-percent>65.27</memused-percent>
+ <buffers>195084</buffers>
+ <cached>586916</cached>
+ <commit>864668</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.06" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.28" avgrq-sz="11.62" avgqu-sz="0.00" await="5.38" svctm="2.65" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.54" rd_sec="0.00" wr_sec="4.28" avgrq-sz="8.00" avgqu-sz="0.00" await="5.19" svctm="1.83" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.92" avgrq-sz="8.00" avgqu-sz="0.00" await="3.46" svctm="1.26" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="24.11" svctm="8.07" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.20" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="16:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.28" nice="0.00" sys="0.24" iowait="0.54" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="98.89"/>
+ <cpu number="0" usr="0.28" nice="0.00" sys="0.24" iowait="0.54" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="98.89"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.65"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.01" pgpgout="21.53" fault="64.87" majflt="0.00" pgfree="76.00" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>14.17</tps>
+ <io-reads rtps="0.01" bread="0.08"/>
+ <io-writes wtps="14.16" bwrtn="129.21"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>665468</memfree>
+ <memused>1257420</memused>
+ <memused-percent>65.39</memused-percent>
+ <buffers>195484</buffers>
+ <cached>586944</cached>
+ <commit>864668</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.99</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="3.40" rd_sec="0.03" wr_sec="43.07" avgrq-sz="12.69" avgqu-sz="0.74" await="218.67" svctm="2.37" util-percent="0.80"/>
+ <disk-device dev="dev253-0" tps="5.39" rd_sec="0.03" wr_sec="43.07" avgrq-sz="8.00" avgqu-sz="4.38" await="812.41" svctm="1.50" util-percent="0.81"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.04" avgrq-sz="8.00" avgqu-sz="0.00" await="7.81" svctm="2.74" util-percent="0.14"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="4.88" rd_sec="0.03" wr_sec="39.03" avgrq-sz="8.00" avgqu-sz="4.37" await="895.73" svctm="1.37" util-percent="0.67"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.42" txpck="2.24" rxkB="0.49" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.15" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="16:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.84"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.25" fault="22.77" majflt="0.00" pgfree="10.87" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.49</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.49" bwrtn="13.47"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>664776</memfree>
+ <memused>1258112</memused>
+ <memused-percent>65.43</memused-percent>
+ <buffers>195852</buffers>
+ <cached>586956</cached>
+ <commit>865204</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.29</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.49" avgrq-sz="12.27" avgqu-sz="0.00" await="6.30" svctm="2.79" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.56" rd_sec="0.00" wr_sec="4.49" avgrq-sz="8.00" avgqu-sz="0.00" await="6.07" svctm="1.82" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.53" rd_sec="0.00" wr_sec="4.24" avgrq-sz="8.00" avgqu-sz="0.00" await="5.71" svctm="1.69" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="12.00" svctm="4.16" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="16:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.06"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.06" fault="12.76" majflt="0.00" pgfree="6.84" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.36"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>664404</memfree>
+ <memused>1258484</memused>
+ <memused-percent>65.45</memused-percent>
+ <buffers>196228</buffers>
+ <cached>586968</cached>
+ <commit>864796</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.15</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.06" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.12" avgrq-sz="11.72" avgqu-sz="0.00" await="4.40" svctm="2.86" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.12" avgrq-sz="8.00" avgqu-sz="0.00" await="4.30" svctm="1.96" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="3.93" svctm="1.86" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.89" svctm="3.58" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.20" rxkB="0.43" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.15" rxkB="0.24" txkB="0.16" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="16:30:01" interval="598">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.25" iowait="0.46" steal="0.00" irq="0.03" soft="0.02" guest="0.00" idle="98.97"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.25" iowait="0.46" steal="0.00" irq="0.03" soft="0.02" guest="0.00" idle="98.97"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.55"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.01" pgpgout="23.62" fault="62.19" majflt="0.00" pgfree="76.59" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>15.38</tps>
+ <io-reads rtps="0.01" bread="0.04"/>
+ <io-writes wtps="15.38" bwrtn="141.72"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>664408</memfree>
+ <memused>1258480</memused>
+ <memused-percent>65.45</memused-percent>
+ <buffers>196592</buffers>
+ <cached>586972</cached>
+ <commit>864864</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.00</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="3.57" rd_sec="0.01" wr_sec="47.24" avgrq-sz="13.24" avgqu-sz="0.79" await="221.45" svctm="1.89" util-percent="0.67"/>
+ <disk-device dev="dev253-0" tps="5.91" rd_sec="0.01" wr_sec="47.24" avgrq-sz="8.00" avgqu-sz="6.27" await="1060.92" svctm="1.14" util-percent="0.67"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.66" avgrq-sz="8.00" avgqu-sz="0.00" await="3.07" svctm="1.18" util-percent="0.05"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="5.45" rd_sec="0.01" wr_sec="43.58" avgrq-sz="8.00" avgqu-sz="6.27" await="1149.83" svctm="1.14" util-percent="0.62"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.42" txpck="2.23" rxkB="0.49" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="16:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.12" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.70"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.12" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.70"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.94"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.14" fault="13.23" majflt="0.00" pgfree="6.90" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.85"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>663772</memfree>
+ <memused>1259116</memused>
+ <memused-percent>65.48</memused-percent>
+ <buffers>196952</buffers>
+ <cached>586980</cached>
+ <commit>865396</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.27</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.28" avgrq-sz="11.89" avgqu-sz="0.00" await="7.78" svctm="4.76" util-percent="0.17"/>
+ <disk-device dev="dev253-0" tps="0.54" rd_sec="0.00" wr_sec="4.28" avgrq-sz="8.00" avgqu-sz="0.01" await="9.53" svctm="3.21" util-percent="0.17"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.03" avgrq-sz="8.00" avgqu-sz="0.00" await="8.93" svctm="3.13" util-percent="0.16"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="19.05" svctm="6.16" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="16:50:02" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.88"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.10" fault="12.81" majflt="0.00" pgfree="6.90" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.41</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.41" bwrtn="12.60"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>663408</memfree>
+ <memused>1259480</memused>
+ <memused-percent>65.50</memused-percent>
+ <buffers>197328</buffers>
+ <cached>586992</cached>
+ <commit>864988</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.15</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.08" ldavg-5="0.02" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.20" avgrq-sz="11.72" avgqu-sz="0.00" await="3.97" svctm="2.54" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.20" avgrq-sz="8.00" avgqu-sz="0.00" await="3.90" svctm="1.74" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.95" avgrq-sz="8.00" avgqu-sz="0.00" await="3.59" svctm="1.65" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="8.79" svctm="3.16" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.44" txpck="2.19" rxkB="0.45" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="17:00:02" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.23" iowait="0.33" steal="0.00" irq="0.02" soft="0.02" guest="0.00" idle="99.13"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.23" iowait="0.33" steal="0.00" irq="0.02" soft="0.02" guest="0.00" idle="99.13"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.67"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.01" pgpgout="20.17" fault="62.48" majflt="0.00" pgfree="73.58" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>13.28</tps>
+ <io-reads rtps="0.01" bread="0.04"/>
+ <io-writes wtps="13.27" bwrtn="120.99"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>664336</memfree>
+ <memused>1258552</memused>
+ <memused-percent>65.45</memused-percent>
+ <buffers>197708</buffers>
+ <cached>587012</cached>
+ <commit>864992</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.39</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="3.19" rd_sec="0.01" wr_sec="40.33" avgrq-sz="12.63" avgqu-sz="0.56" await="175.22" svctm="1.73" util-percent="0.55"/>
+ <disk-device dev="dev253-0" tps="5.04" rd_sec="0.01" wr_sec="40.33" avgrq-sz="8.00" avgqu-sz="3.01" await="596.12" svctm="1.10" util-percent="0.55"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.82" avgrq-sz="8.00" avgqu-sz="0.01" await="14.34" svctm="3.87" util-percent="0.18"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="4.57" rd_sec="0.01" wr_sec="36.51" avgrq-sz="8.00" avgqu-sz="3.00" await="656.96" svctm="1.07" util-percent="0.49"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.44" txpck="2.23" rxkB="0.51" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="17:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.10" cswch="27.84"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.39" fault="22.41" majflt="0.00" pgfree="10.11" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.59</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.59" bwrtn="14.34"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>663708</memfree>
+ <memused>1259180</memused>
+ <memused-percent>65.48</memused-percent>
+ <buffers>198108</buffers>
+ <cached>587032</cached>
+ <commit>865524</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.26</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.03" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.39" rd_sec="0.00" wr_sec="4.78" avgrq-sz="12.19" avgqu-sz="0.00" await="8.69" svctm="3.26" util-percent="0.13"/>
+ <disk-device dev="dev253-0" tps="0.60" rd_sec="0.00" wr_sec="4.78" avgrq-sz="8.00" avgqu-sz="0.00" await="7.57" svctm="2.14" util-percent="0.13"/>
+ <disk-device dev="dev253-1" tps="0.57" rd_sec="0.00" wr_sec="4.53" avgrq-sz="8.00" avgqu-sz="0.00" await="6.63" svctm="1.80" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="24.53" svctm="8.37" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="17:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.13" iowait="0.15" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.66"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.13" iowait="0.15" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.66"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.73"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.07" fault="15.25" majflt="0.00" pgfree="7.28" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.40</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.40" bwrtn="12.41"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>662708</memfree>
+ <memused>1260180</memused>
+ <memused-percent>65.54</memused-percent>
+ <buffers>198492</buffers>
+ <cached>587044</cached>
+ <commit>865768</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.42</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100115</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="0" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.14" avgrq-sz="11.32" avgqu-sz="0.00" await="8.26" svctm="5.15" util-percent="0.19"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.14" avgrq-sz="8.00" avgqu-sz="0.01" await="12.19" svctm="3.66" util-percent="0.19"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.78" avgrq-sz="8.00" avgqu-sz="0.01" await="11.77" svctm="3.51" util-percent="0.17"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="16.59" svctm="5.26" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="574" tcpsck="17" udpsck="14" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="17:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.22" iowait="0.32" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.18"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.22" iowait="0.32" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.18"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.40"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="15.18" fault="61.55" majflt="0.00" pgfree="72.41" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>10.08</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="10.08" bwrtn="91.10"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>662400</memfree>
+ <memused>1260488</memused>
+ <memused-percent>65.55</memused-percent>
+ <buffers>198892</buffers>
+ <cached>587056</cached>
+ <commit>865116</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.13</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="2.49" rd_sec="0.00" wr_sec="30.37" avgrq-sz="12.19" avgqu-sz="0.50" await="199.34" svctm="2.10" util-percent="0.52"/>
+ <disk-device dev="dev253-0" tps="3.80" rd_sec="0.00" wr_sec="30.37" avgrq-sz="8.00" avgqu-sz="1.48" await="389.37" svctm="1.38" util-percent="0.52"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.91" avgrq-sz="8.00" avgqu-sz="0.00" await="4.08" svctm="1.55" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="3.31" rd_sec="0.00" wr_sec="26.45" avgrq-sz="8.00" avgqu-sz="1.48" await="446.36" svctm="1.36" util-percent="0.45"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.40" txpck="2.22" rxkB="0.46" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="17:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.04" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.04" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.76"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.14" fault="14.64" majflt="0.00" pgfree="7.46" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.82"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>661904</memfree>
+ <memused>1260984</memused>
+ <memused-percent>65.58</memused-percent>
+ <buffers>199268</buffers>
+ <cached>587068</cached>
+ <commit>865116</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100111</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="270" ldavg-1="0.06" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.27" avgrq-sz="11.74" avgqu-sz="0.00" await="4.12" svctm="2.57" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.27" avgrq-sz="8.00" avgqu-sz="0.00" await="4.66" svctm="1.76" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.02" avgrq-sz="8.00" avgqu-sz="0.00" await="4.34" svctm="1.66" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.84" svctm="3.37" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.16" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="17:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.73"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.10" fault="13.27" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.41</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.41" bwrtn="12.61"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>661268</memfree>
+ <memused>1261620</memused>
+ <memused-percent>65.61</memused-percent>
+ <buffers>199648</buffers>
+ <cached>587092</cached>
+ <commit>865656</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.27</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.20" avgrq-sz="11.72" avgqu-sz="0.00" await="6.27" svctm="3.43" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.20" avgrq-sz="8.00" avgqu-sz="0.00" await="6.50" svctm="2.36" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.95" avgrq-sz="8.00" avgqu-sz="0.00" await="5.50" svctm="2.03" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="22.11" svctm="7.47" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="18:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.20" iowait="0.05" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.46"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.20" iowait="0.05" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.46"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="32.11"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="4.68" fault="68.29" majflt="0.00" pgfree="73.57" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.70</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.70" bwrtn="28.07"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>663680</memfree>
+ <memused>1259208</memused>
+ <memused-percent>65.49</memused-percent>
+ <buffers>200008</buffers>
+ <cached>587100</cached>
+ <commit>865464</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>1.01</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="9.36" avgrq-sz="25.96" avgqu-sz="0.00" await="7.04" svctm="3.18" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="1.17" rd_sec="0.00" wr_sec="9.36" avgrq-sz="8.00" avgqu-sz="0.08" await="64.91" svctm="0.98" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.45" rd_sec="0.00" wr_sec="3.60" avgrq-sz="8.00" avgqu-sz="0.00" await="3.49" svctm="1.32" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.72" rd_sec="0.00" wr_sec="5.75" avgrq-sz="8.00" avgqu-sz="0.07" await="103.40" svctm="0.77" util-percent="0.06"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="18:10:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="26.34"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.45" fault="22.54" majflt="0.00" pgfree="9.74" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.63</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.63" bwrtn="14.69"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>663184</memfree>
+ <memused>1259704</memused>
+ <memused-percent>65.51</memused-percent>
+ <buffers>200416</buffers>
+ <cached>587112</cached>
+ <commit>865464</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.06" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.40" rd_sec="0.00" wr_sec="4.90" avgrq-sz="12.18" avgqu-sz="0.00" await="4.95" svctm="2.71" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.61" rd_sec="0.00" wr_sec="4.90" avgrq-sz="8.00" avgqu-sz="0.00" await="4.93" svctm="1.78" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.58" rd_sec="0.00" wr_sec="4.64" avgrq-sz="8.00" avgqu-sz="0.00" await="4.58" svctm="1.69" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="11.53" svctm="4.00" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="18:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.26"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.23" fault="15.77" majflt="0.00" pgfree="8.06" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.48</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.48" bwrtn="13.39"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>662812</memfree>
+ <memused>1260076</memused>
+ <memused-percent>65.53</memused-percent>
+ <buffers>200796</buffers>
+ <cached>587132</cached>
+ <commit>865180</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.46" avgrq-sz="12.15" avgqu-sz="0.00" await="3.99" svctm="2.30" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.56" rd_sec="0.00" wr_sec="4.46" avgrq-sz="8.00" avgqu-sz="0.00" await="4.79" svctm="1.52" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.53" rd_sec="0.00" wr_sec="4.21" avgrq-sz="8.00" avgqu-sz="0.00" await="4.52" svctm="1.42" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.16" svctm="3.21" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.32" txpck="2.17" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="18:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.19" iowait="0.07" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.47"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.19" iowait="0.07" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.47"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.04"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="4.88" fault="66.49" majflt="0.00" pgfree="68.34" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.84</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.84" bwrtn="29.27"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>662192</memfree>
+ <memused>1260696</memused>
+ <memused-percent>65.56</memused-percent>
+ <buffers>201196</buffers>
+ <cached>587148</cached>
+ <commit>864568</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.26</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.07" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.40" rd_sec="0.00" wr_sec="9.76" avgrq-sz="24.37" avgqu-sz="0.00" await="9.06" svctm="3.91" util-percent="0.16"/>
+ <disk-device dev="dev253-0" tps="1.22" rd_sec="0.00" wr_sec="9.76" avgrq-sz="8.00" avgqu-sz="0.15" await="124.15" svctm="1.29" util-percent="0.16"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.02" avgrq-sz="8.00" avgqu-sz="0.00" await="4.70" svctm="1.96" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.72" rd_sec="0.00" wr_sec="5.74" avgrq-sz="8.00" avgqu-sz="0.15" await="207.77" svctm="0.83" util-percent="0.06"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="18:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.60"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.10" fault="13.02" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.40</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.40" bwrtn="12.57"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>661820</memfree>
+ <memused>1261068</memused>
+ <memused-percent>65.58</memused-percent>
+ <buffers>201576</buffers>
+ <cached>587164</cached>
+ <commit>864160</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.19" avgrq-sz="11.85" avgqu-sz="0.00" await="6.56" svctm="4.31" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.19" avgrq-sz="8.00" avgqu-sz="0.00" await="6.31" svctm="2.92" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.94" avgrq-sz="8.00" avgqu-sz="0.00" await="4.21" svctm="2.07" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="38.95" svctm="16.05" util-percent="0.05"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="18:50:02" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.82"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.11" fault="13.02" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.42</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.42" bwrtn="12.68"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>661308</memfree>
+ <memused>1261580</memused>
+ <memused-percent>65.61</memused-percent>
+ <buffers>201976</buffers>
+ <cached>587180</cached>
+ <commit>864284</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.06" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.23" avgrq-sz="11.69" avgqu-sz="0.00" await="5.20" svctm="2.65" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.23" avgrq-sz="8.00" avgqu-sz="0.00" await="5.45" svctm="1.82" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="4.14" svctm="1.42" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.04" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="19.59" svctm="6.11" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.35" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="19:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.24" nice="0.00" sys="0.19" iowait="0.07" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.47"/>
+ <cpu number="0" usr="0.24" nice="0.00" sys="0.19" iowait="0.07" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.47"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.88"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="4.88" fault="67.63" majflt="0.00" pgfree="69.17" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.83</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.83" bwrtn="29.26"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>660368</memfree>
+ <memused>1262520</memused>
+ <memused-percent>65.66</memused-percent>
+ <buffers>202348</buffers>
+ <cached>587192</cached>
+ <commit>864692</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.39</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.39" rd_sec="0.00" wr_sec="9.75" avgrq-sz="24.75" avgqu-sz="0.00" await="8.03" svctm="3.50" util-percent="0.14"/>
+ <disk-device dev="dev253-0" tps="1.22" rd_sec="0.00" wr_sec="9.75" avgrq-sz="8.00" avgqu-sz="0.08" await="61.75" svctm="1.13" util-percent="0.14"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.79" avgrq-sz="8.00" avgqu-sz="0.00" await="3.63" svctm="1.25" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.74" rd_sec="0.00" wr_sec="5.96" avgrq-sz="8.00" avgqu-sz="0.07" await="98.76" svctm="1.06" util-percent="0.08"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.11" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="19:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.06" nice="0.00" sys="0.15" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ <cpu number="0" usr="0.06" nice="0.00" sys="0.15" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.13" cswch="28.23"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.36" fault="29.57" majflt="0.00" pgfree="12.69" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.57</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.57" bwrtn="14.18"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>660128</memfree>
+ <memused>1262760</memused>
+ <memused-percent>65.67</memused-percent>
+ <buffers>202724</buffers>
+ <cached>587208</cached>
+ <commit>864284</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.73" avgrq-sz="12.31" avgqu-sz="0.01" await="14.15" svctm="4.56" util-percent="0.18"/>
+ <disk-device dev="dev253-0" tps="0.59" rd_sec="0.00" wr_sec="4.73" avgrq-sz="8.00" avgqu-sz="0.01" await="12.79" svctm="2.97" util-percent="0.18"/>
+ <disk-device dev="dev253-1" tps="0.56" rd_sec="0.00" wr_sec="4.47" avgrq-sz="8.00" avgqu-sz="0.01" await="12.27" svctm="2.72" util-percent="0.15"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="21.95" svctm="7.53" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="19:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.91"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.06" fault="14.66" majflt="0.00" pgfree="7.41" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.37"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>659756</memfree>
+ <memused>1263132</memused>
+ <memused-percent>65.69</memused-percent>
+ <buffers>203012</buffers>
+ <cached>587220</cached>
+ <commit>864412</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.12</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.08" ldavg-5="0.02" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.12" avgrq-sz="11.77" avgqu-sz="0.00" await="4.12" svctm="2.37" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.12" avgrq-sz="8.00" avgqu-sz="0.00" await="4.65" svctm="1.62" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="3.99" svctm="1.37" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="14.68" svctm="5.47" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="19:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.20" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.49"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.20" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.49"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.94"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="4.74" fault="65.81" majflt="0.00" pgfree="68.55" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.72</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.72" bwrtn="28.42"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>659372</memfree>
+ <memused>1263516</memused>
+ <memused-percent>65.71</memused-percent>
+ <buffers>203344</buffers>
+ <cached>587232</cached>
+ <commit>864824</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.14</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="9.47" avgrq-sz="27.05" avgqu-sz="0.00" await="5.84" svctm="3.08" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="1.18" rd_sec="0.00" wr_sec="9.47" avgrq-sz="8.00" avgqu-sz="0.04" await="32.08" svctm="0.92" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.68" avgrq-sz="8.00" avgqu-sz="0.00" await="4.25" svctm="1.69" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.72" rd_sec="0.00" wr_sec="5.79" avgrq-sz="8.00" avgqu-sz="0.04" await="49.78" svctm="0.42" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.43" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="19:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.80"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.26" fault="13.10" majflt="0.00" pgfree="6.93" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.51</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.51" bwrtn="13.57"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>659000</memfree>
+ <memused>1263888</memused>
+ <memused-percent>65.73</memused-percent>
+ <buffers>203688</buffers>
+ <cached>587252</cached>
+ <commit>864412</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.14</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.52" avgrq-sz="11.79" avgqu-sz="0.00" await="4.92" svctm="2.77" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.57" rd_sec="0.00" wr_sec="4.52" avgrq-sz="8.00" avgqu-sz="0.00" await="4.88" svctm="1.88" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.53" rd_sec="0.00" wr_sec="4.27" avgrq-sz="8.00" avgqu-sz="0.00" await="4.27" svctm="1.72" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="15.11" svctm="4.58" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.39" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="19:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.91"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.12" fault="12.96" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.42</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.42" bwrtn="12.75"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>658760</memfree>
+ <memused>1264128</memused>
+ <memused-percent>65.74</memused-percent>
+ <buffers>203928</buffers>
+ <cached>587260</cached>
+ <commit>864004</commit>
+ <commit-percent>14.12</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.10</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100110</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="268" ldavg-1="0.06" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.25" avgrq-sz="11.78" avgqu-sz="0.00" await="6.52" svctm="3.94" util-percent="0.14"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.25" avgrq-sz="8.00" avgqu-sz="0.00" await="8.34" svctm="2.68" util-percent="0.14"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.00" avgrq-sz="8.00" avgqu-sz="0.00" await="8.16" svctm="2.59" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="11.11" svctm="4.16" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.39" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="20:00:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.29" nice="0.00" sys="0.22" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.43"/>
+ <cpu number="0" usr="0.29" nice="0.00" sys="0.22" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.43"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.99"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="6.73" fault="78.90" majflt="0.00" pgfree="77.38" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>3.91</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="3.91" bwrtn="40.36"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>658424</memfree>
+ <memused>1264464</memused>
+ <memused-percent>65.76</memused-percent>
+ <buffers>204280</buffers>
+ <cached>587268</cached>
+ <commit>865016</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.14</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.54" rd_sec="0.00" wr_sec="13.45" avgrq-sz="24.84" avgqu-sz="0.03" await="59.38" svctm="3.93" util-percent="0.21"/>
+ <disk-device dev="dev253-0" tps="1.68" rd_sec="0.00" wr_sec="13.45" avgrq-sz="8.00" avgqu-sz="0.09" await="51.81" svctm="1.27" util-percent="0.21"/>
+ <disk-device dev="dev253-1" tps="0.96" rd_sec="0.00" wr_sec="7.71" avgrq-sz="8.00" avgqu-sz="0.05" await="48.84" svctm="1.94" util-percent="0.19"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.72" rd_sec="0.00" wr_sec="5.75" avgrq-sz="8.00" avgqu-sz="0.04" await="55.80" svctm="0.36" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.39" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="20:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.14" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.70"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.14" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.70"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.80"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.92" fault="22.56" majflt="0.00" pgfree="10.26" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.91</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.91" bwrtn="17.54"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>658184</memfree>
+ <memused>1264704</memused>
+ <memused-percent>65.77</memused-percent>
+ <buffers>204540</buffers>
+ <cached>587292</cached>
+ <commit>865020</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.11</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.45" rd_sec="0.00" wr_sec="5.85" avgrq-sz="13.03" avgqu-sz="0.02" await="34.50" svctm="4.44" util-percent="0.20"/>
+ <disk-device dev="dev253-0" tps="0.73" rd_sec="0.00" wr_sec="5.85" avgrq-sz="8.00" avgqu-sz="0.02" await="25.83" svctm="2.73" util-percent="0.20"/>
+ <disk-device dev="dev253-1" tps="0.70" rd_sec="0.00" wr_sec="5.59" avgrq-sz="8.00" avgqu-sz="0.02" await="26.47" svctm="2.68" util-percent="0.19"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="11.74" svctm="4.00" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.31" txpck="2.17" rxkB="0.42" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="20:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.11" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.11" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.73"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.77"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.37" fault="12.83" majflt="0.00" pgfree="6.90" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.56</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.56" bwrtn="14.22"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>657548</memfree>
+ <memused>1265340</memused>
+ <memused-percent>65.80</memused-percent>
+ <buffers>204840</buffers>
+ <cached>587404</cached>
+ <commit>865076</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.27</frmpg>
+ <bufpg>0.13</bufpg>
+ <campg>0.05</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="272" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.74" avgrq-sz="12.68" avgqu-sz="0.00" await="9.96" svctm="4.73" util-percent="0.18"/>
+ <disk-device dev="dev253-0" tps="0.59" rd_sec="0.00" wr_sec="4.74" avgrq-sz="8.00" avgqu-sz="0.01" await="21.04" svctm="2.99" util-percent="0.18"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="3.98" avgrq-sz="8.00" avgqu-sz="0.00" await="6.93" svctm="2.23" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.10" rd_sec="0.00" wr_sec="0.76" avgrq-sz="8.00" avgqu-sz="0.01" await="94.79" svctm="6.93" util-percent="0.07"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.47" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="20:30:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.19" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.48"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.19" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.48"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.09"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="5.00" fault="65.76" majflt="0.00" pgfree="68.87" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.90</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.90" bwrtn="29.85"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>657492</memfree>
+ <memused>1265396</memused>
+ <memused-percent>65.81</memused-percent>
+ <buffers>205176</buffers>
+ <cached>587416</cached>
+ <commit>863776</commit>
+ <commit-percent>14.12</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.02</frmpg>
+ <bufpg>0.14</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.05" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.40" rd_sec="0.00" wr_sec="9.86" avgrq-sz="24.74" avgqu-sz="0.00" await="6.46" svctm="3.00" util-percent="0.12"/>
+ <disk-device dev="dev253-0" tps="1.25" rd_sec="0.00" wr_sec="9.99" avgrq-sz="8.00" avgqu-sz="0.04" await="28.08" svctm="0.96" util-percent="0.12"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.10" avgrq-sz="8.00" avgqu-sz="0.00" await="4.09" svctm="1.61" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.74" rd_sec="0.00" wr_sec="5.90" avgrq-sz="8.00" avgqu-sz="0.03" await="44.75" svctm="0.51" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.41" txpck="2.20" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="20:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.55"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.05" fault="13.03" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.37</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.37" bwrtn="12.42"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>657128</memfree>
+ <memused>1265760</memused>
+ <memused-percent>65.83</memused-percent>
+ <buffers>205548</buffers>
+ <cached>587432</cached>
+ <commit>863776</commit>
+ <commit-percent>14.12</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.15</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.23" avgrq-sz="12.19" avgqu-sz="0.00" await="4.42" svctm="2.91" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.10" avgrq-sz="8.00" avgqu-sz="0.00" await="5.17" svctm="1.98" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.84" avgrq-sz="8.00" avgqu-sz="0.00" await="3.92" svctm="1.36" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="24.05" svctm="11.26" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.39" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="20:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.63"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.22" fault="13.03" majflt="0.00" pgfree="6.91" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.49</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.49" bwrtn="13.33"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>656624</memfree>
+ <memused>1266264</memused>
+ <memused-percent>65.85</memused-percent>
+ <buffers>205940</buffers>
+ <cached>587452</cached>
+ <commit>863776</commit>
+ <commit-percent>14.12</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.44" avgrq-sz="11.84" avgqu-sz="0.00" await="7.55" svctm="4.70" util-percent="0.18"/>
+ <disk-device dev="dev253-0" tps="0.56" rd_sec="0.00" wr_sec="4.44" avgrq-sz="8.00" avgqu-sz="0.01" await="9.17" svctm="3.19" util-percent="0.18"/>
+ <disk-device dev="dev253-1" tps="0.52" rd_sec="0.00" wr_sec="4.19" avgrq-sz="8.00" avgqu-sz="0.00" await="7.85" svctm="2.75" util-percent="0.14"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="31.00" svctm="10.47" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.41" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="21:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.19" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.43"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.19" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.43"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.84"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="4.73" fault="67.79" majflt="0.00" pgfree="68.98" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.73</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.73" bwrtn="28.38"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>655544</memfree>
+ <memused>1267344</memused>
+ <memused-percent>65.91</memused-percent>
+ <buffers>206288</buffers>
+ <cached>587464</cached>
+ <commit>865332</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.45</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.05" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="9.46" avgrq-sz="25.86" avgqu-sz="0.00" await="7.70" svctm="4.36" util-percent="0.16"/>
+ <disk-device dev="dev253-0" tps="1.18" rd_sec="0.00" wr_sec="9.46" avgrq-sz="8.00" avgqu-sz="0.02" await="15.54" svctm="1.35" util-percent="0.16"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.69" avgrq-sz="8.00" avgqu-sz="0.00" await="5.65" svctm="2.07" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.72" rd_sec="0.00" wr_sec="5.77" avgrq-sz="8.00" avgqu-sz="0.02" await="21.85" svctm="0.89" util-percent="0.06"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.46" txpck="2.19" rxkB="0.44" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="21:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.06" nice="0.00" sys="0.13" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ <cpu number="0" usr="0.06" nice="0.00" sys="0.13" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.10" cswch="27.41"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.28" fault="22.26" majflt="0.00" pgfree="10.10" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.51</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.51" bwrtn="13.69"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>655320</memfree>
+ <memused>1267568</memused>
+ <memused-percent>65.92</memused-percent>
+ <buffers>206640</buffers>
+ <cached>587480</cached>
+ <commit>864516</commit>
+ <commit-percent>14.13</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.09</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100110</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.56" avgrq-sz="12.49" avgqu-sz="0.00" await="7.53" svctm="4.12" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.57" rd_sec="0.00" wr_sec="4.56" avgrq-sz="8.00" avgqu-sz="0.00" await="7.88" svctm="2.64" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.54" rd_sec="0.00" wr_sec="4.31" avgrq-sz="8.00" avgqu-sz="0.00" await="7.78" svctm="2.63" util-percent="0.14"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.63" svctm="2.84" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="21:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.59"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.09" fault="13.02" majflt="0.00" pgfree="6.88" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.53"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>654824</memfree>
+ <memused>1268064</memused>
+ <memused-percent>65.95</memused-percent>
+ <buffers>207004</buffers>
+ <cached>587496</cached>
+ <commit>864928</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.18" avgrq-sz="12.04" avgqu-sz="0.00" await="4.33" svctm="2.69" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.18" avgrq-sz="8.00" avgqu-sz="0.00" await="4.50" svctm="1.81" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.92" avgrq-sz="8.00" avgqu-sz="0.00" await="3.71" svctm="1.61" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="16.74" svctm="4.84" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.45" txpck="2.17" rxkB="0.44" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="21:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.19" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.49"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.19" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.49"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.97"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="4.69" fault="65.88" majflt="0.00" pgfree="68.39" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.71</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.71" bwrtn="28.15"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>654124</memfree>
+ <memused>1268764</memused>
+ <memused-percent>65.98</memused-percent>
+ <buffers>207360</buffers>
+ <cached>587516</cached>
+ <commit>865464</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.29</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.04" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="9.38" avgrq-sz="25.45" avgqu-sz="0.00" await="4.14" svctm="2.61" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="1.17" rd_sec="0.00" wr_sec="9.38" avgrq-sz="8.00" avgqu-sz="0.02" await="13.77" svctm="0.83" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.64" avgrq-sz="8.00" avgqu-sz="0.00" await="3.64" svctm="1.64" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.72" rd_sec="0.00" wr_sec="5.74" avgrq-sz="8.00" avgqu-sz="0.01" await="20.20" svctm="0.31" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.45" txpck="2.19" rxkB="0.44" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="21:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.77"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.43"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.12" fault="13.27" majflt="0.00" pgfree="6.89" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.42</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.42" bwrtn="12.70"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>653628</memfree>
+ <memused>1269260</memused>
+ <memused-percent>66.01</memused-percent>
+ <buffers>207744</buffers>
+ <cached>587532</cached>
+ <commit>865460</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.23" avgrq-sz="11.80" avgqu-sz="0.00" await="4.19" svctm="2.71" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.23" avgrq-sz="8.00" avgqu-sz="0.00" await="4.41" svctm="1.86" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="3.98" avgrq-sz="8.00" avgqu-sz="0.00" await="3.62" svctm="1.66" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="16.79" svctm="5.05" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="21:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.64" nice="0.00" sys="0.29" iowait="0.09" steal="0.01" irq="0.02" soft="0.01" guest="0.00" idle="98.95"/>
+ <cpu number="0" usr="0.64" nice="0.00" sys="0.29" iowait="0.09" steal="0.01" irq="0.02" soft="0.01" guest="0.00" idle="98.95"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.12"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.09" pgpgout="4.94" fault="118.15" majflt="0.00" pgfree="131.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.91</tps>
+ <io-reads rtps="0.04" bread="0.56"/>
+ <io-writes wtps="2.87" bwrtn="29.63"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>661372</memfree>
+ <memused>1261516</memused>
+ <memused-percent>65.61</memused-percent>
+ <buffers>208136</buffers>
+ <cached>587820</cached>
+ <commit>865460</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>3.23</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.12</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="272" ldavg-1="0.24" ldavg-5="0.06" ldavg-15="0.02"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.41" rd_sec="0.19" wr_sec="9.88" avgrq-sz="24.52" avgqu-sz="0.00" await="9.24" svctm="3.23" util-percent="0.13"/>
+ <disk-device dev="dev253-0" tps="1.25" rd_sec="0.19" wr_sec="9.88" avgrq-sz="8.06" avgqu-sz="0.04" await="30.95" svctm="1.07" util-percent="0.13"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.66" avgrq-sz="8.00" avgqu-sz="0.00" await="4.26" svctm="1.68" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.79" rd_sec="0.19" wr_sec="6.22" avgrq-sz="8.10" avgqu-sz="0.04" await="46.38" svctm="0.79" util-percent="0.06"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.78" txpck="2.44" rxkB="1.01" txkB="0.37" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="22:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.17" iowait="0.58" steal="0.00" irq="0.03" soft="0.02" guest="0.00" idle="99.16"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.17" iowait="0.58" steal="0.00" irq="0.03" soft="0.02" guest="0.00" idle="99.16"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.26"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="35.17" fault="16.30" majflt="0.00" pgfree="21.08" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>22.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="22.38" bwrtn="211.03"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>653364</memfree>
+ <memused>1269524</memused>
+ <memused-percent>66.02</memused-percent>
+ <buffers>208484</buffers>
+ <cached>587836</cached>
+ <commit>865460</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.34</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.07" ldavg-5="0.03" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="4.79" rd_sec="0.00" wr_sec="70.34" avgrq-sz="14.68" avgqu-sz="1.04" await="216.75" svctm="1.79" util-percent="0.86"/>
+ <disk-device dev="dev253-0" tps="8.79" rd_sec="0.00" wr_sec="70.34" avgrq-sz="8.00" avgqu-sz="13.69" await="1556.68" svctm="0.98" util-percent="0.86"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.91" avgrq-sz="8.00" avgqu-sz="0.00" await="3.85" svctm="1.48" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="8.30" rd_sec="0.00" wr_sec="66.43" avgrq-sz="8.00" avgqu-sz="13.69" await="1648.12" svctm="0.95" util-percent="0.79"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.46" txpck="2.19" rxkB="0.44" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="22:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.09" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.71"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.44"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.38" fault="22.35" majflt="0.00" pgfree="10.11" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.58</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.58" bwrtn="14.30"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>652868</memfree>
+ <memused>1270020</memused>
+ <memused-percent>66.05</memused-percent>
+ <buffers>208892</buffers>
+ <cached>587852</cached>
+ <commit>865592</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.39" rd_sec="0.00" wr_sec="4.77" avgrq-sz="12.15" avgqu-sz="0.00" await="6.83" svctm="3.60" util-percent="0.14"/>
+ <disk-device dev="dev253-0" tps="0.60" rd_sec="0.00" wr_sec="4.77" avgrq-sz="8.00" avgqu-sz="0.00" await="6.83" svctm="2.38" util-percent="0.14"/>
+ <disk-device dev="dev253-1" tps="0.56" rd_sec="0.00" wr_sec="4.51" avgrq-sz="8.00" avgqu-sz="0.00" await="5.60" svctm="2.36" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="28.79" svctm="12.53" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.16" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.11" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="22:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.20" iowait="0.07" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.44"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.20" iowait="0.07" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.44"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.76"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.09" fault="63.03" majflt="0.00" pgfree="66.73" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.53"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>659996</memfree>
+ <memused>1262892</memused>
+ <memused-percent>65.68</memused-percent>
+ <buffers>209272</buffers>
+ <cached>587860</cached>
+ <commit>865180</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>2.97</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.18" avgrq-sz="12.27" avgqu-sz="0.00" await="5.70" svctm="3.25" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.18" avgrq-sz="8.00" avgqu-sz="0.00" await="6.06" svctm="2.14" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.74" avgrq-sz="8.00" avgqu-sz="0.00" await="3.95" svctm="1.67" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.06" rd_sec="0.00" wr_sec="0.44" avgrq-sz="8.00" avgqu-sz="0.00" await="24.03" svctm="6.12" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.54" txpck="2.21" rxkB="0.46" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="22:30:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.13" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.65"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.13" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.65"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.32"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="11.65" fault="16.53" majflt="0.00" pgfree="13.88" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>7.69</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="7.69" bwrtn="69.89"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>651988</memfree>
+ <memused>1270900</memused>
+ <memused-percent>66.09</memused-percent>
+ <buffers>209660</buffers>
+ <cached>587876</cached>
+ <commit>865588</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.34</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.06" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.87" rd_sec="0.00" wr_sec="23.30" avgrq-sz="12.48" avgqu-sz="0.18" await="96.80" svctm="1.64" util-percent="0.31"/>
+ <disk-device dev="dev253-0" tps="2.91" rd_sec="0.00" wr_sec="23.30" avgrq-sz="8.00" avgqu-sz="0.47" await="162.52" svctm="1.06" util-percent="0.31"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.90" avgrq-sz="8.00" avgqu-sz="0.00" await="5.39" svctm="1.99" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="2.43" rd_sec="0.00" wr_sec="19.40" avgrq-sz="8.00" avgqu-sz="0.47" await="194.07" svctm="0.87" util-percent="0.21"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.42" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="22:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.13" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.69"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.77"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.10" fault="14.44" majflt="0.00" pgfree="7.45" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.41</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.41" bwrtn="12.58"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>651748</memfree>
+ <memused>1271140</memused>
+ <memused-percent>66.11</memused-percent>
+ <buffers>210044</buffers>
+ <cached>587888</cached>
+ <commit>865312</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.16</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.19" avgrq-sz="11.74" avgqu-sz="0.00" await="7.71" svctm="5.09" util-percent="0.18"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.19" avgrq-sz="8.00" avgqu-sz="0.00" await="8.27" svctm="3.47" util-percent="0.18"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.94" avgrq-sz="8.00" avgqu-sz="0.00" await="7.65" svctm="3.36" util-percent="0.17"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="17.84" svctm="5.32" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="22:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.18" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.48"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.18" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.48"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.88"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.10" fault="64.23" majflt="0.00" pgfree="65.77" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.39</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.39" bwrtn="12.62"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>657948</memfree>
+ <memused>1264940</memused>
+ <memused-percent>65.78</memused-percent>
+ <buffers>210412</buffers>
+ <cached>587900</cached>
+ <commit>865308</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>2.59</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="272" ldavg-1="0.08" ldavg-5="0.03" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.21" avgrq-sz="12.29" avgqu-sz="0.00" await="3.57" svctm="2.20" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.53" rd_sec="0.00" wr_sec="4.21" avgrq-sz="8.00" avgqu-sz="0.00" await="4.49" svctm="1.44" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.78" avgrq-sz="8.00" avgqu-sz="0.00" await="3.12" svctm="1.26" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.43" avgrq-sz="8.00" avgqu-sz="0.00" await="16.59" svctm="3.03" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.19" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="23:00:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.25" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.56"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.25" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.56"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.06"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.95" fault="16.30" majflt="0.00" pgfree="12.73" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.07</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.07" bwrtn="47.67"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>649824</memfree>
+ <memused>1273064</memused>
+ <memused-percent>66.21</memused-percent>
+ <buffers>210776</buffers>
+ <cached>587904</cached>
+ <commit>865308</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.39</frmpg>
+ <bufpg>0.15</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.10" rd_sec="0.00" wr_sec="15.89" avgrq-sz="14.50" avgqu-sz="0.43" await="390.99" svctm="4.76" util-percent="0.52"/>
+ <disk-device dev="dev253-0" tps="1.99" rd_sec="0.00" wr_sec="15.89" avgrq-sz="8.00" avgqu-sz="2.32" await="1170.11" svctm="2.63" util-percent="0.52"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.84" avgrq-sz="8.00" avgqu-sz="0.00" await="6.28" svctm="2.15" util-percent="0.10"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.51" rd_sec="0.00" wr_sec="12.05" avgrq-sz="8.00" avgqu-sz="2.32" await="1541.30" svctm="2.79" util-percent="0.42"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="23:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.85"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.46" fault="22.15" majflt="0.00" pgfree="10.12" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.64</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.64" bwrtn="14.78"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>649584</memfree>
+ <memused>1273304</memused>
+ <memused-percent>66.22</memused-percent>
+ <buffers>211184</buffers>
+ <cached>587932</cached>
+ <commit>864896</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.17</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100111</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="269" ldavg-1="0.01" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.41" rd_sec="0.00" wr_sec="4.93" avgrq-sz="12.05" avgqu-sz="0.00" await="4.83" svctm="2.36" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.62" rd_sec="0.00" wr_sec="4.93" avgrq-sz="8.00" avgqu-sz="0.00" await="4.72" svctm="1.57" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.58" rd_sec="0.00" wr_sec="4.67" avgrq-sz="8.00" avgqu-sz="0.00" await="4.56" svctm="1.52" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="7.74" svctm="2.68" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="23:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.81"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.07" fault="13.43" majflt="0.00" pgfree="6.88" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.45"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>648948</memfree>
+ <memused>1273940</memused>
+ <memused-percent>66.25</memused-percent>
+ <buffers>211524</buffers>
+ <cached>587952</cached>
+ <commit>865436</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.27</frmpg>
+ <bufpg>0.14</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.11" ldavg-5="0.03" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.15" avgrq-sz="11.96" avgqu-sz="0.00" await="4.64" svctm="2.94" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.15" avgrq-sz="8.00" avgqu-sz="0.00" await="5.04" svctm="1.98" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.79" avgrq-sz="8.00" avgqu-sz="0.00" await="3.54" svctm="1.55" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="20.74" svctm="6.56" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.16" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="23:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.21" iowait="0.24" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.27"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.21" iowait="0.24" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.27"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.24"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="9.48" fault="66.40" majflt="0.00" pgfree="73.39" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>6.17</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="6.17" bwrtn="56.88"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>648808</memfree>
+ <memused>1274080</memused>
+ <memused-percent>66.26</memused-percent>
+ <buffers>211788</buffers>
+ <cached>587968</cached>
+ <commit>865844</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.06</frmpg>
+ <bufpg>0.11</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.43" rd_sec="0.00" wr_sec="18.96" avgrq-sz="13.26" avgqu-sz="0.42" await="295.14" svctm="3.34" util-percent="0.48"/>
+ <disk-device dev="dev253-0" tps="2.37" rd_sec="0.00" wr_sec="18.96" avgrq-sz="8.00" avgqu-sz="2.41" await="1017.63" svctm="2.02" util-percent="0.48"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.81" avgrq-sz="8.00" avgqu-sz="0.00" await="3.65" svctm="1.77" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.89" rd_sec="0.00" wr_sec="15.15" avgrq-sz="8.00" avgqu-sz="2.41" await="1272.47" svctm="2.09" util-percent="0.40"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.40" txpck="2.22" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="23:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.12" steal="0.05" irq="0.01" soft="0.00" guest="0.00" idle="99.66"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.12" steal="0.05" irq="0.01" soft="0.00" guest="0.00" idle="99.66"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.75"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.03" fault="13.02" majflt="0.00" pgfree="6.86" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.35</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.35" bwrtn="12.19"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>648692</memfree>
+ <memused>1274196</memused>
+ <memused-percent>66.26</memused-percent>
+ <buffers>211984</buffers>
+ <cached>587976</cached>
+ <commit>865976</commit>
+ <commit-percent>14.16</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.08</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.06" avgrq-sz="12.02" avgqu-sz="0.00" await="6.01" svctm="4.52" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.06" avgrq-sz="8.00" avgqu-sz="0.00" await="7.73" svctm="3.01" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.81" avgrq-sz="8.00" avgqu-sz="0.00" await="6.21" svctm="2.28" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="30.74" svctm="14.11" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.45" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-12" time="23:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.19" iowait="0.28" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.24"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.19" iowait="0.28" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.24"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.98"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="6.09" fault="63.63" majflt="0.00" pgfree="68.24" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>4.31</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="4.31" bwrtn="36.57"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>648548</memfree>
+ <memused>1274340</memused>
+ <memused-percent>66.27</memused-percent>
+ <buffers>212224</buffers>
+ <cached>587988</cached>
+ <commit>865976</commit>
+ <commit-percent>14.16</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.06</frmpg>
+ <bufpg>0.10</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="272" ldavg-1="0.06" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.26" rd_sec="0.00" wr_sec="12.19" avgrq-sz="9.64" avgqu-sz="0.51" await="399.65" svctm="4.25" util-percent="0.54"/>
+ <disk-device dev="dev253-0" tps="1.52" rd_sec="0.00" wr_sec="12.19" avgrq-sz="8.00" avgqu-sz="1.01" await="659.75" svctm="3.54" util-percent="0.54"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.85" avgrq-sz="8.00" avgqu-sz="0.00" await="3.44" svctm="1.30" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.04" rd_sec="0.00" wr_sec="8.34" avgrq-sz="8.00" avgqu-sz="1.00" await="962.66" svctm="4.57" util-percent="0.48"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.43" txpck="2.20" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="00:00:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.12" iowait="0.09" steal="0.00" irq="0.01" soft="0.00" guest="0.00" idle="99.72"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.12" iowait="0.09" steal="0.00" irq="0.01" soft="0.00" guest="0.00" idle="99.72"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.32"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="4.91" fault="15.82" majflt="0.00" pgfree="10.68" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>2.84</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="2.84" bwrtn="29.48"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>648440</memfree>
+ <memused>1274448</memused>
+ <memused-percent>66.28</memused-percent>
+ <buffers>212444</buffers>
+ <cached>588004</cached>
+ <commit>865156</commit>
+ <commit-percent>14.14</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.04</frmpg>
+ <bufpg>0.09</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="9.83" avgrq-sz="25.63" avgqu-sz="0.00" await="6.07" svctm="3.63" util-percent="0.14"/>
+ <disk-device dev="dev253-0" tps="1.23" rd_sec="0.00" wr_sec="9.83" avgrq-sz="8.00" avgqu-sz="0.03" await="24.63" svctm="1.14" util-percent="0.14"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.05" avgrq-sz="8.00" avgqu-sz="0.00" await="3.50" svctm="1.36" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.72" rd_sec="0.00" wr_sec="5.77" avgrq-sz="8.00" avgqu-sz="0.03" await="39.47" svctm="0.98" util-percent="0.07"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.41" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="00:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.63"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.35" fault="22.82" majflt="0.00" pgfree="10.11" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.56</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.56" bwrtn="14.10"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>648068</memfree>
+ <memused>1274820</memused>
+ <memused-percent>66.30</memused-percent>
+ <buffers>212628</buffers>
+ <cached>588016</cached>
+ <commit>865568</commit>
+ <commit-percent>14.15</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.08</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100113</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.39" rd_sec="0.00" wr_sec="4.70" avgrq-sz="12.09" avgqu-sz="0.00" await="9.05" svctm="3.59" util-percent="0.14"/>
+ <disk-device dev="dev253-0" tps="0.59" rd_sec="0.00" wr_sec="4.70" avgrq-sz="8.00" avgqu-sz="0.00" await="8.43" svctm="2.39" util-percent="0.14"/>
+ <disk-device dev="dev253-1" tps="0.56" rd_sec="0.00" wr_sec="4.45" avgrq-sz="8.00" avgqu-sz="0.00" await="8.40" svctm="2.32" util-percent="0.13"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.00" svctm="3.74" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.44" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="00:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.25" nice="0.00" sys="0.19" iowait="0.11" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.42"/>
+ <cpu number="0" usr="0.25" nice="0.00" sys="0.19" iowait="0.11" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.42"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.75"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.20" fault="64.31" majflt="0.00" pgfree="68.06" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.46</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.46" bwrtn="13.23"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>655748</memfree>
+ <memused>1267140</memused>
+ <memused-percent>65.90</memused-percent>
+ <buffers>212828</buffers>
+ <cached>588028</cached>
+ <commit>866308</commit>
+ <commit-percent>14.16</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>3.21</frmpg>
+ <bufpg>0.08</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100112</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.14" ldavg-5="0.03" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.41" avgrq-sz="12.28" avgqu-sz="0.00" await="5.57" svctm="4.10" util-percent="0.15"/>
+ <disk-device dev="dev253-0" tps="0.55" rd_sec="0.00" wr_sec="4.41" avgrq-sz="8.00" avgqu-sz="0.00" await="6.80" svctm="2.68" util-percent="0.15"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="3.98" avgrq-sz="8.00" avgqu-sz="0.00" await="5.02" svctm="2.12" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.43" avgrq-sz="8.00" avgqu-sz="0.00" await="23.31" svctm="8.00" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.44" txpck="2.19" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.11" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="00:30:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.24" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.56"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.24" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.56"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.02"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.05" fault="16.27" majflt="0.00" pgfree="12.62" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.15</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.15" bwrtn="48.29"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>647880</memfree>
+ <memused>1275008</memused>
+ <memused-percent>66.31</memused-percent>
+ <buffers>213044</buffers>
+ <cached>588048</cached>
+ <commit>866308</commit>
+ <commit-percent>14.16</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-3.28</frmpg>
+ <bufpg>0.09</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100110</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="268" ldavg-1="0.00" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.12" rd_sec="0.00" wr_sec="16.10" avgrq-sz="14.35" avgqu-sz="0.37" await="332.19" svctm="4.27" util-percent="0.48"/>
+ <disk-device dev="dev253-0" tps="2.01" rd_sec="0.00" wr_sec="16.10" avgrq-sz="8.00" avgqu-sz="0.61" await="303.98" svctm="2.39" util-percent="0.48"/>
+ <disk-device dev="dev253-1" tps="0.51" rd_sec="0.00" wr_sec="4.05" avgrq-sz="8.00" avgqu-sz="0.00" await="5.36" svctm="2.17" util-percent="0.11"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.51" rd_sec="0.00" wr_sec="12.04" avgrq-sz="8.00" avgqu-sz="0.61" await="404.51" svctm="2.54" util-percent="0.38"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.41" txpck="2.19" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="00:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.67"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.98" fault="13.34" majflt="0.00" pgfree="6.84" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.33</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.33" bwrtn="11.86"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>647368</memfree>
+ <memused>1275520</memused>
+ <memused-percent>66.33</memused-percent>
+ <buffers>213228</buffers>
+ <cached>588060</cached>
+ <commit>867124</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.21</frmpg>
+ <bufpg>0.08</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="3.95" avgrq-sz="11.72" avgqu-sz="0.00" await="3.74" svctm="2.31" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.49" rd_sec="0.00" wr_sec="3.95" avgrq-sz="8.00" avgqu-sz="0.00" await="3.76" svctm="1.58" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.70" avgrq-sz="8.00" avgqu-sz="0.00" await="3.38" svctm="1.49" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.26" svctm="3.68" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.39" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="00:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="27.02"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.15" fault="13.00" majflt="0.00" pgfree="7.72" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.44</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.44" bwrtn="12.90"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>647180</memfree>
+ <memused>1275708</memused>
+ <memused-percent>66.34</memused-percent>
+ <buffers>213488</buffers>
+ <cached>588080</cached>
+ <commit>867252</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.08</frmpg>
+ <bufpg>0.11</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.06" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.37" rd_sec="0.00" wr_sec="4.30" avgrq-sz="11.71" avgqu-sz="0.00" await="3.56" svctm="2.07" util-percent="0.08"/>
+ <disk-device dev="dev253-0" tps="0.54" rd_sec="0.00" wr_sec="4.30" avgrq-sz="8.00" avgqu-sz="0.00" await="3.78" svctm="1.43" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.94" avgrq-sz="8.00" avgqu-sz="0.00" await="3.22" svctm="1.25" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="9.96" svctm="3.37" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.42" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="01:00:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.21" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.30"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.21" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.30"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.40"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.63" fault="67.21" majflt="0.00" pgfree="71.71" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>4.85</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="4.85" bwrtn="45.76"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644688</memfree>
+ <memused>1278200</memused>
+ <memused-percent>66.47</memused-percent>
+ <buffers>213712</buffers>
+ <cached>588088</cached>
+ <commit>866844</commit>
+ <commit-percent>14.17</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-1.04</frmpg>
+ <bufpg>0.09</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.03" rd_sec="0.00" wr_sec="15.25" avgrq-sz="14.75" avgqu-sz="0.36" await="345.47" svctm="4.29" util-percent="0.44"/>
+ <disk-device dev="dev253-0" tps="1.91" rd_sec="0.00" wr_sec="15.25" avgrq-sz="8.00" avgqu-sz="1.94" await="1016.26" svctm="2.33" util-percent="0.44"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.67" avgrq-sz="8.00" avgqu-sz="0.00" await="5.41" svctm="1.59" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.45" rd_sec="0.00" wr_sec="11.58" avgrq-sz="8.00" avgqu-sz="1.93" await="1336.52" svctm="2.57" util-percent="0.37"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.41" txpck="2.22" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.15" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="01:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.05" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ <cpu number="0" usr="0.05" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.75"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.67"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.41" fault="22.52" majflt="0.00" pgfree="10.10" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.60</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.60" bwrtn="14.47"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644440</memfree>
+ <memused>1278448</memused>
+ <memused-percent>66.49</memused-percent>
+ <buffers>213920</buffers>
+ <cached>588108</cached>
+ <commit>866844</commit>
+ <commit-percent>14.17</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.09</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.39" rd_sec="0.00" wr_sec="4.82" avgrq-sz="12.34" avgqu-sz="0.00" await="4.80" svctm="2.24" util-percent="0.09"/>
+ <disk-device dev="dev253-0" tps="0.60" rd_sec="0.00" wr_sec="4.82" avgrq-sz="8.00" avgqu-sz="0.00" await="4.64" svctm="1.46" util-percent="0.09"/>
+ <disk-device dev="dev253-1" tps="0.57" rd_sec="0.00" wr_sec="4.57" avgrq-sz="8.00" avgqu-sz="0.00" await="4.44" svctm="1.38" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="8.32" svctm="2.95" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.16" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.01" txpck="2.11" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="01:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.66"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.05" fault="13.23" majflt="0.00" pgfree="6.88" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.37</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.37" bwrtn="12.32"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644060</memfree>
+ <memused>1278828</memused>
+ <memused-percent>66.51</memused-percent>
+ <buffers>214128</buffers>
+ <cached>588120</cached>
+ <commit>867384</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.09</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.11" avgrq-sz="11.85" avgqu-sz="0.00" await="4.12" svctm="2.75" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.11" avgrq-sz="8.00" avgqu-sz="0.00" await="4.60" svctm="1.87" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.85" avgrq-sz="8.00" avgqu-sz="0.00" await="3.06" svctm="1.20" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="28.16" svctm="12.05" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.38" txpck="2.16" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="01:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.19" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.32"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.19" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.32"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.44"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="7.94" fault="66.22" majflt="0.00" pgfree="71.00" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.05</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.05" bwrtn="47.62"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644484</memfree>
+ <memused>1278404</memused>
+ <memused-percent>66.48</memused-percent>
+ <buffers>214384</buffers>
+ <cached>588136</cached>
+ <commit>867512</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.18</frmpg>
+ <bufpg>0.11</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.00" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.08" rd_sec="0.00" wr_sec="15.87" avgrq-sz="14.67" avgqu-sz="0.42" await="383.78" svctm="4.42" util-percent="0.48"/>
+ <disk-device dev="dev253-0" tps="1.98" rd_sec="0.00" wr_sec="15.87" avgrq-sz="8.00" avgqu-sz="2.24" await="1126.48" svctm="2.41" util-percent="0.48"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="4.00" avgrq-sz="8.00" avgqu-sz="0.00" await="3.43" svctm="1.29" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.48" rd_sec="0.00" wr_sec="11.88" avgrq-sz="8.00" avgqu-sz="2.23" await="1504.20" svctm="2.81" util-percent="0.42"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.42" txpck="2.22" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="01:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.81"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.06" fault="12.72" majflt="0.00" pgfree="6.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.36"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644500</memfree>
+ <memused>1278388</memused>
+ <memused-percent>66.48</memused-percent>
+ <buffers>214608</buffers>
+ <cached>588152</cached>
+ <commit>866692</commit>
+ <commit-percent>14.17</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.01</frmpg>
+ <bufpg>0.09</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.03" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.12" avgrq-sz="11.88" avgqu-sz="0.00" await="6.16" svctm="4.47" util-percent="0.16"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.12" avgrq-sz="8.00" avgqu-sz="0.00" await="9.15" svctm="3.02" util-percent="0.16"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="9.23" svctm="3.03" util-percent="0.15"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="7.95" svctm="2.79" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.36" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="01:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.10" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.72"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.65"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.02" fault="13.31" majflt="0.00" pgfree="6.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.35</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.35" bwrtn="12.14"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644128</memfree>
+ <memused>1278760</memused>
+ <memused-percent>66.50</memused-percent>
+ <buffers>214704</buffers>
+ <cached>588164</cached>
+ <commit>867640</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.16</frmpg>
+ <bufpg>0.04</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105219</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100114</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.05" avgrq-sz="11.88" avgqu-sz="0.00" await="6.27" svctm="4.69" util-percent="0.16"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.05" avgrq-sz="8.00" avgqu-sz="0.00" await="5.64" svctm="3.17" util-percent="0.16"/>
+ <disk-device dev="dev253-1" tps="0.47" rd_sec="0.00" wr_sec="3.79" avgrq-sz="8.00" avgqu-sz="0.00" await="5.39" svctm="3.16" util-percent="0.15"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="9.47" svctm="3.37" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.34" txpck="2.15" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.11" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="02:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.21" iowait="0.31" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.19"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.21" iowait="0.31" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.19"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.22"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.58" fault="68.55" majflt="0.00" pgfree="72.71" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.53</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.53" bwrtn="51.47"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644552</memfree>
+ <memused>1278336</memused>
+ <memused-percent>66.48</memused-percent>
+ <buffers>214736</buffers>
+ <cached>588180</cached>
+ <commit>866820</commit>
+ <commit-percent>14.17</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.18</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105218</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100110</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.24" rd_sec="0.00" wr_sec="17.16" avgrq-sz="13.84" avgqu-sz="0.52" await="418.90" svctm="4.55" util-percent="0.56"/>
+ <disk-device dev="dev253-0" tps="2.14" rd_sec="0.00" wr_sec="17.16" avgrq-sz="8.00" avgqu-sz="2.79" await="1302.89" svctm="2.64" util-percent="0.57"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.85" avgrq-sz="8.00" avgqu-sz="0.00" await="9.21" svctm="6.70" util-percent="0.32"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.66" rd_sec="0.00" wr_sec="13.31" avgrq-sz="8.00" avgqu-sz="2.79" await="1676.59" svctm="2.94" util-percent="0.49"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.37" txpck="2.21" rxkB="0.45" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="02:10:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.06" nice="0.00" sys="0.14" iowait="0.11" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.67"/>
+ <cpu number="0" usr="0.06" nice="0.00" sys="0.14" iowait="0.11" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.67"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="28.79"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.97" fault="23.79" majflt="0.00" pgfree="15.52" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.94</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.94" bwrtn="17.81"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644224</memfree>
+ <memused>1278664</memused>
+ <memused-percent>66.50</memused-percent>
+ <buffers>214792</buffers>
+ <cached>588228</cached>
+ <commit>867368</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.14</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.02</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4768</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.05" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.46" rd_sec="0.00" wr_sec="5.94" avgrq-sz="12.95" avgqu-sz="0.01" await="22.74" svctm="4.72" util-percent="0.22"/>
+ <disk-device dev="dev253-0" tps="0.74" rd_sec="0.00" wr_sec="5.94" avgrq-sz="8.00" avgqu-sz="0.02" await="27.61" svctm="2.92" util-percent="0.22"/>
+ <disk-device dev="dev253-1" tps="0.53" rd_sec="0.00" wr_sec="4.27" avgrq-sz="8.00" avgqu-sz="0.00" await="4.26" svctm="1.52" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.21" rd_sec="0.00" wr_sec="1.67" avgrq-sz="8.00" avgqu-sz="0.02" await="87.40" svctm="6.52" util-percent="0.14"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.60" txpck="2.31" rxkB="0.52" txkB="0.37" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.05" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="02:20:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.07" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.62"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.15" fault="12.62" majflt="0.00" pgfree="6.84" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.43</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.43" bwrtn="12.90"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644100</memfree>
+ <memused>1278788</memused>
+ <memused-percent>66.50</memused-percent>
+ <buffers>214816</buffers>
+ <cached>588248</cached>
+ <commit>867228</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.36" rd_sec="0.00" wr_sec="4.30" avgrq-sz="11.98" avgqu-sz="0.00" await="5.10" svctm="2.98" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.54" rd_sec="0.00" wr_sec="4.30" avgrq-sz="8.00" avgqu-sz="0.00" await="5.70" svctm="2.00" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.94" avgrq-sz="8.00" avgqu-sz="0.00" await="5.20" svctm="1.83" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="11.26" svctm="3.85" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="3.12" txpck="2.17" rxkB="0.48" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="02:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.20" iowait="0.26" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.24"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.20" iowait="0.26" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.24"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.17"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.37" fault="66.29" majflt="0.00" pgfree="71.55" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.36</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.36" bwrtn="50.24"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>643152</memfree>
+ <memused>1279736</memused>
+ <memused-percent>66.55</memused-percent>
+ <buffers>214860</buffers>
+ <cached>588256</cached>
+ <commit>867356</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.40</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.17" rd_sec="0.00" wr_sec="16.75" avgrq-sz="14.28" avgqu-sz="0.42" await="357.33" svctm="4.86" util-percent="0.57"/>
+ <disk-device dev="dev253-0" tps="2.09" rd_sec="0.00" wr_sec="16.75" avgrq-sz="8.00" avgqu-sz="2.40" await="1148.46" svctm="2.72" util-percent="0.57"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.64" avgrq-sz="8.00" avgqu-sz="0.00" await="3.94" svctm="1.66" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.64" rd_sec="0.00" wr_sec="13.10" avgrq-sz="8.00" avgqu-sz="2.40" await="1466.65" svctm="3.02" util-percent="0.49"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.76" txpck="2.23" rxkB="0.48" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="02:40:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.79"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.79"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.81"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.07" fault="13.24" majflt="0.00" pgfree="6.87" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.41"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>642904</memfree>
+ <memused>1279984</memused>
+ <memused-percent>66.57</memused-percent>
+ <buffers>214876</buffers>
+ <cached>588272</cached>
+ <commit>867764</commit>
+ <commit-percent>14.19</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100115</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.14" avgrq-sz="11.92" avgqu-sz="0.00" await="3.79" svctm="2.15" util-percent="0.07"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.14" avgrq-sz="8.00" avgqu-sz="0.00" await="4.28" svctm="1.45" util-percent="0.08"/>
+ <disk-device dev="dev253-1" tps="0.49" rd_sec="0.00" wr_sec="3.88" avgrq-sz="8.00" avgqu-sz="0.00" await="4.03" svctm="1.43" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="8.11" svctm="2.89" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.47" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="02:50:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.78"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.04" fault="12.41" majflt="0.00" pgfree="6.87" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.36</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.36" bwrtn="12.21"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>643160</memfree>
+ <memused>1279728</memused>
+ <memused-percent>66.55</memused-percent>
+ <buffers>214892</buffers>
+ <cached>588284</cached>
+ <commit>867360</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.11</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100115</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.34" rd_sec="0.00" wr_sec="4.07" avgrq-sz="11.90" avgqu-sz="0.00" await="3.76" svctm="2.16" util-percent="0.07"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.07" avgrq-sz="8.00" avgqu-sz="0.00" await="4.11" svctm="1.46" util-percent="0.07"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.82" avgrq-sz="8.00" avgqu-sz="0.00" await="3.20" svctm="1.22" util-percent="0.06"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="18.00" svctm="5.16" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.47" txpck="2.17" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="03:00:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.27" nice="0.00" sys="0.20" iowait="0.30" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.22"/>
+ <cpu number="0" usr="0.27" nice="0.00" sys="0.20" iowait="0.30" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.22"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.22"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="8.47" fault="65.46" majflt="0.00" pgfree="72.37" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>5.44</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="5.44" bwrtn="50.81"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644568</memfree>
+ <memused>1278320</memused>
+ <memused-percent>66.48</memused-percent>
+ <buffers>214928</buffers>
+ <cached>588300</cached>
+ <commit>867488</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.59</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.02" ldavg-5="0.01" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="1.20" rd_sec="0.00" wr_sec="16.94" avgrq-sz="14.07" avgqu-sz="0.48" await="395.61" svctm="4.34" util-percent="0.52"/>
+ <disk-device dev="dev253-0" tps="2.12" rd_sec="0.00" wr_sec="16.94" avgrq-sz="8.00" avgqu-sz="0.89" await="420.76" svctm="2.48" util-percent="0.52"/>
+ <disk-device dev="dev253-1" tps="0.50" rd_sec="0.00" wr_sec="3.98" avgrq-sz="8.00" avgqu-sz="0.00" await="3.48" svctm="1.33" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.62" rd_sec="0.00" wr_sec="12.96" avgrq-sz="8.00" avgqu-sz="0.89" await="548.96" svctm="2.83" util-percent="0.46"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.53" txpck="2.23" rxkB="0.47" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.14" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="2"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="03:10:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.06" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.06" nice="0.00" sys="0.13" iowait="0.04" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.11" cswch="27.71"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.33" fault="22.60" majflt="0.00" pgfree="10.08" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.54</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.54" bwrtn="13.98"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644452</memfree>
+ <memused>1278436</memused>
+ <memused-percent>66.49</memused-percent>
+ <buffers>214944</buffers>
+ <cached>588316</cached>
+ <commit>867896</commit>
+ <commit-percent>14.19</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.05</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="271" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.38" rd_sec="0.00" wr_sec="4.66" avgrq-sz="12.30" avgqu-sz="0.00" await="5.67" svctm="2.54" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.58" rd_sec="0.00" wr_sec="4.66" avgrq-sz="8.00" avgqu-sz="0.00" await="5.30" svctm="1.66" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.55" rd_sec="0.00" wr_sec="4.41" avgrq-sz="8.00" avgqu-sz="0.00" await="4.55" svctm="1.40" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="18.16" svctm="6.21" util-percent="0.02"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.49" txpck="2.17" rxkB="0.44" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="03:20:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.12" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.12" iowait="0.08" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.74"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="26.49"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.06" fault="13.31" majflt="0.00" pgfree="6.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.38</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.38" bwrtn="12.36"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>644204</memfree>
+ <memused>1278684</memused>
+ <memused-percent>66.50</memused-percent>
+ <buffers>214960</buffers>
+ <cached>588324</cached>
+ <commit>867892</commit>
+ <commit-percent>14.19</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="2" plist-sz="270" ldavg-1="0.01" ldavg-5="0.00" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.12" avgrq-sz="11.88" avgqu-sz="0.00" await="4.61" svctm="3.20" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.52" rd_sec="0.00" wr_sec="4.12" avgrq-sz="8.00" avgqu-sz="0.00" await="4.93" svctm="2.16" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="3.48" svctm="1.46" util-percent="0.07"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="27.16" svctm="12.74" util-percent="0.04"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.48" txpck="2.16" rxkB="0.44" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="03:30:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.26" nice="0.00" sys="0.20" iowait="0.12" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.40"/>
+ <cpu number="0" usr="0.26" nice="0.00" sys="0.20" iowait="0.12" steal="0.00" irq="0.02" soft="0.01" guest="0.00" idle="99.40"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.09" cswch="27.22"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="6.36" fault="67.21" majflt="0.00" pgfree="72.78" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>3.89</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="3.89" bwrtn="38.17"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>642324</memfree>
+ <memused>1280564</memused>
+ <memused-percent>66.60</memused-percent>
+ <buffers>214996</buffers>
+ <cached>588340</cached>
+ <commit>867680</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.78</frmpg>
+ <bufpg>0.02</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100118</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="271" ldavg-1="0.10" ldavg-5="0.04" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.71" rd_sec="0.00" wr_sec="12.72" avgrq-sz="17.98" avgqu-sz="0.18" await="250.27" svctm="4.57" util-percent="0.32"/>
+ <disk-device dev="dev253-0" tps="1.59" rd_sec="0.00" wr_sec="12.72" avgrq-sz="8.00" avgqu-sz="0.23" await="145.83" svctm="2.04" util-percent="0.32"/>
+ <disk-device dev="dev253-1" tps="0.48" rd_sec="0.00" wr_sec="3.80" avgrq-sz="8.00" avgqu-sz="0.00" await="3.90" svctm="1.68" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="1.11" rd_sec="0.00" wr_sec="8.92" avgrq-sz="8.00" avgqu-sz="0.23" await="206.38" svctm="2.26" util-percent="0.25"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.67" txpck="2.21" rxkB="0.46" txkB="0.36" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.04" txpck="2.15" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.20" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="575" tcpsck="19" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="03:40:01" interval="599">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.06" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.76"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.73"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="1.94" fault="14.70" majflt="0.00" pgfree="7.39" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.28</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.28" bwrtn="11.61"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>642092</memfree>
+ <memused>1280796</memused>
+ <memused-percent>66.61</memused-percent>
+ <buffers>215012</buffers>
+ <cached>588352</cached>
+ <commit>867676</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>-0.10</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100116</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="269" ldavg-1="0.14" ldavg-5="0.04" ldavg-15="0.01"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.32" rd_sec="0.00" wr_sec="3.87" avgrq-sz="12.21" avgqu-sz="0.00" await="4.57" svctm="3.11" util-percent="0.10"/>
+ <disk-device dev="dev253-0" tps="0.48" rd_sec="0.00" wr_sec="3.87" avgrq-sz="8.00" avgqu-sz="0.00" await="7.28" svctm="2.04" util-percent="0.10"/>
+ <disk-device dev="dev253-1" tps="0.45" rd_sec="0.00" wr_sec="3.62" avgrq-sz="8.00" avgqu-sz="0.00" await="7.26" svctm="1.99" util-percent="0.09"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.03" rd_sec="0.00" wr_sec="0.25" avgrq-sz="8.00" avgqu-sz="0.00" await="7.63" svctm="2.74" util-percent="0.01"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.01" txpck="0.01" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.51" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.02" txpck="2.12" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="573" tcpsck="17" udpsck="13" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ <timestamp date="2012-09-13" time="03:50:01" interval="600">
+ <cpu-load-all>
+ <cpu number="all" usr="0.04" nice="0.00" sys="0.11" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ <cpu number="0" usr="0.04" nice="0.00" sys="0.11" iowait="0.05" steal="0.00" irq="0.02" soft="0.00" guest="0.00" idle="99.78"/>
+ </cpu-load-all>
+ <process-and-context-switch per="second" proc="0.08" cswch="26.72"/>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <paging per="second" pgpgin="0.00" pgpgout="2.03" fault="13.02" majflt="0.00" pgfree="6.85" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
+ <io per="second">
+ <tps>1.36</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="1.36" bwrtn="12.17"/>
+ </io>
+ <memory per="second" unit="kB">
+ <memfree>642092</memfree>
+ <memused>1280796</memused>
+ <memused-percent>66.61</memused-percent>
+ <buffers>215036</buffers>
+ <cached>588372</cached>
+ <commit>867680</commit>
+ <commit-percent>14.18</commit-percent>
+ <swpfree>4194296</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <swpcad-percent>0.00</swpcad-percent>
+ <frmpg>0.00</frmpg>
+ <bufpg>0.01</bufpg>
+ <campg>0.01</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>105221</dentunusd>
+ <file-nr>4736</file-nr>
+ <inode-nr>100115</inode-nr>
+ <pty-nr>2</pty-nr>
+ </kernel>
+ <queue runq-sz="1" plist-sz="270" ldavg-1="0.01" ldavg-5="0.02" ldavg-15="0.00"/>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <disk per="second">
+ <disk-device dev="dev11-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev8-0" tps="0.35" rd_sec="0.00" wr_sec="4.06" avgrq-sz="11.64" avgqu-sz="0.00" await="5.67" svctm="3.12" util-percent="0.11"/>
+ <disk-device dev="dev253-0" tps="0.51" rd_sec="0.00" wr_sec="4.06" avgrq-sz="8.00" avgqu-sz="0.00" await="5.83" svctm="2.16" util-percent="0.11"/>
+ <disk-device dev="dev253-1" tps="0.46" rd_sec="0.00" wr_sec="3.69" avgrq-sz="8.00" avgqu-sz="0.00" await="4.51" svctm="1.71" util-percent="0.08"/>
+ <disk-device dev="dev253-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" avgrq-sz="0.00" avgqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
+ <disk-device dev="dev253-3" tps="0.05" rd_sec="0.00" wr_sec="0.36" avgrq-sz="8.00" avgqu-sz="0.00" await="19.30" svctm="6.74" util-percent="0.03"/>
+ </disk>
+ <network per="second">
+ <net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="eth0" rxpck="2.46" txpck="2.18" rxkB="0.43" txkB="0.35" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-dev iface="tun0" rxpck="2.03" txpck="2.13" rxkB="0.24" txkB="0.15" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-edev iface="tun0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ <net-nfs call="0.19" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="572" tcpsck="17" udpsck="12" rawsck="0" ip-frag="0" tcp-tw="0"/>
+ </network>
+ </timestamp>
+ </statistics>
+ <restarts>
+ </restarts>
+ <comments>
+ </comments>
+ </host>
+</sysstat>
diff --git a/qa/sadist/rhel5-sa20.bin b/qa/sadist/rhel5-sa20.bin
new file mode 100644
index 0000000..ccebd00
--- /dev/null
+++ b/qa/sadist/rhel5-sa20.bin
Binary files differ
diff --git a/qa/sadist/smash-rhel5.xml b/qa/sadist/smash-rhel5.xml
new file mode 100644
index 0000000..a99fb63
--- /dev/null
+++ b/qa/sadist/smash-rhel5.xml
@@ -0,0 +1,1594 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "DTD v1.0 sysstat //EN"
+"http://perso.orange.fr/sebastien.godard/sysstat.dtd">
+<sysstat>
+ <sysdata-version>1.0</sysdata-version>
+ <host nodename="smash">
+ <sysname>Linux</sysname>
+ <release>2.6.32-279.5.2.el6.x86_64</release>
+ <statistics>
+ <timestamp date="2012-09-22" time="04:11:46" interval="1">
+ <processes per="second" proc="0.00"/>
+ <context-switch per="second" cswch="458.00"/>
+ <cpu-load>
+ <cpu number="all" user="0.25" nice="0.00" system="0.13" iowait="0.38" steal="0.00" idle="99.25"/>
+ <cpu number="0" user="0.00" nice="0.00" system="1.00" iowait="0.00" steal="0.00" idle="99.00"/>
+ <cpu number="1" user="0.98" nice="0.00" system="0.98" iowait="0.00" steal="0.00" idle="98.04"/>
+ <cpu number="2" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="3" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="4" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="5" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="6" user="0.99" nice="0.00" system="0.00" iowait="2.97" steal="0.00" idle="96.04"/>
+ <cpu number="7" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="8" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ <cpu number="9" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="232.00"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="0.00"/>
+ <irqcpu cpu="0" intr="1" value="0.00"/>
+ <irqcpu cpu="0" intr="8" value="0.00"/>
+ <irqcpu cpu="0" intr="9" value="0.00"/>
+ <irqcpu cpu="0" intr="12" value="0.00"/>
+ <irqcpu cpu="0" intr="16" value="0.00"/>
+ <irqcpu cpu="0" intr="17" value="0.00"/>
+ <irqcpu cpu="0" intr="18" value="0.00"/>
+ <irqcpu cpu="0" intr="19" value="0.00"/>
+ <irqcpu cpu="0" intr="23" value="0.00"/>
+ <irqcpu cpu="0" intr="32" value="0.00"/>
+ <irqcpu cpu="0" intr="36" value="0.00"/>
+ <irqcpu cpu="0" intr="48" value="0.00"/>
+ <irqcpu cpu="0" intr="49" value="0.00"/>
+ <irqcpu cpu="0" intr="50" value="0.00"/>
+ <irqcpu cpu="0" intr="51" value="0.00"/>
+ <irqcpu cpu="0" intr="52" value="0.00"/>
+ <irqcpu cpu="0" intr="53" value="0.00"/>
+ <irqcpu cpu="0" intr="54" value="0.00"/>
+ <irqcpu cpu="0" intr="55" value="0.00"/>
+ <irqcpu cpu="0" intr="56" value="0.00"/>
+ <irqcpu cpu="0" intr="57" value="0.00"/>
+ <irqcpu cpu="0" intr="58" value="0.00"/>
+ <irqcpu cpu="0" intr="59" value="0.00"/>
+ <irqcpu cpu="0" intr="60" value="0.00"/>
+ <irqcpu cpu="0" intr="61" value="0.00"/>
+ <irqcpu cpu="0" intr="62" value="0.00"/>
+ <irqcpu cpu="0" intr="63" value="0.00"/>
+ <irqcpu cpu="0" intr="64" value="0.00"/>
+ <irqcpu cpu="0" intr="65" value="0.00"/>
+ <irqcpu cpu="0" intr="66" value="0.00"/>
+ <irqcpu cpu="1" intr="0" value="0.00"/>
+ <irqcpu cpu="1" intr="1" value="0.00"/>
+ <irqcpu cpu="1" intr="8" value="0.00"/>
+ <irqcpu cpu="1" intr="9" value="0.00"/>
+ <irqcpu cpu="1" intr="12" value="0.00"/>
+ <irqcpu cpu="1" intr="16" value="0.00"/>
+ <irqcpu cpu="1" intr="17" value="0.00"/>
+ <irqcpu cpu="1" intr="18" value="0.00"/>
+ <irqcpu cpu="1" intr="19" value="0.00"/>
+ <irqcpu cpu="1" intr="23" value="0.00"/>
+ <irqcpu cpu="1" intr="32" value="0.00"/>
+ <irqcpu cpu="1" intr="36" value="0.00"/>
+ <irqcpu cpu="1" intr="48" value="0.00"/>
+ <irqcpu cpu="1" intr="49" value="0.00"/>
+ <irqcpu cpu="1" intr="50" value="0.00"/>
+ <irqcpu cpu="1" intr="51" value="0.00"/>
+ <irqcpu cpu="1" intr="52" value="0.00"/>
+ <irqcpu cpu="1" intr="53" value="0.00"/>
+ <irqcpu cpu="1" intr="54" value="0.00"/>
+ <irqcpu cpu="1" intr="55" value="0.00"/>
+ <irqcpu cpu="1" intr="56" value="0.00"/>
+ <irqcpu cpu="1" intr="57" value="0.00"/>
+ <irqcpu cpu="1" intr="58" value="0.00"/>
+ <irqcpu cpu="1" intr="59" value="0.00"/>
+ <irqcpu cpu="1" intr="60" value="0.00"/>
+ <irqcpu cpu="1" intr="61" value="0.00"/>
+ <irqcpu cpu="1" intr="62" value="0.00"/>
+ <irqcpu cpu="1" intr="63" value="0.00"/>
+ <irqcpu cpu="1" intr="64" value="0.00"/>
+ <irqcpu cpu="1" intr="65" value="0.00"/>
+ <irqcpu cpu="1" intr="66" value="0.00"/>
+ <irqcpu cpu="2" intr="0" value="0.00"/>
+ <irqcpu cpu="2" intr="1" value="0.00"/>
+ <irqcpu cpu="2" intr="8" value="0.00"/>
+ <irqcpu cpu="2" intr="9" value="0.00"/>
+ <irqcpu cpu="2" intr="12" value="0.00"/>
+ <irqcpu cpu="2" intr="16" value="0.00"/>
+ <irqcpu cpu="2" intr="17" value="0.00"/>
+ <irqcpu cpu="2" intr="18" value="0.00"/>
+ <irqcpu cpu="2" intr="19" value="0.00"/>
+ <irqcpu cpu="2" intr="23" value="0.00"/>
+ <irqcpu cpu="2" intr="32" value="0.00"/>
+ <irqcpu cpu="2" intr="36" value="0.00"/>
+ <irqcpu cpu="2" intr="48" value="0.00"/>
+ <irqcpu cpu="2" intr="49" value="0.00"/>
+ <irqcpu cpu="2" intr="50" value="0.00"/>
+ <irqcpu cpu="2" intr="51" value="0.00"/>
+ <irqcpu cpu="2" intr="52" value="0.00"/>
+ <irqcpu cpu="2" intr="53" value="0.00"/>
+ <irqcpu cpu="2" intr="54" value="0.00"/>
+ <irqcpu cpu="2" intr="55" value="0.00"/>
+ <irqcpu cpu="2" intr="56" value="0.00"/>
+ <irqcpu cpu="2" intr="57" value="0.00"/>
+ <irqcpu cpu="2" intr="58" value="0.00"/>
+ <irqcpu cpu="2" intr="59" value="0.00"/>
+ <irqcpu cpu="2" intr="60" value="0.00"/>
+ <irqcpu cpu="2" intr="61" value="0.00"/>
+ <irqcpu cpu="2" intr="62" value="0.00"/>
+ <irqcpu cpu="2" intr="63" value="0.00"/>
+ <irqcpu cpu="2" intr="64" value="0.00"/>
+ <irqcpu cpu="2" intr="65" value="0.00"/>
+ <irqcpu cpu="2" intr="66" value="0.00"/>
+ <irqcpu cpu="3" intr="0" value="0.00"/>
+ <irqcpu cpu="3" intr="1" value="0.00"/>
+ <irqcpu cpu="3" intr="8" value="0.00"/>
+ <irqcpu cpu="3" intr="9" value="0.00"/>
+ <irqcpu cpu="3" intr="12" value="0.00"/>
+ <irqcpu cpu="3" intr="16" value="0.00"/>
+ <irqcpu cpu="3" intr="17" value="0.00"/>
+ <irqcpu cpu="3" intr="18" value="0.00"/>
+ <irqcpu cpu="3" intr="19" value="0.00"/>
+ <irqcpu cpu="3" intr="23" value="1.00"/>
+ <irqcpu cpu="3" intr="32" value="0.00"/>
+ <irqcpu cpu="3" intr="36" value="0.00"/>
+ <irqcpu cpu="3" intr="48" value="0.00"/>
+ <irqcpu cpu="3" intr="49" value="0.00"/>
+ <irqcpu cpu="3" intr="50" value="0.00"/>
+ <irqcpu cpu="3" intr="51" value="0.00"/>
+ <irqcpu cpu="3" intr="52" value="0.00"/>
+ <irqcpu cpu="3" intr="53" value="0.00"/>
+ <irqcpu cpu="3" intr="54" value="0.00"/>
+ <irqcpu cpu="3" intr="55" value="0.00"/>
+ <irqcpu cpu="3" intr="56" value="0.00"/>
+ <irqcpu cpu="3" intr="57" value="0.00"/>
+ <irqcpu cpu="3" intr="58" value="0.00"/>
+ <irqcpu cpu="3" intr="59" value="0.00"/>
+ <irqcpu cpu="3" intr="60" value="0.00"/>
+ <irqcpu cpu="3" intr="61" value="0.00"/>
+ <irqcpu cpu="3" intr="62" value="0.00"/>
+ <irqcpu cpu="3" intr="63" value="0.00"/>
+ <irqcpu cpu="3" intr="64" value="0.00"/>
+ <irqcpu cpu="3" intr="65" value="0.00"/>
+ <irqcpu cpu="3" intr="66" value="0.00"/>
+ <irqcpu cpu="4" intr="0" value="0.00"/>
+ <irqcpu cpu="4" intr="1" value="0.00"/>
+ <irqcpu cpu="4" intr="8" value="0.00"/>
+ <irqcpu cpu="4" intr="9" value="0.00"/>
+ <irqcpu cpu="4" intr="12" value="0.00"/>
+ <irqcpu cpu="4" intr="16" value="0.00"/>
+ <irqcpu cpu="4" intr="17" value="0.00"/>
+ <irqcpu cpu="4" intr="18" value="0.00"/>
+ <irqcpu cpu="4" intr="19" value="0.00"/>
+ <irqcpu cpu="4" intr="23" value="0.00"/>
+ <irqcpu cpu="4" intr="32" value="0.00"/>
+ <irqcpu cpu="4" intr="36" value="0.00"/>
+ <irqcpu cpu="4" intr="48" value="0.00"/>
+ <irqcpu cpu="4" intr="49" value="0.00"/>
+ <irqcpu cpu="4" intr="50" value="0.00"/>
+ <irqcpu cpu="4" intr="51" value="0.00"/>
+ <irqcpu cpu="4" intr="52" value="0.00"/>
+ <irqcpu cpu="4" intr="53" value="0.00"/>
+ <irqcpu cpu="4" intr="54" value="0.00"/>
+ <irqcpu cpu="4" intr="55" value="0.00"/>
+ <irqcpu cpu="4" intr="56" value="0.00"/>
+ <irqcpu cpu="4" intr="57" value="0.00"/>
+ <irqcpu cpu="4" intr="58" value="0.00"/>
+ <irqcpu cpu="4" intr="59" value="0.00"/>
+ <irqcpu cpu="4" intr="60" value="0.00"/>
+ <irqcpu cpu="4" intr="61" value="0.00"/>
+ <irqcpu cpu="4" intr="62" value="0.00"/>
+ <irqcpu cpu="4" intr="63" value="0.00"/>
+ <irqcpu cpu="4" intr="64" value="0.00"/>
+ <irqcpu cpu="4" intr="65" value="0.00"/>
+ <irqcpu cpu="4" intr="66" value="0.00"/>
+ <irqcpu cpu="5" intr="0" value="0.00"/>
+ <irqcpu cpu="5" intr="1" value="0.00"/>
+ <irqcpu cpu="5" intr="8" value="0.00"/>
+ <irqcpu cpu="5" intr="9" value="0.00"/>
+ <irqcpu cpu="5" intr="12" value="0.00"/>
+ <irqcpu cpu="5" intr="16" value="0.00"/>
+ <irqcpu cpu="5" intr="17" value="0.00"/>
+ <irqcpu cpu="5" intr="18" value="0.00"/>
+ <irqcpu cpu="5" intr="19" value="0.00"/>
+ <irqcpu cpu="5" intr="23" value="0.00"/>
+ <irqcpu cpu="5" intr="32" value="0.00"/>
+ <irqcpu cpu="5" intr="36" value="0.00"/>
+ <irqcpu cpu="5" intr="48" value="0.00"/>
+ <irqcpu cpu="5" intr="49" value="0.00"/>
+ <irqcpu cpu="5" intr="50" value="0.00"/>
+ <irqcpu cpu="5" intr="51" value="0.00"/>
+ <irqcpu cpu="5" intr="52" value="0.00"/>
+ <irqcpu cpu="5" intr="53" value="0.00"/>
+ <irqcpu cpu="5" intr="54" value="0.00"/>
+ <irqcpu cpu="5" intr="55" value="0.00"/>
+ <irqcpu cpu="5" intr="56" value="0.00"/>
+ <irqcpu cpu="5" intr="57" value="2.00"/>
+ <irqcpu cpu="5" intr="58" value="0.00"/>
+ <irqcpu cpu="5" intr="59" value="0.00"/>
+ <irqcpu cpu="5" intr="60" value="0.00"/>
+ <irqcpu cpu="5" intr="61" value="0.00"/>
+ <irqcpu cpu="5" intr="62" value="0.00"/>
+ <irqcpu cpu="5" intr="63" value="0.00"/>
+ <irqcpu cpu="5" intr="64" value="0.00"/>
+ <irqcpu cpu="5" intr="65" value="0.00"/>
+ <irqcpu cpu="5" intr="66" value="0.00"/>
+ <irqcpu cpu="6" intr="0" value="0.00"/>
+ <irqcpu cpu="6" intr="1" value="0.00"/>
+ <irqcpu cpu="6" intr="8" value="0.00"/>
+ <irqcpu cpu="6" intr="9" value="0.00"/>
+ <irqcpu cpu="6" intr="12" value="0.00"/>
+ <irqcpu cpu="6" intr="16" value="0.00"/>
+ <irqcpu cpu="6" intr="17" value="0.00"/>
+ <irqcpu cpu="6" intr="18" value="0.00"/>
+ <irqcpu cpu="6" intr="19" value="0.00"/>
+ <irqcpu cpu="6" intr="23" value="0.00"/>
+ <irqcpu cpu="6" intr="32" value="0.00"/>
+ <irqcpu cpu="6" intr="36" value="0.00"/>
+ <irqcpu cpu="6" intr="48" value="0.00"/>
+ <irqcpu cpu="6" intr="49" value="0.00"/>
+ <irqcpu cpu="6" intr="50" value="0.00"/>
+ <irqcpu cpu="6" intr="51" value="0.00"/>
+ <irqcpu cpu="6" intr="52" value="0.00"/>
+ <irqcpu cpu="6" intr="53" value="0.00"/>
+ <irqcpu cpu="6" intr="54" value="5.00"/>
+ <irqcpu cpu="6" intr="55" value="0.00"/>
+ <irqcpu cpu="6" intr="56" value="0.00"/>
+ <irqcpu cpu="6" intr="57" value="0.00"/>
+ <irqcpu cpu="6" intr="58" value="0.00"/>
+ <irqcpu cpu="6" intr="59" value="0.00"/>
+ <irqcpu cpu="6" intr="60" value="0.00"/>
+ <irqcpu cpu="6" intr="61" value="0.00"/>
+ <irqcpu cpu="6" intr="62" value="0.00"/>
+ <irqcpu cpu="6" intr="63" value="0.00"/>
+ <irqcpu cpu="6" intr="64" value="0.00"/>
+ <irqcpu cpu="6" intr="65" value="0.00"/>
+ <irqcpu cpu="6" intr="66" value="0.00"/>
+ <irqcpu cpu="7" intr="0" value="0.00"/>
+ <irqcpu cpu="7" intr="1" value="0.00"/>
+ <irqcpu cpu="7" intr="8" value="0.00"/>
+ <irqcpu cpu="7" intr="9" value="0.00"/>
+ <irqcpu cpu="7" intr="12" value="0.00"/>
+ <irqcpu cpu="7" intr="16" value="0.00"/>
+ <irqcpu cpu="7" intr="17" value="0.00"/>
+ <irqcpu cpu="7" intr="18" value="0.00"/>
+ <irqcpu cpu="7" intr="19" value="0.00"/>
+ <irqcpu cpu="7" intr="23" value="0.00"/>
+ <irqcpu cpu="7" intr="32" value="0.00"/>
+ <irqcpu cpu="7" intr="36" value="0.00"/>
+ <irqcpu cpu="7" intr="48" value="0.00"/>
+ <irqcpu cpu="7" intr="49" value="0.00"/>
+ <irqcpu cpu="7" intr="50" value="0.00"/>
+ <irqcpu cpu="7" intr="51" value="0.00"/>
+ <irqcpu cpu="7" intr="52" value="0.00"/>
+ <irqcpu cpu="7" intr="53" value="0.00"/>
+ <irqcpu cpu="7" intr="54" value="0.00"/>
+ <irqcpu cpu="7" intr="55" value="0.00"/>
+ <irqcpu cpu="7" intr="56" value="0.00"/>
+ <irqcpu cpu="7" intr="57" value="0.00"/>
+ <irqcpu cpu="7" intr="58" value="0.00"/>
+ <irqcpu cpu="7" intr="59" value="0.00"/>
+ <irqcpu cpu="7" intr="60" value="0.00"/>
+ <irqcpu cpu="7" intr="61" value="0.00"/>
+ <irqcpu cpu="7" intr="62" value="0.00"/>
+ <irqcpu cpu="7" intr="63" value="0.00"/>
+ <irqcpu cpu="7" intr="64" value="0.00"/>
+ <irqcpu cpu="7" intr="65" value="0.00"/>
+ <irqcpu cpu="7" intr="66" value="0.00"/>
+ <irqcpu cpu="8" intr="0" value="0.00"/>
+ <irqcpu cpu="8" intr="1" value="0.00"/>
+ <irqcpu cpu="8" intr="8" value="0.00"/>
+ <irqcpu cpu="8" intr="9" value="0.00"/>
+ <irqcpu cpu="8" intr="12" value="0.00"/>
+ <irqcpu cpu="8" intr="16" value="0.00"/>
+ <irqcpu cpu="8" intr="17" value="0.00"/>
+ <irqcpu cpu="8" intr="18" value="0.00"/>
+ <irqcpu cpu="8" intr="19" value="0.00"/>
+ <irqcpu cpu="8" intr="23" value="0.00"/>
+ <irqcpu cpu="8" intr="32" value="0.00"/>
+ <irqcpu cpu="8" intr="36" value="0.00"/>
+ <irqcpu cpu="8" intr="48" value="0.00"/>
+ <irqcpu cpu="8" intr="49" value="0.00"/>
+ <irqcpu cpu="8" intr="50" value="0.00"/>
+ <irqcpu cpu="8" intr="51" value="0.00"/>
+ <irqcpu cpu="8" intr="52" value="0.00"/>
+ <irqcpu cpu="8" intr="53" value="0.00"/>
+ <irqcpu cpu="8" intr="54" value="0.00"/>
+ <irqcpu cpu="8" intr="55" value="0.00"/>
+ <irqcpu cpu="8" intr="56" value="0.00"/>
+ <irqcpu cpu="8" intr="57" value="0.00"/>
+ <irqcpu cpu="8" intr="58" value="0.00"/>
+ <irqcpu cpu="8" intr="59" value="0.00"/>
+ <irqcpu cpu="8" intr="60" value="0.00"/>
+ <irqcpu cpu="8" intr="61" value="0.00"/>
+ <irqcpu cpu="8" intr="62" value="0.00"/>
+ <irqcpu cpu="8" intr="63" value="0.00"/>
+ <irqcpu cpu="8" intr="64" value="0.00"/>
+ <irqcpu cpu="8" intr="65" value="0.00"/>
+ <irqcpu cpu="8" intr="66" value="0.00"/>
+ <irqcpu cpu="9" intr="0" value="0.00"/>
+ <irqcpu cpu="9" intr="1" value="0.00"/>
+ <irqcpu cpu="9" intr="8" value="0.00"/>
+ <irqcpu cpu="9" intr="9" value="0.00"/>
+ <irqcpu cpu="9" intr="12" value="0.00"/>
+ <irqcpu cpu="9" intr="16" value="0.00"/>
+ <irqcpu cpu="9" intr="17" value="0.00"/>
+ <irqcpu cpu="9" intr="18" value="0.00"/>
+ <irqcpu cpu="9" intr="19" value="0.00"/>
+ <irqcpu cpu="9" intr="23" value="0.00"/>
+ <irqcpu cpu="9" intr="32" value="0.00"/>
+ <irqcpu cpu="9" intr="36" value="0.00"/>
+ <irqcpu cpu="9" intr="48" value="0.00"/>
+ <irqcpu cpu="9" intr="49" value="0.00"/>
+ <irqcpu cpu="9" intr="50" value="0.00"/>
+ <irqcpu cpu="9" intr="51" value="0.00"/>
+ <irqcpu cpu="9" intr="52" value="0.00"/>
+ <irqcpu cpu="9" intr="53" value="0.00"/>
+ <irqcpu cpu="9" intr="54" value="0.00"/>
+ <irqcpu cpu="9" intr="55" value="0.00"/>
+ <irqcpu cpu="9" intr="56" value="0.00"/>
+ <irqcpu cpu="9" intr="57" value="0.00"/>
+ <irqcpu cpu="9" intr="58" value="0.00"/>
+ <irqcpu cpu="9" intr="59" value="0.00"/>
+ <irqcpu cpu="9" intr="60" value="0.00"/>
+ <irqcpu cpu="9" intr="61" value="0.00"/>
+ <irqcpu cpu="9" intr="62" value="0.00"/>
+ <irqcpu cpu="9" intr="63" value="0.00"/>
+ <irqcpu cpu="9" intr="64" value="0.00"/>
+ <irqcpu cpu="9" intr="65" value="0.00"/>
+ <irqcpu cpu="9" intr="66" value="0.00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <io per="second">
+ <tps>17.00</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="17.00" bwrtn="240.00"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="3.00" txpck="0.00" rxbyt="180.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0-nic">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="tun0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="1337" tcpsck="24" udpsck="16" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0.00" pgpgout="40.00" fault="16.00" majflt="0.00"/>
+ <memory per="second" unit="kB">
+ <memfree>14043140</memfree>
+ <memused>10492596</memused>
+ <memused-percent>42.76</memused-percent>
+ <swpfree>12337144</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>383920</buffers>
+ <cached>7116212</cached>
+ <frmpg>-6.00</frmpg>
+ <bufpg>0.00</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>839704</dentunusd>
+ <file-sz>11840</file-sz>
+ <inode-sz>308480</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0.00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0.00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0.00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="542" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ </timestamp>
+ <timestamp date="2012-09-22" time="04:11:47" interval="1">
+ <processes per="second" proc="4.00"/>
+ <context-switch per="second" cswch="562.00"/>
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.12" iowait="0.75" steal="0.00" idle="99.00"/>
+ <cpu number="0" user="1.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="99.00"/>
+ <cpu number="1" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="2" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="3" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="4" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="5" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="6" user="0.00" nice="0.00" system="0.00" iowait="6.00" steal="0.00" idle="94.00"/>
+ <cpu number="7" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="8" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ <cpu number="9" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="238.00"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="0.00"/>
+ <irqcpu cpu="0" intr="1" value="0.00"/>
+ <irqcpu cpu="0" intr="8" value="0.00"/>
+ <irqcpu cpu="0" intr="9" value="0.00"/>
+ <irqcpu cpu="0" intr="12" value="0.00"/>
+ <irqcpu cpu="0" intr="16" value="0.00"/>
+ <irqcpu cpu="0" intr="17" value="0.00"/>
+ <irqcpu cpu="0" intr="18" value="0.00"/>
+ <irqcpu cpu="0" intr="19" value="0.00"/>
+ <irqcpu cpu="0" intr="23" value="0.00"/>
+ <irqcpu cpu="0" intr="32" value="0.00"/>
+ <irqcpu cpu="0" intr="36" value="0.00"/>
+ <irqcpu cpu="0" intr="48" value="0.00"/>
+ <irqcpu cpu="0" intr="49" value="0.00"/>
+ <irqcpu cpu="0" intr="50" value="0.00"/>
+ <irqcpu cpu="0" intr="51" value="0.00"/>
+ <irqcpu cpu="0" intr="52" value="0.00"/>
+ <irqcpu cpu="0" intr="53" value="0.00"/>
+ <irqcpu cpu="0" intr="54" value="0.00"/>
+ <irqcpu cpu="0" intr="55" value="0.00"/>
+ <irqcpu cpu="0" intr="56" value="0.00"/>
+ <irqcpu cpu="0" intr="57" value="0.00"/>
+ <irqcpu cpu="0" intr="58" value="0.00"/>
+ <irqcpu cpu="0" intr="59" value="0.00"/>
+ <irqcpu cpu="0" intr="60" value="0.00"/>
+ <irqcpu cpu="0" intr="61" value="0.00"/>
+ <irqcpu cpu="0" intr="62" value="0.00"/>
+ <irqcpu cpu="0" intr="63" value="0.00"/>
+ <irqcpu cpu="0" intr="64" value="0.00"/>
+ <irqcpu cpu="0" intr="65" value="0.00"/>
+ <irqcpu cpu="0" intr="66" value="0.00"/>
+ <irqcpu cpu="1" intr="0" value="0.00"/>
+ <irqcpu cpu="1" intr="1" value="0.00"/>
+ <irqcpu cpu="1" intr="8" value="0.00"/>
+ <irqcpu cpu="1" intr="9" value="0.00"/>
+ <irqcpu cpu="1" intr="12" value="0.00"/>
+ <irqcpu cpu="1" intr="16" value="0.00"/>
+ <irqcpu cpu="1" intr="17" value="0.00"/>
+ <irqcpu cpu="1" intr="18" value="0.00"/>
+ <irqcpu cpu="1" intr="19" value="0.00"/>
+ <irqcpu cpu="1" intr="23" value="0.00"/>
+ <irqcpu cpu="1" intr="32" value="0.00"/>
+ <irqcpu cpu="1" intr="36" value="0.00"/>
+ <irqcpu cpu="1" intr="48" value="0.00"/>
+ <irqcpu cpu="1" intr="49" value="0.00"/>
+ <irqcpu cpu="1" intr="50" value="0.00"/>
+ <irqcpu cpu="1" intr="51" value="0.00"/>
+ <irqcpu cpu="1" intr="52" value="0.00"/>
+ <irqcpu cpu="1" intr="53" value="0.00"/>
+ <irqcpu cpu="1" intr="54" value="0.00"/>
+ <irqcpu cpu="1" intr="55" value="0.00"/>
+ <irqcpu cpu="1" intr="56" value="0.00"/>
+ <irqcpu cpu="1" intr="57" value="0.00"/>
+ <irqcpu cpu="1" intr="58" value="0.00"/>
+ <irqcpu cpu="1" intr="59" value="0.00"/>
+ <irqcpu cpu="1" intr="60" value="0.00"/>
+ <irqcpu cpu="1" intr="61" value="0.00"/>
+ <irqcpu cpu="1" intr="62" value="0.00"/>
+ <irqcpu cpu="1" intr="63" value="0.00"/>
+ <irqcpu cpu="1" intr="64" value="0.00"/>
+ <irqcpu cpu="1" intr="65" value="0.00"/>
+ <irqcpu cpu="1" intr="66" value="0.00"/>
+ <irqcpu cpu="2" intr="0" value="0.00"/>
+ <irqcpu cpu="2" intr="1" value="0.00"/>
+ <irqcpu cpu="2" intr="8" value="0.00"/>
+ <irqcpu cpu="2" intr="9" value="0.00"/>
+ <irqcpu cpu="2" intr="12" value="0.00"/>
+ <irqcpu cpu="2" intr="16" value="0.00"/>
+ <irqcpu cpu="2" intr="17" value="0.00"/>
+ <irqcpu cpu="2" intr="18" value="0.00"/>
+ <irqcpu cpu="2" intr="19" value="0.00"/>
+ <irqcpu cpu="2" intr="23" value="0.00"/>
+ <irqcpu cpu="2" intr="32" value="0.00"/>
+ <irqcpu cpu="2" intr="36" value="0.00"/>
+ <irqcpu cpu="2" intr="48" value="0.00"/>
+ <irqcpu cpu="2" intr="49" value="0.00"/>
+ <irqcpu cpu="2" intr="50" value="0.00"/>
+ <irqcpu cpu="2" intr="51" value="0.00"/>
+ <irqcpu cpu="2" intr="52" value="0.00"/>
+ <irqcpu cpu="2" intr="53" value="0.00"/>
+ <irqcpu cpu="2" intr="54" value="0.00"/>
+ <irqcpu cpu="2" intr="55" value="0.00"/>
+ <irqcpu cpu="2" intr="56" value="0.00"/>
+ <irqcpu cpu="2" intr="57" value="0.00"/>
+ <irqcpu cpu="2" intr="58" value="0.00"/>
+ <irqcpu cpu="2" intr="59" value="0.00"/>
+ <irqcpu cpu="2" intr="60" value="0.00"/>
+ <irqcpu cpu="2" intr="61" value="0.00"/>
+ <irqcpu cpu="2" intr="62" value="0.00"/>
+ <irqcpu cpu="2" intr="63" value="0.00"/>
+ <irqcpu cpu="2" intr="64" value="0.00"/>
+ <irqcpu cpu="2" intr="65" value="0.00"/>
+ <irqcpu cpu="2" intr="66" value="0.00"/>
+ <irqcpu cpu="3" intr="0" value="0.00"/>
+ <irqcpu cpu="3" intr="1" value="0.00"/>
+ <irqcpu cpu="3" intr="8" value="0.00"/>
+ <irqcpu cpu="3" intr="9" value="0.00"/>
+ <irqcpu cpu="3" intr="12" value="0.00"/>
+ <irqcpu cpu="3" intr="16" value="0.00"/>
+ <irqcpu cpu="3" intr="17" value="0.00"/>
+ <irqcpu cpu="3" intr="18" value="0.00"/>
+ <irqcpu cpu="3" intr="19" value="0.00"/>
+ <irqcpu cpu="3" intr="23" value="0.00"/>
+ <irqcpu cpu="3" intr="32" value="0.00"/>
+ <irqcpu cpu="3" intr="36" value="0.00"/>
+ <irqcpu cpu="3" intr="48" value="0.00"/>
+ <irqcpu cpu="3" intr="49" value="0.00"/>
+ <irqcpu cpu="3" intr="50" value="0.00"/>
+ <irqcpu cpu="3" intr="51" value="0.00"/>
+ <irqcpu cpu="3" intr="52" value="0.00"/>
+ <irqcpu cpu="3" intr="53" value="0.00"/>
+ <irqcpu cpu="3" intr="54" value="0.00"/>
+ <irqcpu cpu="3" intr="55" value="0.00"/>
+ <irqcpu cpu="3" intr="56" value="0.00"/>
+ <irqcpu cpu="3" intr="57" value="0.00"/>
+ <irqcpu cpu="3" intr="58" value="0.00"/>
+ <irqcpu cpu="3" intr="59" value="0.00"/>
+ <irqcpu cpu="3" intr="60" value="0.00"/>
+ <irqcpu cpu="3" intr="61" value="0.00"/>
+ <irqcpu cpu="3" intr="62" value="0.00"/>
+ <irqcpu cpu="3" intr="63" value="0.00"/>
+ <irqcpu cpu="3" intr="64" value="0.00"/>
+ <irqcpu cpu="3" intr="65" value="0.00"/>
+ <irqcpu cpu="3" intr="66" value="0.00"/>
+ <irqcpu cpu="4" intr="0" value="0.00"/>
+ <irqcpu cpu="4" intr="1" value="0.00"/>
+ <irqcpu cpu="4" intr="8" value="0.00"/>
+ <irqcpu cpu="4" intr="9" value="0.00"/>
+ <irqcpu cpu="4" intr="12" value="0.00"/>
+ <irqcpu cpu="4" intr="16" value="0.00"/>
+ <irqcpu cpu="4" intr="17" value="0.00"/>
+ <irqcpu cpu="4" intr="18" value="0.00"/>
+ <irqcpu cpu="4" intr="19" value="0.00"/>
+ <irqcpu cpu="4" intr="23" value="0.00"/>
+ <irqcpu cpu="4" intr="32" value="0.00"/>
+ <irqcpu cpu="4" intr="36" value="0.00"/>
+ <irqcpu cpu="4" intr="48" value="0.00"/>
+ <irqcpu cpu="4" intr="49" value="0.00"/>
+ <irqcpu cpu="4" intr="50" value="0.00"/>
+ <irqcpu cpu="4" intr="51" value="0.00"/>
+ <irqcpu cpu="4" intr="52" value="0.00"/>
+ <irqcpu cpu="4" intr="53" value="0.00"/>
+ <irqcpu cpu="4" intr="54" value="0.00"/>
+ <irqcpu cpu="4" intr="55" value="0.00"/>
+ <irqcpu cpu="4" intr="56" value="0.00"/>
+ <irqcpu cpu="4" intr="57" value="0.00"/>
+ <irqcpu cpu="4" intr="58" value="0.00"/>
+ <irqcpu cpu="4" intr="59" value="0.00"/>
+ <irqcpu cpu="4" intr="60" value="0.00"/>
+ <irqcpu cpu="4" intr="61" value="0.00"/>
+ <irqcpu cpu="4" intr="62" value="0.00"/>
+ <irqcpu cpu="4" intr="63" value="0.00"/>
+ <irqcpu cpu="4" intr="64" value="0.00"/>
+ <irqcpu cpu="4" intr="65" value="0.00"/>
+ <irqcpu cpu="4" intr="66" value="0.00"/>
+ <irqcpu cpu="5" intr="0" value="0.00"/>
+ <irqcpu cpu="5" intr="1" value="0.00"/>
+ <irqcpu cpu="5" intr="8" value="0.00"/>
+ <irqcpu cpu="5" intr="9" value="0.00"/>
+ <irqcpu cpu="5" intr="12" value="0.00"/>
+ <irqcpu cpu="5" intr="16" value="0.00"/>
+ <irqcpu cpu="5" intr="17" value="0.00"/>
+ <irqcpu cpu="5" intr="18" value="0.00"/>
+ <irqcpu cpu="5" intr="19" value="0.00"/>
+ <irqcpu cpu="5" intr="23" value="0.00"/>
+ <irqcpu cpu="5" intr="32" value="0.00"/>
+ <irqcpu cpu="5" intr="36" value="0.00"/>
+ <irqcpu cpu="5" intr="48" value="0.00"/>
+ <irqcpu cpu="5" intr="49" value="0.00"/>
+ <irqcpu cpu="5" intr="50" value="0.00"/>
+ <irqcpu cpu="5" intr="51" value="0.00"/>
+ <irqcpu cpu="5" intr="52" value="0.00"/>
+ <irqcpu cpu="5" intr="53" value="0.00"/>
+ <irqcpu cpu="5" intr="54" value="0.00"/>
+ <irqcpu cpu="5" intr="55" value="0.00"/>
+ <irqcpu cpu="5" intr="56" value="0.00"/>
+ <irqcpu cpu="5" intr="57" value="3.00"/>
+ <irqcpu cpu="5" intr="58" value="0.00"/>
+ <irqcpu cpu="5" intr="59" value="0.00"/>
+ <irqcpu cpu="5" intr="60" value="0.00"/>
+ <irqcpu cpu="5" intr="61" value="0.00"/>
+ <irqcpu cpu="5" intr="62" value="0.00"/>
+ <irqcpu cpu="5" intr="63" value="0.00"/>
+ <irqcpu cpu="5" intr="64" value="0.00"/>
+ <irqcpu cpu="5" intr="65" value="0.00"/>
+ <irqcpu cpu="5" intr="66" value="0.00"/>
+ <irqcpu cpu="6" intr="0" value="0.00"/>
+ <irqcpu cpu="6" intr="1" value="0.00"/>
+ <irqcpu cpu="6" intr="8" value="0.00"/>
+ <irqcpu cpu="6" intr="9" value="0.00"/>
+ <irqcpu cpu="6" intr="12" value="0.00"/>
+ <irqcpu cpu="6" intr="16" value="0.00"/>
+ <irqcpu cpu="6" intr="17" value="0.00"/>
+ <irqcpu cpu="6" intr="18" value="0.00"/>
+ <irqcpu cpu="6" intr="19" value="0.00"/>
+ <irqcpu cpu="6" intr="23" value="0.00"/>
+ <irqcpu cpu="6" intr="32" value="0.00"/>
+ <irqcpu cpu="6" intr="36" value="0.00"/>
+ <irqcpu cpu="6" intr="48" value="0.00"/>
+ <irqcpu cpu="6" intr="49" value="0.00"/>
+ <irqcpu cpu="6" intr="50" value="0.00"/>
+ <irqcpu cpu="6" intr="51" value="0.00"/>
+ <irqcpu cpu="6" intr="52" value="0.00"/>
+ <irqcpu cpu="6" intr="53" value="0.00"/>
+ <irqcpu cpu="6" intr="54" value="8.00"/>
+ <irqcpu cpu="6" intr="55" value="0.00"/>
+ <irqcpu cpu="6" intr="56" value="0.00"/>
+ <irqcpu cpu="6" intr="57" value="0.00"/>
+ <irqcpu cpu="6" intr="58" value="0.00"/>
+ <irqcpu cpu="6" intr="59" value="0.00"/>
+ <irqcpu cpu="6" intr="60" value="0.00"/>
+ <irqcpu cpu="6" intr="61" value="0.00"/>
+ <irqcpu cpu="6" intr="62" value="0.00"/>
+ <irqcpu cpu="6" intr="63" value="0.00"/>
+ <irqcpu cpu="6" intr="64" value="0.00"/>
+ <irqcpu cpu="6" intr="65" value="0.00"/>
+ <irqcpu cpu="6" intr="66" value="0.00"/>
+ <irqcpu cpu="7" intr="0" value="0.00"/>
+ <irqcpu cpu="7" intr="1" value="0.00"/>
+ <irqcpu cpu="7" intr="8" value="0.00"/>
+ <irqcpu cpu="7" intr="9" value="0.00"/>
+ <irqcpu cpu="7" intr="12" value="0.00"/>
+ <irqcpu cpu="7" intr="16" value="0.00"/>
+ <irqcpu cpu="7" intr="17" value="0.00"/>
+ <irqcpu cpu="7" intr="18" value="0.00"/>
+ <irqcpu cpu="7" intr="19" value="0.00"/>
+ <irqcpu cpu="7" intr="23" value="0.00"/>
+ <irqcpu cpu="7" intr="32" value="0.00"/>
+ <irqcpu cpu="7" intr="36" value="0.00"/>
+ <irqcpu cpu="7" intr="48" value="0.00"/>
+ <irqcpu cpu="7" intr="49" value="0.00"/>
+ <irqcpu cpu="7" intr="50" value="0.00"/>
+ <irqcpu cpu="7" intr="51" value="0.00"/>
+ <irqcpu cpu="7" intr="52" value="0.00"/>
+ <irqcpu cpu="7" intr="53" value="0.00"/>
+ <irqcpu cpu="7" intr="54" value="0.00"/>
+ <irqcpu cpu="7" intr="55" value="0.00"/>
+ <irqcpu cpu="7" intr="56" value="0.00"/>
+ <irqcpu cpu="7" intr="57" value="0.00"/>
+ <irqcpu cpu="7" intr="58" value="0.00"/>
+ <irqcpu cpu="7" intr="59" value="0.00"/>
+ <irqcpu cpu="7" intr="60" value="0.00"/>
+ <irqcpu cpu="7" intr="61" value="0.00"/>
+ <irqcpu cpu="7" intr="62" value="0.00"/>
+ <irqcpu cpu="7" intr="63" value="0.00"/>
+ <irqcpu cpu="7" intr="64" value="0.00"/>
+ <irqcpu cpu="7" intr="65" value="0.00"/>
+ <irqcpu cpu="7" intr="66" value="0.00"/>
+ <irqcpu cpu="8" intr="0" value="0.00"/>
+ <irqcpu cpu="8" intr="1" value="0.00"/>
+ <irqcpu cpu="8" intr="8" value="0.00"/>
+ <irqcpu cpu="8" intr="9" value="0.00"/>
+ <irqcpu cpu="8" intr="12" value="0.00"/>
+ <irqcpu cpu="8" intr="16" value="0.00"/>
+ <irqcpu cpu="8" intr="17" value="0.00"/>
+ <irqcpu cpu="8" intr="18" value="0.00"/>
+ <irqcpu cpu="8" intr="19" value="0.00"/>
+ <irqcpu cpu="8" intr="23" value="0.00"/>
+ <irqcpu cpu="8" intr="32" value="0.00"/>
+ <irqcpu cpu="8" intr="36" value="0.00"/>
+ <irqcpu cpu="8" intr="48" value="0.00"/>
+ <irqcpu cpu="8" intr="49" value="0.00"/>
+ <irqcpu cpu="8" intr="50" value="0.00"/>
+ <irqcpu cpu="8" intr="51" value="0.00"/>
+ <irqcpu cpu="8" intr="52" value="0.00"/>
+ <irqcpu cpu="8" intr="53" value="0.00"/>
+ <irqcpu cpu="8" intr="54" value="0.00"/>
+ <irqcpu cpu="8" intr="55" value="0.00"/>
+ <irqcpu cpu="8" intr="56" value="0.00"/>
+ <irqcpu cpu="8" intr="57" value="0.00"/>
+ <irqcpu cpu="8" intr="58" value="0.00"/>
+ <irqcpu cpu="8" intr="59" value="0.00"/>
+ <irqcpu cpu="8" intr="60" value="0.00"/>
+ <irqcpu cpu="8" intr="61" value="0.00"/>
+ <irqcpu cpu="8" intr="62" value="0.00"/>
+ <irqcpu cpu="8" intr="63" value="0.00"/>
+ <irqcpu cpu="8" intr="64" value="0.00"/>
+ <irqcpu cpu="8" intr="65" value="0.00"/>
+ <irqcpu cpu="8" intr="66" value="0.00"/>
+ <irqcpu cpu="9" intr="0" value="0.00"/>
+ <irqcpu cpu="9" intr="1" value="0.00"/>
+ <irqcpu cpu="9" intr="8" value="0.00"/>
+ <irqcpu cpu="9" intr="9" value="0.00"/>
+ <irqcpu cpu="9" intr="12" value="0.00"/>
+ <irqcpu cpu="9" intr="16" value="0.00"/>
+ <irqcpu cpu="9" intr="17" value="0.00"/>
+ <irqcpu cpu="9" intr="18" value="0.00"/>
+ <irqcpu cpu="9" intr="19" value="0.00"/>
+ <irqcpu cpu="9" intr="23" value="0.00"/>
+ <irqcpu cpu="9" intr="32" value="0.00"/>
+ <irqcpu cpu="9" intr="36" value="0.00"/>
+ <irqcpu cpu="9" intr="48" value="0.00"/>
+ <irqcpu cpu="9" intr="49" value="0.00"/>
+ <irqcpu cpu="9" intr="50" value="0.00"/>
+ <irqcpu cpu="9" intr="51" value="0.00"/>
+ <irqcpu cpu="9" intr="52" value="0.00"/>
+ <irqcpu cpu="9" intr="53" value="0.00"/>
+ <irqcpu cpu="9" intr="54" value="0.00"/>
+ <irqcpu cpu="9" intr="55" value="0.00"/>
+ <irqcpu cpu="9" intr="56" value="0.00"/>
+ <irqcpu cpu="9" intr="57" value="0.00"/>
+ <irqcpu cpu="9" intr="58" value="0.00"/>
+ <irqcpu cpu="9" intr="59" value="0.00"/>
+ <irqcpu cpu="9" intr="60" value="0.00"/>
+ <irqcpu cpu="9" intr="61" value="0.00"/>
+ <irqcpu cpu="9" intr="62" value="0.00"/>
+ <irqcpu cpu="9" intr="63" value="0.00"/>
+ <irqcpu cpu="9" intr="64" value="0.00"/>
+ <irqcpu cpu="9" intr="65" value="0.00"/>
+ <irqcpu cpu="9" intr="66" value="0.00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <io per="second">
+ <tps>26.00</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="26.00" bwrtn="312.00"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="3.00" txpck="0.00" rxbyt="180.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="1.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0-nic">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="tun0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="1337" tcpsck="24" udpsck="16" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0.00" pgpgout="52.00" fault="32.00" majflt="0.00"/>
+ <memory per="second" unit="kB">
+ <memfree>14042992</memfree>
+ <memused>10492744</memused>
+ <memused-percent>42.77</memused-percent>
+ <swpfree>12337144</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>383920</buffers>
+ <cached>7116224</cached>
+ <frmpg>-37.00</frmpg>
+ <bufpg>0.00</bufpg>
+ <campg>3.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>839706</dentunusd>
+ <file-sz>11840</file-sz>
+ <inode-sz>308480</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0.00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0.00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0.00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="1" plist-sz="543" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ </timestamp>
+ <timestamp date="2012-09-22" time="04:11:48" interval="1">
+ <processes per="second" proc="0.00"/>
+ <context-switch per="second" cswch="398.00"/>
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.12" iowait="0.25" steal="0.00" idle="99.50"/>
+ <cpu number="0" user="1.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="99.00"/>
+ <cpu number="1" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="2" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="3" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="4" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="5" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="6" user="0.00" nice="0.00" system="0.00" iowait="2.02" steal="0.00" idle="97.98"/>
+ <cpu number="7" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="8" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ <cpu number="9" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="174.00"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="0.00"/>
+ <irqcpu cpu="0" intr="1" value="0.00"/>
+ <irqcpu cpu="0" intr="8" value="0.00"/>
+ <irqcpu cpu="0" intr="9" value="0.00"/>
+ <irqcpu cpu="0" intr="12" value="0.00"/>
+ <irqcpu cpu="0" intr="16" value="0.00"/>
+ <irqcpu cpu="0" intr="17" value="0.00"/>
+ <irqcpu cpu="0" intr="18" value="0.00"/>
+ <irqcpu cpu="0" intr="19" value="0.00"/>
+ <irqcpu cpu="0" intr="23" value="0.00"/>
+ <irqcpu cpu="0" intr="32" value="0.00"/>
+ <irqcpu cpu="0" intr="36" value="0.00"/>
+ <irqcpu cpu="0" intr="48" value="0.00"/>
+ <irqcpu cpu="0" intr="49" value="0.00"/>
+ <irqcpu cpu="0" intr="50" value="0.00"/>
+ <irqcpu cpu="0" intr="51" value="0.00"/>
+ <irqcpu cpu="0" intr="52" value="0.00"/>
+ <irqcpu cpu="0" intr="53" value="0.00"/>
+ <irqcpu cpu="0" intr="54" value="0.00"/>
+ <irqcpu cpu="0" intr="55" value="0.00"/>
+ <irqcpu cpu="0" intr="56" value="0.00"/>
+ <irqcpu cpu="0" intr="57" value="0.00"/>
+ <irqcpu cpu="0" intr="58" value="0.00"/>
+ <irqcpu cpu="0" intr="59" value="0.00"/>
+ <irqcpu cpu="0" intr="60" value="0.00"/>
+ <irqcpu cpu="0" intr="61" value="0.00"/>
+ <irqcpu cpu="0" intr="62" value="0.00"/>
+ <irqcpu cpu="0" intr="63" value="0.00"/>
+ <irqcpu cpu="0" intr="64" value="0.00"/>
+ <irqcpu cpu="0" intr="65" value="0.00"/>
+ <irqcpu cpu="0" intr="66" value="0.00"/>
+ <irqcpu cpu="1" intr="0" value="0.00"/>
+ <irqcpu cpu="1" intr="1" value="0.00"/>
+ <irqcpu cpu="1" intr="8" value="0.00"/>
+ <irqcpu cpu="1" intr="9" value="0.00"/>
+ <irqcpu cpu="1" intr="12" value="0.00"/>
+ <irqcpu cpu="1" intr="16" value="0.00"/>
+ <irqcpu cpu="1" intr="17" value="0.00"/>
+ <irqcpu cpu="1" intr="18" value="0.00"/>
+ <irqcpu cpu="1" intr="19" value="0.00"/>
+ <irqcpu cpu="1" intr="23" value="0.00"/>
+ <irqcpu cpu="1" intr="32" value="0.00"/>
+ <irqcpu cpu="1" intr="36" value="0.00"/>
+ <irqcpu cpu="1" intr="48" value="0.00"/>
+ <irqcpu cpu="1" intr="49" value="0.00"/>
+ <irqcpu cpu="1" intr="50" value="0.00"/>
+ <irqcpu cpu="1" intr="51" value="0.00"/>
+ <irqcpu cpu="1" intr="52" value="0.00"/>
+ <irqcpu cpu="1" intr="53" value="0.00"/>
+ <irqcpu cpu="1" intr="54" value="0.00"/>
+ <irqcpu cpu="1" intr="55" value="0.00"/>
+ <irqcpu cpu="1" intr="56" value="0.00"/>
+ <irqcpu cpu="1" intr="57" value="0.00"/>
+ <irqcpu cpu="1" intr="58" value="0.00"/>
+ <irqcpu cpu="1" intr="59" value="0.00"/>
+ <irqcpu cpu="1" intr="60" value="0.00"/>
+ <irqcpu cpu="1" intr="61" value="0.00"/>
+ <irqcpu cpu="1" intr="62" value="0.00"/>
+ <irqcpu cpu="1" intr="63" value="0.00"/>
+ <irqcpu cpu="1" intr="64" value="0.00"/>
+ <irqcpu cpu="1" intr="65" value="0.00"/>
+ <irqcpu cpu="1" intr="66" value="0.00"/>
+ <irqcpu cpu="2" intr="0" value="0.00"/>
+ <irqcpu cpu="2" intr="1" value="0.00"/>
+ <irqcpu cpu="2" intr="8" value="0.00"/>
+ <irqcpu cpu="2" intr="9" value="0.00"/>
+ <irqcpu cpu="2" intr="12" value="0.00"/>
+ <irqcpu cpu="2" intr="16" value="0.00"/>
+ <irqcpu cpu="2" intr="17" value="0.00"/>
+ <irqcpu cpu="2" intr="18" value="0.00"/>
+ <irqcpu cpu="2" intr="19" value="0.00"/>
+ <irqcpu cpu="2" intr="23" value="0.00"/>
+ <irqcpu cpu="2" intr="32" value="0.00"/>
+ <irqcpu cpu="2" intr="36" value="0.00"/>
+ <irqcpu cpu="2" intr="48" value="0.00"/>
+ <irqcpu cpu="2" intr="49" value="0.00"/>
+ <irqcpu cpu="2" intr="50" value="0.00"/>
+ <irqcpu cpu="2" intr="51" value="0.00"/>
+ <irqcpu cpu="2" intr="52" value="0.00"/>
+ <irqcpu cpu="2" intr="53" value="0.00"/>
+ <irqcpu cpu="2" intr="54" value="0.00"/>
+ <irqcpu cpu="2" intr="55" value="0.00"/>
+ <irqcpu cpu="2" intr="56" value="0.00"/>
+ <irqcpu cpu="2" intr="57" value="0.00"/>
+ <irqcpu cpu="2" intr="58" value="0.00"/>
+ <irqcpu cpu="2" intr="59" value="0.00"/>
+ <irqcpu cpu="2" intr="60" value="0.00"/>
+ <irqcpu cpu="2" intr="61" value="0.00"/>
+ <irqcpu cpu="2" intr="62" value="0.00"/>
+ <irqcpu cpu="2" intr="63" value="0.00"/>
+ <irqcpu cpu="2" intr="64" value="0.00"/>
+ <irqcpu cpu="2" intr="65" value="0.00"/>
+ <irqcpu cpu="2" intr="66" value="0.00"/>
+ <irqcpu cpu="3" intr="0" value="0.00"/>
+ <irqcpu cpu="3" intr="1" value="0.00"/>
+ <irqcpu cpu="3" intr="8" value="0.00"/>
+ <irqcpu cpu="3" intr="9" value="0.00"/>
+ <irqcpu cpu="3" intr="12" value="0.00"/>
+ <irqcpu cpu="3" intr="16" value="0.00"/>
+ <irqcpu cpu="3" intr="17" value="0.00"/>
+ <irqcpu cpu="3" intr="18" value="0.00"/>
+ <irqcpu cpu="3" intr="19" value="0.00"/>
+ <irqcpu cpu="3" intr="23" value="0.00"/>
+ <irqcpu cpu="3" intr="32" value="0.00"/>
+ <irqcpu cpu="3" intr="36" value="0.00"/>
+ <irqcpu cpu="3" intr="48" value="0.00"/>
+ <irqcpu cpu="3" intr="49" value="0.00"/>
+ <irqcpu cpu="3" intr="50" value="0.00"/>
+ <irqcpu cpu="3" intr="51" value="0.00"/>
+ <irqcpu cpu="3" intr="52" value="0.00"/>
+ <irqcpu cpu="3" intr="53" value="0.00"/>
+ <irqcpu cpu="3" intr="54" value="0.00"/>
+ <irqcpu cpu="3" intr="55" value="0.00"/>
+ <irqcpu cpu="3" intr="56" value="0.00"/>
+ <irqcpu cpu="3" intr="57" value="0.00"/>
+ <irqcpu cpu="3" intr="58" value="0.00"/>
+ <irqcpu cpu="3" intr="59" value="0.00"/>
+ <irqcpu cpu="3" intr="60" value="0.00"/>
+ <irqcpu cpu="3" intr="61" value="0.00"/>
+ <irqcpu cpu="3" intr="62" value="0.00"/>
+ <irqcpu cpu="3" intr="63" value="0.00"/>
+ <irqcpu cpu="3" intr="64" value="0.00"/>
+ <irqcpu cpu="3" intr="65" value="0.00"/>
+ <irqcpu cpu="3" intr="66" value="0.00"/>
+ <irqcpu cpu="4" intr="0" value="0.00"/>
+ <irqcpu cpu="4" intr="1" value="0.00"/>
+ <irqcpu cpu="4" intr="8" value="0.00"/>
+ <irqcpu cpu="4" intr="9" value="0.00"/>
+ <irqcpu cpu="4" intr="12" value="0.00"/>
+ <irqcpu cpu="4" intr="16" value="0.00"/>
+ <irqcpu cpu="4" intr="17" value="0.00"/>
+ <irqcpu cpu="4" intr="18" value="0.00"/>
+ <irqcpu cpu="4" intr="19" value="0.00"/>
+ <irqcpu cpu="4" intr="23" value="0.00"/>
+ <irqcpu cpu="4" intr="32" value="0.00"/>
+ <irqcpu cpu="4" intr="36" value="0.00"/>
+ <irqcpu cpu="4" intr="48" value="0.00"/>
+ <irqcpu cpu="4" intr="49" value="0.00"/>
+ <irqcpu cpu="4" intr="50" value="0.00"/>
+ <irqcpu cpu="4" intr="51" value="0.00"/>
+ <irqcpu cpu="4" intr="52" value="0.00"/>
+ <irqcpu cpu="4" intr="53" value="0.00"/>
+ <irqcpu cpu="4" intr="54" value="0.00"/>
+ <irqcpu cpu="4" intr="55" value="0.00"/>
+ <irqcpu cpu="4" intr="56" value="0.00"/>
+ <irqcpu cpu="4" intr="57" value="0.00"/>
+ <irqcpu cpu="4" intr="58" value="0.00"/>
+ <irqcpu cpu="4" intr="59" value="0.00"/>
+ <irqcpu cpu="4" intr="60" value="0.00"/>
+ <irqcpu cpu="4" intr="61" value="0.00"/>
+ <irqcpu cpu="4" intr="62" value="0.00"/>
+ <irqcpu cpu="4" intr="63" value="0.00"/>
+ <irqcpu cpu="4" intr="64" value="0.00"/>
+ <irqcpu cpu="4" intr="65" value="0.00"/>
+ <irqcpu cpu="4" intr="66" value="0.00"/>
+ <irqcpu cpu="5" intr="0" value="0.00"/>
+ <irqcpu cpu="5" intr="1" value="0.00"/>
+ <irqcpu cpu="5" intr="8" value="0.00"/>
+ <irqcpu cpu="5" intr="9" value="0.00"/>
+ <irqcpu cpu="5" intr="12" value="0.00"/>
+ <irqcpu cpu="5" intr="16" value="0.00"/>
+ <irqcpu cpu="5" intr="17" value="0.00"/>
+ <irqcpu cpu="5" intr="18" value="0.00"/>
+ <irqcpu cpu="5" intr="19" value="0.00"/>
+ <irqcpu cpu="5" intr="23" value="0.00"/>
+ <irqcpu cpu="5" intr="32" value="0.00"/>
+ <irqcpu cpu="5" intr="36" value="0.00"/>
+ <irqcpu cpu="5" intr="48" value="0.00"/>
+ <irqcpu cpu="5" intr="49" value="0.00"/>
+ <irqcpu cpu="5" intr="50" value="0.00"/>
+ <irqcpu cpu="5" intr="51" value="0.00"/>
+ <irqcpu cpu="5" intr="52" value="0.00"/>
+ <irqcpu cpu="5" intr="53" value="0.00"/>
+ <irqcpu cpu="5" intr="54" value="0.00"/>
+ <irqcpu cpu="5" intr="55" value="0.00"/>
+ <irqcpu cpu="5" intr="56" value="0.00"/>
+ <irqcpu cpu="5" intr="57" value="3.00"/>
+ <irqcpu cpu="5" intr="58" value="0.00"/>
+ <irqcpu cpu="5" intr="59" value="0.00"/>
+ <irqcpu cpu="5" intr="60" value="0.00"/>
+ <irqcpu cpu="5" intr="61" value="0.00"/>
+ <irqcpu cpu="5" intr="62" value="0.00"/>
+ <irqcpu cpu="5" intr="63" value="0.00"/>
+ <irqcpu cpu="5" intr="64" value="0.00"/>
+ <irqcpu cpu="5" intr="65" value="0.00"/>
+ <irqcpu cpu="5" intr="66" value="0.00"/>
+ <irqcpu cpu="6" intr="0" value="0.00"/>
+ <irqcpu cpu="6" intr="1" value="0.00"/>
+ <irqcpu cpu="6" intr="8" value="0.00"/>
+ <irqcpu cpu="6" intr="9" value="0.00"/>
+ <irqcpu cpu="6" intr="12" value="0.00"/>
+ <irqcpu cpu="6" intr="16" value="0.00"/>
+ <irqcpu cpu="6" intr="17" value="0.00"/>
+ <irqcpu cpu="6" intr="18" value="0.00"/>
+ <irqcpu cpu="6" intr="19" value="0.00"/>
+ <irqcpu cpu="6" intr="23" value="0.00"/>
+ <irqcpu cpu="6" intr="32" value="0.00"/>
+ <irqcpu cpu="6" intr="36" value="0.00"/>
+ <irqcpu cpu="6" intr="48" value="0.00"/>
+ <irqcpu cpu="6" intr="49" value="0.00"/>
+ <irqcpu cpu="6" intr="50" value="0.00"/>
+ <irqcpu cpu="6" intr="51" value="0.00"/>
+ <irqcpu cpu="6" intr="52" value="0.00"/>
+ <irqcpu cpu="6" intr="53" value="0.00"/>
+ <irqcpu cpu="6" intr="54" value="6.00"/>
+ <irqcpu cpu="6" intr="55" value="0.00"/>
+ <irqcpu cpu="6" intr="56" value="0.00"/>
+ <irqcpu cpu="6" intr="57" value="0.00"/>
+ <irqcpu cpu="6" intr="58" value="0.00"/>
+ <irqcpu cpu="6" intr="59" value="0.00"/>
+ <irqcpu cpu="6" intr="60" value="0.00"/>
+ <irqcpu cpu="6" intr="61" value="0.00"/>
+ <irqcpu cpu="6" intr="62" value="0.00"/>
+ <irqcpu cpu="6" intr="63" value="0.00"/>
+ <irqcpu cpu="6" intr="64" value="0.00"/>
+ <irqcpu cpu="6" intr="65" value="0.00"/>
+ <irqcpu cpu="6" intr="66" value="0.00"/>
+ <irqcpu cpu="7" intr="0" value="0.00"/>
+ <irqcpu cpu="7" intr="1" value="0.00"/>
+ <irqcpu cpu="7" intr="8" value="0.00"/>
+ <irqcpu cpu="7" intr="9" value="0.00"/>
+ <irqcpu cpu="7" intr="12" value="0.00"/>
+ <irqcpu cpu="7" intr="16" value="0.00"/>
+ <irqcpu cpu="7" intr="17" value="0.00"/>
+ <irqcpu cpu="7" intr="18" value="0.00"/>
+ <irqcpu cpu="7" intr="19" value="0.00"/>
+ <irqcpu cpu="7" intr="23" value="0.00"/>
+ <irqcpu cpu="7" intr="32" value="0.00"/>
+ <irqcpu cpu="7" intr="36" value="0.00"/>
+ <irqcpu cpu="7" intr="48" value="0.00"/>
+ <irqcpu cpu="7" intr="49" value="0.00"/>
+ <irqcpu cpu="7" intr="50" value="0.00"/>
+ <irqcpu cpu="7" intr="51" value="0.00"/>
+ <irqcpu cpu="7" intr="52" value="0.00"/>
+ <irqcpu cpu="7" intr="53" value="0.00"/>
+ <irqcpu cpu="7" intr="54" value="0.00"/>
+ <irqcpu cpu="7" intr="55" value="0.00"/>
+ <irqcpu cpu="7" intr="56" value="0.00"/>
+ <irqcpu cpu="7" intr="57" value="0.00"/>
+ <irqcpu cpu="7" intr="58" value="0.00"/>
+ <irqcpu cpu="7" intr="59" value="0.00"/>
+ <irqcpu cpu="7" intr="60" value="0.00"/>
+ <irqcpu cpu="7" intr="61" value="0.00"/>
+ <irqcpu cpu="7" intr="62" value="0.00"/>
+ <irqcpu cpu="7" intr="63" value="0.00"/>
+ <irqcpu cpu="7" intr="64" value="0.00"/>
+ <irqcpu cpu="7" intr="65" value="0.00"/>
+ <irqcpu cpu="7" intr="66" value="0.00"/>
+ <irqcpu cpu="8" intr="0" value="0.00"/>
+ <irqcpu cpu="8" intr="1" value="0.00"/>
+ <irqcpu cpu="8" intr="8" value="0.00"/>
+ <irqcpu cpu="8" intr="9" value="0.00"/>
+ <irqcpu cpu="8" intr="12" value="0.00"/>
+ <irqcpu cpu="8" intr="16" value="0.00"/>
+ <irqcpu cpu="8" intr="17" value="0.00"/>
+ <irqcpu cpu="8" intr="18" value="0.00"/>
+ <irqcpu cpu="8" intr="19" value="0.00"/>
+ <irqcpu cpu="8" intr="23" value="0.00"/>
+ <irqcpu cpu="8" intr="32" value="0.00"/>
+ <irqcpu cpu="8" intr="36" value="0.00"/>
+ <irqcpu cpu="8" intr="48" value="0.00"/>
+ <irqcpu cpu="8" intr="49" value="0.00"/>
+ <irqcpu cpu="8" intr="50" value="0.00"/>
+ <irqcpu cpu="8" intr="51" value="0.00"/>
+ <irqcpu cpu="8" intr="52" value="0.00"/>
+ <irqcpu cpu="8" intr="53" value="0.00"/>
+ <irqcpu cpu="8" intr="54" value="0.00"/>
+ <irqcpu cpu="8" intr="55" value="0.00"/>
+ <irqcpu cpu="8" intr="56" value="0.00"/>
+ <irqcpu cpu="8" intr="57" value="0.00"/>
+ <irqcpu cpu="8" intr="58" value="0.00"/>
+ <irqcpu cpu="8" intr="59" value="0.00"/>
+ <irqcpu cpu="8" intr="60" value="0.00"/>
+ <irqcpu cpu="8" intr="61" value="0.00"/>
+ <irqcpu cpu="8" intr="62" value="0.00"/>
+ <irqcpu cpu="8" intr="63" value="0.00"/>
+ <irqcpu cpu="8" intr="64" value="0.00"/>
+ <irqcpu cpu="8" intr="65" value="0.00"/>
+ <irqcpu cpu="8" intr="66" value="0.00"/>
+ <irqcpu cpu="9" intr="0" value="0.00"/>
+ <irqcpu cpu="9" intr="1" value="0.00"/>
+ <irqcpu cpu="9" intr="8" value="0.00"/>
+ <irqcpu cpu="9" intr="9" value="0.00"/>
+ <irqcpu cpu="9" intr="12" value="0.00"/>
+ <irqcpu cpu="9" intr="16" value="0.00"/>
+ <irqcpu cpu="9" intr="17" value="0.00"/>
+ <irqcpu cpu="9" intr="18" value="0.00"/>
+ <irqcpu cpu="9" intr="19" value="0.00"/>
+ <irqcpu cpu="9" intr="23" value="0.00"/>
+ <irqcpu cpu="9" intr="32" value="0.00"/>
+ <irqcpu cpu="9" intr="36" value="0.00"/>
+ <irqcpu cpu="9" intr="48" value="0.00"/>
+ <irqcpu cpu="9" intr="49" value="0.00"/>
+ <irqcpu cpu="9" intr="50" value="0.00"/>
+ <irqcpu cpu="9" intr="51" value="0.00"/>
+ <irqcpu cpu="9" intr="52" value="0.00"/>
+ <irqcpu cpu="9" intr="53" value="0.00"/>
+ <irqcpu cpu="9" intr="54" value="0.00"/>
+ <irqcpu cpu="9" intr="55" value="0.00"/>
+ <irqcpu cpu="9" intr="56" value="0.00"/>
+ <irqcpu cpu="9" intr="57" value="0.00"/>
+ <irqcpu cpu="9" intr="58" value="0.00"/>
+ <irqcpu cpu="9" intr="59" value="0.00"/>
+ <irqcpu cpu="9" intr="60" value="0.00"/>
+ <irqcpu cpu="9" intr="61" value="0.00"/>
+ <irqcpu cpu="9" intr="62" value="0.00"/>
+ <irqcpu cpu="9" intr="63" value="0.00"/>
+ <irqcpu cpu="9" intr="64" value="0.00"/>
+ <irqcpu cpu="9" intr="65" value="0.00"/>
+ <irqcpu cpu="9" intr="66" value="0.00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <io per="second">
+ <tps>17.00</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="17.00" bwrtn="192.00"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="4.00" txpck="0.00" rxbyt="395.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0-nic">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="tun0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="1337" tcpsck="24" udpsck="16" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0.00" pgpgout="32.00" fault="12.00" majflt="0.00"/>
+ <memory per="second" unit="kB">
+ <memfree>14043016</memfree>
+ <memused>10492720</memused>
+ <memused-percent>42.77</memused-percent>
+ <swpfree>12337144</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>383920</buffers>
+ <cached>7116232</cached>
+ <frmpg>6.00</frmpg>
+ <bufpg>0.00</bufpg>
+ <campg>2.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>839706</dentunusd>
+ <file-sz>11840</file-sz>
+ <inode-sz>308480</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0.00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0.00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0.00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="543" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ </timestamp>
+ <timestamp date="2012-09-22" time="04:11:49" interval="1">
+ <processes per="second" proc="0.00"/>
+ <context-switch per="second" cswch="359.00"/>
+ <cpu-load>
+ <cpu number="all" user="0.00" nice="0.00" system="0.12" iowait="0.38" steal="0.00" idle="99.50"/>
+ <cpu number="0" user="0.00" nice="0.00" system="1.00" iowait="0.00" steal="0.00" idle="99.00"/>
+ <cpu number="1" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="2" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="3" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="4" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="5" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="6" user="0.00" nice="0.00" system="0.00" iowait="3.00" steal="0.00" idle="97.00"/>
+ <cpu number="7" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="100.00"/>
+ <cpu number="8" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ <cpu number="9" user="0.00" nice="0.00" system="0.00" iowait="0.00" steal="0.00" idle="0.00"/>
+ </cpu-load>
+ <interrupts>
+ <int-global per="second">
+ <irq intr="sum" value="160.00"/>
+ </int-global>
+ <int-proc per="second">
+ <irqcpu cpu="0" intr="0" value="0.00"/>
+ <irqcpu cpu="0" intr="1" value="0.00"/>
+ <irqcpu cpu="0" intr="8" value="0.00"/>
+ <irqcpu cpu="0" intr="9" value="0.00"/>
+ <irqcpu cpu="0" intr="12" value="0.00"/>
+ <irqcpu cpu="0" intr="16" value="0.00"/>
+ <irqcpu cpu="0" intr="17" value="0.00"/>
+ <irqcpu cpu="0" intr="18" value="0.00"/>
+ <irqcpu cpu="0" intr="19" value="0.00"/>
+ <irqcpu cpu="0" intr="23" value="0.00"/>
+ <irqcpu cpu="0" intr="32" value="0.00"/>
+ <irqcpu cpu="0" intr="36" value="0.00"/>
+ <irqcpu cpu="0" intr="48" value="0.00"/>
+ <irqcpu cpu="0" intr="49" value="0.00"/>
+ <irqcpu cpu="0" intr="50" value="0.00"/>
+ <irqcpu cpu="0" intr="51" value="0.00"/>
+ <irqcpu cpu="0" intr="52" value="0.00"/>
+ <irqcpu cpu="0" intr="53" value="0.00"/>
+ <irqcpu cpu="0" intr="54" value="0.00"/>
+ <irqcpu cpu="0" intr="55" value="0.00"/>
+ <irqcpu cpu="0" intr="56" value="0.00"/>
+ <irqcpu cpu="0" intr="57" value="0.00"/>
+ <irqcpu cpu="0" intr="58" value="0.00"/>
+ <irqcpu cpu="0" intr="59" value="0.00"/>
+ <irqcpu cpu="0" intr="60" value="0.00"/>
+ <irqcpu cpu="0" intr="61" value="0.00"/>
+ <irqcpu cpu="0" intr="62" value="0.00"/>
+ <irqcpu cpu="0" intr="63" value="0.00"/>
+ <irqcpu cpu="0" intr="64" value="0.00"/>
+ <irqcpu cpu="0" intr="65" value="0.00"/>
+ <irqcpu cpu="0" intr="66" value="0.00"/>
+ <irqcpu cpu="1" intr="0" value="0.00"/>
+ <irqcpu cpu="1" intr="1" value="0.00"/>
+ <irqcpu cpu="1" intr="8" value="0.00"/>
+ <irqcpu cpu="1" intr="9" value="0.00"/>
+ <irqcpu cpu="1" intr="12" value="0.00"/>
+ <irqcpu cpu="1" intr="16" value="0.00"/>
+ <irqcpu cpu="1" intr="17" value="0.00"/>
+ <irqcpu cpu="1" intr="18" value="0.00"/>
+ <irqcpu cpu="1" intr="19" value="0.00"/>
+ <irqcpu cpu="1" intr="23" value="0.00"/>
+ <irqcpu cpu="1" intr="32" value="0.00"/>
+ <irqcpu cpu="1" intr="36" value="0.00"/>
+ <irqcpu cpu="1" intr="48" value="0.00"/>
+ <irqcpu cpu="1" intr="49" value="0.00"/>
+ <irqcpu cpu="1" intr="50" value="0.00"/>
+ <irqcpu cpu="1" intr="51" value="0.00"/>
+ <irqcpu cpu="1" intr="52" value="0.00"/>
+ <irqcpu cpu="1" intr="53" value="0.00"/>
+ <irqcpu cpu="1" intr="54" value="0.00"/>
+ <irqcpu cpu="1" intr="55" value="0.00"/>
+ <irqcpu cpu="1" intr="56" value="0.00"/>
+ <irqcpu cpu="1" intr="57" value="0.00"/>
+ <irqcpu cpu="1" intr="58" value="0.00"/>
+ <irqcpu cpu="1" intr="59" value="0.00"/>
+ <irqcpu cpu="1" intr="60" value="0.00"/>
+ <irqcpu cpu="1" intr="61" value="0.00"/>
+ <irqcpu cpu="1" intr="62" value="0.00"/>
+ <irqcpu cpu="1" intr="63" value="0.00"/>
+ <irqcpu cpu="1" intr="64" value="0.00"/>
+ <irqcpu cpu="1" intr="65" value="0.00"/>
+ <irqcpu cpu="1" intr="66" value="0.00"/>
+ <irqcpu cpu="2" intr="0" value="0.00"/>
+ <irqcpu cpu="2" intr="1" value="0.00"/>
+ <irqcpu cpu="2" intr="8" value="0.00"/>
+ <irqcpu cpu="2" intr="9" value="0.00"/>
+ <irqcpu cpu="2" intr="12" value="0.00"/>
+ <irqcpu cpu="2" intr="16" value="0.00"/>
+ <irqcpu cpu="2" intr="17" value="0.00"/>
+ <irqcpu cpu="2" intr="18" value="0.00"/>
+ <irqcpu cpu="2" intr="19" value="0.00"/>
+ <irqcpu cpu="2" intr="23" value="0.00"/>
+ <irqcpu cpu="2" intr="32" value="0.00"/>
+ <irqcpu cpu="2" intr="36" value="0.00"/>
+ <irqcpu cpu="2" intr="48" value="0.00"/>
+ <irqcpu cpu="2" intr="49" value="0.00"/>
+ <irqcpu cpu="2" intr="50" value="0.00"/>
+ <irqcpu cpu="2" intr="51" value="0.00"/>
+ <irqcpu cpu="2" intr="52" value="0.00"/>
+ <irqcpu cpu="2" intr="53" value="0.00"/>
+ <irqcpu cpu="2" intr="54" value="0.00"/>
+ <irqcpu cpu="2" intr="55" value="0.00"/>
+ <irqcpu cpu="2" intr="56" value="0.00"/>
+ <irqcpu cpu="2" intr="57" value="0.00"/>
+ <irqcpu cpu="2" intr="58" value="0.00"/>
+ <irqcpu cpu="2" intr="59" value="0.00"/>
+ <irqcpu cpu="2" intr="60" value="0.00"/>
+ <irqcpu cpu="2" intr="61" value="0.00"/>
+ <irqcpu cpu="2" intr="62" value="0.00"/>
+ <irqcpu cpu="2" intr="63" value="0.00"/>
+ <irqcpu cpu="2" intr="64" value="0.00"/>
+ <irqcpu cpu="2" intr="65" value="0.00"/>
+ <irqcpu cpu="2" intr="66" value="0.00"/>
+ <irqcpu cpu="3" intr="0" value="0.00"/>
+ <irqcpu cpu="3" intr="1" value="0.00"/>
+ <irqcpu cpu="3" intr="8" value="0.00"/>
+ <irqcpu cpu="3" intr="9" value="0.00"/>
+ <irqcpu cpu="3" intr="12" value="0.00"/>
+ <irqcpu cpu="3" intr="16" value="0.00"/>
+ <irqcpu cpu="3" intr="17" value="0.00"/>
+ <irqcpu cpu="3" intr="18" value="0.00"/>
+ <irqcpu cpu="3" intr="19" value="0.00"/>
+ <irqcpu cpu="3" intr="23" value="0.00"/>
+ <irqcpu cpu="3" intr="32" value="0.00"/>
+ <irqcpu cpu="3" intr="36" value="0.00"/>
+ <irqcpu cpu="3" intr="48" value="0.00"/>
+ <irqcpu cpu="3" intr="49" value="0.00"/>
+ <irqcpu cpu="3" intr="50" value="0.00"/>
+ <irqcpu cpu="3" intr="51" value="0.00"/>
+ <irqcpu cpu="3" intr="52" value="0.00"/>
+ <irqcpu cpu="3" intr="53" value="0.00"/>
+ <irqcpu cpu="3" intr="54" value="0.00"/>
+ <irqcpu cpu="3" intr="55" value="0.00"/>
+ <irqcpu cpu="3" intr="56" value="0.00"/>
+ <irqcpu cpu="3" intr="57" value="0.00"/>
+ <irqcpu cpu="3" intr="58" value="0.00"/>
+ <irqcpu cpu="3" intr="59" value="0.00"/>
+ <irqcpu cpu="3" intr="60" value="0.00"/>
+ <irqcpu cpu="3" intr="61" value="0.00"/>
+ <irqcpu cpu="3" intr="62" value="0.00"/>
+ <irqcpu cpu="3" intr="63" value="0.00"/>
+ <irqcpu cpu="3" intr="64" value="0.00"/>
+ <irqcpu cpu="3" intr="65" value="0.00"/>
+ <irqcpu cpu="3" intr="66" value="0.00"/>
+ <irqcpu cpu="4" intr="0" value="0.00"/>
+ <irqcpu cpu="4" intr="1" value="0.00"/>
+ <irqcpu cpu="4" intr="8" value="0.00"/>
+ <irqcpu cpu="4" intr="9" value="0.00"/>
+ <irqcpu cpu="4" intr="12" value="0.00"/>
+ <irqcpu cpu="4" intr="16" value="0.00"/>
+ <irqcpu cpu="4" intr="17" value="0.00"/>
+ <irqcpu cpu="4" intr="18" value="0.00"/>
+ <irqcpu cpu="4" intr="19" value="0.00"/>
+ <irqcpu cpu="4" intr="23" value="0.00"/>
+ <irqcpu cpu="4" intr="32" value="0.00"/>
+ <irqcpu cpu="4" intr="36" value="0.00"/>
+ <irqcpu cpu="4" intr="48" value="0.00"/>
+ <irqcpu cpu="4" intr="49" value="0.00"/>
+ <irqcpu cpu="4" intr="50" value="0.00"/>
+ <irqcpu cpu="4" intr="51" value="0.00"/>
+ <irqcpu cpu="4" intr="52" value="0.00"/>
+ <irqcpu cpu="4" intr="53" value="0.00"/>
+ <irqcpu cpu="4" intr="54" value="0.00"/>
+ <irqcpu cpu="4" intr="55" value="0.00"/>
+ <irqcpu cpu="4" intr="56" value="0.00"/>
+ <irqcpu cpu="4" intr="57" value="0.00"/>
+ <irqcpu cpu="4" intr="58" value="0.00"/>
+ <irqcpu cpu="4" intr="59" value="0.00"/>
+ <irqcpu cpu="4" intr="60" value="0.00"/>
+ <irqcpu cpu="4" intr="61" value="0.00"/>
+ <irqcpu cpu="4" intr="62" value="0.00"/>
+ <irqcpu cpu="4" intr="63" value="0.00"/>
+ <irqcpu cpu="4" intr="64" value="0.00"/>
+ <irqcpu cpu="4" intr="65" value="0.00"/>
+ <irqcpu cpu="4" intr="66" value="0.00"/>
+ <irqcpu cpu="5" intr="0" value="0.00"/>
+ <irqcpu cpu="5" intr="1" value="0.00"/>
+ <irqcpu cpu="5" intr="8" value="0.00"/>
+ <irqcpu cpu="5" intr="9" value="0.00"/>
+ <irqcpu cpu="5" intr="12" value="0.00"/>
+ <irqcpu cpu="5" intr="16" value="0.00"/>
+ <irqcpu cpu="5" intr="17" value="0.00"/>
+ <irqcpu cpu="5" intr="18" value="0.00"/>
+ <irqcpu cpu="5" intr="19" value="0.00"/>
+ <irqcpu cpu="5" intr="23" value="0.00"/>
+ <irqcpu cpu="5" intr="32" value="0.00"/>
+ <irqcpu cpu="5" intr="36" value="0.00"/>
+ <irqcpu cpu="5" intr="48" value="0.00"/>
+ <irqcpu cpu="5" intr="49" value="0.00"/>
+ <irqcpu cpu="5" intr="50" value="0.00"/>
+ <irqcpu cpu="5" intr="51" value="0.00"/>
+ <irqcpu cpu="5" intr="52" value="0.00"/>
+ <irqcpu cpu="5" intr="53" value="0.00"/>
+ <irqcpu cpu="5" intr="54" value="0.00"/>
+ <irqcpu cpu="5" intr="55" value="0.00"/>
+ <irqcpu cpu="5" intr="56" value="0.00"/>
+ <irqcpu cpu="5" intr="57" value="6.00"/>
+ <irqcpu cpu="5" intr="58" value="0.00"/>
+ <irqcpu cpu="5" intr="59" value="0.00"/>
+ <irqcpu cpu="5" intr="60" value="0.00"/>
+ <irqcpu cpu="5" intr="61" value="0.00"/>
+ <irqcpu cpu="5" intr="62" value="0.00"/>
+ <irqcpu cpu="5" intr="63" value="0.00"/>
+ <irqcpu cpu="5" intr="64" value="0.00"/>
+ <irqcpu cpu="5" intr="65" value="0.00"/>
+ <irqcpu cpu="5" intr="66" value="0.00"/>
+ <irqcpu cpu="6" intr="0" value="0.00"/>
+ <irqcpu cpu="6" intr="1" value="0.00"/>
+ <irqcpu cpu="6" intr="8" value="0.00"/>
+ <irqcpu cpu="6" intr="9" value="0.00"/>
+ <irqcpu cpu="6" intr="12" value="0.00"/>
+ <irqcpu cpu="6" intr="16" value="0.00"/>
+ <irqcpu cpu="6" intr="17" value="0.00"/>
+ <irqcpu cpu="6" intr="18" value="0.00"/>
+ <irqcpu cpu="6" intr="19" value="0.00"/>
+ <irqcpu cpu="6" intr="23" value="0.00"/>
+ <irqcpu cpu="6" intr="32" value="0.00"/>
+ <irqcpu cpu="6" intr="36" value="0.00"/>
+ <irqcpu cpu="6" intr="48" value="0.00"/>
+ <irqcpu cpu="6" intr="49" value="0.00"/>
+ <irqcpu cpu="6" intr="50" value="0.00"/>
+ <irqcpu cpu="6" intr="51" value="0.00"/>
+ <irqcpu cpu="6" intr="52" value="0.00"/>
+ <irqcpu cpu="6" intr="53" value="0.00"/>
+ <irqcpu cpu="6" intr="54" value="6.00"/>
+ <irqcpu cpu="6" intr="55" value="0.00"/>
+ <irqcpu cpu="6" intr="56" value="0.00"/>
+ <irqcpu cpu="6" intr="57" value="0.00"/>
+ <irqcpu cpu="6" intr="58" value="0.00"/>
+ <irqcpu cpu="6" intr="59" value="0.00"/>
+ <irqcpu cpu="6" intr="60" value="0.00"/>
+ <irqcpu cpu="6" intr="61" value="0.00"/>
+ <irqcpu cpu="6" intr="62" value="0.00"/>
+ <irqcpu cpu="6" intr="63" value="0.00"/>
+ <irqcpu cpu="6" intr="64" value="0.00"/>
+ <irqcpu cpu="6" intr="65" value="0.00"/>
+ <irqcpu cpu="6" intr="66" value="0.00"/>
+ <irqcpu cpu="7" intr="0" value="0.00"/>
+ <irqcpu cpu="7" intr="1" value="0.00"/>
+ <irqcpu cpu="7" intr="8" value="0.00"/>
+ <irqcpu cpu="7" intr="9" value="0.00"/>
+ <irqcpu cpu="7" intr="12" value="0.00"/>
+ <irqcpu cpu="7" intr="16" value="0.00"/>
+ <irqcpu cpu="7" intr="17" value="0.00"/>
+ <irqcpu cpu="7" intr="18" value="0.00"/>
+ <irqcpu cpu="7" intr="19" value="0.00"/>
+ <irqcpu cpu="7" intr="23" value="0.00"/>
+ <irqcpu cpu="7" intr="32" value="0.00"/>
+ <irqcpu cpu="7" intr="36" value="0.00"/>
+ <irqcpu cpu="7" intr="48" value="0.00"/>
+ <irqcpu cpu="7" intr="49" value="0.00"/>
+ <irqcpu cpu="7" intr="50" value="0.00"/>
+ <irqcpu cpu="7" intr="51" value="0.00"/>
+ <irqcpu cpu="7" intr="52" value="0.00"/>
+ <irqcpu cpu="7" intr="53" value="0.00"/>
+ <irqcpu cpu="7" intr="54" value="0.00"/>
+ <irqcpu cpu="7" intr="55" value="0.00"/>
+ <irqcpu cpu="7" intr="56" value="0.00"/>
+ <irqcpu cpu="7" intr="57" value="0.00"/>
+ <irqcpu cpu="7" intr="58" value="0.00"/>
+ <irqcpu cpu="7" intr="59" value="0.00"/>
+ <irqcpu cpu="7" intr="60" value="0.00"/>
+ <irqcpu cpu="7" intr="61" value="0.00"/>
+ <irqcpu cpu="7" intr="62" value="0.00"/>
+ <irqcpu cpu="7" intr="63" value="0.00"/>
+ <irqcpu cpu="7" intr="64" value="0.00"/>
+ <irqcpu cpu="7" intr="65" value="0.00"/>
+ <irqcpu cpu="7" intr="66" value="0.00"/>
+ <irqcpu cpu="8" intr="0" value="0.00"/>
+ <irqcpu cpu="8" intr="1" value="0.00"/>
+ <irqcpu cpu="8" intr="8" value="0.00"/>
+ <irqcpu cpu="8" intr="9" value="0.00"/>
+ <irqcpu cpu="8" intr="12" value="0.00"/>
+ <irqcpu cpu="8" intr="16" value="0.00"/>
+ <irqcpu cpu="8" intr="17" value="0.00"/>
+ <irqcpu cpu="8" intr="18" value="0.00"/>
+ <irqcpu cpu="8" intr="19" value="0.00"/>
+ <irqcpu cpu="8" intr="23" value="0.00"/>
+ <irqcpu cpu="8" intr="32" value="0.00"/>
+ <irqcpu cpu="8" intr="36" value="0.00"/>
+ <irqcpu cpu="8" intr="48" value="0.00"/>
+ <irqcpu cpu="8" intr="49" value="0.00"/>
+ <irqcpu cpu="8" intr="50" value="0.00"/>
+ <irqcpu cpu="8" intr="51" value="0.00"/>
+ <irqcpu cpu="8" intr="52" value="0.00"/>
+ <irqcpu cpu="8" intr="53" value="0.00"/>
+ <irqcpu cpu="8" intr="54" value="0.00"/>
+ <irqcpu cpu="8" intr="55" value="0.00"/>
+ <irqcpu cpu="8" intr="56" value="0.00"/>
+ <irqcpu cpu="8" intr="57" value="0.00"/>
+ <irqcpu cpu="8" intr="58" value="0.00"/>
+ <irqcpu cpu="8" intr="59" value="0.00"/>
+ <irqcpu cpu="8" intr="60" value="0.00"/>
+ <irqcpu cpu="8" intr="61" value="0.00"/>
+ <irqcpu cpu="8" intr="62" value="0.00"/>
+ <irqcpu cpu="8" intr="63" value="0.00"/>
+ <irqcpu cpu="8" intr="64" value="0.00"/>
+ <irqcpu cpu="8" intr="65" value="0.00"/>
+ <irqcpu cpu="8" intr="66" value="0.00"/>
+ <irqcpu cpu="9" intr="0" value="0.00"/>
+ <irqcpu cpu="9" intr="1" value="0.00"/>
+ <irqcpu cpu="9" intr="8" value="0.00"/>
+ <irqcpu cpu="9" intr="9" value="0.00"/>
+ <irqcpu cpu="9" intr="12" value="0.00"/>
+ <irqcpu cpu="9" intr="16" value="0.00"/>
+ <irqcpu cpu="9" intr="17" value="0.00"/>
+ <irqcpu cpu="9" intr="18" value="0.00"/>
+ <irqcpu cpu="9" intr="19" value="0.00"/>
+ <irqcpu cpu="9" intr="23" value="0.00"/>
+ <irqcpu cpu="9" intr="32" value="0.00"/>
+ <irqcpu cpu="9" intr="36" value="0.00"/>
+ <irqcpu cpu="9" intr="48" value="0.00"/>
+ <irqcpu cpu="9" intr="49" value="0.00"/>
+ <irqcpu cpu="9" intr="50" value="0.00"/>
+ <irqcpu cpu="9" intr="51" value="0.00"/>
+ <irqcpu cpu="9" intr="52" value="0.00"/>
+ <irqcpu cpu="9" intr="53" value="0.00"/>
+ <irqcpu cpu="9" intr="54" value="0.00"/>
+ <irqcpu cpu="9" intr="55" value="0.00"/>
+ <irqcpu cpu="9" intr="56" value="0.00"/>
+ <irqcpu cpu="9" intr="57" value="0.00"/>
+ <irqcpu cpu="9" intr="58" value="0.00"/>
+ <irqcpu cpu="9" intr="59" value="0.00"/>
+ <irqcpu cpu="9" intr="60" value="0.00"/>
+ <irqcpu cpu="9" intr="61" value="0.00"/>
+ <irqcpu cpu="9" intr="62" value="0.00"/>
+ <irqcpu cpu="9" intr="63" value="0.00"/>
+ <irqcpu cpu="9" intr="64" value="0.00"/>
+ <irqcpu cpu="9" intr="65" value="0.00"/>
+ <irqcpu cpu="9" intr="66" value="0.00"/>
+ </int-proc>
+ </interrupts>
+ <swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+ <io per="second">
+ <tps>16.00</tps>
+ <io-reads rtps="0.00" bread="0.00"/>
+ <io-writes wtps="16.00" bwrtn="168.00"/>
+ </io>
+ <serial per="second">
+ <tty line="0" rcvin="0.00" xmtin="0.00" framerr="0.00" prtyerr="0.00" brk="0.00" ovrun="0.00"/>
+ </serial>
+ <network per="second">
+ <net-device iface="lo">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="eth0">
+ <net-dev rxpck="4.00" txpck="3.00" rxbyt="272.00" txbyt="209.00" rxcmp="0.00" txcmp="0.00" rxmcst="1.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="virbr0-nic">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-device iface="tun0">
+ <net-dev rxpck="0.00" txpck="0.00" rxbyt="0.00" txbyt="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00"/>
+ <net-edev rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+ </net-device>
+ <net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+ <net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+ <net-sock totsck="1337" tcpsck="24" udpsck="16" rawsck="0" ip-frag="0"/>
+ </network>
+ <paging per="second" pgpgin="0.00" pgpgout="28.00" fault="13.00" majflt="0.00"/>
+ <memory per="second" unit="kB">
+ <memfree>14043016</memfree>
+ <memused>10492720</memused>
+ <memused-percent>42.77</memused-percent>
+ <swpfree>12337144</swpfree>
+ <swpused>0</swpused>
+ <swpused-percent>0.00</swpused-percent>
+ <swpcad>0</swpcad>
+ <buffers>383920</buffers>
+ <cached>7116232</cached>
+ <frmpg>0.00</frmpg>
+ <bufpg>0.00</bufpg>
+ <campg>0.00</campg>
+ </memory>
+ <kernel per="second">
+ <dentunusd>839706</dentunusd>
+ <file-sz>11840</file-sz>
+ <inode-sz>308480</inode-sz>
+ <super-sz>0</super-sz>
+ <super-sz-percent>0.00</super-sz-percent>
+ <dquot-sz>0</dquot-sz>
+ <dquot-sz-percent>0.00</dquot-sz-percent>
+ <rtsig-sz>0</rtsig-sz>
+ <rtsig-sz-percent>0.00</rtsig-sz-percent>
+ </kernel>
+ <queue runq-sz="0" plist-sz="543" ldavg-1="0.00" ldavg-5="0.00" ldavg-15="0.00"/>
+ </timestamp>
+ </statistics>
+ <restarts>
+ </restarts>
+ </host>
+</sysstat>
diff --git a/qa/sadist/smash-rhel6.xml b/qa/sadist/smash-rhel6.xml
new file mode 100644
index 0000000..d0b1bba
--- /dev/null
+++ b/qa/sadist/smash-rhel6.xml
@@ -0,0 +1,734 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "DTD v2.5 sysstat //EN"
+"http://pagesperso-orange.fr/sebastien.godard/sysstat.dtd">
+<sysstat>
+ <sysdata-version>2.5</sysdata-version>
+ <host nodename="smash">
+ <sysname>Linux</sysname>
+ <release>2.6.32-279.5.2.el6.x86_64</release>
+ <machine>x86_64</machine>
+ <number-of-cpus>8</number-of-cpus>
+ <file-date>2012-09-20</file-date>
+ <statistics>
+ <timestamp date="2012-09-19" time="14:10:01" interval="598">
+ <cpu-load>
+ <cpu number="all" user="1.18" nice="0.00" system="0.56" iowait="0.02" steal="0.00" idle="98.25"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="14:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.22" nice="0.00" system="0.15" iowait="0.01" steal="0.00" idle="99.61"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="14:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.19" nice="0.00" system="0.14" iowait="0.01" steal="0.00" idle="99.66"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="14:40:01" interval="598">
+ <cpu-load>
+ <cpu number="all" user="0.25" nice="0.00" system="0.19" iowait="0.01" steal="0.00" idle="99.55"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="14:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.30" nice="0.00" system="0.23" iowait="0.01" steal="0.00" idle="99.46"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="15:00:01" interval="598">
+ <cpu-load>
+ <cpu number="all" user="0.26" nice="0.00" system="0.20" iowait="0.02" steal="0.00" idle="99.52"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="15:10:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.23" nice="0.00" system="0.16" iowait="0.01" steal="0.00" idle="99.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="15:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.61" nice="0.00" system="0.36" iowait="0.01" steal="0.00" idle="99.02"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="15:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.09" iowait="0.02" steal="0.00" idle="99.75"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="15:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.09" iowait="0.02" steal="0.00" idle="99.74"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="15:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="16:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.16" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.75"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="16:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="16:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="16:30:02" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="16:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="16:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="17:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="17:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.13" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="17:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.08" iowait="0.01" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="17:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.02" system="0.10" iowait="0.03" steal="0.00" idle="99.71"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="17:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="17:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.08" iowait="0.01" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="18:00:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.24" nice="0.00" system="0.14" iowait="0.02" steal="0.00" idle="99.61"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="18:10:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.24" nice="0.00" system="0.11" iowait="0.01" steal="0.00" idle="99.64"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="18:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.17" nice="0.00" system="0.08" iowait="0.01" steal="0.00" idle="99.74"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="18:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.39" nice="0.00" system="0.20" iowait="0.01" steal="0.00" idle="99.39"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="18:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.22" nice="0.00" system="0.11" iowait="0.01" steal="0.00" idle="99.66"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="18:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.16" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="19:00:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.76" nice="0.00" system="0.47" iowait="0.02" steal="0.00" idle="98.75"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="19:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.10" iowait="0.01" steal="0.00" idle="99.74"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="19:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.16" nice="0.00" system="0.10" iowait="0.02" steal="0.00" idle="99.73"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="19:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="19:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="19:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="20:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="99.75"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="20:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="20:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="20:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="20:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="20:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="21:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="99.75"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="21:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.13" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="21:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="21:30:01" interval="598">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="21:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="21:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="22:00:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="99.75"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="22:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="22:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.08" iowait="0.01" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="22:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.08" iowait="0.01" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="22:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.73" nice="0.00" system="0.37" iowait="0.03" steal="0.00" idle="98.87"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="22:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.29" nice="0.00" system="0.18" iowait="0.02" steal="0.00" idle="99.52"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="23:00:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.30" nice="0.00" system="0.19" iowait="0.02" steal="0.00" idle="99.49"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="23:10:01" interval="598">
+ <cpu-load>
+ <cpu number="all" user="0.44" nice="0.00" system="0.25" iowait="0.02" steal="0.00" idle="99.29"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="23:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="1.22" nice="0.00" system="0.48" iowait="0.02" steal="0.00" idle="98.28"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="23:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="2.32" nice="0.00" system="0.83" iowait="0.02" steal="0.00" idle="96.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="23:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.73" nice="0.00" system="0.37" iowait="0.01" steal="0.00" idle="98.88"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-19" time="23:50:01" interval="598">
+ <cpu-load>
+ <cpu number="all" user="0.95" nice="0.00" system="0.45" iowait="0.02" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="00:00:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.36" nice="0.00" system="0.20" iowait="0.02" steal="0.00" idle="99.42"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="00:10:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.33" nice="0.00" system="0.21" iowait="0.02" steal="0.00" idle="99.44"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="00:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="00:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.82"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="00:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="00:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="01:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.82"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="01:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="01:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="01:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="01:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="01:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="02:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.82"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="02:10:02" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="02:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="02:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="02:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.84"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="02:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.05" iowait="0.01" steal="0.00" idle="99.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="03:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.41" nice="0.00" system="0.10" iowait="0.04" steal="0.00" idle="99.45"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="03:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.10" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="03:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="03:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.13" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="03:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.81"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="03:50:02" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="04:00:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.13" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.79"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="04:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="04:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="04:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="04:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="04:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.81"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="05:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.13" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.79"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="05:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="05:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="05:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="05:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.81"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="05:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="06:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.79"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="06:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="06:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.81"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="06:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.12" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.79"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="06:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="06:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.11" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.80"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="07:00:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.81" nice="0.00" system="0.23" iowait="0.02" steal="0.00" idle="98.93"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="07:10:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.09" iowait="0.02" steal="0.00" idle="99.74"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="07:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.81" nice="0.00" system="0.34" iowait="0.02" steal="0.00" idle="98.83"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="07:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="1.46" nice="0.00" system="0.55" iowait="0.03" steal="0.00" idle="97.97"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="07:40:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.75" nice="0.00" system="0.18" iowait="0.02" steal="0.00" idle="99.06"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="07:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.06" iowait="0.02" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="08:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.16" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="08:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="08:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="08:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.06" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="08:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="08:50:02" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.77"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="09:00:01" interval="598">
+ <cpu-load>
+ <cpu number="all" user="0.15" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.76"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="09:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.14" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="99.78"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="09:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="0.50" nice="0.00" system="0.14" iowait="0.01" steal="0.00" idle="99.34"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="09:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="1.52" nice="0.00" system="0.21" iowait="0.03" steal="0.00" idle="98.25"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="09:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.50" nice="0.00" system="0.21" iowait="0.02" steal="0.00" idle="98.26"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="09:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.57" nice="0.00" system="0.20" iowait="0.02" steal="0.00" idle="98.21"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="10:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.51" nice="0.00" system="0.22" iowait="0.02" steal="0.00" idle="98.25"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="10:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.39" nice="0.00" system="0.13" iowait="0.02" steal="0.00" idle="98.46"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="10:20:02" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.09" iowait="0.02" steal="0.00" idle="98.57"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="10:30:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.60"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="10:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.33" nice="0.00" system="0.06" iowait="0.01" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="10:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.33" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="11:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.33" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.58"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="11:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.33" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="11:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="11:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="98.60"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="11:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.60"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="11:50:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.34" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.58"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="12:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.33" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="98.57"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="12:10:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="12:20:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="12:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.08" iowait="0.01" steal="0.00" idle="98.58"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="12:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.01" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="12:50:01" interval="599">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="98.60"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="13:00:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.33" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="98.58"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="13:10:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.32" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="98.59"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="13:20:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.33" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="98.57"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="13:30:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.34" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="98.57"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="13:40:01" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.34" nice="0.00" system="0.07" iowait="0.02" steal="0.00" idle="98.57"/>
+ </cpu-load>
+ </timestamp>
+ <timestamp date="2012-09-20" time="13:50:02" interval="600">
+ <cpu-load>
+ <cpu number="all" user="1.36" nice="0.00" system="0.08" iowait="0.02" steal="0.00" idle="98.54"/>
+ </cpu-load>
+ </timestamp>
+ </statistics>
+ <restarts>
+ </restarts>
+ <comments>
+ </comments>
+ </host>
+</sysstat>
diff --git a/qa/sanity.coverage b/qa/sanity.coverage
new file mode 100644
index 0000000..930872a
--- /dev/null
+++ b/qa/sanity.coverage
@@ -0,0 +1,44 @@
+pmcd 002, 068 (stop/start), 359, 155 (not ready protocol),
+ 246 (stop/start)
+ [and many other tests implicitly]
+pminfo 002, 359, 256, 263, 345, 403, 246
+pmprobe 569, 210, 403
+libpcp 001 (pdu encode/decode), 004 (live contexts), 005 (archive
+ contexts), 007 (optFetch), 010 (pmExtractValue), 024
+ (context juggling), 026 (help text), 027 (scale and units
+ routines), 031 (torture_api), 048 (archive fetch), 074
+ (pmFetch), 077 (timezones), 087 (interpolate mode),
+ 091 (interpolate backwards), 146 (pmNameAll), 249
+ (derived metrics), 256 (derived metrics, torture_pmns),
+ 263 (derived metrics), 299 (pmParseMetricSpec), 574 (pmns
+ in archives)
+libpcp_pmda 201 (cache routines), 210 (dynamic metrics)
+ [and many other tests implicitly]
+libpcp_mmv 646
+libpcp_trace 355, 246
+libpcp_gui 354 (record mode)
+pmie 055, 210, 548 (nomatch_inst)
+pmlogger 034, 085, 234
+pmdumplog 059, 127, 184, 234
+compressed logs 435, 436, 437
+pmlogger_check 280
+pmlogger_daily 338
+pmnewlog 184
+pmlc 107
+pmval 080, 403
+dbpmda 137
+pmstore 015, 246
+pmtrace 246
+newhelp 278
+chkhelp 154
+folios 153 (pmafm/mkaf)
+pmnscomp 112
+pmlogreduce 127
+pmlogextract 178, 234
+pmlogsummary 234
+dynamic pmns 207, 208, 210
+local context 232 (torture_indom), 345 (derived & dynamic metrics)
+pmieconf 1044
+event records 385, 397, 401, 404, 407
+pmimport 369, 371, 372
+perl 241 (PCP::MMV), 416 (PCP::PMDA)
diff --git a/qa/secure/GNUmakefile b/qa/secure/GNUmakefile
new file mode 100644
index 0000000..f353722
--- /dev/null
+++ b/qa/secure/GNUmakefile
@@ -0,0 +1,26 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/secure
+
+CRASHFILES = $(shell echo crash-*)
+QUERYFILES = $(shell echo query-*)
+LEAKFILES = $(shell echo leak-*)
+HANGFILES = $(shell echo hang-*)
+
+PYMODULES = pcppdu.python
+TESTCASES = $(CRASHFILES) $(QUERYFILES) $(LEAKFILES) $(HANGFILES)
+LSRCFILES = $(TESTCASES) $(PYMODULES) GNUmakefile.install
+LDIRT = pcppdu.py pcppdu.pyc pcppdu.pyo
+
+default default_pcp setup: pcppdu.py
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(TESTCASES) $(PYMODULES) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+include $(BUILDRULES)
+
+%.py : %.python
+ $(LN_S) $< $@
diff --git a/qa/secure/GNUmakefile.install b/qa/secure/GNUmakefile.install
new file mode 100644
index 0000000..73adff8
--- /dev/null
+++ b/qa/secure/GNUmakefile.install
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2013 Red Hat.
+#
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+default default_pcp setup: pcppdu.py
+
+install install_pcp:
+
+include $(BUILDRULES)
+
+%.py : %.python
+ $(LN_S) $< $@
diff --git a/qa/secure/crash-cred b/qa/secure/crash-cred
new file mode 100755
index 0000000..2cd73a5
--- /dev/null
+++ b/qa/secure/crash-cred
@@ -0,0 +1,15 @@
+#
+# usage: python crash-cred HOST
+#
+# Connects to pmcd on HOST and sends a crafted PDU_CREDS packet,
+# causing the daemon to crash.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+_, host = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+sock.send(str('\x00\x00\x00\x14\x00\x00p\x0c\x00\x00\x00\x01\x01\x00\x00\x01\x01\x02\x00\x00'))
+sock.close()
diff --git a/qa/secure/crash-fetch b/qa/secure/crash-fetch
new file mode 100755
index 0000000..d1cf2db
--- /dev/null
+++ b/qa/secure/crash-fetch
@@ -0,0 +1,16 @@
+#
+# usage: python crash-fetch HOST
+#
+# Connects to pmcd on HOST and sends a crafted PDU_FETCH packet
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+_, host = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+sock.send(str("\x00\x00\x00\x14\x00\x00p\x0c\x00\x00\x00\x01\x00\x00\x00\x01\x01\x02\x00\x00")
+ +str('\x00\x00\x00\x1c\x00\x00p\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xff\xff\xff'))
+
+sock.close()
diff --git a/qa/secure/crash-instancereq b/qa/secure/crash-instancereq
new file mode 100755
index 0000000..b9ea390
--- /dev/null
+++ b/qa/secure/crash-instancereq
@@ -0,0 +1,18 @@
+#
+# usage: python crash-instancereq HOST
+#
+# Connects to pmcd on HOST and sends a crafted PDU_INSTANCE_REQ
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+_, host = sys.argv
+#sock = socket.create_connection((host, 44321))
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+sock.send(str("\x00\x00\x00\x14\x00\x00p\x0c\x00\x00\x00\x01\x00\x00\x00\x01\x01\x02\x00\x00")
+ + str('\x00\x00\x04\x08\x00\x00p\x06\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff')
+ + str('X') * 1000)
+
+sock.close()
diff --git a/qa/secure/crash-namereq-child b/qa/secure/crash-namereq-child
new file mode 100755
index 0000000..9066626
--- /dev/null
+++ b/qa/secure/crash-namereq-child
@@ -0,0 +1,19 @@
+#
+# usage: python crash-namereq-child HOST
+#
+# Sends a crafted PDU_PMNS_CHILD PDU to HOST.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+_, host = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+sock.send(
+ str("\x00\x00\x00\x14\x00\x00p\x0c\x00\x00\x00\x01\x00\x00\x00\x01\x01\x02\x00\x00")
+ + str('\x00\x00\x10\x18\x00\x00') + str("\x70\x0f") # PDU_PMNS_CHILD
+ + str('\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffXXXX')
+ + str('X') * 0x1000)
+
+sock.close()
diff --git a/qa/secure/crash-namereq-traverse b/qa/secure/crash-namereq-traverse
new file mode 100755
index 0000000..18e6de2
--- /dev/null
+++ b/qa/secure/crash-namereq-traverse
@@ -0,0 +1,19 @@
+#
+# usage: python crash-namereq-traverse HOST
+#
+# Sends a crafted PDU_PMNS_TRAVERSE PDU to HOST.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+_, host = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+sock.send(
+ str("\x00\x00\x00\x14\x00\x00p\x0c\x00\x00\x00\x01\x00\x00\x00\x01\x01\x02\x00\x00")
+ + str('\x00\x00\x10\x18\x00\x00') + str("\x70\x10") # PDU_PMNS_TRAVERSE
+ + str('\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffXXXX')
+ + str('X') * 0x1000)
+
+sock.close()
diff --git a/qa/secure/crash-pmns-names b/qa/secure/crash-pmns-names
new file mode 100755
index 0000000..ebaff17
--- /dev/null
+++ b/qa/secure/crash-pmns-names
@@ -0,0 +1,16 @@
+#
+# usage: python crash-pmns-names HOST
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+_, host = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+sock.send(
+ str("\x00\x00\x00\x14\x00\x00p\x0c\x00\x00\x00\x01\x00\x00\x00\x01\x01\x02\x00\x00")
+ + str("\x00\x00',\x00\x00p\x0e\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00'\x10")
+ + str("X") * 10000)
+
+sock.close()
diff --git a/qa/secure/crash-profile b/qa/secure/crash-profile
new file mode 100755
index 0000000..2a0e5af
--- /dev/null
+++ b/qa/secure/crash-profile
@@ -0,0 +1,22 @@
+#
+# usage: python crash-profile HOST
+#
+# Connects to pmcd on HOST and triggers a crash in __pmDecodeProfile.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+import pcppdu
+_, host = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+pcppdu.client_handshake(sock, from_=1)
+pcppdu.send_pmns_names(sock, from_=1, names=(str("hinv.ncpu"),))
+ids = pcppdu.parse_pmns_ids(pcppdu.read_pdu(sock))
+pmid = ids[1].idlist[0]
+pcppdu.send_desc_req(sock, from_=1, pmid=pmid)
+# print(pcppdu.parse_desc(pcppdu.read_pdu(sock)))
+sock.send(str('\x00\x00\x00(\x00\x00p\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'))
+
+sock.close()
diff --git a/qa/secure/crash-profile-instances b/qa/secure/crash-profile-instances
new file mode 100755
index 0000000..58a989e
--- /dev/null
+++ b/qa/secure/crash-profile-instances
@@ -0,0 +1,22 @@
+#
+# usage: python crash-profile-instances HOST
+#
+# Connects to pmcd on HOST and triggers a crash in __pmDecodeProfile.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+import pcppdu
+_, host = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+pcppdu.client_handshake(sock, from_=1)
+pcppdu.send_pmns_names(sock, from_=1, names=(str("hinv.ncpu"),))
+ids = pcppdu.parse_pmns_ids(pcppdu.read_pdu(sock))
+pmid = ids[1].idlist[0]
+pcppdu.send_desc_req(sock, from_=1, pmid=pmid)
+# print(pcppdu.parse_desc(pcppdu.read_pdu(sock)))
+sock.send(str('\x00\x00\x00(\x00\x00p\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'))
+
+sock.close()
diff --git a/qa/secure/hang-pmcd b/qa/secure/hang-pmcd
new file mode 100755
index 0000000..4084ae4
--- /dev/null
+++ b/qa/secure/hang-pmcd
@@ -0,0 +1,26 @@
+#
+# usage: python hang-pmcd HOST
+#
+# Connects to pmcd on HOST and blocks all further processing.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+import time
+_, host = sys.argv
+while True:
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.connect((host, 44321))
+ sock.send(str("\x00\x00\x00\x14\x00\x00p\x0c\x00\x00\x00\x01\x00\x00\x00\x01\x01\x02\x00\x00"))
+ pkt = str('\x00\x00\xff\xff\x00\x00p\x03\x00\x00\x00\x01')
+ sock.send(pkt)
+ for x in range(0xFFFF - len(pkt)):
+ time.sleep(3)
+ sock.send(str("\x00"))
+ sock.close()
+ except socket.error, e:
+ print "hang-pmcd: socket error:", e
+ time.sleep(1)
+
diff --git a/qa/secure/leak-fetch b/qa/secure/leak-fetch
new file mode 100755
index 0000000..c25e1cc
--- /dev/null
+++ b/qa/secure/leak-fetch
@@ -0,0 +1,19 @@
+#
+# usage: python leak-fetch HOST
+#
+# Connects to pmcd on HOST and sends a crafted PDU_FETCH packet which triggers a memory leak.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+import pcppdu
+_, host, count = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+pcppdu.client_handshake(sock, from_=1)
+iterations = int(count)
+for i in range(iterations):
+ pcppdu.send_fetch(sock, from_=1, ctxnum=1, pmidlist=(1,) * 10000)
+ pcppdu.read_pdu(sock)
+sock.close()
diff --git a/qa/secure/leak-getpdu b/qa/secure/leak-getpdu
new file mode 100755
index 0000000..c7ab417
--- /dev/null
+++ b/qa/secure/leak-getpdu
@@ -0,0 +1,18 @@
+#
+# usage: python leak-getpdu HOST
+#
+# Connects to pmcd on HOST and sends crafted PDUs which triggers a memory leak.
+#
+# Florian Weimer / Red Hat Product Security Team
+#
+import socket
+import sys
+import pcppdu
+_, host, count = sys.argv
+iterations = int(count)
+for i in range(iterations):
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.connect((host, 44321))
+ pcppdu.client_handshake(sock, from_=1)
+ pcppdu.send_pdu(sock, -1, 1, str("X") * 65000)
+ sock.close()
diff --git a/qa/secure/pcppdu.python b/qa/secure/pcppdu.python
new file mode 100644
index 0000000..cb1550d
--- /dev/null
+++ b/qa/secure/pcppdu.python
@@ -0,0 +1,650 @@
+# PCP protocol support
+#
+# Florian Weimer / Red Hat Product Security Team
+import struct
+import collections
+from operator import itemgetter as _itemgetter
+import sys
+
+CVERSION = 1
+UNKNOWN_VERSION = 0
+PDU_VERSION2 = 2
+PDU_VERSION = PDU_VERSION2
+PDU_ERROR = 0x7000
+PDU_RESULT = 0x7001
+PDU_PROFILE = 0x7002
+PDU_FETCH = 0x7003
+PDU_DESC_REQ = 0x7004
+PDU_DESC = 0x7005
+PDU_INSTANCE_REQ = 0x7006
+PDU_INSTANCE = 0x7007
+PDU_TEXT_REQ = 0x7008
+PDU_TEXT = 0x7009
+PDU_CONTROL_REQ = 0x700a
+PDU_CREDS = 0x700c
+PDU_PMNS_IDS = 0x700d
+PDU_PMNS_NAMES = 0x700e
+PDU_PMNS_CHILD = 0x700f
+PDU_PMNS_TRAVERSE = 0x7010
+def read_fully(sock, n):
+ result = str("")
+ while len(result) < n:
+ result += sock.recv(n - len(result))
+ return result
+def read_pdu(sock):
+ "Reads the PDU, removing the length from the header."
+ length = read_fully(sock, 4)
+ length1, = struct.unpack(">i", length)
+ return read_fully(sock, length1 - 4)
+
+# Generated by collections command (not presented in python 2.4
+# Header = collections.namedtuple("Header", "type from_")
+class Header(tuple):
+ 'Header(type, from_)'
+
+ __slots__ = ()
+
+ _fields = ('type', 'from_')
+
+ def __new__(_cls, type, from_):
+ return tuple.__new__(_cls, (type, from_))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new Header object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'Header(type=%r, from_=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'type': t[0], 'from_': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new Header object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('type', 'from_'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ type = property(_itemgetter(0))
+ from_ = property(_itemgetter(1))
+
+# Generated by collections command (not presented in python 2.4
+#ExtendedError = collections.namedtuple("ExtendedError", "code datum")
+class ExtendedError(tuple):
+ 'ExtendedError(code, datum)'
+
+ __slots__ = ()
+
+ _fields = ('code', 'datum')
+
+ def __new__(_cls, code, datum):
+ return tuple.__new__(_cls, (code, datum))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new ExtendedError object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'ExtendedError(code=%r, datum=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'code': t[0], 'datum': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new ExtendedError object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('code', 'datum'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ code = property(_itemgetter(0))
+ datum = property(_itemgetter(1))
+
+
+def parse_error(blob):
+ (typ, from_, code, datum) = struct.unpack(">iiii", blob)
+ return Header(typ, from_), ExtendedError(code, datum)
+# Generated by collections command (not presented in python 2.4
+#PMNSIDs = collections.namedtuple("PmnsIDs", "sts idlist")
+class PMNSIDs(tuple):
+ 'PmnsIDs(sts, idlist)'
+
+ __slots__ = ()
+
+ _fields = ('sts', 'idlist')
+
+ def __new__(_cls, sts, idlist):
+ return tuple.__new__(_cls, (sts, idlist))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new PmnsIDs object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'PmnsIDs(sts=%r, idlist=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'sts': t[0], 'idlist': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new PmnsIDs object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('sts', 'idlist'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ sts = property(_itemgetter(0))
+ idlist = property(_itemgetter(1))
+
+
+def parse_pmns_ids(blob):
+ (typ, from_, sts, elems) = struct.unpack(">iiii", blob[:16])
+ return Header(typ, from_), PMNSIDs(
+ sts, struct.unpack(">" + "I" * elems, blob[16:]))
+# Generated by collections command (not presented in python 2.4
+#Units = collections.namedtuple\
+# ("Units", "scaleCount scaleTime scaleSpace dimCount dimTime dimSpace")
+class Units(tuple):
+ 'Units(scaleCount, scaleTime, scaleSpace, dimCount, dimTime, dimSpace)'
+
+ __slots__ = ()
+
+ _fields = ('scaleCount', 'scaleTime', 'scaleSpace', 'dimCount', 'dimTime', 'dimSpace')
+
+ def __new__(_cls, scaleCount, scaleTime, scaleSpace, dimCount, dimTime, dimSpace):
+ return tuple.__new__(_cls, (scaleCount, scaleTime, scaleSpace, dimCount, dimTime, dimSpace))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new Units object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 6:
+ raise TypeError('Expected 6 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'Units(scaleCount=%r, scaleTime=%r, scaleSpace=%r, dimCount=%r, dimTime=%r, dimSpace=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'scaleCount': t[0], 'scaleTime': t[1], 'scaleSpace': t[2], 'dimCount': t[3], 'dimTime': t[4], 'dimSpace': t[5]}
+
+ def _replace(_self, **kwds):
+ 'Return a new Units object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('scaleCount', 'scaleTime', 'scaleSpace', 'dimCount', 'dimTime', 'dimSpace'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ scaleCount = property(_itemgetter(0))
+ scaleTime = property(_itemgetter(1))
+ scaleSpace = property(_itemgetter(2))
+ dimCount = property(_itemgetter(3))
+ dimTime = property(_itemgetter(4))
+ dimSpace = property(_itemgetter(5))
+
+
+def _split84(b):
+ return (b >> 4) & 15, b & 15
+# Generated by collections command (not presented in python 2.4
+#Desc = collections.namedtuple("Desc", "pmid units")
+class Desc(tuple):
+ 'Desc(pmid, units)'
+
+ __slots__ = ()
+
+ _fields = ('pmid', 'units')
+
+ def __new__(_cls, pmid, units):
+ return tuple.__new__(_cls, (pmid, units))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new Desc object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'Desc(pmid=%r, units=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'pmid': t[0], 'units': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new Desc object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('pmid', 'units'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ pmid = property(_itemgetter(0))
+ units = property(_itemgetter(1))
+
+
+def parse_desc(blob):
+ try:
+ print "len string =", len(blob)
+ print "fmt len =", struct.calcsize(">iiIiIiBBBB")
+ (typ, from_, pmid, typ2, indom, sem, u1, u2, u3, u4) = \
+ struct.unpack(">iiIiIiBBBB", blob)
+ # TODO: check byte order (translated from bitfields)
+ # u1 is padding
+ scaleCount, scaleTime = _split84(u2)
+ scaleSpace, dimCount = _split84(u3)
+ dimTime, dimSpace = _split84(u4)
+ return Header(typ, from_), Desc(pmid, Units(
+ scaleCount, scaleTime, scaleSpace, dimCount, dimTime, dimSpace))
+ except struct.error:
+ sys.stderr.write("test-case-succeeded")
+ sys.exit(200)
+PM_VAL_INSITU = 0
+PM_VAL_DPTR = 1
+PM_VAL_SPTR = 2
+# Generated by collections command (not presented in python 2.4
+#ValueBlock = collections.namedtuple("ValueBlock", "vtype vbuf")
+class ValueBlock(tuple):
+ 'ValueBlock(vtype, vbuf)'
+
+ __slots__ = ()
+
+ _fields = ('vtype', 'vbuf')
+
+ def __new__(_cls, vtype, vbuf):
+ return tuple.__new__(_cls, (vtype, vbuf))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new ValueBlock object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'ValueBlock(vtype=%r, vbuf=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'vtype': t[0], 'vbuf': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new ValueBlock object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('vtype', 'vbuf'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ vtype = property(_itemgetter(0))
+ vbuf = property(_itemgetter(1))
+
+
+# Generated by collections command (not presented in python 2.4
+#Value = collections.namedtuple("Value", "inst value")
+class Value(tuple):
+ 'Value(inst, value)'
+
+ __slots__ = ()
+
+ _fields = ('inst', 'value')
+
+ def __new__(_cls, inst, value):
+ return tuple.__new__(_cls, (inst, value))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new Value object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'Value(inst=%r, value=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'inst': t[0], 'value': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new Value object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('inst', 'value'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ inst = property(_itemgetter(0))
+ value = property(_itemgetter(1))
+
+
+# Generated by collections command (not presented in python 2.4
+#ValueSet = collections.namedtuple("ValueSet", "pmid valfmt values")
+class ValueSet(tuple):
+ 'ValueSet(pmid, valfmt, values)'
+
+ __slots__ = ()
+
+ _fields = ('pmid', 'valfmt', 'values')
+
+ def __new__(_cls, pmid, valfmt, values):
+ return tuple.__new__(_cls, (pmid, valfmt, values))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new ValueSet object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 3:
+ raise TypeError('Expected 3 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'ValueSet(pmid=%r, valfmt=%r, values=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'pmid': t[0], 'valfmt': t[1], 'values': t[2]}
+
+ def _replace(_self, **kwds):
+ 'Return a new ValueSet object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('pmid', 'valfmt', 'values'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ pmid = property(_itemgetter(0))
+ valfmt = property(_itemgetter(1))
+ values = property(_itemgetter(2))
+
+
+# Generated by collections command (not presented in python 2.4
+#Result = collections.namedtuple("Result", "when data")
+class Result(tuple):
+ 'Result(when, data)'
+
+ __slots__ = ()
+
+ _fields = ('when', 'data')
+
+ def __new__(_cls, when, data):
+ return tuple.__new__(_cls, (when, data))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new Result object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'Result(when=%r, data=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'when': t[0], 'data': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new Result object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('when', 'data'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ when = property(_itemgetter(0))
+ data = property(_itemgetter(1))
+
+
+def __fetch_value_block(blob, index):
+ offset = index * 4 - 4
+ header, = struct.unpack(">I", blob[offset : offset + 4])
+ typ = header >> 24
+ # TODO: actually reduce string length by 4?
+ length = header & 0xFFFFFF - 4
+ return ValueBlock(typ, blob[offset + 4 : offset + 4 + length])
+def parse_result(blob):
+ offset = 20
+ typ, from_, sec, usec, numpmid = struct.unpack(">iiiii", blob[:offset])
+ data = []
+ for i in range(numpmid):
+ pmid, numval, valfmt = struct.unpack(
+ ">Iii", blob[offset : offset + 12])
+ offset += 12
+ values = []
+ for j in range(numval):
+ inst, value = struct.unpack(">ii", blob[offset : offset + 8])
+ offset += 8
+ if valfmt == PM_VAL_INSITU:
+ values.append(Value(inst, value))
+ else:
+ values.append(Value(inst, __fetch_value_block(blob, value)))
+ data.append(ValueSet(pmid, valfmt, values))
+ return Result((sec, usec), data)
+def send_pdu(sock, typ, from_, data):
+ "Adds a length/type/from header and sends the data over the socket."
+ header = struct.pack(">iii", len(data) + 12, typ, from_)
+ # print("> " + repr(header + data))
+ sock.send(header + data)
+# Generated by collections command (not presented in python 2.4
+#Cred = collections.namedtuple("Cred", "c_type c_vala c_valb c_valc")
+class Cred(tuple):
+ 'Cred(c_type, c_vala, c_valb, c_valc)'
+
+ __slots__ = ()
+
+ _fields = ('c_type', 'c_vala', 'c_valb', 'c_valc')
+
+ def __new__(_cls, c_type, c_vala, c_valb, c_valc):
+ return tuple.__new__(_cls, (c_type, c_vala, c_valb, c_valc))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new Cred object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 4:
+ raise TypeError('Expected 4 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'Cred(c_type=%r, c_vala=%r, c_valb=%r, c_valc=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'c_type': t[0], 'c_vala': t[1], 'c_valb': t[2], 'c_valc': t[3]}
+
+ def _replace(_self, **kwds):
+ 'Return a new Cred object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('c_type', 'c_vala', 'c_valb', 'c_valc'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ c_type = property(_itemgetter(0))
+ c_vala = property(_itemgetter(1))
+ c_valb = property(_itemgetter(2))
+ c_valc = property(_itemgetter(3))
+
+
+def send_creds(sock, from_, creds):
+ # TODO: check byte order (translated from bitfields
+ send_pdu(sock, PDU_CREDS, from_,
+ struct.pack(">i", len(creds))
+ + str("").join([struct.pack(">BBBB", *c) for c in creds]))
+def __pad_to_4(b):
+ "Adds NUL bytes at the end to make sure that the length is == 0 (mod 4)."
+ return b + (str(""), str("\0\0\0"), str("\0\0"), str("\0e"))[len(b) & 3]
+def send_pmns_names(sock, from_, names, status=False):
+ strlen = sum([len(x) + 1 for x in names])
+ if status:
+ not_implemented()
+ else:
+ send_pdu(sock, PDU_PMNS_NAMES, from_,
+ struct.pack(">iii", strlen, 0, len(names))
+ + str("").join([struct.pack(">I", len(x)) + __pad_to_4(x)
+ for x in names]))
+def send_pmns_child(sock, from_, name, subtype=0):
+ send_pdu(sock, PDU_PMNS_CHILD, from_,
+ struct.pack(">ii", subtype, len(name))
+ + name)
+def send_pmns_traverse(sock, from_, name, subtype=0):
+ send_pdu(sock, PDU_PMNS_TRAVERSE, from_,
+ struct.pack(">ii", subtype, len(name))
+ + name)
+def send_desc_req(sock, from_, pmid):
+ send_pdu(sock, PDU_DESC_REQ, from_, struct.pack(">I", pmid))
+# Generated by collections command (not presented in python 2.4
+#InDomProfile = collections.namedtuple("InDomProfile", "indom state instances")
+class InDomProfile(tuple):
+ 'InDomProfile(indom, state, instances)'
+
+ __slots__ = ()
+
+ _fields = ('indom', 'state', 'instances')
+
+ def __new__(_cls, indom, state, instances):
+ return tuple.__new__(_cls, (indom, state, instances))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new InDomProfile object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 3:
+ raise TypeError('Expected 3 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'InDomProfile(indom=%r, state=%r, instances=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'indom': t[0], 'state': t[1], 'instances': t[2]}
+
+ def _replace(_self, **kwds):
+ 'Return a new InDomProfile object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('indom', 'state', 'instances'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ indom = property(_itemgetter(0))
+ state = property(_itemgetter(1))
+ instances = property(_itemgetter(2))
+
+# Generated by collections command (not presented in python 2.4
+# Profile = collections.namedtuple("Profile", "state profiles")
+class Profile(tuple):
+ 'Profile(state, profiles)'
+
+ __slots__ = ()
+
+ _fields = ('state', 'profiles')
+
+ def __new__(_cls, state, profiles):
+ return tuple.__new__(_cls, (state, profiles))
+
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new Profile object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != 2:
+ raise TypeError('Expected 2 arguments, got %d' % len(result))
+ return result
+
+ def __repr__(self):
+ return 'Profile(state=%r, profiles=%r)' % self
+
+ def _asdict(t):
+ 'Return a new dict which maps field names to their values'
+ return {'state': t[0], 'profiles': t[1]}
+
+ def _replace(_self, **kwds):
+ 'Return a new Profile object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, ('state', 'profiles'), _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %r' % kwds.keys())
+ return result
+
+ def __getnewargs__(self):
+ return tuple(self)
+
+ state = property(_itemgetter(0))
+ profiles = property(_itemgetter(1))
+
+
+
+def send_profile(sock, from_, ctxnum, instprof):
+ send_pdu(sock, PDU_PROFILE, from_,
+ struct.pack(">iiii", ctxnum, instprof.state,
+ len(instprof.profiles), 0)
+ + str("").join([struct.pack(">Iii" + "i" * len(x.instances),
+ x.indom, x.state, len(x.instances),
+ *x.instances)
+ for x in instprof.profiles]))
+def send_fetch(sock, from_, ctxnum, pmidlist, when=(0, 0)):
+ sec, usec = when
+ send_pdu(sock, PDU_FETCH, from_,
+ struct.pack(">iiii" + "i" * len(pmidlist),
+ ctxnum, sec, usec, len(pmidlist),
+ *pmidlist))
+def send_text_req(sock, from_, ident, text):
+ send_pdu(sock, PDU_TEXT_REQ, from_,
+ struct.pack(">ii", ident, len(text))
+ + text)
+def send_instance_req(sock, from_, indom, name, when=(0, 0), inst=-1):
+ sec, usec = when
+ send_pdu(sock, PDU_INSTANCE_REQ, from_,
+ struct.pack(">Iiiii", indom, sec, usec, inst, len(name))
+ + name)
+def client_handshake(sock, from_):
+ header, error = parse_error(read_pdu(sock))
+ send_creds(sock, from_, [Cred(CVERSION, PDU_VERSION, 0, 0)])
diff --git a/qa/secure/query-proc b/qa/secure/query-proc
new file mode 100755
index 0000000..0233548
--- /dev/null
+++ b/qa/secure/query-proc
@@ -0,0 +1,27 @@
+#
+# usage: python query-proc HOST VAR
+#
+# Connects to pmcd on HOST and queries for the VAR performance metric.
+# Particularly interesting are proc.psargs and proc.memory.maps.
+#
+# Florian Weimer / Red Hat Product Security Team
+import socket
+import sys
+import pcppdu
+_, host, var = sys.argv
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.connect((host, 44321))
+pcppdu.client_handshake(sock, from_=1)
+pcppdu.send_pmns_names(sock, from_=1, names=(var.encode("utf-8"),))
+ids = pcppdu.parse_pmns_ids(pcppdu.read_pdu(sock))
+print(ids)
+pmid = ids[1].idlist[0]
+pcppdu.send_desc_req(sock, from_=1, pmid=pmid)
+print(pcppdu.parse_desc(pcppdu.read_pdu(sock)))
+pcppdu.send_profile(sock, from_=1, ctxnum=0, instprof=(pcppdu.Profile(0, (pcppdu.InDomProfile(0, 0, ()),),)))
+pcppdu.send_fetch(sock, from_=1, ctxnum=0, pmidlist=(pmid,))
+blob = pcppdu.read_pdu(sock)
+print(repr(blob))
+for d in pcppdu.parse_result(blob)[1][0].values:
+ print(d)
+sock.close()
diff --git a/qa/setup.051 b/qa/setup.051
new file mode 100755
index 0000000..49fa707
--- /dev/null
+++ b/qa/setup.051
@@ -0,0 +1,633 @@
+#! /bin/sh
+#
+
+. $PCP_DIR/etc/pcp.env
+. ./common.check
+
+# get valid hostnames: $remote_1, $remote_2, etc.
+#
+. ./051.hosts
+
+host=`hostname`
+if [ -z "$host" ]
+then
+ echo "Cannot discover local host name!"
+ exit 1
+fi
+
+ipaddr=`_host_to_ipaddr $host`
+if [ -z "$ipaddr" ]
+then
+ echo "Cannot translate hostname ($host) to an IP address!"
+ exit 1
+fi
+
+rm -rf 051.work
+mkdir 051.work
+cd 051.work
+
+##############################################################################
+# The die.* tests die automatically by themselves.
+
+cat >die.001 <<End-of-File
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+
+die!
+End-of-File
+
+cat >die.002 <<End-of-File
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[ access]
+
+die!
+End-of-File
+
+cat >die.003 <<End-of-File
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[ access ]
+
+die!
+End-of-File
+
+cat >die.004 <<End-of-File
+# Test whitespace in "[access]" token
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[
+# what the &^*%# is this doing here!?
+access
+ ]
+
+die!
+End-of-File
+
+cat >die.005 <<End-of-File
+# Test missing host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow : all;
+
+die!
+End-of-File
+
+cat >die.006 <<End-of-File
+# Test missing comma in host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1 $remote_2: all;
+
+die!
+End-of-File
+
+cat >die.007 <<End-of-File
+# Test extra comma in host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1,: all;
+
+die!
+End-of-File
+
+cat >die.008 <<End-of-File
+# Test missing colon after host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1 all;
+
+die!
+End-of-File
+
+cat >die.009 <<End-of-File
+# Test extra comma and missing colon after host list
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1, all;
+
+die!
+End-of-File
+
+cat >die.010 <<End-of-File
+# Test missing semicolon
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: all
+
+die!
+End-of-File
+
+cat >die.011 <<End-of-File
+# Test statement with lotsa whitespace and comments interspersed.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+# I think
+ allow#that I
+#will never
+ $remote_1
+
+
+
+#see
+ : #a thing as beautiful
+all
+# as
+# the bottom of my in-tray
+
+;
+
+ die here!
+End-of-File
+
+cat >die.012 <<End-of-File
+# Test all operation types.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+
+allow $remote_1 : fetch;
+allow $remote_1 : store;
+allow $remote_1 : all;
+allow $remote_1 : maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.013 <<End-of-File
+# Test all operations in a single permission list.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: fetch, store, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.014 <<End-of-File
+# Test clash of "all" with a specific operation.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: all, fetch;
+
+die!
+End-of-File
+
+cat >die.015 <<End-of-File
+# Test that "all" works with a connection limit.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: all, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.016 <<End-of-File
+# Test that specific operations work with a connection limit.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: fetch, store, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.017 <<End-of-File
+# Test that a connection limit fails in a disallow.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow $remote_1: store, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.018 <<End-of-File
+# Test that a connection limit fails in a disallow with except.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow $remote_1: all except fetch, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.019 <<End-of-File
+# Test that a connection limit is OK in an allow with an except.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: all except store, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.020 <<End-of-File
+# Test that a bogus hostname is detected
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow error...mebourne : fetch;
+
+die!
+End-of-File
+
+cat >die.021 <<End-of-File
+# Test a no such host condition
+#
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow nosuchhost.melbourne.sgi.com : fetch;
+
+die!
+End-of-File
+
+cat >die.022 <<End-of-File
+# Test that a bogus IP address
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.2.3.999 : fetch;
+
+die!
+End-of-File
+
+cat >die.023 <<End-of-File
+# Test bad wildcard detection in IP address
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.*.2 : fetch;
+
+die!
+End-of-File
+
+cat >die.024 <<End-of-File
+# Test embedded wildcard detection in host name
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow *.melbourne : fetch;
+
+die!
+End-of-File
+
+cat >die.025 <<End-of-File
+# Test wildcard detection in textual host name
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow melbourne.* : fetch;
+
+die!
+End-of-File
+
+cat >die.026 <<End-of-File
+# Test range check for IP address components
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.-1.* : fetch;
+allow 192.256.* : fetch;
+
+die!
+End-of-File
+
+cat >die.027 <<End-of-File
+# Test "reinforcing" of permissions
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1 : fetch;
+allow $remote_1 : fetch;
+
+die!
+End-of-File
+
+cat >die.028 <<End-of-File
+# Test contradictory permissions
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1 : fetch;
+disallow $remote_1 : fetch;
+
+die!
+End-of-File
+
+cat >die.029 <<End-of-File
+# Test contradictory permissions with host aliasing (IP and name)
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $host : all;
+disallow $ipaddr : fetch;
+
+die!
+End-of-File
+
+cat >die.030 <<End-of-File
+# Test contradictory permissions with host aliasing (different names)
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1 : all;
+disallow $remote_1 : fetch;
+
+die!
+End-of-File
+
+cat >die.031 <<End-of-File
+# Test mutually exclusive host lists
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1, $remote_2 : all;
+disallow $remote_3, $remote_4 : store;
+
+die!
+End-of-File
+
+cat >die.032 <<End-of-File
+# Test overlapping host lists
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1, $remote_2 : all;
+allow $remote_3, $remote_2 : fetch, store;
+
+die!
+End-of-File
+
+cat >die.033 <<End-of-File
+# Test overlapping host lists with conflict
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1, $remote_4, $remote_2 : all;
+disallow $remote_3, $remote_2, $remote_5 : store;
+
+die!
+End-of-File
+
+cat >die.034 <<End-of-File
+# Test overlapping host lists with conflicting connection counts
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1, $remote_4, $remote_2 : all, maximum 30 connections;
+allow $remote_3, $remote_2, $remote_5 : fetch, store, maximum 10 connections;
+
+die!
+End-of-File
+
+cat >die.035 <<End-of-File
+# Test various levels of wildcarding
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.68.139.105: all;
+allow 192.68.139.*: all, maximum 666 connections;
+allow 192.68.*: all except store, maximum 555 connections;
+allow 192.*: fetch, store, maximum 444 connections;
+allow *: fetch, maximum 333 connections;
+
+die!
+End-of-File
+
+cat >die.036 <<End-of-File
+# Test various levels of wildcarding with several similar setups
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow 192.68.139.105: all;
+allow 192.68.139.*: all, maximum 666 connections;
+allow 192.68.*: all except store, maximum 555 connections;
+allow 192.*: fetch, store, maximum 444 connections;
+allow *: fetch, maximum 333 connections;
+
+allow 193.68.139.105: all;
+allow 193.68.139.*: all, maximum 666 connections;
+allow 193.68.*: all except store, maximum 555 connections;
+allow 193.*: fetch, store, maximum 444 connections;
+
+allow 194.68.139.105: all;
+allow 194.68.139.*: all, maximum 666 connections;
+allow 194.68.*: all except store, maximum 555 connections;
+allow 194.*: fetch, store, maximum 444 connections;
+
+die!
+End-of-File
+
+cat >die.037 <<End-of-File
+# Test reinforcing of disallows
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+disallow $remote_1: fetch;
+disallow $remote_1: store;
+disallow $remote_1: all;
+
+die!
+End-of-File
+
+cat >die.038 <<End-of-File
+# Test detection of multiple conflicting explicit connections limits
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: maximum 5 connections, fetch, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.039 <<End-of-File
+# Test detection of connections limits immediately after "all except"
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: all except maximum 5 connections;
+
+die!
+End-of-File
+
+cat >die.040 <<End-of-File
+# Test unlimited connections access spec.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: unlimited connections;
+
+die!
+End-of-File
+
+cat >die.041 <<End-of-File
+# Test clash of unlimited connections with explicit maximum
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: unlimited connections;
+allow $remote_1: fetch, maximum 666 connections;
+
+die!
+End-of-File
+
+cat >die.042 <<End-of-File
+# Test reinforcing of unlimited connections
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: store, unlimited connections;
+allow $remote_1: fetch, unlimited connections;
+
+die!
+End-of-File
+
+# Note: no quotes around "End-Of-File" or $host and $ipaddr not expanded
+
+cat >die.043 <<End-of-File
+# Test conflicts with localhost aliasing
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow localhost: all;
+disallow $host: fetch;
+disallow $ipaddr : store;
+
+die!
+End-of-File
+
+cat >die.044 <<End-of-File
+# Check that log advisory and log mandatory no longer work
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1 : log advisory;
+allow $remote_1 : log mandatory;
+
+die!
+End-of-File
+
+cat >die.045 <<End-of-File
+# Test invalid and valid operations in a single permission list.
+
+sample 254 socket inet 2077 $PCP_PMDAS_DIR/sample/pmdasample -i 2077
+
+[access]
+allow $remote_1: fetch, store, log advisory, log mandatory, maximum 666 connections;
+
+die!
+End-of-File
+
+##############################################################################
+# The kill.* tests must be killed as they leave pmcd running.
+
+cat >kill.001 <<End-of-File
+# Test various special case tokens and the parser
+
+tricky 128 pipe binary \\
+ cat "whacko name" \\
+ more params x-D x-R x-d 43\\
+21 back\\\\slash "broken\\
+string" \\
+abc:def 1;2;3 zzz "#abc\\"def" "x \\"y\\" z" \\#abc #and a comment\\
+to_end
+End-of-File
+
+#
+cat >filter.kill.001 <<'End-of-File'
+#! /bin/sh
+#
+# Filter log from kill.001
+
+. $PCP_DIR/etc/pcp.env
+
+echo "This is `basename $0` "
+echo
+sed -e '/No such file/s/^cat:/Cannot open/' \
+| tee kill.001.$$ \
+| grep -v "Cannot open" \
+| sed -e 's/^$//' \
+ -e '/^[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/d' \
+ -e '/^Log for pmcd on/s/ on .*/ on .../' \
+ -e '/^Log finished/s/finished .*/finished .../' \
+ -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATE]/' \
+ -e '/pmcd([0-9][0-9]*)/s//pmcd(PID)/' \
+ -e '/pcp\[[0-9][0-9]*]/s//pcp[PID]/' \
+ -e '/^pmcd: PID/s/= .*/= PID/' \
+ -e '/pmcd caught SIG.* from pid=/s/=[0-9][0-9]*/=N/g' \
+| $PCP_AWK_PROG '
+/pipe cmd=/ { $4 = "FD"; $5 = "FD" }
+/ok .* INADDR_ANY/ { $2 = "FD" }
+/ok .*pmcd.socket$/ { next }
+/^tricky/ { for ( i = 1 ; i <= NF ; i++ )
+ if ( i == 3 ) printf "PID " ; else printf "%s ", $i
+ printf "\n"
+ next
+ }
+ { print }
+'
+echo
+echo 'dummy cat agent should have produced "Cannot open" messages:'
+grep "Cannot open" kill.001.$$
+rm kill.001.$$
+End-of-File
+
+chmod u+x filter.kill.001
diff --git a/qa/show-me b/qa/show-me
new file mode 100755
index 0000000..b7d1065
--- /dev/null
+++ b/qa/show-me
@@ -0,0 +1,196 @@
+#!/bin/sh
+#
+# Show me the QA tests that did not pass
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# generic initialization
+iam=show-me
+. ./common.rc
+
+HOST=`hostname`
+QA_HOST=
+QA_USER=
+QA_DIR=
+
+if which gdiff >/dev/null 2>&1
+then
+ DIFF=gdiff
+else
+ if which meld >/dev/null 2>&1
+ then
+ DIFF=meld
+ else
+ if which xxdiff >/dev/null 2>&1
+ then
+ DIFF=xxdiff
+ else
+ DIFF="diff -c"
+ fi
+ fi
+fi
+
+tmp=/tmp/$$
+trap "cd /; rm -rf $tmp; exit" 0 1 2 3 15
+rm -rf $tmp
+mkdir $tmp
+
+not_me=false
+local=true
+keep=false
+while getopts d:h:klu: c
+do
+ case $c in
+ d) QA_DIR=$OPTARG
+ not_me=true
+ ;;
+
+ h) QA_HOST=$OPTARG
+ local=false
+ ;;
+
+ k) keep=true
+ ;;
+
+ l) DIFF="diff -c"
+ ;;
+
+ u) QA_USER=$OPTARG
+ not_me=true
+ ;;
+
+ \?) echo "Usage: show-me [-l] [-k] [-d dir] [-h host] [-u user] [test ...]"
+ exit 2;;
+ esac
+done
+shift `expr $OPTIND - 1`
+
+if [ -z "$QA_DIR" ]
+then
+ if [ -z "$QA_HOST" -o "$QA_HOST" = localhost -o "$QA_HOST" = "`hostname`" ]
+ then
+ if [ -z "$QA_USER" -o "$QA_USER" = "$LOGNAME" ]
+ then
+ # local and really me
+ QA_DIR_DEFAULT=`pwd`
+ else
+ QA_DIR_DEFAULT=`ssh $QA_USER@$QA_HOST "/bin/ls -d isms/pcp[1-9]*/qa" 2>/dev/null | grep '^isms/' | tail -1`
+ fi
+ else
+ QA_DIR_DEFAULT=`ssh $QA_USER@$QA_HOST "/bin/ls -d isms/pcp[1-9]*/qa" 2>/dev/null | grep '^isms/' | tail -1`
+ fi
+ if [ "$QA_DIR_DEFAULT" = "" ]
+ then
+ QA_DIR_DEFAULT=isms/pcp/qa
+ fi
+ QA_DIR="$QA_DIR_DEFAULT"
+fi
+
+if [ $# -eq -0 ]
+then
+ if $local
+ then
+ list="`echo *.out.bad \
+ | tr ' ' '\012' \
+ | sed -e 's/\.out\.bad//' \
+ | LC_COLLATE=POSIX sort -n`"
+ if [ "$list" = '*' ]
+ then
+ echo "No failing tests!"
+ exit
+ fi
+ set - `echo $list`
+ else
+ x=`ssh $QA_USER@$QA_HOST echo $QA_DIR/\[0-9]*.out.bad 2>$tmp.err`
+ if [ -z "$x" ]
+ then
+ if [ -s $tmp.err ]
+ then
+ echo "ssh failed?"
+ cat $tmp.err
+ else
+ echo "No failing tests!"
+ fi
+ exit
+ fi
+ set - `echo "$x" \
+ | tr ' ' '\012' \
+ | sed -e 's/.*\///' -e 's/.out.bad//' \
+ | LC_COLLATE=POSIX sort -n`
+ echo "Failing tests: $*"
+ fi
+fi
+
+unset ROOT TOOLROOT MAKEFLAGS
+quick=true
+check=false
+. ./common
+
+here=`pwd`
+
+for id
+do
+ case "$id"
+ in
+ [0-9])
+ id=00$id
+ ;;
+ [0-9][0-9])
+ id=0$id
+ ;;
+ esac
+
+ if [ "$QA_HOST" != $HOST ]
+ then
+ echo "Fetch files from $QA_USER@$QA_HOST:$QA_DIR ..."
+ rm -f $tmp/$id.out.bad $tmp/$id.out
+ scp $QA_USER@$QA_HOST:$QA_DIR/$id.out.bad $tmp
+ scp $QA_USER@$QA_HOST:$QA_DIR/$id.out $tmp
+ cd $tmp
+ elif $not_me
+ then
+ if [ -d $QA_DIR ]
+ then
+ cd $QA_DIR
+ else
+ echo "$id: No directory: $QA_DIR"
+ exit 1
+ fi
+ fi
+ $PCP_ECHO_PROG $PCP_ECHO_N "$id: ""$PCP_ECHO_C"
+ if [ ! -f $id.out ]
+ then
+ echo "Could not find $id.out in `pwd`"
+ elif [ ! -f $id.out.bad ]
+ then
+ echo "Could not find $id.out.bad in `pwd`"
+ else
+ echo
+ if [ "$DIFF" = xxdiff ]
+ then
+ $DIFF $id.out $id.out.bad >/dev/null 2>&1
+ else
+ $DIFF $id.out $id.out.bad
+ fi
+ fi
+ if $keep
+ then
+ if [ -f $here/$id.out.bad ]
+ then
+ if diff $here/$id.out.bad $id.out.bad >diff.tmp
+ then
+ # same
+ :
+ else
+ echo "Warning: overwriting $id.out.bad ... diffs"
+ cat diff.tmp
+ rm -f $here/$id.out.bad
+ mv $id.out.bad $here
+ fi
+ else
+ mv $id.out.bad $here
+ fi
+ fi
+ cd $here
+done
diff --git a/qa/src/19970807.09.54.0 b/qa/src/19970807.09.54.0
new file mode 100644
index 0000000..1219210
--- /dev/null
+++ b/qa/src/19970807.09.54.0
Binary files differ
diff --git a/qa/src/19970807.09.54.index b/qa/src/19970807.09.54.index
new file mode 100644
index 0000000..3d88a0a
--- /dev/null
+++ b/qa/src/19970807.09.54.index
Binary files differ
diff --git a/qa/src/19970807.09.54.meta b/qa/src/19970807.09.54.meta
new file mode 100644
index 0000000..cb42394
--- /dev/null
+++ b/qa/src/19970807.09.54.meta
Binary files differ
diff --git a/qa/src/19970807.09.59.0 b/qa/src/19970807.09.59.0
new file mode 100644
index 0000000..833d142
--- /dev/null
+++ b/qa/src/19970807.09.59.0
Binary files differ
diff --git a/qa/src/19970807.09.59.index b/qa/src/19970807.09.59.index
new file mode 100644
index 0000000..e44d6ba
--- /dev/null
+++ b/qa/src/19970807.09.59.index
Binary files differ
diff --git a/qa/src/19970807.09.59.meta b/qa/src/19970807.09.59.meta
new file mode 100644
index 0000000..7b13202
--- /dev/null
+++ b/qa/src/19970807.09.59.meta
Binary files differ
diff --git a/qa/src/20041125.0 b/qa/src/20041125.0
new file mode 100644
index 0000000..46675ba
--- /dev/null
+++ b/qa/src/20041125.0
Binary files differ
diff --git a/qa/src/20041125.index b/qa/src/20041125.index
new file mode 100644
index 0000000..bd6018f
--- /dev/null
+++ b/qa/src/20041125.index
Binary files differ
diff --git a/qa/src/20041125.meta b/qa/src/20041125.meta
new file mode 100644
index 0000000..3bcc737
--- /dev/null
+++ b/qa/src/20041125.meta
Binary files differ
diff --git a/qa/src/20101004-trunc.0 b/qa/src/20101004-trunc.0
new file mode 100644
index 0000000..2564f12
--- /dev/null
+++ b/qa/src/20101004-trunc.0
Binary files differ
diff --git a/qa/src/20101004-trunc.index b/qa/src/20101004-trunc.index
new file mode 100644
index 0000000..0ec5a54
--- /dev/null
+++ b/qa/src/20101004-trunc.index
Binary files differ
diff --git a/qa/src/20101004-trunc.meta b/qa/src/20101004-trunc.meta
new file mode 100644
index 0000000..37b35d6
--- /dev/null
+++ b/qa/src/20101004-trunc.meta
Binary files differ
diff --git a/qa/src/20130706.0.bz2 b/qa/src/20130706.0.bz2
new file mode 100644
index 0000000..85f157f
--- /dev/null
+++ b/qa/src/20130706.0.bz2
Binary files differ
diff --git a/qa/src/20130706.index b/qa/src/20130706.index
new file mode 100644
index 0000000..69a5704
--- /dev/null
+++ b/qa/src/20130706.index
Binary files differ
diff --git a/qa/src/20130706.meta b/qa/src/20130706.meta
new file mode 100644
index 0000000..7f57943
--- /dev/null
+++ b/qa/src/20130706.meta
Binary files differ
diff --git a/qa/src/540117-short.0 b/qa/src/540117-short.0
new file mode 100644
index 0000000..ad46b4a
--- /dev/null
+++ b/qa/src/540117-short.0
Binary files differ
diff --git a/qa/src/540117-short.index b/qa/src/540117-short.index
new file mode 100644
index 0000000..a80b59d
--- /dev/null
+++ b/qa/src/540117-short.index
Binary files differ
diff --git a/qa/src/540117-short.meta b/qa/src/540117-short.meta
new file mode 100644
index 0000000..364c655
--- /dev/null
+++ b/qa/src/540117-short.meta
Binary files differ
diff --git a/qa/src/541380.0 b/qa/src/541380.0
new file mode 100644
index 0000000..53c06bb
--- /dev/null
+++ b/qa/src/541380.0
Binary files differ
diff --git a/qa/src/541380.index b/qa/src/541380.index
new file mode 100644
index 0000000..8001574
--- /dev/null
+++ b/qa/src/541380.index
Binary files differ
diff --git a/qa/src/541380.meta b/qa/src/541380.meta
new file mode 100644
index 0000000..52122ff
--- /dev/null
+++ b/qa/src/541380.meta
Binary files differ
diff --git a/qa/src/541380_v2.0 b/qa/src/541380_v2.0
new file mode 100644
index 0000000..21e1f8e
--- /dev/null
+++ b/qa/src/541380_v2.0
Binary files differ
diff --git a/qa/src/541380_v2.index b/qa/src/541380_v2.index
new file mode 100644
index 0000000..eb834b5
--- /dev/null
+++ b/qa/src/541380_v2.index
Binary files differ
diff --git a/qa/src/541380_v2.meta b/qa/src/541380_v2.meta
new file mode 100644
index 0000000..a65b6b5
--- /dev/null
+++ b/qa/src/541380_v2.meta
Binary files differ
diff --git a/qa/src/573184.0 b/qa/src/573184.0
new file mode 100644
index 0000000..1412736
--- /dev/null
+++ b/qa/src/573184.0
Binary files differ
diff --git a/qa/src/573184.index b/qa/src/573184.index
new file mode 100644
index 0000000..b72c46f
--- /dev/null
+++ b/qa/src/573184.index
Binary files differ
diff --git a/qa/src/573184.meta b/qa/src/573184.meta
new file mode 100644
index 0000000..24df027
--- /dev/null
+++ b/qa/src/573184.meta
Binary files differ
diff --git a/qa/src/779246.c b/qa/src/779246.c
new file mode 100644
index 0000000..13752ac
--- /dev/null
+++ b/qa/src/779246.c
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * pv 779246 - check sample pmda returns type on sample.sysinfo
+ */
+
+#include <ctype.h>
+#include <string.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#ifdef HAVE_SYS_SYSINFO_H
+#include <sys/sysinfo.h>
+#endif
+
+#define NUM 1
+
+static int
+dometric(void)
+{
+ int n;
+ pmID pmid;
+ pmDesc desc;
+ pmResult *result;
+ char *namelist[NUM] = { "sample.sysinfo" };
+ pmID pmidlist[NUM] = { 0 };
+
+ if ((n = pmLookupName(NUM, namelist, pmidlist)) < 0) {
+ printf("pmLookupDesc: %s\n", pmErrStr(n));
+ return 1;
+ }
+
+ pmid=pmidlist[0];
+
+ if ((n = pmLookupDesc(pmid, &desc)) < 0) {
+ printf("pmLookupDesc: %s\n", pmErrStr(n));
+ return 1;
+ }
+ __pmPrintDesc(stdout, &desc);
+
+ if ((n = pmFetch(1, &pmid, &result)) < 0)
+ printf("pmFetch: %s\n", pmErrStr(n));
+
+ if (result->numpmid !=1 ) {
+ printf("pmFetch, numpmid == %d (1)\n",
+ result->numpmid);
+ return 1;
+ }
+
+ if (result->vset[0]->numval < 0) {
+ printf("pmFetch, numval: %s\n", pmErrStr(result->vset[0]->numval));
+ return 1;
+ } else if (result->vset[0]->numval != 1) {
+ printf("pmFetch, numval: == %d (1)\n",
+ result->vset[0]->numval);
+ return 1;
+ }
+
+ if (result->vset[0]->valfmt==PM_VAL_INSITU) {
+ printf("sample.sysinfo is in-situ !?\n");
+ return 1;
+ }
+ printf("sample.sysinfo vtype == %d\n",
+ result->vset[0]->vlist[0].value.pval->vtype);
+
+ __pmDumpResult(stdout, result);
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ static char *debug = "[-D N] ";
+ static char *usage = "[-h hostname]";
+
+ __pmSetProgname(pmProgname);
+
+ while ((c = getopt(argc, argv, "D:h:")) != EOF) {
+ switch (c) {
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* Size of struct sysinfo is different on different platforms, so
+ * give a hint how many bytes are expected in the output */
+#ifdef HAVE_SYSINFO
+ printf("+++ Expect %d bytes\n", (int)sizeof(struct sysinfo));
+#else
+ printf("+++ Local struct sysinfo size unknown\n");
+#endif
+ return dometric();
+}
diff --git a/qa/src/951127.23.01.0 b/qa/src/951127.23.01.0
new file mode 100644
index 0000000..1b81a44
--- /dev/null
+++ b/qa/src/951127.23.01.0
Binary files differ
diff --git a/qa/src/951127.23.01.index b/qa/src/951127.23.01.index
new file mode 100644
index 0000000..bd6f34e
--- /dev/null
+++ b/qa/src/951127.23.01.index
Binary files differ
diff --git a/qa/src/951127.23.01.meta b/qa/src/951127.23.01.meta
new file mode 100644
index 0000000..f8f5160
--- /dev/null
+++ b/qa/src/951127.23.01.meta
Binary files differ
diff --git a/qa/src/951127.23.01_v2.0 b/qa/src/951127.23.01_v2.0
new file mode 100644
index 0000000..0721879
--- /dev/null
+++ b/qa/src/951127.23.01_v2.0
Binary files differ
diff --git a/qa/src/951127.23.01_v2.index b/qa/src/951127.23.01_v2.index
new file mode 100644
index 0000000..a305a83
--- /dev/null
+++ b/qa/src/951127.23.01_v2.index
Binary files differ
diff --git a/qa/src/951127.23.01_v2.meta b/qa/src/951127.23.01_v2.meta
new file mode 100644
index 0000000..d34b4a7
--- /dev/null
+++ b/qa/src/951127.23.01_v2.meta
Binary files differ
diff --git a/qa/src/960624.08.17.0 b/qa/src/960624.08.17.0
new file mode 100644
index 0000000..2fc33e6
--- /dev/null
+++ b/qa/src/960624.08.17.0
Binary files differ
diff --git a/qa/src/960624.08.17.index b/qa/src/960624.08.17.index
new file mode 100644
index 0000000..0965614
--- /dev/null
+++ b/qa/src/960624.08.17.index
Binary files differ
diff --git a/qa/src/960624.08.17.meta b/qa/src/960624.08.17.meta
new file mode 100644
index 0000000..635502a
--- /dev/null
+++ b/qa/src/960624.08.17.meta
Binary files differ
diff --git a/qa/src/960624.08.17_v2.0 b/qa/src/960624.08.17_v2.0
new file mode 100644
index 0000000..7866ef7
--- /dev/null
+++ b/qa/src/960624.08.17_v2.0
Binary files differ
diff --git a/qa/src/960624.08.17_v2.index b/qa/src/960624.08.17_v2.index
new file mode 100644
index 0000000..0920904
--- /dev/null
+++ b/qa/src/960624.08.17_v2.index
Binary files differ
diff --git a/qa/src/960624.08.17_v2.meta b/qa/src/960624.08.17_v2.meta
new file mode 100644
index 0000000..648c27c
--- /dev/null
+++ b/qa/src/960624.08.17_v2.meta
Binary files differ
diff --git a/qa/src/GNUlocaldefs b/qa/src/GNUlocaldefs
new file mode 100644
index 0000000..98f85f4
--- /dev/null
+++ b/qa/src/GNUlocaldefs
@@ -0,0 +1,787 @@
+#
+# Copyright (c) 2012-2014 Red Hat.
+# Copyright (c) 2009 Aconex. All Rights Reserved.
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+PMLOGGER = $(PCP_BINADM_DIR)/pmlogger
+PMLOGEXTRACT = $(PCP_BINADM_DIR)/pmlogextract
+
+#DBG = -DPCP_DEBUG -DDEBUG -DMALLOC_AUDIT -g
+DBG = -DPCP_DEBUG -DDEBUG -g
+
+DEBUG = $(DBG)
+
+HAVE_64 = $(shell test `uname -m | sed -e 's/.*64/64/g'` = "64" && echo 1 || echo 0)
+
+SRCARCH = mirage.0 moomba.client.0 \
+ babylon.percpu.0 babylon.percpu_v2.0 \
+ omen.client.0 bozo.client.0 bozo.client_v2.0 \
+ late.0 ok-bigbin.0 ok-mv-bigbin.0 ok-truncbin.0 \
+ babylon.pmview.0 babylon.pmview_v2.0 ok-foo.0 ok-mv-foo.0 \
+ bug.0 bug_v2.0 ace.0 ace_v2.0 bigace.0 bigace_v2.0 \
+ 951127.23.01.0 951127.23.01_v2.0 960624.08.17.0 960624.08.17_v2.0 \
+ rattle.0 mark-bug.0 arch_a.0 arch_b.0 \
+ err_v1.0 changeinst.0 19970807.09.54.0 19970807.09.59.0 \
+ binning.0 wrap.0 573184.0 xbug1.0 pcpcmd.0 markmerge.0 \
+ sample-secs.0 gmt-boring.0 kenj-pc-1.0 kenj-pc-2.0 \
+ reduce-1.0 reduce-2.0 kenj-pc-diskstat.0 snort-disks.0 \
+ vldb-disks.0 moomba.pmkstat.0 fcsw_indom.0 \
+ uwrap.0 20041125.0 ac15.0 conn20070309.0 logsummary-bug.0 \
+ tzchange-10-a.0 tzchange-10-b.0 tzchange-11-a.0 tzchange-11-b.0 \
+ tzchange-12-a.0 tzchange-12-b.0 sample_expr.0 \
+ mirage-1.0 mirage-2.0 eventrec-old.0 eventrec.0 \
+ badlen-0.0 badlen-1.0 badlen-2.0 badlen-3.0 badlen-4.0 \
+ badlen-5.0 badlen-6.0 badlen-7.0 badlen-8.0 badlen-9.0 \
+ badlen-10.0 badlen-11.0 \
+ 540117-short.0 541380.0 541380_v2.0 573184.0 20101004-trunc.0 \
+ bozo.client_v2.meta.bad.1 bozo.client_v2.meta.bad.2 \
+ rewrite.0 proc.0 section-a.0 section-b.0 section-c.0 section-d.0 \
+ interpmark.0 all-irix-6.5.25.0 all-sles9-sp1.0 naslog.0 \
+ multi-vm00.0 multi-vm01.0 multi-vm02.0 multi-vm03.0 pmatop-log.0 \
+ new_mysql.0 new_snmp.0 old_xfs.0 node_archive.0 count-mark.0 \
+ pyapi.0 pcp-free.0 pcp-uptime.0 pcp-numastat-1-node.0 numa.0 \
+ slow.0 bug1057.0
+
+SRCARCHPART = ok-noti-bigbin.0 pmatop-log.folio \
+ 20130706.0.bz2 20130706.index 20130706.meta
+
+MKARCH = foo.0 mv-foo.0 noti-foo.0 bar.0 mv-bar.0 noti-bar.0 \
+ bigbin.0 mv-bigbin.0 noti-bigbin.0 truncbin.0 null.0 \
+ interp.0 mv-interp.0 noti-interp.0 noti-ok-foo.0 gap.0 gap2.0 \
+ dodgey-some.0 dodgey-all.0 dodgey-mixed.0 reduce-gap.0
+
+CFILES = disk_test.c exercise.c context_test.c chkoptfetch.c \
+ xval.c xxx.c chkopenlog.c chkconnect.c t_fetch.c \
+ hp-mib.c agenttimeout.c chkctx2.c pmcdgone.c chkhelp.c \
+ scale.c chktrim.c store.c torture_api.c logcontrol.c xlog.c \
+ hex2nbo.c chknumval.c xarch.c eofarch.c defctx.c chkacc1.c chkacc2.c \
+ chkacc3.c storepast.c pmdashutdown.c exertz.c badpmcdpmid.c \
+ permfetch.c archinst.c pmlcmacro.c whichtimezone.c eol.c \
+ interp0.c interp1.c interp2.c interp3.c interp4.c \
+ pcp_lite_crash.c compare.c mkfiles.c nameall.c nullinst.c \
+ storepdu.c fetchpdu.c badloglabel.c interp_bug2.c interp_bug.c \
+ xmktime.c descreqX2.c recon.c torture_indom.c \
+ fetchrate.c stripmark.c pmnsinarchives.c \
+ endian.c chk_memleak.c chk_metric_types.c mark-bug.c \
+ pmnsunload.c parsemetricspec.c parseinterval.c \
+ pducheck.c pducrash.c pdu-server.c \
+ pmprintf.c pmsocks_objstyle.c numberstr.c \
+ read-bf.c write-bf.c slow_af.c indom.c tztest.c \
+ multifetch.c pmconvscale.c torture-eol.c \
+ crashpmcd.c dumb_pmda.c torture_cache.c wrap_int.c \
+ matchInstanceName.c torture_pmns.c \
+ mmv_genstats.c mmv_instances.c mmv_poke.c mmv_noinit.c mmv_nostats.c \
+ record.c record-setarg.c clientid.c killparent.c grind_ctx.c \
+ pmdacache.c check_import.c unpack.c hrunpack.c aggrstore.c atomstr.c \
+ grind_conv.c getconfig.c err.c torture_logmeta.c keycache.c \
+ keycache2.c pmdaqueue.c drain-server.c template.c anon-sa.c \
+ username.c rtimetest.c getcontexthost.c badpmda.c chkputlogresult.c \
+ churnctx.c
+
+ifeq ($(shell test -f ../localconfig && echo 1), 1)
+include ../localconfig
+else
+ifeq ($(shell cd ..; ( $(MAKE) localconfig >/dev/null && echo 1 )), 1)
+include ../localconfig
+else
+$(error Cannot make qa/localconfig)
+endif
+endif
+
+ifeq ($(shell test $(PCP_VER) -ge 3600 && echo 1), 1)
+CFILES += multithread0.c multithread1.c multithread2.c multithread3.c \
+ multithread4.c multithread5.c multithread6.c multithread7.c \
+ multithread8.c multithread9.c \
+ exerlock.c
+else
+MYFILES += multithread0.c multithread1.c multithread2.c multithread3.c \
+ multithread4.c multithread5.c multithread6.c multithread7.c \
+ multithread8.c multithread9.c \
+ exerlock.c
+LDIRT += multithread0 multithread1 multithread2 multithread3 \
+ multithread4 multithread5 multithread6 multithread7 \
+ multithread8 multithread9 \
+ exerlock
+endif
+
+ifeq ($(shell test $(PCP_VER) -ge 3700 && echo 1), 1)
+CFILES += hashwalk.c
+else
+MYFILES += hashwalk.c
+LDIRT += hashwalk
+endif
+
+ifeq ($(shell test $(PCP_VER) -ge 3800 && echo 1), 1)
+CFILES += parsehostattrs.c parsehostspec.c check_import_name.c
+else
+MYFILES += parsehostattrs.c parsehostspec.c check_import_name.c
+LDIRT += parsehostattrs parsehostspec check_import_name
+endif
+
+ifeq ($(shell test $(PCP_VER) -ge 3802 && echo 1), 1)
+CFILES += chkacc4.c
+else
+MYFILES += chkacc4.c
+LDIRT += chkacc4
+endif
+
+ifeq ($(shell test $(PCP_VER) -ge 3901 && echo 1), 1)
+CFILES += getoptions.c
+else
+MYFILES += getoptions.c
+LDIRT += getoptions
+endif
+
+ifeq ($(shell test $(PCP_VER) -ge 3811 && echo 1), 1)
+CONFIG_INTERP = config2.interp
+else
+CONFIG_INTERP = config1.interp
+endif
+
+ifeq ($(shell test -f /usr/include/pcp/fault.h && echo 1), 1)
+# only make these ones if the fault injection version of libpcp
+# appears to have been installed (assumes PCP >= 3.5), and then
+# only for the setup target (so not in the build)
+#
+XTRATARGETS += check_fault_injection exercise_fault
+endif
+MYFILES += check_fault_injection.c exercise_fault.c
+LDIRT += check_fault_injection exercise_fault
+
+POSIXFILES = \
+ ipc.c proc_test.c context_fd_leak.c arch_maxfd.c torture_trace.c \
+ 779246.c
+
+TRACEFILES = \
+ obs.c tstate.c tabort.c
+
+PERLFILES = \
+ batch_import.perl check_import.perl import_limit_test.perl
+# not installed:
+PLFILES = $(shell echo $(PERLFILES) | sed -e 's/\.perl/.pl/g')
+
+PYTHONFILES = \
+ test_pcp.python test_pmcc.python \
+ test_pmi.python check_import.python \
+ test_mmv.python test_webapi.python \
+ test_pcp_options.python test_pcp_getopts.python \
+ test_pcp_time.python
+# not installed:
+PYFILES = $(shell echo $(PYTHONFILES) | sed -e 's/\.python/.py/g')
+
+ifneq "$(TARGET_OS)" "mingw"
+CFILES += $(POSIXFILES) $(TRACEFILES)
+else
+MYFILES += $(POSIXFILES) $(TRACEFILES)
+endif
+
+MYFILES += $(SRCARCH) \
+ $(patsubst %.0,%.meta,$(SRCARCH)) $(patsubst %.0,%.index,$(SRCARCH)) \
+ ok-mv-bigbin.[1-9] ok-mv-foo.[12] \
+ $(SRCARCHPART) \
+ ok-noti-bigbin.meta err_v1.dump \
+ bigace.pmns \
+ config.bar config.bigbin config.dodgey-all config.dodgey-mixed \
+ config.dodgey-some config.foo config1.interp config2.interp \
+ kenj-pc-2.config reduce.config uwrap.config wrap.config \
+ root_irix root_pmns tiny.pmns sgi.bf versiondefs \
+ simple.csv simple.ods simple-resave.csv simple-resave.xlsx \
+ simple.sxc simple.xls simple.xlsx \
+ iostat iostat-c iostat-d iostat-d-k iostat-d-m iostat-p-ALL \
+ iostat-t iostat-t.ISO iostat-x iostat-z iostat-z-p-ALL \
+ pthread_barrier.h pv.c qa_test.c qa_timezone.c \
+ sa-sysstat-9.0.4 sa-sysstat-9.0.6 sa-sysstat-9.0.6.1 \
+ sa-sysstat-10.0.1 sa-sysstat-10.0.5 sa-sysstat-10.2.0 \
+ permslist
+
+MYSCRIPTS = grind-tools ipcs_clear make.dodgey mkarch-all mkbadlen \
+ mkeventrec mkinterpmark mkmirage mkproc mkrewrite mksample_expr \
+ mksa-sysstat mktzchange show-args mkbig1 fixhosts mkpermslist \
+ memcachestats.pl
+
+PSCRIPTS = $(PERLFILES) $(PYTHONFILES)
+
+CFILES_TARGETS = $(CFILES)
+
+TARGETS = $(subst broken_pmda,,$(basename $(CFILES_TARGETS))) \
+ chkctx2_lite template \
+ fetchrate_lite pv
+
+ifeq ($(HAVE_64), 1)
+TARGETS += pv64
+endif
+
+LCFLAGS = -DHAVE_TRACE
+LLDLIBS = $(PCPLIB) $(LDFLAGS)
+
+ifneq ($(NVIDIAQALIB),)
+LIBTARGET = true
+MYCFILES += nvidia-ml.c
+LCFLAGS += $(NVIDIACFLAGS)
+TARGETS += $(NVIDIAQALIB)
+endif
+
+# libpcp_trace is ready
+TRACELIB = -lpcp_trace $(LLDLIBS)
+
+# all archives, except the ones checked into the source tree,
+# then add executables beyond $(TARGETS)
+#
+LDIRT += *.log domain.h help.pag help.dir \
+ foo.0 foo.index foo.meta \
+ mv-foo.[0-9] mv-foo.index mv-foo.meta \
+ noti-foo.0 noti-foo.meta \
+ bar.0 bar.index bar.meta \
+ big[0-2].[0-2] big[0-2].index big[0-2].meta \
+ mv-bar.[0-9] mv-bar.index mv-bar.meta \
+ noti-bar.0 noti-bar.meta \
+ bigbin.0 bigbin.index bigbin.meta \
+ mv-bigbin.[0-9] mv-bigbin.index mv-bigbin.meta \
+ noti-bigbin.0 noti-bigbin.meta \
+ truncbin.0 truncbin.index truncbin.meta \
+ null.0 null.index null.meta \
+ interp.0 interp.index interp.meta \
+ mv-interp.[0-9] mv-interp.index mv-interp.meta \
+ noti-interp.0 noti-interp.meta \
+ noti-ok-foo.0 noti-ok-foo.meta \
+ gap.0 gap.index gap.meta \
+ gap2.0 gap2.index gap2.meta \
+ dodgey-some.0 dodgey-some.index dodgey-some.meta \
+ dodgey-all.0 dodgey-all.index dodgey-all.meta \
+ dodgey-mixed.0 dodgey-mixed.index dodgey-mixed.meta \
+ reduce-gap.0 reduce-gap.index reduce-gap.meta \
+ chkctx2_lite.c fetchrate_lite.c \
+ localconfig.h gmon.out \
+ $(TARGETS)
+
+.ORDER: torture_api \
+ chkctx2 fetchrate
+
+default default_pcp: \
+ $(CFILES_TARGETS) $(TARGETS) \
+ $(SRCARCH) $(SRCARCHPART) \
+ $(PLFILES) $(PYFILES) \
+ ipcs_clear
+
+setup: default $(MKARCH) $(XTRATARGETS)
+
+$(TARGETS):
+
+include $(BUILDRULES)
+
+# remove just the binaries, not the archives
+#
+clean-exec:
+ rm -f $(TARGETS)
+ rm -f $(OBJECTS)
+ rm -f pv64
+
+# remake just the archives, not the binaries
+#
+clean-arch:
+ rm -f $(MKARCH) $(subst 0,meta,$(MKARCH)) $(subst 0,index,$(MKARCH))
+
+OBJECTS = $(shell echo $(CFILES) | sed -e 's/\.c/.o/g')
+
+# make just the archives, not the binaries
+#
+arch: $(SRCARCH) $(SRCARCHPART) $(MKARCH)
+
+# --- do NOT need libpcp
+#
+
+pause: pause.c
+ $(CCF) $(CDEFS) -o pause pause.c
+
+errmap: errmap.c
+ $(CCF) $(CDEFS) -o errmap errmap.c
+
+cpuload: cpuload.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ cpuload.c
+
+load_o2000: load_o2000.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ load_o2000.c
+
+chain: chain.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ chain.c
+
+syscall: syscall.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ syscall.c
+
+getpagesize: getpagesize.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ getpagesize.c
+
+rdwr: rdwr.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ rdwr.c
+
+spawn: spawn.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ spawn.c
+
+diowr: diowr.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ diowr.c
+
+endian: endian.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ endian.c
+
+pmlcmacro: pmlcmacro.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ pmlcmacro.c
+
+sys5_ipc: sys5_ipc.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ sys5_ipc.c
+
+stripmark: stripmark.c
+ $(CCF) $(CDEFS) -o $@ stripmark.c
+
+anon-sa: anon-sa.c
+ $(CCF) $(CDEFS) -o $@ anon-sa.c
+
+# --- need libpcp
+#
+
+template: template.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ template.c $(LDLIBS)
+
+exercise: exercise.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ exercise.c $(LDLIBS)
+
+chkacc1: chkacc1.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ chkacc1.c $(LDLIBS)
+
+chkacc2: chkacc2.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ chkacc2.c $(LDLIBS)
+
+chkacc3: chkacc3.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ chkacc3.c $(LDLIBS)
+
+ipc: ipc.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ ipc.c $(LDLIBS)
+
+chk_memleak: chk_memleak.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ chk_memleak.c $(LDLIBS)
+
+chknumval: chknumval.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ chknumval.c $(LDLIBS)
+
+logcontrol: logcontrol.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ logcontrol.c $(LDLIBS)
+
+numberstr: numberstr.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ numberstr.c $(LDLIBS)
+
+pmcdgone: pmcdgone.c localconfig.h
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ pmcdgone.c $(LDLIBS)
+
+slow_af: slow_af.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ slow_af.c $(LDLIBS)
+
+mmv_poke: mmv_poke.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ mmv_poke.c $(LDLIBS)
+
+# --- need libpcp but also PM_CONTEXT_LOCAL
+#
+
+fetchrate_lite: fetchrate_lite.c
+ rm -f $@
+ $(CCF) $(CDEFS) -DLITE=1 -o $@ fetchrate_lite.c $(LDLIBS)
+
+fetchrate_lite.c: fetchrate.c
+ rm -f $@
+ ln -s fetchrate.c fetchrate_lite.c
+
+chkctx2_lite: chkctx2_lite.c
+ rm -f $@
+ $(CCF) $(CDEFS) -DLITE=1 -o $@ chkctx2_lite.c $(LDLIBS)
+
+chkctx2_lite.c: chkctx2.c
+ rm -f $@
+ ln -s chkctx2.c chkctx2_lite.c
+
+hp-mib: hp-mib.c
+ rm -f $@
+ $(CCF) $(CDEFS) -DLITE=1 -o $@ hp-mib.c $(LDLIBS)
+
+pcp_lite_crash: pcp_lite_crash.c
+ rm -f $@
+ $(CCF) $(CDEFS) -DLITE=1 -o $@ pcp_lite_crash.c $(LDLIBS)
+
+store: store.c
+ rm -f $@
+ $(CCF) $(CDEFS) -DLITE=1 -o $@ store.c $(LDLIBS)
+
+# --- need libpcp_pmda
+#
+
+domain.h: $(PCP_VAR_DIR)/pmns/stdpmid
+ rm -f $@
+ echo "/*" >domain.h
+ echo " * built from $(PCP_VAR_DIR)/pmns/stdpmid on `date`" >>domain.h
+ echo " */" >>domain.h
+ sed -n -e 's/[ ]*$$//' -e '/define[ ]BROKEN[ ]/s/.*[ ]/#define BROKEN /p' $(PCP_VAR_DIR)/pmns/stdpmid >>domain.h
+ sed -n -e 's/[ ]*$$//' -e '/define[ ]DYNAMIC[ ]/s/.*[ ]/#define DYNAMIC /p' $(PCP_VAR_DIR)/pmns/stdpmid >>domain.h
+
+pmdashutdown: pmdashutdown.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ pmdashutdown.c -lpcp_pmda $(LDLIBS)
+
+dumb_pmda: dumb_pmda.c
+ $(CCF) $(LCDEFS) $(LCOPTS) -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+pmdacache: pmdacache.c
+ $(CCF) $(LCDEFS) $(LCOPTS) -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+pmdaqueue: pmdaqueue.c
+ $(CCF) $(LCDEFS) $(LCOPTS) -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+atomstr: atomstr.c
+ $(CCF) $(LCDEFS) $(LCOPTS) -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+keycache: keycache.c
+ $(CCF) $(LCDEFS) $(LCOPTS) -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+keycache2: keycache2.c
+ $(CCF) $(LCDEFS) $(LCOPTS) -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+badpmda: badpmda.c
+ $(CCF) $(LCDEFS) $(LCOPTS) -o $@ $@.c -lpcp_pmda $(LDLIBS)
+
+# --- need libpcp_gui
+#
+
+record: record.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_gui $(LDLIBS)
+
+record-setarg: record-setarg.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_gui $(LDLIBS)
+
+# --- need libpcp_mmv
+#
+mmv_genstats: mmv_genstats.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_mmv $(LDLIBS)
+
+mmv_instances: mmv_instances.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_mmv $(LDLIBS)
+
+mmv_noinit: mmv_noinit.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_mmv $(LDLIBS)
+
+mmv_nostats: mmv_nostats.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_mmv $(LDLIBS)
+
+pducheck: pducheck.o
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ pducheck.o $(TRACELIB) -lpcp_pmda $(LDLIBS)
+
+pducrash: pducrash.o
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ pducrash.o $(TRACELIB) $(LDLIBS)
+
+pdu-server: pdu-server.o
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ pdu-server.o $(TRACELIB) $(LIBSOL) $(LDLIBS)
+
+torture_cache: torture_cache.o
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ torture_cache.o -lpcp_pmda $(LDLIBS)
+
+obs: obs.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ obs.c $(TRACELIB)
+
+torture_trace: torture_trace.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ torture_trace.c $(LIB_FOR_PTHREADS) $(TRACELIB)
+
+tstate: tstate.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ tstate.c $(TRACELIB)
+
+tabort: tabort.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ tabort.c $(TRACELIB)
+
+# --- need libpcp_import
+#
+
+check_import: check_import.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_import $(LDLIBS)
+
+check_import_name: check_import_name.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c -lpcp_import $(LDLIBS)
+
+# --- need libpcp_fault
+#
+
+check_fault_injection: check_fault_injection.c
+ rm -f $@
+ $(CCF) $(CDEFS) -DPM_FAULT_INJECTION=1 -o $@ $@.c -lpcp_fault -lpcp -lpcp_pmda
+
+exercise_fault: exercise_fault.c
+ rm -f $@
+ $(CCF) $(CDEFS) -DPM_FAULT_INJECTION=1 -o $@ $@.c -lpcp_fault -lpcp -lpcp_pmda
+
+# --- need lib for pthreads
+#
+
+multithread0: multithread0.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread1: multithread1.c
+ rm -f $@
+ifeq "$(TARGET_OS)" "darwin"
+ @# see comments in multithread1.c to explain this crock
+ $(CCF) $(CDEFS) -Ddarwin_hack=1 -o $@ $@.c $(LIB_FOR_PTHREADS) -framework CoreFoundation $(LDLIBS)
+else
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+endif
+
+multithread2: multithread2.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread3: multithread3.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread4: multithread4.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread5: multithread5.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread6: multithread6.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread7: multithread7.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread8: multithread8.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+multithread9: multithread9.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+exerlock: exerlock.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ $@.c $(LIB_FOR_PTHREADS) $(LDLIBS)
+
+# --- binary format dependencies
+#
+
+ifeq ($(HAVE_64), 1)
+pv64: pv.c
+ $(CCF) $(CDEFS) -o $@ pv.c $(LDLIBS)
+endif
+
+# -- archives
+#
+
+foo.0: config.foo
+ rm -f foo.index foo.meta foo.0
+ $(PMLOGGER) -c config.foo -s 8 foo
+
+mv-foo.0: config.foo
+ rm -f mv-foo.index mv-foo.meta mv-foo.?
+ $(PMLOGGER) -c config.foo -s 8 -v 3 mv-foo
+
+noti-foo.0: foo.0
+ cp foo.0 noti-foo.0
+ cp foo.meta noti-foo.meta
+
+noti-ok-foo.0: ok-foo.0
+ cp ok-foo.0 noti-ok-foo.0
+ cp ok-foo.meta noti-ok-foo.meta
+
+bar.0: config.bar
+ rm -f bar.index bar.meta bar.0
+ $(PMLOGGER) -c config.bar -s 70 bar
+
+mv-bar.0: config.bar
+ rm -f mv-bar.index mv-bar.meta mv-bar.?
+ $(PMLOGGER) -c config.bar -s 70 -v 20 mv-bar
+
+noti-bar.0: bar.0
+ cp bar.0 noti-bar.0
+ cp bar.meta noti-bar.meta
+
+mirage.0:
+ rm -f mirage.index mirage.meta mirage.0
+ $(PMLOGGER) -c config.mirage -s 20 mirage
+
+dodgey-some.0: make.dodgey config.dodgey-some
+ ./make.dodgey some 50
+
+dodgey-all.0: make.dodgey config.dodgey-all
+ ./make.dodgey all 50
+
+dodgey-mixed.0: make.dodgey config.dodgey-mixed
+ ./make.dodgey mixed 150
+
+bigbin.0: config.bigbin
+ rm -f bigbin.index bigbin.meta bigbin.0
+ sync
+ sleep 3
+ $(PMLOGGER) -c config.bigbin -s 1000 bigbin
+
+mv-bigbin.0: config.bigbin
+ rm -f mv-bigbin.index mv-bigbin.meta mv-bigbin.?
+ sync
+ sleep 3
+ $(PMLOGGER) -c config.bigbin -s 1000 -v 101 mv-bigbin
+
+noti-bigbin.0: bigbin.0
+ cp bigbin.0 noti-bigbin.0
+ cp bigbin.meta noti-bigbin.meta
+
+interp.0: $(CONFIG_INTERP)
+ rm -f interp.index interp.meta interp.0
+ $(PMLOGGER) -c $(CONFIG_INTERP) -s 30 interp
+
+mv-interp.0: $(CONFIG_INTERP)
+ rm -f mv-interp.index mv-interp.meta mv-interp.?
+ $(PMLOGGER) -c $(CONFIG_INTERP) -s 30 -v 10 mv-interp
+
+noti-interp.0: interp.0
+ cp interp.0 noti-interp.0
+ cp interp.meta noti-interp.meta
+
+truncbin.0: bigbin.0
+ rm -f truncbin.index truncbin.meta truncbin.0
+ ln bigbin.meta truncbin.meta
+ ln bigbin.index truncbin.index
+ dd ibs=1024 count=200 if=bigbin.0 of=truncbin.0
+
+# just the label record
+null.0: foo.0
+ rm -f null.index null.meta null.0
+ ln foo.meta null.meta
+ ln foo.index null.index
+ dd ibs=132 count=1 if=foo.0 of=null.0
+
+# 4 secs, 3 sec gap, 4 secs, 3 sec gap, 4 secs
+# and indom changes ... checked in, this is the recipe that was
+# used
+#
+changeinst.0:
+ rm -rf tmp
+ mkdir tmp
+ echo 'log mandatory on once { hinv.ncpu }' >tmp/A.config
+ echo 'log mandatory on 1sec {' >>tmp/A.config
+ echo ' sample.seconds,hinv.ncpu,sample.bin["bin-100","bin-200","bin-400"]' >>tmp/A.config
+ echo ' sample.drift' >>tmp/A.config
+ echo ' irix.network.interface.total.packets["lo0","ec0"]' >>tmp/A.config
+ echo '}' >>tmp/A.config
+ echo 'log mandatory on once { sample.bin["bin-500"] }' >tmp/B.config
+ echo 'log mandatory on 1sec {' >>tmp/B.config
+ echo ' sample.seconds,sample.milliseconds,sample.bin["bin-100","bin-300","bin-400"]' >>tmp/B.config
+ echo '}' >>tmp/B.config
+ echo 'log mandatory on once { hinv.ncpu }' >tmp/C.config
+ echo 'log mandatory on 1sec {' >>tmp/C.config
+ echo ' sample.drift' >>tmp/C.config
+ echo ' sample.seconds,sample.bin["bin-200","bin-300","bin-400","bin-500"]' >>tmp/C.config
+ echo ' irix.network.interface.total.packets["ec2","lo0"]' >>tmp/C.config
+ echo '}' >>tmp/C.config
+ $(PMLOGGER) -s 5 -c tmp/A.config tmp/A
+ sleep 3
+ $(PMLOGGER) -s 5 -c tmp/B.config tmp/B
+ sleep 3
+ $(PMLOGGER) -s 5 -c tmp/C.config tmp/C
+ rm -f changeinst.index changeinst.meta changeinst.0
+ $(PMLOGEXTRACT) tmp/A tmp/B tmp/C changeinst
+ rm -rf tmp
+
+# gap: 10 sec data, 5 sec gap, 10 sec data
+# gap2: 10 sec data, 5 sec gap, 10 sec data, 5 sec gap, 10 sec data
+# sample.bin instances change across gaps
+#
+gap.0 gap2.0:
+ rm -rf tmp
+ mkdir tmp
+ echo 'log mandatory on 1sec { pmcd.pdu_in,pmcd.numagents,hinv.ncpu,sample.bin["bin-100","bin-200","bin-400"] }' >tmp/A.config
+ echo 'log mandatory on 1sec { pmcd.pdu_in,pmcd.numagents,hinv.ncpu,sample.bin["bin-100","bin-300","bin-400"] }' >tmp/B.config
+ echo 'log mandatory on 1sec { pmcd.pdu_in,pmcd.numagents,hinv.ncpu,sample.bin["bin-100","bin-400"] }' >tmp/C.config
+ $(PMLOGGER) -s 10 -c tmp/A.config tmp/A
+ sleep 5
+ $(PMLOGGER) -s 10 -c tmp/B.config tmp/B
+ sleep 5
+ $(PMLOGGER) -s 10 -c tmp/C.config tmp/C
+ rm -f gap.index gap.meta gap.0
+ $(PMLOGEXTRACT) tmp/A tmp/B gap
+ rm -f gap2.index gap2.meta gap2.0
+ $(PMLOGEXTRACT) tmp/A tmp/B tmp/C gap2
+ rm -rf tmp
+
+reduce-gap.0: reduce-1.0 reduce-2.0
+ rm -f reduce-gap.*
+ $(PMLOGEXTRACT) reduce-1 reduce-2 reduce-gap
+
+torture_indom: torture_indom.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ torture_indom.c $(LDLIBS)
+
+torture_pmns: torture_pmns.c
+ rm -f $@
+ $(CCF) $(CDEFS) -o $@ torture_pmns.c $(LDLIBS)
+
+# --- miscellaneous
+#
+qa_timezone.$(DSOSUFFIX): qa_timezone.o
+ $(LD) -shared -o $@ -nostdlib $<
+
+ifneq ($(NVIDIAQALIB),)
+$(NVIDIAQALIB): nvidia-ml.o
+ $(CC) $(LDFLAGS) $(_SHAREDOPTS) -o $@ $<
+endif
+
+arch_maxfd.o: localconfig.h
+scale.o: localconfig.h
+
+bozo:
+ @echo TARGETS=$(TARGETS)
+
+# Suffix rules to support transition for perl and python scripts
+%.py : %.python
+ $(LN_S) $< $@
+
+%.pl : %.perl
+ $(LN_S) $< $@
+
diff --git a/qa/src/GNUmakefile b/qa/src/GNUmakefile
new file mode 100644
index 0000000..c1b715f
--- /dev/null
+++ b/qa/src/GNUmakefile
@@ -0,0 +1,35 @@
+#!gmake
+#
+# Copyright (c) 2012,2014 Red Hat.
+# Copyright (c) 2009 Aconex. All Rights Reserved.
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/src
+
+LLDFLAGS = -L$(TOPDIR)/src/libpcp_trace/$(LIBPCP_ABIDIR) \
+ -L$(TOPDIR)/src/libpcp_mmv/$(LIBPCP_ABIDIR) \
+ -L$(TOPDIR)/src/libpcp_gui/$(LIBPCP_ABIDIR) \
+ -L$(TOPDIR)/src/libpcp_import/$(LIBPCP_ABIDIR)
+
+NVIDIACFLAGS = -I$(TOPDIR)/src/pmdas/nvidia
+NVIDIAQALIB = libnvidia-ml.$(DSOSUFFIX)
+
+LSRCFILES = $(MYFILES) $(MYSCRIPTS) $(PSCRIPTS) GNUmakefile.install GNUlocaldefs
+LDIRT += localconfig.h
+
+include GNUlocaldefs
+
+localconfig.h: ../localconfig
+ @awk -F= '{ print "#define",$$1,$$2 }' < ../localconfig > localconfig.h
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CFILES) $(MYFILES) $(PSCRIPTS) $(TESTDIR)
+ $(INSTALL) -m 755 $(MYSCRIPTS) $(TESTDIR)
+ $(INSTALL) -m 755 $(NVIDIAQALIB) $(TESTDIR)/$(NVIDIAQALIB)
+ $(INSTALL) -m 644 GNUlocaldefs $(TESTDIR)/GNUlocaldefs
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
diff --git a/qa/src/GNUmakefile.install b/qa/src/GNUmakefile.install
new file mode 100644
index 0000000..1e41df4
--- /dev/null
+++ b/qa/src/GNUmakefile.install
@@ -0,0 +1,43 @@
+#!gmake
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2009 Aconex. All Rights Reserved.
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+ifdef PCP_CONF
+include $(PCP_CONF)
+else
+include $(PCP_DIR)/etc/pcp.conf
+endif
+PATH = $(shell . $(PCP_DIR)/etc/pcp.env; echo $$PATH)
+include $(PCP_INC_DIR)/builddefs
+
+# remove -Lpath and -Ipath options from builddefs CFLAGS value
+#
+PCP_LIBS =
+TMP := $(CFLAGS:-I%=)
+ifdef PCP_DIR
+# put -Ipath and -Lpath back but use paths for run-time environment
+#
+CFLAGS = $(TMP) -I$(PCP_INC_DIR)/..
+LDFLAGS = -L$(PCP_LIB_DIR)
+else
+CFLAGS = $(TMP)
+endif
+
+ifeq ($(shell test -f ../localconfig && echo 1), 1)
+include ../localconfig
+else
+# Warning: ../localconfig does not exist, assuming PCP 3.0
+PCP_VER=3000
+endif
+LDIRT += localconfig.h
+
+include GNUlocaldefs
+
+localconfig.h:
+ @cd .. && ./mk.localconfig
+ @awk -F= '{ print "#define",$$1,$$2 }' < ../localconfig > localconfig.h
+
+install install_pcp:
diff --git a/qa/src/ac15.0 b/qa/src/ac15.0
new file mode 100644
index 0000000..e73e4c6
--- /dev/null
+++ b/qa/src/ac15.0
Binary files differ
diff --git a/qa/src/ac15.index b/qa/src/ac15.index
new file mode 100644
index 0000000..82fe81c
--- /dev/null
+++ b/qa/src/ac15.index
Binary files differ
diff --git a/qa/src/ac15.meta b/qa/src/ac15.meta
new file mode 100644
index 0000000..a64c0f4
--- /dev/null
+++ b/qa/src/ac15.meta
Binary files differ
diff --git a/qa/src/ace.0 b/qa/src/ace.0
new file mode 100644
index 0000000..c66a917
--- /dev/null
+++ b/qa/src/ace.0
Binary files differ
diff --git a/qa/src/ace.index b/qa/src/ace.index
new file mode 100644
index 0000000..9370506
--- /dev/null
+++ b/qa/src/ace.index
Binary files differ
diff --git a/qa/src/ace.meta b/qa/src/ace.meta
new file mode 100644
index 0000000..bb73f28
--- /dev/null
+++ b/qa/src/ace.meta
Binary files differ
diff --git a/qa/src/ace_v2.0 b/qa/src/ace_v2.0
new file mode 100644
index 0000000..6d33f60
--- /dev/null
+++ b/qa/src/ace_v2.0
Binary files differ
diff --git a/qa/src/ace_v2.index b/qa/src/ace_v2.index
new file mode 100644
index 0000000..fc818b8
--- /dev/null
+++ b/qa/src/ace_v2.index
Binary files differ
diff --git a/qa/src/ace_v2.meta b/qa/src/ace_v2.meta
new file mode 100644
index 0000000..5b52391
--- /dev/null
+++ b/qa/src/ace_v2.meta
Binary files differ
diff --git a/qa/src/agenttimeout.c b/qa/src/agenttimeout.c
new file mode 100644
index 0000000..dbcd3ba
--- /dev/null
+++ b/qa/src/agenttimeout.c
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <sys/types.h>
+#include <time.h>
+#include <stdio.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int c;
+ int timeout;
+ int domain;
+ char *endPtr;
+ time_t tBegin, tEnd;
+ char *name;
+ pmID timeoutPmid;
+ pmResult *result;
+ pmID pmid;
+ int sts;
+ unsigned pmcdTimeout;
+ unsigned oldTimeout;
+ pmValueSet *vsp;
+ __pmID_int *pip;
+ int tElapsed;
+ int tMax;
+ int errflag = 0;
+
+ __pmSetProgname(pmProgname);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ argc -= optind-1;
+ argv += optind-1;
+
+ if (errflag || argc != 3) {
+ fprintf(stderr, "Usage: agenttimeout domain timeout\n");
+ exit(1);
+ }
+
+ domain = strtol(argv[1], &endPtr, 0);
+ if (*endPtr != '\0' || domain < 0 || domain >= 255) {
+ fprintf(stderr, "domain '%s' is not a valid pmID domain identifier\n", argv[1]);
+ exit(1);
+ }
+
+ timeout = strtol(argv[2], &endPtr, 0);
+ if (*endPtr != '\0' || timeout < 0) {
+ fprintf(stderr, "timeout '%s' is not valid\n", argv[2]);
+ exit(1);
+ }
+
+ printf("Agent timeout test, domain = %d, timeout = %d\n", domain, timeout);
+ if ((sts = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext(..., \"localhost\"): %s\n",
+ pmErrStr(sts));
+ exit(1);
+ }
+
+ name = "pmcd.control.timeout";
+ if ((sts = pmLookupName(1, &name, &timeoutPmid)) < 0) {
+ fprintf(stderr, "pmLookupName(%s): %s\n", name, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* fetch pmcd.control.timeout and make sure the result is OK */
+ if ((sts = pmFetch(1, &timeoutPmid, &result)) < 0) {
+ fprintf(stderr, "pmFetch(pmcd.control.timeout): %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if (result->numpmid != 1) {
+ fprintf(stderr, "pmFetch(pmcd.control.timeout): %d values fetched!\n", result->numpmid);
+ exit(1);
+ }
+ vsp = result->vset[0];
+ if (vsp->pmid != timeoutPmid || vsp->numval != 1) {
+ fprintf(stderr, "pmFetch(pmcd.control.timeout): bad pmID or numval in result\n");
+ exit(1);
+ }
+ oldTimeout = vsp->vlist[0].value.lval;
+
+ /* Now store the new value then fetch it back to check */
+ vsp->vlist[0].value.lval = timeout;
+ if ((sts = pmStore(result)) < 0) {
+ fprintf(stderr, "pmStore(pmcd.control.timeout): %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetch(1, &timeoutPmid, &result)) < 0) {
+ fprintf(stderr, "#2 pmFetch(pmcd.control.timeout): %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if (result->numpmid != 1) {
+ fprintf(stderr, "#2 pmFetch(pmcd.control.timeout): %d values fetched!\n", result->numpmid);
+ exit(1);
+ }
+ vsp = result->vset[0];
+ if (vsp->pmid != timeoutPmid || vsp->numval != 1) {
+ fprintf(stderr, "#2 pmFetch(pmcd.control.timeout): bad pmID or numval in result\n");
+ exit(1);
+ }
+ if (vsp->vlist[0].value.lval != timeout) {
+ fprintf(stderr, "pmcd timeout update failed, old = %d, new = %d, returned = %d\n",
+ oldTimeout, timeout, vsp->vlist[0].value.lval);
+ exit(1);
+ }
+ pmcdTimeout = vsp->vlist[0].value.lval;
+ pmFreeResult(result);
+ printf(" timeout is now %d seconds\n", pmcdTimeout);
+
+ pip = (__pmID_int *)&pmid;
+ pip->domain = domain;
+ pip->cluster = 0;
+ pip->item = 0;
+ tBegin = time((time_t *)0);
+ if ((sts = pmFetch(1, &pmid, &result)) < 0) {
+ fprintf(stderr, "fetch error = %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ vsp = result->vset[0];
+ if (vsp->numval != PM_ERR_TIMEOUT)
+ fprintf(stderr, "Timeout fetch didn't time out\n");
+ pmFreeResult(result);
+ tEnd = time((time_t *)0);
+#ifdef DESPERATE
+ printf(" %d seconds for fetch\n", tEnd - tBegin);
+#endif
+ tElapsed = tEnd - tBegin;
+
+ /* The way pmcd timeouts work, the time before an agent is timed-out
+ * varies between the timeout and 2 * timeout. It's actually even more
+ * complicated to calculate the maximum timeout interval if the timeout is
+ * changed, since the timeout sproc continually reschedules itself
+ * asynchronously. There are two extrema:
+ * . If the (old) timeout had just gone off and has been requeued for
+ * the old interval just prior to the change being made.
+ * . If the old timeout is just about to go off but the change gets
+ * made first
+ */
+ if (pmcdTimeout <= oldTimeout)
+ tMax = oldTimeout + pmcdTimeout;
+ else
+ tMax = 2 * pmcdTimeout;
+
+ if (tElapsed < pmcdTimeout)
+ fprintf(stderr, "Fetch timed out prematurely: elapsed = %d\n", tElapsed);
+ else if (tElapsed > tMax + 2) /* Allow 2 second's delay in processing */
+ fprintf(stderr, "Fetch took too long to time out: %d\n", tElapsed);
+ exit(0);
+}
diff --git a/qa/src/aggrstore.c b/qa/src/aggrstore.c
new file mode 100644
index 0000000..a45dc80
--- /dev/null
+++ b/qa/src/aggrstore.c
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+ *
+ * Store a string value into an aggregate metric
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int type = PM_CONTEXT_HOST;
+ int c;
+ int sts;
+ int errflag = 0;
+ char *host = "localhost";
+ static char *usage = "[-D N] [-h hostname] metric stringvalue";
+ int len;
+ int n;
+ char *namelist[1];
+ pmID pmidlist[1];
+ pmResult *res;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc-2) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(type, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ namelist[0] = argv[optind];
+ n = pmLookupName(1, namelist, pmidlist);
+ if (n < 0 || pmidlist[0] == PM_ID_NULL) {
+ printf("pmLookupName: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ if ((n = pmFetch(1, pmidlist, &res)) < 0) {
+ printf("pmFetch: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ /*
+ * expecting one value and a pmValueBlock with a type
+ * of PM_TYPE_AGGREGATE
+ */
+ if (res->vset[0]->numval != 1) {
+ printf("Expecting numval 1, found %d\n", res->vset[0]->numval);
+ __pmDumpResult(stdout, res);
+ exit(1);
+ }
+ if (res->vset[0]->valfmt == PM_VAL_INSITU) {
+ printf("Not expecing PM_VAL_INSITU\n");
+ __pmDumpResult(stdout, res);
+ exit(1);
+ }
+ if (res->vset[0]->vlist[0].value.pval->vtype != PM_TYPE_AGGREGATE) {
+ printf("Not expecing type %s\n", pmTypeStr(res->vset[0]->vlist[0].value.pval->vtype));
+ __pmDumpResult(stdout, res);
+ exit(1);
+ }
+ printf("%s old value: ", namelist[0]);
+ pmPrintValue(stdout, res->vset[0]->valfmt, res->vset[0]->vlist[0].value.pval->vtype, &res->vset[0]->vlist[0], 0);
+
+ /*
+ * old value is probably from a pinned PDU buffer ... don't free
+ * and accept small mem leak here
+ */
+ len = strlen(argv[optind+1]);
+ res->vset[0]->vlist[0].value.pval = (pmValueBlock *)malloc(len + PM_VAL_HDR_SIZE);
+
+ res->vset[0]->vlist[0].value.pval->vtype = PM_TYPE_AGGREGATE;
+ res->vset[0]->vlist[0].value.pval->vlen = len + PM_VAL_HDR_SIZE;
+ memcpy(res->vset[0]->vlist[0].value.pval->vbuf, argv[optind+1], len);
+
+ if ((n = pmStore(res)) < 0) {
+ printf("pmStore: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ pmFreeResult(res);
+
+ if ((n = pmFetch(1, pmidlist, &res)) < 0) {
+ printf("pmFetch again: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ printf(" new value: ");
+ pmPrintValue(stdout, res->vset[0]->valfmt, res->vset[0]->vlist[0].value.pval->vtype, &res->vset[0]->vlist[0], 0);
+ putchar('\n');
+
+ pmFreeResult(res);
+
+ exit(0);
+}
diff --git a/qa/src/all-irix-6.5.25.0 b/qa/src/all-irix-6.5.25.0
new file mode 100644
index 0000000..e5a0d5e
--- /dev/null
+++ b/qa/src/all-irix-6.5.25.0
Binary files differ
diff --git a/qa/src/all-irix-6.5.25.index b/qa/src/all-irix-6.5.25.index
new file mode 100644
index 0000000..4412251
--- /dev/null
+++ b/qa/src/all-irix-6.5.25.index
Binary files differ
diff --git a/qa/src/all-irix-6.5.25.meta b/qa/src/all-irix-6.5.25.meta
new file mode 100644
index 0000000..78c0bf6
--- /dev/null
+++ b/qa/src/all-irix-6.5.25.meta
Binary files differ
diff --git a/qa/src/all-sles9-sp1.0 b/qa/src/all-sles9-sp1.0
new file mode 100644
index 0000000..ed3d3f7
--- /dev/null
+++ b/qa/src/all-sles9-sp1.0
Binary files differ
diff --git a/qa/src/all-sles9-sp1.index b/qa/src/all-sles9-sp1.index
new file mode 100644
index 0000000..45f5b99
--- /dev/null
+++ b/qa/src/all-sles9-sp1.index
Binary files differ
diff --git a/qa/src/all-sles9-sp1.meta b/qa/src/all-sles9-sp1.meta
new file mode 100644
index 0000000..2f73a66
--- /dev/null
+++ b/qa/src/all-sles9-sp1.meta
Binary files differ
diff --git a/qa/src/anon-sa.c b/qa/src/anon-sa.c
new file mode 100644
index 0000000..2d5672e
--- /dev/null
+++ b/qa/src/anon-sa.c
@@ -0,0 +1,111 @@
+/*
+ * Anonymise binary sa data files: rewrite sa files
+ * from users that are suitable for sharing/qa'ing.
+ *
+ * When sniffing out starting offsets of hostnames,
+ * something like this command can prove handy:
+ * dd if=rhel5-sa20.bin bs=1 skip=109 count=100
+ */
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#define SA_UTSNAME_LEN 65
+
+long
+seek_magic_and_reposition_for_hostname(int fd)
+{
+ int i;
+ unsigned short sa_magic;
+
+ struct magic {
+ unsigned short magic_offset;
+
+ /* check magic - not endian neutral in sa ... :| */
+ unsigned short numeric;
+ unsigned short swabbed;
+
+ /* fortunately, all same length so far (65 bytes) */
+ unsigned long utsname_offset;
+ } magic[] = {
+ { 0, 0xd596, 0xd596, 89 }, /* sysstat-9.x & -10.x */
+ { 40, 0x216e, 0x6e21, 113 }, /* sysstat-8.x */
+ { 36, 0x2169, 0x6921, 109 }, /* sysstat-7.x */
+ };
+
+ for (i = 0; i < sizeof(magic) / sizeof(struct magic); i++) {
+ if ((lseek(fd, magic[i].magic_offset, SEEK_SET)) < 0) {
+ perror("lseek magic");
+ continue;
+ }
+ if (read(fd, &sa_magic, sizeof(sa_magic)) < 0) {
+ perror("read magic");
+ continue;
+ }
+ if (sa_magic == magic[i].numeric || sa_magic == magic[i].swabbed) {
+ if ((lseek(fd, magic[i].utsname_offset, SEEK_SET)) < 0) {
+ perror("hostname lseek");
+ return -1;
+ }
+ return magic[i].utsname_offset; /* all good */
+ }
+ }
+ printf(" non-sa data file - cannot find any sa magic - ignored\n");
+ return -1;
+}
+
+int main(int argc, char **argv)
+{
+ int count, fixit = 0, updates = 0;
+
+ for (count = 1; count < argc; count++) {
+ char hostname[SA_UTSNAME_LEN] = { 0 };
+ char *file = argv[count];
+ int fd, bytes, length;
+ long offset;
+
+ if (strcmp(file, "-f") == 0) {
+ fixit = 1;
+ continue;
+ }
+ printf("Filename: %s\n", file);
+ if ((fd = open(file, O_RDWR)) < 0) {
+ perror("open");
+ continue;
+ }
+ if ((offset = seek_magic_and_reposition_for_hostname(fd)) < 0) {
+ close(fd);
+ continue;
+ }
+ if ((bytes = read(fd, hostname, sizeof(hostname))) < 0) {
+ perror("read");
+ close(fd);
+ continue;
+ }
+ hostname[sizeof(hostname)-1] = '\0';
+ length = strlen(hostname);
+ printf(" hostname: %s (%d bytes)\n", hostname, length);
+
+ if (fixit) {
+ memset(hostname, 0, length); // clear old name
+ strcpy(hostname, "pcp.qa.org"); // reset it
+ if ((lseek(fd, offset, SEEK_SET)) < 0) {
+ perror("lseek2");
+ close(fd);
+ continue;
+ }
+ if (write(fd, hostname, length) < 0) {
+ perror("write");
+ close(fd);
+ continue;
+ }
+ updates++;
+ }
+ close(fd);
+ }
+ printf("%d files scanned, %d files updated\n", count-1-fixit, updates);
+ return 0;
+}
diff --git a/qa/src/arch_a.0 b/qa/src/arch_a.0
new file mode 100644
index 0000000..ad55205
--- /dev/null
+++ b/qa/src/arch_a.0
Binary files differ
diff --git a/qa/src/arch_a.index b/qa/src/arch_a.index
new file mode 100644
index 0000000..eb71ea7
--- /dev/null
+++ b/qa/src/arch_a.index
Binary files differ
diff --git a/qa/src/arch_a.meta b/qa/src/arch_a.meta
new file mode 100644
index 0000000..a4406e3
--- /dev/null
+++ b/qa/src/arch_a.meta
Binary files differ
diff --git a/qa/src/arch_b.0 b/qa/src/arch_b.0
new file mode 100644
index 0000000..3264214
--- /dev/null
+++ b/qa/src/arch_b.0
Binary files differ
diff --git a/qa/src/arch_b.index b/qa/src/arch_b.index
new file mode 100644
index 0000000..731e084
--- /dev/null
+++ b/qa/src/arch_b.index
Binary files differ
diff --git a/qa/src/arch_b.meta b/qa/src/arch_b.meta
new file mode 100644
index 0000000..6a7a5d0
--- /dev/null
+++ b/qa/src/arch_b.meta
Binary files differ
diff --git a/qa/src/arch_maxfd.c b/qa/src/arch_maxfd.c
new file mode 100644
index 0000000..16bc2da
--- /dev/null
+++ b/qa/src/arch_maxfd.c
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * Exercise pmNewContext() for archives close to the NOFILE max fd limit.
+ * For incident: 504616
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <strings.h>
+#include <errno.h>
+#include <sys/resource.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#include "localconfig.h"
+
+#if PCP_VER < 2200
+#define PRINTF_P_PFX ""
+#endif
+
+static char *sfx[] = { "0", "index", "meta" };
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int i;
+ int j;
+ int max_ctx;
+ int max_nofile;
+ int numopen = 0; /* pander to gcc */
+ int ctx = -1; /* pander to gcc */
+ int last_ctx;
+ char buf[100];
+ char lbuf[100];
+ struct rlimit top;
+ char *start = NULL;
+ char *end;
+
+ __pmSetProgname(pmProgname);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ sts = getrlimit(RLIMIT_NOFILE, &top);
+
+ for (max_nofile = 30; max_nofile > 20; max_nofile--) {
+ top.rlim_cur = max_nofile;
+ sts = setrlimit(RLIMIT_NOFILE, &top);
+ if (sts < 0) {
+ fprintf(stderr, "setrlimit(NOFILE=%d) failed: %s\n", max_nofile, strerror(errno));
+ exit(1);
+ }
+ sts = dup(0);
+ if (sts < 0) {
+ fprintf(stderr, "dup(0) failed: %s\n", strerror(errno));
+ exit(1);
+ }
+ max_ctx = (max_nofile + 2 - sts) / 3;
+ close(sts);
+
+ printf("max fd: %d max ctx#: %d\n", max_nofile, max_ctx);
+ last_ctx = -1;
+
+ for (i = 0; i <= max_ctx; i++) {
+
+ for (j = 0; j < 3; j++) {
+ sprintf(lbuf, "qa-tmp-%d.%s", i, sfx[j]);
+ sprintf(buf, "%s.%s", argv[optind], sfx[j]);
+ sts = link(buf, lbuf);
+ if (sts < 0) {
+ fprintf(stderr, "link %s -> %s failed: %s\n",
+ lbuf, buf, strerror(errno));
+ break;
+ }
+ }
+
+ sprintf(lbuf, "qa-tmp-%d", i);
+ ctx = pmNewContext(PM_CONTEXT_ARCHIVE, lbuf);
+
+ for (j = 0; j < 3; j++) {
+ sprintf(lbuf, "qa-tmp-%d.%s", i, sfx[j]);
+ sts = unlink(lbuf);
+ if (sts < 0) {
+ fprintf(stderr, "unlink %s failed: %s\n",
+ lbuf, strerror(errno));
+ break;
+ }
+ }
+
+ if (ctx < 0) {
+ printf("pmNewContext(): %s\n", pmErrStr(ctx));
+ if (i != max_ctx && i != max_ctx-1)
+ printf("Error: failure after ctx# %d, expected after %d or %d\n", last_ctx, max_ctx, max_ctx-1);
+ break;
+ }
+ else
+ numopen++;
+ last_ctx = ctx;
+ }
+
+ if (ctx >= 0)
+ printf("Error: pmNewContext() did not fail?\n");
+
+ for (i = 0; i <= last_ctx; i++)
+ pmDestroyContext(i);
+
+ if (start == NULL) {
+ start = sbrk(0);
+ numopen = 0;
+ }
+ }
+
+ end = sbrk(0);
+
+ if (end - start > 16*1024) {
+ printf("Memory leak? after first pass, %ld bytes per archive open-close\n",
+ (long)((end - start) / numopen));
+ printf("start: " PRINTF_P_PFX "%p end: " PRINTF_P_PFX "%p diff: %ld numopen: %d\n", start, end,
+ (long)(end - start), numopen);
+ }
+
+ return 0;
+}
diff --git a/qa/src/archinst.c b/qa/src/archinst.c
new file mode 100644
index 0000000..4b5c501
--- /dev/null
+++ b/qa/src/archinst.c
@@ -0,0 +1,292 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+dometric(char *name)
+{
+ int i;
+ pmID pmidlist[] = { PM_ID_NULL };
+ pmDesc desc;
+ int sts;
+ char *iname;
+ int *ilist;
+ char **nlist;
+
+ if ((sts = pmLookupName(1, &name, pmidlist)) < 0)
+ return sts;
+
+ if ((sts = pmLookupDesc(pmidlist[0], &desc)) < 0)
+ return sts;
+
+ for (i = 0; i < 2; i++) {
+ iname = "no match";
+ printf("pm*InDom: inst=%d", i);
+ if ((sts = pmNameInDom(desc.indom, i, &iname)) < 0)
+ printf(" %s\n", pmErrStr(sts));
+ else {
+ printf(" iname=%s reverse lookup:", iname);
+ if ((sts = pmLookupInDom(desc.indom, iname)) < 0)
+ printf(" %s\n", pmErrStr(sts));
+ else
+ printf(" inst=%d\n", sts);
+ }
+ iname = "no match";
+ printf("pm*InDomArchive: inst=%d", i);
+ if ((sts = pmNameInDomArchive(desc.indom, i, &iname)) < 0)
+ printf(" %s\n", pmErrStr(sts));
+ else {
+ printf(" iname=%s reverse lookup:", iname);
+ if ((sts = pmLookupInDomArchive(desc.indom, iname)) < 0)
+ printf(" %s\n", pmErrStr(sts));
+ else
+ printf(" inst=%d\n", sts);
+ }
+ }
+
+ if ((sts = pmGetInDom(desc.indom, &ilist, &nlist)) < 0)
+ printf("pmGetInDom: %s\n", pmErrStr(sts));
+ else {
+ printf("pmGetInDom:\n");
+ for (i = 0; i < sts; i++) {
+ printf(" [%d] %s\n", ilist[i], nlist[i]);
+ }
+ free(ilist);
+ free(nlist);
+ }
+
+ if ((sts = pmGetInDomArchive(desc.indom, &ilist, &nlist)) < 0)
+ printf("pmGetInDomArchive: %s\n", pmErrStr(sts));
+ else {
+ printf("pmGetInDomArchive:\n");
+ for (i = 0; i < sts; i++) {
+ printf(" [%d] %s\n", ilist[i], nlist[i]);
+ }
+ free(ilist);
+ free(nlist);
+ }
+ return sts;
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int force = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ char *configfile = (char *)0;
+ char *logfile = (char *)0;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = (char *)0; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ int samples = -1;
+ double delta = 1.0;
+ char *endnum;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:c:D:fh:l:n:s:t:VzZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != (char *)0) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'f': /* force */
+ force++;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != (char *)0) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a or -h option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -c configfile file to load configuration from\n\
+ -D debug standard PCP debug flag\n\
+ -f force .. \n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n\
+ -V verbose/diagnostic output\n\
+ -z set reporting timezone to local time for host from -a or -h\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != (char *)0) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if (namespace != PM_NS_DEFAULT) {
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != (char *)0) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+ else
+ tzh = pmNewContextZone();
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("%s:\n", argv[optind]);
+ sts = dometric(argv[optind]);
+ if (sts < 0)
+ printf("Error: %s\n", pmErrStr(sts));
+ optind++;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/atomstr.c b/qa/src/atomstr.c
new file mode 100644
index 0000000..0373e88
--- /dev/null
+++ b/qa/src/atomstr.c
@@ -0,0 +1,135 @@
+
+/*
+ * Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+ *
+ * Make pmAtomStr jump through hoops
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ static char *usage = "[-D N]";
+ pmAtomValue atom;
+ char aggr[] = {
+ '\00', '\01', '\02', '\03', '\04', '\05', '\06', '\07',
+ '\10', '\11', '\12', '\13', '\14', '\15', '\16', '\17'
+ };
+ int hdl;
+ struct timeval stamp = { 123, 456 };
+ struct timespec hrstamp = { 123456, 78901234 };
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ atom.l = -42;
+ printf("%d -> %s\n", atom.l, pmAtomStr(&atom, PM_TYPE_32));
+
+ atom.ul = 0x80000000;
+ printf("%u -> %s\n", atom.ul, pmAtomStr(&atom, PM_TYPE_U32));
+
+ atom.ll = -1234567890123LL;
+ printf("%lld -> %s\n", (long long)atom.ll, pmAtomStr(&atom, PM_TYPE_64));
+
+ atom.ull = 0x8000000000000000LL;
+ printf("%llu -> %s\n", (unsigned long long)atom.ull, pmAtomStr(&atom, PM_TYPE_U64));
+
+ atom.f = 123.456;
+ printf("%.3f -> %s\n", atom.f, pmAtomStr(&atom, PM_TYPE_FLOAT));
+
+ atom.d = 0.123456789;
+ printf("%.9f -> %s\n", atom.d, pmAtomStr(&atom, PM_TYPE_DOUBLE));
+
+ atom.cp = "mary had a little lamb";
+ printf("%s-> %s\n", atom.cp, pmAtomStr(&atom, PM_TYPE_STRING));
+ atom.cp = NULL;
+ printf("%s-> %s\n", atom.cp, pmAtomStr(&atom, PM_TYPE_STRING));
+ /* length = 37 */
+ atom.cp = "abcdefghijklmnopqrstuvwxyz0123456789X";
+ printf("%s -> %s\n", atom.cp, pmAtomStr(&atom, PM_TYPE_STRING));
+ /* length = 39 */
+ atom.cp = "abcdefghijklmnopqrstuvwxyz0123456789XYZ";
+ printf("%s -> %s\n", atom.cp, pmAtomStr(&atom, PM_TYPE_STRING));
+
+ hdl = pmdaEventNewArray();
+ atom.vbp = (pmValueBlock *)pmdaEventGetAddr(hdl);
+ printf("??? -> %s\n", pmAtomStr(&atom, PM_TYPE_EVENT));
+ pmdaEventAddRecord(hdl, &stamp, 0);
+ atom.l = -42;
+ pmdaEventAddParam(hdl, PM_ID_NULL, PM_TYPE_32, &atom);
+ atom.vbp = (pmValueBlock *)pmdaEventGetAddr(hdl);
+ printf("??? -> %s\n", pmAtomStr(&atom, PM_TYPE_EVENT));
+ pmdaEventAddRecord(hdl, &stamp, 0);
+ atom.cp = "hullo world";
+ pmdaEventAddParam(hdl, PM_ID_NULL, PM_TYPE_STRING, &atom);
+ atom.vbp = (pmValueBlock *)pmdaEventGetAddr(hdl);
+ printf("??? -> %s\n", pmAtomStr(&atom, PM_TYPE_EVENT));
+
+ hdl = pmdaEventNewHighResArray();
+ atom.vbp = (pmValueBlock *)pmdaEventGetAddr(hdl);
+ printf("??? -> %s\n", pmAtomStr(&atom, PM_TYPE_HIGHRES_EVENT));
+ pmdaEventAddHighResRecord(hdl, &hrstamp, 0);
+ atom.l = -42;
+ pmdaEventAddParam(hdl, PM_ID_NULL, PM_TYPE_32, &atom);
+ atom.vbp = (pmValueBlock *)pmdaEventGetAddr(hdl);
+ printf("??? -> %s\n", pmAtomStr(&atom, PM_TYPE_HIGHRES_EVENT));
+ pmdaEventAddHighResRecord(hdl, &hrstamp, 0);
+ atom.cp = "hullo world";
+ pmdaEventAddParam(hdl, PM_ID_NULL, PM_TYPE_STRING, &atom);
+ atom.vbp = (pmValueBlock *)pmdaEventGetAddr(hdl);
+ printf("??? -> %s\n", pmAtomStr(&atom, PM_TYPE_HIGHRES_EVENT));
+
+ atom.vbp = (pmValueBlock *)malloc(PM_VAL_HDR_SIZE + sizeof(aggr));
+ atom.vbp->vlen = PM_VAL_HDR_SIZE + sizeof(aggr);
+ atom.vbp->vtype = PM_TYPE_AGGREGATE_STATIC;
+ memcpy(atom.vbp->vbuf, (void *)aggr, sizeof(aggr));
+ printf("??? -> %s\n", pmAtomStr(&atom, PM_TYPE_AGGREGATE_STATIC));
+ atom.vbp->vtype = PM_TYPE_AGGREGATE;
+ for (atom.vbp->vlen = PM_VAL_HDR_SIZE; atom.vbp->vlen <= PM_VAL_HDR_SIZE + sizeof(aggr); atom.vbp->vlen += 2) {
+ printf("??? [len=%d] -> %s\n", atom.vbp->vlen - PM_VAL_HDR_SIZE, pmAtomStr(&atom, PM_TYPE_AGGREGATE));
+ }
+ free(atom.vbp);
+ atom.vbp = NULL;
+ printf("NULL -> %s\n", pmAtomStr(&atom, PM_TYPE_AGGREGATE));
+
+ printf("\nAnd now some error cases ...\n");
+ printf("bad type -> %s\n", pmAtomStr(&atom, 123));
+ printf("no support type -> %s\n", pmAtomStr(&atom, PM_TYPE_NOSUPPORT));
+ printf("unknown type -> %s\n", pmAtomStr(&atom, PM_TYPE_UNKNOWN));
+
+ exit(0);
+}
diff --git a/qa/src/babylon.percpu.0 b/qa/src/babylon.percpu.0
new file mode 100644
index 0000000..bd4901c
--- /dev/null
+++ b/qa/src/babylon.percpu.0
Binary files differ
diff --git a/qa/src/babylon.percpu.index b/qa/src/babylon.percpu.index
new file mode 100644
index 0000000..7b51589
--- /dev/null
+++ b/qa/src/babylon.percpu.index
Binary files differ
diff --git a/qa/src/babylon.percpu.meta b/qa/src/babylon.percpu.meta
new file mode 100644
index 0000000..085dc58
--- /dev/null
+++ b/qa/src/babylon.percpu.meta
Binary files differ
diff --git a/qa/src/babylon.percpu_v2.0 b/qa/src/babylon.percpu_v2.0
new file mode 100644
index 0000000..a721e55
--- /dev/null
+++ b/qa/src/babylon.percpu_v2.0
Binary files differ
diff --git a/qa/src/babylon.percpu_v2.index b/qa/src/babylon.percpu_v2.index
new file mode 100644
index 0000000..5d86a1b
--- /dev/null
+++ b/qa/src/babylon.percpu_v2.index
Binary files differ
diff --git a/qa/src/babylon.percpu_v2.meta b/qa/src/babylon.percpu_v2.meta
new file mode 100644
index 0000000..2eed638
--- /dev/null
+++ b/qa/src/babylon.percpu_v2.meta
Binary files differ
diff --git a/qa/src/babylon.pmview.0 b/qa/src/babylon.pmview.0
new file mode 100644
index 0000000..7f0c1fe
--- /dev/null
+++ b/qa/src/babylon.pmview.0
Binary files differ
diff --git a/qa/src/babylon.pmview.index b/qa/src/babylon.pmview.index
new file mode 100644
index 0000000..2ebca57
--- /dev/null
+++ b/qa/src/babylon.pmview.index
Binary files differ
diff --git a/qa/src/babylon.pmview.meta b/qa/src/babylon.pmview.meta
new file mode 100644
index 0000000..38504c7
--- /dev/null
+++ b/qa/src/babylon.pmview.meta
Binary files differ
diff --git a/qa/src/babylon.pmview_v2.0 b/qa/src/babylon.pmview_v2.0
new file mode 100644
index 0000000..58e07c1
--- /dev/null
+++ b/qa/src/babylon.pmview_v2.0
Binary files differ
diff --git a/qa/src/babylon.pmview_v2.index b/qa/src/babylon.pmview_v2.index
new file mode 100644
index 0000000..7565899
--- /dev/null
+++ b/qa/src/babylon.pmview_v2.index
Binary files differ
diff --git a/qa/src/babylon.pmview_v2.meta b/qa/src/babylon.pmview_v2.meta
new file mode 100644
index 0000000..4479349
--- /dev/null
+++ b/qa/src/babylon.pmview_v2.meta
Binary files differ
diff --git a/qa/src/badlen-0.0 b/qa/src/badlen-0.0
new file mode 100644
index 0000000..e6b6894
--- /dev/null
+++ b/qa/src/badlen-0.0
Binary files differ
diff --git a/qa/src/badlen-0.index b/qa/src/badlen-0.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-0.index
Binary files differ
diff --git a/qa/src/badlen-0.meta b/qa/src/badlen-0.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-0.meta
Binary files differ
diff --git a/qa/src/badlen-1.0 b/qa/src/badlen-1.0
new file mode 100644
index 0000000..60dc4d5
--- /dev/null
+++ b/qa/src/badlen-1.0
Binary files differ
diff --git a/qa/src/badlen-1.index b/qa/src/badlen-1.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-1.index
Binary files differ
diff --git a/qa/src/badlen-1.meta b/qa/src/badlen-1.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-1.meta
Binary files differ
diff --git a/qa/src/badlen-10.0 b/qa/src/badlen-10.0
new file mode 100644
index 0000000..4f514d1
--- /dev/null
+++ b/qa/src/badlen-10.0
Binary files differ
diff --git a/qa/src/badlen-10.index b/qa/src/badlen-10.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-10.index
Binary files differ
diff --git a/qa/src/badlen-10.meta b/qa/src/badlen-10.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-10.meta
Binary files differ
diff --git a/qa/src/badlen-11.0 b/qa/src/badlen-11.0
new file mode 100644
index 0000000..0c0d166
--- /dev/null
+++ b/qa/src/badlen-11.0
Binary files differ
diff --git a/qa/src/badlen-11.index b/qa/src/badlen-11.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-11.index
Binary files differ
diff --git a/qa/src/badlen-11.meta b/qa/src/badlen-11.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-11.meta
Binary files differ
diff --git a/qa/src/badlen-2.0 b/qa/src/badlen-2.0
new file mode 100644
index 0000000..01f30a9
--- /dev/null
+++ b/qa/src/badlen-2.0
Binary files differ
diff --git a/qa/src/badlen-2.index b/qa/src/badlen-2.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-2.index
Binary files differ
diff --git a/qa/src/badlen-2.meta b/qa/src/badlen-2.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-2.meta
Binary files differ
diff --git a/qa/src/badlen-3.0 b/qa/src/badlen-3.0
new file mode 100644
index 0000000..84ac3df
--- /dev/null
+++ b/qa/src/badlen-3.0
Binary files differ
diff --git a/qa/src/badlen-3.index b/qa/src/badlen-3.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-3.index
Binary files differ
diff --git a/qa/src/badlen-3.meta b/qa/src/badlen-3.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-3.meta
Binary files differ
diff --git a/qa/src/badlen-4.0 b/qa/src/badlen-4.0
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/qa/src/badlen-4.0
@@ -0,0 +1 @@
+
diff --git a/qa/src/badlen-4.index b/qa/src/badlen-4.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-4.index
Binary files differ
diff --git a/qa/src/badlen-4.meta b/qa/src/badlen-4.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-4.meta
Binary files differ
diff --git a/qa/src/badlen-5.0 b/qa/src/badlen-5.0
new file mode 100644
index 0000000..f00bb30
--- /dev/null
+++ b/qa/src/badlen-5.0
Binary files differ
diff --git a/qa/src/badlen-5.index b/qa/src/badlen-5.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-5.index
Binary files differ
diff --git a/qa/src/badlen-5.meta b/qa/src/badlen-5.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-5.meta
Binary files differ
diff --git a/qa/src/badlen-6.0 b/qa/src/badlen-6.0
new file mode 100644
index 0000000..ce4b6a6
--- /dev/null
+++ b/qa/src/badlen-6.0
Binary files differ
diff --git a/qa/src/badlen-6.index b/qa/src/badlen-6.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-6.index
Binary files differ
diff --git a/qa/src/badlen-6.meta b/qa/src/badlen-6.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-6.meta
Binary files differ
diff --git a/qa/src/badlen-7.0 b/qa/src/badlen-7.0
new file mode 100644
index 0000000..769d0d8
--- /dev/null
+++ b/qa/src/badlen-7.0
Binary files differ
diff --git a/qa/src/badlen-7.index b/qa/src/badlen-7.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-7.index
Binary files differ
diff --git a/qa/src/badlen-7.meta b/qa/src/badlen-7.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-7.meta
Binary files differ
diff --git a/qa/src/badlen-8.0 b/qa/src/badlen-8.0
new file mode 100644
index 0000000..0d0af0e
--- /dev/null
+++ b/qa/src/badlen-8.0
Binary files differ
diff --git a/qa/src/badlen-8.index b/qa/src/badlen-8.index
new file mode 100644
index 0000000..10b3899
--- /dev/null
+++ b/qa/src/badlen-8.index
Binary files differ
diff --git a/qa/src/badlen-8.meta b/qa/src/badlen-8.meta
new file mode 100644
index 0000000..b02b4ad
--- /dev/null
+++ b/qa/src/badlen-8.meta
Binary files differ
diff --git a/qa/src/badlen-9.0 b/qa/src/badlen-9.0
new file mode 100644
index 0000000..a85ecd6
--- /dev/null
+++ b/qa/src/badlen-9.0
Binary files differ
diff --git a/qa/src/badlen-9.index b/qa/src/badlen-9.index
new file mode 100644
index 0000000..0ddacab
--- /dev/null
+++ b/qa/src/badlen-9.index
Binary files differ
diff --git a/qa/src/badlen-9.meta b/qa/src/badlen-9.meta
new file mode 100644
index 0000000..1c42267
--- /dev/null
+++ b/qa/src/badlen-9.meta
Binary files differ
diff --git a/qa/src/badloglabel.c b/qa/src/badloglabel.c
new file mode 100644
index 0000000..6657228
--- /dev/null
+++ b/qa/src/badloglabel.c
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int sts;
+ int ch;
+ int errflag = 0;
+ int a, b, c;
+
+ __pmSetProgname(argv[0]);
+
+ while ((ch = getopt(argc, argv, "D:?")) != EOF) {
+ switch (ch) {
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc-2) {
+ fprintf(stderr, "Usage: %s archive1 archive2\n", pmProgname);
+ exit(1);
+ }
+
+ a = pmNewContext(PM_CONTEXT_ARCHIVE, argv[optind]);
+ if (a < 0) {
+ fprintf(stderr, "%s: first pmNewContext(..., %s): %s\n", pmProgname, argv[optind], pmErrStr(a));
+ exit(1);
+ }
+
+ pmDestroyContext(a);
+
+ b = pmNewContext(PM_CONTEXT_HOST, "localhost");
+ if (b < 0) {
+ fprintf(stderr, "%s: pmNewContext(..., localhost): %s\n", pmProgname, pmErrStr(b));
+ exit(1);
+ }
+
+ c = pmNewContext(PM_CONTEXT_ARCHIVE, argv[optind+1]);
+ if (c < 0) {
+ fprintf(stderr, "%s: second pmNewContext(..., %s): %s\n", pmProgname, argv[optind+1], pmErrStr(c));
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/badpmcdpmid.c b/qa/src/badpmcdpmid.c
new file mode 100644
index 0000000..75f19cb
--- /dev/null
+++ b/qa/src/badpmcdpmid.c
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * pmcd pmda was botched
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main()
+{
+ pmID pmid;
+ __pmID_int *p = (__pmID_int *)&pmid;
+ pmResult *rp;
+ int sts;
+
+ pmid = 0;
+ p->domain = 2; /* pmcd */
+ p->cluster = 13; /* bogus */
+
+ sts = pmNewContext(PM_CONTEXT_HOST, "localhost");
+ if (sts < 0) {
+ fprintf(stderr, "pmNewContext(localhost) failed: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pmFetch(1, &pmid, &rp);
+ if (sts != 0)
+ printf("expect no error, got: %d %s\n", sts, pmErrStr(sts));
+ if (rp->numpmid != 1)
+ printf("expect 1 pmid, got %d\n", rp->numpmid);
+ if (rp->vset[0]->pmid != pmid) {
+ printf("pmid mismatch! %s", pmIDStr(pmid));
+ printf(" != %s\n", pmIDStr(rp->vset[0]->pmid));
+ }
+ if (rp->vset[0]->numval == 1)
+ printf("%d values is bogus\n", rp->vset[0]->numval);
+ else
+ printf("no value in pmResult -- expected\n");
+
+ exit(0);
+}
diff --git a/qa/src/badpmda.c b/qa/src/badpmda.c
new file mode 100644
index 0000000..aa1625e
--- /dev/null
+++ b/qa/src/badpmda.c
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2004 Ken McDonell. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+static pmdaInterface dispatch;
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int id = 0;
+ int port = -1;
+ char *sockname = NULL;
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "c:p:s:?")) != EOF) {
+ switch (c) {
+
+ case 'c': /* case number */
+ id = atoi(optarg);
+ break;
+
+ case 's': /* socket name */
+ sockname = optarg;
+ break;
+
+ case 'p': /* port number */
+ port = atoi(optarg);
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options]\n\
+\n\
+Options:\n\
+ -c number case number (default 0)\n\
+ -s name socket name\n\
+ -p number port number\n",
+ pmProgname);
+ exit(1);
+ }
+
+ switch (id) {
+ case 0:
+ fprintf(stderr, "--- case 0 pmdaConnect() ---\n");
+ pmdaConnect(&dispatch);
+ sts = dispatch.status;
+ if (sts < 0)
+ fprintf(stderr, "pmdaConnect: Error: %s\n", pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaConnect: OK\n");
+ break;
+
+ case 1:
+ fprintf(stderr, "--- case 1 pmdaExt alloc + pmdaConnect() ---\n");
+ dispatch.version.any.ext = (pmdaExt *)calloc(1, sizeof(pmdaExt));
+ pmdaConnect(&dispatch);
+ sts = dispatch.status;
+ if (sts < 0)
+ fprintf(stderr, "pmdaConnect: Error: %s\n", pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaConnect: OK\n");
+ break;
+
+ case 2:
+ fprintf(stderr, "--- case 2 pmdaDaemon() + pmdaInet + pmdaConnect() ---\n");
+ pmdaDaemon(&dispatch, PMDA_INTERFACE_LATEST, "badpmda", 123, NULL, NULL);
+ sts = dispatch.status;
+ if (sts < 0)
+ fprintf(stderr, "pmdaDaemon: Error: %s\n", pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaDaemon: OK\n");
+ dispatch.version.any.ext->e_io = pmdaInet;
+ dispatch.version.any.ext->e_port = port;
+ pmdaConnect(&dispatch);
+ sts = dispatch.status;
+ if (sts < 0)
+ fprintf(stderr, "pmdaConnect: Error: %s\n", pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaConnect: OK\n");
+ break;
+
+ case 3:
+ fprintf(stderr, "--- case 3 pmdaDaemon() + pmdaInet + pmdaConnect() + pmdaConnect() ---\n");
+ pmdaDaemon(&dispatch, PMDA_INTERFACE_LATEST, "badpmda", 123, NULL, NULL);
+ sts = dispatch.status;
+ if (sts < 0)
+ fprintf(stderr, "pmdaDaemon: Error: %s\n", pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaDaemon: OK\n");
+ dispatch.version.any.ext->e_io = pmdaUnix;
+ dispatch.version.any.ext->e_sockname = sockname;
+ pmdaConnect(&dispatch);
+ sts = dispatch.status;
+ if (sts < 0)
+ fprintf(stderr, "pmdaConnect: Error: %s\n", pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaConnect: OK\n");
+ pmdaConnect(&dispatch);
+ sts = dispatch.status;
+ if (sts < 0)
+ fprintf(stderr, "pmdaConnect: Error: %s\n", pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaConnect: OK\n");
+ break;
+
+ }
+
+ return 0;
+}
diff --git a/qa/src/badti-1.0 b/qa/src/badti-1.0
new file mode 100644
index 0000000..a09c48c
--- /dev/null
+++ b/qa/src/badti-1.0
Binary files differ
diff --git a/qa/src/badti-1.index b/qa/src/badti-1.index
new file mode 100644
index 0000000..d7acf83
--- /dev/null
+++ b/qa/src/badti-1.index
Binary files differ
diff --git a/qa/src/badti-1.meta b/qa/src/badti-1.meta
new file mode 100644
index 0000000..2a6edab
--- /dev/null
+++ b/qa/src/badti-1.meta
Binary files differ
diff --git a/qa/src/badti-2.0 b/qa/src/badti-2.0
new file mode 100644
index 0000000..a09c48c
--- /dev/null
+++ b/qa/src/badti-2.0
Binary files differ
diff --git a/qa/src/badti-2.index b/qa/src/badti-2.index
new file mode 100644
index 0000000..465e753
--- /dev/null
+++ b/qa/src/badti-2.index
Binary files differ
diff --git a/qa/src/badti-2.meta b/qa/src/badti-2.meta
new file mode 100644
index 0000000..2a6edab
--- /dev/null
+++ b/qa/src/badti-2.meta
Binary files differ
diff --git a/qa/src/badti-3.0 b/qa/src/badti-3.0
new file mode 100644
index 0000000..a09c48c
--- /dev/null
+++ b/qa/src/badti-3.0
Binary files differ
diff --git a/qa/src/badti-3.index b/qa/src/badti-3.index
new file mode 100644
index 0000000..9134473
--- /dev/null
+++ b/qa/src/badti-3.index
Binary files differ
diff --git a/qa/src/badti-3.meta b/qa/src/badti-3.meta
new file mode 100644
index 0000000..2a6edab
--- /dev/null
+++ b/qa/src/badti-3.meta
Binary files differ
diff --git a/qa/src/batch_import.perl b/qa/src/batch_import.perl
new file mode 100755
index 0000000..e68f365
--- /dev/null
+++ b/qa/src/batch_import.perl
@@ -0,0 +1,78 @@
+#
+# Exercise libpcp_import "batching" extensions in Perl import API
+#
+# Copyright (c) 2013 Red Hat.
+#
+use strict;
+use warnings;
+
+$| = 1; # don't buffer output
+use PCP::LogImport;
+
+my $ctx1;
+my $ctx2;
+my $hdl1;
+my $hdl2;
+
+sub check
+{
+ my ($sts, $name) = @_;
+ if ($sts < 0) { print $name . ": Error: " . pmiErrStr($sts) . "\n"; }
+ else {
+ print $name . ": OK";
+ if ($sts != 0) { print " ->$sts"; }
+ print "\n";
+ }
+}
+
+$ctx1 = pmiStart("myarchive", 0);
+check($ctx1, "pmiStart");
+
+$_ = pmiSetHostname("batching.com");
+check($_, "pmiSetHostname");
+$_ = pmiSetTimezone("GMT-12");
+check($_, "pmiSetTimezone");
+
+$_ = pmiUseContext($ctx1);
+check($_, "pmiUseContext");
+
+$_ = pmiAddMetric("my.metric.foo", pmid_build(PMI_DOMAIN,0,1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.bar", PM_ID_NULL, PM_TYPE_U64, pmInDom_build(PMI_DOMAIN,1), PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.long", PM_ID_NULL, PM_TYPE_64, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.double", PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.string", PM_ID_NULL, PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.float", PM_ID_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_DISCRETE, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.strung", PM_ID_NULL, PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+
+$_ = pmiBatchPutValue("my.metric.string", "", "a third string value");
+check($_, "pmiBatchPutValue");
+$_ = pmiBatchWrite(2, 70000);
+check($_, "pmiBatchWrite");
+$_ = pmiBatchPutValue("my.metric.strung", "", "a first string value");
+check($_, "pmiBatchPutValue");
+$_ = pmiBatchPutValue("my.metric.string", "", "a second string value");
+check($_, "pmiBatchPutValue");
+$_ = pmiBatchWrite(0, 110000);
+check($_, "pmiBatchWrite");
+$hdl1 = pmiGetHandle("my.metric.string", "");
+check($hdl1, "pmiGetHandle");
+$_ = pmiBatchPutValueHandle($hdl1, "a fourth string value");
+check($_, "pmiBatchPutValueHandle");
+$hdl2 = pmiGetHandle("my.metric.strung", "");
+check($hdl2, "pmiGetHandle");
+$_ = pmiBatchPutValueHandle($hdl2, "a fifth string value");
+check($_, "pmiBatchPutValueHandle");
+$_ = pmiBatchWrite(3, 10000);
+check($_, "pmiBatchWrite");
+
+$_ = pmiBatchEnd();
+check($_, "pmiBatchEnd");
+
+pmiDump();
diff --git a/qa/src/batch_import.pl b/qa/src/batch_import.pl
new file mode 120000
index 0000000..3b1a8c8
--- /dev/null
+++ b/qa/src/batch_import.pl
@@ -0,0 +1 @@
+batch_import.perl \ No newline at end of file
diff --git a/qa/src/bigace.0 b/qa/src/bigace.0
new file mode 100644
index 0000000..ad5d835
--- /dev/null
+++ b/qa/src/bigace.0
Binary files differ
diff --git a/qa/src/bigace.index b/qa/src/bigace.index
new file mode 100644
index 0000000..8ee2cc3
--- /dev/null
+++ b/qa/src/bigace.index
Binary files differ
diff --git a/qa/src/bigace.meta b/qa/src/bigace.meta
new file mode 100644
index 0000000..53bea53
--- /dev/null
+++ b/qa/src/bigace.meta
Binary files differ
diff --git a/qa/src/bigace.pmns b/qa/src/bigace.pmns
new file mode 100644
index 0000000..80ab373
--- /dev/null
+++ b/qa/src/bigace.pmns
@@ -0,0 +1,103 @@
+/*
+ * fixed pmns for bigace archive (V.1)
+ */
+
+root {
+ irix
+}
+
+irix {
+ kernel
+ disk
+ network
+}
+
+irix.kernel {
+ all
+}
+
+/*
+ * kernel.all.load
+ * kernel.all.pswitch
+ * kernel.all.readch
+ * kernel.all.writech
+ * kernel.all.runocc
+ * kernel.all.runque
+ * kernel.all.syscall
+ * kernel.all.cpu.idle
+ * kernel.all.cpu.intr
+ * kernel.all.cpu.sys
+ * kernel.all.cpu.sxbrk
+ * kernel.all.cpu.user
+ * kernel.all.cpu.wait.total
+ * kernel.all.ipc.msg
+ * kernel.all.ipc.sema
+ */
+
+irix.kernel.all {
+ load 1:18:3
+ pswitch 1:10:3
+ readch 1:10:14
+ writech 1:10:29
+ runocc 1:10:15
+ runque 1:10:16
+ syscall 1:10:19
+ cpu
+ ipc
+}
+
+irix.kernel.all.cpu {
+ idle 1:10:7
+ intr 1:10:8
+ sys 1:10:9
+ sxbrk 1:10:10
+ user 1:10:11
+ wait
+}
+
+irix.kernel.all.cpu.wait {
+ total 1:10:12
+}
+
+irix.kernel.all.ipc {
+ msg 1:10:53
+ sema 1:10:54
+}
+
+/*
+ * disk.dev.read
+ * disk.dev.write
+ * disk.dev.total
+ */
+
+irix.disk {
+ dev
+}
+
+irix.disk.dev {
+ read 1:80:1
+ write 1:80:2
+ total 1:80:7
+}
+
+/*
+ * network.interface.in.bytes
+ * network.interface.out.bytes
+ */
+
+irix.network {
+ interface
+}
+
+irix.network.interface {
+ in
+ out
+}
+
+irix.network.interface.in {
+ bytes 1:25:7
+}
+
+irix.network.interface.out {
+ bytes 1:25:12
+}
diff --git a/qa/src/bigace_v2.0 b/qa/src/bigace_v2.0
new file mode 100644
index 0000000..c41de07
--- /dev/null
+++ b/qa/src/bigace_v2.0
Binary files differ
diff --git a/qa/src/bigace_v2.index b/qa/src/bigace_v2.index
new file mode 100644
index 0000000..f2cc9ea
--- /dev/null
+++ b/qa/src/bigace_v2.index
Binary files differ
diff --git a/qa/src/bigace_v2.meta b/qa/src/bigace_v2.meta
new file mode 100644
index 0000000..d65b5b4
--- /dev/null
+++ b/qa/src/bigace_v2.meta
Binary files differ
diff --git a/qa/src/binning.0 b/qa/src/binning.0
new file mode 100644
index 0000000..6db02b9
--- /dev/null
+++ b/qa/src/binning.0
Binary files differ
diff --git a/qa/src/binning.index b/qa/src/binning.index
new file mode 100644
index 0000000..e8bfe76
--- /dev/null
+++ b/qa/src/binning.index
Binary files differ
diff --git a/qa/src/binning.meta b/qa/src/binning.meta
new file mode 100644
index 0000000..322dbe8
--- /dev/null
+++ b/qa/src/binning.meta
Binary files differ
diff --git a/qa/src/bozo.client.0 b/qa/src/bozo.client.0
new file mode 100644
index 0000000..9ee0985
--- /dev/null
+++ b/qa/src/bozo.client.0
Binary files differ
diff --git a/qa/src/bozo.client.index b/qa/src/bozo.client.index
new file mode 100644
index 0000000..1ae4bb1
--- /dev/null
+++ b/qa/src/bozo.client.index
Binary files differ
diff --git a/qa/src/bozo.client.meta b/qa/src/bozo.client.meta
new file mode 100644
index 0000000..a48df2e
--- /dev/null
+++ b/qa/src/bozo.client.meta
Binary files differ
diff --git a/qa/src/bozo.client_v2.0 b/qa/src/bozo.client_v2.0
new file mode 100644
index 0000000..f5af1c3
--- /dev/null
+++ b/qa/src/bozo.client_v2.0
Binary files differ
diff --git a/qa/src/bozo.client_v2.index b/qa/src/bozo.client_v2.index
new file mode 100644
index 0000000..12967df
--- /dev/null
+++ b/qa/src/bozo.client_v2.index
Binary files differ
diff --git a/qa/src/bozo.client_v2.meta b/qa/src/bozo.client_v2.meta
new file mode 100644
index 0000000..1b22c8a
--- /dev/null
+++ b/qa/src/bozo.client_v2.meta
Binary files differ
diff --git a/qa/src/bozo.client_v2.meta.bad.1 b/qa/src/bozo.client_v2.meta.bad.1
new file mode 100644
index 0000000..d895abe
--- /dev/null
+++ b/qa/src/bozo.client_v2.meta.bad.1
Binary files differ
diff --git a/qa/src/bozo.client_v2.meta.bad.2 b/qa/src/bozo.client_v2.meta.bad.2
new file mode 100644
index 0000000..bd2ba91
--- /dev/null
+++ b/qa/src/bozo.client_v2.meta.bad.2
Binary files differ
diff --git a/qa/src/bug.0 b/qa/src/bug.0
new file mode 100644
index 0000000..bcc9744
--- /dev/null
+++ b/qa/src/bug.0
Binary files differ
diff --git a/qa/src/bug.index b/qa/src/bug.index
new file mode 100644
index 0000000..402fdc9
--- /dev/null
+++ b/qa/src/bug.index
Binary files differ
diff --git a/qa/src/bug.meta b/qa/src/bug.meta
new file mode 100644
index 0000000..a396b0a
--- /dev/null
+++ b/qa/src/bug.meta
Binary files differ
diff --git a/qa/src/bug1057.0 b/qa/src/bug1057.0
new file mode 100644
index 0000000..cc7839e
--- /dev/null
+++ b/qa/src/bug1057.0
Binary files differ
diff --git a/qa/src/bug1057.index b/qa/src/bug1057.index
new file mode 100644
index 0000000..c4fb01f
--- /dev/null
+++ b/qa/src/bug1057.index
Binary files differ
diff --git a/qa/src/bug1057.meta b/qa/src/bug1057.meta
new file mode 100644
index 0000000..d473031
--- /dev/null
+++ b/qa/src/bug1057.meta
Binary files differ
diff --git a/qa/src/bug_v2.0 b/qa/src/bug_v2.0
new file mode 100644
index 0000000..82eb0d4
--- /dev/null
+++ b/qa/src/bug_v2.0
Binary files differ
diff --git a/qa/src/bug_v2.index b/qa/src/bug_v2.index
new file mode 100644
index 0000000..5dc618b
--- /dev/null
+++ b/qa/src/bug_v2.index
Binary files differ
diff --git a/qa/src/bug_v2.meta b/qa/src/bug_v2.meta
new file mode 100644
index 0000000..1e27f6f
--- /dev/null
+++ b/qa/src/bug_v2.meta
Binary files differ
diff --git a/qa/src/changeinst.0 b/qa/src/changeinst.0
new file mode 100644
index 0000000..2f62135
--- /dev/null
+++ b/qa/src/changeinst.0
Binary files differ
diff --git a/qa/src/changeinst.index b/qa/src/changeinst.index
new file mode 100644
index 0000000..dd5af9d
--- /dev/null
+++ b/qa/src/changeinst.index
Binary files differ
diff --git a/qa/src/changeinst.meta b/qa/src/changeinst.meta
new file mode 100644
index 0000000..c30b7d1
--- /dev/null
+++ b/qa/src/changeinst.meta
Binary files differ
diff --git a/qa/src/check_fault_injection.c b/qa/src/check_fault_injection.c
new file mode 100644
index 0000000..765a0ef
--- /dev/null
+++ b/qa/src/check_fault_injection.c
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * Check if libpcp built with -DPM_FAULT_INJECTION ... answer
+ * is in the exit status.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/fault.h>
+#include <string.h>
+#include <errno.h>
+
+int
+main(int argc, char *argv[])
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *usage = "[-D debug]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ __pmFaultInject("test", 0);
+ /*
+ * will only return in the OK case
+ */
+
+ return 0;
+}
diff --git a/qa/src/check_import.c b/qa/src/check_import.c
new file mode 100644
index 0000000..0e3ef3c
--- /dev/null
+++ b/qa/src/check_import.c
@@ -0,0 +1,175 @@
+/*
+ * Exercise libpcp_import
+ *
+ * Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/import.h>
+
+static void
+check(int sts, char *name)
+{
+ if (sts < 0) fprintf(stderr, "%s: Error: %s\n", name, pmiErrStr(sts));
+ else {
+ fprintf(stderr, "%s: OK", name);
+ if (sts != 0) fprintf(stderr, " ->%d", sts);
+ fputc('\n', stderr);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int sts;
+ int ctx1;
+ int ctx2;
+ int hdl1;
+ int hdl2;
+ int errflag = 0;
+ int c;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ pmiDump();
+
+ ctx1 = pmiStart("myarchive", 0);
+ check(ctx1, "pmiStart");
+ pmiDump();
+
+ sts = pmiSetHostname("somehost.com");
+ check(sts, "pmiSetHostname");
+ sts = pmiSetTimezone("GMT-12");
+ check(sts, "pmiSetTimezone");
+
+ sts = pmiUseContext(3);
+ check(sts, "pmiUseContext");
+ sts = pmiUseContext(ctx1);
+ check(sts, "pmiUseContext");
+
+ sts = pmiAddMetric("my.metric.foo", pmid_build(245,0,1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.bar", PM_ID_NULL, PM_TYPE_U64, pmInDom_build(245,1), PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.foo", 1, 2, 3, 4, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.long", PM_ID_NULL, PM_TYPE_64, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.double", PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.string", PM_ID_NULL, PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.dup.pmid", pmid_build(245,0,3), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.float", PM_ID_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_DISCRETE, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+
+ sts = pmiAddInstance(pmInDom_build(245,1), "eek really", 1);
+ check(sts, "pmiAddInstance");
+ sts = pmiAddInstance(pmInDom_build(245,1), "eek", 2);
+ check(sts, "pmiAddInstance");
+ sts = pmiAddInstance(pmInDom_build(245,1), "blah", 3);
+ check(sts, "pmiAddInstance");
+ sts = pmiAddInstance(pmInDom_build(245,1), "not-blah-again", 3);
+ check(sts, "pmiAddInstance");
+
+ sts = pmiPutValue("my.metric.foo", NULL, "123");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.foo", "should be null", "1234");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", "eek", "4567890123456");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", "blah", "4567890123457");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", "not-blah", "4567890123457");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", NULL, "42");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.string", "", "a new string value");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.long", "", "123456789012345");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.double", "", "1.23456789012");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.float", "", "-1.234567");
+ check(sts, "pmiPutValue");
+
+ hdl1 = pmiGetHandle("my.metric.foo", "");
+ check(hdl1, "pmiGetHandle");
+ sts = pmiGetHandle("my.bad", "");
+ check(sts, "pmiGetHandle");
+ sts = pmiPutValueHandle(hdl1, "321");
+ check(sts, "pmiPutValueHandle");
+ sts = pmiPutValueHandle(0, "error");
+ check(sts, "pmiPutValueHandle");
+
+ pmiDump();
+
+ sts = pmiWrite((int)(365.25*30*24*60*60), 0);
+ check(sts, "pmiWrite");
+ sts = pmiPutValueHandle(hdl1, "4321");
+ check(sts, "pmiPutValueHandle");
+ sts = pmiPutValue("my.metric.string", "", "a second string value");
+ check(sts, "pmiPutValue");
+ sts = pmiWrite(-1, -1);
+ check(sts, "pmiWrite");
+ sts = pmiPutValue("my.metric.string", "", "a third string value");
+ check(sts, "pmiPutValue");
+ sts = pmiWrite(-1, -1);
+ check(sts, "pmiWrite");
+ sts = pmiWrite(-1, -1);
+ check(sts, "pmiWrite");
+
+ sts = pmiEnd();
+ check(sts, "pmiEnd");
+
+ ctx2 = pmiStart("myotherarchive", 1);
+ check(ctx2, "pmiStart");
+ sts = pmiAddInstance(pmInDom_build(245,1), "other", 2);
+ check(sts, "pmiAddInstance");
+ hdl2 = pmiGetHandle("my.metric.bar", "eek");
+ check(hdl2, "pmiGetHandle");
+ sts = pmiPutValueHandle(hdl2, "6543210987654");
+ check(sts, "pmiPutValueHandle");
+ sts = pmiPutValueHandle(3, "error");
+ check(sts, "pmiPutValueHandle");
+
+ pmiDump();
+
+ exit(0);
+}
diff --git a/qa/src/check_import.perl b/qa/src/check_import.perl
new file mode 100755
index 0000000..352f332
--- /dev/null
+++ b/qa/src/check_import.perl
@@ -0,0 +1,139 @@
+#
+# Exercise libpcp_import ... Perl version of check_import.c
+#
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+use strict;
+use warnings;
+
+$| = 1; # don't buffer output
+
+use PCP::LogImport;
+
+print "PCP::LogImport symbols ...\n";
+foreach (%PCP::LogImport::) {
+ print "$_\n";
+}
+print "\n";
+
+pmiDump();
+
+my $ctx1;
+my $ctx2;
+my $hdl1;
+my $hdl2;
+
+sub check
+{
+ my ($sts, $name) = @_;
+ if ($sts < 0) { print $name . ": Error: " . pmiErrStr($sts) . "\n"; }
+ else {
+ print $name . ": OK";
+ if ($sts != 0) { print " ->$sts"; }
+ print "\n";
+ }
+}
+
+$ctx1 = pmiStart("myarchive", 0);
+check($ctx1, "pmiStart");
+pmiDump();
+
+$_ = pmiSetHostname("somehost.com");
+check($_, "pmiSetHostname");
+$_ = pmiSetTimezone("GMT-12");
+check($_, "pmiSetTimezone");
+
+$_ = pmiUseContext(3);
+check($_, "pmiUseContext");
+
+$_ = pmiUseContext($ctx1);
+check($_, "pmiUseContext");
+
+$_ = pmiAddMetric("my.metric.foo", pmid_build(PMI_DOMAIN,0,1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.bar", PM_ID_NULL, PM_TYPE_U64, pmInDom_build(PMI_DOMAIN,1), PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.foo", 1, 2, 3, 4, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.long", PM_ID_NULL, PM_TYPE_64, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.double", PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.string", PM_ID_NULL, PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.dup.pmid", pmid_build(PMI_DOMAIN,0,3), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+$_ = pmiAddMetric("my.metric.float", PM_ID_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_DISCRETE, pmiUnits(0,0,0,0,0,0));
+check($_, "pmiAddMetric");
+
+$_ = pmiAddInstance(pmInDom_build(PMI_DOMAIN,1), "eek really", 1);
+check($_, "pmiAddInstance");
+$_ = pmiAddInstance(pmInDom_build(PMI_DOMAIN,1), "eek", 2);
+check($_, "pmiAddInstance");
+$_ = pmiAddInstance(pmInDom_build(PMI_DOMAIN,1), "blah", 3);
+check($_, "pmiAddInstance");
+$_ = pmiAddInstance(pmInDom_build(PMI_DOMAIN,1), "not-blah-again", 3);
+check($_, "pmiAddInstance");
+
+$_ = pmiPutValue("my.metric.foo", "", 123);
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.foo", "should be null", "1234");
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.bar", "eek", "4567890123456");
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.bar", "blah", "4567890123457");
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.bar", "not-blah", "4567890123457");
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.bar", "", "42");
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.string", "", "a new string value");
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.long", "", 123456789012345);
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.double", "", "1.23456789012");
+check($_, "pmiPutValue");
+$_ = pmiPutValue("my.metric.float", "", "-1.234567");
+check($_, "pmiPutValue");
+
+$hdl1 = pmiGetHandle("my.metric.foo", "");
+check($hdl1, "pmiGetHandle");
+$_ = pmiGetHandle("my.bad", "");
+check($_, "pmiGetHandle");
+$_ = pmiPutValueHandle($hdl1, "321");
+check($_, "pmiPutValueHandle");
+$_ = pmiPutValueHandle(0, "error");
+check($_, "pmiPutValueHandle");
+
+pmiDump();
+
+$_ = pmiWrite(int(365.25*30*24*60*60), 0);
+check($_, "pmiWrite");
+$_ = pmiPutValueHandle($hdl1, "4321");
+check($_, "pmiPutValueHandle");
+$_ = pmiPutValue("my.metric.string", "", "a second string value");
+check($_, "pmiPutValue");
+$_ = pmiWrite(-1, -1);
+check($_, "pmiWrite");
+$_ = pmiPutValue("my.metric.string", "", "a third string value");
+check($_, "pmiPutValue");
+$_ = pmiWrite(-1, -1);
+check($_, "pmiWrite");
+$_ = pmiWrite(-1, -1);
+check($_, "pmiWrite");
+
+$_ = pmiEnd();
+check($_, "pmiEnd");
+
+$ctx2 = pmiStart("myotherarchive", 1);
+check($ctx2, "pmiStart");
+$_ = pmiAddInstance(pmInDom_build(PMI_DOMAIN,1), "other", 2);
+check($_, "pmiAddInstance");
+$hdl2 = pmiGetHandle("my.metric.bar", "eek");
+check($hdl2, "pmiGetHandle");
+$_ = pmiPutValueHandle($hdl2, "6543210987654");
+check($_, "pmiPutValueHandle");
+$_ = pmiPutValueHandle(3, "error");
+check($_, "pmiPutValueHandle");
+
+pmiDump();
diff --git a/qa/src/check_import.pl b/qa/src/check_import.pl
new file mode 120000
index 0000000..46e09d4
--- /dev/null
+++ b/qa/src/check_import.pl
@@ -0,0 +1 @@
+check_import.perl \ No newline at end of file
diff --git a/qa/src/check_import.py b/qa/src/check_import.py
new file mode 120000
index 0000000..f8694e4
--- /dev/null
+++ b/qa/src/check_import.py
@@ -0,0 +1 @@
+check_import.python \ No newline at end of file
diff --git a/qa/src/check_import.python b/qa/src/check_import.python
new file mode 100755
index 0000000..a10ece2
--- /dev/null
+++ b/qa/src/check_import.python
@@ -0,0 +1,69 @@
+""" Python test case for Log Import API wrapper module
+"""
+#
+# Copyright (C) 2012-2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import sys
+import math
+import time
+import cpmapi
+from pcp import pmi
+from pcp import pmapi
+
+def check_import(archive, hostname, timezone):
+ """ Test body - check many of the Log Import API wrapper interfaces
+ """
+ log = pmi.pmiLogImport(archive)
+ log.pmiSetHostname(hostname)
+ log.pmiSetTimezone(timezone)
+
+ domain = 60 # Linux kernel
+ pmid = log.pmiID(domain, 2, 0)
+ indom = log.pmiInDom(domain, 2)
+ units = log.pmiUnits(0, 0, 0, 0, 0, 0)
+
+ # create a metric with no instances (hinv.ncpu)
+ log.pmiAddMetric("hinv.ncpu", cpmapi.PM_ID_NULL, cpmapi.PM_TYPE_U32,
+ cpmapi.PM_INDOM_NULL, cpmapi.PM_SEM_DISCRETE, units)
+
+ # give it a value
+ log.pmiPutValue("hinv.ncpu", "", "%d" % 42)
+
+ # create a metric with instances (kernel.all.load)
+ log.pmiAddMetric("kernel.all.load", pmid,
+ cpmapi.PM_TYPE_FLOAT, indom, cpmapi.PM_SEM_INSTANT, units)
+ log.pmiAddInstance(indom, "1 minute", 1)
+ log.pmiAddInstance(indom, "5 minute", 5)
+ log.pmiAddInstance(indom, "15 minute", 15)
+
+ # give them values
+ log.pmiPutValue("kernel.all.load", "1 minute", "%f" % 0.01)
+ log.pmiPutValue("kernel.all.load", "5 minute", "%f" % 0.05)
+ log.pmiPutValue("kernel.all.load", "15 minute", "%f" % 0.15)
+
+ timetuple = math.modf(time.time())
+ useconds = int(timetuple[0] * 1000000)
+ seconds = int(timetuple[1])
+ log.pmiWrite(seconds, useconds)
+
+ del log
+
+if __name__ == '__main__':
+
+ if (len(sys.argv) != 2):
+ print("Usage: " + sys.argv[0] + " <path>")
+ sys.exit(1)
+
+ check_import(sys.argv[1], "www.abc.com", "EST-10")
+
diff --git a/qa/src/check_import_name.c b/qa/src/check_import_name.c
new file mode 100644
index 0000000..8efa3e8
--- /dev/null
+++ b/qa/src/check_import_name.c
@@ -0,0 +1,47 @@
+/*
+ * Exercise libpcp_import metric name validation.
+ *
+ * Copyright (c) 2013 Red Hat.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/import.h>
+
+static void
+check(int sts, char *name)
+{
+ if (sts < 0) {
+ fprintf(stderr, "%s: Error: %s\n", name, pmiErrStr(sts));
+ } else {
+ fprintf(stderr, "%s: OK", name);
+ if (sts != 0)
+ fprintf(stderr, " -> %d", sts);
+ fputc('\n', stderr);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int sts;
+
+ if (argc != 2) {
+ printf("Usage: %s <name>\n", argv[0]);
+ exit(1);
+ }
+
+ sts = pmiStart("tmplog", 0);
+ check(sts, "pmiStart");
+ sts = pmiSetHostname("tmphost.com");
+ check(sts, "pmiSetHostname");
+ sts = pmiSetTimezone("GMT-12");
+ check(sts, "pmiSetTimezone");
+
+ printf("Checking metric name: \"%s\" ...\n", argv[1]);
+ sts = pmiAddMetric(argv[1], pmid_build(245,0,1),
+ PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+ check(sts, "pmiAddMetric");
+ exit(0);
+}
diff --git a/qa/src/chk_memleak.c b/qa/src/chk_memleak.c
new file mode 100644
index 0000000..aeba5dc
--- /dev/null
+++ b/qa/src/chk_memleak.c
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * check open/close archive for mem leaks
+ */
+
+#include <sys/time.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int vflag = 0;
+static int tflag = 0;
+
+int
+main(int argc, char **argv)
+{
+ int i, c;
+ int sts;
+ int errflag = 0;
+ char *archive = "foo";
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-D N] [-L] [-h host] [-a archive] [-n namespace] [-v] [-i iterations]";
+ int niter = 100;
+ int contype = PM_CONTEXT_HOST;
+ unsigned long first_memusage;
+ unsigned long last_memusage = 0;
+ unsigned long memusage;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "Li:h:a:D:n:tv")) != EOF) {
+ switch (c) {
+
+ case 'i': /* iterations */
+ niter = atoi(optarg);
+ break;
+ case 'L': /* local */
+ contype = PM_CONTEXT_LOCAL;
+ break;
+ case 'h': /* host */
+ host = optarg;
+ contype = PM_CONTEXT_HOST;
+ break;
+
+ case 'a': /* archive */
+ archive = optarg;
+ contype = PM_CONTEXT_ARCHIVE;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose output */
+ vflag++;
+ break;
+
+ case 't': /* trim namespace */
+ tflag++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if (namespace != PM_NS_DEFAULT) {
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ for (i = 0; i < niter; i++) {
+ switch (contype) {
+ case PM_CONTEXT_LOCAL:
+ if ((c = pmNewContext(PM_CONTEXT_LOCAL, NULL)) < 0) {
+ printf("%s: Cannot create local context: %s\n", pmProgname, pmErrStr(c));
+ exit(1);
+ }
+ break;
+ case PM_CONTEXT_ARCHIVE:
+ if ((c = pmNewContext(PM_CONTEXT_ARCHIVE, archive)) < 0) {
+ printf("%s: Cannot connect to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(c));
+ exit(1);
+ }
+ break;
+ case PM_CONTEXT_HOST:
+ if ((c = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to host \"%s\": %s\n", pmProgname, host, pmErrStr(c));
+ exit(1);
+ }
+ break;
+ }
+
+ pmDestroyContext(c);
+ if (i == 0) {
+ __pmProcessDataSize(&first_memusage);
+ }
+ else {
+ __pmProcessDataSize(&memusage);
+ if (memusage - first_memusage > 0) {
+ if (i > 1)
+ printf("iteration %d: leaked %lu bytes\n", i,
+ memusage - last_memusage);
+ last_memusage = memusage;
+ }
+ }
+ }
+
+ exit(0);
+}
+
diff --git a/qa/src/chk_metric_types.c b/qa/src/chk_metric_types.c
new file mode 100644
index 0000000..a748474
--- /dev/null
+++ b/qa/src/chk_metric_types.c
@@ -0,0 +1,313 @@
+/*
+ * chk_metric_types - check pmResult value types match pmDesc.
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static void checkMetric(const char *);
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ int mode = PM_MODE_INTERP; /* mode for archives */
+ char *configfile = NULL;
+ char *logfile = NULL;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = NULL; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *pmnsfile = PM_NS_DEFAULT;
+ int samples = -1;
+ double delta = 1.0;
+ char *endnum;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:c:D:h:l:Ln:s:t:U:VzZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != NULL) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'L': /* LOCAL, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ putenv("PMDA_LOCAL_PROC="); /* if proc PMDA needed */
+ putenv("PMDA_LOCAL_SAMPLE="); /* if sampledso PMDA needed */
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ pmnsfile = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'U': /* uninterpolated archive log */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ mode = PM_MODE_FORW;
+ host = optarg;
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != NULL) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a, -h or -U option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -c configfile file to load configuration from\n\
+ -D debug standard PCP debug flag\n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -L use local context instead of PMCD\n\
+ -n pmnsfile use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n\
+ -U archive metrics source is an uninterpolated archive log\n\
+ -V verbose/diagnostic output\n\
+ -z set reporting timezone to local time for host from -a, -h or -U\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != NULL) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if (pmnsfile != PM_NS_DEFAULT && (sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname,
+ pmnsfile, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if (mode != PM_MODE_INTERP) {
+ if ((sts = pmSetMode(mode, &label.ll_start, 0)) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ }
+
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != NULL) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+ else
+ tzh = pmNewContextZone();
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind == argc) {
+ if ((sts = pmTraversePMNS(NULL, checkMetric)) < 0) {
+ fprintf(stderr, "%s: pmTraversePMNS: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else
+ while (optind < argc) {
+ if ((sts = pmTraversePMNS(argv[optind], checkMetric)) < 0) {
+ fprintf(stderr, "%s: pmTraversePMNS: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ optind++;
+ }
+
+ return 0;
+}
+
+void
+checkMetric(const char *metric)
+{
+ int sts;
+ int i;
+ char *nameList[] = { NULL };
+ pmID pmidList[] = { PM_IN_NULL };
+ pmDesc desc;
+ pmResult *result;
+
+ /* pmLookupName will not modify this string */
+ nameList[0] = (char *)metric;
+
+ if ((sts = pmLookupName(1, nameList, pmidList)) < 0) {
+ fprintf(stderr, "%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmLookupDesc(pmidList[0], &desc)) < 0) {
+ fprintf(stderr, "%s: pmLookupDesc: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (desc.type == PM_TYPE_NOSUPPORT)
+ return;
+
+ if ((sts = pmFetch(1, pmidList, &result)) < 0) {
+ fprintf(stderr, "%s: pmfetch: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (result->numpmid > 0) {
+ for (i=0; i < result->vset[0]->numval; i++) {
+ if (result->vset[0]->valfmt != PM_VAL_INSITU) {
+ pmValue *val = &result->vset[0]->vlist[i];
+ if (val->value.pval->vtype == PM_TYPE_UNKNOWN) {
+ printf("metric \"%s\" vtype for instance %d is PM_TYPE_UNKNOWN\n",
+ metric, val->inst);
+ }
+ else
+ if (val->value.pval->vtype != desc.type) {
+ printf("metric \"%s\" vtype for instance %d, type (%s)",
+ metric, val->inst, pmTypeStr(val->value.pval->vtype));
+ printf(" does not match descriptor (%s)\n", pmTypeStr(desc.type));
+
+ }
+ }
+ }
+ }
+
+
+ pmFreeResult(result);
+}
diff --git a/qa/src/chkacc1.c b/qa/src/chkacc1.c
new file mode 100644
index 0000000..4eaca46
--- /dev/null
+++ b/qa/src/chkacc1.c
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2012-2014 Red Hat.
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include "localconfig.h"
+
+int
+main(int argc, char **argv)
+{
+ int s, sts, op, host;
+ unsigned int i;
+ char name[4*8 + 7 + 1]; /* handles full IPv6 address, if supported */
+ int ipv4 = -1;
+ int ipv6 = -1;
+ int errflag = 0;
+ int c;
+ __pmSockAddr *inaddr;
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "46D:?")) != EOF) {
+ switch (c) {
+
+ case '4': /* ipv4 (default) */
+ ipv4 = 1;
+ break;
+
+ case '6': /* ipv6 */
+ ipv6 = 1;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options]\n\
+\n\
+Options:\n\
+ -4 do IPv4 (default)\n\
+ -6 do IPv6\n",
+ pmProgname);
+ return 1;
+ }
+
+ /* defaults */
+ if (ipv4 == -1) ipv4 = 1;
+ if (ipv6 == -1) ipv6 = 0;
+
+ sts = 0;
+ for (op = 0; op < WORD_BIT; op++) {
+ if ((s = __pmAccAddOp(1 << op)) < 0) {
+ printf("Bad op %d: %s\n", op, strerror(errno));
+ sts = s;
+ }
+ if ((s = __pmAccAddOp(1 << op)) >= 0) {
+ printf("duplicate op test failed for op %d\n", op);
+ sts = -EINVAL;
+ }
+ }
+ if (sts < 0)
+ return 1;
+
+ for (host = 0; host < WORD_BIT; host++) {
+ if (ipv4) {
+ sprintf(name, "155.%d.%d.%d", host * 3, 17+host, host);
+ if ((s = __pmAccAddHost(name, 1 << host, 1 << host, 0)) < 0) {
+ printf("cannot add inet host for op%d: %s\n", host, strerror(s));
+ sts = s;
+ }
+ }
+ if (ipv6) {
+ sprintf(name, "fec0::%x:%x:%x:%x:%x:%x",
+ host * 3, 17+host, host,
+ host * 3, 17+host, host);
+ if ((s = __pmAccAddHost(name, 1 << host, 1 << host, 0)) < 0) {
+ printf("cannot add IPv6 host for op%d: %s\n", host, strerror(s));
+ sts = s;
+ }
+ }
+ }
+ if (sts < 0)
+ return 1;
+
+ putc('\n', stderr);
+
+ putc('\n', stderr);
+ __pmAccDumpHosts(stderr);
+
+ putc('\n', stderr);
+
+ if (ipv4) {
+ for (host = 0; host < WORD_BIT; host++) {
+ char buf[20];
+
+ sprintf(buf, "%d.%d.%d.%d", 155, host * 3, 17+host, host);
+ if ((inaddr =__pmStringToSockAddr(buf)) == NULL) {
+ printf("insufficient memory\n");
+ continue;
+ }
+ sts = __pmAccAddClient(inaddr, &i);
+ __pmSockAddrFree(inaddr);
+
+ if (sts < 0) {
+ printf("add inet client from host %d: %s\n", host, pmErrStr(sts));
+ continue;
+ }
+ else if (i != (1 << host))
+ printf("inet host %d: __pmAccAddClient returns denyOpsResult 0x%x (expected 0x%x)\n",
+ host, i, 1 << host);
+ }
+ }
+
+ if (ipv6) {
+ for (host = 0; host < WORD_BIT; host++) {
+ char buf[4*8 + 7 + 1]; /* handles full IPv6 address */
+
+ sprintf(buf, "fec0::%x:%x:%x:%x:%x:%x",
+ host * 3, 17+host, host,
+ host * 3, 17+host, host);
+ if ((inaddr =__pmStringToSockAddr(buf)) == NULL) {
+ printf("insufficient memory\n");
+ continue;
+ }
+ sts = __pmAccAddClient(inaddr, &i);
+ __pmSockAddrFree(inaddr);
+
+ if (sts < 0) {
+ printf("add IPv6 client from host %d: %s\n", host, pmErrStr(sts));
+ continue;
+ }
+ else if (i != (1 << host))
+ printf("IPv6 host %d: __pmAccAddClient returns denyOpsResult 0x%x (expected 0x%x)\n",
+ host, i, 1 << host);
+ }
+ }
+
+ putc('\n', stderr);
+
+ putc('\n', stderr);
+ __pmAccDumpHosts(stderr);
+
+ putc('\n', stderr);
+
+ return 0;
+}
diff --git a/qa/src/chkacc2.c b/qa/src/chkacc2.c
new file mode 100644
index 0000000..597367c
--- /dev/null
+++ b/qa/src/chkacc2.c
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2012-2014 Red Hat.
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/* Check all ops except one turned off for all combinations.
+ * Check connection limits
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include "localconfig.h"
+
+int
+main(int argc, char **argv)
+{
+ int s, sts, op, host;
+ unsigned int i;
+ char name[4*8 + 7 + 1]; /* handles full IPv6 address, if supported */
+ int ipv4 = -1;
+ int ipv6 = -1;
+ int errflag = 0;
+ int c;
+ __pmSockAddr *inaddr;
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "46D:?")) != EOF) {
+ switch (c) {
+
+ case '4': /* ipv4 (default) */
+ ipv4 = 1;
+ break;
+
+ case '6': /* ipv6 */
+ ipv6 = 1;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options]\n\
+\n\
+Options:\n\
+ -4 do IPv4 (default)\n\
+ -6 do IPv6\n",
+ pmProgname);
+ return 1;
+ }
+
+ /* defaults */
+ if (ipv4 == -1) ipv4 = 1;
+ if (ipv6 == -1) ipv6 = 0;
+
+ sts = 0;
+ for (op = 0; op < WORD_BIT; op++)
+ if ((s = __pmAccAddOp(1 << op)) < 0) {
+ printf("Bad op %d: %s\n", op, strerror(errno));
+ sts = s;
+ }
+
+ if (sts < 0)
+ return 1;
+
+
+ for (host = 0; host < WORD_BIT; host++) {
+ if (ipv4) {
+ sprintf(name, "155.%d.%d.%d", host * 3, 17+host, host);
+ if ((s = __pmAccAddHost(name, ~(1 << host), ~(1 << host), host)) < 0) {
+ printf("cannot add inet host for op%d: %s\n", host, strerror(s));
+ sts = s;
+ }
+ }
+ if (ipv6) {
+ sprintf(name, "fec0::%x:%x:%x:%x:%x:%x",
+ host * 3, 17+host, host,
+ host * 3, 17+host, host);
+ if ((s = __pmAccAddHost(name, ~(1 << host), ~(1 << host), host)) < 0) {
+ printf("cannot add IPv6 host for op%d: %s\n", host, strerror(s));
+ sts = s;
+ }
+ }
+ }
+ if (sts < 0)
+ return 1;
+
+ putc('\n', stderr);
+
+ putc('\n', stderr);
+ __pmAccDumpHosts(stderr);
+
+ putc('\n', stderr);
+
+ if (ipv4) {
+ for (host = 0; host < WORD_BIT; host++) {
+ int j;
+
+ for (j = 0; j <= host; j++) {
+ char buf[20];
+ sprintf(buf, "%d.%d.%d.%d", 155, host * 3, 17+host, host);
+ if ((inaddr =__pmStringToSockAddr(buf)) == NULL) {
+ printf("insufficient memory\n");
+ continue;
+ }
+ sts = __pmAccAddClient(inaddr, &i);
+ __pmSockAddrFree(inaddr);
+ if (sts < 0) {
+ if (j == host && sts == PM_ERR_CONNLIMIT)
+ continue;
+ printf("add inet client from host %d (j=%d): %s\n",
+ j, host, pmErrStr(sts));
+ continue;
+ }
+ else if (i != (~(1 << host)))
+ printf("inet host %d: __pmAccAddClient returns denyOpsResult 0x%x (expected 0x%x)\n",
+ host, i, ~(1 << host));
+ }
+ }
+ }
+ if (ipv6) {
+ for (host = 0; host < WORD_BIT; host++) {
+ int j;
+
+ for (j = 0; j <= host; j++) {
+ char buf[4*8 + 7 + 1]; /* handles full IPv6 address */
+ sprintf(buf, "fec0::%x:%x:%x:%x:%x:%x",
+ host * 3, 17+host, host,
+ host * 3, 17+host, host);
+ if ((inaddr =__pmStringToSockAddr(buf)) == NULL) {
+ printf("insufficient memory\n");
+ continue;
+ }
+ sts = __pmAccAddClient(inaddr, &i);
+ __pmSockAddrFree(inaddr);
+ if (sts < 0) {
+ if (j == host && sts == PM_ERR_CONNLIMIT)
+ continue;
+ printf("add IPv6 client from host %d (j=%d): %s\n",
+ j, host, pmErrStr(sts));
+ continue;
+ }
+ else if (i != (~(1 << host)))
+ printf("IPv6 host %d: __pmAccAddClient returns denyOpsResult 0x%x (expected 0x%x)\n",
+ host, i, ~(1 << host));
+ }
+ }
+ }
+
+ putc('\n', stderr);
+
+ putc('\n', stderr);
+ __pmAccDumpHosts(stderr);
+
+ putc('\n', stderr);
+
+ return 0;
+}
diff --git a/qa/src/chkacc3.c b/qa/src/chkacc3.c
new file mode 100644
index 0000000..299bd5e
--- /dev/null
+++ b/qa/src/chkacc3.c
@@ -0,0 +1,240 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2012-2014 Red Hat.
+ */
+
+/* Check access control wildcarding, bad ops etc. */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include "localconfig.h"
+
+int a[4] = {0, 37, 235, 126};
+int b[4] = {0, 201, 77, 127};
+int c[4] = {0, 15, 191, 64};
+int d[4] = {0, 1, 127, 254};
+
+int
+main(int argc, char **argv)
+{
+ int s, sts, op, i, ai, bi, ci, di;
+ unsigned int perm;
+ int ipv4 = -1;
+ int ipv6 = -1;
+ int errflag = 0;
+ int copt;
+ char name[4*8 + 7 + 1]; /* handles full IPv6 address, if supported */
+ char *wnames[4] = { ".*", "38.*", "38.202.*", "38.202.16.*" };
+ char *wnames6[4] = { ":*", "26:*", "26:ca:*", "26:ca:10:*" };
+ __pmSockAddr *inaddr;
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((copt = getopt(argc, argv, "46D:?")) != EOF) {
+ switch (copt) {
+
+ case '4': /* ipv4 (default) */
+ ipv4 = 1;
+ break;
+
+ case '6': /* ipv6 */
+ ipv6 = 1;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options]\n\
+\n\
+Options:\n\
+ -4 do IPv4 (default)\n\
+ -6 do IPv6\n",
+ pmProgname);
+ return 1;
+ }
+
+ /* defaults */
+ if (ipv4 == -1) ipv4 = 1;
+ if (ipv6 == -1) ipv6 = 0;
+
+
+ /* there are 10 ops numbered from 0 to 9 */
+ sts = 0;
+ for (op = 0; op < 10; op++)
+ if ((s = __pmAccAddOp(1 << op)) < 0) {
+ fprintf(stderr, "Bad op %d: %s\n", op, strerror(errno));
+ sts = s;
+ }
+
+ if (sts < 0)
+ return 1;
+
+ /* every address except address 0.* and 0:* leaves ops 8 and 9 unspecified */
+ op = 0;
+ for (ai = 0; ai < 4; ai++)
+ for (bi = 0; bi < 4; bi++)
+ for (ci = 0; ci < 4; ci++)
+ for (di = 0; di < 4; di++) {
+ perm = ++op;
+ if (ipv4) {
+ sprintf(name, "%d.%d.%d.%d", a[ai], b[bi], c[ci], d[di]);
+ if (perm >= 1 << 8) {
+ fprintf(stderr, "expect error, perm=%d (>255):\n", perm);
+ perm = 1 << 10;
+ }
+ if (ai == 0) {
+ /* 0.0.* gets y,y; 0.201.* gets n,y; 0.77.* gets y,n;
+ * 0.127.* gets n,n
+ */
+ perm |= (bi << 8);
+ s = __pmAccAddHost(name, 0x3ff, perm, 0);
+ }
+ else
+ s = __pmAccAddHost(name, 0xff, perm, 0);
+ if (s < 0) {
+ fprintf(stderr, "add host for host %s error: %s\n",
+ name, pmErrStr(s));
+ continue;
+ }
+ fprintf(stderr, "set %03x for host %d.%d.%d.%d\n",
+ perm, a[ai], b[bi], c[ci], d[di]);
+ }
+ if (ipv6) {
+ sprintf(name, "%x:%x:%x:%x:%x:%x:%x:%x",
+ a[ai], b[bi], c[ci], d[di],
+ a[ai], b[bi], c[ci], d[di]);
+ perm = op;
+ if (perm >= 1 << 8) {
+ fprintf(stderr, "expect error, perm=%d (>255):\n", perm);
+ perm = 1 << 10;
+ }
+ if (ai == 0) {
+ /* 0.0.* gets y,y; 0.201.* gets n,y; 0.77.* gets y,n;
+ * 0.127.* gets n,n
+ */
+ perm |= (bi << 8);
+ s = __pmAccAddHost(name, 0x3ff, perm, 0);
+ }
+ else
+ s = __pmAccAddHost(name, 0xff, perm, 0);
+ if (s < 0) {
+ fprintf(stderr, "add host for host %s error: %s\n",
+ name, pmErrStr(s));
+ continue;
+ }
+ fprintf(stderr, "set %03x for host %x:%x:%x:%x:%x:%x:%x:%x\n",
+ perm,
+ a[ai], b[bi], c[ci], d[di],
+ a[ai], b[bi], c[ci], d[di]);
+ }
+ }
+
+ /* ops 8 and 9 are for wildcard testing:
+ * hosts matching op8 op9
+ * * y y
+ * 38.* y n
+ * 38.202.* n y
+ * 38.202.16 n n
+ * 26:* y n
+ * 26:ca:* n y
+ * 26:ca:10:* n n
+ */
+ sts = 0;
+ for (i = 0; i < 4; i++) {
+ if (ipv4) {
+ if ((s = __pmAccAddHost(wnames[i], 0x300, (i << 8), 0)) < 0) {
+ fprintf(stderr, "cannot add inet host for op%d: %s\n", i, strerror(s));
+ sts = s;
+ }
+ }
+ if (ipv6) {
+ if ((s = __pmAccAddHost(wnames6[i], 0x300, (i << 8), 0)) < 0) {
+ fprintf(stderr, "cannot add IPv6 host for op%d: %s\n", i, strerror(s));
+ sts = s;
+ }
+ }
+ }
+ if (sts < 0)
+ return 1;
+
+ putc('\n', stderr);
+
+ putc('\n', stderr);
+ __pmAccDumpHosts(stderr);
+
+ putc('\n', stderr);
+
+ putc('\n', stderr);
+ if (ipv4) {
+ for (i = 0; i < 2; i++)
+ for (ai = 0; ai < 4; ai++)
+ for (bi = 0; bi < 4; bi++)
+ for (ci = 0; ci < 4; ci++)
+ for (di = 0; di < 4; di++) {
+ char buf[20];
+ char *host;
+ sprintf(buf, "%d.%d.%d.%d", a[ai]+i, b[bi]+i, c[ci]+i, d[di]+i);
+ if ((inaddr =__pmStringToSockAddr(buf)) == NULL) {
+ printf("insufficient memory\n");
+ continue;
+ }
+ s = __pmAccAddClient(inaddr, &perm);
+ host = __pmSockAddrToString(inaddr);
+ __pmSockAddrFree(inaddr);
+ if (s < 0) {
+ fprintf(stderr, "from %s error: %s\n", host, pmErrStr(s));
+ free(host);
+ continue;
+ }
+ fprintf(stderr, "got %03x for host %s\n", perm, host);
+ free(host);
+ }
+ }
+ if (ipv6) {
+ for (i = 0; i < 2; i++)
+ for (ai = 0; ai < 4; ai++)
+ for (bi = 0; bi < 4; bi++)
+ for (ci = 0; ci < 4; ci++)
+ for (di = 0; di < 4; di++) {
+ char buf[4*8 + 7 + 1]; /* handles full IPv6 address */
+ char *host;
+ sprintf(buf, "%x:%x:%x:%x:%x:%x:%x:%x",
+ a[ai]+i, b[bi]+i, c[ci]+i, d[di]+i,
+ a[ai]+i, b[bi]+i, c[ci]+i, d[di]+i);
+ if ((inaddr =__pmStringToSockAddr(buf)) == NULL) {
+ printf("insufficient memory\n");
+ continue;
+ }
+ s = __pmAccAddClient(inaddr, &perm);
+ host = __pmSockAddrToString(inaddr);
+ __pmSockAddrFree(inaddr);
+ if (s < 0) {
+ fprintf(stderr, "from %s error: %s\n", host, pmErrStr(s));
+ free(host);
+ continue;
+ }
+ fprintf(stderr, "got %03x for host %s\n", perm, host);
+ free(host);
+ }
+ }
+
+ return 0;
+}
diff --git a/qa/src/chkacc4.c b/qa/src/chkacc4.c
new file mode 100644
index 0000000..3c25825
--- /dev/null
+++ b/qa/src/chkacc4.c
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2013 Red Hat.
+ *
+ * Exercise basic user access control checking APIs.
+ * (non-Win32 variant of the test, uses uid_t/gid_t)
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#if defined(HAVE_PWD_H)
+#include <pwd.h>
+#endif
+#if defined(HAVE_GRP_H)
+#include <grp.h>
+#endif
+
+gid_t gid;
+struct group *grp, *groups;
+int ngroups;
+uid_t uid;
+struct passwd *usr, *users;
+int nusers;
+unsigned int op;
+
+int
+check_users(void)
+{
+ int c, s, sts = 0;
+
+ for (c = 0; c < nusers; c++) {
+ usr = &users[c];
+ if ((s = __pmAccAddUser(usr->pw_name, 1 << c, 1 << c, 0)) < 0) {
+ printf("cannot add user for op%d: %s\n", c, pmErrStr(s));
+ sts = s;
+ }
+ }
+ if (sts < 0)
+ return 1;
+
+ putc('\n', stderr);
+ __pmAccDumpUsers(stderr);
+ putc('\n', stderr);
+
+ for (c = 0; c < WORD_BIT; c++) {
+ usr = &users[c % nusers];
+ sts = __pmAccAddAccount(usr->pw_name, NULL, &op);
+ if (sts < 0) {
+ printf("add user #%d (%s): %s\n", c, usr->pw_name, pmErrStr(sts));
+ continue;
+ }
+ else if (op != (1 << c))
+ printf("account %d: __pmAccAddAccount returns denyOpsResult 0x%x (expected 0x%x)\n",
+ c, op, 1 << c);
+ }
+
+ putc('\n', stderr);
+ __pmAccDumpUsers(stderr);
+ putc('\n', stderr);
+ return 0;
+}
+
+int
+check_groups(void)
+{
+ int c, s, sts = 0;
+
+ for (c = 0; c < ngroups; c++) {
+ grp = &groups[c];
+ if ((s = __pmAccAddGroup(grp->gr_name, 1 << c, 1 << c, 0)) < 0) {
+ printf("cannot add group for op%d: %s\n", c, pmErrStr(s));
+ sts = s;
+ }
+ }
+ if (sts < 0)
+ return 1;
+
+ putc('\n', stderr);
+ __pmAccDumpGroups(stderr);
+ putc('\n', stderr);
+
+ for (c = 0; c < WORD_BIT; c++) {
+ grp = &groups[c % ngroups];
+ sts = __pmAccAddAccount(NULL, grp->gr_name, &op);
+ if (sts < 0) {
+ printf("add group #%d (%s): %s\n", c, grp->gr_name, pmErrStr(sts));
+ continue;
+ }
+ else if (op != (1 << c))
+ printf("account %d: __pmAccAddAccount returns denyOpsResult 0x%x (expected 0x%x)\n",
+ c, op, 1 << c);
+ }
+
+ putc('\n', stderr);
+ __pmAccDumpGroups(stderr);
+ putc('\n', stderr);
+ return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+ int c, sts;
+ int errflag = 0;
+ char *name;
+ size_t size;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:u:g:?")) != EOF) {
+ switch (c) {
+ case 'D': /* debug flag */
+ if ((sts = __pmParseDebug(optarg)) < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'g': /* another group ID */
+ gid = atoi(optarg);
+ if ((grp = getgrgid(gid)) == NULL) {
+ fprintf(stderr, "%s: getgrgid: unknown group identifier (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ size = (ngroups + 1) * sizeof(*grp);
+ if ((groups = realloc(groups, size)) == NULL)
+ __pmNoMem("gid realloc", size, PM_FATAL_ERR);
+ groups[ngroups] = *grp;
+ for (c = 0, name = grp->gr_mem[0]; name; c++, name++)
+ groups[ngroups].gr_mem[c] = strdup(name);
+ ngroups++;
+ break;
+
+ case 'u': /* another user ID */
+ uid = atoi(optarg);
+ if ((usr = getpwuid(uid)) == NULL) {
+ fprintf(stderr, "%s: getpwuid: unknown user identifier (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ size = (nusers + 1) * sizeof(*usr);
+ if ((users = realloc(users, size)) == NULL)
+ __pmNoMem("uid realloc", size, PM_FATAL_ERR);
+ memset(&users[nusers], 0, sizeof(*usr));
+ users[nusers].pw_name = strdup(usr->pw_name);
+ users[nusers].pw_uid = usr->pw_uid;
+ users[nusers].pw_gid = usr->pw_gid;
+ nusers++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options] uid ...\n\
+\n\
+Options:\n\
+ -D pmdebug set debugging diagnostics flag\n\
+ -u uid add numeric user ID to set used in testing\n\
+ -g gid add numeric group ID to set used in testing\n",
+ pmProgname);
+ return 1;
+ }
+
+ sts = 0;
+ for (op = 0; op < WORD_BIT; op++) {
+ if ((c = __pmAccAddOp(1 << op)) < 0) {
+ printf("Bad op %d: %s\n", op, pmErrStr(c));
+ sts = c;
+ }
+ if ((c = __pmAccAddOp(1 << op)) >= 0) {
+ printf("duplicate op test failed for op %d\n", op);
+ sts = -EINVAL;
+ }
+ }
+ if (sts < 0)
+ return 1;
+
+ if (nusers)
+ if ((sts = check_users()) != 0)
+ return sts;
+
+ if (ngroups)
+ if ((sts = check_groups()) != 0)
+ return sts;
+
+ return 0;
+}
diff --git a/qa/src/chkconnect.c b/qa/src/chkconnect.c
new file mode 100644
index 0000000..03e211b
--- /dev/null
+++ b/qa/src/chkconnect.c
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int j;
+ int numpmid;
+ int numval;
+ char *namelist[20];
+ pmID pmidlist[20];
+ pmResult *result;
+ int c;
+ int sts;
+ int i;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ char *endnum;
+ int iter = 100;
+
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-h hostname] [-i iterations] [-n namespace]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:i:n:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'i': /* iteration count */
+ iter = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -i requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace(%s): %s\n", namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ i = 0;
+ namelist[i++] = "sample.control";
+ namelist[i++] = "sampledso.control";
+ namelist[i++] = "sampledso.control";
+ namelist[i++] = "pmcd.control.debug";
+ namelist[i++] = "sample.control";
+ namelist[i++] = "pmcd.control.debug";
+ namelist[i++] = "sampledso.control";
+ namelist[i++] = "pmcd.control.debug";
+ namelist[i++] = "sample.control";
+ namelist[i++] = "sampledso.control";
+ namelist[i++] = "pmcd.control.debug";
+ namelist[i++] = "sample.control";
+ numpmid = i;
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts < 0) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(sts));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ for (i = 0; i < iter; i++) {
+ sts = pmNewContext(PM_CONTEXT_HOST, host);
+ if (sts < 0) {
+ fprintf(stderr, "pmNewContext: [iteration %d] %s\n", i, pmErrStr(sts));
+ exit(1);
+ }
+ else if (sts != i * 2)
+ fprintf(stderr, "Error: [iteration %d] pmNewContext handle expected %d, got %d\n", i, i * 2, sts);
+
+ numpmid = 1 + lrand48() % 12;
+ if ((sts = pmFetch(numpmid, pmidlist, &result)) < 0) {
+ fprintf(stderr, "pmFetch: [iteration %d] %s\n", i, pmErrStr(sts));
+ exit(1);
+ }
+ numval = 0;
+ for (j = 0; j < result->numpmid; j++) {
+ if (result->vset[j]->numval >= 0)
+ numval += result->vset[j]->numval;
+ }
+ if (numval != numpmid) {
+ fprintf(stderr, "Error: [iteration %d] pmFetch numval expected %d, got %d\n", i, numpmid, numval);
+ }
+ pmFreeResult(result);
+
+ sts = pmDupContext();
+ if (sts < 0) {
+ fprintf(stderr, "pmDupContext: [iteration %d] %s\n", i, pmErrStr(sts));
+ exit(1);
+ }
+ else if (sts != i * 2 + 1)
+ fprintf(stderr, "Error: [iteration %d] pmDupContext handle expected %d, got %d\n", i, i * 2 + 1, sts);
+
+ numpmid = 1 + lrand48() % 12;
+ if ((sts = pmFetch(numpmid, pmidlist, &result)) < 0) {
+ fprintf(stderr, "pmFetch: [iteration %d, dup context] %s\n", i, pmErrStr(sts));
+ exit(1);
+ }
+ numval = 0;
+ for (j = 0; j < result->numpmid; j++) {
+ if (result->vset[j]->numval >= 0)
+ numval += result->vset[j]->numval;
+ }
+ if (numval != numpmid) {
+ fprintf(stderr, "Error: [iteration %d] pmFetch numval expected %d, got %d\n", i, numpmid, numval);
+ }
+ pmFreeResult(result);
+
+ if ((sts = pmReconnectContext(i)) < 0) {
+ fprintf(stderr, "pmReconnectContext: [iteration %d] %s\n", i, pmErrStr(sts));
+ exit(1);
+ }
+
+ numpmid = 1 + lrand48() % 12;
+ if ((sts = pmFetch(numpmid, pmidlist, &result)) < 0) {
+ fprintf(stderr, "pmFetch: [iteration %d, recon] %s\n", i, pmErrStr(sts));
+ exit(1);
+ }
+ numval = 0;
+ for (j = 0; j < result->numpmid; j++) {
+ if (result->vset[j]->numval >= 0)
+ numval += result->vset[j]->numval;
+ }
+ if (numval != numpmid) {
+ fprintf(stderr, "Error: [iteration %d, recon] pmFetch numval expected %d, got %d\n", i, numpmid, numval);
+ }
+ pmFreeResult(result);
+
+ }
+
+ return 0;
+}
diff --git a/qa/src/chkctx2.c b/qa/src/chkctx2.c
new file mode 100644
index 0000000..84100bf
--- /dev/null
+++ b/qa/src/chkctx2.c
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#define SOURCE handle == 0 ? "host" : ( type == PM_CONTEXT_ARCHIVE ? "archive" : "host" )
+#define HOST handle == 0 ? "localhost" : host
+
+/*
+ * context and profile exerciser
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int inst_bin[] = { 100, 200, 300, 400, 500, 600, 700, 800, 900 };
+
+static int xpect_bin[] = { 1 };
+static int xpect_colour[] = { 0 };
+
+static char *namelist[] = {
+ "sampledso.bin",
+ "sampledso.colour"
+};
+
+/*
+ * handle profile values expected
+ * 0 bin=500, no colour 1 bin 0 colour
+ */
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ pmInDom indom_bin, indom_colour;
+ pmID metrics[2];
+ pmResult *resp;
+ pmDesc desc;
+ int handle;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-a archive] [-h hostname] [-L] [-n namespace]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:Ln:")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'L': /* local mode, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmLookupName(2, namelist, metrics)) < 0) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(sts));
+ fprintf(stderr, "pmids: 0x%x 0x%x\n", metrics[0], metrics[1]);
+ exit(1);
+ }
+
+ /* make context 0 the default localhost one */
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext(..., \"localhost\"): %s\n",
+ pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0)
+ type = PM_CONTEXT_HOST; /* default */
+
+ if (type == PM_CONTEXT_HOST) {
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ fprintf(stderr, "handle: pmNewContext(host=%s): %s\n", host, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else if (type == PM_CONTEXT_LOCAL) {
+ if ((sts = pmNewContext(PM_CONTEXT_LOCAL, host)) < 0) {
+ fprintf(stderr, "handle: pmNewContext(local): %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else {
+ if ((sts = pmNewContext(PM_CONTEXT_ARCHIVE, host)) < 0) {
+ fprintf(stderr, "handle: pmNewContext(archive=%s): %s\n", host, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ handle = sts;
+
+ while (handle >= 0) {
+ pmUseContext(handle);
+
+ if ((sts = pmLookupDesc(metrics[0], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: context=%d %s=%s %s: %s\n",
+ handle, SOURCE, HOST, namelist[0], pmErrStr(sts));
+ exit(1);
+ }
+ indom_bin = desc.indom;
+ if ((sts = pmLookupDesc(metrics[1], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: context=%d %s=%s %s: %s\n",
+ handle, SOURCE, HOST, namelist[1], pmErrStr(sts));
+ exit(1);
+ }
+ indom_colour = desc.indom;
+
+ pmDelProfile(indom_bin, 0, (int *)0);
+ pmAddProfile(indom_bin, 1, &inst_bin[4]);
+ pmDelProfile(indom_colour, 0, (int *)0);
+
+ sts = pmFetch(2, metrics, &resp);
+ if (sts < 0) {
+ fprintf(stderr, "botch @ context=%d %s=%s: pmFetch: %s\n",
+ handle, SOURCE, HOST, pmErrStr(sts));
+ }
+ else {
+ if (resp->numpmid != 2) {
+ fprintf(stderr, "botch @ context=%d %s=%s: numpmid %d != 2\n",
+ handle, SOURCE, HOST, resp->numpmid);
+ }
+ else {
+ if (resp->vset[0]->numval != xpect_bin[0]) {
+ fprintf(stderr, "botch @ context=%d %s=%s: [indom %s] numval got: %d expect: %d\n",
+ handle, SOURCE, HOST, pmInDomStr(indom_bin),
+ resp->vset[0]->numval, xpect_bin[0]);
+ }
+ if (resp->vset[1]->numval != xpect_colour[0]) {
+ fprintf(stderr, "botch @ context=%d %s=%s: [indom %s] numval got: %d expect: %d\n",
+ handle, SOURCE, HOST, pmInDomStr(indom_colour),
+ resp->vset[1]->numval, xpect_colour[0]);
+ }
+ }
+ pmFreeResult(resp);
+ }
+ if (handle) {
+ if ((sts = pmDestroyContext(handle)) < 0)
+ fprintf(stderr, "pmDestroyContext %d %s=%s: %s\n",
+ handle, SOURCE, HOST, pmErrStr(sts));
+ }
+ handle--;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/chkhelp.c b/qa/src/chkhelp.c
new file mode 100644
index 0000000..6a65fc5
--- /dev/null
+++ b/qa/src/chkhelp.c
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * exercise the help facilities
+ */
+
+#include <unistd.h>
+#include <ctype.h>
+#include <pcp/pmapi.h>
+
+int
+main()
+{
+ int i;
+ int j;
+ char *namelist[2];
+ pmID pmidlist[2];
+ int n;
+ int numpmid;
+ char *buf;
+ pmDesc desc;
+
+ if ((n = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ if ((n = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext(..., \"localhost\"): %s\n",
+ pmErrStr(n));
+ exit(1);
+ }
+
+ i = 0;
+ namelist[i++] = "sample.colour";
+ namelist[i++] = "sample.byte_ctr";
+ numpmid = i;
+ n = pmLookupName(numpmid, namelist, pmidlist);
+ if (n != numpmid) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ fprintf(stderr, " %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ for (j = 0; j < 3; j++) {
+ /* default context (j==0) then NewContext(j==1) then DupContext(j==2) */
+ for (i = 0; i < numpmid; i++) {
+ if (j == 0)
+ fprintf(stderr, "\nDefault Context\n");
+ else if (j == 1) {
+ fprintf(stderr, "\nNew Context\n");
+ if ((n = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ }
+ else {
+ fprintf(stderr, "\nDup Context\n");
+ if ((n = pmDupContext()) < 0) {
+ fprintf(stderr, "pmDupContext: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ }
+
+ fprintf(stderr, "metric: %s\n", namelist[i]);
+ if ((n = pmLookupDesc(pmidlist[i], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc failed: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ if ((n = pmLookupText(pmidlist[i], PM_TEXT_ONELINE, &buf)) < 0)
+ fprintf(stderr, "pmLookupText: %s\n", pmErrStr(n));
+ else {
+ fprintf(stderr, "\nOneline Text: %s\n", buf);
+ free(buf);
+ }
+
+ if ((n = pmLookupInDomText(desc.indom, PM_TEXT_ONELINE, &buf)) < 0)
+ fprintf(stderr, "pmLookupInDomText: %s\n", pmErrStr(n));
+ else {
+ fprintf(stderr, "\nOneline InDomText: %s\n", buf);
+ free(buf);
+ }
+
+ if ((n = pmLookupText(pmidlist[i], PM_TEXT_HELP, &buf)) < 0)
+ fprintf(stderr, "pmLookupText: %s\n", pmErrStr(n));
+ else {
+ fprintf(stderr, "\nHelp Text: %s\n", buf);
+ free(buf);
+ }
+
+ if ((n = pmLookupInDomText(desc.indom, PM_TEXT_HELP, &buf)) < 0)
+ fprintf(stderr, "pmLookupInDomText: %s\n", pmErrStr(n));
+ else {
+ fprintf(stderr, "\nHelp InDomText: %s\n", buf);
+ free(buf);
+ }
+ }
+ }
+
+ exit(0);
+}
diff --git a/qa/src/chknumval.c b/qa/src/chknumval.c
new file mode 100644
index 0000000..6293876
--- /dev/null
+++ b/qa/src/chknumval.c
@@ -0,0 +1,289 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * chknumval - check out new encoding of errors within numval of a pmResult
+ *
+ * also drives pmStore, __pmConnectLogger and __pmControlLog testing
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *errmsg;
+ int type = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ int i;
+ int ctlport;
+ int pid = PM_LOG_PRIMARY_PID;
+ int port = PM_LOG_NO_PORT;
+ char *namelist[20];
+ pmID pmidlist[20];
+ int *instlist;
+ char **inamelist;
+ int numpmid = 0;
+ int default_metrics = 0;
+ pmResult *req;
+ pmResult *status;
+ pmDesc desc;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:K:Ln:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* hostname for PMCD to contact */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of --h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'K': /* update local PMDA table */
+ if ((errmsg = __pmSpecLocalPMDA(optarg)) != NULL) {
+ fprintf(stderr, "%s: __pmSpecLocalPMDA failed: %s\n", pmProgname, errmsg);
+ errflag++;
+ }
+ break;
+
+ case 'L': /* local PMDA connection, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_LOCAL;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options] [metricname ...]\n\
+\n\
+Options\n\
+ -D debug standard PCP debug flag\n\
+ -h host metrics source is PMCD on host (default is localhost)\n\
+ -L metrics source is local connection to PMDA, no PMCD\n\
+ -K spec optional additional PMDA spec for local connection\n\
+ spec is of the form op,domain,dso-path,init-routine\n\
+ -n namespace use an alternative PMNS\n\
+ -v be verbose\n",
+ pmProgname);
+ exit(1);
+ }
+
+ while (optind < argc) {
+ namelist[numpmid++] = argv[optind];
+ optind++;
+ }
+ if (numpmid > 0 && numpmid < 3) {
+ printf("Quitting need at least 3 metrics (not %d) for numval tests\n", numpmid);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: pmLoadNameSpace: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) type = PM_CONTEXT_HOST;
+ if ((sts = pmNewContext(type, host)) < 0) {
+ printf("%s: pmNewContext(%d, %s): %s\n", pmProgname, type, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = __pmConnectLogger(host, &pid, &port)) < 0) {
+ printf("%s: Cannot connect to primary pmlogger on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+ ctlport = sts;
+
+ if (numpmid == 0) {
+ /* default metrics */
+ default_metrics = 1;
+ i = 0;
+ namelist[i++] = "pmcd.control.debug";
+ namelist[i++] = "sampledso.long.write_me";
+ namelist[i++] = "sample.colour";
+ numpmid = i;
+ }
+
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts != numpmid) {
+ printf("pmLookupName: failed: %s\n", sts < 0 ? pmErrStr(sts) : "");
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ if ((sts = pmFetch(numpmid, pmidlist, &req)) < 0) {
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = __pmControlLog(ctlport, req, PM_LOG_MANDATORY, PM_LOG_OFF, 0, &status)) < 0) {
+ printf("__pmControlLog: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ __pmDumpResult(stdout, req);
+
+ printf("\nbase store test (failures not unexpected) ...\n");
+ if ((sts = pmStore(req)) < 0)
+ printf("pmStore: %s\n", pmErrStr(sts));
+ else
+ printf("pmStore: OK\n");
+
+ printf("\nnumpmid == 0 tests (failures expected) ...\n");
+ req->numpmid = 0;
+ __pmDumpResult(stdout, req);
+
+ if ((sts = pmStore(req)) < 0)
+ printf("pmStore: %s\n", pmErrStr(sts));
+ else
+ printf("pmStore: botch, PM_ERR_TOOSMALL expected\n");
+ if ((sts = __pmControlLog(ctlport, req, PM_LOG_ENQUIRE, 0, 0, &status)) < 0)
+ printf("__pmControlLog: %s\n", pmErrStr(sts));
+ else {
+ printf("__pmControlLog: OK\n");
+ __pmDumpResult(stdout, status);
+ pmFreeResult(status);
+ }
+
+ printf("\nnumval == 0 tests (failures expected) ...\n");
+ req->numpmid = numpmid;
+ req->vset[1]->numval = 0;
+ __pmDumpResult(stdout, req);
+
+ if ((sts = pmStore(req)) < 0)
+ printf("pmStore: %s\n", pmErrStr(sts));
+ else
+ printf("pmStore: botch, PM_ERR_VALUE expected\n");
+ if ((sts = __pmControlLog(ctlport, req, PM_LOG_ENQUIRE, 0, 0, &status)) < 0)
+ printf("__pmControlLog: %s\n", pmErrStr(sts));
+ else {
+ printf("__pmControlLog: OK\n");
+ __pmDumpResult(stdout, status);
+ pmFreeResult(status);
+ }
+
+ printf("\nnumval < 0 tests (failures expected) ...\n");
+ req->vset[1]->numval = 1;
+ req->vset[2]->numval = PM_ERR_NOAGENT;
+ __pmDumpResult(stdout, req);
+
+ if ((sts = pmStore(req)) < 0)
+ printf("pmStore: %s\n", pmErrStr(sts));
+ else
+ printf("pmStore: botch, PM_ERR_VALUE expected\n");
+ if ((sts = __pmControlLog(ctlport, req, PM_LOG_ENQUIRE, 0, 0, &status)) < 0)
+ printf("__pmControlLog: %s\n", pmErrStr(sts));
+ else {
+ printf("__pmControlLog: OK\n");
+ __pmDumpResult(stdout, status);
+ pmFreeResult(status);
+ }
+
+ /* exercise *.needprofile */
+ pmFreeResult(req);
+
+ if (default_metrics) {
+ i = 0;
+ namelist[i++] = "sampledso.long.hundred";
+ namelist[i++] = "sampledso.needprofile";
+ namelist[i++] = "sample.long.hundred";
+ namelist[i++] = "sample.needprofile";
+ numpmid = i;
+ }
+ else {
+ if (numpmid < 4) {
+ printf("Quitting need at least 4 metrics for profile tests\n");
+ exit(1);
+ }
+ printf("Warning: running profile tests with non-default metrics ...\n");
+ printf("... metric %s needs an indom with at least %d instances\n", namelist[1], 5);
+ printf("... metric %s needs an indom with at least %d instances\n", namelist[3], 4);
+ }
+
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts != numpmid) {
+ printf("pmLookupName: failed: %s\n", sts < 0 ? pmErrStr(sts) : "");
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ if ((sts = pmFetch(numpmid, pmidlist, &req)) < 0) {
+ printf("pmFetch: botch, %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ __pmDumpResult(stdout, req);
+
+ if ((sts = pmLookupDesc(pmidlist[1], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmGetInDom(desc.indom, &instlist, &inamelist)) < 0) {
+ printf("pmGetInDom: %s\n", pmErrStr(sts));
+ }
+ pmAddProfile(desc.indom, 1, &instlist[0]);
+ pmAddProfile(desc.indom, 1, &instlist[2]);
+ pmAddProfile(desc.indom, 1, &instlist[4]);
+ free(instlist);
+ free(inamelist);
+
+ if ((sts = pmLookupDesc(pmidlist[3], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmGetInDom(desc.indom, &instlist, &inamelist)) < 0) {
+ printf("pmGetInDom: %s\n", pmErrStr(sts));
+ }
+ pmAddProfile(desc.indom, 1, &instlist[1]);
+ pmAddProfile(desc.indom, 1, &instlist[3]);
+ free(instlist);
+ free(inamelist);
+
+ if ((sts = pmFetch(numpmid, pmidlist, &req)) < 0) {
+ printf("pmFetch: botch, %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ __pmDumpResult(stdout, req);
+
+ exit(0);
+}
diff --git a/qa/src/chkopenlog.c b/qa/src/chkopenlog.c
new file mode 100644
index 0000000..eb5c22c
--- /dev/null
+++ b/qa/src/chkopenlog.c
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int sts;
+ FILE *f;
+ FILE *fout;
+ int fd;
+ int nextfd;
+
+ close(3); /* some stdio versions start with this open */
+ close(4); /* some stdio versions start with this open */
+ fd = atoi(argv[1]);
+ if (fd == 1) fout = stdout;
+ else if (fd == 2) fout = stderr;
+ else fout = fopen("/tmp/chk.fout", "w");
+ if (fout == NULL) {
+ fprintf(stderr, "chkopenlog: botched open ... fd=%d\n", fd);
+ sts = system("ls -l /tmp/chk.fout");
+ exit(sts == 0 ? 1 : sts);
+ }
+
+ fprintf(fout, "This message on oldstream before __pmOpenLog() called\n");
+
+
+#define whatis(f) (f == (stderr) ? " (stderr)" : (f == (stdout) ? " (stdout)" : (f == NULL ? " (NULL)" : "")))
+
+ nextfd = open("/dev/null", 0);
+ if (nextfd < 0) {
+ fprintf(stderr, "chkopenlog: failed /dev/null open\n");
+ exit(2);
+ }
+ fprintf(stderr, "Starting with oldstream%s fd=%d, nextfd=%d\n", whatis(fout), fileno(fout), nextfd);
+ close(nextfd);
+
+ nextfd = open("/dev/null", 0);
+ f = __pmOpenLog("chkopenlog", argv[2], fout, &sts);
+ fprintf(stderr, "__pmOpenLog -> sts=%d, log %s newstream%s fd=%d, nextfd=%d\n",
+ sts, argv[2], whatis(f), f != NULL ? fileno(f) : -1, nextfd);
+ if (f != NULL)
+ fprintf(f, "[a helpful little message]\n");
+
+ exit(0);
+}
diff --git a/qa/src/chkoptfetch.c b/qa/src/chkoptfetch.c
new file mode 100644
index 0000000..7fde1b0
--- /dev/null
+++ b/qa/src/chkoptfetch.c
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static fetchctl_t *root;
+
+static optreq_t *req;
+static pmDesc *desc;
+static int *cost;
+static int *nfetch;
+static pmUnits nounits;
+
+static void
+setup(int i, int pmid_d, int pmid_i, int indom_d, int indom_s, int loinst, int hiinst)
+{
+ int j;
+ int numinst;
+ static int pmid = 0;
+ static int indom = 0;
+ static __pmID_int *pmidp = (__pmID_int *)&pmid;
+ static __pmInDom_int *indomp = (__pmInDom_int *)&indom;
+
+ pmidp->flag = 0;
+ pmidp->domain = pmid_d;
+ pmidp->cluster = 0;
+ pmidp->item = pmid_i;
+ indomp->flag = 0;
+ indomp->domain = indom_d;
+ indomp->serial = indom_s;
+
+ desc = (pmDesc *)realloc(desc, (i+1) * sizeof(desc[0]));
+ if (desc == (pmDesc *)0) {
+ __pmNoMem("setup.desc", (i+1) * sizeof(desc[0]), PM_FATAL_ERR);
+ }
+ desc[i].pmid = pmid;
+ desc[i].type = PM_TYPE_32;
+ desc[i].indom = indom;
+ desc[i].sem = PM_SEM_DISCRETE;
+ desc[i].units = nounits;
+
+ req = (optreq_t *)realloc(req, (i+1) * sizeof(req[0]));
+ if (req == (optreq_t *)0) {
+ __pmNoMem("setup.req", (i+1) * sizeof(req[0]), PM_FATAL_ERR);
+ }
+ if (loinst != -1) {
+ req[i].r_numinst = numinst = (hiinst - loinst + 1);
+ req[i].r_instlist = (int *)malloc(numinst * sizeof(req[i].r_instlist[0]));
+ if (req[i].r_instlist == (int *)0) {
+ __pmNoMem("setup.instlist", numinst * sizeof(req[i].r_instlist[0]), PM_FATAL_ERR);
+ }
+ for (j = 0; j < numinst; j++)
+ req[i].r_instlist[j] = loinst + j;
+ }
+ else {
+ /* use loinst == -1 to flag "all" instances here */
+ req[i].r_numinst = 0;
+ req[i].r_instlist = (int *)0;
+ }
+
+ cost = (int *)realloc(cost, (i+1) * sizeof(cost[0]));
+ if (cost == (int *)0) {
+ __pmNoMem("setup.cost", (i+1) * sizeof(cost[0]), PM_FATAL_ERR);
+ }
+ nfetch = (int *)realloc(nfetch, (i+1) * sizeof(nfetch[0]));
+ if (nfetch == (int *)0) {
+ __pmNoMem("setup.nfetch", (i+1) * sizeof(nfetch[0]), PM_FATAL_ERR);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int errflag = 0;
+ int sts;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "";
+ int i;
+ int numreq;
+ int numfetch;
+ int totcost;
+ int dump;
+ int numfail;
+ optcost_t ocp = { 4, 1, 15, 10, 2, 0 }; /* my costs */
+ fetchctl_t *fp;
+
+ __pmSetProgname(pmProgname);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ __pmOptFetchPutParams(&ocp);
+ __pmOptFetchGetParams(&ocp);
+ fprintf(stderr, "optFetch Cost Parameters:\n pmid=%d indom=%d fetch=%d indomsize=%d, xtrainst=%d scope=%d\n",
+ ocp.c_pmid, ocp.c_indom, ocp.c_fetch,
+ ocp.c_indomsize, ocp.c_xtrainst, ocp.c_scope);
+
+ i = 0;
+ setup(i, 3, 4, 3, 7, 1, 3);
+ nfetch[i] = 1;
+ cost[i] = ocp.c_fetch + ocp.c_pmid + ocp.c_indom;
+ setup(++i, 3, 4, 3, 7, -1, -1);
+ nfetch[i] = 1;
+ cost[i] = cost[i-1] - ocp.c_fetch;
+ setup(++i, 3, 5, 3, 7, 1, 5);
+ nfetch[i] = 1;
+ cost[i] = ocp.c_pmid + ocp.c_indom + (ocp.c_indomsize - 5) * ocp.c_xtrainst;
+ setup(++i, 3, 6, 3, 7, 1, 8);
+ nfetch[i] = 1;
+ cost[i] = cost[i-1] + (ocp.c_indomsize - 8) * ocp.c_xtrainst;
+ setup(++i, 3, 7, 3, 7, 11, 11);
+ nfetch[i] = 1;
+ cost[i] = cost[i-1] + (ocp.c_indomsize - 1) * ocp.c_xtrainst;
+ setup(++i, 4, 4, 3, 7, -1, -1);
+ nfetch[i] = 1;
+ cost[i] = cost[i-1] + ocp.c_pmid;
+ setup(++i, 5, 4, 3, 7, 1, 5);
+ nfetch[i] = 1;
+ cost[i] = cost[i-1] + ocp.c_pmid + (ocp.c_indomsize - 5) * ocp.c_xtrainst;
+ setup(++i, 6, 4, 3, 7, 1, 8);
+ nfetch[i] = 1;
+ cost[i] = cost[i-1] + ocp.c_pmid + (ocp.c_indomsize - 8) * ocp.c_xtrainst;
+ setup(++i, 7, 4, 3, 7, 11, 11);
+ nfetch[i] = 2;
+ cost[i] = cost[i-1] + ocp.c_fetch + ocp.c_pmid + ocp.c_indom;
+ setup(++i, 7, 4, 3, 7, 10, 12);
+ nfetch[i] = 2;
+ cost[i] = cost[i-1] - ocp.c_fetch;
+ setup(++i, 7, 4, 3, 7, 9, 13);
+ nfetch[i] = 2;
+ cost[i] = cost[i-1];
+
+ numreq = ++i;
+
+ numfail = 0;
+ for (i = 0; i < numreq; i++) {
+ req[i].r_desc = &desc[i];
+ __pmOptFetchAdd(&root, &req[i]);
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_OPTFETCH) {
+ fprintf(stdout, "\nAdd request %d @ " PRINTF_P_PFX "%p\n", i, &req[i]);
+ __pmOptFetchDump(stdout, root);
+ }
+#endif
+ numfetch = 0;
+ totcost = 0;
+ for (fp = root; fp != (fetchctl_t *)0; fp = fp->f_next) {
+ fp->f_state &= (~ OPT_STATE_UMASK);
+ totcost += fp->f_cost;
+ numfetch++;
+ }
+ dump = 0;
+ if (numfetch != nfetch[i]) {
+ printf("After adding request %d, no. fetches %d, expected %d\n",
+ i, numfetch, nfetch[i]);
+ dump = 1;
+ }
+ if (totcost != cost[i]) {
+ printf("After adding request %d, total cost %d, expected %d\n",
+ i, totcost, cost[i]);
+ dump = 1;
+ }
+ if (dump == 1) {
+ numfail++;
+ __pmOptFetchDump(stdout, root);
+ }
+ }
+
+ printf("Passed %d of %d addition tests\n", numreq - numfail, numreq);
+
+ numfail = 0;
+ for (i = numreq-1; i >= 0; i--) {
+ __pmOptFetchDel(&root, &req[i]);
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_OPTFETCH) {
+ fprintf(stdout, "\nDelete request %d @ " PRINTF_P_PFX "%p\n", i, &req[i]);
+ __pmOptFetchDump(stdout, root);
+ }
+#endif
+ if (i == 0)
+ continue;
+ numfetch = 0;
+ totcost = 0;
+ for (fp = root; fp != (fetchctl_t *)0; fp = fp->f_next) {
+ fp->f_state &= (~ OPT_STATE_UMASK);
+ totcost += fp->f_cost;
+ numfetch++;
+ }
+ /* handle special costs when we added another fetch to the group */
+ if (i == 1)
+ totcost += ocp.c_fetch;
+ else if (nfetch[i-1] != nfetch[i-2])
+ totcost += ocp.c_fetch * (nfetch[i-1] - nfetch[i-2]);
+
+ dump = 0;
+ if (numfetch != nfetch[i-1]) {
+ printf("After deleting data set %d, no. fetches %d, expected %d\n",
+ i, numfetch, nfetch[i-1]);
+ dump = 1;
+ }
+ if (totcost != cost[i-1]) {
+ printf("After deleting request %d, total cost %d, expected %d\n",
+ i, totcost, cost[i-1]);
+ dump = 1;
+ }
+ if (dump == 1) {
+ numfail++;
+ __pmOptFetchDump(stdout, root);
+ }
+ }
+ if (root != (fetchctl_t *)0) {
+ printf("Botch: expected no fetch lists after all requests deleted, got ...\n");
+ __pmOptFetchDump(stdout, root);
+ root = (fetchctl_t *)0;
+ numfail++;
+ }
+
+ printf("Passed %d of %d deletion tests\n", numreq - numfail, numreq);
+
+ /* add them all back again */
+ for (i = 0; i < numreq; i++) {
+ req[i].r_desc = &desc[i];
+ __pmOptFetchAdd(&root, &req[i]);
+ }
+ numfetch = 0;
+ totcost = 0;
+ for (fp = root; fp != (fetchctl_t *)0; fp = fp->f_next) {
+ totcost += fp->f_cost;
+ numfetch++;
+ }
+ printf("Before re-arrangement no. fetches %d, total cost %d\n", numfetch, totcost);
+
+ /* and re-arrange, a few times */
+ for (i = 0; i < 10; i++) {
+ __pmOptFetchRedo(&root);
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_OPTFETCH) {
+ fprintf(stdout, "\nNow try a redo ...\n");
+ __pmOptFetchDump(stdout, root);
+ }
+#endif
+ numfetch = 0;
+ totcost = 0;
+ for (fp = root; fp != (fetchctl_t *)0; fp = fp->f_next) {
+ totcost += fp->f_cost;
+ numfetch++;
+ }
+ printf("After re-arrangement no. fetches %d, total cost %d\n", numfetch, totcost);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/chkputlogresult.c b/qa/src/chkputlogresult.c
new file mode 100644
index 0000000..17c2835
--- /dev/null
+++ b/qa/src/chkputlogresult.c
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+ *
+ * Excercise __pmLogPutResult() and __pmLogPutResult2().
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <assert.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int i;
+ int sts;
+ int bflag = 0;
+ int errflag = 0;
+ char *metrics[] = {
+ "sampledso.long.one",
+ "sampledso.ulonglong.one",
+ "sampledso.float.one",
+ "sampledso.double.one",
+ "sampledso.string.hullo",
+ "sampledso.bin",
+ };
+ int nmetric = sizeof(metrics)/sizeof(metrics[0]);
+ pmID *pmids;
+ pmDesc desc;
+ pmResult *rp;
+ __pmLogCtl ctl = { 0 };
+ __pmPDU *pdp;
+ __pmTimeval epoch = { 0, 0 };
+ int numinst;
+ int *ilist;
+ char **nlist;
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "bD::?")) != EOF) {
+ switch (c) {
+
+ case 'b': /* backwards compatibility */
+ bflag++;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc-1) {
+ fprintf(stderr,
+"Usage: %s [options] archive\n\
+\n\
+Options:\n\
+ -b backwards compatibility (use __pmLogPutResult() instead\n\
+ __pmLogPutResult2(), the default\n\
+ -D debugflag[,...]\n\
+",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, "local:")) < 0) {
+ fprintf(stderr, "%s: Cannot connect to PMCD on \"local:\": %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = __pmLogCreate("qatest", argv[optind], LOG_PDU_VERSION, &ctl)) != 0) {
+ fprintf(stderr, "%s: __pmLogCreate failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ ctl.l_state = PM_LOG_STATE_INIT;
+
+ /*
+ * make the archive label deterministic
+ */
+ ctl.l_label.ill_pid = 1234;
+ ctl.l_label.ill_start.tv_sec = epoch.tv_sec;
+ ctl.l_label.ill_start.tv_usec = epoch.tv_usec;
+ strcpy(ctl.l_label.ill_hostname, "happycamper");
+ strcpy(ctl.l_label.ill_tz, "UTC");
+
+ ctl.l_label.ill_vol = PM_LOG_VOL_TI;
+ if ((sts = __pmLogWriteLabel(ctl.l_tifp, &ctl.l_label)) != 0) {
+ fprintf(stderr, "%s: __pmLogWriteLabel TI failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ ctl.l_label.ill_vol = PM_LOG_VOL_META;
+ if ((sts = __pmLogWriteLabel(ctl.l_mdfp, &ctl.l_label)) != 0) {
+ fprintf(stderr, "%s: __pmLogWriteLabel META failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ ctl.l_label.ill_vol = 0;
+ if ((sts = __pmLogWriteLabel(ctl.l_mfp, &ctl.l_label)) != 0) {
+ fprintf(stderr, "%s: __pmLogWriteLabel VOL 0 failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ fflush(ctl.l_mfp);
+ fflush(ctl.l_mdfp);
+ __pmLogPutIndex(&ctl, &epoch);
+
+ pmids = (pmID *)malloc(nmetric*sizeof(pmID));
+ assert(pmids != NULL);
+ for (i = 0; i < nmetric; i++) {
+ if ((sts = pmLookupName(1, &metrics[i], &pmids[i])) != 1) {
+ fprintf(stderr, "%s: pmLookupName(\"%s\") failed: %s\n", pmProgname, metrics[i], pmErrStr(sts));
+ exit(1);
+ }
+ printf("%s -> %s\n", metrics[i], pmIDStr(pmids[i]));
+ if ((sts = pmLookupDesc(pmids[i], &desc)) < 0) {
+ fprintf(stderr, "%s: pmLookupDesc(\"%s\") failed: %s\n", pmProgname, pmIDStr(pmids[i]), pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = __pmLogPutDesc(&ctl, &desc, 1, &metrics[i])) < 0) {
+ fprintf(stderr, "%s: __pmLogPutDesc(\"%s\") failed: %s\n", pmProgname, pmIDStr(pmids[i]), pmErrStr(sts));
+ exit(1);
+ }
+ if (desc.indom != PM_INDOM_NULL) {
+ if ((numinst = pmGetInDom(desc.indom, &ilist, &nlist)) < 0) {
+ printf("pmGetInDom: %s: %s\n", pmInDomStr(desc.indom), pmErrStr(numinst));
+ exit(1);
+ }
+ if ((sts = __pmLogPutInDom(&ctl, desc.indom, &epoch, numinst, ilist, nlist)) < 0) {
+ fprintf(stderr, "%s: __pmLogPutInDom(...,indom=%s,numinst=%d,...) failed: %s\n", pmProgname, pmInDomStr(desc.indom), numinst, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ }
+ for (i = 0; i < nmetric; i++) {
+ if ((sts = pmFetch(i+1, pmids, &rp)) < 0) {
+ fprintf(stderr, "%s: pmFetch(%d, ...) failed: %s\n", pmProgname, i+1, pmErrStr(sts));
+ exit(1);
+ }
+ rp->timestamp.tv_sec = ++epoch.tv_sec;
+ rp->timestamp.tv_usec = epoch.tv_usec;
+ if ((sts = __pmEncodeResult(fileno(ctl.l_mfp), rp, &pdp)) < 0) {
+ fprintf(stderr, "%s: __pmEncodeResult failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ __pmOverrideLastFd(fileno(ctl.l_mfp));
+ if (bflag) {
+ printf("__pmLogPutResult: %d metrics ...\n", i+1);
+ if ((sts = __pmLogPutResult(&ctl, pdp)) < 0) {
+ fprintf(stderr, "%s: __pmLogPutResult failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else {
+ printf("__pmLogPutResult2: %d metrics ...\n", i+1);
+ if ((sts = __pmLogPutResult2(&ctl, pdp)) < 0) {
+ fprintf(stderr, "%s: __pmLogPutResult2 failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ __pmUnpinPDUBuf(pdp);
+ pmFreeResult(rp);
+ }
+
+ fflush(ctl.l_mfp);
+ fflush(ctl.l_mdfp);
+ __pmLogPutIndex(&ctl, &epoch);
+
+ return 0;
+}
diff --git a/qa/src/chktrim.c b/qa/src/chktrim.c
new file mode 100644
index 0000000..28bae81
--- /dev/null
+++ b/qa/src/chktrim.c
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * Check new functionality of pmTrimNameSpace
+ */
+
+#include <ctype.h>
+#include <string.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+extern int errno;
+
+static char tag;
+
+static void
+dometric(const char *name)
+{
+ printf("%c %s\n", tag, name);
+}
+
+int
+main(argc, argv)
+int argc;
+char *argv[];
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *namespace = PM_NS_DEFAULT;
+ int ctx; /* context for localhost */
+ int arch; /* context for archive */
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-n namespace] archive";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:n:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc-1) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ printf("%s: pmNewContext(localhost): %s\n", pmProgname, pmErrStr(ctx));
+ exit(1);
+ }
+
+ printf("0 NameSpace for host context ...\n");
+ tag = '0';
+ pmTraversePMNS("sample", dometric);
+
+ if ((arch = pmNewContext(PM_CONTEXT_ARCHIVE, argv[optind])) < 0) {
+ printf("%s: pmNewContext(%s): %s\n", pmProgname, argv[optind], pmErrStr(arch));
+ exit(1);
+ }
+
+ printf("1\n1 Trimmed NameSpace for archive context ...\n");
+ pmTrimNameSpace();
+ tag = '1';
+ pmTraversePMNS("", dometric);
+
+ printf("2\n2 Trimmed NameSpace for host context ...\n");
+ pmUseContext(ctx);
+ pmTrimNameSpace();
+ tag = '2';
+ pmTraversePMNS("sample", dometric);
+
+ exit(0);
+}
diff --git a/qa/src/churnctx.c b/qa/src/churnctx.c
new file mode 100644
index 0000000..bfedad7
--- /dev/null
+++ b/qa/src/churnctx.c
@@ -0,0 +1,429 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+ *
+ * Churn a context ... looking for memory leaks a la
+ * http://oss.sgi.com/bugzilla/show_bug.cgi?id=1057
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#define BUILD_STANDALONE 1
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int ctx;
+ int dupctx = 0;
+ int nmetric;
+ int iter;
+ int errflag = 0;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ int mode = PM_MODE_INTERP; /* mode for archives */
+ char *configfile = NULL;
+ char *start = NULL;
+ char *finish = NULL;
+ char *align = NULL;
+ char *offset = NULL;
+ char *logfile = NULL;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = NULL; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *pmnsfile = PM_NS_DEFAULT;
+ int samples = 1;
+ char *endnum;
+ char **name = NULL;
+ pmID *pmid = NULL;
+ pmResult *rp;
+ char *highwater = NULL;
+ struct timeval delta = { 15, 0 };
+ struct timeval startTime;
+ struct timeval endTime;
+ struct timeval appStart;
+ struct timeval appEnd;
+ struct timeval appOffset;
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ setvbuf(stdout, NULL, _IONBF, 0);
+ setvbuf(stderr, NULL, _IONBF, 0);
+
+ while ((c = getopt(argc, argv, "a:A:c:D:dh:l:Ln:O:s:S:t:T:U:zZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+#ifdef BUILD_STANDALONE
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+#else
+ fprintf(stderr, "%s: at most one of -a and -h allowed\n", pmProgname);
+#endif
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'A': /* time alignment */
+ align = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != NULL) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'd': /* dup context rather than new context */
+ dupctx = 1;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+#ifdef BUILD_STANDALONE
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+#else
+ fprintf(stderr, "%s: at most one of -a and -h allowed\n", pmProgname);
+#endif
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+#ifdef BUILD_STANDALONE
+ case 'L': /* LOCAL, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ putenv("PMDA_LOCAL_PROC="); /* if proc PMDA needed */
+ putenv("PMDA_LOCAL_SAMPLE="); /* if sampledso PMDA needed */
+ break;
+#endif
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ pmnsfile = optarg;
+ break;
+
+ case 'O': /* sample offset time */
+ offset = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'S': /* start time */
+ start = optarg;
+ break;
+
+ case 't': /* change update interval */
+ if (pmParseInterval(optarg, &delta, &endnum) < 0) {
+ fprintf(stderr, "%s: illegal -t argument\n", pmProgname);
+ fputs(endnum, stderr);
+ free(endnum);
+ errflag++;
+ }
+ break;
+
+ case 'T': /* terminate time */
+ finish = optarg;
+ break;
+
+ case 'U': /* uninterpolated archive log */
+ if (type != 0) {
+#ifdef BUILD_STANDALONE
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+#else
+ fprintf(stderr, "%s: at most one of -a, -h and -U allowed\n", pmProgname);
+#endif
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ mode = PM_MODE_FORW;
+ host = optarg;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != NULL) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a, -h or -U option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options] [metrics ...]\n\
+\n\
+Options:\n\
+ -a archive metrics source is a PCP log archive\n\
+ -A align align sample times on natural boundaries\n\
+ -c configfile file to load configuration from\n\
+ -d use pmDupContext [default: pmNewContext]\n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n"
+#ifdef BUILD_STANDALONE
+" -L use local context instead of PMCD\n"
+#endif
+" -n pmnsfile use an alternative PMNS\n\
+ -O offset initial offset into the time window\n\
+ -s samples terminate after this many iterations [default 1]\n\
+ -S starttime start of the time window\n\
+ -t interval sample interval [default 15.0 seconds]\n\
+ -T endtime end of the time window\n\
+ -z set reporting timezone to local time of metrics source\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != NULL) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if (pmnsfile != PM_NS_DEFAULT && (sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname,
+ pmnsfile, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ (void)gethostname(local, MAXHOSTNAMELEN);
+ local[MAXHOSTNAMELEN-1] = '\0';
+ host = local;
+ }
+ if ((ctx = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(ctx));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(ctx));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ startTime = label.ll_start;
+ if ((sts = pmGetArchiveEnd(&endTime)) < 0) {
+ endTime.tv_sec = INT_MAX;
+ endTime.tv_usec = 0;
+ fflush(stdout);
+ fprintf(stderr, "%s: Cannot locate end of archive: %s\n",
+ pmProgname, pmErrStr(sts));
+ fprintf(stderr, "\nWARNING: This archive is sufficiently damaged that it may not be possible to\n");
+ fprintf(stderr, " produce complete information. Continuing and hoping for the best.\n\n");
+ fflush(stderr);
+ }
+ }
+ else {
+ gettimeofday(&startTime, NULL);
+ endTime.tv_sec = INT_MAX;
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != NULL) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ nmetric = 0;
+ while (optind < argc) {
+ nmetric++;
+ if ((name = (char **)realloc(name, nmetric*sizeof(name[0]))) == NULL) {
+ fprintf(stderr, "name[%d] malloc failed @ %s\n", nmetric-1, argv[optind]);
+ exit(1);
+ }
+ name[nmetric-1] = argv[optind];
+ if ((pmid = (pmID *)realloc(pmid, nmetric*sizeof(pmid[0]))) == NULL) {
+ fprintf(stderr, "pmid[%d] malloc failed @ %s\n", nmetric-1, argv[optind]);
+ exit(1);
+ }
+ if ((sts = pmLookupName(1, &name[nmetric-1], &pmid[nmetric-1])) < 0) {
+ fprintf(stderr, "Warning: pmLookupName(\"%s\",...) failed: %s\n", name[nmetric-1], pmErrStr(sts));
+ }
+ optind++;
+ }
+
+ if (align != NULL && type != PM_CONTEXT_ARCHIVE) {
+ fprintf(stderr, "%s: -A option only supported for PCP archives, alignment request ignored\n",
+ pmProgname);
+ align = NULL;
+ }
+
+ sts = pmParseTimeWindow(start, finish, align, offset, &startTime,
+ &endTime, &appStart, &appEnd, &appOffset,
+ &endnum);
+ if (sts < 0) {
+ fprintf(stderr, "%s: illegal time window specification\n%s", pmProgname, endnum);
+ exit(1);
+ }
+
+ iter = 1;
+ while (samples == -1 || samples-- > 0) {
+ int new_ctx;
+ char *check;
+
+ if (dupctx) {
+ if ((new_ctx = pmDupContext()) < 0) {
+ fprintf(stderr, "%s: pmDupContext failed: %s\n", pmProgname, pmErrStr(new_ctx));
+ exit(1);
+ }
+ }
+ else {
+ if ((new_ctx = pmNewContext(type, host)) < 0) {
+ fprintf(stderr, "%s: pmNewContext failed: %s\n", pmProgname, pmErrStr(new_ctx));
+ exit(1);
+ }
+
+ }
+
+ if ((sts = pmDestroyContext(ctx)) < 0) {
+ fprintf(stderr, "%s: pmDestroyContex failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmUseContext(new_ctx)) < 0) {
+ fprintf(stderr, "%s: pmUseContext(%d) failed: %s\n", pmProgname, new_ctx, pmErrStr(sts));
+ exit(1);
+ }
+ ctx = new_ctx;
+ /* dump out PDU buffer pool state */
+ __pmFindPDUBuf(-1);
+ /* check for outrageous memory leaks */
+ check = (char *)sbrk(0);
+ if (highwater != NULL) {
+ if (check - highwater > 4096) {
+ printf("Memory growth (iteration %d): %ld\n", iter, (long)(check - highwater));
+ highwater = check;
+ }
+ }
+ else
+ highwater = check;
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if (mode == PM_MODE_INTERP) {
+ int delta_msec;
+ delta_msec = delta.tv_sec*1000 + delta.tv_usec/1000;
+ if ((sts = pmSetMode(mode, &appStart, delta_msec)) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ appStart.tv_sec += delta.tv_sec;
+ appStart.tv_usec += delta.tv_usec;
+ if (appStart.tv_usec > 1000000) {
+ appStart.tv_usec -= 1000000;
+ appStart.tv_sec++;
+ }
+ }
+
+ if (nmetric > 0) {
+ if ((sts = pmFetch(nmetric, pmid, &rp)) < 0) {
+ fprintf(stderr, "%s: pmFetch failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ else {
+ int i;
+ char now[26];
+ time_t stamp;
+ stamp = rp->timestamp.tv_sec;
+ printf("%s", pmCtime(&stamp, now));
+ for (i = 0; i < nmetric; i++) {
+ printf("%s: %d values\n", pmIDStr(rp->vset[i]->pmid), rp->vset[i]->numval);
+ }
+ pmFreeResult(rp);
+ }
+
+ if (type != PM_CONTEXT_ARCHIVE) {
+ __pmtimevalSleep(delta);
+ }
+ }
+ else
+ printf("Nothing to be fetched\n");
+ iter++;
+ }
+
+ if ((sts = pmDestroyContext(ctx)) < 0) {
+ fprintf(stderr, "%s: final pmDestroyContex failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ return 0;
+}
diff --git a/qa/src/clientid.c b/qa/src/clientid.c
new file mode 100644
index 0000000..066f304
--- /dev/null
+++ b/qa/src/clientid.c
@@ -0,0 +1,91 @@
+/*
+ * Exercise __pmSetClientId()
+ *
+ * Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#define TAG "QA-clientid "
+
+int
+main(int argc, char *argv[])
+{
+ int ctx;
+ int sts;
+ int c;
+ int a;
+ int lflag = 0;
+ int errflag = 0;
+ static char *usage = "[-l] [-D debugopts]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:l")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'l': /* linger when done */
+ lflag = 1;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ fprintf(stderr, "Error expected ...\n");
+ if ((sts = __pmSetClientId("no context yet, bozo")) < 0) {
+ fprintf(stderr, "__pmSetClientId(...): %s\n",
+ pmErrStr(sts));
+ }
+
+ if ((ctx = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext(..., \"localhost\"): %s\n",
+ pmErrStr(ctx));
+ exit(1);
+ }
+
+ for (a = optind; a < argc; a++) {
+ char *cp;
+ cp = (char *)malloc(strlen(argv[a])+strlen(TAG)+1);
+ strcpy(cp, TAG);
+ strcat(cp, argv[a]);
+ if ((sts = __pmSetClientId(cp)) < 0) {
+ fprintf(stderr, "__pmSetClientId(%s): %s\n",
+ cp, pmErrStr(sts));
+ }
+ else {
+ sts = system("pminfo -f pmcd.client.whoami");
+ if (sts != 0)
+ fprintf(stderr, "Warning: pminfo command: exit status %d\n", sts);
+ }
+ free(cp);
+ }
+
+ if (lflag)
+ pause();
+
+ exit(0);
+}
diff --git a/qa/src/compare.c b/qa/src/compare.c
new file mode 100644
index 0000000..b283995
--- /dev/null
+++ b/qa/src/compare.c
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <math.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char *argv[])
+{
+ double d[3];
+ long l[3];
+ char *endp;
+ int haveDouble = 0;
+ int i, j;
+ int smallVal = 2;
+ int smallDVal = 2.0;
+ double tolerance = 0.1;
+ int c;
+ int err = 0;
+ int nArgs;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "s:t:")) != EOF)
+ switch (c) {
+ case 's': /* small value */
+ smallVal = (int)strtol(optarg, &endp, 0);
+ if (*endp == '.') {
+ smallDVal = strtod(optarg, &endp);
+ haveDouble = 1;
+ }
+ if (*endp != '\0') {
+ fprintf(stderr, "small value \"%s\" was not numeric\n", optarg);
+ err++;
+ }
+ break;
+
+ case 't': /* tolerance (fraction of max) */
+ tolerance = strtod(optarg, &endp);
+ if (*endp != '\0') {
+ fprintf(stderr, "tolerance \"%s\" was not numeric\n", optarg);
+ err++;
+ }
+ break;
+
+ case '?':
+ err++;
+ }
+
+ nArgs = argc - optind;
+ if (err || nArgs < 2 || nArgs > 3) {
+ fprintf(stderr,
+ "Usage: %s [-t tolerance] [-s small] number number [number]\n",
+ pmProgname);
+ exit(1);
+ }
+
+ for (i = 0; i < nArgs; i++) {
+ if (!haveDouble) {
+ l[i] = strtol(argv[optind + i], &endp, 0);
+ if (*endp == '.') {
+ for (j = 0; j < i; j++)
+ d[j] = (double)l[j];
+ d[i] = strtod(argv[i], &endp);
+ haveDouble = 1;
+ }
+ }
+ else
+ d[i] = strtod(argv[optind + i], &endp);
+ if (*endp != '\0') {
+ fprintf(stderr, "%s: non-numeric argument \"%s\"\n", pmProgname, argv[optind + i]);
+ exit(1);
+ }
+ }
+
+ if (nArgs == 2)
+ /* check for 2 values within within 10% or one small and the delta small */
+ if (haveDouble) {
+ double
+ delta = fabs(d[1] - d[0]),
+ max = d[0] > d[1] ? d[0] : d[1];
+ if (delta / max <= tolerance)
+ exit(0);
+ else
+ if ((d[0] <= smallDVal || d[1] <= smallDVal) && delta <= smallDVal)
+ exit(0);
+ exit(1);
+ }
+ else {
+ long
+ delta = l[1] > l[0] ? l[1] - l[0] : l[0] - l[1],
+ max = l[0] > l[1] ? l[0] : l[1];
+ if ((float)delta / (float)max <= tolerance)
+ exit(0);
+ else
+ if ((l[0] <= smallVal || l[1] <= smallVal) && delta <= smallVal)
+ exit(0);
+ exit(1);
+ }
+ else
+ if (haveDouble)
+ if (d[0] <= d[1] && d[1] <= d[2])
+ exit(0);
+ else
+ exit(1);
+ else
+ if (l[0] <= l[1] && l[1] <= l[2])
+ exit(0);
+ else
+ exit(1);
+
+}
diff --git a/qa/src/config.bar b/qa/src/config.bar
new file mode 100644
index 0000000..2c8691b
--- /dev/null
+++ b/qa/src/config.bar
@@ -0,0 +1,18 @@
+#
+# this one is for the util progs and QA
+#
+
+log mandatory on 100 msec {
+ sampledso.bin["bin-100"]
+ sampledso.milliseconds
+}
+
+log mandatory on 500 msec {
+ sampledso.bin["bin-500"]
+ sampledso.milliseconds
+}
+
+log mandatory on 900 msec {
+ sampledso.bin["bin-900"]
+ sampledso.milliseconds
+}
diff --git a/qa/src/config.bigbin b/qa/src/config.bigbin
new file mode 100644
index 0000000..d08d4b7
--- /dev/null
+++ b/qa/src/config.bigbin
@@ -0,0 +1,14 @@
+#
+# this one is for the util progs and QA
+#
+
+log mandatory on 20 msec {
+ sample.milliseconds
+ sample.colour
+ sample.bucket
+ sample.bin
+ sampledso.milliseconds
+ sampledso.colour
+ sampledso.bucket
+ sampledso.bin
+}
diff --git a/qa/src/config.dodgey-all b/qa/src/config.dodgey-all
new file mode 100644
index 0000000..4d11d09
--- /dev/null
+++ b/qa/src/config.dodgey-all
@@ -0,0 +1,9 @@
+#
+# this one is for the util progs and QA - check for changes in the
+# instance domain during the log ... problems with interplote mode
+# and missing instances
+#
+
+log mandatory on 500 msec {
+ sample.dodgey.value
+}
diff --git a/qa/src/config.dodgey-mixed b/qa/src/config.dodgey-mixed
new file mode 100644
index 0000000..a82122a
--- /dev/null
+++ b/qa/src/config.dodgey-mixed
@@ -0,0 +1,13 @@
+#
+# this one is for the util progs and QA - check for changes in the
+# instance domain during the log ... problems with interplote mode
+# and missing instances
+#
+
+log mandatory on 500 msec {
+ sample.dodgey.value [ d3 d4 d5 ]
+}
+
+log mandatory on 250 msec {
+ sample.dodgey.value [ d1 d2 ]
+}
diff --git a/qa/src/config.dodgey-some b/qa/src/config.dodgey-some
new file mode 100644
index 0000000..ebd017d
--- /dev/null
+++ b/qa/src/config.dodgey-some
@@ -0,0 +1,9 @@
+#
+# this one is for the util progs and QA - check for changes in the
+# instance domain during the log ... problems with interplote mode
+# and missing instances
+#
+
+log mandatory on 500 msec {
+ sample.dodgey.value [ d2 d3 d4 d5 ]
+}
diff --git a/qa/src/config.foo b/qa/src/config.foo
new file mode 100644
index 0000000..2acfe6c
--- /dev/null
+++ b/qa/src/config.foo
@@ -0,0 +1,11 @@
+#
+# this one is to make the "foo" archive(s) for PCP QA suite
+#
+
+log mandatory on 1 sec {
+ sample.seconds
+ sample.bin
+ sample.colour
+ sample.drift
+ sample.lights
+}
diff --git a/qa/src/config1.interp b/qa/src/config1.interp
new file mode 100644
index 0000000..a1a2aef
--- /dev/null
+++ b/qa/src/config1.interp
@@ -0,0 +1,7 @@
+log advisory on 10 secs {
+ sample.seconds
+}
+
+log advisory on 3 sec {
+ sample.milliseconds
+}
diff --git a/qa/src/config2.interp b/qa/src/config2.interp
new file mode 100644
index 0000000..bd4778d
--- /dev/null
+++ b/qa/src/config2.interp
@@ -0,0 +1,7 @@
+log advisory on 3 sec {
+ sample.milliseconds
+}
+
+log advisory on 10 secs {
+ sample.seconds
+}
diff --git a/qa/src/conn20070309.0 b/qa/src/conn20070309.0
new file mode 100644
index 0000000..5beb137
--- /dev/null
+++ b/qa/src/conn20070309.0
Binary files differ
diff --git a/qa/src/conn20070309.index b/qa/src/conn20070309.index
new file mode 100644
index 0000000..907a92a
--- /dev/null
+++ b/qa/src/conn20070309.index
Binary files differ
diff --git a/qa/src/conn20070309.meta b/qa/src/conn20070309.meta
new file mode 100644
index 0000000..634211d
--- /dev/null
+++ b/qa/src/conn20070309.meta
Binary files differ
diff --git a/qa/src/context_fd_leak.c b/qa/src/context_fd_leak.c
new file mode 100644
index 0000000..5f67c0a
--- /dev/null
+++ b/qa/src/context_fd_leak.c
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * Check that file descriptors from pmNewContext are closed on an exec()
+ * call. If not, every open pmcd file descriptor is carried across into the
+ * new program and even if the new program uses libpcp, libpcp can't know what
+ * the file descriptors are for. In other words we leak fds across an exec().
+ *
+ * This was fixed by setting the close on exec flag in pmNewContext.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <sys/wait.h>
+
+void
+printNextFd(void)
+{
+ int fd;
+ int sts;
+
+ fd = open("/dev/null", O_RDONLY);
+ if (fd < 0) {
+ perror("printNextFd");
+ exit(1);
+ }
+ printf("next free file descriptor = %d", fd);
+ sts = close(fd);
+ if (sts < 0) {
+ fprintf(stderr, "error closing fd = %d\n", fd);
+ exit(1);
+ }
+}
+
+int
+main(int argc, char* argv[])
+{
+ int sts;
+ long run;
+ char *endp;
+ int fd;
+
+ __pmSetProgname(argv[0]);
+
+ if (argc != 2) {
+ fprintf(stderr,
+ "Usage: %s count\nwhere count is the number of runs required\n",
+ pmProgname);
+ exit(1);
+ }
+ run = strtol(argv[1], &endp, 0);
+ if (*endp || run < 0) {
+ fprintf(stderr, "bad run count specified: %s\n", argv[1]);
+ exit(1);
+ }
+
+ /*
+ * Some stdio environments start with strange fd's open ... close
+ * 'em all to give us some breathing space
+ */
+ for (fd = 3; fd < 100; fd++)
+ close(fd);
+
+ printf("invocation %ld: ", run);
+ fputs(" at startup, ", stdout);
+ printNextFd();
+ sts = pmNewContext(PM_CONTEXT_HOST, "localhost");
+ if (sts < 0) {
+ fprintf(stderr, "_pmNewContext(localhost): %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ fputs((run > 1) ? " at exec, " : " at exit, ", stdout);
+ printNextFd();
+ fputs("\n", stdout);
+
+ if (run > 1) {
+ pid_t childPid;
+
+ childPid = fork();
+ if (childPid < 0) {
+ perror("fork() failed");
+ exit(1);
+ }
+ else if (childPid) {
+ int sts;
+
+ wait(&sts);
+ }
+ else {
+ char* childArgv[3];
+ int sts;
+
+ childArgv[0] = argv[0];
+ /* numeric arguments will get shorter, not longer so this is safe */
+ childArgv[1] = strdup(argv[1]);
+ if (childArgv[1] == NULL) {
+ perror("can't copy argv[1]\n");
+ exit(1);
+ }
+ sprintf(childArgv[1], "%ld", run - 1);
+ childArgv[2] = NULL;
+ sts = execvp(childArgv[0], childArgv);
+ if (sts < 0) {
+ perror("execvp() failed");
+ exit(1);
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/qa/src/context_test.c b/qa/src/context_test.c
new file mode 100644
index 0000000..fcce843
--- /dev/null
+++ b/qa/src/context_test.c
@@ -0,0 +1,281 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * context and profile exerciser
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int inst_bin[] = { 100, 200, 300, 400, 500, 600, 700, 800, 900 };
+static int inst_colour[] = { 0, 1, 2 };
+
+static int xpect_bin[] = { 9, 0, 1, 5, 0 };
+static int xpect_colour[] = { 3, 3, 0, 1, 2 };
+
+#define MAXC (sizeof(xpect_bin)/sizeof(xpect_bin[0]))
+
+static char *namelist[] = {
+ "sample.bin",
+ "sample.colour"
+};
+
+/*
+ * handle profile values expected
+ * 0 everything 9 bins 3 colours
+ * 1 no bins 0 bins 3 colours
+ * 2 bin=500, no colour 1 bin 0 colour
+ * 3 bin=100 .. 500, colour=0 5 bin 1 colour
+ * 4 no bins, not 1 0 bins 2 colours
+ */
+
+void
+_err(int handle)
+{
+ int sts;
+
+ sts = pmUseContext(handle);
+ if (sts != PM_ERR_NOCONTEXT)
+ printf("pmUseContext(%d): Unexpected Error: %s\n", handle, pmErrStr(sts));
+
+ sts = pmDestroyContext(handle);
+ if (sts != PM_ERR_NOCONTEXT)
+ printf("pmDestroyContext(%d): Unexpected Error: %s\n", handle, pmErrStr(sts));
+
+ sts = pmReconnectContext(handle);
+ if (sts != PM_ERR_NOCONTEXT)
+ printf("pmReconnectContext(%d): Unexpected Error: %s\n", handle, pmErrStr(sts));
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int i;
+ int iter = 2;
+ int fail;
+ int failiter = 0;
+ int errflag = 0;
+ int type = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ char *endnum;
+ pmInDom indom_bin, indom_colour;
+ pmID metrics[2];
+ pmResult *resp;
+ pmDesc desc;
+ int handle[50]; /* need 3 x MAXC */
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-a archive] [-h hostname] [-i iterations] [-n namespace]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:i:h:n:")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'i': /* iteration count */
+ iter = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -i requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmLookupName(2, namelist, metrics)) < 0) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(sts));
+ fprintf(stderr, "pmids: 0x%x 0x%x\n", metrics[0], metrics[1]);
+ exit(1);
+ }
+
+ if (type == 0)
+ type = PM_CONTEXT_HOST; /* default */
+
+ for (i = 0; i < 3*MAXC; i++) {
+ if (i & 1) {
+ /* odd ones are dup of the previous context */
+ if ((sts = pmDupContext()) < 0) {
+ fprintf(stderr, "handle[%d]: pmDupContext(): %s\n", i, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else {
+ if (type == PM_CONTEXT_HOST) {
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ fprintf(stderr, "handle[%d]: pmNewContext(host=%s): %s\n", i, host, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else {
+ if ((sts = pmNewContext(PM_CONTEXT_ARCHIVE, host)) < 0) {
+ fprintf(stderr, "handle[%d]: pmNewContext(archive=%s): %s\n", i, host, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ }
+ handle[i] = sts;
+
+ if ((sts = pmLookupDesc(metrics[0], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: context=%d bin: %s\n", handle[i], pmErrStr(sts));
+ exit(1);
+ }
+ indom_bin = desc.indom;
+ if ((sts = pmLookupDesc(metrics[1], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: context=%d colour: %s\n", handle[i], pmErrStr(sts));
+ exit(1);
+ }
+ indom_colour = desc.indom;
+
+ switch (i % MAXC) {
+ case 0:
+ break;
+ case 1:
+ pmDelProfile(indom_bin, 0, (int *)0);
+ break;
+ case 2:
+ pmDelProfile(indom_bin, 0, (int *)0);
+ pmAddProfile(indom_bin, 1, &inst_bin[4]);
+ pmDelProfile(indom_colour, 0, (int *)0);
+ break;
+ case 3:
+ pmDelProfile(indom_bin, 0, (int *)0);
+ pmAddProfile(indom_bin, 5, &inst_bin[0]);
+ pmDelProfile(indom_colour, 0, (int *)0);
+ pmAddProfile(indom_colour, 1, &inst_colour[0]);
+ break;
+ case 4:
+ pmDelProfile(indom_bin, 0, (int *)0);
+ pmAddProfile(indom_colour, 0, (int *)0);
+ pmDelProfile(indom_colour, 1, &inst_colour[1]);
+ break;
+ }
+ }
+
+ for (i=0; i < iter; i++) {
+ fail = 0;
+ for (c = 0; c < 3*MAXC; c++) {
+ errflag = 0;
+ pmUseContext(handle[c]);
+ sts = pmFetch(2, metrics, &resp);
+ if (sts < 0) {
+ fprintf(stderr, "botch @ iter=%d, context=%d: pmFetch: %s\n",
+ i, handle[c], pmErrStr(sts));
+ errflag = 2;
+ }
+ else {
+ if (resp->numpmid != 2) {
+ fprintf(stderr, "botch @ iter=%d, context=%d: numpmid %d != 2\n",
+ i, handle[c], resp->numpmid);
+ errflag = 1;
+ }
+ else {
+ if (resp->vset[0]->numval != xpect_bin[c % MAXC]) {
+ fprintf(stderr, "botch @ iter=%d, context=%d: [indom %s] numval got: %d expect: %d\n",
+ i, handle[c], pmInDomStr(indom_bin),
+ resp->vset[0]->numval, xpect_bin[c % MAXC]);
+ errflag = 1;
+ }
+ if (resp->vset[1]->numval != xpect_colour[c % MAXC]) {
+ fprintf(stderr, "botch @ iter=%d, context=%d: [indom %s] numval got: %d expect: %d\n",
+ i, handle[c], pmInDomStr(indom_colour),
+ resp->vset[1]->numval, xpect_colour[c % MAXC]);
+ errflag = 1;
+ }
+ }
+ }
+ if (errflag) {
+ __pmDumpContext(stderr, handle[c], PM_INDOM_NULL);
+ if (errflag != 2)
+ __pmDumpResult(stderr, resp);
+ fail++;
+ }
+ if (errflag != 2) {
+ if (type == PM_CONTEXT_ARCHIVE) {
+ resp->timestamp.tv_usec--;
+ pmSetMode(PM_MODE_FORW, &resp->timestamp, 0);
+ }
+ pmFreeResult(resp);
+ }
+ }
+ if (fail)
+ failiter++;
+ else {
+ putchar('.');
+ fflush(stdout);
+ }
+ }
+ for (c = 0; c < 3*MAXC; c++) {
+ if ((sts = pmDestroyContext(handle[c])) < 0)
+ fprintf(stderr, "pmDestroyContext %d: %s\n", handle[c], pmErrStr(sts));
+ }
+
+ printf("\nPassed %d of %d iterations\n", iter-failiter, iter);
+
+ /*
+ * exercise error conditions at PMAPI relating to "handle" use
+ */
+ printf("Check error handling at PMAPI ...\n");
+ _err(-1); /* too small */
+ _err(3*MAXC); /* too big */
+ _err(1); /* was valid, now destroyed */
+
+ exit(0);
+}
diff --git a/qa/src/count-mark.0 b/qa/src/count-mark.0
new file mode 100644
index 0000000..e251592
--- /dev/null
+++ b/qa/src/count-mark.0
Binary files differ
diff --git a/qa/src/count-mark.index b/qa/src/count-mark.index
new file mode 100644
index 0000000..036b38d
--- /dev/null
+++ b/qa/src/count-mark.index
Binary files differ
diff --git a/qa/src/count-mark.meta b/qa/src/count-mark.meta
new file mode 100644
index 0000000..ad54b83
--- /dev/null
+++ b/qa/src/count-mark.meta
Binary files differ
diff --git a/qa/src/crashpmcd.c b/qa/src/crashpmcd.c
new file mode 100644
index 0000000..9f9e944
--- /dev/null
+++ b/qa/src/crashpmcd.c
@@ -0,0 +1,85 @@
+/*
+ * Crashes pmcd on IRIX. Linux seems to be OK. PV 935490.
+ */
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static __pmPDUHdr hdr;
+static char *target;
+
+void
+try(int len)
+{
+ int fd;
+ int sts;
+ static int first = 1;
+ static struct sockaddr_in myAddr;
+ static struct hostent* servInfo;
+ char buf[256];
+
+ if (first) {
+ first = 0;
+ if ((servInfo = gethostbyname(target)) == NULL) {
+ fprintf(stderr, "host \"%s\" unknown\n", target);
+ exit(1);
+ }
+ memset(&myAddr, 0, sizeof(myAddr));
+ myAddr.sin_family = AF_INET;
+ memcpy(&myAddr.sin_addr, servInfo->h_addr, servInfo->h_length);
+ myAddr.sin_port = htons(SERVER_PORT);
+ }
+
+ if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
+ fprintf(stderr, "socket failed: %s\n", pmErrStr(errno));
+ return;
+ }
+
+ if ((sts = connect(fd, (struct sockaddr*) &myAddr, sizeof(myAddr))) < 0) {
+ fprintf(stderr, "connect failed: %s\n", pmErrStr(sts));
+ close(fd);
+ return;
+ }
+
+ if ((sts = write(fd, &hdr, len)) != len) {
+ fprintf(stderr, "write failed: %s\n", pmErrStr(sts));
+ close(fd);
+ return;
+ }
+ sts = read(fd, buf, sizeof(buf));
+ if (sts < 0) {
+ /* in this case don't really care about the return code from read() */
+ ;
+ }
+ close(fd);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int j;
+ int k;
+
+ __pmSetProgname(argv[0]);
+
+ target = argc == 2 ? argv[1] : "localhost";
+
+ hdr.from = htonl(12345);
+
+ for (k = -1; k <= 12; k++) {
+ hdr.len = htonl(k);
+ hdr.type = htonl(0x55aa0000);
+ for (j = 0; j <= 12; j++) {
+ try(j);
+ }
+ }
+
+ for (k = 0; k <= 12; k++) {
+ hdr.len = htonl(k<<24);
+ hdr.type = htonl(0x000055aa);
+ for (j = 0; j <= 12; j++) {
+ try(j);
+ }
+ }
+
+ return 0;
+}
diff --git a/qa/src/defctx.c b/qa/src/defctx.c
new file mode 100644
index 0000000..36e15e8
--- /dev/null
+++ b/qa/src/defctx.c
@@ -0,0 +1,232 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * play with default contexts of various sorts
+ */
+
+#include <unistd.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int ctx0 = -1;
+ int ctx1 = -1;
+ int sts;
+ int inst;
+ int errflag = 0;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ char *namespace = PM_NS_DEFAULT;
+ pmDesc desc;
+ pmID pmid;
+ char *name = "sample.colour";
+ pmResult *resp;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:n:s:")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options:\n\
+ -a archive use archive log, not host source\n\
+ -D N set pmDebug debugging flag to N\n\
+ -h hostname connect to PMCD on this host\n\
+ -n namespace alternative PMNS specification file\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type != 0) {
+ /* create an explicit context */
+ if ((ctx0 = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ /*
+ * Add to profile, fetch, ...
+ */
+ if ((sts = pmLookupName(1, &name, &pmid)) < 0) {
+ printf("%s: pmLookupName(%s): %s\n", pmProgname, name, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmLookupDesc(pmid, &desc)) < 0) {
+ printf("%s: pmLookupDesc(%s): %s\n", pmProgname, pmIDStr(pmid), pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((inst = pmLookupInDomArchive(desc.indom, "green")) < 0) {
+ printf("%s: pmLookupInDomArchive(%s): %s\n", pmProgname, pmInDomStr(desc.indom), pmErrStr(inst));
+ exit(1);
+ }
+ }
+ else {
+ if ((inst = pmLookupInDom(desc.indom, "green")) < 0) {
+ printf("%s: pmLookupInDom(%s): %s\n", pmProgname, pmInDomStr(desc.indom), pmErrStr(inst));
+ exit(1);
+ }
+ }
+
+ if ((sts = pmDelProfile(PM_INDOM_NULL, 1, (int *)0)) < 0) {
+ printf("%s: pmDelProfile: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmAddProfile(desc.indom, 1, &inst)) < 0) {
+ printf("%s: pmAddProfile: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetch(1, &pmid, &resp)) < 0) {
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ }
+ else {
+ printf("first pmFetch is OK\n");
+ __pmDumpResult(stdout, resp);
+ pmFreeResult(resp);
+ }
+
+ /*
+ * Now destroy context and try again, ... should see an invalid context
+ */
+ if ((sts = pmDestroyContext(ctx0)) < 0)
+ printf("%s: pmDestroyContext: %s\n", pmProgname, pmErrStr(sts));
+
+ if ((sts = pmDelProfile(PM_INDOM_NULL, 1, (int *)0)) < 0) {
+ printf("%s: pmDelProfile: %s\n", pmProgname, pmErrStr(sts));
+ }
+ if ((sts = pmAddProfile(desc.indom, 1, &inst)) < 0) {
+ printf("%s: pmAddProfile: %s\n", pmProgname, pmErrStr(sts));
+ }
+ if ((sts = pmFetch(1, &pmid, &resp)) < 0) {
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ }
+ else {
+ printf("second pmFetch is OK\n");
+ __pmDumpResult(stdout, resp);
+ pmFreeResult(resp);
+ }
+
+ /*
+ * destroy that one
+ */
+ if ((ctx0 = pmWhichContext()) < 0)
+ printf("%s: pmWhichContext: %s\n", pmProgname, pmErrStr(ctx0));
+ else
+ if ((sts = pmDestroyContext(ctx0)) < 0)
+ printf("%s: pmDestroyContext: %s\n", pmProgname, pmErrStr(sts));
+
+ if (type != 0) {
+ /* play some more games */
+ if ((ctx0 = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+ printf("NewContext: %d\n", ctx0);
+ if ((ctx1 = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+ printf("NewContext: %d\n", ctx1);
+ if ((sts = pmDestroyContext(ctx0)) < 0)
+ printf("%s: pmDestroyContext: %s\n", pmProgname, pmErrStr(sts));
+ else
+ printf("Destroy(%d)\n", ctx0);
+ if ((sts = pmWhichContext()) < 0)
+ printf("%s: pmWhichContext: %s\n", pmProgname, pmErrStr(sts));
+ else
+ printf("WhichContext: %d\n", sts);
+
+ if ((ctx0 = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+ printf("NewContext: %d\n", ctx0);
+ if ((sts = pmDestroyContext(ctx0)) < 0)
+ printf("%s: pmDestroyContext: %s\n", pmProgname, pmErrStr(sts));
+ else
+ printf("Destroy(%d)\n", ctx0);
+ if ((sts = pmDestroyContext(ctx1)) < 0)
+ printf("%s: pmDestroyContext: %s\n", pmProgname, pmErrStr(sts));
+ else
+ printf("Destroy(%d)\n", ctx1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/descreqX2.c b/qa/src/descreqX2.c
new file mode 100644
index 0000000..634e518
--- /dev/null
+++ b/qa/src/descreqX2.c
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * 2 DESC_REQs back-to-back ... trying to understand www.sgi.com PMDA deaths
+ */
+
+#include <stdio.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int fd;
+ int ctx;
+ int errflag = 0;
+ int e;
+ int sts;
+ __pmContext *ctxp;
+ __pmPDU *pb;
+ pmID pmid;
+ char *name = "sample.seconds";
+
+ __pmSetProgname(argv[0]);
+
+ if (argc > 1) {
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind > argc) {
+ fprintf(stderr, "Usage: %s [-D]\n", pmProgname);
+ exit(1);
+ }
+ }
+
+ if ((ctx = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext: %s\n", pmErrStr(ctx));
+ exit(1);
+ }
+
+ if ((ctxp = __pmHandleToPtr(ctx)) == NULL) {
+ fprintf(stderr, "__pmHandleToPtr failed: eh?\n");
+ exit(1);
+ }
+
+ fd = ctxp->c_pmcd->pc_fd;
+
+ if ((e = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace: %s\n", pmErrStr(e));
+ exit(1);
+ }
+
+ if ((e = pmLookupName(1, &name, &pmid)) < 0) {
+ printf("pmLookupName: Unexpected error: %s\n", pmErrStr(e));
+ exit(1);
+ }
+
+ if ((e = __pmSendDescReq(fd, FROM_ANON, pmid)) < 0) {
+ fprintf(stderr, "Error: SendDescReqX1: %s\n", pmErrStr(e));
+ exit(1);
+ }
+
+ if ((e = __pmSendDescReq(fd, FROM_ANON, pmid)) < 0) {
+ fprintf(stderr, "Error: SendDescReqX2: %s\n", pmErrStr(e));
+ exit(1);
+ }
+
+ if ((e = __pmGetPDU(fd, ANY_SIZE, TIMEOUT_DEFAULT, &pb)) < 0)
+ fprintf(stderr, "Error: __pmGetPDUX1: %s\n", pmErrStr(e));
+ else
+ fprintf(stderr, "__pmGetPDUX1 -> 0x%x\n", e);
+
+ if ((e = __pmGetPDU(fd, ANY_SIZE, TIMEOUT_DEFAULT, &pb)) < 0)
+ fprintf(stderr, "Error: __pmGetPDUX2: %s\n", pmErrStr(e));
+ else
+ fprintf(stderr, "__pmGetPDUX2 -> 0x%x\n", e);
+
+ exit(0);
+}
+
diff --git a/qa/src/disk_test.c b/qa/src/disk_test.c
new file mode 100644
index 0000000..bb24af9
--- /dev/null
+++ b/qa/src/disk_test.c
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int listOne[2];
+#define LEN(l) (sizeof(l)/sizeof(l[0]))
+
+static char *namelist[] = {
+ "disk.dev.read"
+};
+
+#define NCONTEXTS 2
+
+int
+main(int argc, char **argv)
+{
+ int e, i;
+ int h[NCONTEXTS];
+ pmID metrics[2];
+ pmResult *resp;
+ pmInDom diskindom;
+ pmDesc desc;
+ int *inst;
+ char **name;
+ int numinst;
+ int c;
+ int sts;
+ int errflag = 0;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s [-D n]\n", pmProgname);
+ exit(1);
+ }
+
+ for (i=0; i < NCONTEXTS; i++) {
+ if ((h[i] = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ printf("pmNewContext: %s\n", pmErrStr(h[i]));
+ exit(1);
+ }
+
+ if ((e = pmLookupName(1, namelist, metrics)) < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(e));
+ exit(1);
+ }
+
+ if ((e = pmLookupDesc(metrics[0], &desc)) < 0) {
+ printf("pmLookupDesc: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ }
+
+ diskindom = desc.indom;
+ if ((numinst = pmGetInDom(diskindom, &inst, &name)) < 0) {
+ printf("pmGetInDom: %s\n", pmErrStr(numinst));
+ exit(1);
+ }
+ printf("Disks:\n");
+ for (i = 0; i < numinst; i++)
+ printf("\t[%d]: %d %s\n", i, inst[i], name[i]);
+
+ for (i=0; i < NCONTEXTS; i++) {
+ pmUseContext(h[i]);
+
+ listOne[0] = inst[0];
+ listOne[1] = inst[numinst-1];
+
+ pmAddProfile(diskindom, 0, (int *)0);
+ printf("all drives should be included here\n");
+ if ((e = pmFetch(1, metrics, &resp)) < 0) {
+ printf("pmFetch[2]: %s\n", pmErrStr(e));
+ }
+ else
+ __pmDumpResult(stdout, resp);
+
+ pmDelProfile(diskindom, 0, (int *)0);
+ putchar('\n');
+ printf("no drives should be included here\n");
+ if ((e = pmFetch(1, metrics, &resp)) < 0) {
+ printf("pmFetch[3]: %s\n", pmErrStr(e));
+ }
+ else
+ __pmDumpResult(stdout, resp);
+
+ pmDelProfile(diskindom, 0, (int *)0);
+ pmAddProfile(diskindom, LEN(listOne), listOne);
+ putchar('\n');
+ printf("only the first and last drive should be included here\n");
+ if ((e = pmFetch(1, metrics, &resp)) < 0) {
+ printf("pmFetch[0]: %s\n", pmErrStr(e));
+ }
+ else
+ __pmDumpResult(stdout, resp);
+
+ pmDelProfile(diskindom, 0, (int *)0);
+ pmAddProfile(diskindom, numinst, inst);
+ pmDelProfile(diskindom, 1, listOne);
+ putchar('\n');
+ printf("all except drive zero should be included here\n");
+ if ((e = pmFetch(1, metrics, &resp)) < 0) {
+ printf("pmFetch[1]: %s\n", pmErrStr(e));
+ }
+ else
+ __pmDumpResult(stdout, resp);
+
+ pmDelProfile(diskindom, 0, (int *)0);
+ pmAddProfile(diskindom, 1, inst);
+ putchar('\n');
+ printf("drive zero ONLY should be included here\n");
+ if ((e = pmFetch(1, metrics, &resp)) < 0) {
+ printf("pmFetch[1]: %s\n", pmErrStr(e));
+ }
+ else
+ __pmDumpResult(stdout, resp);
+ }
+
+ exit(0);
+}
+
diff --git a/qa/src/drain-server.c b/qa/src/drain-server.c
new file mode 100644
index 0000000..f66208e
--- /dev/null
+++ b/qa/src/drain-server.c
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * Drain server ...
+ * accepts a connection and then reads until end of input
+ *
+ * Based on pdu-server.c
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int fd;
+ int port = 1214;
+ /* default port assigned to kazaa what ever that is! */
+ int hang = 0;
+ int i, sts;
+ int c;
+ int newfd;
+ struct sockaddr_in myAddr;
+ struct linger noLinger = {1, 0};
+ char *endnum;
+ int errflag = 0;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:hp:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* hang after accept */
+ hang = 1;
+ break;
+
+ case 'p':
+ port = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: port argument must be a numeric internet port number\n", pmProgname);
+ exit(1);
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s [-D n] [-h] [-p port]\n", pmProgname);
+ exit(1);
+ }
+
+ fd = socket(AF_INET, SOCK_STREAM, 0);
+ if (fd < 0) {
+ perror("socket");
+ exit(1);
+ }
+ if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *) &i,
+ sizeof(i)) < 0) {
+ perror("setsockopt(nodelay)");
+ exit(1);
+ }
+ /* Don't linger on close */
+ if (setsockopt(fd, SOL_SOCKET, SO_LINGER, (char *) &noLinger, sizeof(noLinger)) < 0) {
+ perror("setsockopt(nolinger)");
+ exit(1);
+ }
+
+ memset(&myAddr, 0, sizeof(myAddr));
+ myAddr.sin_family = AF_INET;
+ myAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+ myAddr.sin_port = htons(port);
+ sts = bind(fd, (struct sockaddr*)&myAddr, sizeof(myAddr));
+ if (sts < 0) {
+ fprintf(stderr, "bind(%d): %s\n", port, strerror(errno));
+ exit(1);
+ }
+
+ sts = listen(fd, 5); /* Max. of 5 pending connection requests */
+ if (sts == -1) {
+ perror("listen");
+ exit(1);
+ }
+
+ newfd = accept(fd, (struct sockaddr *)0, 0);
+ if (newfd < 0) {
+ fprintf(stderr, "%s: accept: %s\n", pmProgname, strerror(errno));
+ exit(1);
+ }
+
+ if (hang) {
+ /* wait for a signal ... */
+ pause();
+ exit(0);
+ }
+
+ /* drain input */
+ while ((sts = read(newfd, &c, 1)) == 1)
+ ;
+
+ if (sts < 0) {
+ /*
+ * ECONNRESET is expected when client exits w/out closing
+ * socket.
+ */
+ if (errno != ECONNRESET)
+ fprintf(stderr, "%s: read error: %s\n", pmProgname, pmErrStr(-errno));
+ }
+
+ exit(0);
+}
diff --git a/qa/src/dumb_pmda.c b/qa/src/dumb_pmda.c
new file mode 100644
index 0000000..c60225f
--- /dev/null
+++ b/qa/src/dumb_pmda.c
@@ -0,0 +1,81 @@
+/*
+ * Dumb, a PMDA which never responds to requests ... used in qa/023
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+#include "localconfig.h"
+
+#if PCP_VER < 3611
+#define __pmRead read
+#endif
+
+static void
+usage(void)
+{
+ fprintf(stderr, "Usage: %s [options] controlwords\n\n", pmProgname);
+ fputs("Options:\n"
+ " -D N set pmDebug debugging flag to N\n"
+ " -d domain use domain (numeric) for metrics domain of PMDA\n"
+ " -h helpfile get help text from helpfile rather then default path\n"
+ " -l logfile write log into logfile rather than using default log name\n",
+ stderr);
+ exit(1);
+}
+
+/*
+ * Set up the agent if running as a daemon.
+ */
+
+int
+main(int argc, char **argv)
+{
+ int err = 0;
+ int sts;
+ pmdaInterface desc = { 0 };
+ char c;
+ int exit_action = 0;
+
+ __pmSetProgname(argv[0]);
+
+ pmdaDaemon(&desc, PMDA_INTERFACE_3, pmProgname, desc.domain, "dumb_pmda.log", NULL);
+ if (desc.status != 0) {
+ fprintf(stderr, "pmdaDaemon() failed!\n");
+ exit(1);
+ }
+
+ if (pmdaGetOpt(argc, argv, "D:d:h:l:", &desc, &err) != EOF)
+ err++;
+ if (err)
+ usage();
+
+ /*
+ * scan cmd line args for action keywords ...
+ */
+ for (; optind < argc; optind++) {
+ if (strcmp(argv[optind], "exit") == 0) exit_action = 1;
+ }
+
+ pmdaOpenLog(&desc);
+ pmdaConnect(&desc);
+
+ /*
+ * We have connection to pmcd ... consume PDUs from pmcd,
+ * ignore them, optionally execute an action and exit on end of file
+ */
+
+ while ((sts = __pmRead(desc.version.two.ext->e_infd, &c, 1)) == 1) {
+ if (exit_action) exit(1);
+ }
+
+ if (sts < 0) {
+ fprintf(stderr, "dumb_pmda: Error on read from pmcd?: %s\n", strerror(errno));
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/endian.c b/qa/src/endian.c
new file mode 100644
index 0000000..eb56612
--- /dev/null
+++ b/qa/src/endian.c
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+#include "localconfig.h"
+
+int
+main()
+{
+ int *ip;
+ int sts = 0;
+ pmUnits units;
+ pmValueBlock vb;
+ __pmID_int pmid;
+ __pmInDom_int indom;
+ __pmPDUInfo pduinfo;
+ __pmCred cred;
+
+ printf("pmUnits: ");
+ ip = (int *)&units;
+ *ip = 0;
+ units.dimSpace = 0x1;
+ units.dimTime = 0x2;
+ units.dimCount = 0x3;
+ units.scaleSpace = 0x4;
+ units.scaleTime = 0x5;
+ units.scaleCount = 0x6;
+ units.pad = 0x78;
+
+ if (*ip == 0x12345678)
+ printf("OK\n");
+ else {
+ printf("FAIL get 0x%x, expected 0x12345678\n", *ip);
+ sts = 1;
+ }
+
+ printf("pmValueBlock (header): ");
+ ip = (int *)&vb;
+ *ip = 0;
+ vb.vtype = 0x12;
+ vb.vlen = 0x345678;
+
+ if (*ip == 0x12345678)
+ printf("OK\n");
+ else {
+ printf("FAIL get 0x%x, expected 0x12345678\n", *ip);
+ sts = 1;
+ }
+
+ printf("__pmCred: ");
+ ip = (int *)&cred;
+ *ip = 0;
+ cred.c_type = 0x12;
+ cred.c_vala = 0x34;
+ cred.c_valb = 0x56;
+ cred.c_valc = 0x78;
+
+ if (*ip == 0x12345678)
+ printf("OK\n");
+ else {
+ printf("FAIL get 0x%x, expected 0x12345678\n", *ip);
+ sts = 1;
+ }
+
+ printf("__pmID_int: ");
+ ip = (int *)&pmid;
+ *ip = 0;
+ pmid.flag = 0x1;
+ pmid.domain = (0x123 >> 2) & 0x1ff;
+ pmid.cluster = (0x3456 >> 2) & 0xfff;
+ pmid.item = 0x678 & 0x3ff;
+
+ if (*ip == 0x92345678)
+ printf("OK\n");
+ else {
+ printf("FAIL get 0x%x, expected 0x92345678\n", *ip);
+ sts = 1;
+ }
+
+ printf("__pmInDom_int: ");
+ ip = (int *)&indom;
+ *ip = 0;
+ indom.flag = 0x1;
+ indom.domain = (0x123 >> 2) & 0x1ff;
+ indom.serial = 0x345678 & 0x3fffff;
+
+ if (*ip == 0x92345678)
+ printf("OK\n");
+ else {
+ printf("FAIL get 0x%x, expected 0x92345678\n", *ip);
+ sts = 1;
+ }
+
+ printf("__pmPDUInfo: ");
+ ip = (int *)&pduinfo;
+ *ip = 0;
+ pduinfo.zero = 0x1;
+ pduinfo.version = 0x12 & 0x7f;
+ pduinfo.licensed = 0x34;
+#if PCP_VER >= 3611
+ pduinfo.features = 0x5678;
+#else
+ pduinfo.authorize = 0x5678;
+#endif
+
+ if (*ip == 0x92345678)
+ printf("OK\n");
+ else {
+ printf("FAIL get 0x%x, expected 0x92345678\n", *ip);
+ sts = 1;
+ }
+
+#ifdef TODO
+ /*
+ * write tests
+ */
+ pmUnits units;
+ pmValueBlock vb;
+ __pmID_int pmid;
+ __pmInDom_int indom;
+ __pmPDUInfo pduinfo;
+ __pmCred cred;
+#endif
+
+ exit(sts);
+}
diff --git a/qa/src/eofarch.c b/qa/src/eofarch.c
new file mode 100644
index 0000000..f702fa4
--- /dev/null
+++ b/qa/src/eofarch.c
@@ -0,0 +1,208 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * exercise outside feasible log range operations ... before start
+ * and after end
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int vflag;
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int ctx;
+ int errflag = 0;
+ char *archive = "foo";
+ char *namespace = PM_NS_DEFAULT;
+ static char *usage = "[-a archive] [-n namespace] [-v]";
+ pmResult *resp;
+ int resnum = 0;
+ pmID pmid = 0;
+ struct timeval when;
+ struct timeval first;
+ struct timeval last;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:v")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive */
+ archive = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose output */
+ vflag++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx = pmNewContext(PM_CONTEXT_ARCHIVE, archive)) < 0) {
+ printf("%s: Cannot connect to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(ctx));
+ exit(1);
+ }
+
+ when.tv_sec = 0;
+ when.tv_usec = 0;
+ if ((sts = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ printf("\nPass 1: forward scan\n");
+ for (;;) {
+ if ((sts = pmFetchArchive(&resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ break;
+ }
+ if (resnum == 0) {
+ first = resp->timestamp;
+ pmid = resp->vset[0]->pmid;
+ }
+ else
+ last = resp->timestamp;
+ resnum++;
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ pmFreeResult(resp);
+ }
+ printf("Found %d samples, with %d log reads\n", resnum, __pmLogReads);
+
+ printf("\nPass 2: before start of log scan\n");
+ first.tv_sec--;
+ printf(" 2.1: FORWARD, expect success\n");
+ __pmLogReads = 0;
+ if ((sts = pmSetMode(PM_MODE_FORW, &first, 0)) < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetchArchive(&resp)) < 0) {
+ printf(" %s with %d log_reads\n", pmErrStr(sts), __pmLogReads);
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ printf(" found 1 with %d log reads\n", __pmLogReads);
+ pmFreeResult(resp);
+ }
+ printf(" 2.2: BACKWARD, expect EOL\n");
+ __pmLogReads = 0;
+ if ((sts = pmSetMode(PM_MODE_BACK, &first, 0)) < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetchArchive(&resp)) < 0) {
+ printf(" %s with %d log_reads\n", pmErrStr(sts), __pmLogReads);
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ printf(" found 1 with %d log reads\n", __pmLogReads);
+ pmFreeResult(resp);
+ }
+ printf(" 2.3: INTERP, expect EOL\n");
+ __pmLogReads = 0;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &first, 0)) < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetch(1, &pmid, &resp)) < 0) {
+ printf(" %s with %d log_reads\n", pmErrStr(sts), __pmLogReads);
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ printf(" found 1 with %d log reads\n", __pmLogReads);
+ pmFreeResult(resp);
+ }
+
+ printf("\nPass 3: after end of log scan\n");
+ last.tv_sec++;
+ printf(" 3.1: FORWARD, expect EOL\n");
+ __pmLogReads = 0;
+ if ((sts = pmSetMode(PM_MODE_FORW, &last, 0)) < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetchArchive(&resp)) < 0) {
+ printf(" %s with %d log_reads\n", pmErrStr(sts), __pmLogReads);
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ printf(" found 1 with %d log reads\n", __pmLogReads);
+ pmFreeResult(resp);
+ }
+ printf(" 3.2: BACKWARD, expect success\n");
+ __pmLogReads = 0;
+ if ((sts = pmSetMode(PM_MODE_BACK, &last, 0)) < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetchArchive(&resp)) < 0) {
+ printf(" %s with %d log_reads\n", pmErrStr(sts), __pmLogReads);
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ printf(" found 1 with %d log reads\n", __pmLogReads);
+ pmFreeResult(resp);
+ }
+ printf(" 3.3: INTERP, expect EOL\n");
+ __pmLogReads = 0;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &last, 0)) < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetch(1, &pmid, &resp)) < 0) {
+ printf(" %s with %d log_reads\n", pmErrStr(sts), __pmLogReads);
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ printf(" found 1 with %d log reads\n", __pmLogReads);
+ pmFreeResult(resp);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/eol.c b/qa/src/eol.c
new file mode 100644
index 0000000..f259b5a
--- /dev/null
+++ b/qa/src/eol.c
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * eol - exercise _pmLogFindEOF
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static void
+printstamp(struct timeval *tp)
+{
+ static struct tm *tmp;
+
+ tmp = localtime(&tp->tv_sec);
+ printf("%02d:%02d:%02d.%03d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec, (int)(tp->tv_usec/1000));
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int ahtype = 0;
+ char *host = NULL; /* pander to gcc */
+ pmLogLabel label; /* get hostname for archives */
+ char *namespace = PM_NS_DEFAULT;
+ pmResult *result;
+ pmResult *prev;
+ struct timeval end;
+ int numpmid = 3;
+ char *name[] = { "sample.seconds", "sample.drift", "sample.milliseconds" };
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:s:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (ahtype != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ ahtype = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -n namespace use an alternative PMNS\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (ahtype != PM_CONTEXT_ARCHIVE) {
+ fprintf(stderr, "%s: -a is not optional!\n", pmProgname);
+ exit(1);
+ }
+ if ((sts = pmNewContext(ahtype, host)) < 0) {
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind < argc) {
+ numpmid = 0;
+ while (optind < argc && numpmid < 3) {
+ name[numpmid] = argv[optind];
+ printf("metric[%d]: %s\n", numpmid, name[numpmid]);
+ optind++;
+ numpmid++;
+ }
+ }
+
+ sts = pmGetArchiveEnd(&end);
+ if (sts < 0) {
+ printf("pmGetArchiveEnd: %s\n", pmErrStr(sts));
+ }
+ else {
+ printf("pmGetArchiveEnd time: ");
+ printstamp(&end);
+ printf("\n");
+ }
+ printf("required %d log reads\n", __pmLogReads);
+ __pmLogReads = 0;
+
+ putchar('\n');
+ sts = pmSetMode(PM_MODE_BACK, &end, 0);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ sts = pmFetchArchive(&result);
+ if (sts < 0) {
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ }
+ else {
+ printf("last result time (direct): ");
+ printstamp(&result->timestamp);
+ printf("\n");
+ pmFreeResult(result);
+ }
+ printf("required %d log reads\n", __pmLogReads);
+ __pmLogReads = 0;
+
+ putchar('\n');
+ end.tv_sec = 0x7fffffff;
+ end.tv_usec = 0;
+ sts = pmSetMode(PM_MODE_BACK, &end, 0);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ sts = pmFetchArchive(&result);
+ if (sts < 0) {
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ }
+ else {
+ printf("last result time (indirect): ");
+ printstamp(&result->timestamp);
+ printf("\n");
+ pmFreeResult(result);
+ }
+ printf("required %d log reads\n", __pmLogReads);
+ __pmLogReads = 0;
+
+ putchar('\n');
+ prev = (pmResult *)0;
+ end.tv_sec = 0;
+ sts = pmSetMode(PM_MODE_FORW, &end, 0);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ while ((sts = pmFetchArchive(&result)) >= 0) {
+ if (prev != (pmResult *)0)
+ pmFreeResult(prev);
+ prev = result;
+ }
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ if (prev == (pmResult *)0) {
+ printf("no results!\n");
+ }
+ else {
+ printf("last result time (serial): ");
+ printstamp(&prev->timestamp);
+ printf("\n");
+ pmFreeResult(prev);
+ }
+ printf("required %d log reads\n", __pmLogReads);
+ __pmLogReads = 0;
+
+ exit(0);
+}
diff --git a/qa/src/err.c b/qa/src/err.c
new file mode 100644
index 0000000..a177a91
--- /dev/null
+++ b/qa/src/err.c
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ */
+
+/*
+ * Check pmErrStr()
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *usage = "[-D debug] errcode ...";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind >= argc) {
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ while (optind < argc) {
+ sts = atoi(argv[optind]);
+ printf("%s (%d) -> %s\n", argv[optind], sts, pmErrStr(sts));
+ sts = -sts;
+ printf("-(%s) (%d) -> %s\n", argv[optind], sts, pmErrStr(sts));
+ optind++;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/err_v1.0 b/qa/src/err_v1.0
new file mode 100644
index 0000000..8cc4aa8
--- /dev/null
+++ b/qa/src/err_v1.0
Binary files differ
diff --git a/qa/src/err_v1.dump b/qa/src/err_v1.dump
new file mode 100644
index 0000000..0d4165a
--- /dev/null
+++ b/qa/src/err_v1.dump
@@ -0,0 +1,68 @@
+Note: timezone set to local timezone of host "splat" from archive
+
+Log Label (Log Format Version 1)
+Performance metrics from host splat
+ commencing Thu Jul 24 04:48:42.327 1997
+ ending Thu Jul 24 04:48:46.557 1997
+
+Descriptions for Metrics in the Log ...
+PMID: 3.4.2 (proc.psusage.utime)
+ Data Type: 32-bit unsigned int InDom: 3.0 0xc00000
+ Semantics: counter Units: millisec
+PMID: 29.0.9 (sample.noinst)
+ Data Type: 32-bit int InDom: PM_INDOM_NULL 0xffffffff
+ Semantics: instant Units: none
+PMID: 29.0.49 (sample.needprofile)
+ Data Type: float InDom: 29.4 0x7400004
+ Semantics: discrete Units: none
+PMID: 29.0.55 (sample.bad.nosupport)
+ Data Type: Not Supported
+PMID: 2.3.2 (pmcd.pmlogger.archive)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.0 (pmcd.pmlogger.port)
+ Data Type: 32-bit unsigned int InDom: 2.1 0x800001
+ Semantics: instant Units: none
+PMID: 2.3.3 (pmcd.pmlogger.host)
+ Data Type: string InDom: 2.1 0x800001
+ Semantics: instant Units: none
+
+Instance Domains in the Log ...
+InDom: 2.1
+04:48:42.327 1 instances
+ 14737 or "14737"
+
+Temporal Index
+ Log Vol end(meta) end(log)
+04:48:42.327 0 132 132
+04:48:42.584 0 270 256
+04:48:46.557 0 398 516
+
+04:48:42.327 2.3.3 (pmcd.pmlogger.host): inst [14737 or "14737"] value "splat.melbourne.sgi.com"
+ 2.3.0 (pmcd.pmlogger.port): inst [14737 or "14737"] value 4332
+ 2.3.2 (pmcd.pmlogger.archive): inst [14737 or "14737"] value "/tmp/err_v1"
+
+04:48:42.584 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+ 29.0.49 (sample.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+ 3.4.2 (proc.psusage.utime): Explicit instance identifier(s) required
+
+04:48:43.547 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+ 29.0.49 (sample.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+ 3.4.2 (proc.psusage.utime): Explicit instance identifier(s) required
+
+04:48:44.557 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+ 29.0.49 (sample.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+ 3.4.2 (proc.psusage.utime): Explicit instance identifier(s) required
+
+04:48:45.557 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+ 29.0.49 (sample.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+ 3.4.2 (proc.psusage.utime): Explicit instance identifier(s) required
+
+04:48:46.557 29.0.55 (sample.bad.nosupport): Metric not supported by this version of monitored application
+ 29.0.49 (sample.needprofile): Explicit instance identifier(s) required
+ 29.0.9 (sample.noinst): No values returned!
+ 3.4.2 (proc.psusage.utime): Explicit instance identifier(s) required
diff --git a/qa/src/err_v1.index b/qa/src/err_v1.index
new file mode 100644
index 0000000..14507cf
--- /dev/null
+++ b/qa/src/err_v1.index
Binary files differ
diff --git a/qa/src/err_v1.meta b/qa/src/err_v1.meta
new file mode 100644
index 0000000..00fadf7
--- /dev/null
+++ b/qa/src/err_v1.meta
Binary files differ
diff --git a/qa/src/eventrec-old.0 b/qa/src/eventrec-old.0
new file mode 100644
index 0000000..333573d
--- /dev/null
+++ b/qa/src/eventrec-old.0
Binary files differ
diff --git a/qa/src/eventrec-old.index b/qa/src/eventrec-old.index
new file mode 100644
index 0000000..179fa66
--- /dev/null
+++ b/qa/src/eventrec-old.index
Binary files differ
diff --git a/qa/src/eventrec-old.meta b/qa/src/eventrec-old.meta
new file mode 100644
index 0000000..814a979
--- /dev/null
+++ b/qa/src/eventrec-old.meta
Binary files differ
diff --git a/qa/src/eventrec.0 b/qa/src/eventrec.0
new file mode 100644
index 0000000..44cef73
--- /dev/null
+++ b/qa/src/eventrec.0
Binary files differ
diff --git a/qa/src/eventrec.index b/qa/src/eventrec.index
new file mode 100644
index 0000000..37dd0fe
--- /dev/null
+++ b/qa/src/eventrec.index
Binary files differ
diff --git a/qa/src/eventrec.meta b/qa/src/eventrec.meta
new file mode 100644
index 0000000..47ccfec
--- /dev/null
+++ b/qa/src/eventrec.meta
Binary files differ
diff --git a/qa/src/exercise.c b/qa/src/exercise.c
new file mode 100644
index 0000000..6371f91
--- /dev/null
+++ b/qa/src/exercise.c
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * General exerciser, checks (for licensed/unlicensed PMCDs)
+ * - PMCD availability
+ * - pmDesc availability
+ * - indom availiability
+ * - metric value availability
+ * - memory leaks (when -i used to make iterations > 1)
+ */
+
+#include <ctype.h>
+#include <string.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+extern int errno;
+
+static int _metrics;
+static int _indom;
+static int _insitu;
+static int _ptr;
+
+static void
+dometric(const char *name)
+{
+ int n;
+ pmID pmidlist[] = { PM_ID_NULL };
+ pmDesc desc;
+ int *instlist = NULL;
+ char **instname = NULL;
+ pmResult *result;
+ extern int pmDebug;
+
+ _metrics++;
+
+ /* cast const away as pmLookupName will not modify this string */
+ if ((n = pmLookupName(1, (char **)&name, pmidlist)) < 0) {
+ printf("%s: pmLookupName: %s\n", name, pmErrStr(n));
+ return;
+ }
+ if ((n = pmLookupDesc(pmidlist[0], &desc)) < 0) {
+ printf("%s: pmLookupDesc: %s\n", name, pmErrStr(n));
+ return;
+ }
+ if (desc.indom != PM_INDOM_NULL) {
+ _indom++;
+ if ((n = pmGetInDom(desc.indom, &instlist, &instname)) < 0) {
+ printf("%s: pmGetInDom: %s\n", name, pmErrStr(n));
+ return;
+ }
+ if (instlist)
+ free(instlist);
+ if (instname)
+ free(instname);
+ }
+ if ((n = pmFetch(1, pmidlist, &result)) < 0) {
+ printf("%s: pmFetch: %s\n", name, pmErrStr(n));
+ return;
+ }
+ if (result->numpmid != 1) {
+ printf("%s: pmFetch: numpmid=%d, not 1\n", name, result->numpmid);
+ }
+ else {
+ if (result->vset[0]->numval == 0)
+ printf("%s: pmFetch: no value available\n", name);
+ else if (result->vset[0]->numval < 0)
+ printf("%s: pmFetch: %s\n", name, pmErrStr(result->vset[0]->numval));
+ else {
+ if (result->vset[0]->valfmt == PM_VAL_INSITU) {
+ _insitu++;
+ if (pmDebug && DBG_TRACE_APPL0)
+ printf("%s: insitu type=%s\n", name, pmTypeStr(desc.type));
+ }
+ else {
+ _ptr++;
+ if (pmDebug && DBG_TRACE_APPL0)
+ printf("%s: ptr size=%d valtype=%d descrtype=%s\n",
+ name,
+ result->vset[0]->vlist[0].value.pval->vlen,
+ result->vset[0]->vlist[0].value.pval->vtype,
+ pmTypeStr(desc.type));
+ }
+ }
+ }
+ pmFreeResult(result);
+}
+
+int
+main(argc, argv)
+int argc;
+char *argv[];
+{
+ int c;
+ int sts;
+ int i;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = NULL;
+ char *endnum;
+ int iter = 1;
+ unsigned long datasize;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-h hostname] [-i iterations] [-n namespace] [-l licenseflag ] [name ...]";
+
+ __pmProcessDataSize(NULL);
+ __pmSetProgname(pmProgname);
+
+ while ((c = getopt(argc, argv, "D:h:i:l:n:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'i': /* iteration count */
+ iter = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -i requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ sts = pmNewContext(PM_CONTEXT_HOST, host);
+
+ if (sts < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (namespace != NULL) {
+ /*
+ * only explicitly load namespace if -n specified
+ */
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+
+ for (i = 0; i < iter; i++) {
+ if (optind >= argc)
+ pmTraversePMNS("", dometric);
+ else {
+ int a;
+ for (a = optind; a < argc; a++) {
+ pmTraversePMNS(argv[a], dometric);
+ }
+ }
+ __pmProcessDataSize(&datasize);
+ printf("[%d] %d metrics, %d getindom, %d insitu, %d ptr",
+ i, _metrics, _indom, _insitu, _ptr);
+ if (datasize)
+ printf(", mem leak: %ld Kbytes", datasize);
+ putchar('\n');
+ _metrics = _indom = _insitu = _ptr = 0;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/exercise_fault.c b/qa/src/exercise_fault.c
new file mode 100644
index 0000000..3c75471
--- /dev/null
+++ b/qa/src/exercise_fault.c
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * Exercise fault injection infrastructure.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/fault.h>
+#include <string.h>
+#include <errno.h>
+
+static void
+exercise(void)
+{
+ int i;
+ void *p;
+ for (i = 1; i <= 10; i++) {
+ __pmFaultInject("QA:1", PM_FAULT_ALLOC);
+ p = malloc(10);
+ if (p == NULL)
+ fprintf(stderr, "malloc:1[%d] %s\n", i, strerror(errno));
+ else
+ free(p);
+ __pmFaultInject("QA:2", PM_FAULT_ALLOC);
+ p = malloc(100);
+ if (p == NULL)
+ fprintf(stderr, "malloc:2[%d] %s\n", i, strerror(errno));
+ else
+ free(p);
+ __pmFaultInject("QA:3", PM_FAULT_ALLOC);
+ p = malloc(1000);
+ if (p == NULL)
+ fprintf(stderr, "malloc:3[%d] %s\n", i, strerror(errno));
+ else
+ free(p);
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *usage = "[-D debug]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ exercise();
+
+ return 0;
+}
diff --git a/qa/src/exerlock.c b/qa/src/exerlock.c
new file mode 100644
index 0000000..96d0b83
--- /dev/null
+++ b/qa/src/exerlock.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise low-level libpcp locking primitives
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static void
+timeout(int i, void *j)
+{
+ fprintf(stderr, "Timeout!\n");
+ exit(2);
+}
+
+static void
+_usage()
+{
+ fprintf(stderr, "Usage: exerlock reqs\n");
+ fprintf(stderr, "reqs is a string of: i (initialize), l (lock) and u (unlock)\n");
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ char *p;
+ struct timeval delta = { 1, 0 };
+
+ if (argc != 2) _usage();
+
+ __pmAFregister(&delta, NULL, timeout);
+#ifdef DBG_TRACE_DESPERATE
+ pmDebug |= DBG_TRACE_DESPERATE;
+#endif
+
+ for (p = argv[1]; *p; p++) {
+ switch (*p) {
+ case 'i':
+ fprintf(stderr, "initialize\n");
+ PM_INIT_LOCKS();
+ break;
+ case 'l':
+ fprintf(stderr, "lock\n");
+ PM_LOCK(__pmLock_libpcp);
+ break;
+ case 'u':
+ fprintf(stderr, "unlock\n");
+ PM_UNLOCK(__pmLock_libpcp);
+ break;
+ default:
+ _usage();
+ }
+ }
+
+ return 0;
+}
diff --git a/qa/src/exertz.c b/qa/src/exertz.c
new file mode 100644
index 0000000..5972104
--- /dev/null
+++ b/qa/src/exertz.c
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int force = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ char *configfile = (char *)0;
+ char *logfile = (char *)0;
+ char *tz = (char *)0;
+ char *tzhost = (char *)0;
+ int tzh = -1; /* pander to gcc */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ int samples = -1;
+ double delta = 1.0;
+ char *endnum;
+ time_t now;
+ int tzh2;
+ char s[28];
+
+ __pmSetProgname(argv[0]);
+
+ now = 24 * 60 * 60; /* epoch + 1 day */
+ putenv("TZ=UTC"); /* sane starting point */
+
+ printf("UTC pmCtime(): %s", pmCtime(&now, s));
+ printf("UTC ctime(): %s", ctime(&now));
+
+ while ((c = getopt(argc, argv, "a:c:D:f:h:ln:s:t:Vz:Z:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != (char *)0) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'f': /* force */
+ force++;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples <= 0.0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != (char *)0) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tzhost = optarg;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (tzhost != (char *)0) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -c configfile file to load configuration from\n\
+ -D debug standard PCP debug flag\n\
+ -f force .. \n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n\
+ -V verbose/diagnostic output\n\
+ -z host set reporting timezone to local time for host\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != (char *)0) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+ if (tzhost == (char *)0 && tz == (char *)0)
+ tzh = pmNewContextZone();
+
+ if (tzhost != (char *)0) {
+ if (type == PM_CONTEXT_ARCHIVE) {
+ pmLogLabel label;
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if (strcmp(tzhost, label.ll_hostname) != 0) {
+ fprintf(stderr, "%s: mismatched host name between -z (%s) and archive (%s)\n",
+ pmProgname, tzhost, label.ll_hostname);
+ exit(1);
+ }
+ }
+ else if (strcmp(tzhost, host) != 0) {
+ fprintf(stderr, "%s: -z and -h must agree on the name of the host\n", pmProgname);
+ exit(1);
+ }
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ }
+
+ if (tz != (char *)0) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("extra argument[%d]: %s\n", optind, argv[optind]);
+ optind++;
+ }
+
+ while (samples == -1 || samples-- > 0) {
+ /* put real stuff here */
+ break;
+ }
+
+ printf("PMAPI context pmCtime(): %s", pmCtime(&now, s));
+ printf("UTC ctime(): %s", ctime(&now));
+
+ tzh2 = pmNewZone("PST8PDT");
+ printf("and in California: %s", pmCtime(&now, s));
+ printf("UTC ctime(): %s", ctime(&now));
+ pmNewZone("EST-11EST-10,86/2:00,303/2:00");
+ printf("and in Melbourne: %s", pmCtime(&now, s));
+ printf("UTC ctime(): %s", ctime(&now));
+ pmUseZone(tzh2);
+ printf("back to California: %s", pmCtime(&now, s));
+ printf("UTC ctime(): %s", ctime(&now));
+
+ pmUseZone(tzh);
+ printf("back to the PMAPI context pmCtime(): %s", pmCtime(&now, s));
+ printf("UTC ctime(): %s", ctime(&now));
+
+ exit(0);
+}
diff --git a/qa/src/fcsw_indom.0 b/qa/src/fcsw_indom.0
new file mode 100644
index 0000000..93369b7
--- /dev/null
+++ b/qa/src/fcsw_indom.0
Binary files differ
diff --git a/qa/src/fcsw_indom.index b/qa/src/fcsw_indom.index
new file mode 100644
index 0000000..3fe4996
--- /dev/null
+++ b/qa/src/fcsw_indom.index
Binary files differ
diff --git a/qa/src/fcsw_indom.meta b/qa/src/fcsw_indom.meta
new file mode 100644
index 0000000..fb55c4c
--- /dev/null
+++ b/qa/src/fcsw_indom.meta
Binary files differ
diff --git a/qa/src/fetchpdu.c b/qa/src/fetchpdu.c
new file mode 100644
index 0000000..6260117
--- /dev/null
+++ b/qa/src/fetchpdu.c
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+
+int
+main(int argc, char **argv)
+{
+
+ int c;
+ int sts;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-h hostname] [-n namespace]";
+ int i;
+ int n;
+ char *namelist[20];
+ pmID midlist[20];
+ int numpmid;
+ pmResult *rslt;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:n:")) != EOF) {
+ switch (c) {
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ i = 0;
+ namelist[i++] = "sample.long.one";
+ namelist[i++] = "sampledso.long.one";
+ numpmid = i;
+ n = pmLookupName(numpmid, namelist, midlist);
+ if (n < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ if (midlist[i] == PM_ID_NULL)
+ printf(" %s is bad\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ if ((n = pmFetch(numpmid, midlist, &rslt)) < 0) {
+ printf("pmFetch rslt: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ for (i = 0; i < numpmid; i++) {
+ printf("%s: ", namelist[i]);
+ if (rslt->vset[i]->numval < 0)
+ printf("%s\n", pmErrStr(rslt->vset[i]->numval));
+ else
+ printf("%d\n", rslt->vset[i]->vlist[0].value.lval);
+ }
+
+/*
+ __pmDumpResult(stdout, rslt);
+*/
+
+ exit(0);
+}
diff --git a/qa/src/fetchrate.c b/qa/src/fetchrate.c
new file mode 100644
index 0000000..38e4078
--- /dev/null
+++ b/qa/src/fetchrate.c
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *host = "localhost";
+ int type = PM_CONTEXT_HOST;
+ char *namespace = PM_NS_DEFAULT;
+ int iterations = 2000;
+ int iter;
+ char *metric;
+ pmID pmid;
+ pmResult *result;
+ struct timeval before, after;
+ double delta;
+ static char *usage = "[-h hostname] [-L] [-n namespace] [-i iterations] metric";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:Ln:i:")) != EOF) {
+ switch (c) {
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ type = PM_CONTEXT_HOST;
+ host = optarg;
+ break;
+
+ case 'L': /* local, no PMCD */
+ putenv("PMDA_LOCAL_SAMPLE=");
+ type = PM_CONTEXT_LOCAL;
+ host = NULL;
+ break;
+
+ case 'i': /* iterations */
+ iterations = atoi(optarg);
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+USAGE:
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ else
+ printf("%s: Cannot make standalone local connection: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind >= argc)
+ goto USAGE;
+
+ metric = argv[optind];
+ if ((sts = pmLookupName(1, &metric, &pmid)) < 0) {
+ printf("%s: metric ``%s'' : %s\n", pmProgname, metric, pmErrStr(sts));
+ exit(1);
+ }
+
+ gettimeofday(&before, (struct timezone *)0);
+ for (iter=0; iter < iterations; iter++) {
+ sts = pmFetch(1, &pmid, &result);
+ if (sts < 0) {
+ printf("%s: iteration %d : %s\n", pmProgname, iter, pmErrStr(sts));
+ exit(1);
+ }
+ pmFreeResult(result);
+ }
+ gettimeofday(&after, (struct timezone *)0);
+
+ if ((sts = pmWhichContext()) < 0) {
+ printf("%s: pmWhichContext: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ pmDestroyContext(sts);
+
+ delta = __pmtimevalSub(&after, &before);
+ printf("%s: metric %s %.2lf fetches/second\n",
+ pmProgname, metric, (double)iterations / delta);
+
+ exit(0);
+}
diff --git a/qa/src/fixhosts b/qa/src/fixhosts
new file mode 100755
index 0000000..8b207e2
--- /dev/null
+++ b/qa/src/fixhosts
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# For QA ...
+#
+
+if grep '155.0.17.0 pcpqa-4-00.sgi.com' /etc/hosts >/dev/null
+then
+ # already done
+ exit 0
+fi
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp; exit 0" 0 1 2 3 15
+
+awk </dev/null >$tmp '
+BEGIN {
+ print ""
+ print "# bogus entries for PCP QA, added by qa/src/fixhosts"
+ print "#"
+ print "# ipv4"
+ # see chkacc1.c or chkacc2.c for why this makes sense
+ for (host = 0; host < 32; host++)
+ printf "155.%d.%d.%d pcpqa-4-%02d.sgi.com\n", host*3, 17+host, host, host
+ #print "# ipv6"
+ #for (host = 0; host < 32; host++)
+ #printf "fec0::%x:%x:%x:%x:%x:%x pcpqa-6-%02d.sgi.com\n", host*3, 17+host, host, host*3, 17+host, host, host
+ # this lot from chkacc3.c
+ a[0] = 0; a[1] = 37; a[2] = 235; a[3] = 126
+ b[0] = 0; b[1] = 201; b[2] = 77; b[3] = 127
+ c[0] = 0; c[1] = 15; c[2] = 191; c[3] = 64
+ d[0] = 0; d[1] = 1; d[2] = 127; d[3] = 254
+ host = 0
+ for (i = 0; i < 4; i++) {
+ for (j = 0; j < 4; j++) {
+ for (k = 0; k < 4; k++) {
+ for (l = 0; l < 4; l++) {
+ printf "%d.%d.%d.%d pcpqa-%03d.sgi.com\n", a[i], b[j], c[k], d[l], host
+ host++
+ }
+ }
+ }
+ }
+ }'
+
+sudo sh -c "cat $tmp >>/etc/hosts"
+
+
diff --git a/qa/src/getconfig.c b/qa/src/getconfig.c
new file mode 100644
index 0000000..03f959e
--- /dev/null
+++ b/qa/src/getconfig.c
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ */
+
+/*
+ * Check pmConfig()
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *usage = "[-D debug] configvar ...";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind >= argc) {
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ while (optind < argc) {
+ printf("%s -> ", argv[optind]);
+ printf("%s\n", pmGetConfig(argv[optind]));
+ optind++;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/getcontexthost.c b/qa/src/getcontexthost.c
new file mode 100644
index 0000000..324f3f6
--- /dev/null
+++ b/qa/src/getcontexthost.c
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+ *
+ * exercise pmGetContextHostName
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int ctx1;
+ int ctx2;
+ int errflag = 0;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ char local[MAXHOSTNAMELEN];
+ char buf[MAXHOSTNAMELEN];
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:L?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'L': /* LOCAL, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind < argc) {
+ fprintf(stderr,
+"Usage: %s [options]\n\
+\n\
+Options:\n\
+ -a archive metrics source is a PCP log archive\n\
+ -h host metrics source is PMCD on host\n\
+ -L use local context instead of PMCD\n",
+ pmProgname);
+ exit(1);
+ }
+
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ (void)gethostname(local, MAXHOSTNAMELEN);
+ local[MAXHOSTNAMELEN-1] = '\0';
+ host = local;
+ }
+ if ((ctx1 = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(ctx1));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(ctx1));
+ /* continue on in this case to test a bad context */
+ }
+
+ printf("pmGetContextHostName(%d)=\"%s\"\n", ctx1, pmGetContextHostName(ctx1));
+ printf("pmGetContextHostName_r(%d, ...) => \"%s\"\n", ctx1, pmGetContextHostName_r(ctx1, buf, sizeof(buf)));
+
+ ctx2 = pmDupContext();
+ if (ctx2 >= 0)
+ printf("pmDupConext()=%d\n", ctx2);
+ else
+ printf("pmDupContext()=%d - %s\n", ctx2, pmErrStr(ctx2));
+
+ printf("dup ctx pmGetContextHostName(%d)=\"%s\"\n", ctx2, pmGetContextHostName(ctx2));
+ printf("dup ctx pmGetContextHostName_r(%d, ...) => \"%s\"\n", ctx2, pmGetContextHostName_r(ctx2, buf, sizeof(buf)));
+
+ printf("original ctx pmGetContextHostName(%d)=\"%s\"\n", ctx1, pmGetContextHostName(ctx1));
+ printf("original ctx pmGetContextHostName_r(%d, ...) => \"%s\"\n", ctx1, pmGetContextHostName_r(ctx1, buf, sizeof(buf)));
+
+
+ return 0;
+}
diff --git a/qa/src/getoptions.c b/qa/src/getoptions.c
new file mode 100644
index 0000000..d3eaee9
--- /dev/null
+++ b/qa/src/getoptions.c
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 2014 Red Hat.
+ *
+ * Exercise the pmGetOptions() series of PMAPI interfaces
+ */
+
+#include <pcp/pmapi.h>
+
+int
+getversion(void)
+{
+ int version = 0;
+ char *value;
+
+ if ((value = getenv("PMAPI_VERSION")) != NULL)
+ version = atoi(value);
+ return version;
+}
+
+int
+getflags(void)
+{
+ int flags = 0;
+
+ if (getenv("PM_OPTFLAG_MULTI") != NULL)
+ flags |= PM_OPTFLAG_MULTI;
+ if (getenv("PM_OPTFLAG_POSIX") != NULL)
+ flags |= PM_OPTFLAG_POSIX;
+ if (getenv("PM_OPTFLAG_MIXED") != NULL)
+ flags |= PM_OPTFLAG_MIXED;
+ if (getenv("PM_OPTFLAG_ENV_ONLY") != NULL)
+ flags |= PM_OPTFLAG_ENV_ONLY;
+ if (getenv("PM_OPTFLAG_LONG_ONLY") != NULL)
+ flags |= PM_OPTFLAG_LONG_ONLY;
+ if (getenv("PM_OPTFLAG_BOUNDARIES") != NULL)
+ flags |= PM_OPTFLAG_BOUNDARIES;
+ if (getenv("PM_OPTFLAG_STDOUT_TZ") != NULL)
+ flags |= PM_OPTFLAG_STDOUT_TZ;
+ return flags;
+}
+
+char *
+flagsstr(pmOptions *opts)
+{
+ static char flags[128];
+
+ if (opts->flags & PM_OPTFLAG_INIT)
+ strcat(flags, ",init");
+ if (opts->flags & PM_OPTFLAG_DONE)
+ strcat(flags, ",done");
+ if (opts->flags & PM_OPTFLAG_MULTI)
+ strcat(flags, ",multi");
+ if (opts->flags & PM_OPTFLAG_USAGE_ERR)
+ strcat(flags, ",usage_err");
+ if (opts->flags & PM_OPTFLAG_RUNTIME_ERR)
+ strcat(flags, ",runtime_err");
+ if (opts->flags & PM_OPTFLAG_EXIT)
+ strcat(flags, ",exit");
+ if (opts->flags & PM_OPTFLAG_POSIX)
+ strcat(flags, ",posix");
+ if (opts->flags & PM_OPTFLAG_MIXED)
+ strcat(flags, ",mixed");
+ if (opts->flags & PM_OPTFLAG_ENV_ONLY)
+ strcat(flags, ",env_only");
+ if (opts->flags & PM_OPTFLAG_LONG_ONLY)
+ strcat(flags, ",long_only");
+ if (opts->flags & PM_OPTFLAG_BOUNDARIES)
+ strcat(flags, ",boundaries");
+ if (opts->flags & PM_OPTFLAG_STDOUT_TZ)
+ strcat(flags, ",stdout_tz");
+
+ if (flags[0] == '\0') /* no flags */
+ flags[1] = '-';
+ return &flags[1];
+}
+
+char *
+contextstr(pmOptions *opts)
+{
+ if (opts->context == PM_CONTEXT_HOST)
+ return "host";
+ if (opts->context == PM_CONTEXT_ARCHIVE)
+ return "archive";
+ if (opts->context == PM_CONTEXT_LOCAL)
+ return "local";
+ return "-";
+}
+
+char *
+timevalstr(struct timeval *tp)
+{
+ struct tm tmp;
+ time_t then;
+ int msecs = tp->tv_usec / 1000;
+ int len;
+ static char tv[128];
+
+ if (tp->tv_sec == 0)
+ return "-";
+ memset(tv, 0, sizeof(tv));
+ then = (time_t)tp->tv_sec;
+ pmLocaltime(&then, &tmp);
+ len = sprintf(tv, "%s", asctime(&tmp));
+ sprintf(&tv[len-1], " [msec=%d]", msecs);
+ return tv;
+}
+
+char *
+intervalstr(struct timeval *tp)
+{
+ struct tm tmp;
+ time_t then;
+ int msecs = tp->tv_usec / 1000;
+ static char it[128];
+
+ if (tp->tv_sec == 0)
+ return "-";
+ memset(it, 0, sizeof(it));
+ then = (time_t)tp->tv_sec;
+ pmLocaltime(&then, &tmp);
+ sprintf(it, "%02d:%02d.%03d", tmp.tm_min, tmp.tm_sec, msecs);
+ return it;
+}
+
+char *
+isempty(char *string)
+{
+ if (string == NULL)
+ return "-";
+ return string;
+}
+
+void
+dumpall(pmOptions *opts)
+{
+ int i;
+
+ printf("Options structure dump:\n");
+ printf(" version: %d\n", opts->version);
+ printf(" flags: 0x%x (%s)\n", opts->flags, flagsstr(opts));
+ printf(" errors: %d\n", opts->errors);
+ printf(" context: 0x%x (%s)\n", opts->context, contextstr(opts));
+ printf(" nhosts: %d\n", opts->nhosts);
+ if (opts->nhosts > 0) {
+ printf(" hosts: %s", opts->hosts[0]);
+ for (i = 1; i < opts->nhosts; i++)
+ printf(",%s", opts->hosts[i]);
+ printf("\n");
+ }
+ printf(" narchives: %d\n", opts->narchives);
+ if (opts->narchives > 0) {
+ printf(" archives: %s", opts->archives[0]);
+ for (i = 1; i < opts->narchives; i++)
+ printf(",%s", opts->archives[i]);
+ printf("\n");
+ }
+ printf(" start: %s\n", timevalstr(&opts->start));
+ printf(" finish: %s\n", timevalstr(&opts->finish));
+ printf(" origin: %s\n", timevalstr(&opts->finish));
+ printf(" interval: %s\n", intervalstr(&opts->interval));
+ printf(" align_optarg: %s\n", isempty(opts->align_optarg));
+ printf(" start_optarg: %s\n", isempty(opts->start_optarg));
+ printf(" finish_optarg: %s\n", isempty(opts->finish_optarg));
+ printf(" origin_optarg: %s\n", isempty(opts->origin_optarg));
+ printf(" guiport_optarg: %s\n", isempty(opts->guiport_optarg));
+ printf(" timezone: %s\n", isempty(opts->timezone));
+ printf(" samples: %d\n", opts->samples);
+ printf(" guiport: %d\n", opts->guiport);
+ printf(" guiflag: %d\n", opts->guiflag);
+ printf(" tzflag: %d\n", opts->tzflag);
+ printf(" Lflag: %d\n", opts->Lflag);
+}
+
+int
+main(int argc, char *argv[])
+{
+ pmLongOptions longopts[] = {
+ PMAPI_GENERAL_OPTIONS,
+ PMAPI_OPTIONS_HEADER("Context options"),
+ PMOPT_SPECLOCAL,
+ PMOPT_LOCALPMDA,
+ PMOPT_HOSTSFILE,
+ PMOPT_HOST_LIST,
+ PMOPT_ARCHIVE_LIST,
+ PMOPT_ARCHIVE_FOLIO,
+ PMAPI_OPTIONS_HEADER("Testing options"),
+ { "extra", 0, 'x', 0, "an extra option, for testing" },
+ { "eXtra", 1, 'X', "ARG", "an extra option with an argument" },
+ { "", 0, 'y', 0, "a short-option-only without argument" },
+ { "", 1, 'Y', "N", "a short-option-only with an argument" },
+ { "fubar", 0, 0, 0, "a long-option-only without argument" },
+ { "foobar", 1, 0, "N", "a long-option-only with an argument" },
+ PMAPI_OPTIONS_END
+ };
+ pmOptions opts = {
+ .short_options = PMAPI_OPTIONS "H:K:L" "XxYy",
+ .long_options = longopts,
+ };
+ char *tz;
+ int c;
+
+ opts.version = getversion();
+ opts.flags = getflags();
+ while ((c = pmGetOptions(argc, argv, &opts)) != EOF) {
+ printf("Got option: %c index=%d [errors=%d]\n", c? c: '-', opts.index, opts.errors);
+ switch(c) {
+ case 'x':
+ printf(" -> x option has no argument\n");
+ break;
+ case 'X':
+ printf(" -> X option argument was: '%s'\n", opts.optarg);
+ break;
+ case 'y':
+ printf(" -> y option has no argument\n");
+ break;
+ case 'Y':
+ printf(" -> Y option argument was: '%s'\n", opts.optarg);
+ break;
+ case 0: /* long-only options */
+ printf(" -> long-only option index=%d\n", opts.index);
+ break;
+ default:
+ printf(" -> unexpected option: '%c'\n", c);
+ pmUsageMessage(&opts);
+ exit(1);
+ }
+ }
+ printf("End of option processing\n");
+
+ if (opts.flags & PM_OPTFLAG_USAGE_ERR)
+ fprintf(stderr, "Warning: usage error detected\n");
+ if (opts.flags & PM_OPTFLAG_RUNTIME_ERR)
+ fprintf(stderr, "Warning: runtime error detected\n");
+ if (opts.padding != 0)
+ fprintf(stderr, "Warning: non-zero padding\n");
+ if (opts.zeroes != 0)
+ fprintf(stderr, "Warning: unexpected non-zeroes\n");
+
+ if (opts.flags & PM_OPTFLAG_USAGE_ERR)
+ pmUsageMessage(&opts);
+ if (opts.flags & PM_OPTFLAG_RUNTIME_ERR)
+ pmflush();
+
+ if (opts.timezone) /* ensure we have deterministic output */
+ tz = opts.timezone;
+ else
+ tz = "UTC";
+
+ if ((c = pmNewZone(tz)) < 0)
+ fprintf(stderr, "Warning: TZ failure - %s: %s\n",
+ opts.timezone, pmErrStr(c));
+
+ dumpall(&opts);
+
+ pmFreeOptions(&opts);
+ exit(0);
+}
diff --git a/qa/src/gmt-boring.0 b/qa/src/gmt-boring.0
new file mode 100644
index 0000000..3350c6f
--- /dev/null
+++ b/qa/src/gmt-boring.0
Binary files differ
diff --git a/qa/src/gmt-boring.index b/qa/src/gmt-boring.index
new file mode 100644
index 0000000..e2785b6
--- /dev/null
+++ b/qa/src/gmt-boring.index
Binary files differ
diff --git a/qa/src/gmt-boring.meta b/qa/src/gmt-boring.meta
new file mode 100644
index 0000000..3af4953
--- /dev/null
+++ b/qa/src/gmt-boring.meta
Binary files differ
diff --git a/qa/src/grind-tools b/qa/src/grind-tools
new file mode 100755
index 0000000..648374f
--- /dev/null
+++ b/qa/src/grind-tools
@@ -0,0 +1,387 @@
+#!/bin/sh
+
+_usage()
+{
+ echo "Usage: $0 [-v] [-a archive] [-h host] metricspec [...]"
+ echo
+ echo "metricspec one of the forms:"
+ echo " metric-name"
+ echo " metric-name[instance]"
+ exit 1
+}
+
+# Get standard environment
+. $PCP_DIR/etc/pcp.env
+
+status=0
+tmp=/tmp/$$
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+rm -f $tmp.*
+
+verbose=false
+very_verbose=false
+host=localhost
+archive=""
+while getopts "a:h:v" c
+do
+ case "$c"
+ in
+ a)
+ src="-a $OPTARG"
+ archive=$OPTARG
+ host=""
+ ;;
+ h)
+ src="-h $OPTARG"
+ archive=""
+ host=$OPTARG
+ ;;
+ v)
+ $verbose && very_verbose=true
+ verbose=true
+ ;;
+ *)
+ _usage
+ # NOTREACHED
+ ;;
+ esac
+done
+shift `expr $OPTIND - 1`
+
+if [ $# -lt 1 ]
+then
+ _usage
+ # NOTREACHHED
+fi
+
+for arg
+do
+ case "$arg"
+ in
+ *[*)
+ echo "$arg" >>$tmp.all
+ ;;
+ *)
+ pmprobe -I $src $arg \
+ | sed \
+ -e 's/ "/ /' \
+ -e 's/" "/ /g' \
+ -e 's/"$//' \
+ -e 's/ /\
+/g' \
+ | sed -e '1,2d' \
+ | while read inst
+ do
+ echo "$arg[$inst]" >>$tmp.all
+ done
+ ;;
+ esac
+done
+
+sed <$tmp.all -e 's/\[.*//' \
+| sort -u >$tmp.metrics
+
+# cat $tmp.metrics
+# echo
+# cat $tmp.all
+
+# pmie
+#
+sed <$tmp.all >$tmp.config \
+ -e "s/\[/ #'/" \
+ -e "s/]/'/" \
+ -e 's/$/+/' \
+ -e '$s/$/1;/'
+$very_verbose && echo "pmie config ..." && cat $tmp.config
+if pmie $src -c $tmp.config -C
+then
+ $verbose && echo "pmie OK"
+else
+ echo "pmie FAILED"
+ echo "pmie config:"
+ cat $tmp.config
+ status=1
+fi
+
+# pmval
+#
+sed -e 's/]//' -e 's/\[/ /' <$tmp.all \
+ | $PCP_AWK_PROG '
+BEGIN { printf "pmval -s 2 -t 1sec '"$src"' -i " }
+$1 != metric { if (NR > 1) {
+ print " " metric
+ printf "pmval -s 2 -t 1sec '"$src"' -i "
+ }
+ metric = $1
+ }
+NR > 1 { printf "," }
+ { printf $2 }
+END { print " " metric
+ }' \
+| sed -e "s/-i /-i '/" -e "s/ [^ ]*\$/'&/" >$tmp.config
+$very_verbose && echo "pmval cmd ..." && cat $tmp.config
+cat $tmp.config | sh >$tmp.out 2>&1
+if grep '^samples: *2$' $tmp.out >/dev/null
+then
+ $verbose && echo "pmval OK"
+else
+ echo "pmval FAILED"
+ echo "pmval cmd:"
+ cat $tmp.config
+ cat $tmp.out
+ status=1
+fi
+
+# pmlogger
+#
+if [ -z "$host" ]
+then
+ echo "pmlogger skipped, source is an archive"
+else
+ echo "log mandatory on default {" >$tmp.config
+ sed -e 's/]//' -e 's/\[/ /' <$tmp.all \
+ | $PCP_AWK_PROG >>$tmp.config '
+$1 != metric { if (NR > 1) print " ]"
+ print $1," ["
+ metric = $1
+ }
+ { print " \"" $2 "\"" }
+END { print " ]"
+ print "}"
+ }'
+ $very_verbose && echo "pmlogger config ..." && cat $tmp.config
+ if pmlogger -l $tmp.log $src -s 2 -t 1sec -c $tmp.config $tmp
+ then
+ $verbose && echo "pmlogger OK"
+ archive=$tmp
+ else
+ echo "pmlogger FAILED"
+ cat $tmp.log
+ echo "pmlogger config:"
+ cat $tmp.config
+ status=1
+ fi
+fi
+
+# pmdumptext - simple with -a or -h
+#
+if which pmdumptext >/dev/null 2>&1
+then
+ sed -e 's/]//' -e 's/\[/ /' <$tmp.all \
+ | $PCP_AWK_PROG '
+BEGIN { printf "pmdumptext -s 2 -t 1sec '"$src"'" }
+$1 != metric { if (NR > 1) {
+ print "]"
+ printf "pmdumptext -s 2 -t 1sec '"$src"'"
+ }
+ metric = $1
+ printf " %s[",metric
+ first = 1
+ }
+ { if (first) {
+ printf "%s",$2
+ first = 0
+ }
+ else
+ printf ",%s",$2
+ }
+END { print "]"
+ }' >$tmp.config
+ $very_verbose && echo "pmdumptext cmd ..." && cat $tmp.config
+ cat $tmp.config | sh >$tmp.out 2>&1
+ ok=`grep '^[A-Z][a-z][a-z] [A-Z][a-z][a-z]' $tmp.out | wc -l | sed -e 's/ //g'`
+ if [ "$ok" -eq 2 ]
+ then
+ $verbose && echo "pmdumptext (simple) OK"
+ else
+ echo "pmdumptext (simple) FAILED"
+ echo "pmdumptext cmd:"
+ cat $tmp.config
+ cat $tmp.out
+ status=1
+ fi
+else
+ echo "pmdumptext skipped, no binary installed"
+fi
+
+# pmdumptext - extended notation ...
+# myhost:kernel.all.cpu.idle[cpu0,cpu3]
+# /path/to/myarchive/kernel.all.cpu.idle[cpu1]
+#
+if which pmdumptext >/dev/null 2>&1
+then
+ if [ -n "$host" ]
+ then
+ pfx="$host:"
+ else
+ pfx="$archive/"
+ fi
+ sed -e 's/]//' -e 's/\[/ /' <$tmp.all \
+ | $PCP_AWK_PROG '
+BEGIN { printf "pmdumptext -s 2 -t 1sec" }
+$1 != metric { metric = $1
+ first = 1
+ if (NR > 1) printf "]"
+ }
+ { if (first) {
+ printf " %s%s[%s","'"$pfx"'",metric,$2
+ first = 0
+ }
+ else
+ printf ",%s",$2
+ }
+END { print "]" }' >$tmp.config
+ $very_verbose && echo "pmdumptext cmd ..." && cat $tmp.config
+ cat $tmp.config | sh >$tmp.out 2>&1
+ ok=`grep '^[A-Z][a-z][a-z] [A-Z][a-z][a-z]' $tmp.out | wc -l | sed -e 's/ //g'`
+ if [ "$ok" -eq 2 ]
+ then
+ $verbose && echo "pmdumptext (extended) OK"
+ else
+ echo "pmdumptext (extended) FAILED"
+ echo "pmdumptext cmd:"
+ cat $tmp.config
+ cat $tmp.out
+ status=1
+ fi
+fi
+
+# pmchart
+#
+if which pmchart >/dev/null 2>&1
+then
+ echo "#pmchart" >$tmp.config
+ echo "Version 2.0 host dynamic" >>$tmp.config
+ echo "Chart Title "test" Style line" >>$tmp.config
+ sed <$tmp.all >>$tmp.config \
+ -e 's/]//' \
+ -e 's/\[/ Instance /' \
+ -e 's/^/ Plot Color #-cycle Host * Metric /'
+ $very_verbose && echo "pmchart config ..." && cat $tmp.config
+ if pmchart -C -c $tmp.config $src
+ then
+ $verbose && echo "pmchart OK"
+ else
+ echo "pmchart FAILED"
+ echo "pmchart config:"
+ cat $tmp.config
+ status=1
+ fi
+else
+ echo "pmchart skipped, no binary installed"
+fi
+
+# pmview
+#
+if which pmview >/dev/null 2>&1
+then
+ echo 'pmview Version 2.1 "foo" "bar"' >$tmp.config
+ $PCP_AWK_PROG <$tmp.all >>$tmp.config '
+BEGIN { printf "_colorlist l1 (" }
+NR % 3 == 0 { printf " red" }
+NR % 3 == 1 { printf " green" }
+NR % 3 == 2 { printf " blue" }
+END { print " )" }'
+ $PCP_AWK_PROG <$tmp.metrics >>$tmp.config '
+BEGIN { printf "_colorlist l2 (" }
+NR % 3 == 0 { printf " red" }
+NR % 3 == 1 { printf " green" }
+NR % 3 == 2 { printf " blue" }
+END { print " )" }'
+ sed <$tmp.all \
+ -e 's/]//' \
+ -e 's/\[/ /' \
+ | $PCP_AWK_PROG '
+BEGIN { print "_grid ("
+ print " _bar 0 0 ("
+ print " _metrics ("
+ }
+ { printf " %s[%s] 10 \"%d\"\n",$1,$2,NR }
+END { print " )"
+ print " _colorlist l1"
+ print " )"
+ }' >>$tmp.config
+ sed <$tmp.all \
+ -e 's/]//' \
+ -e 's/\[/ /' \
+ | $PCP_AWK_PROG '
+BEGIN { print " _bar 1 0 ("
+ print " _metrics ("
+ }
+$1 != metric { if (NR > 1) {
+ printf "] 100 \"%d\"\n",NR
+ }
+ metric = $1
+ printf " %s[%s",$1,$2
+ next
+ }
+ { printf ",%s",$2 }
+END { printf "] 100 \"%d\"\n",NR
+ print " )"
+ print " _colorlist l2"
+ print " )"
+ }' >>$tmp.config
+ sed <$tmp.all \
+ -e 's/]//' \
+ -e 's/\[/ /' \
+ | $PCP_AWK_PROG '
+BEGIN { print " _stack 2 0 ("
+ print " _metrics ("
+ }
+ { printf " %s[%s] 10\n",$1,$2 }
+END { print " )"
+ print " _colorlist l1"
+ print " )"
+ print ")"
+ }' >>$tmp.config
+ $very_verbose && echo "pmview config ..." && cat $tmp.config
+ if pmview -C -c $tmp.config $src
+ then
+ $verbose && echo "pmview OK"
+ else
+ echo "pmview FAILED"
+ echo "pmview config:"
+ cat $tmp.config
+ status=1
+ fi
+else
+ echo "pmview skipped, no binary installed"
+fi
+
+# pmgadgets
+#
+if which pmgadgets >/dev/null 2>&1
+then
+ if [ -z "$host" ]
+ then
+ echo "pmgadgets skipped, source is an archive"
+ else
+ cat <<End-of-File >$tmp.config
+pmgadgets 1 "foo" "bar"
+_legend l (
+ _default green3
+ 10 yellow
+)
+End-of-File
+ sed <$tmp.all \
+ -e 's/]//' \
+ -e 's/\[/ /' \
+ | $PCP_AWK_PROG '
+ { printf "_led 10 %d 5 5\n",10*NR
+ printf " _metric %s[\"%s\"]\n",$1,$2
+ printf " _legend l\n"
+ }' >>$tmp.config
+ $very_verbose && echo "pmgadgets config ..." && cat $tmp.config
+ if pmgadgets -C -c $tmp.config $src
+ then
+ $verbose && echo "pmgadgets OK"
+ else
+ echo "pmgadgets FAILED"
+ echo "pmgadgets config:"
+ cat $tmp.config
+ status=1
+ fi
+ fi
+else
+ echo "pmgadgets skipped, no binary installed"
+fi
diff --git a/qa/src/grind_conv.c b/qa/src/grind_conv.c
new file mode 100644
index 0000000..8b43501
--- /dev/null
+++ b/qa/src/grind_conv.c
@@ -0,0 +1,192 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ */
+
+/*
+ * grind_conv - exercise pmConvScale, pmAtomStr, pmUnitsStr
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ static char *usage = "[-D debug] type value iunit ounit\n"
+"\n"
+"iunit and ounit are in the 6-integer format:\n"
+"dimspace:dimtime:dimcount:scalespace:scaletime:scalecount\n";
+ pmUnits iu;
+ pmUnits ou;
+ int type;
+ int vbase;
+ pmAtomValue iv;
+ pmAtomValue ov;
+ char *vp;
+ char *q;
+
+ __pmSetProgname(argv[0]);
+
+ /* stop at type arg, so value may have leading "-" */
+ putenv("POSIXLY_CORRECT=yes");
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || argc - optind != 4) {
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ type = atoi(argv[optind]);
+ optind++;
+
+ if (strncmp(argv[optind], "0x", 2) == 0) {
+ vp = &argv[optind][2];
+ vbase = 16;
+ }
+ else {
+ vp = argv[optind];
+ vbase = 10;
+ }
+
+ q = vp;
+ switch (type) {
+ case PM_TYPE_32:
+ iv.l = strtol(vp, &q, vbase);
+ break;
+ case PM_TYPE_U32:
+ iv.ul = strtoul(vp, &q, vbase);
+ break;
+ case PM_TYPE_64:
+ iv.ll = strtoll(vp, &q, vbase);
+ break;
+ case PM_TYPE_U64:
+ iv.ull = strtoull(vp, &q, vbase);
+ break;
+ case PM_TYPE_FLOAT:
+ sts = sscanf(vp, "%f", &iv.f);
+ if (sts == 1) q = "";
+ break;
+ case PM_TYPE_DOUBLE:
+ sts = sscanf(vp, "%lf", &iv.d);
+ if (sts == 1) q = "";
+ break;
+ default:
+ case PM_TYPE_STRING:
+ iv.cp = vp;
+ q = "";
+ break;
+ case PM_TYPE_AGGREGATE:
+ case PM_TYPE_AGGREGATE_STATIC:
+ iv.vbp = (pmValueBlock *)malloc(PM_VAL_HDR_SIZE+strlen(vp));
+ iv.vbp->vlen = PM_VAL_HDR_SIZE+strlen(vp);
+ iv.vbp->vtype = type;
+ strncpy(iv.vbp->vbuf, vp, strlen(vp));
+ q = "";
+ break;
+ case PM_TYPE_EVENT: // ignore the value, force 0 event records
+ iv.vbp = (pmValueBlock *)malloc(sizeof(pmEventArray)-sizeof(pmEventRecord));
+ iv.vbp->vlen = sizeof(pmEventArray)-sizeof(pmEventRecord);
+ iv.vbp->vtype = type;
+ memset((void *)iv.vbp->vbuf, 0, sizeof(int));
+ q = "";
+ break;
+ case PM_TYPE_HIGHRES_EVENT: // ignore the value, force 0 event records
+ iv.vbp = (pmValueBlock *)malloc(sizeof(pmHighResEventArray)-sizeof(pmHighResEventRecord));
+ iv.vbp->vlen = sizeof(pmHighResEventArray)-sizeof(pmHighResEventRecord);
+ iv.vbp->vtype = type;
+ memset((void *)iv.vbp->vbuf, 0, sizeof(int));
+ q = "";
+ break;
+ }
+ optind++;
+
+ if (*q != '\0') {
+ fprintf(stderr, "Value botched @ %s\n", q);
+ exit(1);
+ }
+
+ vp = argv[optind];
+ iu.dimSpace = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_in;
+ vp = ++q;
+ iu.dimTime = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_in;
+ vp = ++q;
+ iu.dimCount = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_in;
+ vp = ++q;
+ iu.scaleSpace = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_in;
+ vp = ++q;
+ iu.scaleTime = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_in;
+ vp = ++q;
+ iu.scaleCount = strtol(vp, &q, 10);
+ if (*q != '\0') goto bad_in;
+ optind++;
+
+ vp = argv[optind];
+ ou.dimSpace = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_out;
+ vp = ++q;
+ ou.dimTime = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_out;
+ vp = ++q;
+ ou.dimCount = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_out;
+ vp = ++q;
+ ou.scaleSpace = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_out;
+ vp = ++q;
+ ou.scaleTime = strtol(vp, &q, 10);
+ if (*q != ':') goto bad_out;
+ vp = ++q;
+ ou.scaleCount = strtol(vp, &q, 10);
+ if (*q != '\0') goto bad_out;
+
+ printf("type=%d input units=%s value=%s\n", type, pmUnitsStr(&iu), pmAtomStr(&iv, type));
+
+ if ((sts = pmConvScale(type, &iv, &iu, &ov, &ou)) < 0)
+ printf("pmConvScale Error: %s\n", pmErrStr(sts));
+ else
+ printf("output units=%s value=%s\n", pmUnitsStr(&ou), pmAtomStr(&ov, type));
+
+ exit(0);
+
+bad_in:
+ fprintf(stderr, "Input units botch @ %s\n", q);
+ exit(1);
+
+bad_out:
+ fprintf(stderr, "Output units botch @ %s\n", q);
+ exit(1);
+}
+
diff --git a/qa/src/grind_ctx.c b/qa/src/grind_ctx.c
new file mode 100644
index 0000000..da2832f
--- /dev/null
+++ b/qa/src/grind_ctx.c
@@ -0,0 +1,161 @@
+/*
+ * Repeatedly call pmNewContext ... then pmDestroyContext ...
+ *
+ * Looking for memory leaks, malloc botches etc, especially in the
+ * presence of derived metrics.
+ *
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * (largely borrowed from chkctx2.c)
+ */
+
+#define SOURCE handle == 0 ? "host" : ( type == PM_CONTEXT_ARCHIVE ? "archive" : "host" )
+#define HOST handle == 0 ? "localhost" : host
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#define NUMCTX 10
+
+static void
+grind(int type, char *host)
+{
+ int ctx[NUMCTX];
+ int i;
+ int sts;
+
+ for (i = 0; i < NUMCTX; i++) {
+ if (type == PM_CONTEXT_HOST) {
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ fprintf(stderr, "pmNewContext(host=%s): %s\n", host, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else if (type == PM_CONTEXT_LOCAL) {
+ if ((sts = pmNewContext(PM_CONTEXT_LOCAL, host)) < 0) {
+ fprintf(stderr, "pmNewContext(local): %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else {
+ if ((sts = pmNewContext(PM_CONTEXT_ARCHIVE, host)) < 0) {
+ fprintf(stderr, "pmNewContext(archive=%s): %s\n", host, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ ctx[i] = sts;
+ }
+
+ for (i = NUMCTX-1; i >=0; i--) {
+ if ((sts = pmDestroyContext(ctx[i])) < 0) {
+ fprintf(stderr, "pmDestroyContext(%d): %s\n", ctx[i], pmErrStr(sts));
+ }
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int iter = 5;
+ char *host = "localhost";
+ char *endnum;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-a archive] [-c dmfile] [-h hostname] [-L] [-n namespace] [-s iterations]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:c:D:h:Ln:s:")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'c': /* derived metrics config file */
+ sts = pmLoadDerivedConfig(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: -c error: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'L': /* local mode, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ break;
+
+ case 'n': /* alternative name space file */
+ if ((sts = pmLoadNameSpace(optarg)) < 0) {
+ fprintf(stderr, "%s: cannot load namespace from \"%s\": %s\n", pmProgname, optarg, pmErrStr(sts));
+ exit(1);
+ }
+ break;
+
+ case 's': /* iterations */
+ iter = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || iter < 0) {
+ fprintf(stderr, "%s: -s requires poisitive numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if (type == 0)
+ type = PM_CONTEXT_HOST; /* default */
+
+ while (iter-- > 0) {
+ printf("Iteration %d\n", iter);
+ grind(type, host);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/hashwalk.c b/qa/src/hashwalk.c
new file mode 100644
index 0000000..05f2551
--- /dev/null
+++ b/qa/src/hashwalk.c
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2013 Red Hat.
+ *
+ * Exercise libpcp hash walk interfaces
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+void
+dumpnode(unsigned int key, long data)
+{
+ printf("%u => %ld\n", key, data);
+}
+
+__pmHashWalkState
+walker(const __pmHashNode *n, void *v)
+{
+ __pmHashWalkState state = (__pmHashWalkState)(long)v;
+ dumpnode(n->key, (long)n->data);
+ return state;
+}
+
+void
+chained(__pmHashCtl *h)
+{
+ __pmHashNode *n;
+
+ for (n = __pmHashWalk(h, PM_HASH_WALK_START);
+ n != NULL;
+ n = __pmHashWalk(h, PM_HASH_WALK_NEXT)) {
+ dumpnode(n->key, (long)n->data);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ __pmHashCtl hc = { 0 };
+
+ printf("adding entries\n");
+ __pmHashAdd(0, (void *)0L, &hc);
+ __pmHashAdd(1, (void *)1L, &hc);
+ __pmHashAdd(2, (void *)2L, &hc);
+ __pmHashAdd(3, (void *)3L, &hc);
+
+ if (argc >= 2) {
+ if (strcmp(argv[1], "callback") == 0)
+ __pmHashWalkCB(walker, (void *)PM_HASH_WALK_NEXT, &hc);
+ else if (strcmp(argv[1], "linked") == 0)
+ chained(&hc);
+ exit(0);
+ }
+
+ printf("iterating WALK_STOP\n");
+ __pmHashWalkCB(walker, (void *)PM_HASH_WALK_STOP, &hc);
+ printf("iterating WALK_NEXT\n");
+ __pmHashWalkCB(walker, (void *)PM_HASH_WALK_NEXT, &hc);
+ printf("iterating WALK_DELETE_STOP\n");
+ __pmHashWalkCB(walker, (void *)PM_HASH_WALK_DELETE_STOP, &hc);
+ printf("iterating WALK_NEXT\n");
+ __pmHashWalkCB(walker, (void *)PM_HASH_WALK_NEXT, &hc);
+ printf("iterating WALK_DELETE_NEXT\n");
+ __pmHashWalkCB(walker, (void *)PM_HASH_WALK_DELETE_NEXT, &hc);
+ printf("iterating WALK_NEXT\n");
+ __pmHashWalkCB(walker, (void *)PM_HASH_WALK_NEXT, &hc);
+
+ exit(0);
+}
diff --git a/qa/src/hex2nbo.c b/qa/src/hex2nbo.c
new file mode 100644
index 0000000..dc6707d
--- /dev/null
+++ b/qa/src/hex2nbo.c
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+/*
+ * internal structs with field order reversed for the not network
+ * byte order case
+ */
+typedef struct {
+ unsigned int serial : 22; /* unique within PMD */
+ unsigned int domain : 9; /* the administrative PMD */
+ int flag : 1;
+} __pmInDom_rev;
+
+typedef struct {
+ unsigned int item : 10;
+ unsigned int cluster : 12;
+ unsigned int domain : 9;
+ int flag : 1;
+} __pmID_rev;
+
+int
+main(int argc, char **argv)
+{
+ char buf[4096];
+ char *p;
+ char *q;
+ char *last;
+ char *t;
+ char c;
+ unsigned long val;
+ unsigned long nval;
+ int type; /* 0 plain, 1 indom, 2 pmid */
+ __pmInDom_int *ip;
+ __pmInDom_rev *nip;
+ __pmID_int *pp;
+ __pmID_rev *npp;
+
+ /* 0x01020304 */
+
+ while (fgets(buf, sizeof(buf), stdin) != NULL) {
+ p = buf;
+ while ((q = strstr(p, "0x")) != NULL) {
+ q += 2;
+ c = *q;
+ *q = '\0';
+ fputs(p, stdout);
+ type = 0;
+ last = p;
+ if ((t = strstr(p, "InDom")) >= last) {
+ last = t;
+ type = 1;
+ }
+ if ((t = strstr(p, "indom:")) >= last) {
+ last = t;
+ type = 1;
+ }
+ if ((t = strstr(p, "indom=")) >= last) {
+ last = t;
+ type = 1;
+ }
+ if ((t = strstr(p, "instance id:")) >= last) {
+ last = t;
+ type = -1; /* don't convert */
+ }
+ if ((t = strstr(p, "PMID")) >= last) {
+ last = t;
+ type = 2;
+ }
+ /* final check, no assignment needed */
+ if (strstr(p, "pmid:") >= last) {
+ type = 2;
+ }
+ *q = c;
+ p = q;
+ val = strtoul(p, &q, 16);
+ if (q-p > 0 && val != (nval = htonl(val))) {
+ if (type == -1) {
+ /* don't convert */
+ nval = val;
+ }
+ else if (type == 0) {
+ /* full-word byte swap */
+ ;
+ }
+ else if (type == 1) {
+ /* instance domain */
+ ip = (__pmInDom_int *)&val;
+ nip = (__pmInDom_rev *)&nval;
+ nip->flag = ip->flag;
+ nip->domain = ip->domain;
+ nip->serial = ip->serial;
+ }
+ else if (type == 2) {
+ /* metric identifier */
+ pp = (__pmID_int *)&val;
+ npp = (__pmID_rev *)&nval;
+ npp->flag = pp->flag;
+ npp->domain = pp->domain;
+ npp->cluster = pp->cluster;
+ npp->item = pp->item;
+ }
+ printf("%0*x", (int)(q-p), (unsigned)nval);
+ p = q;
+ }
+ }
+ fputs(p, stdout);
+ }
+ return 0;
+}
diff --git a/qa/src/hp-mib.c b/qa/src/hp-mib.c
new file mode 100644
index 0000000..fb31b93
--- /dev/null
+++ b/qa/src/hp-mib.c
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/* short test program for hp-mib metrics */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static char *metrics[] = {
+ "proc.nprocs",
+ "proc.psinfo.pid",
+ "proc.psinfo.uid",
+ "proc.psinfo.ppid",
+ "proc.psinfo.nice",
+ "proc.psinfo.ttydev",
+ "proc.psinfo.gid",
+ "proc.psinfo.pgrp",
+ "proc.psinfo.pri",
+ "proc.psinfo.oldpri",
+ "proc.psinfo.addr",
+ "proc.psinfo.cpu",
+ "proc.psinfo.uname",
+ "proc.psinfo.gname",
+ "proc.psinfo.ttyname",
+ "proc.pstatus.utime",
+ "proc.pstatus.stime",
+ "proc.psusage.starttime",
+ "proc.pstatus.flags",
+ "proc.psinfo.state",
+ "proc.psinfo.sname",
+ "proc.psinfo.wchan",
+ "proc.psinfo.fname",
+ "proc.psinfo.psargs",
+ "proc.psinfo.time",
+ "proc.psusage.tstamp",
+ "proc.psusage.starttime",
+ "proc.psinfo.clname",
+ "proc.psinfo.time",
+ "proc.psusage.rss",
+ "proc.pscred.suid",
+ "proc.psinfo.ttydev",
+ "proc.memory.virtual.txt",
+ "proc.memory.virtual.dat",
+ "proc.memory.virtual.bss",
+ "proc.memory.virtual.stack",
+ "proc.memory.virtual.shm",
+ "proc.memory.physical.txt",
+ "proc.memory.physical.dat",
+ "proc.memory.physical.bss",
+ "proc.memory.physical.stack",
+ "proc.memory.physical.shm"
+};
+
+#define NMETRICS (sizeof(metrics) / sizeof(metrics[0]))
+static pmID pmids[NMETRICS];
+
+static int
+int_compare(int *a, int *b)
+{
+ return *a - *b;
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *namespace = PM_NS_DEFAULT;
+ pmResult *result;
+ pmDesc desc;
+ int all_n;
+ int *all_inst;
+ char **all_names;
+ int (*int_cmp)() = int_compare;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = " [-n namespace]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:n:")) != EOF) {
+ switch (c) {
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+
+ /*
+ * Startup:
+ * a) load the name space
+ * b) lookup the metrics in the name space
+ * c) establish a context
+ * d) get the instance domain identifier
+ * [Note: these steps only have to be done once on startup]
+ */
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmLookupName(NMETRICS, metrics, pmids)) < 0) {
+ printf("%s: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ putenv("PMDA_LOCAL_PROC=");
+ if ((sts = pmNewContext(PM_CONTEXT_LOCAL, NULL)) < 0) {
+ printf("%s: Cannot make local connection: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmLookupDesc(pmids[1], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+
+
+ /*
+ * Enumerate the instance domain
+ * [This has to be done before every fetch]
+ */
+ if (desc.indom != PM_INDOM_NULL) {
+ all_n = pmGetInDom(desc.indom, &all_inst, &all_names);
+ if (all_n < 0) {
+ printf("%s: pmGetInDom: %s\n", pmProgname, pmErrStr(all_n));
+ exit(1);
+ }
+ }
+ else {
+ printf("%s: botch: metric %s (%s) should have an instance domain\n", pmProgname, metrics[1], pmIDStr(pmids[1]));
+ exit(1);
+ }
+
+ /*
+ * sort the instance identifiers
+ * [This has to be done before every fetch]
+ */
+ qsort(all_inst, all_n, sizeof(int), int_cmp);
+
+ /*
+ * establish an explicit instance profile
+ * [This has to be done before every fetch]
+ */
+ pmDelProfile(desc.indom, 0, (int *)0); /* exclude everything first */
+ pmAddProfile(desc.indom, all_n, all_inst); /* and then explicitly include our list of pids */
+
+ /*
+ * fetch the desired metrics
+ */
+ sts = pmFetch(NMETRICS, pmids, &result);
+ if (sts < 0) {
+ printf("%s: fetch all %d instances : %s\n", pmProgname, all_n, pmErrStr(sts));
+ exit(1);
+ }
+
+
+
+ printf("\n\n-------- Result Dump --------------\n");
+ __pmDumpResult(stdout, result);
+
+ /* note: in a loop, you need to free(all_inst); free(all_names); on every iteration */
+
+ free(all_inst);
+ free(all_names);
+ pmFreeResult(result);
+ if ((sts = pmWhichContext()) < 0) {
+ printf("%s: pmWhichContext: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ pmDestroyContext(sts);
+ exit(0);
+}
+
diff --git a/qa/src/hrunpack.c b/qa/src/hrunpack.c
new file mode 100644
index 0000000..e7de2a1
--- /dev/null
+++ b/qa/src/hrunpack.c
@@ -0,0 +1,479 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+static int mydomain = 29;
+
+static pmValueSet vs;
+static char *ebuf;
+static int ebuflen;
+static char *eptr;
+static char *ebufend;
+
+static pmHighResEventArray *hreap;
+static pmHighResEventRecord *hrerp;
+
+static int
+check_buf(int need)
+{
+ int offset = eptr - ebuf;
+
+ while (&eptr[need] >= ebufend) {
+ ebuflen *= 2;
+ if ((ebuf = (char *)realloc(ebuf, ebuflen)) == NULL)
+ return -errno;
+ eptr = &ebuf[offset];
+ ebufend = &ebuf[ebuflen-1];
+ vs.vlist[0].value.pval = (pmValueBlock *)ebuf;
+ }
+ return 0;
+}
+
+static int
+add_param(pmID pmid, int type, pmAtomValue *avp)
+{
+ int need; /* bytes in the buffer */
+ int vlen; /* value only length */
+ int sts;
+ pmEventParameter *epp;
+ void *src;
+
+ need = sizeof(pmEventParameter);
+ switch (type) {
+ case PM_TYPE_32:
+ case PM_TYPE_U32:
+ vlen = sizeof(avp->l);
+ need += vlen;
+ src = &avp->l;
+ break;
+ case PM_TYPE_64:
+ case PM_TYPE_U64:
+ vlen = sizeof(avp->ll);
+ need += vlen;
+ src = &avp->ll;
+ break;
+ case PM_TYPE_FLOAT:
+ vlen = sizeof(avp->f);
+ need += vlen;
+ src = &avp->f;
+ break;
+ case PM_TYPE_DOUBLE:
+ vlen = sizeof(avp->d);
+ need += vlen;
+ src = &avp->d;
+ break;
+ case PM_TYPE_STRING:
+ vlen = strlen(avp->cp);
+ need += PM_PDU_SIZE_BYTES(vlen);
+ src = avp->cp;
+ break;
+ case PM_TYPE_AGGREGATE:
+ case PM_TYPE_AGGREGATE_STATIC:
+ vlen = avp->vbp->vlen - PM_VAL_HDR_SIZE;
+ need += PM_PDU_SIZE_BYTES(vlen);
+ src = avp->vbp->vbuf;
+ break;
+ default:
+ fprintf(stderr, "add_parameter failed: bad type (%d)\n", type);
+ exit(1);
+ }
+ if ((sts = check_buf(need)) < 0) {
+ fprintf(stderr, "add_parameter failed: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ epp = (pmEventParameter *)eptr;
+ epp->ep_pmid = pmid;
+ epp->ep_len = PM_VAL_HDR_SIZE + vlen;
+ epp->ep_type = type;
+ memcpy((void *)(eptr + sizeof(pmEventParameter)), src, vlen);
+ eptr += need;
+ hrerp->er_nparams++;
+ return 0;
+}
+
+static void
+reset(void)
+{
+ eptr = ebuf;
+ hreap = (pmHighResEventArray *)eptr;
+ hreap->ea_nrecords = 0;
+ eptr += sizeof(pmHighResEventArray) - sizeof(pmHighResEventRecord);
+ vs.numval = 1;
+ vs.valfmt = PM_VAL_DPTR;
+ vs.vlist[0].inst = PM_IN_NULL;
+}
+
+static int
+add_record(struct timespec *ts, int flags)
+{
+ int sts;
+ size_t size = sizeof(pmHighResEventRecord) - sizeof(pmEventParameter);
+
+ if ((sts = check_buf(size)) < 0) {
+ fprintf(stderr, "add_record failed: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ hreap->ea_nrecords++;
+ hrerp = (pmHighResEventRecord *)eptr;
+ hrerp->er_timestamp.tv_sec = (__int64_t)ts->tv_sec;
+ hrerp->er_timestamp.tv_nsec = (__int64_t)ts->tv_nsec;
+ hrerp->er_nparams = 0;
+ hrerp->er_flags = flags;
+ eptr += sizeof(pmHighResEventRecord) - sizeof(pmEventParameter);
+ return 0;
+}
+
+static void
+dump(char *xpect)
+{
+ pmHighResResult **res;
+ int nmissed;
+ int nrecords;
+ int r;
+ int k;
+ static pmID pmid_flags = 0;
+ static pmID pmid_missed;
+
+ fprintf(stderr, "Expecting ... %s\n", xpect);
+
+ for (k = 0; k < vs.numval || vs.numval == PM_ERR_GENERIC; k++) {
+ if (vs.vlist[k].inst != PM_IN_NULL)
+ fprintf(stderr, "[instance %d]\n", vs.vlist[k].inst);
+ nrecords = pmUnpackHighResEventRecords(&vs, k, &res);
+
+ if (nrecords < 0) {
+ fprintf(stderr, "pmUnpackHighResEventRecords: %s\n",
+ pmErrStr(nrecords));
+ return;
+ }
+
+ /* lifted from pminfo.c */
+ if (pmid_flags == 0) {
+ /*
+ * get PMID for event.flags and event.missed
+ * note that pmUnpackHighResEventRecords() will have called
+ * __pmRegisterAnon(), so the anon metrics
+ * should now be in the PMNS
+ */
+ char *name_flags = "event.flags";
+ char *name_missed = "event.missed";
+ int sts;
+ sts = pmLookupName(1, &name_flags, &pmid_flags);
+ if (sts < 0) {
+ /* should not happen! */
+ fprintf(stderr, "Warning: cannot get PMID for %s: %s\n", name_flags, pmErrStr(sts));
+ /* avoid subsequent warnings ... */
+ __pmid_int(&pmid_flags)->item = 1;
+ }
+ sts = pmLookupName(1, &name_missed, &pmid_missed);
+ if (sts < 0) {
+ /* should not happen! */
+ fprintf(stderr, "Warning: cannot get PMID for %s: %s\n", name_missed, pmErrStr(sts));
+ /* avoid subsequent warnings ... */
+ __pmid_int(&pmid_missed)->item = 1;
+ }
+ }
+
+ nmissed = 0;
+ for (r = 0; r < nrecords; r++) {
+ if (res[r]->numpmid == 2 && res[r]->vset[0]->pmid == pmid_flags &&
+ (res[r]->vset[0]->vlist[0].value.lval & PM_EVENT_FLAG_MISSED) &&
+ res[r]->vset[1]->pmid == pmid_missed) {
+ nmissed += res[r]->vset[1]->vlist[0].value.lval;
+ }
+ }
+
+ fprintf(stderr, "Array contains %d records and %d missed records\n", nrecords, nmissed);
+ if (nrecords == 0)
+ continue;
+
+ for (r = 0; r < nrecords; r++) {
+ fprintf(stderr, "pmHighResResult[%d]\n", r);
+ __pmDumpHighResResult(stderr, res[r]);
+ }
+ pmFreeHighResEventResult(res);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int errflag = 0;
+ int sts;
+ int c;
+ struct timespec stamp;
+ pmAtomValue atom;
+ int savelen;
+ pmEventParameter *epp;
+/* === begin largely copied from samplepmda events.c === */
+ static pmValueBlock *aggr;
+ static char aggrval[] = { '\01', '\03', '\07', '\017', '\037', '\077', '\177', '\377' };
+ pmID pmid_array = PMDA_PMID(4095,0); /* event.highres_records */
+ pmID pmid_type = PMDA_PMID(0,127); /* event.type */
+ pmID pmid_32 = PMDA_PMID(0,128); /* event.param_32 */
+ pmID pmid_u32 = PMDA_PMID(0,129); /* event.param_u32 */
+ pmID pmid_64 = PMDA_PMID(0,130); /* event.param_64 */
+ pmID pmid_u64 = PMDA_PMID(0,131); /* event.param_u64 */
+ pmID pmid_float = PMDA_PMID(0,132); /* event.param_float */
+ pmID pmid_double = PMDA_PMID(0,133); /* event.param_double */
+ pmID pmid_string = PMDA_PMID(0,134); /* event.param_string */
+ pmID pmid_aggregate = PMDA_PMID(0,135); /* event.param_string */
+
+ /* first time, punt on a 512 byte buffer */
+ ebuflen = 512;
+ ebuf = eptr = (char *)malloc(ebuflen);
+ if (ebuf == NULL) {
+ fprintf(stderr, "initial ebuf malloc failed: %s\n", strerror(errno));
+ exit(1);
+ }
+ ebufend = &ebuf[ebuflen-1];
+ /*
+ * also, fix the domain field in the event parameter PMIDs ...
+ * note these PMIDs must match the corresponding metrics in
+ * desctab[] and this cannot easily be done automatically
+ */
+ ((__pmID_int *)&pmid_array)->domain = mydomain;
+ ((__pmID_int *)&pmid_type)->domain = mydomain;
+ ((__pmID_int *)&pmid_32)->domain = mydomain;
+ ((__pmID_int *)&pmid_u32)->domain = mydomain;
+ ((__pmID_int *)&pmid_64)->domain = mydomain;
+ ((__pmID_int *)&pmid_u64)->domain = mydomain;
+ ((__pmID_int *)&pmid_float)->domain = mydomain;
+ ((__pmID_int *)&pmid_double)->domain = mydomain;
+ ((__pmID_int *)&pmid_string)->domain = mydomain;
+ ((__pmID_int *)&pmid_aggregate)->domain = mydomain;
+ /* build pmValueBlock for aggregate value */
+ aggr = (pmValueBlock *)malloc(PM_VAL_HDR_SIZE + sizeof(aggrval));
+ aggr->vtype = PM_TYPE_AGGREGATE;
+ aggr->vlen = PM_VAL_HDR_SIZE + sizeof(aggrval);
+ memcpy(aggr->vbuf, (void *)aggrval, sizeof(aggrval));
+
+/* === end copied from samplepmda events.c === */
+
+ vs.pmid = pmid_array;
+ vs.numval = 1;
+ vs.valfmt = PM_VAL_DPTR;
+ vs.vlist[0].inst = PM_IN_NULL;
+ vs.vlist[0].value.pval = (pmValueBlock *)ebuf;
+
+ __pmSetProgname(argv[0]);
+
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s ...\n", pmProgname);
+ fprintf(stderr, "options:\n");
+ fprintf(stderr, "-D debug\n");
+ exit(1);
+ }
+
+ reset();
+ __pmGetTimespec(&stamp);
+ /* rebase event records 10 secs in past, add 1 sec for each new record */
+ stamp.tv_sec -= 10;
+
+ hreap->ea_type = 0;
+ hreap->ea_len = 0;
+ dump("Unknown or illegal metric type");
+ hreap->ea_type = PM_TYPE_HIGHRES_EVENT;
+
+ hreap->ea_nrecords = -1;
+ hreap->ea_len = eptr - ebuf;
+ dump("Error - ea_nrecords < 0");
+ hreap->ea_nrecords = 0;
+
+ hreap->ea_len = PM_VAL_HDR_SIZE;
+ dump("Error - vlen way too small");
+
+ hreap->ea_len = eptr - ebuf;
+ dump("No records");
+
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ hreap->ea_len = eptr - ebuf;
+ dump("1 record, no params");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ hreap->ea_len = eptr - ebuf;
+ dump("1 record, u32 param = 1");
+
+ reset();
+ add_record(&stamp, 1);
+ stamp.tv_sec++;
+ atom.ul = 2;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.ll = -3;
+ add_param(pmid_64, PM_TYPE_64, &atom);
+ hreap->ea_len = eptr - ebuf;
+ dump("1 record, u32 param = 2, u64 param = -3");
+ hreap->ea_len--;
+ dump("Error - buffer overrun @ parameter");
+
+ reset();
+ add_record(&stamp, PM_EVENT_FLAG_MISSED);
+ stamp.tv_sec++;
+ hrerp->er_nparams = 3;
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 4;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.ull = 5;
+ add_param(pmid_u64, PM_TYPE_U64, &atom);
+ atom.cp = "6";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 7;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.d = 8;
+ add_param(pmid_double, PM_TYPE_DOUBLE, &atom);
+ atom.d = -9;
+ add_param(pmid_double, PM_TYPE_DOUBLE, &atom);
+ add_record(&stamp, 2);
+ stamp.tv_sec++;
+ atom.ul = 10;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.ull = 11;
+ add_param(pmid_u64, PM_TYPE_U64, &atom);
+ atom.cp = "twelve";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ atom.cp = "thirteen";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ atom.l = 14;
+ add_param(pmid_32, PM_TYPE_32, &atom);
+ atom.ul = 15;
+ add_param(pmid_u32, PM_TYPE_U32, &atom);
+ add_record(&stamp, PM_EVENT_FLAG_MISSED);
+ stamp.tv_sec++;
+ hrerp->er_nparams = 4;
+ savelen = eptr - ebuf;
+ add_record(&stamp,0);
+ stamp.tv_sec++;
+ atom.ul = 16;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.f = -17;
+ add_param(pmid_float, PM_TYPE_FLOAT, &atom);
+ atom.vbp = aggr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ hreap->ea_len = eptr - ebuf;
+ dump("6 records, 7 missed [u32=4 u64=5 str=\"6\"][u32=7 d=8 d=-9][u32=10 u64=11 str=\"twelve\" str=\"thirteen\" 32=-14 u32=15][u32=16 f=-17 aggr=...]");
+
+ hreap->ea_len = savelen;
+ dump("Error - buffer overrun @ record");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ hreap->ea_len = eptr - ebuf;
+ vs.numval = PM_ERR_GENERIC;
+ dump("bad numval");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ hreap->ea_len = eptr - ebuf;
+ vs.valfmt = 42;
+ dump("bad valfmt");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ hreap->ea_len = eptr - ebuf;
+ vs.vlist[0].inst = 42;
+ dump("odd instance");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.vbp = aggr;
+ epp = (pmEventParameter *)eptr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ epp->ep_type = PM_TYPE_HIGHRES_EVENT;
+ hreap->ea_len = eptr - ebuf;
+ dump("1 record, nested event type @ 1st parameter");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 18;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 19;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.vbp = aggr;
+ epp = (pmEventParameter *)eptr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ epp->ep_type = PM_TYPE_HIGHRES_EVENT;
+ atom.ul = 20;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 21;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ hreap->ea_len = eptr - ebuf;
+ dump("3 records, nested event type @ 2nd parameter of 2nd record");
+
+ printf("\n");
+ printf("__pmDumpHighResEventRecords coverage test ...\n");
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.l = 22;
+ add_param(pmid_type, PM_TYPE_32, &atom);
+ atom.ul = 23;
+ add_param(pmid_u32, PM_TYPE_U32, &atom);
+ atom.ll = -24;
+ add_param(pmid_64, PM_TYPE_64, &atom);
+ atom.ull = 25;
+ add_param(pmid_u64, PM_TYPE_U64, &atom);
+ atom.f = -26;
+ add_param(pmid_float, PM_TYPE_FLOAT, &atom);
+ atom.d = 27;
+ add_param(pmid_double, PM_TYPE_DOUBLE, &atom);
+ atom.cp = "minus twenty-eight";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ atom.vbp = aggr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE_STATIC, &atom);
+ epp = (pmEventParameter *)eptr;
+ atom.l = 29;
+ add_param(pmid_32, PM_TYPE_32, &atom);
+ hreap->ea_len = eptr - ebuf;
+ pmDebug |= DBG_TRACE_FETCH;
+ dump("all good");
+ epp->ep_type = PM_TYPE_UNKNOWN;
+ __pmDumpHighResEventRecords(stdout, &vs, 0);
+
+ return 0;
+}
diff --git a/qa/src/import_limit_test.perl b/qa/src/import_limit_test.perl
new file mode 100644
index 0000000..6cafbc2
--- /dev/null
+++ b/qa/src/import_limit_test.perl
@@ -0,0 +1,72 @@
+#
+# Copyright (c) Red Hat.
+#
+# Thanks to Marko Myllynen for writing this test case, and
+# neatly exposing the underlying bug (Fedora/EPEL 968210).
+#
+
+use strict;
+use warnings;
+use Date::Parse;
+use Date::Format;
+use PCP::LogImport;
+
+my $r;
+my $LOW = 1020;
+my $HIGH = 1030;
+my $date = "2013-05-29T00:00:00";
+
+pmiStart("test-limit", 0);
+exit 1 if pmiSetHostname("localhost");
+
+for (my $i = 0; $i < $LOW; $i++) {
+ my $metric = "x_$i";
+ $r = pmiAddMetric($metric,
+ PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmiUnits(0,0,1,0,0,PM_COUNT_ONE));
+ if ($r != 0) {
+ print "pmiAddMetric failed for $metric / round $i with: ";
+ print pmiErrStr($r) . "\n";
+ exit 2;
+ }
+ $r = pmiPutValue($metric, "", $i);
+ if ($r != 0) {
+ print "pmiPutValue failed for $metric / round $i with: ";
+ print pmiErrStr($r) . "\n";
+ exit 3;
+ }
+}
+
+for (my $j = $LOW; $j < $HIGH; $j++) {
+ my $metric = "t_$j";
+ pmiAddMetric($metric,
+ PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmiUnits(0,0,1,0,0,PM_COUNT_ONE));
+ if ($r != 0) {
+ print "pmiAddMetric failed for $metric / round $j with: ";
+ print pmiErrStr($r) . "\n";
+ exit 4;
+ }
+ pmiPutValue($metric, "", $j);
+ if ($r != 0) {
+ print "pmiPutValue failed for $metric / round $j with: ";
+ print pmiErrStr($r) . "\n";
+ exit 5;
+ }
+}
+
+$r = pmiWrite(str2time($date, "UTC"), 0);
+if ($r != 0) {
+ print "pmiWrite failed for $date / " . str2time($date, "UTC") . " with: ";
+ print pmiErrStr($r) . "\n";
+ exit 6;
+}
+
+pmiEnd();
+if ($r != 0) {
+ print "pmiEnd failed with: ";
+ print pmiErrStr($r) . "\n";
+ exit 7;
+}
+
+exit 0;
diff --git a/qa/src/import_limit_test.pl b/qa/src/import_limit_test.pl
new file mode 120000
index 0000000..98daf24
--- /dev/null
+++ b/qa/src/import_limit_test.pl
@@ -0,0 +1 @@
+import_limit_test.perl \ No newline at end of file
diff --git a/qa/src/indom.c b/qa/src/indom.c
new file mode 100644
index 0000000..273c846
--- /dev/null
+++ b/qa/src/indom.c
@@ -0,0 +1,310 @@
+/*
+ * indom - exercise pmGetInDom, pmNameInDom and pmLookupInDom
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int type;
+static int inst;
+
+int
+dometric(char *name)
+{
+ pmID pmid;
+ pmDesc desc;
+ int sts;
+ char *iname;
+ int *ilist;
+ char **nlist;
+
+ if ((sts = pmLookupName(1, &name, &pmid)) < 0)
+ return sts;
+
+ if ((sts = pmLookupDesc(pmid, &desc)) < 0)
+ return sts;
+
+ iname = "no match";
+ printf("pm*InDom: inst=[%d]", inst);
+ if ((sts = pmNameInDom(desc.indom, inst, &iname)) < 0)
+ printf(" {%s}\n", pmErrStr(sts));
+ else {
+ printf(" iname=<%s> reverse lookup:", iname);
+ if ((sts = pmLookupInDom(desc.indom, iname)) < 0)
+ printf(" {%s}\n", pmErrStr(sts));
+ else
+ printf(" inst=[%d]\n", sts);
+ }
+ if (type == PM_CONTEXT_ARCHIVE) {
+ iname = "no match";
+ printf("pm*InDomArchive: inst=[%d]", inst);
+ if ((sts = pmNameInDomArchive(desc.indom, inst, &iname)) < 0)
+ printf(" {%s}\n", pmErrStr(sts));
+ else {
+ printf(" iname=<%s> reverse lookup:", iname);
+ if ((sts = pmLookupInDomArchive(desc.indom, iname)) < 0)
+ printf(" {%s}\n", pmErrStr(sts));
+ else
+ printf(" inst=[%d]\n", sts);
+ }
+ }
+
+ if ((sts = pmGetInDom(desc.indom, &ilist, &nlist)) < 0)
+ printf("pmGetInDom: {%s}\n", pmErrStr(sts));
+ else {
+ int i;
+ printf("pmGetInDom:\n");
+ for (i = 0; i < sts; i++) {
+ if (ilist[i] == inst) {
+ printf(" [%d] <%s>\n", ilist[i], nlist[i]);
+ break;
+ }
+ }
+ free(ilist);
+ free(nlist);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetInDomArchive(desc.indom, &ilist, &nlist)) < 0)
+ printf("pmGetInDomArchive: {%s}\n", pmErrStr(sts));
+ else {
+ int i;
+ printf("pmGetInDomArchive:\n");
+ for (i = 0; i < sts; i++) {
+ if (i == inst) {
+ printf(" [%d] <%s>\n", ilist[i], nlist[i]);
+ break;
+ }
+ }
+ free(ilist);
+ free(nlist);
+ }
+ }
+
+ return sts;
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int force = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ char *configfile = (char *)0;
+ char *logfile = (char *)0;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = (char *)0; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ int samples = -1;
+ double delta = 1.0;
+ char *endnum;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:c:D:fh:i:l:n:s:t:VzZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != (char *)0) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'f': /* force */
+ force++;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'i': /* instance */
+ inst = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || inst < 0) {
+ fprintf(stderr, "%s: -i requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != (char *)0) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a or -h option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -c configfile file to load configuration from\n\
+ -D debug standard PCP debug flag\n\
+ -f force .. \n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n\
+ -V verbose/diagnostic output\n\
+ -z set reporting timezone to local time for host from -a or -h\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != (char *)0) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != (char *)0) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+ else
+ tzh = pmNewContextZone();
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("%s:\n", argv[optind]);
+ sts = dometric(argv[optind]);
+ if (sts < 0)
+ printf("Error: %s\n", pmErrStr(sts));
+ optind++;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/interp0.c b/qa/src/interp0.c
new file mode 100644
index 0000000..badd07c
--- /dev/null
+++ b/qa/src/interp0.c
@@ -0,0 +1,277 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * interp0 - basic PM_MODE_INTERP exercises
+ */
+
+#include <unistd.h>
+#include <string.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int j;
+ double tdiff;
+ int errflag = 0;
+ int ahtype = 0;
+ char *host = NULL; /* pander to gcc */
+ pmLogLabel label; /* get hostname for archives */
+ char *namespace = PM_NS_DEFAULT;
+ int samples = 10;
+ double delta = 1.0;
+ int msec;
+ char *endnum;
+ pmResult *result;
+ pmResult *prev = (pmResult *)0;
+ int i;
+ int numpmid = 3;
+ pmID pmid[3];
+ char *name[] = { "sample.seconds", "sample.drift", "sample.milliseconds" };
+ pmDesc desc;
+ int type[3];
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:s:t:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (ahtype != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ ahtype = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -D debug standard PCP debug flag\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (namespace != PM_NS_DEFAULT) {
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if (ahtype != PM_CONTEXT_ARCHIVE) {
+ fprintf(stderr, "%s: -a is not optional!\n", pmProgname);
+ exit(1);
+ }
+ if ((sts = pmNewContext(ahtype, host)) < 0) {
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind < argc) {
+ numpmid = 0;
+ while (optind < argc && numpmid < 3) {
+ name[numpmid] = argv[optind];
+ printf("metric[%d]: %s\n", numpmid, name[numpmid]);
+ optind++;
+ numpmid++;
+ }
+ }
+
+ /* skip preamble */
+ sts = pmFetchArchive(&result);
+ if (sts < 0) {
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ pmFreeResult(result);
+
+ sts = pmFetchArchive(&result);
+ if (sts < 0) {
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+
+ msec = delta * 1000;
+ sts = pmSetMode(PM_MODE_INTERP, &result->timestamp, msec);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ pmFreeResult(result);
+
+ sts = pmLookupName(numpmid, name, pmid);
+ if (sts < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ for (i = 0; i < numpmid; i++) {
+ sts = pmLookupDesc(pmid[i], &desc);
+ if (sts < 0) {
+ printf("Warning: pmLookupDesc(%s): %s\n", name[i], pmErrStr(sts));
+ type[i] = -1;
+ }
+ else
+ type[i] = desc.type;
+ }
+
+ for (i = 0; i < samples; i++) {
+ sts = pmFetch(numpmid, pmid, &result);
+ if (sts < 0) {
+ printf("sample[%d] pmFetch: %s\n", i, pmErrStr(sts));
+ if (sts == PM_ERR_EOL)
+ break;
+ printf("... this is unexpected and fatal!\n");
+ exit(1);
+ }
+ if (prev) {
+ tdiff = result->timestamp.tv_sec - prev->timestamp.tv_sec +
+ (double)(result->timestamp.tv_usec - prev->timestamp.tv_usec) / 1000000;
+ printf("\nsample %d, delta time=%.3f secs\n", i, tdiff);
+ for (j = 0; j < numpmid; j++) {
+ printf("%s: ", name[j]);
+ if (result->vset[j]->numval != 1 || prev->vset[j]->numval != 1) {
+ if (result->vset[j]->numval == 0)
+ printf("no current values ");
+ if (prev->vset[j]->numval == 0)
+ printf("no prior values ");
+ if (result->vset[j]->numval < 0)
+ printf("current error %s ", pmErrStr(result->vset[j]->numval));
+ if (prev->vset[j]->numval < 0 && prev->vset[j]->numval != result->vset[j]->numval)
+ printf("prior error %s ", pmErrStr(prev->vset[j]->numval));
+ putchar('\n');
+ }
+ else {
+ if (type[j] == PM_TYPE_32 || type[j] == PM_TYPE_U32) {
+ printf("delta: %d\n",
+ result->vset[j]->vlist[0].value.lval -
+ prev->vset[j]->vlist[0].value.lval);
+ }
+ else if (type[j] == PM_TYPE_DOUBLE) {
+ void *cp = (void *)result->vset[j]->vlist[0].value.pval->vbuf;
+ void *pp = (void *)prev->vset[j]->vlist[0].value.pval->vbuf;
+ double cv, pv;
+ pmAtomValue av;
+
+ memcpy((void *)&av, cp, sizeof(pmAtomValue));
+ cv = av.d;
+ memcpy((void *)&av, pp, sizeof(pmAtomValue));
+ pv = av.d;
+ printf("delta: %.0f\n",
+ cv - pv);
+ }
+ else if (type[j] == PM_TYPE_EVENT) {
+ pmResult **records;
+ int r, param;
+
+ printf("%d event records found\n", result->vset[j]->numval);
+ sts = pmUnpackEventRecords(result->vset[j], 0, &records);
+ if (sts < 0) {
+ printf("event decode error: %s\n", pmErrStr(sts));
+ } else {
+ for (r = 0; r < sts; r++) {
+ tdiff = records[r]->timestamp.tv_sec - prev->timestamp.tv_sec + (double)
+ (records[r]->timestamp.tv_usec - prev->timestamp.tv_usec) / 1000000;
+ printf("\nevent %d, offset time=%.3f secs, param ids:", j+1, tdiff);
+ for (param = 0; param < records[r]->numpmid; param++)
+ printf(" %s", pmIDStr(records[r]->vset[param]->pmid));
+ }
+ pmFreeEventResult(records);
+ putchar('\n');
+ }
+ }
+ else if (type[j] == PM_TYPE_HIGHRES_EVENT) {
+ pmHighResResult **hrecords;
+ int r, param;
+
+ printf("%d highres event records found\n", result->vset[j]->numval);
+ sts = pmUnpackHighResEventRecords(result->vset[j], 0, &hrecords);
+ if (sts < 0) {
+ printf("highres event decode error: %s\n", pmErrStr(sts));
+ } else {
+ for (r = 0; r < sts; r++) {
+ tdiff = hrecords[r]->timestamp.tv_sec - prev->timestamp.tv_sec + (double)
+ (hrecords[r]->timestamp.tv_nsec - prev->timestamp.tv_usec * 1000)
+ / 1000000000;
+ printf("\nhighres event %d, offset time=%.9f secs, param ids:", j+1, tdiff);
+ for (param = 0; param < hrecords[r]->numpmid; param++)
+ printf(" %s", pmIDStr(hrecords[r]->vset[param]->pmid));
+ }
+ pmFreeHighResEventResult(hrecords);
+ putchar('\n');
+ }
+ }
+ else
+ printf("don't know how to display type %d for PMID %s\n",
+ type[j], pmIDStr(pmid[j]));
+ }
+ }
+ pmFreeResult(prev);
+ }
+ prev = result;
+ }
+
+ printf("\n%d samples required %d log reads\n", i, __pmLogReads);
+
+ exit(0);
+}
diff --git a/qa/src/interp1.c b/qa/src/interp1.c
new file mode 100644
index 0000000..7a6d84b
--- /dev/null
+++ b/qa/src/interp1.c
@@ -0,0 +1,248 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * interp1 - backward PM_MODE_INTERP exercises
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int j;
+ int k;
+ double tdiff;
+ int dflag = 0;
+ int errflag = 0;
+ int ahtype = 0;
+ char *host = NULL; /* pander to gcc */
+ pmLogLabel label; /* get hostname for archives */
+ char *namespace = PM_NS_DEFAULT;
+ int samples = 10;
+ double delta = 1.0;
+ int msec;
+ char *endnum;
+ pmResult *result;
+ pmResult *prev = (pmResult *)0;
+ int i;
+ int numpmid = 3;
+ pmID pmid[3];
+ char *name[] = { "sample.seconds", "sample.drift", "sample.milliseconds" };
+ pmDesc desc[3];
+ struct timeval tend = {0x7fffffff, 0};
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:dn:s:t:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (ahtype != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ ahtype = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'd': /* use metric descriptor to decide on rate conversion */
+ dflag++;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -d use metric descriptors to decide on value or delta\n\
+ -D debug standard PCP debug flag\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (ahtype == 0) {
+ fprintf(stderr, "%s: -a is not optional!\n", pmProgname);
+ exit(1);
+ }
+ if ((sts = pmNewContext(ahtype, host)) < 0) {
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind < argc) {
+ numpmid = 0;
+ while (optind < argc && numpmid < 3) {
+ name[numpmid] = argv[optind];
+ printf("metric[%d]: %s\n", numpmid, name[numpmid]);
+ optind++;
+ numpmid++;
+ }
+ }
+
+ sts = pmSetMode(PM_MODE_BACK, &tend, 0);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pmFetchArchive(&result);
+ if (sts < 0) {
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ msec = -delta * 1000;
+ sts = pmSetMode(PM_MODE_INTERP, &result->timestamp, msec);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ pmFreeResult(result);
+
+ sts = pmLookupName(numpmid, name, pmid);
+ if (sts < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ for (i = 0; i < numpmid; i++) {
+ sts = pmLookupDesc(pmid[i], &desc[i]);
+ if (sts < 0) {
+ printf("Warning: pmLookupDesc(%s): %s\n", pmIDStr(pmid[i]), pmErrStr(sts));
+ desc[i].type = -1;
+ }
+ }
+
+ for (i = 0; i < samples; i++) {
+ sts = pmFetch(numpmid, pmid, &result);
+ if (sts < 0) {
+ printf("sample[%d] pmFetch: %s\n", i, pmErrStr(sts));
+ break;
+ }
+ if (prev) {
+ tdiff = result->timestamp.tv_sec - prev->timestamp.tv_sec +
+ (double)(result->timestamp.tv_usec - prev->timestamp.tv_usec) / 1000000;
+ printf("\nsample %d, delta time=%.3f secs\n", i, tdiff);
+ for (j = 0; j < numpmid; j++) {
+ printf("%s: ", name[j]);
+ if (result->vset[j]->numval == 0)
+ printf("no current values ");
+ if (prev->vset[j]->numval == 0)
+ printf("no prior values ");
+ if (result->vset[j]->numval < 0)
+ printf("current error %s ", pmErrStr(result->vset[j]->numval));
+ if (prev->vset[j]->numval < 0 && prev->vset[j]->numval != result->vset[j]->numval)
+ printf("prior error %s ", pmErrStr(prev->vset[j]->numval));
+ putchar('\n');
+ for (k = 0; k < prev->vset[j]->numval && k < result->vset[j]->numval; k++) {
+ if (result->vset[j]->vlist[k].inst != prev->vset[j]->vlist[k].inst) {
+ printf("inst[%d]: mismatch, prior=%d, current=%d\n", k,
+ prev->vset[j]->vlist[k].inst,
+ result->vset[j]->vlist[k].inst);
+ continue;
+ }
+ if (desc[j].type == PM_TYPE_32 || desc[j].type == PM_TYPE_U32) {
+ if (!dflag || desc[j].sem == PM_SEM_COUNTER)
+ printf("delta[%d]: %d\n", k,
+ result->vset[j]->vlist[k].value.lval -
+ prev->vset[j]->vlist[k].value.lval);
+ else
+ printf("value[%d]: %d\n", k,
+ result->vset[j]->vlist[k].value.lval);
+ }
+ else if (desc[j].type == PM_TYPE_DOUBLE) {
+ void *cp = (void *)result->vset[j]->vlist[k].value.pval->vbuf;
+ void *pp = (void *)prev->vset[j]->vlist[k].value.pval->vbuf;
+ double cv, pv;
+ pmAtomValue av;
+
+ memcpy((void *)&av, cp, sizeof(pmAtomValue));
+ cv = av.d;
+ if (!dflag || desc[j].sem == PM_SEM_COUNTER) {
+ memcpy((void *)&av, pp, sizeof(pmAtomValue));
+ pv = av.d;
+ printf("delta[%d]: %.0f\n", k, cv - pv);
+ }
+ else
+ printf("value[%d]: %.0f\n", k, cv);
+ }
+ else if (desc[j].type == PM_TYPE_STRING) {
+ printf("value[%d]: %s\n", k,
+ result->vset[j]->vlist[k].value.pval->vbuf);
+ }
+ else {
+ printf("don't know how to display type %d for PMID %s\n",
+ desc[j].type, pmIDStr(pmid[j]));
+ break;
+ }
+ }
+ }
+ pmFreeResult(prev);
+ }
+ prev = result;
+ }
+
+ printf("\n%d samples required %d log reads\n", i, __pmLogReads);
+
+ exit(0);
+}
diff --git a/qa/src/interp2.c b/qa/src/interp2.c
new file mode 100644
index 0000000..11dff00
--- /dev/null
+++ b/qa/src/interp2.c
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * interp2 - random offset PM_MODE_INTERP exercises
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static void
+mung(struct timeval *start, struct timeval *end,
+ int pct, struct timeval *mid)
+{
+ __int64_t sec, usec;
+ sec = (50 + pct * (__int64_t)end->tv_sec + (100 - pct) * (__int64_t)start->tv_sec) / 100;
+ usec = (50 + pct * (__int64_t)end->tv_usec + (100 - pct) * (__int64_t)start->tv_usec) / 100;
+ while (usec > 1000000) {
+ usec -= 1000000;
+ sec++;
+ }
+ while (usec < 0) {
+ usec += 1000000;
+ sec--;
+ }
+ mid->tv_sec = sec;
+ mid->tv_usec = usec;
+}
+
+static void
+printstamp(struct timeval *tp)
+{
+ static struct tm *tmp;
+
+ tmp = localtime(&tp->tv_sec);
+ printf("%02d:%02d:%02d.%03d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec, (int)(tp->tv_usec/1000));
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int ahtype = 0;
+ char *host = NULL; /* pander to gcc */
+ pmLogLabel label; /* get hostname for archives */
+ char *namespace = PM_NS_DEFAULT;
+ pmResult *result;
+ struct timeval tend;
+ struct timeval twant;
+ int msec;
+ int forw;
+ int back;
+ int pct;
+ int numpmid = 3;
+ pmID pmid[3];
+ char *name[] = { "sample.seconds", "sample.drift", "sample.milliseconds" };
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (ahtype != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ ahtype = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -D debug standard PCP debug flag\n\
+ -n namespace use an alternative PMNS\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (ahtype == 0) {
+ fprintf(stderr, "%s: -a is not optional!\n", pmProgname);
+ exit(1);
+ }
+ if ((sts = pmNewContext(ahtype, host)) < 0) {
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pmGetArchiveEnd(&tend);
+ if (sts < 0) {
+ printf("pmGetArchiveEnd: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind < argc) {
+ numpmid = 0;
+ while (optind < argc && numpmid < 3) {
+ name[numpmid] = argv[optind];
+ printf("metric[%d]: %s\n", numpmid, name[numpmid]);
+ optind++;
+ numpmid++;
+ }
+ }
+
+ sts = pmLookupName(numpmid, name, pmid);
+ if (sts < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ printf("start: ");
+ printstamp(&label.ll_start);
+ putchar('\n');
+ printf("end: ");
+ printstamp(&tend);
+ putchar('\n');
+ mung(&label.ll_start, &tend, 2, &twant);
+#if 0
+ msec = 1000 * (twant.tv_sec - label.ll_start.tv_sec) +
+ (twant.tv_usec - label.ll_start.tv_usec) / 1000;
+#else
+ msec = 100;
+#endif
+ printf("step: %d msec\n", msec);
+ for (pct = 0; pct <= 100; pct += 10) {
+ __pmLogReads = 0;
+ mung(&label.ll_start, &tend, pct, &twant);
+ printf("%3d%% ", pct);
+ printstamp(&twant);
+ forw = back = 0;
+ sts = pmSetMode(PM_MODE_INTERP, &twant, msec);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ while (pmFetch(numpmid, pmid, &result) >= 0) {
+ forw++;
+ pmFreeResult(result);
+ }
+ printf("%4d forw + ", forw);
+ sts = pmSetMode(PM_MODE_INTERP, &twant, -msec);
+ if (sts < 0) {
+ printf("pmSetMode: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ while (pmFetch(numpmid, pmid, &result) >= 0) {
+ back++;
+ pmFreeResult(result);
+ }
+ printf("%4d back = %d, %d log reads\n",
+ back, forw + back, __pmLogReads);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/interp3.c b/qa/src/interp3.c
new file mode 100644
index 0000000..61c7b95
--- /dev/null
+++ b/qa/src/interp3.c
@@ -0,0 +1,425 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * exercise archive-based pmFetch and pmSetMode ops in interpolate mode
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int vflag;
+static int tflag;
+static int numpmid;
+static pmID pmidlist[20];
+static char *namelist[20];
+static double delta = 500;
+
+static void
+cmpres(int n, pmResult *e, pmResult *g)
+{
+ int i;
+ int j;
+ int err = 0;
+
+ if (e->timestamp.tv_sec != g->timestamp.tv_sec ||
+ e->timestamp.tv_usec != g->timestamp.tv_usec) {
+ printf("[sample %d] pmResult.timestamp: expected %ld.%06ld, got %ld.%06ld\n",
+ n, (long)e->timestamp.tv_sec, (long)e->timestamp.tv_usec,
+ (long)g->timestamp.tv_sec, (long)g->timestamp.tv_usec);
+ goto FAILED;
+ }
+ if (e->numpmid != g->numpmid) {
+ printf("[sample %d] pmResult.numpmid: expected %d, got %d\n",
+ n, e->numpmid, g->numpmid);
+ goto FAILED;
+ }
+
+ for (i = 0; i < e->numpmid; i++) {
+ if (e->vset[i]->pmid != g->vset[i]->pmid) {
+ printf("[sample %d] pmResult.vset[%d].pmid: expected %s",
+ n, i, pmIDStr(e->vset[i]->pmid));
+ printf(" got %s\n", pmIDStr(g->vset[i]->pmid));
+ err++;
+ }
+ if (e->vset[i]->numval != g->vset[i]->numval) {
+ printf("[sample %d] pmResult.vset[%d].numval: expected %d, got %d\n",
+ n, i, e->vset[i]->numval, g->vset[i]->numval);
+ err++;
+ continue;
+ }
+ if (e->vset[i]->valfmt != g->vset[i]->valfmt) {
+ printf("[sample %d] pmResult.vset[%d].valfmt: expected %d, got %d\n",
+ n, i, e->vset[i]->valfmt, g->vset[i]->valfmt);
+ err++;
+ continue;
+ }
+ if (e->vset[i]->valfmt != PM_VAL_INSITU)
+ continue;
+ for (j = 0; j < e->vset[i]->numval; j++) {
+ if (e->vset[i]->vlist[j].inst != g->vset[i]->vlist[j].inst) {
+ printf("[sample %d] pmResult.vset[%d].vlist[%d].inst: expected %d, got %d\n",
+ n, i, j, e->vset[i]->vlist[j].inst, g->vset[i]->vlist[j].inst);
+ err++;
+ }
+ if (e->vset[i]->vlist[j].value.lval != g->vset[i]->vlist[j].value.lval) {
+ printf("[sample %d] pmResult.vset[%d].vlist[%d].lval: expected %d, got %d\n",
+ n, i, j, e->vset[i]->vlist[j].value.lval, g->vset[i]->vlist[j].value.lval);
+ err++;
+ }
+ }
+ }
+
+ if (err == 0)
+ return;
+
+FAILED:
+ printf("Expected ...\n");
+ __pmDumpResult(stdout, e);
+ printf("Got ...\n");
+ __pmDumpResult(stdout, g);
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int ctx[2];
+ int errflag = 0;
+ char *archive = "foo";
+ char *namespace = PM_NS_DEFAULT;
+ static char *usage = "[-a archive] [-n namespace] [-T] [-t delta] [-v]";
+ int i;
+ int j;
+ int k;
+ int n;
+ pmLogLabel loglabel;
+ pmResult *resp;
+ pmResult **resvec = (pmResult **)0;
+ int resnum = 0;
+ struct timeval when;
+ int done;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:Tt:v")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive */
+ archive = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose output */
+ vflag++;
+ break;
+
+ case 'T': /* trim namespace */
+ tflag++;
+ break;
+
+ case 't': /* sample interval */
+ delta = 1000 * atof(optarg);
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx[0] = pmNewContext(PM_CONTEXT_ARCHIVE, archive)) < 0) {
+ printf("%s: Cannot connect to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(ctx[0]));
+ exit(1);
+ }
+ if ((sts = pmGetArchiveLabel(&loglabel)) < 0) {
+ printf("%s: pmGetArchiveLabel(%d): %s\n", pmProgname, ctx[0], pmErrStr(sts));
+ exit(1);
+ }
+
+ when = loglabel.ll_start;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx[1] = pmDupContext()) < 0) {
+ printf("%s: Cannot dup context to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(ctx[0]));
+ exit(1);
+ }
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ pmUseContext(ctx[0]);
+ if (tflag)
+ pmTrimNameSpace();
+
+ /*
+ * metrics biased towards log "foo"
+ */
+ i = 0;
+ namelist[i++] = "sample.seconds";
+ namelist[i++] = "sample.colour";
+ namelist[i++] = "sample.drift";
+ namelist[i++] = "sample.lights";
+ namelist[i++] = "sampledso.milliseconds";
+ namelist[i++] = "sampledso.bin";
+ numpmid = i;
+
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ }
+
+ printf("\nPass 1: forward scan\n");
+ __pmLogReads = 0;
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ resnum++;
+ resvec = (pmResult **)realloc(resvec, resnum * sizeof(resvec[0]));
+ resvec[resnum - 1] = resp;
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "%d pmLogReads\n", __pmLogReads);
+#endif
+ fflush(stderr);
+ printf("Found %d samples\n", resnum);
+ fflush(stdout);
+
+ printf("\nPass 2: backwards scan\n");
+ __pmLogReads = 0;
+ when = resvec[resnum - 1]->timestamp;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, -delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ n = 0;
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ n++;
+ cmpres(n, resvec[resnum - n], resp);
+ pmFreeResult(resp);
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "%d pmLogReads\n", __pmLogReads);
+#endif
+ fflush(stderr);
+ printf("Found %d samples\n", n);
+ fflush(stdout);
+
+ printf("\nPass 3: concurrent forwards and backwards scans\n");
+ __pmLogReads = 0;
+ pmUseContext(ctx[0]);
+ when = loglabel.ll_start;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ pmUseContext(ctx[1]);
+ when = resvec[resnum - 1]->timestamp;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, -delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ done = 0;
+ n = 0;
+ while (!done) {
+ pmUseContext(ctx[0]);
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ done = 1;
+ }
+ else {
+ n++;
+ cmpres(n, resvec[n/2], resp);
+ pmFreeResult(resp);
+ }
+
+ pmUseContext(ctx[1]);
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ done = 1;
+ }
+ else {
+ n++;
+ cmpres(n, resvec[resnum - n/2], resp);
+ pmFreeResult(resp);
+ }
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "%d pmLogReads\n", __pmLogReads);
+#endif
+ fflush(stderr);
+ printf("Found %d samples\n", n);
+ fflush(stdout);
+
+ printf("\nPass 4: cascading forward scan, 100%%, 75%%, 50%%, 25%%, 0%%\n");
+ pmUseContext(ctx[0]);
+ for (k = 0; k < 5; k++) {
+ __pmLogReads = 0;
+ j = 0;
+ i = ( k * resnum ) / 4;
+ if (i >= resnum)
+ i = resnum - 1;
+ when = resvec[i]->timestamp;
+
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ n = i;
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ j++;
+ n++;
+ cmpres(j, resvec[n - 1], resp);
+ pmFreeResult(resp);
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "%d pmLogReads\n", __pmLogReads);
+#endif
+ fflush(stderr);
+ printf("Found %d samples\n", j);
+ fflush(stdout);
+ }
+
+ printf("\nPass 5: cascading backward scan, 100%%, 75%%, 50%%, 25%%, 0%%\n");
+ pmUseContext(ctx[0]);
+ for (k = 0; k < 5; k++) {
+ __pmLogReads = 0;
+ j = 0;
+ i = resnum - ( k * resnum ) / 4 - 1;
+ if (i < 0)
+ i = 0;
+ when = resvec[i]->timestamp;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, -delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ cmpres(i, resvec[i], resp);
+ pmFreeResult(resp);
+ i--;
+ j++;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "%d pmLogReads\n", __pmLogReads);
+#endif
+ fflush(stderr);
+ printf("Found %d samples\n", j);
+ fflush(stdout);
+ }
+
+ printf("\nPass 6: cascading forward/reverse scan, 100%%, 75%%, 50%%, 25%%, 0%%\n");
+ pmUseContext(ctx[0]);
+ for (k = 4; k >= 0; k--) {
+ __pmLogReads = 0;
+ j = 0;
+ i = ( k * resnum ) / 4;
+ if (i >= resnum)
+ i = resnum - 1;
+
+ when = resvec[0]->timestamp;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (j = 0; j <= i; j++) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ cmpres(j+1, resvec[j], resp);
+ pmFreeResult(resp);
+ }
+
+ when = resvec[i]->timestamp;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, -delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (j = i; j >= 0; j--) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ cmpres(j+1, resvec[j], resp);
+ pmFreeResult(resp);
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "%d pmLogReads\n", __pmLogReads);
+#endif
+ fflush(stderr);
+ printf("Found %d samples\n", i+1);
+ }
+ printf("Pass 6 done\n");
+ fflush(stdout);
+
+ exit(0);
+}
diff --git a/qa/src/interp4.c b/qa/src/interp4.c
new file mode 100644
index 0000000..9c81ceb
--- /dev/null
+++ b/qa/src/interp4.c
@@ -0,0 +1,302 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * EOL and clock advancing in interpolate mode
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int vflag;
+static int tflag;
+static int numpmid;
+static pmID pmidlist[20];
+static char *namelist[20];
+static double delta = 500;
+
+static void
+cmpres(int n, pmResult *e, pmResult *g)
+{
+ int i;
+ int j;
+ int err = 0;
+
+ if (e->timestamp.tv_sec != g->timestamp.tv_sec ||
+ e->timestamp.tv_usec != g->timestamp.tv_usec) {
+ printf("[sample %d] pmResult.timestamp: expected %ld.%06ld, got %ld.%06ld\n",
+ n, (long)e->timestamp.tv_sec, (long)e->timestamp.tv_usec,
+ (long)g->timestamp.tv_sec, (long)g->timestamp.tv_usec);
+ goto FAILED;
+ }
+ if (e->numpmid != g->numpmid) {
+ printf("[sample %d] pmResult.numpmid: expected %d, got %d\n",
+ n, e->numpmid, g->numpmid);
+ goto FAILED;
+ }
+
+ for (i = 0; i < e->numpmid; i++) {
+ if (e->vset[i]->pmid != g->vset[i]->pmid) {
+ printf("[sample %d] pmResult.vset[%d].pmid: expected %s",
+ n, i, pmIDStr(e->vset[i]->pmid));
+ printf(" got %s\n", pmIDStr(g->vset[i]->pmid));
+ err++;
+ }
+ if (e->vset[i]->numval != g->vset[i]->numval) {
+ printf("[sample %d] pmResult.vset[%d].numval: expected %d, got %d\n",
+ n, i, e->vset[i]->numval, g->vset[i]->numval);
+ err++;
+ continue;
+ }
+ if (e->vset[i]->valfmt != g->vset[i]->valfmt) {
+ printf("[sample %d] pmResult.vset[%d].valfmt: expected %d, got %d\n",
+ n, i, e->vset[i]->valfmt, g->vset[i]->valfmt);
+ err++;
+ continue;
+ }
+ if (e->vset[i]->valfmt != PM_VAL_INSITU)
+ continue;
+ for (j = 0; j < e->vset[i]->numval; j++) {
+ if (e->vset[i]->vlist[j].inst != g->vset[i]->vlist[j].inst) {
+ printf("[sample %d] pmResult.vset[%d].vlist[%d].inst: expected %d, got %d\n",
+ n, i, j, e->vset[i]->vlist[j].inst, g->vset[i]->vlist[j].inst);
+ err++;
+ }
+ if (e->vset[i]->vlist[j].value.lval != g->vset[i]->vlist[j].value.lval) {
+ printf("[sample %d] pmResult.vset[%d].vlist[%d].lval: expected %d, got %d\n",
+ n, i, j, e->vset[i]->vlist[j].value.lval, g->vset[i]->vlist[j].value.lval);
+ err++;
+ }
+ }
+ }
+
+ if (err == 0)
+ return;
+
+FAILED:
+ printf("Expected ...\n");
+ __pmDumpResult(stdout, e);
+ printf("Got ...\n");
+ __pmDumpResult(stdout, g);
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int ctx;
+ int errflag = 0;
+ char *archive = "foo";
+ char *namespace = PM_NS_DEFAULT;
+ static char *usage = "[-a archive] [-n namespace] [-T] [-t delta] [-v]";
+ int i;
+ int n;
+ pmLogLabel loglabel;
+ pmResult *resp;
+ pmResult **resvec = (pmResult **)0;
+ int resnum = 0;
+ struct timeval when;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:Tt:v")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive */
+ archive = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose output */
+ vflag++;
+ break;
+
+ case 'T': /* trim namespace */
+ tflag++;
+ break;
+
+ case 't': /* sample interval */
+ delta = 1000 * atof(optarg);
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx = pmNewContext(PM_CONTEXT_ARCHIVE, archive)) < 0) {
+ printf("%s: Cannot connect to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(ctx));
+ exit(1);
+ }
+ if ((sts = pmGetArchiveLabel(&loglabel)) < 0) {
+ printf("%s: pmGetArchiveLabel(%d): %s\n", pmProgname, ctx, pmErrStr(sts));
+ exit(1);
+ }
+
+ when = loglabel.ll_start;
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (tflag)
+ pmTrimNameSpace();
+
+ /*
+ * metrics biased towards log "foo"
+ */
+ i = 0;
+ namelist[i++] = "sample.seconds";
+ numpmid = i;
+
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ }
+
+ printf("\nPass 1: forward scan\n");
+ fflush(stdout);
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ resnum++;
+ resvec = (pmResult **)realloc(resvec, resnum * sizeof(resvec[0]));
+ resvec[resnum - 1] = resp;
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ when = resp->timestamp;
+ }
+ fflush(stderr);
+ printf("Found %d samples\n", resnum);
+
+ printf("\nPass 1.1: forwards past EOL\n");
+ fflush(stdout);
+ for (i = 0; i < 10; i++) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ }
+ when.tv_usec += delta * 1000;
+ if (when.tv_usec > 1000000) {
+ when.tv_sec++;
+ when.tv_usec -= 1000000;
+ }
+ }
+ fflush(stderr);
+
+ printf("\nPass 1.2: backwards past EOL\n");
+ fflush(stdout);
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, -delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < 10; i++) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ }
+ }
+ fflush(stderr);
+
+ printf("\nPass 2: backwards scan\n");
+ fflush(stdout);
+ n = 0;
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ n++;
+ cmpres(n, resvec[resnum - n], resp);
+ when = resp->timestamp;
+ pmFreeResult(resp);
+ }
+ fflush(stderr);
+ printf("Found %d samples\n", n);
+
+ printf("\nPass 2.1: backwards prior to SOL\n");
+ fflush(stdout);
+ for (i = 0; i < 10; i++) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ } else {
+ pmFreeResult(resp);
+ }
+ when.tv_usec -= delta * 1000;
+ if (when.tv_usec < 0) {
+ when.tv_sec--;
+ when.tv_usec += 1000000;
+ }
+ }
+ fflush(stderr);
+
+ printf("\nPass 2.2: forwards prior to SOL\n");
+ fflush(stdout);
+ if ((sts = pmSetMode(PM_MODE_INTERP, &when, delta)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < 10; i++) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ }
+ }
+ fflush(stderr);
+
+ printf("\nPass 3: forwards scan\n");
+ fflush(stdout);
+ for (n = 0;; n++) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ cmpres(n, resvec[n], resp);
+ pmFreeResult(resvec[n]);
+ pmFreeResult(resp);
+ }
+ fflush(stderr);
+ printf("Found %d samples\n", n);
+ fflush(stdout);
+ free(resvec);
+
+ exit(0);
+}
diff --git a/qa/src/interp_bug.c b/qa/src/interp_bug.c
new file mode 100644
index 0000000..45364e7
--- /dev/null
+++ b/qa/src/interp_bug.c
@@ -0,0 +1,349 @@
+/*
+ * interp_bug - demonstrate archive interpolation mode bug
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#define N_PMID_A sizeof(metrics_a)/sizeof(metrics_a[0])
+#define N_PMID_B sizeof(metrics_b)/sizeof(metrics_b[0])
+
+static char *metrics_a[] = {
+ "sample.long.one",
+ "kernel.all.syscall"
+};
+
+static char *metrics_b[] = {
+ "sample.long.one",
+ "kernel.all.sysexec"
+};
+
+static pmID pmid_a[N_PMID_A];
+static pmID pmid_b[N_PMID_B];
+
+static void
+printstamp(struct timeval *tp)
+{
+ static struct tm tmp;
+
+ pmLocaltime(&tp->tv_sec, &tmp);
+ printf("%02d:%02d:%02d.%03d", tmp.tm_hour, tmp.tm_min, tmp.tm_sec, (int)(tp->tv_usec/1000));
+}
+
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int force = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ char *configfile = (char *)0;
+ char *logfile = (char *)0;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = (char *)0; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ int samples = -1;
+ int sample;
+ struct timeval start;
+ double delta = 1.0;
+ char *endnum;
+ pmResult *result;
+ int i;
+ int status = 0;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:c:D:fl:n:s:t:VzZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != (char *)0) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'f': /* force */
+ force++;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != (char *)0) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a or -h option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -c configfile file to load configuration from\n\
+ -D debug standard PCP debug flag\n\
+ -f force .. \n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n\
+ -V verbose/diagnostic output\n\
+ -z set reporting timezone to local time for host from -a or -h\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != (char *)0) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != (char *)0) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+ else
+ tzh = pmNewContextZone();
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("extra argument[%d]: %s\n", optind, argv[optind]);
+ optind++;
+ }
+
+ sts = pmLookupName(N_PMID_A, metrics_a, pmid_a);
+ for (i = 0; i < N_PMID_A; i++) {
+ printf("metrics_a[%d]: %s %s\n", i, metrics_a[i], pmIDStr(pmid_a[i]));
+ }
+ if (sts != N_PMID_A) {
+ fprintf(stderr, "%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pmLookupName(N_PMID_B, metrics_b, pmid_b);
+ for (i = 0; i < N_PMID_B; i++) {
+ printf("metrics_b[%d]: %s %s\n", i, metrics_b[i], pmIDStr(pmid_b[i]));
+ }
+ if (sts != N_PMID_B) {
+ fprintf(stderr, "%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* skip the first two seconds, due to staggered start in log */
+ start = label.ll_start;
+ start.tv_sec += 2;
+
+ printf("Start at: ");
+ printstamp(&start);
+ printf("\n\n");
+
+ printf("Pass One: rewind and fetch metrics_a until end of log\n");
+ if ((sts = pmSetMode(PM_MODE_INTERP, &start, (int)(delta * 1000))) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (sample=0; ; sample++) {
+ if ((sts = pmFetch(N_PMID_A, pmid_a, &result)) < 0) {
+ if (sts != PM_ERR_EOL) {
+ fprintf(stderr, "%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ status = 1;
+ }
+ break;
+ }
+
+ printf("sample %3d time=", sample);
+ printstamp(&result->timestamp);
+ putchar(' ');
+ if (result->numpmid != N_PMID_A || result->vset[0]->numval != 1) {
+ printf("expected %d (got %d) value sets, with one value in the first.\n",
+ (int)(N_PMID_A), result->numpmid);
+ status = 1;
+ }
+ else {
+ if (result->vset[0]->vlist[0].value.lval != 1) {
+ printf("expected value=1, got value=%d\n", result->vset[0]->vlist[0].value.lval);
+ __pmDumpResult(stdout, result);
+ status = 1;
+ }
+ else
+ printf("correct result\n");
+ }
+ pmFreeResult(result);
+ }
+
+ printf("Pass Two: rewind and fetch metrics_b until end of log\n");
+ if ((sts = pmSetMode(PM_MODE_INTERP, &start, (int)(delta * 1000))) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (sample=0; ; sample++) {
+ if ((sts = pmFetch(N_PMID_B, pmid_b, &result)) < 0) {
+ if (sts != PM_ERR_EOL) {
+ fprintf(stderr, "%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ status = 1;
+ }
+ break;
+ }
+
+ printf("sample %3d time=", sample);
+ printstamp(&result->timestamp);
+ putchar(' ');
+ if (result->numpmid != N_PMID_B || result->vset[0]->numval != 1) {
+ printf("expected %d (got %d) value sets, with 1 (got %d) value in the first.\n",
+ (int)(N_PMID_B), result->numpmid, result->vset[0]->numval);
+ status = 1;
+ }
+ else {
+ if (result->vset[0]->vlist[0].value.lval != 1) {
+ printf("expected value=1, got value=%d\n", result->vset[0]->vlist[0].value.lval);
+ status = 1;
+ __pmDumpResult(stdout, result);
+ }
+ else
+ printf("correct result\n");
+ }
+ pmFreeResult(result);
+ }
+
+ exit(status);
+}
diff --git a/qa/src/interp_bug2.c b/qa/src/interp_bug2.c
new file mode 100644
index 0000000..30d6c30
--- /dev/null
+++ b/qa/src/interp_bug2.c
@@ -0,0 +1,417 @@
+/*
+ * interp_bug - demonstrate archive interpolation mode bug
+ *
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#define N_PMID_A sizeof(metrics_a)/sizeof(metrics_a[0])
+#define N_PMID_B sizeof(metrics_b)/sizeof(metrics_b[0])
+#define N_PMID_C sizeof(metrics_c)/sizeof(metrics_c[0])
+
+static char *metrics_a[] = {
+ "proc.nprocs",
+};
+
+static char *metrics_b[] = {
+ "proc.nprocs",
+ "kernel.all.syscall"
+};
+
+static char *metrics_c[] = {
+ "proc.nprocs",
+ "kernel.all.sysexec"
+};
+
+static pmID pmid_a[N_PMID_A];
+static pmID pmid_b[N_PMID_B];
+static pmID pmid_c[N_PMID_C];
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int force = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ char *configfile = (char *)0;
+ char *logfile = (char *)0;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = (char *)0; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ int samples = -1;
+ int sample;
+ struct timeval start;
+ struct timeval eol;
+ double delta = 1.0;
+ char *endnum;
+ pmResult *result;
+ int i;
+ int status = 0;
+ int done;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:c:D:fl:n:s:t:VzZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != (char *)0) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'f': /* force */
+ force++;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != (char *)0) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a or -h option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -c configfile file to load configuration from\n\
+ -D debug standard PCP debug flag\n\
+ -f force .. \n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n\
+ -V verbose/diagnostic output\n\
+ -z set reporting timezone to local time for host from -a or -h\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != (char *)0) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ pmGetArchiveEnd(&eol);
+ eol.tv_sec -= 1;
+ }
+ else {
+ fprintf(stderr, "%s: must use an archive\n", pmProgname);
+ exit(1);
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != (char *)0) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+ else
+ tzh = pmNewContextZone();
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("extra argument[%d]: %s\n", optind, argv[optind]);
+ optind++;
+ }
+
+
+ if ((sts = pmLookupName(N_PMID_A, metrics_a, pmid_a)) != N_PMID_A) {
+ fprintf(stderr, "%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < N_PMID_A; i++) {
+ printf("metrics_a[%d]: %s %s\n", i, metrics_a[i], pmIDStr(pmid_a[i]));
+ }
+
+ if ((sts = pmLookupName(N_PMID_B, metrics_b, pmid_b)) != N_PMID_B) {
+ fprintf(stderr, "%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < N_PMID_B; i++) {
+ printf("metrics_b[%d]: %s %s\n", i, metrics_b[i], pmIDStr(pmid_b[i]));
+ }
+
+ if ((sts = pmLookupName(N_PMID_C, metrics_c, pmid_c)) != N_PMID_C) {
+ fprintf(stderr, "%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < N_PMID_C; i++) {
+ printf("metrics_c[%d]: %s %s\n", i, metrics_c[i], pmIDStr(pmid_c[i]));
+ }
+
+ /* skip the first two seconds, due to staggered start in log */
+ start = label.ll_start;
+ start.tv_sec += 2;
+
+ printf("Start at: ");
+ __pmPrintStamp(stdout, &start);
+ printf("\n\n");
+
+ printf("Pass One: rewind and fetch metrics_a until end of log\n");
+ if ((sts = pmSetMode(PM_MODE_INTERP, &start, (int)(delta * 1000))) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ done = 0;
+ for (sample=0; !done; sample++) {
+ if ((sts = pmFetch(N_PMID_A, pmid_a, &result)) < 0) {
+ if (sts != PM_ERR_EOL) {
+ fprintf(stderr, "%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ status = 1;
+ }
+ break;
+ }
+
+ printf("sample %3d time=", sample);
+ __pmPrintStamp(stdout, &result->timestamp);
+ putchar(' ');
+ if (result->numpmid != N_PMID_A) {
+ printf("Error: expected %d (got %d) value sets\n",
+ (int)(N_PMID_A), (int)result->numpmid);
+ status = 1;
+ }
+ else {
+ if (result->vset[0]->numval != 1) {
+ printf("Error: incorrect number of values\n");
+ __pmDumpResult(stdout, result);
+ status = 1;
+ }
+ else
+ printf("correct result\n");
+ }
+
+ if (result->timestamp.tv_sec >= eol.tv_sec &&
+ result->timestamp.tv_usec > eol.tv_usec)
+ done = 1;
+
+ pmFreeResult(result);
+ }
+
+ printf("Pass Two: rewind and fetch metrics_b until end of log\n");
+ if ((sts = pmSetMode(PM_MODE_INTERP, &start, (int)(delta * 1000))) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ done = 0;
+ for (sample=0; !done; sample++) {
+ if ((sts = pmFetch(N_PMID_B, pmid_b, &result)) < 0) {
+ if (sts != PM_ERR_EOL) {
+ fprintf(stderr, "%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ status = 1;
+ }
+ break;
+ }
+
+ printf("sample %3d time=", sample);
+ __pmPrintStamp(stdout, &result->timestamp);
+ putchar(' ');
+ if (result->numpmid != N_PMID_B) {
+ printf("Error: expected %d (got %d) value sets\n",
+ (int)(N_PMID_B), result->numpmid);
+ status = 1;
+ }
+ else {
+ if (result->vset[0]->numval != 1 ||
+ result->vset[1]->numval != 1) {
+ printf("Error: incorrect number of values\n");
+ status = 1;
+ __pmDumpResult(stdout, result);
+ }
+ else
+ printf("correct result\n");
+ }
+
+ if (result->timestamp.tv_sec >= eol.tv_sec &&
+ result->timestamp.tv_usec > eol.tv_usec)
+ done = 1;
+
+ pmFreeResult(result);
+ }
+
+ printf("Pass Three: rewind and fetch metrics_c until end of log\n");
+ if ((sts = pmSetMode(PM_MODE_INTERP, &start, (int)(delta * 1000))) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ done = 0;
+ for (sample=0; !done; sample++) {
+ if ((sts = pmFetch(N_PMID_C, pmid_c, &result)) < 0) {
+ if (sts != PM_ERR_EOL) {
+ fprintf(stderr, "%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ status = 1;
+ }
+ break;
+ }
+
+ printf("sample %3d time=", sample);
+ __pmPrintStamp(stdout, &result->timestamp);
+ putchar(' ');
+ if (result->numpmid != N_PMID_C) {
+ printf("Error: expected %d (got %d) value sets\n",
+ (int)(N_PMID_C), result->numpmid);
+ status = 1;
+ }
+ else {
+ if (result->vset[0]->numval != 1 ||
+ result->vset[1]->numval != 1) {
+ printf("Error: incorrect number of values\n");
+ status = 1;
+ __pmDumpResult(stdout, result);
+ }
+ else
+ printf("correct result\n");
+ }
+
+ if (result->timestamp.tv_sec >= eol.tv_sec &&
+ result->timestamp.tv_usec > eol.tv_usec)
+ done = 1;
+
+ pmFreeResult(result);
+ }
+
+ exit(status);
+}
diff --git a/qa/src/interpmark.0 b/qa/src/interpmark.0
new file mode 100644
index 0000000..307a978
--- /dev/null
+++ b/qa/src/interpmark.0
Binary files differ
diff --git a/qa/src/interpmark.index b/qa/src/interpmark.index
new file mode 100644
index 0000000..e4193b2
--- /dev/null
+++ b/qa/src/interpmark.index
Binary files differ
diff --git a/qa/src/interpmark.meta b/qa/src/interpmark.meta
new file mode 100644
index 0000000..3b6a14f
--- /dev/null
+++ b/qa/src/interpmark.meta
Binary files differ
diff --git a/qa/src/iostat b/qa/src/iostat
new file mode 100644
index 0000000..2bc0fa6
--- /dev/null
+++ b/qa/src/iostat
@@ -0,0 +1,26 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.30 0.09 0.94 0.53 0.00 95.14
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 0.53 8.87 7.79 19338695 16980829
+sdb 1.39 26.74 9.00 58264230 19612656
+scd0 0.00 0.01 0.00 21528 0
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 36.12 0.00 22.07 41.81 0.00 0.00
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 2.34 69.57 13.38 208 40
+sdb 78.93 634.11 0.00 1896 0
+scd0 0.00 0.00 0.00 0 0
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 1.00 0.00 2.34 96.66 0.00 0.00
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 4.35 0.00 61.54 0 184
+sdb 124.08 976.59 1139.80 2920 3408
+scd0 0.00 0.00 0.00 0 0
+
diff --git a/qa/src/iostat-c b/qa/src/iostat-c
new file mode 100644
index 0000000..993bce7
--- /dev/null
+++ b/qa/src/iostat-c
@@ -0,0 +1,11 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.30 0.09 0.94 0.53 0.00 95.14
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 75.00 0.00 25.00 0.00 0.00 0.00
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 85.62 0.00 14.38 0.00 0.00 0.00
+
diff --git a/qa/src/iostat-d b/qa/src/iostat-d
new file mode 100644
index 0000000..d34d587
--- /dev/null
+++ b/qa/src/iostat-d
@@ -0,0 +1,17 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 0.53 8.89 7.79 19382231 16986485
+sdb 1.39 26.74 9.02 58292750 19660048
+scd0 0.00 0.01 0.00 21528 0
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 3.34 10.70 77.59 32 232
+sdb 10.03 243.48 0.00 728 0
+scd0 0.00 0.00 0.00 0 0
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 9.27 42.38 135.10 128 408
+sdb 83.44 182.78 1634.44 552 4936
+scd0 0.00 0.00 0.00 0 0
+
diff --git a/qa/src/iostat-d-k b/qa/src/iostat-d-k
new file mode 100644
index 0000000..7b7a03d
--- /dev/null
+++ b/qa/src/iostat-d-k
@@ -0,0 +1,17 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
+sda 0.53 4.45 3.90 9706667 8499886
+sdb 1.39 13.36 4.53 29151467 9885640
+scd0 0.00 0.00 0.00 10764 0
+
+Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
+sda 0.00 0.00 0.00 0 0
+sdb 5.00 0.00 366.67 0 1100
+scd0 0.00 0.00 0.00 0 0
+
+Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
+sda 3.32 0.00 42.52 0 128
+sdb 0.00 0.00 0.00 0 0
+scd0 0.00 0.00 0.00 0 0
+
diff --git a/qa/src/iostat-d-m b/qa/src/iostat-d-m
new file mode 100644
index 0000000..cdfa18a
--- /dev/null
+++ b/qa/src/iostat-d-m
@@ -0,0 +1,17 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
+sda 0.53 0.00 0.00 9482 8302
+sdb 1.39 0.01 0.00 28468 9672
+scd0 0.00 0.00 0.00 10 0
+
+Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
+sda 98.01 0.59 0.05 1 0
+sdb 0.00 0.00 0.00 0 0
+scd0 0.00 0.00 0.00 0 0
+
+Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
+sda 113.33 0.73 0.00 2 0
+sdb 1.00 0.00 0.01 0 0
+scd0 0.00 0.00 0.00 0 0
+
diff --git a/qa/src/iostat-p-ALL b/qa/src/iostat-p-ALL
new file mode 100644
index 0000000..86cd324
--- /dev/null
+++ b/qa/src/iostat-p-ALL
@@ -0,0 +1,137 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.31 0.09 0.94 0.53 0.00 95.14
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+ram0 0.00 0.00 0.00 0 0
+ram1 0.00 0.00 0.00 0 0
+ram2 0.00 0.00 0.00 0 0
+ram3 0.00 0.00 0.00 0 0
+ram4 0.00 0.00 0.00 0 0
+ram5 0.00 0.00 0.00 0 0
+ram6 0.00 0.00 0.00 0 0
+ram7 0.00 0.00 0.00 0 0
+ram8 0.00 0.00 0.00 0 0
+ram9 0.00 0.00 0.00 0 0
+ram10 0.00 0.00 0.00 0 0
+ram11 0.00 0.00 0.00 0 0
+ram12 0.00 0.00 0.00 0 0
+ram13 0.00 0.00 0.00 0 0
+ram14 0.00 0.00 0.00 0 0
+ram15 0.00 0.00 0.00 0 0
+loop0 0.00 0.00 0.00 0 0
+loop1 0.00 0.00 0.00 0 0
+loop2 0.00 0.00 0.00 0 0
+loop3 0.00 0.00 0.00 0 0
+loop4 0.00 0.00 0.00 0 0
+loop5 0.00 0.00 0.00 0 0
+loop6 0.00 0.00 0.00 0 0
+loop7 0.00 0.00 0.00 0 0
+fd0 0.00 0.00 0.00 0 0
+sda 0.53 8.90 7.79 19412519 16995765
+sda1 0.06 0.57 0.68 1240077 1485928
+sda2 0.01 0.29 0.38 637666 820720
+sda3 0.20 2.59 5.94 5646650 12952688
+sda4 0.00 0.00 0.00 12 0
+sda5 0.25 5.42 0.79 11826333 1715152
+sda6 0.00 0.03 0.01 61533 21277
+sdb 1.39 26.73 9.05 58302926 19733240
+sdb1 0.00 0.00 0.00 582 0
+sdb2 0.00 0.00 0.00 582 0
+sdb3 0.00 0.00 0.00 392 0
+sdb4 0.00 0.00 0.00 12 0
+sdb5 0.00 0.00 0.00 386 0
+sdb6 1.39 26.73 9.05 58300724 19733240
+scd0 0.00 0.01 0.00 21528 0
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 84.67 0.00 15.33 0.00 0.00 0.00
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+ram0 0.00 0.00 0.00 0 0
+ram1 0.00 0.00 0.00 0 0
+ram2 0.00 0.00 0.00 0 0
+ram3 0.00 0.00 0.00 0 0
+ram4 0.00 0.00 0.00 0 0
+ram5 0.00 0.00 0.00 0 0
+ram6 0.00 0.00 0.00 0 0
+ram7 0.00 0.00 0.00 0 0
+ram8 0.00 0.00 0.00 0 0
+ram9 0.00 0.00 0.00 0 0
+ram10 0.00 0.00 0.00 0 0
+ram11 0.00 0.00 0.00 0 0
+ram12 0.00 0.00 0.00 0 0
+ram13 0.00 0.00 0.00 0 0
+ram14 0.00 0.00 0.00 0 0
+ram15 0.00 0.00 0.00 0 0
+loop0 0.00 0.00 0.00 0 0
+loop1 0.00 0.00 0.00 0 0
+loop2 0.00 0.00 0.00 0 0
+loop3 0.00 0.00 0.00 0 0
+loop4 0.00 0.00 0.00 0 0
+loop5 0.00 0.00 0.00 0 0
+loop6 0.00 0.00 0.00 0 0
+loop7 0.00 0.00 0.00 0 0
+fd0 0.00 0.00 0.00 0 0
+sda 4.67 0.00 128.00 0 384
+sda1 4.67 0.00 128.00 0 384
+sda2 0.00 0.00 0.00 0 0
+sda3 0.00 0.00 0.00 0 0
+sda4 0.00 0.00 0.00 0 0
+sda5 0.00 0.00 0.00 0 0
+sda6 0.00 0.00 0.00 0 0
+sdb 9.33 0.00 768.00 0 2304
+sdb1 0.00 0.00 0.00 0 0
+sdb2 0.00 0.00 0.00 0 0
+sdb3 0.00 0.00 0.00 0 0
+sdb4 0.00 0.00 0.00 0 0
+sdb5 0.00 0.00 0.00 0 0
+sdb6 9.33 0.00 768.00 0 2304
+scd0 0.00 0.00 0.00 0 0
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 88.33 0.00 11.67 0.00 0.00 0.00
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+ram0 0.00 0.00 0.00 0 0
+ram1 0.00 0.00 0.00 0 0
+ram2 0.00 0.00 0.00 0 0
+ram3 0.00 0.00 0.00 0 0
+ram4 0.00 0.00 0.00 0 0
+ram5 0.00 0.00 0.00 0 0
+ram6 0.00 0.00 0.00 0 0
+ram7 0.00 0.00 0.00 0 0
+ram8 0.00 0.00 0.00 0 0
+ram9 0.00 0.00 0.00 0 0
+ram10 0.00 0.00 0.00 0 0
+ram11 0.00 0.00 0.00 0 0
+ram12 0.00 0.00 0.00 0 0
+ram13 0.00 0.00 0.00 0 0
+ram14 0.00 0.00 0.00 0 0
+ram15 0.00 0.00 0.00 0 0
+loop0 0.00 0.00 0.00 0 0
+loop1 0.00 0.00 0.00 0 0
+loop2 0.00 0.00 0.00 0 0
+loop3 0.00 0.00 0.00 0 0
+loop4 0.00 0.00 0.00 0 0
+loop5 0.00 0.00 0.00 0 0
+loop6 0.00 0.00 0.00 0 0
+loop7 0.00 0.00 0.00 0 0
+fd0 0.00 0.00 0.00 0 0
+sda 0.00 0.00 0.00 0 0
+sda1 0.00 0.00 0.00 0 0
+sda2 0.00 0.00 0.00 0 0
+sda3 0.00 0.00 0.00 0 0
+sda4 0.00 0.00 0.00 0 0
+sda5 0.00 0.00 0.00 0 0
+sda6 0.00 0.00 0.00 0 0
+sdb 0.00 0.00 0.00 0 0
+sdb1 0.00 0.00 0.00 0 0
+sdb2 0.00 0.00 0.00 0 0
+sdb3 0.00 0.00 0.00 0 0
+sdb4 0.00 0.00 0.00 0 0
+sdb5 0.00 0.00 0.00 0 0
+sdb6 0.00 0.00 0.00 0 0
+scd0 0.00 0.00 0.00 0 0
+
diff --git a/qa/src/iostat-t b/qa/src/iostat-t
new file mode 100644
index 0000000..7d85515
--- /dev/null
+++ b/qa/src/iostat-t
@@ -0,0 +1,29 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+27/07/10 12:47:34
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.30 0.09 0.94 0.53 0.00 95.14
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 0.53 8.87 7.79 19319431 16971317
+sdb 1.39 26.74 9.00 58263542 19612320
+scd0 0.00 0.01 0.00 21528 0
+
+27/07/10 12:47:37
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 1.99 0.00 5.32 21.93 0.00 70.76
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 172.09 2583.39 90.37 7776 272
+sdb 1.00 0.00 21.26 0 64
+scd0 0.00 0.00 0.00 0 0
+
+27/07/10 12:47:40
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 1.67 0.00 2.00 0.00 0.00 96.33
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 104.67 1392.00 34.67 4176 104
+sdb 0.00 0.00 0.00 0 0
+scd0 0.00 0.00 0.00 0 0
+
diff --git a/qa/src/iostat-t.ISO b/qa/src/iostat-t.ISO
new file mode 100644
index 0000000..ebfa885
--- /dev/null
+++ b/qa/src/iostat-t.ISO
@@ -0,0 +1,29 @@
+Linux 2.6.32-23-generic (bozo) 2010-07-27 _i686_ (1 CPU)
+
+2010-07-27T12:46:07+1000
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.30 0.09 0.94 0.53 0.00 95.14
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 0.52 8.84 7.78 19267823 16953677
+sdb 1.39 26.74 9.00 58263070 19610200
+scd0 0.00 0.01 0.00 21528 0
+
+2010-07-27T12:46:10+1000
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.99 0.00 3.99 0.66 0.00 91.36
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 93.02 1427.24 10.63 4296 32
+sdb 0.00 0.00 0.00 0 0
+scd0 0.00 0.00 0.00 0 0
+
+2010-07-27T12:46:13+1000
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 1.33 0.00 1.33 35.67 0.00 61.67
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 121.00 1701.33 464.00 5104 1392
+sdb 1.67 2.67 24.00 8 72
+scd0 0.00 0.00 0.00 0 0
+
diff --git a/qa/src/iostat-x b/qa/src/iostat-x
new file mode 100644
index 0000000..03a747a
--- /dev/null
+++ b/qa/src/iostat-x
@@ -0,0 +1,26 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.30 0.09 0.94 0.53 0.00 95.14
+
+Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
+sda 0.03 0.76 0.32 0.21 8.90 7.79 31.61 0.01 13.37 2.11 0.11
+sdb 0.01 0.61 0.87 0.52 26.73 9.03 25.76 0.11 81.06 3.45 0.48
+scd0 0.00 0.00 0.00 0.00 0.01 0.00 180.91 0.00 176.64 98.79 0.00
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 85.38 0.00 14.62 0.00 0.00 0.00
+
+Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
+sda 0.00 10.30 0.00 4.32 0.00 116.94 27.08 0.00 0.31 0.31 0.13
+sdb 0.00 83.39 0.33 10.63 2.66 754.82 69.09 0.05 4.36 0.85 0.93
+scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 83.28 0.00 16.72 0.00 0.00 0.00
+
+Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
+sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+
diff --git a/qa/src/iostat-z b/qa/src/iostat-z
new file mode 100644
index 0000000..281b5c0
--- /dev/null
+++ b/qa/src/iostat-z
@@ -0,0 +1,23 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.30 0.09 0.94 0.53 0.00 95.14
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 0.53 8.90 7.79 19412391 16992325
+sdb 1.39 26.73 9.03 58302910 19688352
+scd0 0.00 0.01 0.00 21528 0
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 1.00 0.00 0.67 0.00 0.00 98.33
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 2.67 0.00 37.33 0 112
+sdb 0.33 2.67 0.00 8 0
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 1.00 0.00 0.67 0.00 0.00 98.33
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sdb 1.00 0.00 24.00 0 72
+
diff --git a/qa/src/iostat-z-p-ALL b/qa/src/iostat-z-p-ALL
new file mode 100644
index 0000000..0c8787b
--- /dev/null
+++ b/qa/src/iostat-z-p-ALL
@@ -0,0 +1,36 @@
+Linux 2.6.32-23-generic (bozo) 27/07/10 _i686_ (1 CPU)
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 3.31 0.09 0.94 0.53 0.00 95.13
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 0.53 8.90 7.79 19412519 16998349
+sda1 0.06 0.57 0.68 1240077 1488128
+sda2 0.01 0.29 0.38 637666 820720
+sda3 0.20 2.59 5.94 5646650 12953072
+sda4 0.00 0.00 0.00 12 0
+sda5 0.25 5.42 0.79 11826333 1715152
+sda6 0.00 0.03 0.01 61533 21277
+sdb 1.39 26.73 9.06 58302926 19759672
+sdb1 0.00 0.00 0.00 582 0
+sdb2 0.00 0.00 0.00 582 0
+sdb3 0.00 0.00 0.00 392 0
+sdb4 0.00 0.00 0.00 12 0
+sdb5 0.00 0.00 0.00 386 0
+sdb6 1.39 26.73 9.06 58300724 19759672
+scd0 0.00 0.01 0.00 21528 0
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 86.00 0.00 14.00 0.00 0.00 0.00
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+
+avg-cpu: %user %nice %system %iowait %steal %idle
+ 86.05 0.00 13.95 0.00 0.00 0.00
+
+Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
+sda 2.99 0.00 77.08 0 232
+sda1 2.99 0.00 77.08 0 232
+sdb 20.60 2.66 890.37 8 2680
+sdb6 20.60 2.66 890.37 8 2680
+
diff --git a/qa/src/ipc.c b/qa/src/ipc.c
new file mode 100644
index 0000000..de67b88
--- /dev/null
+++ b/qa/src/ipc.c
@@ -0,0 +1,303 @@
+/*
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <sys/sem.h>
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#define SEMAPHORES /* comment this to NOT test semaphores */
+
+#define IPC_N 4
+#define NSEMS 8
+
+int shm_list[IPC_N], shm_n=0, shmindom;
+int sem_list[IPC_N * NSEMS], sem_n=0, semindom;
+int semset_list[IPC_N], semset_n = 0, semsetindom;
+
+static char *metrics[] = {
+ "ipc.shm.nattch",
+ "ipc.shm.segsz",
+#ifdef SEMAPHORES
+ "ipc.sem.nsems",
+ "ipc.sem.ncnt",
+ "ipc.sem.zcnt",
+#endif
+NULL };
+
+static int npmids;
+static pmID pmids[sizeof(metrics) / sizeof(metrics[0])];
+
+static void
+_force_err_noprofile(pmInDom indom, pmID pmid)
+{
+ pmResult *result;
+ int sts;
+
+ pmAddProfile(indom, 0, NULL);
+ sts = pmFetch(1, &pmid, &result);
+ fprintf(stderr, "\n\ndeliberate error check (no explicit profile) : %s\n", pmErrStr(sts));
+ __pmDumpResult(stderr, result);
+ pmFreeResult(result);
+}
+
+static void
+_force_err_unknown_inst(pmInDom indom, pmID pmid)
+{
+ pmResult *result;
+ int sts;
+ int i;
+
+ pmDelProfile(indom, 0, NULL);
+ i = -3;
+ pmAddProfile(indom, 1, &i);
+ sts = pmFetch(1, &pmid, &result);
+ fprintf(stderr, "\n\ndeliberate error check (1 unknown instance) : %s\n", pmErrStr(sts));
+ __pmDumpResult(stderr, result);
+ pmFreeResult(result);
+}
+
+static void
+_force_err_unknown_and_known_inst(pmInDom indom, int inst, pmID pmid)
+{
+ pmResult *result;
+ int sts;
+ int i;
+
+ pmDelProfile(indom, 0, NULL);
+ i = -3; pmAddProfile(indom, 1, &i);
+ pmAddProfile(indom, 1, &inst);
+ sts = pmFetch(1, &pmid, &result);
+ fprintf(stderr, "\n\ndeliberate error check (1 unknown instance + 1 known) : %s\n", pmErrStr(sts));
+ __pmDumpResult(stderr, result);
+ pmFreeResult(result);
+}
+
+static void
+_force_err(pmInDom indom, int inst, pmID pmid)
+{
+ _force_err_noprofile(indom, pmid);
+ _force_err_unknown_inst(indom, pmid);
+ _force_err_unknown_and_known_inst(indom, inst, pmid);
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int i;
+ int j;
+ key_t key;
+ int sts;
+ char *p;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ int iterations = 1;
+ int iter;
+ pmResult *result;
+ pmDesc desc;
+ int id;
+ int e;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-h hostname] [-n namespace] [-i iterations]";
+ extern char *optarg;
+ extern int optind;
+ extern int pmDebug;
+
+ /* trim command name of leading directory components */
+ pmProgname = argv[0];
+ for (p = pmProgname; *p; p++) {
+ if (*p == '/')
+ pmProgname = p+1;
+ }
+
+ while ((c = getopt(argc, argv, "D:h:l:n:i:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'i': /* iterations */
+ iterations = atoi(optarg);
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+USAGE:
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pmNewContext(PM_CONTEXT_HOST, host);
+
+ if (sts < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind > argc)
+ goto USAGE;
+
+ memset(pmids, 0, sizeof(pmids));
+ for (npmids=0; metrics[npmids]; npmids++) {
+ if ((sts = pmLookupName(1, &metrics[npmids], &pmids[npmids])) < 0) {
+ fprintf(stderr, "%s: metric ``%s'' : %s\n", pmProgname, metrics[npmids], pmErrStr(sts));
+ exit(1);
+ }
+ fprintf(stderr, "pmid=%s <%s>\n", pmIDStr(pmids[npmids]), metrics[npmids]);
+ }
+
+ if ((e = pmLookupDesc(pmids[0], &desc)) < 0) {
+ printf("pmLookupDesc: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ shmindom = desc.indom;
+
+#ifdef SEMAPHORES
+ if ((e = pmLookupDesc(pmids[2], &desc)) < 0) {
+ printf("pmLookupDesc: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ semsetindom = desc.indom;
+ if ((e = pmLookupDesc(pmids[3], &desc)) < 0) {
+ printf("pmLookupDesc: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ semindom = desc.indom;
+#endif
+
+ fprintf(stderr, "shmindom=%s", pmInDomStr(shmindom));
+#ifdef SEMAPHORES
+ fprintf(stderr, " semsetindom=%s", pmInDomStr(semsetindom));
+ fprintf(stderr, " semindom=%s", pmInDomStr(semindom));
+#endif
+ fputc('\n', stderr);
+
+ key = (key_t)0xabcd0000;
+ for (i=0; i < IPC_N; i++) {
+ if ((id = shmget(key++, 4096, IPC_CREAT|IPC_EXCL|0777)) >= 0) {
+ shm_list[shm_n++] = id;
+ fprintf(stderr, "SHMID_%d\n", id);
+ }
+ else {
+ perror("shmget");
+ goto CLEANUP;
+ }
+
+#ifdef SEMAPHORES
+ if ((id = semget(key++, NSEMS, IPC_CREAT|IPC_EXCL|0777)) >= 0) {
+ semset_list[semset_n++] = id;
+ fprintf(stderr, "SEMSET_%d\n", id);
+ for (j=0; j < NSEMS; j++) {
+ sem_list[sem_n++] = (id << 16) | j;
+ fprintf(stderr, "SEMID_%d.%d ", id, j);
+ }
+ fputc('\n', stderr);
+ }
+ else {
+ perror("semget");
+ goto CLEANUP;
+ }
+#endif
+ }
+
+ pmDelProfile(shmindom, 0, NULL);
+ pmAddProfile(shmindom, shm_n, shm_list);
+
+#ifdef SEMAPHORES
+ pmDelProfile(semsetindom, 0, NULL);
+ pmAddProfile(semsetindom, semset_n, semset_list);
+ pmDelProfile(semindom, 0, NULL);
+ pmAddProfile(semindom, sem_n, sem_list);
+#endif
+
+ fprintf(stderr, "Single Metrics ...\n");
+ for (j = 0; j < npmids; j++) {
+ sts = pmFetch(1, &pmids[j], &result);
+ if (sts < 0) {
+ fprintf(stderr, "%s: metric %s : %s\n", pmProgname, metrics[j], pmErrStr(sts));
+ exit(1);
+ }
+ __pmDumpResult(stderr, result);
+ pmFreeResult(result);
+ }
+
+ fprintf(stderr, "Cascading Sets of Metrics ...\n");
+ for (iter=0; iter < iterations; iter++) {
+ fprintf(stderr, "Iteration: %d\n", iter);
+ for (j = 0; j < npmids; j++) {
+ sts = pmFetch(j+1, pmids, &result);
+ if (sts < 0) {
+ fprintf(stderr, "%s: iteration %d cascade %d : %s\n",
+ pmProgname, iter, j, pmErrStr(sts));
+ exit(1);
+ }
+ __pmDumpResult(stderr, result);
+ pmFreeResult(result);
+ }
+ }
+
+
+ /* now test the err conditions */
+ _force_err(shmindom, shm_list[0], pmids[0]);
+
+#ifdef SEMAPHORES
+ _force_err(semsetindom, semset_list[0], pmids[2]);
+ _force_err(semindom, sem_list[0], pmids[3]);
+#endif
+
+CLEANUP:
+ for (i=0; i < shm_n; i++) {
+ if (shm_list[i] >= 0)
+ if (shmctl(shm_list[i], IPC_RMID, 0) < 0)
+ perror("shmctl(IPC_RMID)");
+ }
+#ifdef SEMAPHORES
+ for (i=0; i < sem_n; i += NSEMS) {
+ if (sem_list[i] >= 0)
+ if (semctl(sem_list[i] >> 16, 0, IPC_RMID) < 0)
+ perror("semctl(IPC_RMID)");
+ }
+#endif
+
+ exit(0);
+}
diff --git a/qa/src/ipcs_clear b/qa/src/ipcs_clear
new file mode 100755
index 0000000..f46794a
--- /dev/null
+++ b/qa/src/ipcs_clear
@@ -0,0 +1,39 @@
+#! /bin/sh
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Cleanup my seamphores and shared memory segments ... leave
+# smh segment id 0, things owned by root and/or Oracle
+#
+
+# Get standard environment
+. $PCP_DIR/etc/pcp.env
+
+if [ $PCP_PLATFORM = irix ]
+then
+ ipcrm `ipcs -ms | $PCP_AWK_PROG '
+$5 == "root" { next }
+$5 == "oracle" { next }
+$5 == "sybase" { next }
+$5 == "informix" { next }
+/^m/ { if ($2 != 0) printf "-m %d ", $2 }
+/^s/ { printf "-s %d ", $2 }
+END { print "" }'`
+elif [ $PCP_PLATFORM = linux ]
+then
+ ipcs -ms | $PCP_AWK_PROG '
+$5 == "root" { next }
+$5 == "oracle" { next }
+$5 == "sybase" { next }
+$5 == "informix" { next }
+/^m/ { if ($2 != 0) print "shm %d", $2 }
+/^s/ { print "sem %d", $2 }' \
+ | while read args
+ do
+ ipcrm $args
+ done
+else
+ bozo! - how do you do this ipc stuff
+fi
+
+exit 0
diff --git a/qa/src/kenj-pc-1.0 b/qa/src/kenj-pc-1.0
new file mode 100644
index 0000000..6c9b3cd
--- /dev/null
+++ b/qa/src/kenj-pc-1.0
Binary files differ
diff --git a/qa/src/kenj-pc-1.index b/qa/src/kenj-pc-1.index
new file mode 100644
index 0000000..7a0e93e
--- /dev/null
+++ b/qa/src/kenj-pc-1.index
Binary files differ
diff --git a/qa/src/kenj-pc-1.meta b/qa/src/kenj-pc-1.meta
new file mode 100644
index 0000000..f6c2c8c
--- /dev/null
+++ b/qa/src/kenj-pc-1.meta
Binary files differ
diff --git a/qa/src/kenj-pc-2.0 b/qa/src/kenj-pc-2.0
new file mode 100644
index 0000000..29513e5
--- /dev/null
+++ b/qa/src/kenj-pc-2.0
Binary files differ
diff --git a/qa/src/kenj-pc-2.config b/qa/src/kenj-pc-2.config
new file mode 100644
index 0000000..1e6885c
--- /dev/null
+++ b/qa/src/kenj-pc-2.config
@@ -0,0 +1,10 @@
+log advisory on default {
+ sample.mirage
+ sample.sysinfo
+ sample.rapid
+ sample.string
+ sample.aggregate
+ sample.wrap
+ sample.dodgey
+ sample.dynamic
+}
diff --git a/qa/src/kenj-pc-2.index b/qa/src/kenj-pc-2.index
new file mode 100644
index 0000000..6281deb
--- /dev/null
+++ b/qa/src/kenj-pc-2.index
Binary files differ
diff --git a/qa/src/kenj-pc-2.meta b/qa/src/kenj-pc-2.meta
new file mode 100644
index 0000000..deb89f6
--- /dev/null
+++ b/qa/src/kenj-pc-2.meta
Binary files differ
diff --git a/qa/src/kenj-pc-diskstat.0 b/qa/src/kenj-pc-diskstat.0
new file mode 100644
index 0000000..a775d6b
--- /dev/null
+++ b/qa/src/kenj-pc-diskstat.0
Binary files differ
diff --git a/qa/src/kenj-pc-diskstat.index b/qa/src/kenj-pc-diskstat.index
new file mode 100644
index 0000000..e521697
--- /dev/null
+++ b/qa/src/kenj-pc-diskstat.index
Binary files differ
diff --git a/qa/src/kenj-pc-diskstat.meta b/qa/src/kenj-pc-diskstat.meta
new file mode 100644
index 0000000..ea391a3
--- /dev/null
+++ b/qa/src/kenj-pc-diskstat.meta
Binary files differ
diff --git a/qa/src/keycache.c b/qa/src/keycache.c
new file mode 100644
index 0000000..39a7640
--- /dev/null
+++ b/qa/src/keycache.c
@@ -0,0 +1,278 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * Exercise pmdaCacheStoreKey() in libpcp_pmda
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+#include <arpa/inet.h>
+
+static int histo[128];
+static int vflag = 0;
+
+static void
+do_key(int i, int j, int k, char *name, int *keylen, int *key)
+{
+ if (j == 1)
+ key[0] = (i << 8) | j;
+ else if (j == 2)
+ key[0] = (i << 16) | (j << 8) | k;
+ else
+ key[0] = (i << 24) | (j << 16) | (k << 8) | i;
+ *keylen = (k+1)*sizeof(int);
+ switch (k) {
+ case 0:
+ sprintf(name, "%08x", key[0]);
+ break;
+ case 1:
+ key[1] = i;
+ sprintf(name, "%08x-%08x", key[0], key[1]);
+ break;
+ case 2:
+ key[1] = i;
+ key[2] = j;
+ sprintf(name, "%08x-%08x-%08x", key[0], key[1], key[2]);
+ break;
+ case 3:
+ key[1] = i;
+ key[2] = j;
+ key[3] = k;
+ sprintf(name, "%08x-%08x-%08x-%08x", key[0], key[1], key[2], key[3]);
+ break;
+ }
+
+ if (vflag)
+ fprintf(stderr, "do_key(%d, %d, %d, ...) -> %s\n", i, j, k, name);
+}
+
+/*
+ * Assume we're following -d or -dk, so dealing with the smaller
+ * set of keys the -d implies
+ */
+static void
+load_n_go(pmInDom indom)
+{
+ int sts;
+ int keylen;
+ int key[4];
+ char name[40];
+ int i;
+ int j;
+ int k;
+ int kflag;
+ int inst;
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0)
+ fprintf(stderr, "pmdaCacheOp(%s, PMDA_CACHE_LOAD) failed: %s\n", pmInDomStr(indom), pmErrStr(sts));
+ fprintf(stderr, "Cache loaded ...\n");
+ pmdaCacheOp(indom, PMDA_CACHE_DUMP);
+
+ for (i = 0; i < 5; i++) { /* one more iteration than -d in main() */
+ for (j = 1; j < 5; ) { /* one more iteration than -d in main() */
+ for (k = 0; k < 4; k++) { /* one more iteration than -d in main() */
+ do_key(i, j, k, name, &keylen, key);
+ for (kflag = 1; kflag >= 0; kflag--) {
+ /* force duplicate keys by culling the key[] or name[] */
+ if (kflag)
+ keylen = 4;
+ else
+ name[13] = '\0';
+
+ if (kflag) {
+ int c;
+ for (c = 0; c < keylen/sizeof(int); c++)
+ key[c] = htonl(key[c]);
+ inst = pmdaCacheStoreKey(indom, PMDA_CACHE_ADD, name, keylen, (const void *)key, NULL);
+ for (c = 0; c < keylen/sizeof(int); c++)
+ key[c] = ntohl(key[c]);
+ }
+ else
+ inst = pmdaCacheStoreKey(indom, PMDA_CACHE_ADD, name, 0, NULL, NULL);
+ if (kflag) {
+ int c;
+ fprintf(stderr, "%d <- %s ", inst, name);
+ for (c = 0; c < keylen/sizeof(int); c++) {
+ if (c == 0)
+ fprintf(stderr, "[%d", key[c]);
+ else
+ fprintf(stderr, ",%d", key[c]);
+ }
+ fputc(']', stderr);
+ fputc('\n', stderr);
+ }
+ else
+ fprintf(stderr, "%d <- %s\n", inst, name);
+ if (inst < 0)
+ fprintf(stderr, "pmdaCacheStoreKey failed: %s\n", pmErrStr(inst));
+ }
+ }
+ j++;
+ }
+ }
+ pmdaCacheOp(indom, PMDA_CACHE_DUMP_ALL);
+}
+
+int
+main(int argc, char **argv)
+{
+ int key[4]; /* key[3] not used as yet */
+ int inst;
+ pmInDom indom;
+ int i;
+ int j;
+ int k;
+ int keylen;
+ int s;
+ int c;
+ int n = 0;
+ char name[40];
+ int sts;
+ int errflag = 0;
+ int kflag = 0;
+ int dflag = 0;
+ int lflag = 0;
+ char *usage = "[-D debug] [-dkl]";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:dklv")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'd': /* exercise duplicate checking, save, smaller set of keys */
+ dflag = 1;
+ break;
+
+ case 'k': /* use key[], default is to use name[] */
+ kflag = 1;
+ break;
+
+ case 'l': /* load */
+ lflag = 1;
+ break;
+
+ case 'v': /* verbose */
+ vflag = 1;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ indom = pmInDom_build(42, 42);
+
+ if (lflag) {
+ load_n_go(indom);
+ exit(0);
+ }
+
+ /*
+ * pattern of keys here is
+ * - 32, 64 or 96 bits long
+ * - features grouping and runs of values, as might be found in
+ * multi-dimensional indexes that need to be mapped to a value
+ * no larger than 2^31 - 1 for an internal instance identifier
+ */
+
+ for (i = 0; i < 255; i++) {
+ for (j = 1; j < 255; ) {
+ for (k = 0; k < 3; k++) {
+ do_key(i, j, k, name, &keylen, key);
+
+ if (dflag) {
+ /* force duplicate keys by culling the key[] or name[] */
+ if (kflag)
+ keylen = 4;
+ else
+ name[13] = '\0';
+ }
+
+ if (kflag) {
+ int c;
+ for (c = 0; c < keylen/sizeof(int); c++)
+ key[c] = htonl(key[c]);
+ inst = pmdaCacheStoreKey(indom, PMDA_CACHE_ADD, name, keylen, (const void *)key, NULL);
+ for (c = 0; c < keylen/sizeof(int); c++)
+ key[c] = ntohl(key[c]);
+ }
+ else
+ inst = pmdaCacheStoreKey(indom, PMDA_CACHE_ADD, name, 0, NULL, NULL);
+ if (kflag) {
+ fprintf(stderr, "%d <- %s ", inst, name);
+ for (c = 0; c < keylen/sizeof(int); c++) {
+ if (c == 0)
+ fprintf(stderr, "[%d", key[c]);
+ else
+ fprintf(stderr, ",%d", key[c]);
+ }
+ fputc(']', stderr);
+ fputc('\n', stderr);
+ }
+ else
+ fprintf(stderr, "%d <- %s\n", inst, name);
+ if (inst < 0) {
+ fprintf(stderr, "pmdaCacheStoreKey failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ histo[(int)(inst/(0x7fffffff/128))]++;
+ n++;
+ }
+ if (dflag && j == 3)
+ break;
+ if (j < 32)
+ j++;
+ else
+ j = 2*j + 1;
+ }
+ if (dflag && i == 3) {
+ pmdaCacheOp(indom, PMDA_CACHE_DUMP_ALL);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0)
+ fprintf(stderr, "pmdaCacheOp(%s, PMDA_CACHE_SAVE) failed: %s\n", pmInDomStr(indom), pmErrStr(sts));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_CULL);
+ if (sts < 0)
+ fprintf(stderr, "pmdaCacheOp(%s, PMDA_CACHE_CULL) failed: %s\n", pmInDomStr(indom), pmErrStr(sts));
+ exit(0);
+ }
+ }
+
+ for (s = 1; s <= 64; s *= 2) {
+ fprintf(stderr, "\nInstances distribution across %d bins\n", 128/s);
+ c = 0;
+ for (j = 0; j < 128; j += s) {
+ i = 0;
+ for (k = 0; k < s; k++)
+ i += histo[j+k];
+ fprintf(stderr, "%.5f ", (double)i/n);
+ c++;
+ if (c == 10) {
+ fputc('\n', stderr);
+ c = 0;
+ }
+ }
+ fputc('\n', stderr);
+ }
+
+ return 0;
+}
diff --git a/qa/src/keycache2.c b/qa/src/keycache2.c
new file mode 100644
index 0000000..d54e8be
--- /dev/null
+++ b/qa/src/keycache2.c
@@ -0,0 +1,412 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * Exercise pmdaCacheLookup(), pmdaCacheLookupName() and pmdaCacheLookupKey()
+ * in libpcp_pmda
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+#include <arpa/inet.h>
+
+static __uint32_t hash(const char *, int, __uint32_t);
+
+/* hash attempts looking for hash synonyms */
+#define MAXPOKE 200000
+
+typedef struct {
+ int inst;
+ int key;
+} inst_key_t;
+
+static int
+compar(const void *a, const void *b)
+{
+ const inst_key_t *ia = (inst_key_t *)a;
+ const inst_key_t *ib = (inst_key_t *)b;
+
+ if (ib->inst != ia->inst)
+ return ib->inst - ia->inst;
+ /*
+ * inst same (synonyms), reverse sort on key to make results deterministic
+ */
+ return ia->key - ib->key;
+}
+
+int
+main(int argc, char **argv)
+{
+ int key;
+ int inst;
+ pmInDom indom;
+ int c;
+ char name[40];
+ char *oname;
+ void *addr;
+ int sts;
+ int errflag = 0;
+ int kflag = 0;
+ char *usage = "[-D debug] [-k]";
+ __uint32_t try = 0;
+ int dup;
+ inst_key_t poke[MAXPOKE];
+ int mykeylen = 0; /* pander to gcc */
+ void *mykey = NULL; /* pander to gcc */
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:k")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'k': /* use key[], default is to use name[] */
+ kflag = 1;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ indom = pmInDom_build(42, 42);
+
+ /*
+ * hash MAXPOKE keys
+ */
+ if (kflag) {
+ mykeylen = sizeof(key);
+ mykey = (void *)&key;
+ }
+ for (key = 0; key < MAXPOKE; key++) {
+ if (!kflag) {
+ sprintf(name, "key-%d", key);
+ mykeylen = strlen(name);
+ mykey = (void *)name;
+ }
+ key = htonl(key);
+ try = hash((char *)mykey, mykeylen, 0);
+ key = ntohl(key);
+ /* strip top bit ... instance id must be positive */
+ inst = try & ~(1 << (8*sizeof(__uint32_t)-1));
+ poke[key].inst = inst;
+ poke[key].key = key;
+ }
+
+ /* sort on hash value */
+ qsort(poke, MAXPOKE, sizeof(poke[0]), compar);
+
+ /*
+ * look for hash synonyms, and stuff them away in pairs in the
+ * start of poke[]
+ */
+ dup = 0;
+ for (key = 1; key < MAXPOKE; key++) {
+ if (poke[key-1].inst == poke[key].inst) {
+ if (kflag)
+ fprintf(stderr, "keys %d & %d hash to %d\n", poke[key-1].key, poke[key].key, poke[key-1].inst);
+ else
+ fprintf(stderr, "keys \"key-%d\" & \"key-%d\" hash to %d\n", poke[key-1].key, poke[key].key, poke[key-1].inst);
+ sprintf(name, "key-%d", poke[key-1].key);
+ if (kflag) {
+ mykeylen = sizeof(key);
+ mykey = (void *)&poke[key-1].key;
+ }
+ else {
+ mykeylen = strlen(name);
+ mykey = (void *)name;
+ }
+ poke[key-1].key = htonl(poke[key-1].key);
+ sts = pmdaCacheStoreKey(indom, PMDA_CACHE_ADD, name, mykeylen, mykey, &poke[dup]);
+ poke[key-1].key = ntohl(poke[key-1].key);
+ if (sts < 0) {
+ if (kflag)
+ fprintf(stderr, "pmdaCacheStoreKey(... %s, ... %d): %s\n", name, poke[key-1].key, pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaCacheStoreKey(... %s, ... NULL): %s\n", name, pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "%s -> %d\n", name, sts);
+ poke[dup].key = poke[key-1].key;
+ poke[dup++].inst = sts;
+ sprintf(name, "key-%d", poke[key].key);
+ if (kflag) {
+ mykeylen = sizeof(key);
+ mykey = (void *)&poke[key].key;
+ }
+ else {
+ mykeylen = strlen(name);
+ mykey = (void *)name;
+ }
+ poke[key].key = htonl(poke[key].key);
+ sts = pmdaCacheStoreKey(indom, PMDA_CACHE_ADD, name, mykeylen, mykey, &poke[dup]);
+ poke[key].key = ntohl(poke[key].key);
+ if (sts < 0) {
+ if (kflag)
+ fprintf(stderr, "pmdaCacheStoreKey(... %s, ... %d): %s\n", name, poke[key].key, pmErrStr(sts));
+ else
+ fprintf(stderr, "pmdaCacheStoreKey(... %s, ... NULL): %s\n", name, pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "%s -> %d\n", name, sts);
+ poke[dup].key = poke[key].key;
+ poke[dup++].inst = sts;
+ }
+ }
+
+ /* mark the first and last as inactive, and cull the middle entry */
+ sprintf(name, "key-%d", poke[0].key);
+ sts = pmdaCacheStore(indom, PMDA_CACHE_HIDE, name, NULL);
+ if (sts < 0)
+ fprintf(stderr, "pmdaCacheStore(... HIDE \"%s\", ...) failed: %s\n", name, pmErrStr(sts));
+ sprintf(name, "key-%d", poke[dup-1].key);
+ sts = pmdaCacheStore(indom, PMDA_CACHE_HIDE, name, NULL);
+ if (sts < 0)
+ fprintf(stderr, "pmdaCacheStore(... HIDE \"%s\", ...) failed: %s\n", name, pmErrStr(sts));
+ sprintf(name, "key-%d", poke[dup/2].key);
+ sts = pmdaCacheStore(indom, PMDA_CACHE_CULL, name, NULL);
+ if (sts < 0)
+ fprintf(stderr, "pmdaCacheStore(... CULL \"%s\", ...) failed: %s\n", name, pmErrStr(sts));
+
+ pmdaCacheOp(indom, PMDA_CACHE_DUMP);
+
+ for (key = 0; key < dup; key++) {
+ sprintf(name, "key-%d", poke[key].key);
+
+ sts = pmdaCacheLookup(indom, poke[key].inst, &oname, &addr);
+ fprintf(stderr, "pmdaCacheLookup(... %d, ...)", poke[key].inst);
+ if (sts < 0)
+ fprintf(stderr, ": %s", pmErrStr(sts));
+ else {
+ if (sts == PMDA_CACHE_ACTIVE)
+ fprintf(stderr, " -> active");
+ else if (sts == PMDA_CACHE_INACTIVE)
+ fprintf(stderr, " -> inactive");
+ else
+ fprintf(stderr, " -> %d?", sts);
+ if (strcmp(name, oname) == 0)
+ fprintf(stderr, " name ok");
+ else
+ fprintf(stderr, " name? \"%s\" [expected \"%s\"]", oname, name);
+ if (addr == (void *)&poke[key])
+ fprintf(stderr, " private ok");
+ else
+ fprintf(stderr, " private? %p [expected %p]", &poke[key], addr);
+ }
+ fputc('\n', stderr);
+
+ sts = pmdaCacheLookupName(indom, name, &inst, &addr);
+ fprintf(stderr, "pmdaCacheLookupName(... \"%s\", ...)", name);
+ if (sts < 0)
+ fprintf(stderr, ": %s", pmErrStr(sts));
+ else {
+ if (sts == PMDA_CACHE_ACTIVE)
+ fprintf(stderr, " -> active");
+ else if (sts == PMDA_CACHE_INACTIVE)
+ fprintf(stderr, " -> inactive");
+ else
+ fprintf(stderr, " -> %d?", sts);
+ if (inst == poke[key].inst)
+ fprintf(stderr, " inst ok");
+ else
+ fprintf(stderr, " inst? %d [expected %d]", inst, poke[key].inst);
+ if (addr == (void *)&poke[key])
+ fprintf(stderr, " private ok");
+ else
+ fprintf(stderr, " private? %p [expected %p]", &poke[key], addr);
+ }
+ fputc('\n', stderr);
+
+ if (kflag) {
+ mykeylen = sizeof(key);
+ mykey = (void *)&poke[key].key;
+ }
+ else {
+ mykeylen = strlen(name);
+ mykey = (void *)name;
+ }
+ poke[key].key = htonl(poke[key].key);
+ sts = pmdaCacheLookupKey(indom, name, mykeylen, mykey, &oname, &inst, &addr);
+ poke[key].key = ntohl(poke[key].key);
+ fprintf(stderr, "pmdaCacheLookupKey(... \"%s\", ...)", name);
+ if (sts < 0)
+ fprintf(stderr, ": %s", pmErrStr(sts));
+ else {
+ if (sts == PMDA_CACHE_ACTIVE)
+ fprintf(stderr, " -> active");
+ else if (sts == PMDA_CACHE_INACTIVE)
+ fprintf(stderr, " -> inactive");
+ else
+ fprintf(stderr, " -> %d?", sts);
+ if (strcmp(name, oname) == 0)
+ fprintf(stderr, " name ok");
+ else
+ fprintf(stderr, " name? \"%s\" [expected \"%s\"]", oname, name);
+ if (inst == poke[key].inst)
+ fprintf(stderr, " inst ok");
+ else
+ fprintf(stderr, " inst? %d [expected %d]", inst, poke[key].inst);
+ if (addr == (void *)&poke[key])
+ fprintf(stderr, " private ok");
+ else
+ fprintf(stderr, " private? %p [expected %p]", &poke[key], addr);
+ }
+ fputc('\n', stderr);
+
+ }
+
+
+ return 0;
+}
+
+/*
+ * lifted directly from libpcp_pmda/src/cache.c
+ */
+
+/*
+--------------------------------------------------------------------
+lookup2.c, by Bob Jenkins, December 1996, Public Domain.
+hash(), hash2(), hash3, and mix() are externally useful functions.
+Routines to test the hash are included if SELF_TEST is defined.
+You can use this free for any purpose. It has no warranty.
+--------------------------------------------------------------------
+*/
+
+#include <stdio.h>
+#include <stddef.h>
+#include <stdlib.h>
+typedef unsigned long int ub4; /* unsigned 4-byte quantities */
+typedef unsigned char ub1;
+
+#define hashsize(n) ((ub4)1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+
+/*
+--------------------------------------------------------------------
+mix -- mix 3 32-bit values reversibly.
+For every delta with one or two bit set, and the deltas of all three
+ high bits or all three low bits, whether the original value of a,b,c
+ is almost all zero or is uniformly distributed,
+* If mix() is run forward or backward, at least 32 bits in a,b,c
+ have at least 1/4 probability of changing.
+* If mix() is run forward, every bit of c will change between 1/3 and
+ 2/3 of the time. (Well, 22/100 and 78/100 for some 2-bit deltas.)
+mix() was built out of 36 single-cycle latency instructions in a
+ structure that could supported 2x parallelism, like so:
+ a -= b;
+ a -= c; x = (c>>13);
+ b -= c; a ^= x;
+ b -= a; x = (a<<8);
+ c -= a; b ^= x;
+ c -= b; x = (b>>13);
+ ...
+ Unfortunately, superscalar Pentiums and Sparcs can't take advantage
+ of that parallelism. They've also turned some of those single-cycle
+ latency instructions into multi-cycle latency instructions. Still,
+ this is the fastest good hash I could find. There were about 2^^68
+ to choose from. I only looked at a billion or so.
+--------------------------------------------------------------------
+*/
+#define mix(a,b,c) \
+{ \
+ a -= b; a -= c; a ^= (c>>13); \
+ b -= c; b -= a; b ^= (a<<8); \
+ c -= a; c -= b; c ^= (b>>13); \
+ a -= b; a -= c; a ^= (c>>12); \
+ b -= c; b -= a; b ^= (a<<16); \
+ c -= a; c -= b; c ^= (b>>5); \
+ a -= b; a -= c; a ^= (c>>3); \
+ b -= c; b -= a; b ^= (a<<10); \
+ c -= a; c -= b; c ^= (b>>15); \
+}
+
+/*
+--------------------------------------------------------------------
+hash() -- hash a variable-length key into a 32-bit value
+ k : the key (the unaligned variable-length array of bytes)
+ len : the length of the key, counting by bytes
+ level : can be any 4-byte value
+Returns a 32-bit value. Every bit of the key affects every bit of
+the return value. Every 1-bit and 2-bit delta achieves avalanche.
+About 36+6len instructions.
+
+The best hash table sizes are powers of 2. There is no need to do
+mod a prime (mod is sooo slow!). If you need less than 32 bits,
+use a bitmask. For example, if you need only 10 bits, do
+ h = (h & hashmask(10));
+In which case, the hash table should have hashsize(10) elements.
+
+If you are hashing n strings (ub1 **)k, do it like this:
+ for (i=0, h=0; i<n; ++i) h = hash( k[i], len[i], h);
+
+By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial. It's free.
+
+See http://burlteburtle.net/bob/hash/evahash.html
+Use for hash table lookup, or anything where one collision in 2^32 is
+acceptable. Do NOT use for cryptographic purposes.
+--------------------------------------------------------------------
+*/
+
+static __uint32_t
+hash(const char *k, int length, __uint32_t initval)
+{
+ __uint32_t a,b,c,len;
+
+ /* Set up the internal state */
+ len = length;
+ a = b = 0x9e3779b9; /* the golden ratio; an arbitrary value */
+ c = initval; /* the previous hash value */
+
+ /*---------------------------------------- handle most of the key */
+ while (len >= 12)
+ {
+ a += (k[0] +((__uint32_t)k[1]<<8) +((__uint32_t)k[2]<<16)
+ +((__uint32_t)k[3]<<24));
+ b += (k[4] +((__uint32_t)k[5]<<8) +((__uint32_t)k[6]<<16)
+ +((__uint32_t)k[7]<<24));
+ c += (k[8] +((__uint32_t)k[9]<<8)
+ +((__uint32_t)k[10]<<16)+((__uint32_t)k[11]<<24));
+ mix(a,b,c);
+ k += 12; len -= 12;
+ }
+
+ /*------------------------------------- handle the last 11 bytes */
+ c += length;
+ switch(len) /* all the case statements fall through */
+ {
+ case 11: c+=((__uint32_t)k[10]<<24);
+ case 10: c+=((__uint32_t)k[9]<<16);
+ case 9 : c+=((__uint32_t)k[8]<<8);
+ /* the first byte of c is reserved for the length */
+ case 8 : b+=((__uint32_t)k[7]<<24);
+ case 7 : b+=((__uint32_t)k[6]<<16);
+ case 6 : b+=((__uint32_t)k[5]<<8);
+ case 5 : b+=k[4];
+ case 4 : a+=((__uint32_t)k[3]<<24);
+ case 3 : a+=((__uint32_t)k[2]<<16);
+ case 2 : a+=((__uint32_t)k[1]<<8);
+ case 1 : a+=k[0];
+ /* case 0: nothing left to add */
+ }
+ mix(a,b,c);
+ /*-------------------------------------------- report the result */
+ return c;
+}
diff --git a/qa/src/killparent.c b/qa/src/killparent.c
new file mode 100644
index 0000000..b8e0ca2
--- /dev/null
+++ b/qa/src/killparent.c
@@ -0,0 +1,13 @@
+/*
+ * Unconditionally kill your parent ... BEWARE!
+ */
+#include <sys/types.h>
+#include <unistd.h>
+#include <signal.h>
+
+int
+main()
+{
+ kill(getppid(), SIGKILL);
+ return(0);
+}
diff --git a/qa/src/late.0 b/qa/src/late.0
new file mode 100644
index 0000000..499e644
--- /dev/null
+++ b/qa/src/late.0
Binary files differ
diff --git a/qa/src/late.index b/qa/src/late.index
new file mode 100644
index 0000000..749b305
--- /dev/null
+++ b/qa/src/late.index
Binary files differ
diff --git a/qa/src/late.meta b/qa/src/late.meta
new file mode 100644
index 0000000..b99a162
--- /dev/null
+++ b/qa/src/late.meta
Binary files differ
diff --git a/qa/src/logcontrol.c b/qa/src/logcontrol.c
new file mode 100644
index 0000000..cd0ca1a
--- /dev/null
+++ b/qa/src/logcontrol.c
@@ -0,0 +1,260 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * Utility to control archive logging for metrics
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int i;
+ int j;
+ int sts;
+ int ctlport;
+ int pid = PM_LOG_PRIMARY_PID;
+ int port = PM_LOG_NO_PORT;
+ int newstate;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = NULL;
+ char *instance = (char *)0;
+ char *endnum;
+ int numpmid;
+ pmID *pmidlist;
+ char *control_arg;
+ int control;
+ char *state_arg;
+ int state;
+ pmResult *request;
+ pmDesc desc;
+ int inst;
+ pmResult *status;
+ int delta = 5000;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:i:n:P:p:r:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'i': /* instance identifier */
+ instance = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'P': /* port for pmlogger */
+ port = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -P requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'p': /* pid for pmlogger */
+ pid = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -p requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'r': /* logging delta */
+ delta = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -r requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind > argc-2) {
+USAGE:
+ fprintf(stderr,
+"Usage: %s [options] action metric ...\n"
+"\n"
+"Options\n"
+" -D level set debug level\n"
+" -h hostname contact PMCD at this host\n"
+" -i instance apply only to this instance\n"
+" -n namespace use and alternative name space\n"
+" -P port port for pmlogger instance\n"
+" -p pid pid for pmlogger instance\n"
+" -r delta requested logging interval (msec)\n"
+"\n"
+"Actions\n"
+" mandatory {on|off|maybe}\n"
+" advisory {on|off}\n"
+" enquire\n"
+ , pmProgname);
+ exit(1);
+ }
+
+ control_arg = argv[optind++];
+ if (strcmp("mandatory", control_arg) == 0)
+ control = PM_LOG_MANDATORY;
+ else if (strcmp("advisory", control_arg) == 0)
+ control = PM_LOG_ADVISORY;
+ else if (strcmp("enquire", control_arg) == 0)
+ control = PM_LOG_ENQUIRE;
+ else
+ goto USAGE;
+
+ if (control == PM_LOG_ENQUIRE)
+ state = 0;
+ else {
+ state_arg = argv[optind++];
+ if (strcmp("on", state_arg) == 0)
+ state = PM_LOG_ON;
+ else if (strcmp("off", state_arg) == 0)
+ state = PM_LOG_OFF;
+ else if (control == PM_LOG_MANDATORY && strcmp("maybe", state_arg) == 0)
+ state = PM_LOG_MAYBE;
+ else
+ goto USAGE;
+ }
+
+ if (namespace != NULL && (sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = __pmConnectLogger(host, &pid, &port)) < 0) {
+ printf("%s: Cannot connect to pmlogger (%d) on host \"%s\": %s\n",
+ pmProgname, pid, host, pmErrStr(sts));
+ exit(1);
+ }
+ ctlport = sts;
+
+ numpmid = argc - optind;
+ pmidlist = (pmID *)malloc(numpmid * sizeof(pmID));
+
+ if ((sts = pmLookupName(numpmid, &argv[optind], pmidlist)) < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL) {
+ printf("Error: metric %s is unknown\n", argv[optind+i]);
+ exit(1);
+ }
+ if (instance != (char *)0) {
+ if ((sts = pmLookupDesc(pmidlist[i], &desc)) < 0) {
+ printf("pmDesc(%s %s): %s\n",
+ argv[optind+i], pmIDStr(pmidlist[i]), pmErrStr(sts));
+ exit(1);
+ }
+ if ((inst = pmLookupInDom(desc.indom, instance)) < 0) {
+ printf("pmLookupInDom(%s): %s\n", instance, pmErrStr(inst));
+ exit(1);
+ }
+ if ((sts = pmDelProfile(desc.indom, 0, (int *)0)) < 0) {
+ printf("pmDelProfile(%s): %s\n", pmInDomStr(desc.indom), pmErrStr(inst));
+ exit(1);
+ }
+ if ((sts = pmAddProfile(desc.indom, 1, &inst)) < 0) {
+ printf("pmAddProfile(%s): %s\n", pmInDomStr(desc.indom), pmErrStr(inst));
+ exit(1);
+ }
+ }
+ }
+
+ if ((sts = pmFetch(numpmid, pmidlist, &request)) < 0) {
+ printf("pmFetch: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = __pmControlLog(ctlport, request, control, state, delta, &status);
+ if (sts < 0) {
+ printf("%s: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (i = 0; i < numpmid; i++) {
+ if ((sts = pmLookupDesc(pmidlist[i], &desc)) < 0) {
+ printf("pmDesc(%s): %s\n", pmIDStr(pmidlist[i]), pmErrStr(sts));
+ goto done;
+ }
+ printf("%s", argv[optind+i]);
+ if (status->vset[i]->numval < 0)
+ printf(" Error: %s\n", pmErrStr(status->vset[i]->numval));
+ else if (status->vset[i]->numval == 0)
+ printf(" No value?\n");
+ else {
+ for (j = 0; j < status->vset[i]->numval; j++) {
+ pmValue *vp = &status->vset[i]->vlist[j];
+ char *p;
+ if (status->vset[i]->numval > 1 || desc.indom != PM_INDOM_NULL) {
+ if (j == 0)
+ putchar('\n');
+ printf(" inst [%d", vp->inst);
+ if (pmNameInDom(desc.indom, vp->inst, &p) < 0)
+ printf(" or ???]");
+ else {
+ printf(" or \"%s\"]", p);
+ free(p);
+ }
+ }
+ newstate = PMLC_GET_STATE(vp->value.lval);
+ printf(" %d (%s %s", newstate,
+ PMLC_GET_MAND(vp->value.lval) ? "mand" : "adv",
+ PMLC_GET_ON(vp->value.lval) ? "on" : "off");
+ if (PMLC_GET_ON(vp->value.lval))
+ printf(", delta=%d msec", PMLC_GET_DELTA(vp->value.lval));
+ if (PMLC_GET_INLOG(vp->value.lval))
+ printf(", inlog");
+ if (PMLC_GET_AVAIL(vp->value.lval))
+ printf(", avail");
+ printf(")\n");
+ }
+ }
+ }
+
+ free(pmidlist);
+ pmFreeResult(request);
+ pmFreeResult(status);
+ if ((sts = pmWhichContext()) < 0) {
+ printf("%s: pmWhichContext: %s\n", pmProgname, pmErrStr(sts));
+ goto done;
+ }
+ pmDestroyContext(sts);
+
+done:
+ close(ctlport);
+ sleep(1);
+
+ exit(0);
+}
diff --git a/qa/src/logsummary-bug.0 b/qa/src/logsummary-bug.0
new file mode 100644
index 0000000..c13b2c2
--- /dev/null
+++ b/qa/src/logsummary-bug.0
Binary files differ
diff --git a/qa/src/logsummary-bug.index b/qa/src/logsummary-bug.index
new file mode 100644
index 0000000..f1c3e01
--- /dev/null
+++ b/qa/src/logsummary-bug.index
Binary files differ
diff --git a/qa/src/logsummary-bug.meta b/qa/src/logsummary-bug.meta
new file mode 100644
index 0000000..cfdfcd4
--- /dev/null
+++ b/qa/src/logsummary-bug.meta
Binary files differ
diff --git a/qa/src/make.dodgey b/qa/src/make.dodgey
new file mode 100755
index 0000000..ae223cf
--- /dev/null
+++ b/qa/src/make.dodgey
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+#
+# Make the various "dodgey" logs
+#
+
+. $PCP_DIR/etc/pcp.env
+
+if [ $# -ne 2 ]
+then
+ echo "Usage: make-dodgey type nsample"
+ exit 1
+fi
+
+if [ ! -f config.dodgey-$1 ]
+then
+ echo "make-dodgey: cannot find config file \"config.dodgey-$1\""
+ exit 1
+fi
+
+
+rm -f dodgey-$1.index dodgey-$1.meta dodgey-$1.0
+pmstore sample.dodgey.control 5
+pmlogger -c config.dodgey-$1 -s $2 dodgey-$1 &
+sleep 3; pmstore sample.dodgey.control 3
+sleep 3; pmstore sample.dodgey.control 4
+sleep 3; pmstore sample.dodgey.control 5
+sleep 3; pmstore sample.dodgey.control 0
+sleep 3; pmstore sample.dodgey.control 5
+sleep 3; pmstore sample.dodgey.control -1044
+sleep 3; pmstore sample.dodgey.control 5
+sleep 3
+
+wait
diff --git a/qa/src/mark-bug.0 b/qa/src/mark-bug.0
new file mode 100644
index 0000000..6729108
--- /dev/null
+++ b/qa/src/mark-bug.0
Binary files differ
diff --git a/qa/src/mark-bug.c b/qa/src/mark-bug.c
new file mode 100644
index 0000000..c9de132
--- /dev/null
+++ b/qa/src/mark-bug.c
@@ -0,0 +1,386 @@
+/*
+ * mark-bug - tests rewind over a mark (merged log)
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <limits.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+char *namelist[2] = {"hinv.ncpu", "irix.kernel.all.cpu.idle"};
+pmID pmidlist[2];
+pmResult *result;
+struct timeval curpos;
+static void check_result(char *, pmResult *);
+
+static char timebuf[26];
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int i;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ int mode = PM_MODE_INTERP; /* mode for archives */
+ char *configfile = NULL;
+ char *start = NULL;
+ char *finish = NULL;
+ char *align = NULL;
+ char *offset = NULL;
+ char *logfile = NULL;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = NULL; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *pmnsfile = PM_NS_DEFAULT;
+ int samples = -1;
+ double delta = 1.0;
+ char *endnum;
+ struct timeval startTime;
+ struct timeval endTime;
+ struct timeval appStart;
+ struct timeval appEnd;
+ struct timeval appOffset;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:A:c:D:h:l:Ln:O:s:S:t:T:U:VzZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'A': /* time alignment */
+ align = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != NULL) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'L': /* LOCAL, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ putenv("PMDA_LOCAL_PROC="); /* if proc PMDA needed */
+ putenv("PMDA_LOCAL_SAMPLE="); /* if sampledso PMDA needed */
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ pmnsfile = optarg;
+ break;
+
+ case 'O': /* sample offset time */
+ offset = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'S': /* start time */
+ start = optarg;
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'T': /* terminate time */
+ finish = optarg;
+ break;
+
+ case 'U': /* uninterpolated archive log */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ mode = PM_MODE_FORW;
+ host = optarg;
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != NULL) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a, -h or -U option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -A align time alignment\n\
+ -c configfile file to load configuration from\n\
+ -D debug standard PCP debug flag\n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -L use local context instead of PMCD\n\
+ -n pmnsfile use an alternative PMNS\n\
+ -O offset offset sample time\n\
+ -s samples terminate after this many iterations\n\
+ -S start start at this time\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n\
+ -T finish finish at this time\n\
+ -U archive metrics source is an uninterpolated archive log\n\
+ -V verbose/diagnostic output\n\
+ -z set reporting timezone to local time for host from -a, -h or -U\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != NULL) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if (pmnsfile != PM_NS_DEFAULT && (sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname,
+ pmnsfile, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if (mode != PM_MODE_INTERP) {
+ if ((sts = pmSetMode(mode, &label.ll_start, 0)) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ startTime = label.ll_start;
+ sts = pmGetArchiveEnd(&endTime);
+ if (sts < 0) {
+ fprintf(stderr, "%s: pmGetArchiveEnd: %s\n", pmProgname,
+ pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else {
+ gettimeofday(&startTime, NULL);
+ endTime.tv_sec = INT_MAX;
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != NULL) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+ else
+ tzh = pmNewContextZone();
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("extra argument[%d]: %s\n", optind, argv[optind]);
+ optind++;
+ }
+
+ if (align != NULL && type != PM_CONTEXT_ARCHIVE) {
+ fprintf(stderr, "%s: -A option only supported for PCP archives, alignment request ignored\n",
+ pmProgname);
+ align = NULL;
+ }
+
+ sts = pmParseTimeWindow(start, finish, align, offset, &startTime,
+ &endTime, &appStart, &appEnd, &appOffset,
+ &endnum);
+
+ if (sts < 0) {
+ fprintf(stderr, "%s: %s\n", pmProgname, endnum);
+ exit(1);
+ }
+
+ if ((sts = pmLookupName(2, namelist, pmidlist)) < 0) {
+ fprintf(stderr, "%s: pmLookupName failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* goto the start */
+ if ((sts = pmSetMode(PM_MODE_INTERP, &appStart, (int)(delta * 1000))) < 0) {
+ fprintf(stderr, "%s: pmSetMode failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ pmCtime(&appStart.tv_sec, timebuf);
+ printf("archive %s\nstartTime: %.24s+%-8d\n",
+ host, timebuf, (int)appStart.tv_usec);
+ pmCtime(&appEnd.tv_sec, timebuf);
+ printf("endTime : %.24s+%-8d\nsamples=%d delta=%dms\n",
+ timebuf, (int)appEnd.tv_usec, samples, (int)(delta * 1000));
+
+ /* play forwards over the mark */
+ for (i=0; i < samples; i++) {
+ if ((sts = pmFetch(2, pmidlist, &result)) < 0) {
+ fprintf(stderr, "%s: pmFetch failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ check_result("forwards ", result);
+ curpos = result->timestamp; /* struct cpy */
+ pmFreeResult(result);
+ }
+
+ /* rewind back over the mark */
+ if ((sts = pmSetMode(PM_MODE_INTERP, &curpos, (int)(delta * -1000))) < 0) {
+ fprintf(stderr, "%s: pmSetMode failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (i=0; i < samples; i++) {
+ if ((sts = pmFetch(2, pmidlist, &result)) < 0) {
+ fprintf(stderr, "%s: pmFetch failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ check_result("rewinding", result);
+ pmFreeResult(result);
+ }
+
+
+ return 0;
+}
+
+static void
+check_result(char *title, pmResult *result)
+{
+ int err= 0;
+ if (result->numpmid != 2) {
+ pmCtime(&result->timestamp.tv_sec, timebuf);
+ printf("%s @ %.24s+%-8d numpmid=%d\n", title,
+ timebuf, (int)result->timestamp.tv_usec, result->numpmid);
+ err++;
+ }
+ if (result->numpmid >= 0 && result->vset[0]->numval != 1) {
+ pmCtime(&result->timestamp.tv_sec, timebuf);
+ printf("%s @ %.24s+%-8d vset[0]->numval=%d\n", title,
+ timebuf, (int)result->timestamp.tv_usec, result->vset[0]->numval);
+ err++;
+ }
+ if (result->numpmid >= 1 && result->vset[1]->numval != 1) {
+ pmCtime(&result->timestamp.tv_sec, timebuf);
+ printf("%s @ %.24s+%-8d vset[1]->numval=%d\n", title,
+ timebuf, (int)result->timestamp.tv_usec, result->vset[0]->numval);
+ err++;
+ }
+ if (err == 0) {
+ pmCtime(&result->timestamp.tv_sec, timebuf);
+ printf("fetch OK %s @ %.24s+%-8d\n", title,
+ timebuf, (int)result->timestamp.tv_usec);
+ }
+}
diff --git a/qa/src/mark-bug.index b/qa/src/mark-bug.index
new file mode 100644
index 0000000..0e99776
--- /dev/null
+++ b/qa/src/mark-bug.index
Binary files differ
diff --git a/qa/src/mark-bug.meta b/qa/src/mark-bug.meta
new file mode 100644
index 0000000..c1afde3
--- /dev/null
+++ b/qa/src/mark-bug.meta
Binary files differ
diff --git a/qa/src/markmerge.0 b/qa/src/markmerge.0
new file mode 100644
index 0000000..c007356
--- /dev/null
+++ b/qa/src/markmerge.0
Binary files differ
diff --git a/qa/src/markmerge.index b/qa/src/markmerge.index
new file mode 100644
index 0000000..5d8da19
--- /dev/null
+++ b/qa/src/markmerge.index
Binary files differ
diff --git a/qa/src/markmerge.meta b/qa/src/markmerge.meta
new file mode 100644
index 0000000..ec382f4
--- /dev/null
+++ b/qa/src/markmerge.meta
Binary files differ
diff --git a/qa/src/matchInstanceName.c b/qa/src/matchInstanceName.c
new file mode 100644
index 0000000..efcad9d
--- /dev/null
+++ b/qa/src/matchInstanceName.c
@@ -0,0 +1,36 @@
+/*
+ * for PV 939998 affecting pmgadgets instance cache
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+static int
+matchInstanceName(char *p, char *q)
+{
+ for (;; p++, q++) {
+ if ((*p == ' ' || *p == '\0') &&
+ (*q == ' ' || *q == '\0'))
+ return 1;
+
+ if (*p != *q || *p == ' ' || *p == '\0' ||
+ *q == ' ' || *q == '\0')
+ return 0;
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ char *a = argv[1];
+ char *b = argv[2];
+
+ if (argc != 3) {
+ fprintf(stderr, "Usage: %s string1 string2\n", argv[0]);
+ exit(1);
+ }
+
+ printf("\"%s\" \"%s\" %s\n", a, b,
+ matchInstanceName(a, b) ? "true" : "false");
+ exit(0);
+}
diff --git a/qa/src/memcachestats.pl b/qa/src/memcachestats.pl
new file mode 100755
index 0000000..a2bfb28
--- /dev/null
+++ b/qa/src/memcachestats.pl
@@ -0,0 +1,66 @@
+#!/usr/bin/perl -w
+
+#
+# liberally borrowed from memcache-top at
+# https://code.google.com/p/memcache-top/
+#
+
+use strict;
+use IO::Socket;
+use Getopt::Long;
+
+my (@default_instances, @instances, $remote, $default_port);
+
+# List of servers/ ports to query.
+@default_instances = ( '127.0.0.1:11211' );
+
+# Default port to connect to, if not specified
+$default_port = "11211";
+
+if (@ARGV) {
+ GetOptions (
+ 'instances=s' => \@instances,
+ 'port=i' => \$default_port,
+ );
+ if (@instances) {
+ @instances = split(/,/,join(',',@instances));
+ } else {
+ @instances = @default_instances;
+ }
+}
+else {
+ @instances = @default_instances;
+}
+
+foreach my $instance (@instances) {
+
+ my ($server);
+
+ my @split = split(/:/,$instance);
+ unless ( $split[1] ) {
+ $instance = $instance . ":" . $default_port;
+ }
+
+ $remote = IO::Socket::INET->new($instance);
+ unless ( defined($remote) ) {
+ print "no cigar: $!\n";
+ exit(1);
+ }
+ $remote->autoflush(1);
+
+ my @commands = ("stats", "stats slabs", "stats items" );
+ foreach my $command (@commands) {
+ print $remote "$command\n";
+
+ LINE: while ( defined ( my $line = <$remote> ) ) {
+ last LINE if ( $line =~ /^END/ );
+ chomp $line;
+ $line =~ s/^STAT //;
+ $line =~ s/ //;
+ print $line . "\n";
+ next LINE;
+ }
+ }
+
+ close $remote;
+}
diff --git a/qa/src/mirage-1.0 b/qa/src/mirage-1.0
new file mode 100644
index 0000000..7bb29c1
--- /dev/null
+++ b/qa/src/mirage-1.0
Binary files differ
diff --git a/qa/src/mirage-1.index b/qa/src/mirage-1.index
new file mode 100644
index 0000000..2af5077
--- /dev/null
+++ b/qa/src/mirage-1.index
Binary files differ
diff --git a/qa/src/mirage-1.meta b/qa/src/mirage-1.meta
new file mode 100644
index 0000000..cf84ca6
--- /dev/null
+++ b/qa/src/mirage-1.meta
Binary files differ
diff --git a/qa/src/mirage-2.0 b/qa/src/mirage-2.0
new file mode 100644
index 0000000..1fa050f
--- /dev/null
+++ b/qa/src/mirage-2.0
Binary files differ
diff --git a/qa/src/mirage-2.index b/qa/src/mirage-2.index
new file mode 100644
index 0000000..dd40f52
--- /dev/null
+++ b/qa/src/mirage-2.index
Binary files differ
diff --git a/qa/src/mirage-2.meta b/qa/src/mirage-2.meta
new file mode 100644
index 0000000..5bfdfa3
--- /dev/null
+++ b/qa/src/mirage-2.meta
Binary files differ
diff --git a/qa/src/mirage.0 b/qa/src/mirage.0
new file mode 100644
index 0000000..1e6d68e
--- /dev/null
+++ b/qa/src/mirage.0
Binary files differ
diff --git a/qa/src/mirage.index b/qa/src/mirage.index
new file mode 100644
index 0000000..6daca30
--- /dev/null
+++ b/qa/src/mirage.index
Binary files differ
diff --git a/qa/src/mirage.meta b/qa/src/mirage.meta
new file mode 100644
index 0000000..37dba30
--- /dev/null
+++ b/qa/src/mirage.meta
Binary files differ
diff --git a/qa/src/mkarch-all b/qa/src/mkarch-all
new file mode 100755
index 0000000..7120842
--- /dev/null
+++ b/qa/src/mkarch-all
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+if [ $# -ne 2 ]
+then
+ echo "Usage: mkarch-all hostname archive"
+ exit 1
+fi
+
+rm -f $2.0 $2.meta $2.index $2.log
+
+cat <<End-of-File | pmlogger -l $2.log -t 3 -T 10s -h $1 $2
+log mandatory on once hinv
+log mandatory on once hw
+
+log mandatory on default buffer_cache
+log mandatory on default cihb
+log mandatory on default cms
+log mandatory on default cxfs
+log mandatory on default disk
+log mandatory on default espping
+log mandatory on default filesys
+log mandatory on default gfx
+log mandatory on default ipc
+log mandatory on default kaio
+log mandatory on default kernel
+log mandatory on default mem
+log mandatory on default name_cache
+log mandatory on default network
+log mandatory on default nfs
+log mandatory on default nfs3
+log mandatory on default numa
+log mandatory on default origin
+log mandatory on default pmcd
+log mandatory on default pmda
+log mandatory on default resource
+log mandatory on default rpc
+log mandatory on default stream
+log mandatory on default swap
+log mandatory on default swapdev
+log mandatory on default udf
+log mandatory on default vfs
+log mandatory on default vnodes
+log mandatory on default xbow
+log mandatory on default xfs
+log mandatory on default xlv
+End-of-File
+
+echo "Archive $2 created, log in $2.log"
diff --git a/qa/src/mkbadlen b/qa/src/mkbadlen
new file mode 100755
index 0000000..c77b3b2
--- /dev/null
+++ b/qa/src/mkbadlen
@@ -0,0 +1,110 @@
+#!/bin/sh
+#
+# Recipes for making badlen-* family of archives.
+#
+# Every one is based on a version of foo, with binary editing using
+# bvi (or similar) and cut-n-paste with dd.
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# Set up for a new badlen-X archive
+#
+X=0
+while true
+do
+ [ ! -f badlen-$X.index ] && break
+ X=`expr $X + 1`
+ if [ $X -eq 100 ]
+ then
+ echo "Botch: all archives badlen-0...badlen-99 already exist?"
+ exit 1
+ fi
+done
+if [ $X -eq 0 ]
+then
+ cp foo.0 badlen-0.0
+ cp foo.meta badlen-0.meta
+ cp foo.index badlen-0.index
+ X=1
+fi
+
+ln badlen-0.meta badlen-$X.meta
+ln badlen-0.index badlen-$X.index
+
+case $X
+in
+ 1) # Trailer len of first pmResult smaller than header len.
+ cp foo.0 badlen-$X.0
+ echo '263s\\.\\80\\' >$tmp.ex
+ ;;
+
+ 2) # Data file truncated just before first trailer record ... 132
+ # bytes for label and 128 (4 bytes short) for first data record.
+ dd if=badlen-0.0 of=badlen-$X.0 bs=1 count=260
+ ;;
+
+ 3) # Data file truncated mid way thru first pmResult ... 132 bytes for
+ # label and 120 (12 bytes short) for first partial data record.
+ dd if=badlen-0.0 of=badlen-$X.0 bs=1 count=252
+ ;;
+
+ 4) # Empty data file
+ echo >badlen-$X.0
+ ;;
+
+ 5) # Short label record (42 bytes, not 132)
+ dd if=badlen-0.0 of=badlen-$X.0 bs=1 count=42
+ ;;
+
+ 6) # Label header len 64 not 132 as expected
+ cp foo.0 badlen-$X.0
+ echo '3s\\.\\40\\' >$tmp.ex
+ ;;
+
+ 7) # Label trailer len 64 not 132 as expected
+ cp foo.0 badlen-$X.0
+ echo '131s\\.\\40\\' >$tmp.ex
+ ;;
+
+ 8) # Label bad PM_LOG_VER
+ cp foo.0 badlen-$X.0
+ echo '7s\\.\\FF\\' >$tmp.ex
+ ;;
+
+ 9) # Truncated metadata file
+ cp foo.0 badlen-$X.0
+ cp foo.index badlen-$X.index
+ rm -f badlen-$X.meta
+ dd if=foo.meta of=badlen-$X.meta bs=1 count=840
+ ;;
+
+ 10) # Data file truncated in trailer of label record
+ dd if=badlen-0.0 of=badlen-$X.0 bs=1 count=131
+ ;;
+
+ 11) # Data file truncated in header of first pmResult
+ dd if=badlen-0.0 of=badlen-$X.0 bs=1 count=133
+ ;;
+
+esac
+
+if [ -f $tmp.ex ]
+then
+ echo 'w' >>$tmp.ex
+ echo 'q' >>$tmp.ex
+
+ if which bvi >/dev/null 2>&1
+ then
+ bvi -f $tmp.ex badlen-$X.0
+ else
+ echo "bvi not installed"
+ echo "Need to apply the equivalent of this binary editing to badlen-$X.0"
+ cat $tmp.ex
+ fi
+fi
+
+echo "badlen-$X created."
+
+exit
+
diff --git a/qa/src/mkbadti b/qa/src/mkbadti
new file mode 100755
index 0000000..bcb27b0
--- /dev/null
+++ b/qa/src/mkbadti
@@ -0,0 +1,107 @@
+#!/bin/sh
+#
+# Recipes for making badti-* family of archives.
+#
+# Every one is based on a version of ok-foo, with binary editing using
+# bvi (or similar) and cut-n-paste with dd.
+#
+# This is the good temporal index
+#
+# Timestamp Log Vol end(meta) end(log) offset
+# 0 <- label record
+# 04:34:32.257 0 132 132 132
+# 04:34:33.248 0 350 284 152
+# 04:34:40.258 0 851 1768 172
+# 191 <- EOF
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+# Set up for a new badti-X archive
+#
+X=`ls badti-*.index 2>/dev/null | tail -1 | sed -e 's/badti-//' -e 's/\.index//'`
+if [ -z "$X" ]
+then
+ X=1
+else
+ X=`expr $X + 1`
+fi
+
+ln ok-foo.meta badti-$X.meta
+ln ok-foo.0 badti-$X.0
+
+case $X
+in
+ 1) # index broken in the middle of an entry
+ dd if=ok-foo.index of=badti-$X.index bs=1 count=162
+ ;;
+
+ 2) # entry[2] volume is negative
+ # entry[2] tv_usec in timestamp is >99999
+ # entry[3] tv_sec in timestamp is negative
+ # entry[3] tv_usec in timestamp is negative
+ cp ok-foo.index badti-$X.index
+ echo '140s\\....\\FFFFFFFF\\' >$tmp.ex
+ echo '136s\\....\\000F4240\\' >>$tmp.ex
+ echo '172s\\....\\FFFFFFFE\\' >>$tmp.ex
+ echo '176s\\....\\FFFFFFFC\\' >>$tmp.ex
+ ;;
+
+ 3) # entry[1] volume -> non existant file, and then volume goes backwards
+ # entry[3] meta and log offsets past end of file
+ cp ok-foo.index badti-$X.index
+ echo '132s\\....\\00000002\\' >$tmp.ex
+ echo '184s\\....\\00000354\\' >>$tmp.ex
+ echo '188s\\....\\000007B9\\' >>$tmp.ex
+ ;;
+
+ 4) # tv_usec in timestamp is negative
+ cp ok-foo.index badti-$X.index
+ ;;
+
+ 5) # Short label record (42 bytes, not 132)
+ dd if=badti-0.0 of=badti-$X.0 bs=1 count=42
+ ;;
+
+ 6) # Label header len 64 not 132 as expected
+ cp ok-foo.0 badti-$X.0
+ echo '3s\\.\\40\\' >$tmp.ex
+ ;;
+
+ 7) # Label trailer len 64 not 132 as expected
+ cp ok-foo.0 badti-$X.0
+ echo '131s\\.\\40\\' >$tmp.ex
+ ;;
+
+ 8) # Label bad PM_LOG_VER
+ cp ok-foo.0 badti-$X.0
+ echo '7s\\.\\FF\\' >$tmp.ex
+ ;;
+
+ 9) # Truncated metadata file
+ cp ok-foo.0 badti-$X.0
+ cp ok-foo.index badti-$X.index
+ rm -f badti-$X.meta
+ dd if=ok-foo.meta of=badti-$X.meta bs=1 count=840
+
+esac
+
+if [ -f $tmp.ex ]
+then
+ echo 'w' >>$tmp.ex
+ echo 'q' >>$tmp.ex
+
+ if which bvi >/dev/null 2>&1
+ then
+ bvi -f $tmp.ex badti-$X.index
+ else
+ echo "bvi not installed"
+ echo "Need to apply the equivalent of this binary editing to badti-$X.0"
+ cat $tmp.ex
+ fi
+fi
+
+echo "badti-$X created."
+
+exit
+
diff --git a/qa/src/mkbig1 b/qa/src/mkbig1
new file mode 100755
index 0000000..3c35faf
--- /dev/null
+++ b/qa/src/mkbig1
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# remake the big1 archive.
+# Needs a lot of disk space, so is guarded by df check ... output
+# archive is used by multiple tests. If return code is non-zero,
+# then output is suitable for a notrun message.
+#
+# Copyright (c) 2012 Red Hat.
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+[ -f ../common.rc ] && cd .. # from src directory
+. ./common.rc # for $sudo, $tmp, $here and pcp.env
+. ./common.check
+
+# cleanup any archives in the old location (not src)
+$sudo rm -f big1.*
+
+# don't recreate the archive unless we really have to
+[ -s src/big1.0 -a -s src/big1.1 -a -s src/big1.index -a -s src/big1.meta ] && exit 0
+
+# 10GB should keep us out of trouble
+free=`_check_freespace 10240`
+if [ -n "$free" ]
+then
+ echo $free
+ exit 1
+fi
+
+status=1
+iam=mkbig1
+$sudo rm -rf $tmp.*
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ if [ ! -f $tmp.done ]
+ then
+ cd $here/pmdas/bigun
+ $sudo ./Remove >>$here/src/$iam.log
+ cd $here
+ touch $tmp.done
+ fi
+}
+
+cd $here/pmdas/bigun
+make >$here/src/$iam.log 2>&1
+$sudo ./Install </dev/null >>$here/src/$iam.log
+if [ $? != 0 ]
+then
+ echo "bigun pmda Install failed ... see $here/src/$iam.log"
+ exit
+fi
+if pmprobe bigun 2>&1 | tee -a $here/src/$iam.log | grep ' [0-9]$'
+then
+ :
+else
+ echo "bigun pmda Install failed ... see $here/src/$iam.log"
+ exit
+fi
+cd $here
+
+cat <<End-of-File >$tmp.config
+log mandatory on default {
+ bigun
+ sample.hordes
+}
+End-of-File
+
+$sudo rm -f big1.*
+pmlogger -r -c $tmp.config -l $tmp.out -t 10msec -s 2049 src/big1
+echo >>$here/src/$iam.log
+cat $tmp.out >>$here/src/$iam.log
+echo >>$here/src/$iam.log
+ls -l src/big1.* >>$here/src/$iam.log
+
+status=0
+exit
diff --git a/qa/src/mkeventrec b/qa/src/mkeventrec
new file mode 100755
index 0000000..ab82b56
--- /dev/null
+++ b/qa/src/mkeventrec
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# create the eventrec archive
+#
+. $PCP_DIR/etc/pcp.env
+
+pmstore sample.event.reset 3
+
+rm -f eventrec.0 eventrec.meta eventrec.index pmlogger.log
+
+cat <<End-of-File | pmlogger -s 5 eventrec
+log mandatory on 1 sec {
+ sample.event.records
+ sample.event.highres_records
+ sample.event.no_indom_records
+ sample.colour
+ sampledso.event.records
+ sampledso.event.no_indom_records
+}
+End-of-File
+
+cat pmlogger.log
diff --git a/qa/src/mkfiles.c b/qa/src/mkfiles.c
new file mode 100644
index 0000000..0a241af
--- /dev/null
+++ b/qa/src/mkfiles.c
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+/* Be careful when changing LIMIT. Also change malloc and sprintf! */
+
+#define LIMIT 10000 /* max nfiles allowed */
+
+static void
+usage (void)
+{
+ fprintf(stderr, "Usage %s: basename nfiles\n", pmProgname);
+ exit(1);
+}
+
+int
+main(int argc, char* argv[])
+{
+ char *endp;
+ long nfiles;
+ char *namebuf;
+ char *extptr;
+ int i, sts;
+
+ __pmSetProgname(argv[0]);
+
+ if (argc != 3)
+ usage();
+
+ nfiles = strtol(argv[2], &endp, 0);
+ if (*endp != '\0') {
+ fprintf(stderr, "nfiles \"%s\" is not numeric\n", argv[2]);
+ usage();
+ }
+ if (nfiles > LIMIT) {
+ fprintf(stderr, "be reasonable: nfiles limited to %d\n", LIMIT);
+ usage();
+ }
+
+ i = (int)strlen(argv[1]);
+ namebuf = (char *)malloc(i + 6);
+ if (namebuf == (char *)0) {
+ perror("error allocating filename buffer");
+ exit(1);
+ }
+ strcpy(namebuf, argv[1]);
+ namebuf[i++] = '.';
+ extptr = &namebuf[i];
+
+ for (i = 0; i < nfiles; i++) {
+ sprintf(extptr, "%04d", i);
+ if ((sts = creat(namebuf, 0777)) < 0) {
+ fprintf(stderr, "Error creating %s: %s\n", namebuf, strerror(errno));
+ exit(1);
+ }
+ else
+ close(sts);
+ }
+ exit(0);
+}
diff --git a/qa/src/mkinterpmark b/qa/src/mkinterpmark
new file mode 100755
index 0000000..fd9d034
--- /dev/null
+++ b/qa/src/mkinterpmark
@@ -0,0 +1,148 @@
+#!/bin/sh
+#
+# Recipe to recreate the interpmark archive
+#
+# Final archive is
+# section-a
+# <mark>
+# section-b
+# <mark>
+# section-c
+# <mark>
+# [nothing]
+# <mark>
+# section-d
+#
+# section-a contains metrics from this matrix
+# semantics { counter, discrete, instant } x
+# type { 32-bit, 64-bit } x
+# instances { singular, indom } x
+# sample intervals { 500msec, 2sec, 10sec (once or 2sec for discrete) }
+# for a total time of 35 seconds
+#
+# metric semantics type indom sample
+# disk.dev.read counter U64 60.1 500msec
+# disk.dev.write counter U64 60.1 2sec
+# disk.dev.total counter U64 60.1 10sec
+# disk.all.read counter U64 NULL 500msec
+# disk.all.write counter U64 NULL 2sec
+# disk.all.total counter U64 NULL 10sec
+# disk.dev.read_bytes counter U32 60.1 500msec
+# disk.dev.write_bytes counter U32 60.1 2sec
+# disk.dev.total_bytes counter U32 60.1 10sec
+# disk.all.read_bytes counter U32 NULL 500msec
+# disk.all.write_bytes counter U32 NULL 2sec
+# disk.all.total_bytes counter U32 NULL 10sec
+#
+# filesys.used instant U64 60.5 500msec
+# sample.longlong.bin instant 64 29.2 2sec
+# filesys.free instant U64 60.5 10sec
+# sample.longlong.one instant 64 NULL 500msec
+# swap.length instant U64 NULL 2sec
+# mem.util.kernelStack instant U64 NULL 10sec
+# filesys.usedfiles instant U32 60.5 500msec
+# swapdev.free instant U32 60.6 2sec
+# pmcd.buf.alloc instant 32 2.5 10sec
+# sample.control instant 32 NULL 500msec
+# kernel.all.uptime instant U32 NULL 2sec
+# network.tcpconn.close instant U32 NULL 10sec
+#
+# filesys.capacity discrete U64 60.5 2sec
+# tmpfs.capacity discrete U64 60.18 once
+#
+# mem.physmem discrete U64 NULL 2sec
+#
+# filesys.capacity discrete U32 60.5 2sec
+# hinv.cpu.cache discrete U32 60.0 once
+# filesys.maxfiles discrete U32 60.5 once
+# hinv.physmem discrete U32 NULL 2sec
+# hinv.pagesize discrete U32 NULL once
+# hinv.ncpu discrete U32 NULL once
+#
+# section-b and section-d are the same as section-a (same pmlogger config)
+#
+# section-c contains only one sample for the 500msec sampling data
+#
+
+tmp=/var/tmp/$$
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+cat >$tmp.conf <<End-of-File
+log mandatory on once {
+ tmpfs.capacity
+ hinv.cpu.cache
+ filesys.maxfiles
+ hinv.pagesize
+ hinv.ncpu
+}
+
+log mandatory on 500msec {
+ disk.dev.read
+ disk.all.read
+ disk.dev.read_bytes
+ disk.all.read_bytes
+ filesys.used
+ sample.longlong.one
+ filesys.usedfiles
+ sample.control
+}
+
+log mandatory on 2sec {
+ disk.dev.write
+ disk.all.write
+ disk.dev.write_bytes
+ disk.all.write_bytes
+ sample.longlong.bin
+ swap.length
+ swapdev.free
+ kernel.all.uptime
+ filesys.capacity
+ mem.physmem
+ filesys.capacity
+ hinv.physmem
+}
+
+log mandatory on 10sec {
+ disk.dev.total
+ disk.all.total
+ disk.dev.total_bytes
+ disk.all.total_bytes
+ filesys.free
+ mem.util.kernelStack
+ pmcd.buf.alloc
+ network.tcpconn.close
+}
+End-of-File
+
+cat >$tmp.conf.c <<End-of-File
+log mandatory on once {
+ disk.dev.read
+ disk.all.read
+ disk.dev.read_bytes
+ disk.all.read_bytes
+ filesys.used
+ sample.longlong.one
+ filesys.usedfiles
+ sample.control
+}
+End-of-File
+
+echo "section-a"
+rm -f section-a.*
+pmlogger -c $tmp.conf -l a.log -T +35sec section-a
+sleep 2
+echo "section-b"
+rm -f section-b.*
+pmlogger -c $tmp.conf -l b.log -T +35sec section-b
+sleep 2
+echo "section-c"
+rm -f section-c.*
+pmlogger -c $tmp.conf.c -l c.log -s 1 section-c
+sleep 10
+echo "section-d"
+rm -f section-d.*
+pmlogger -c $tmp.conf -l d.log -T +35sec section-d
+
+rm interpmark.*
+pmlogextract section-a section-b section-c section-d interpmark
+
diff --git a/qa/src/mkmirage b/qa/src/mkmirage
new file mode 100755
index 0000000..318a998
--- /dev/null
+++ b/qa/src/mkmirage
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# remake the mirage-1 and mirage-2 archives ... these are
+# intended to be checked in and not remade, this script is
+# simply a record of how they were created.
+#
+
+tmp=/var/tmp/$$
+rm -f $tmp.*
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+cat <<End-of-File >>$tmp.config
+log mandatory on default {
+ sample.mirage
+ sample.bin
+ sample.many.int
+}
+End-of-File
+
+rm -r mirage-1.* mirage-2.*
+
+pmlogger -t 3sec -c $tmp.config -s 15 mirage-1 &
+sleep 5
+pmstore sample.many.count 5
+pmlogger -t 1sec -c $tmp.config -s 10 mirage-2 &
+i=6
+while [ $i -lt 12 ]
+do
+ sleep 1
+ pmstore sample.many.count $i
+ i=`expr $i + 1`
+done
+wait
+pmstore sample.many.count 5
+
diff --git a/qa/src/mkmultihost b/qa/src/mkmultihost
new file mode 100755
index 0000000..2706f2a
--- /dev/null
+++ b/qa/src/mkmultihost
@@ -0,0 +1,65 @@
+#!/bin/sh
+#
+# recreate the multiple concurrent archives ... multi-<host>
+#
+
+tmp=/var/tmp/$$
+sts=0
+trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.config
+log mandatory on default {
+ hinv
+ sampledso.colour
+ sampledso.bin
+ sampledso.part_bin
+ sampledso.drift
+ sampledso.kbyte_ctr
+ sampledso.kbyte_rate
+ sampledso.ulong
+ sampledso.longlong
+ sampledso.double
+ sampledso.scale_step
+ sampledso.const_rate
+}
+End-of-File
+
+rm -f $tmp.bad
+for host
+do
+ for ext in 0 index meta
+ do
+ [ -f multi-"$host".$ext ] && echo "$0: multi-$host.$ext exists" && touch $tmp.bad
+ done
+done
+
+if [ -f $tmp.bad ]
+then
+ echo "$0: Need to rm archives first ... we won't clobber 'em by default"
+ sts=1
+ exit
+fi
+
+# randomize the pmcd's a little
+#
+for host
+do
+ rm -f $tmp.tmp.* $tmp.$host
+ date >/dev/null 2>&1 &
+ n=`echo $! | awk '{ srand($1); print int(rand()*5)+1 }'`
+ echo "$host: prime with $n samples"
+ pmlogger -t 100msec -s $n -l $tmp.$host -c $tmp.config -T10sec -h $host $tmp.tmp
+done
+
+for host
+do
+ pmlogger -t 2sec -l $tmp.$host -c $tmp.config -T10sec -h $host multi-$host &
+done
+
+wait
+
+for host
+do
+ cat $tmp.$host
+done
+
diff --git a/qa/src/mknuma b/qa/src/mknuma
new file mode 100755
index 0000000..4ea5b45
--- /dev/null
+++ b/qa/src/mknuma
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# remake the numa archive ...
+# this archive is intended to be checked in and not remade, this script is
+# simply a record of how it was created
+#
+
+. /etc/pcp.env
+
+tmp=/var/tmp/$$
+rm -f $tmp.*
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+nnode=`pmprobe -v hinv.nnode | $PCP_AWK_PROG '{print $NF}'`
+if [ -z "$nnode" -o "$nnode" -lt 2 ]
+then
+ echo "$0: Error: hinv.nnode ($nnode) not > 1"
+ exit 1
+fi
+
+cat <<End-of-File >>$tmp.config
+log mandatory on once {
+ hinv
+}
+
+log mandatory on 1 sec {
+ mem.numa.alloc
+ kernel.pernode
+End-of-File
+
+pminfo mem.vmstat | grep numa_ | sed -e 's/^/ /' >>$tmp.config
+
+echo "}" >>$tmp.config
+
+rm -f numa.0 numa.meta numa.index
+
+pmlogger -s 10 -c $tmp.config numa
diff --git a/qa/src/mkpermslist b/qa/src/mkpermslist
new file mode 100755
index 0000000..4738eec
--- /dev/null
+++ b/qa/src/mkpermslist
@@ -0,0 +1,209 @@
+#!/bin/sh
+#
+# Build a new QA permslist file by descend the source tree finding
+# install lines for files with non-default mode (not 0644 for files or
+# 0755 for directories) and/or non-default user and group (not root)
+#
+
+. /etc/pcp.env
+
+tmp=/var/tmp/$$
+sts=0
+TOP=../..
+trap "rm -f $tmp.*; exit \$sts" 0 1 2 3 15
+
+cat <<End-of-File >$tmp.new
+# Control file of targets from the PCP source code that are installed
+# with non-default mode and/or owner and/or group permissions.
+# Generate by qa/src/mkpermslist on `date`
+#
+End-of-File
+
+rm -f tmp.debug.*
+( cd $TOP ; find GNU* src -type f -name "GNU*" ) \
+| while read makefile
+do
+ rm -f $tmp.raw
+ grep -i 'INSTALL' $TOP/$makefile >$tmp.tmp
+ #debug# cat $tmp.tmp >>tmp.debug.0
+ # check for -m xxx for xxx not 644 or 755
+ #
+ sed -n <$tmp.tmp >>$tmp.raw \
+ -e '/-m[ ][ ]*/{
+/-m[ ][ ]*644/d
+/-m[ ][ ]*755/d
+s/\(-[a-z]\)[ ][ ]*/\1/g
+p
+}'
+ # check for -g or -o
+ #
+ sed -n <$tmp.tmp >>$tmp.raw \
+ -e '/-[og][ ][ ]*/{
+/-[og][ ][ ]*root/d
+s/\(-[a-z]\)[ ][ ]*/\1/g
+p
+}'
+ # expand PCP env vars we expect to find
+ #
+ sed <$tmp.raw >$tmp.tmp \
+ -e 's/$(INSTALL)//' \
+ -e "s@^@$makefile@"
+ mv $tmp.tmp $tmp.raw
+
+ # special cases ... these are makefile lines that do not match
+ # the generic format and need special handling on a per makefile
+ # basis
+ #
+ case "$makefile"
+ in
+ GNUmakefile)
+ # this INSTALL line is optional depending on packaging
+ # $(INSTALL) -m 775 -g $(PCP_GROUP) -d $(PCP_RUN_DIR)
+ #
+ sed -e '/PCP_RUN_DIR)$/s/$/|optional/' <$tmp.raw >$tmp.tmp
+ diff $tmp.raw $tmp.tmp >tmp.debug.2
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ src/libpcp_pmcd/src/GNUmakefile)
+ # this INSTALL line is optional depending on platform and
+ # build options
+ # $(INSTALL) -m 444 pmcd.stp $(PCP_SHARE_DIR)/../systemtap/tapset/pmcd.stp
+ sed -e '/pmcd.stp$/s/$/|optional/' <$tmp.raw >$tmp.tmp
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ src/perl/GNUmakefile)
+ # this INSTALL line is safe because mode is 0644 or 0755
+ # if [ -x $$src ] ; then mode=0755; else mode=0644; fi; \
+ # $(INSTALL) -m $$mode $$src $$dn/$$bn || exit 1; \
+ #
+ sed -e '/\$\$mode/d' <$tmp.raw >$tmp.tmp
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ src/pmie/GNUmakefile)
+ # this INSTALL line is optional because there if conditional
+ # gmake control around it
+ # $(INSTALL) -m 1777 -d $(PCP_TMP_DIR)/pmie
+ sed -e '/PCP_TMP_DIR)\/pmie$/s/$/|optional/' <$tmp.raw >$tmp.tmp
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ src/pmlogger/GNUmakefile)
+ # this INSTALL line is optional because there if conditional
+ # gmake control around it
+ # $(INSTALL) -m 1777 -d $(PCP_TMP_DIR)/pmlogger
+ sed -e '/PCP_TMP_DIR)\/pmlogger$/s/$/|optional/' <$tmp.raw >$tmp.tmp
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ src/pmdas/bash/GNUmakefile)
+ # this INSTALL line is optional because there if conditional
+ # gmake control around it
+ # $(INSTALL) -m 1777 -d $(PCP_TMP_DIR)/pmdabash
+ #
+ sed -e '/PCP_TMP_DIR)\/pmdabash$/s/$/|optional/' <$tmp.raw >$tmp.tmp
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ src/pmdas/mmv/GNUmakefile)
+ # this INSTALL line is optional because there if conditional
+ # gmake control around it
+ # $(INSTALL) -m 1777 -d $(PCP_TMP_DIR)/mmv
+ #
+ sed -e '/PCP_TMP_DIR)\/mmv$/s/$/|optional/' <$tmp.raw >$tmp.tmp
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ src/pmwebapi/GNUmakefile)
+ # all the INSTALL lines here are conditional, including this one
+ # $(INSTALL) -m 775 -o $(PCP_USER) -g $(PCP_GROUP) -d $(PCP_LOG_DIR)/pmwebd
+ sed -e '/PCP_LOG_DIR)\/pmwebd$/s/$/|optional/' <$tmp.raw >$tmp.tmp
+ mv $tmp.tmp $tmp.raw
+ ;;
+
+ esac
+
+ # any left over $'s are bad ...
+ #
+
+ grep '\$' $tmp.raw | grep -v '\$(PCP_' >$tmp.tmp
+ if [ -s $tmp.tmp ]
+ then
+ cat >&2 $tmp.tmp
+ echo >&2 "Need fixup for shell variables or makefile macros in $makefile"
+ rm -f $tmp.new
+ break
+ fi
+
+ # translate into a generic format
+ # makefile|mode|owner|group|target-file-name|optional
+ #
+ awk <$tmp.raw '
+ { mode = ""; group = "root"; owner = "root"; list = ""
+ for (i = 2; i <= NF; i++) {
+ if ($i ~ /-m/) mode = substr($i, 3, length($i));
+ else if ($i ~ /-g/) group = substr($i, 3, length($i));
+ else if ($i ~ /-o/) owner = substr($i, 3, length($i));
+ else if ($i ~ /-d/) {
+ dir = ""
+ list = substr($i, 3, length($i));
+ }
+ else if (i == NF) {
+ dir = $i
+ }
+ else if (list == "") {
+ list = $i
+ }
+ else {
+ list = list " " $i
+ }
+ }
+ if (dir != "" && list == "") {
+ print $1 "|" mode "|" owner "|" group "|" dir
+ }
+ else if (dir == "" && list != "") {
+ print $1 "|" mode "|" owner "|" group "|" list
+ }
+ else {
+ n = split(list, files)
+ if (n == 1) {
+ print $1 "|" mode "|" owner "|" group "|" dir
+ }
+ else {
+ for (i = 0; i < n; i++)
+ print $1 "|" mode "|" owner "|" group "|" dir "/" files[i]
+ }
+ }
+
+ }'
+
+done \
+| sort | uniq >$tmp.new
+
+if [ -s $tmp.new ]
+then
+ :
+else
+ sts=1
+ exit
+fi
+
+if [ -f permslist ]
+then
+ sed -e '/^#/d' <permslist >$tmp.old.strip
+ sed -e '/^#/d' <$tmp.new >$tmp.new.strip
+ if cmp $tmp.old.strip $tmp.new.strip >/dev/null
+ then
+ echo "No changes."
+ else
+ diff -u permslist $tmp.new
+ mv permslist permslist.old
+ cp $tmp.new permslist
+ echo "Updated (previous permslist saved as permslist.old)."
+ fi
+else
+ echo "Created permslist."
+ cp $tmp.new permslist
+fi
diff --git a/qa/src/mkproc b/qa/src/mkproc
new file mode 100755
index 0000000..cd5cdcf
--- /dev/null
+++ b/qa/src/mkproc
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Recipe to remake proc archive
+#
+
+rm -f proc.0 proc.index proc.meta
+
+. $PCP_DIR/etc/pcp.env
+
+pmcd_pid=`$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mcd' | $PCP_AWK_PROG '{ print $2 }'`
+if [ -z "$pmcd_pid" ]
+then
+ echo "Failed to get pmcd PID"
+ exit 1
+fi
+
+pmlogger_pid=`$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep '[p]mlogger -P' | $PCP_AWK_PROG '{ print $2 }'`
+if [ -z "$pmlogger_pid" ]
+then
+ echo "Failed to get primary pmlogger PID"
+ exit 1
+fi
+
+cat <<End-of-File | $PCP_BINADM_DIR/pmlogger -s 4 -l proc.log proc
+log mandatory on 500msec {
+ hinv
+ proc [$pmcd_pid,$pmlogger_pid]
+ kernel
+ disk
+}
+End-of-File
diff --git a/qa/src/mkrewrite b/qa/src/mkrewrite
new file mode 100755
index 0000000..9f94d44
--- /dev/null
+++ b/qa/src/mkrewrite
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# Recipe to remake rewrite archive
+#
+
+rm -f rewrite.0 rewrite.index rewrite.meta
+
+. $PCP_DIR/etc/pcp.env
+
+cat <<End-of-File | $PCP_BINADM_DIR/pmlogger -s 5 -l rewrite.log rewrite
+log mandatory on 150msec {
+ sampledso.long.bin_ctr[100,200,800,900]
+ sample.float.bin_ctr
+ sampledso.double.hundred
+ sample.longlong.bin_ctr
+ sampledso.bin[100,200,800,900]
+ sample.part_bin
+ sampledso.long.hundred
+ sample.ulonglong.hundred
+}
+
+log mandatory on 125msec {
+ sample.ulong.bin_ctr
+ sampledso.milliseconds
+ sample.ulonglong.bin_ctr
+ sampledso.float.hundred
+ sample.bin
+ sampledso.part_bin
+ sampledso.ulong.hundred
+ sampledso.double.bin_ctr[100,200,800,900]
+ sampledso.longlong.hundred
+}
+End-of-File
diff --git a/qa/src/mksa-sysstat b/qa/src/mksa-sysstat
new file mode 100755
index 0000000..22a6085
--- /dev/null
+++ b/qa/src/mksa-sysstat
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# Recreate the sadc data file for QA/370
+#
+
+if which sar >/dev/null 2>&1
+then
+ :
+else
+ echo "Error: sar not installed"
+ exit 1
+fi
+
+version=`sar -V 2>&1 | sed -n -e '/sysstat version /s/.* //p'`
+if [ -z "$version" ]
+then
+ echo "Arrgh ... cannot extract version from sar -V output ..."
+ sar -V
+ exit 1
+fi
+
+if [ -f sa-sysstat-$version ]
+then
+ echo "Error: data file sa-sysstat-$version already exists!"
+ exit 1
+fi
+
+sadc=""
+[ -x /usr/lib/sa/sadc ] && sadc=/usr/lib/sa/sadc
+[ -x /usr/lib64/sa/sadc ] && sadc=/usr/lib64/sa/sadc
+[ -x /usr/lib/sysstat/sadc ] && sadc=/usr/lib/sysstat/sadc
+if [ "X$sadc" = X ]
+then
+ echo "Error: cannot find sadc in any of the known places"
+ exit 1
+fi
+
+# collect data every 5 secs for 3 mins
+echo -n "Creating sa-sysstat-$version ..."
+$sadc -S XALL 5 36 sa-sysstat-$version
+echo
+
+exit 0
+
diff --git a/qa/src/mksample_expr b/qa/src/mksample_expr
new file mode 100755
index 0000000..d813189
--- /dev/null
+++ b/qa/src/mksample_expr
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# remake the sample_expr archive ... that is intended to be checked in
+# and not remade, this script is simply a record of it was created.
+#
+# sample_expr is used in the evaluation of derived metrics to confirm
+# the values are deterministic with known input values
+#
+
+tmp=/var/tmp/$$
+rm -f $tmp.*
+trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
+
+. $PCP_DIR/etc/pcp.env
+
+cat <<End-of-File >>$tmp.config
+log mandatory on default {
+ sample.mirage
+ sample.mirage_longlong
+ sample.byte_rate
+ sample.byte_rate_perhour
+ sample.byte_ctr
+ sample.kbyte_ctr
+ sample.scale_step
+}
+End-of-File
+
+rm -f sample_expr.* pmlogger.log
+
+pmlogger -t 0.5sec -c $tmp.config -s 10 sample_expr
+
+cat pmlogger.log
diff --git a/qa/src/mktzchange b/qa/src/mktzchange
new file mode 100755
index 0000000..f69217f
--- /dev/null
+++ b/qa/src/mktzchange
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Script to recreate the tzshift series of archives
+#
+
+. ../common.rc # for $sudo, $tmp, $here and pcp.env
+
+if make qa_timezone.so
+then
+ :
+else
+ echo "make qa_timezone.so failed ... I give up!"
+ exit 1
+fi
+
+$sudo $PCP_RC_DIR/pcp stop
+
+[ -d $PCP_RUN_DIR ] && $sudo chmod 777 $PCP_RUN_DIR
+
+for hr in 10 11 12
+do
+ export PCPQA_TZ=EST-$hr
+ export LD_PRELOAD=`pwd`/qa_timezone.so
+ pmcd &
+ rm -f tzchange-$hr-*
+ for a in a b
+ do
+ echo "log mandatory on 200msec sample.drift" | pmlogger tzchange-$hr-$a -s 4
+ done
+ $sudo $PCP_RC_DIR/pcp stop
+done
+
+[ -d $PCP_RUN_DIR ] && $sudo chmod 755 $PCP_RUN_DIR
+unset LD_PRELOAD
+$sudo $PCP_RC_DIR/pcp start
diff --git a/qa/src/mmv_genstats.c b/qa/src/mmv_genstats.c
new file mode 100644
index 0000000..e10e19f
--- /dev/null
+++ b/qa/src/mmv_genstats.c
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2009 Aconex. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/mmv_stats.h>
+
+static mmv_instances_t test_instances [] = {
+ { 0, "zero" },
+ { 1, "hero" },
+};
+
+static mmv_instances_t nest_instances [] = {
+ { 0, "bird" },
+ { 1, "tree" },
+ { 2, "eggs" },
+};
+
+static mmv_indom_t indoms[] = {
+ { .serial = 1,
+ .count = 2,
+ .instances = test_instances,
+ .shorttext = "We can be heroes",
+ .helptext = "We can be heroes, just for one day",
+ },
+ { .serial = 2,
+ .count = 3,
+ .instances = nest_instances,
+ /* exercise no-help-text case */
+ },
+};
+
+static mmv_metric_t metrics[] = {
+ { .name = "counter",
+ .item = 1,
+ .type = MMV_TYPE_U32,
+ .semantics = MMV_SEM_COUNTER,
+ .dimension = MMV_UNITS(0,0,1,0,0,PM_COUNT_ONE),
+ .shorttext = "test counter metric",
+ .helptext = "Yes, this is a test counter metric",
+ },
+ { .name = "discrete",
+ .item = 2,
+ .type = MMV_TYPE_I32,
+ .semantics = MMV_SEM_DISCRETE,
+ .dimension = MMV_UNITS(0,0,0,0,0,0),
+ .shorttext = "test discrete metric",
+ .helptext = "Yes, this is a test discrete metric",
+ },
+ { .name = "indom",
+ .item = 3,
+ .type = MMV_TYPE_U32,
+ .semantics = MMV_SEM_INSTANT,
+ .dimension = MMV_UNITS(0,0,1,0,0,PM_COUNT_ONE),
+ .indom = 1,
+ /* exercise no-help-text, no indom case */
+ },
+ { .name = "interval",
+ .item = 4,
+ .type = MMV_TYPE_ELAPSED,
+ .semantics = MMV_SEM_COUNTER,
+ .dimension = MMV_UNITS(0,1,0,0,PM_TIME_USEC,0),
+ .indom = 2,
+ /* exercise no-help-text case */
+ },
+ { .name = "string",
+ .item = 5,
+ .type = MMV_TYPE_STRING,
+ .dimension = MMV_UNITS(0,0,0,0,0,0),
+ .semantics = MMV_SEM_INSTANT,
+ /* exercise no-help-text, string value case */
+ },
+ { .name = "strings",
+ .item = 6,
+ .type = MMV_TYPE_STRING,
+ .semantics = MMV_SEM_INSTANT,
+ .dimension = MMV_UNITS(0,0,0,0,0,0),
+ .indom = 1,
+ .shorttext = "test string metrics",
+ .helptext = "Yes, this is a test string metric with instances",
+ },
+};
+
+static inline int indom_count() { return sizeof(indoms)/sizeof(indoms[0]); }
+static inline int metric_count() { return sizeof(metrics)/sizeof(metrics[0]); }
+
+int
+main(int ac, char * av[])
+{
+ pmAtomValue * atom;
+ char * file = (ac > 1) ? av[1] : "test";
+ int sleeper = (ac > 2) ? atoi(av[2]) : 0;
+ void * addr = mmv_stats_init(file, 0, 0,
+ metrics, metric_count(), indoms, indom_count());
+
+ if (!addr) {
+ fprintf(stderr, "mmv_stats_init failed : %s\n", strerror(errno));
+ return 1;
+ }
+
+ /* start an interval */
+ atom = mmv_stats_interval_start(addr, NULL, "interval", "eggs");
+
+ /* add ... */
+ mmv_stats_add(addr, "counter", "", 40);
+ /* add 1 ... */
+ mmv_stats_inc(addr, "counter", "");
+
+ /* set string values */
+ mmv_stats_set_string(addr, "string", "", "g'day world");
+ mmv_stats_set_strlen(addr, "strings", "zero", "00oo00oo00", 10);
+ mmv_stats_set_strlen(addr, "strings", "zero", "00oo00oo00", 6);
+ mmv_stats_set_strlen(addr, "strings", "hero", "ZERO", 4);
+ mmv_stats_set_strlen(addr, "strings", "hero", "", 0);
+
+ /* set discrete value ... */
+ mmv_stats_set(addr, "discrete", "", 41);
+ mmv_stats_inc(addr, "discrete", "");
+
+ /* add to instance or another if first doesn't exist */
+ mmv_stats_add_fallback(addr, "indom", "foobar", "unknown", 42);
+ mmv_stats_add_fallback(addr, "indom", "zero", "unknown", 43);
+
+ sleep(sleeper);
+
+ /* end an interval */
+ mmv_stats_interval_end(addr, atom);
+
+ return 0;
+}
diff --git a/qa/src/mmv_instances.c b/qa/src/mmv_instances.c
new file mode 100644
index 0000000..566a4c7
--- /dev/null
+++ b/qa/src/mmv_instances.c
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2009 Aconex. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/mmv_stats.h>
+
+static mmv_instances_t dogs[] = {
+ { 0, "Fido" },
+ { 1, "Brutus" },
+};
+
+static mmv_instances_t cats[] = {
+ { 10, "Tom" },
+};
+
+static mmv_instances_t mice[] = {
+ { 20, "Jerry" },
+};
+
+static mmv_indom_t indoms[] = {
+ { .serial = 1,
+ .shorttext = "Set of animal names",
+ .helptext = "Animal names - cats, dogs, and more",
+ },
+};
+
+static mmv_metric_t metrics[] = {
+ { .name = "animals.tag",
+ .item = 33,
+ .type = MMV_TYPE_U32,
+ .semantics = MMV_SEM_DISCRETE,
+ .dimension = MMV_UNITS(0,0,0,0,0,0),
+ .indom = 1,
+ .shorttext = "Animal tag identifiers",
+ .helptext = "Tags associated with each animal we have found",
+ },
+};
+
+static inline int dogs_count() { return sizeof(dogs)/sizeof(dogs[0]); }
+static inline int cats_count() { return sizeof(cats)/sizeof(cats[0]); }
+static inline int mice_count() { return sizeof(mice)/sizeof(mice[0]); }
+
+static inline int indom_count() { return sizeof(indoms)/sizeof(indoms[0]); }
+static inline int metric_count() { return sizeof(metrics)/sizeof(metrics[0]); }
+
+static inline int pets_cluster() { return 420; }
+
+int
+main(int argc, char * argv[])
+{
+ void * addr;
+ int i, error = 0;
+
+ if (argc == 2) {
+ if (strcmp(argv[1], "dogs") == 0) {
+ indoms[0].instances = dogs;
+ indoms[0].count = dogs_count();
+ }
+ else if (strcmp(argv[1], "cats") == 0) {
+ indoms[0].instances = cats;
+ indoms[0].count = cats_count();
+ }
+ else if (strcmp(argv[1], "mice") == 0) {
+ indoms[0].instances = mice;
+ indoms[0].count = mice_count();
+ }
+ else
+ error++;
+ }
+ else
+ error++;
+
+ if (error) {
+ fprintf(stderr, "Usage: mmv_instances <cats|dogs|mice>\n");
+ exit(1);
+ }
+
+ addr = mmv_stats_init(argv[1], pets_cluster(), MMV_FLAG_NOPREFIX,
+ metrics, metric_count(), indoms, indom_count());
+ if (!addr) {
+ fprintf(stderr, "mmv_stats_init failed: %s\n", strerror(errno));
+ return 1;
+ }
+
+ for (i = 0; i < indoms[0].count; i++) {
+ mmv_stats_set(addr, "animals.tag",
+ indoms[0].instances[i].external, indoms[0].instances[i].internal);
+ }
+
+ return 0;
+}
diff --git a/qa/src/mmv_noinit.c b/qa/src/mmv_noinit.c
new file mode 100644
index 0000000..7a8fa3e
--- /dev/null
+++ b/qa/src/mmv_noinit.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2010 Aconex. All Rights Reserved.
+ *
+ * This test emulates a client which directly overwrites the
+ * MMV data file without unlinking and recreating it (Parfait
+ * does this) - we're relying on the generation number change
+ * as the mechanism available to pmdammv to detect this.
+ *
+ * We use this test program in conjunction with a traditional
+ * (C) MMV API client (like mmv_genstats.c) to do this test.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/mmv_stats.h>
+#include <pcp/mmv_dev.h>
+#include <pcp/impl.h>
+
+static mmv_disk_header_t hdr = {
+ .magic = "MMV",
+ .version = MMV_VERSION,
+ .tocs = 2,
+};
+
+static mmv_disk_toc_t toc[] = {
+ { .type = MMV_TOC_METRICS, .count = 1, },
+ { .type = MMV_TOC_VALUES, .count = 1, },
+};
+
+static mmv_disk_metric_t metric = {
+ .name = "noinit",
+ .item = 1,
+ .type = MMV_TYPE_U32,
+ .semantics = MMV_SEM_COUNTER,
+ .dimension = MMV_UNITS(0,0,1,0,0,PM_COUNT_ONE),
+};
+
+static mmv_disk_value_t values;
+
+static size_t
+mmv_filesize(void)
+{
+ return sizeof(mmv_disk_header_t) +
+ sizeof(mmv_disk_toc_t) * 2 +
+ sizeof(mmv_disk_metric_t) +
+ sizeof(mmv_disk_value_t);
+}
+
+static void *
+mmv_noinit(const char *filename)
+{
+ char path[MAXPATHLEN];
+ size_t size = mmv_filesize();
+ int fd, sep = __pmPathSeparator();
+ void *addr = NULL;
+ int sts;
+
+ snprintf(path, sizeof(path), "%s%c" "mmv" "%c%s",
+ pmGetConfig("PCP_TMP_DIR"), sep, sep, filename);
+
+ fd = open(path, O_RDWR, 0644);
+ if (fd < 0) {
+ fprintf(stderr, "noinit: failed to open %s: %s\n",
+ path, strerror(errno));
+ return NULL;
+ }
+ sts = ftruncate(fd, size);
+ if (sts != 0) {
+ fprintf(stderr, "Error: ftruncate() returns %d\n", sts);
+ exit(1);
+ }
+ addr = __pmMemoryMap(fd, size, 1);
+
+ close(fd);
+ return addr;
+}
+
+static __uint64_t
+mmv_generation(void)
+{
+ struct timeval now;
+ __uint32_t gen1, gen2;
+
+ gettimeofday(&now, NULL);
+ gen1 = now.tv_sec;
+ gen2 = now.tv_usec;
+ return (((__uint64_t)gen1 << 32) | (__uint64_t)gen2);
+}
+
+int
+main(int ac, char * av[])
+{
+ char * file = (ac > 1) ? av[1] : "test";
+ void * addr = mmv_noinit(file);
+ char * data = addr;
+ __uint64_t gennum = mmv_generation();
+
+ if (!addr) {
+ perror("noinit");
+ return 1;
+ }
+
+ /*
+ * Write ondisk structures directly into file.
+ * fixing up offsets, etc, as we go.
+ */
+ hdr.g1 = gennum;
+ hdr.process = getpid();
+ memcpy(data, &hdr, sizeof(hdr));
+
+ data += sizeof(hdr);
+ toc[0].offset = sizeof(hdr) + sizeof(toc);
+ toc[1].offset = sizeof(hdr) + sizeof(toc) + sizeof(metric);
+ memcpy(data, &toc, sizeof(toc));
+
+ data += sizeof(toc);
+ memcpy(data, &metric, sizeof(metric));
+
+ values.value.ul = 42;
+ values.metric = sizeof(hdr) + sizeof(toc);
+ data += sizeof(metric);
+ memcpy(data, &values, sizeof(values));
+
+ /* "unlock" the file and bail out */
+ hdr.g2 = (__uint64_t) gennum;
+ memcpy(addr, &hdr, sizeof(hdr));
+ __pmMemoryUnmap(addr, mmv_filesize());
+ return 0;
+}
diff --git a/qa/src/mmv_nostats.c b/qa/src/mmv_nostats.c
new file mode 100644
index 0000000..d82bd60
--- /dev/null
+++ b/qa/src/mmv_nostats.c
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2010 Aconex. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/mmv_stats.h>
+
+int
+main(int ac, char * av[])
+{
+ char * file = (ac > 1) ? av[1] : "nostats";
+ void * addr = mmv_stats_init(file, 0, 0,
+ NULL, 0, NULL, 0);
+
+ if (!addr) {
+ fprintf(stderr, "mmv_stats_init failed : %s\n", strerror(errno));
+ return 1;
+ }
+
+ mmv_stats_add(addr, "counter", "", 40);
+
+ return 0;
+}
diff --git a/qa/src/mmv_poke.c b/qa/src/mmv_poke.c
new file mode 100644
index 0000000..65dda3c
--- /dev/null
+++ b/qa/src/mmv_poke.c
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2010 Aconex. All Rights Reserved.
+ * Modify values within an MMV data file for PCPQA.
+ */
+
+#include <errno.h>
+#include <sys/stat.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/mmv_stats.h>
+#include <pcp/mmv_dev.h>
+
+void *addr;
+
+void
+usage(void)
+{
+ fprintf(stderr,
+ "Usage: %s: [options] file\n\n"
+ "Options:\n"
+ " -f flag set flag in header (none, noprefix, process)\n"
+ " -p pid overwrite MMV file PID with given PID\n",
+ pmProgname);
+ exit(1);
+}
+
+void
+write_flags(char *flags)
+{
+ mmv_disk_header_t *hdr = (mmv_disk_header_t *)addr;
+
+ if (strcmp(flags, "noprefix") == 0)
+ hdr->flags |= MMV_FLAG_NOPREFIX;
+ if (strcmp(flags, "process") == 0)
+ hdr->flags |= MMV_FLAG_PROCESS;
+ if (strcmp(flags, "none") == 0)
+ hdr->flags = 0;
+ hdr->g1 = ++hdr->g2;
+}
+
+void
+write_pid(int pid)
+{
+ mmv_disk_header_t *hdr = (mmv_disk_header_t *)addr;
+
+ hdr->process = pid;
+ hdr->g1 = ++hdr->g2;
+}
+
+int
+main(int argc, char **argv)
+{
+ struct stat sbuf;
+ char *file, *flags = NULL;
+ int c, err = 0, pid = 0;
+
+ __pmSetProgname(argv[0]);
+ while ((c = getopt(argc, argv, "f:p:")) != EOF) {
+ switch (c) {
+ case 'f':
+ flags = optarg;
+ break;
+ case 'p':
+ pid = atoi(optarg);
+ break;
+ default:
+ err++;
+ }
+ }
+
+ if (err || argc != optind + 1)
+ usage();
+
+ file = argv[optind];
+
+ c = open(file, O_RDWR, 0644);
+ if (c < 0) {
+ fprintf(stderr, "Cannot open %s for writing: %s\n",
+ file, strerror(errno));
+ exit(1);
+ }
+ fstat(c, &sbuf);
+ addr = __pmMemoryMap(c, sbuf.st_size, 1);
+ close(c);
+
+ if (flags)
+ write_flags(flags);
+
+ if (pid)
+ write_pid(pid);
+
+ __pmMemoryUnmap(addr, sbuf.st_size);
+ exit(0);
+}
diff --git a/qa/src/moomba.client.0 b/qa/src/moomba.client.0
new file mode 100644
index 0000000..8eb0c80
--- /dev/null
+++ b/qa/src/moomba.client.0
Binary files differ
diff --git a/qa/src/moomba.client.index b/qa/src/moomba.client.index
new file mode 100644
index 0000000..d2fc0c3
--- /dev/null
+++ b/qa/src/moomba.client.index
Binary files differ
diff --git a/qa/src/moomba.client.meta b/qa/src/moomba.client.meta
new file mode 100644
index 0000000..b3557c2
--- /dev/null
+++ b/qa/src/moomba.client.meta
Binary files differ
diff --git a/qa/src/moomba.pmkstat.0 b/qa/src/moomba.pmkstat.0
new file mode 100644
index 0000000..e9ac65c
--- /dev/null
+++ b/qa/src/moomba.pmkstat.0
Binary files differ
diff --git a/qa/src/moomba.pmkstat.index b/qa/src/moomba.pmkstat.index
new file mode 100644
index 0000000..5f165fd
--- /dev/null
+++ b/qa/src/moomba.pmkstat.index
Binary files differ
diff --git a/qa/src/moomba.pmkstat.meta b/qa/src/moomba.pmkstat.meta
new file mode 100644
index 0000000..4483200
--- /dev/null
+++ b/qa/src/moomba.pmkstat.meta
Binary files differ
diff --git a/qa/src/multi-vm00.0 b/qa/src/multi-vm00.0
new file mode 100644
index 0000000..5bd6c58
--- /dev/null
+++ b/qa/src/multi-vm00.0
Binary files differ
diff --git a/qa/src/multi-vm00.index b/qa/src/multi-vm00.index
new file mode 100644
index 0000000..c8cb185
--- /dev/null
+++ b/qa/src/multi-vm00.index
Binary files differ
diff --git a/qa/src/multi-vm00.meta b/qa/src/multi-vm00.meta
new file mode 100644
index 0000000..8a9e02d
--- /dev/null
+++ b/qa/src/multi-vm00.meta
Binary files differ
diff --git a/qa/src/multi-vm01.0 b/qa/src/multi-vm01.0
new file mode 100644
index 0000000..004389b
--- /dev/null
+++ b/qa/src/multi-vm01.0
Binary files differ
diff --git a/qa/src/multi-vm01.index b/qa/src/multi-vm01.index
new file mode 100644
index 0000000..da46d70
--- /dev/null
+++ b/qa/src/multi-vm01.index
Binary files differ
diff --git a/qa/src/multi-vm01.meta b/qa/src/multi-vm01.meta
new file mode 100644
index 0000000..9685954
--- /dev/null
+++ b/qa/src/multi-vm01.meta
Binary files differ
diff --git a/qa/src/multi-vm02.0 b/qa/src/multi-vm02.0
new file mode 100644
index 0000000..fc07710
--- /dev/null
+++ b/qa/src/multi-vm02.0
Binary files differ
diff --git a/qa/src/multi-vm02.index b/qa/src/multi-vm02.index
new file mode 100644
index 0000000..b624e3a
--- /dev/null
+++ b/qa/src/multi-vm02.index
Binary files differ
diff --git a/qa/src/multi-vm02.meta b/qa/src/multi-vm02.meta
new file mode 100644
index 0000000..33d062f
--- /dev/null
+++ b/qa/src/multi-vm02.meta
Binary files differ
diff --git a/qa/src/multi-vm03.0 b/qa/src/multi-vm03.0
new file mode 100644
index 0000000..d97179d
--- /dev/null
+++ b/qa/src/multi-vm03.0
Binary files differ
diff --git a/qa/src/multi-vm03.index b/qa/src/multi-vm03.index
new file mode 100644
index 0000000..92e9a08
--- /dev/null
+++ b/qa/src/multi-vm03.index
Binary files differ
diff --git a/qa/src/multi-vm03.meta b/qa/src/multi-vm03.meta
new file mode 100644
index 0000000..8ca7c9b
--- /dev/null
+++ b/qa/src/multi-vm03.meta
Binary files differ
diff --git a/qa/src/multifetch.c b/qa/src/multifetch.c
new file mode 100644
index 0000000..c8c0748
--- /dev/null
+++ b/qa/src/multifetch.c
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 1994-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ char *cmd = argv[0];
+ int errflag = 0;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ char *logfile = (char *)0;
+ pmLogLabel label; /* get hostname for archives */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ int samples = 1000;
+ double delta = 1.0;
+ int i;
+ int j;
+ char *namelist[20];
+ pmID pmidlist[20];
+ int n;
+ int numpmid;
+ pmResult *resp;
+ char *endnum;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:l:n:s:t:T:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", cmd);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", cmd);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", cmd);
+ errflag++;
+ }
+ break;
+
+ case 't': /* delta seconds (double) */
+ delta = strtod(optarg, &endnum);
+ if (*endnum != '\0' || delta <= 0.0) {
+ fprintf(stderr, "%s: -t requires floating point argument\n", cmd);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -D debug standard PCP debug flag\n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n\
+ -n namespace use an alternative PMNS\n\
+ -s samples terminate after this many iterations\n\
+ -t delta sample interval in seconds(float) [default 1.0]\n",
+ cmd);
+ exit(1);
+ }
+
+ if (logfile != (char *)0) {
+ __pmOpenLog(cmd, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile\n", pmProgname);
+ }
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", cmd, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ cmd, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ cmd, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ cmd, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("extra argument[%d]: %s\n", optind, argv[optind]);
+ optind++;
+ }
+
+ i = 0;
+ /* we just want metrics from different pmdas here. choose ones
+ supported on both linux & irix */
+ namelist[i++] = "network.interface.in.bytes";
+ namelist[i++] = "network.interface.in.packets";
+ namelist[i++] = "network.interface.out.errors";
+ namelist[i++] = "network.interface.out.packets";
+ namelist[i++] = "simple.color";
+ namelist[i++] = "simple.time.user";
+ namelist[i++] = "simple.numfetch";
+ namelist[i++] = "sample.step";
+ namelist[i++] = "sample.lights";
+ namelist[i++] = "sample.magnitude";
+ numpmid = i;
+
+ n = pmLookupName(numpmid, namelist, pmidlist);
+ if (n < 0) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ for (j = 0; j < samples; j++) {
+ pmDesc desc;
+ for (i = 0; i < numpmid; i++) {
+ if ((n = pmLookupDesc(pmidlist[i], &desc)) < 0) {
+ fprintf(stderr, "pmFetch: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ }
+ for (i = 0; i < 5; i++) {
+ if ((n = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ fprintf(stderr, "pmFetch: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ pmFreeResult(resp);
+ }
+ }
+
+ exit(0);
+}
diff --git a/qa/src/multithread0.c b/qa/src/multithread0.c
new file mode 100644
index 0000000..390db5b
--- /dev/null
+++ b/qa/src/multithread0.c
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise __pmMultiThreaded()
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+static void *
+func(void *arg)
+{
+ if (__pmMultiThreaded(PM_SCOPE_DSO_PMDA))
+ printf("func: is multithreaded\n");
+ else
+ printf("func: is NOT multithreaded\n");
+ pthread_exit(NULL);
+}
+
+int
+main()
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ int sts;
+ char *msg;
+
+ if (__pmMultiThreaded(PM_SCOPE_DSO_PMDA))
+ printf("main0: is multithreaded\n");
+ else
+ printf("main0: is NOT multithreaded\n");
+
+ sts = pthread_create(&tid1, NULL, func, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+
+ if (__pmMultiThreaded(PM_SCOPE_DSO_PMDA))
+ printf("main1: is multithreaded\n");
+ else
+ printf("main1: is NOT multithreaded\n");
+
+ sts = pthread_create(&tid2, NULL, func, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+
+ if (__pmMultiThreaded(PM_SCOPE_DSO_PMDA))
+ printf("main2: is multithreaded\n");
+ else
+ printf("main2: is NOT multithreaded\n");
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+
+ exit(0);
+}
diff --git a/qa/src/multithread1.c b/qa/src/multithread1.c
new file mode 100644
index 0000000..c1fc355
--- /dev/null
+++ b/qa/src/multithread1.c
@@ -0,0 +1,228 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded checks for PM_CONTEXT_LOCAL
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+#if darwin_hack
+#include <dlfcn.h>
+#endif
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+static pthread_barrier_t barrier;
+
+static int ctx = -1;
+static char *namelist[] = { "sampledso.colour" };
+static pmID pmidlist[] = { 0 };
+static pmDesc desc;
+static char **instname;
+static int *instance;
+static pmResult *rp;
+
+static void
+func(void)
+{
+ int sts;
+ char **children;
+ char *p;
+
+ if ((sts = pmUseContext(ctx)) < 0) {
+ printf("pmUseContext(%d): %s\n", ctx, pmErrStr(sts));
+ pthread_exit(NULL);
+ }
+
+ /*
+ * expect this to fail for the second thread through when
+ * using PM_CONTEXT_LOCAL
+ */
+ if ((sts = pmDupContext()) < 0)
+ printf("pmDupContext: %s\n", pmErrStr(sts));
+ else
+ printf("pmDupContext: -> %d\n", sts);
+
+ if ((sts = pmUseContext(ctx)) < 0) {
+ printf("pmUseContext(%d): %s\n", ctx, pmErrStr(sts));
+ pthread_exit(NULL);
+ }
+ else
+ printf("pmUseContext(%d) -> %d\n", ctx, sts);
+
+ if ((sts = pmLookupName(1, namelist, pmidlist)) < 0)
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ else
+ printf("pmLookupName: -> %s\n", pmIDStr(pmidlist[0]));
+
+ pthread_barrier_wait(&barrier);
+
+ if (pmidlist[0] == 0)
+ pthread_exit("Loser failed to get pmid!");
+
+ if ((sts = pmGetPMNSLocation()) < 0)
+ printf("pmGetPMNSLocation: %s\n", pmErrStr(sts));
+ else
+ printf("pmGetPMNSLocation: -> %d\n", sts);
+
+ /* leaf node, expect no children */
+ if ((sts = pmGetChildrenStatus(namelist[0], &children, NULL)) < 0)
+ printf("pmGetChildrenStatus: %s\n", pmErrStr(sts));
+ else
+ printf("pmGetChildrenStatus: -> %d\n", sts);
+
+ if ((sts = pmLookupDesc(pmidlist[0], &desc)) < 0)
+ printf("pmLookupDesc: %s\n", pmErrStr(sts));
+ else
+ printf("pmLookupDesc: -> %s type=%s indom=%s\n", pmIDStr(desc.pmid), pmTypeStr(desc.type), pmInDomStr(desc.indom));
+
+ pthread_barrier_wait(&barrier);
+
+ if (desc.pmid == 0)
+ pthread_exit("Loser failed to get pmDesc!");
+
+ if ((sts = pmLookupText(pmidlist[0], PM_TEXT_ONELINE, &p)) < 0)
+ printf("pmLookupText: %s\n", pmErrStr(sts));
+ else
+ printf("pmLookupText: -> %s\n", p);
+
+ if ((sts = pmGetInDom(desc.indom, &instance, &instname)) < 0)
+ printf("pmGetInDom: %s: %s\n", pmInDomStr(desc.indom), pmErrStr(sts));
+ else
+ printf("pmGetInDom: -> %d\n", sts);
+
+ pthread_barrier_wait(&barrier);
+
+ if (instance == NULL)
+ pthread_exit("Loser failed to get indom!");
+
+ if ((sts = pmNameInDom(desc.indom, instance[0], &p)) < 0)
+ printf("pmNameInDom: %s\n", pmErrStr(sts));
+ else
+ printf("pmNameInDom: %d -> %s\n", instance[0], p);
+
+ if ((sts = pmLookupInDom(desc.indom, instname[0])) < 0)
+ printf("pmLookupInDom: %s\n", pmErrStr(sts));
+ else
+ printf("pmLookupInDom: %s -> %d\n", instname[0], sts);
+
+ if ((sts = pmFetch(1, pmidlist, &rp)) < 0)
+ printf("pmFetch: %s\n", pmErrStr(sts));
+ else
+ printf("pmFetch: -> OK\n");
+
+ pthread_barrier_wait(&barrier);
+
+ if (rp == NULL)
+ pthread_exit("Loser failed to get pmResult!");
+
+ if ((sts = pmStore(rp)) < 0)
+ printf("pmStore: %s\n", pmErrStr(sts));
+ else
+ printf("pmStore: -> OK\n");
+
+ pthread_exit(NULL);
+}
+
+static void *
+func1(void *arg)
+{
+ int sts;
+
+ if ((sts = pmNewContext(PM_CONTEXT_LOCAL, NULL)) < 0)
+ printf("pmNewContext: %s\n", pmErrStr(sts));
+ else {
+ ctx = sts;
+ printf("pmNewContext: -> %d\n", ctx);
+ }
+
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ func();
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static void *
+func2(void *arg)
+{
+ int sts;
+
+ pthread_barrier_wait(&barrier);
+
+ /*
+ * expect this to fail for the second thread through when
+ * using PM_CONTEXT_LOCAL
+ */
+ if ((sts = pmNewContext(PM_CONTEXT_LOCAL, NULL)) < 0)
+ printf("pmNewContext: %s\n", pmErrStr(sts));
+ else {
+ ctx = sts;
+ printf("pmNewContext: -> %d\n", ctx);
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ func();
+ /*NOTREACHED*/
+ return NULL;
+}
+
+int
+main()
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ int sts;
+ char *msg;
+
+#if darwin_hack
+ /*
+ * This is just too bizarre!
+ * On Mac OS X, if one falls into the "CoreFoundation" libraries
+ * in a thread, without first having run the initialization code
+ * from the mainline, you die with a SIGTRAP! Calling dlopen() with
+ * doomed to fail parameters suffices.
+ *
+ * See also the -framework CoreFoundation glue needed in
+ * GNUmakefile.
+ *
+ * I am not making this up, check out
+ * http://openradar.appspot.com/7209349
+ */
+ dlopen("/no/such/dso", RTLD_LAZY);
+#endif
+
+ sts = pthread_barrier_init(&barrier, NULL, 2);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("pthread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("pthread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+
+ if (rp != NULL)
+ pmFreeResult(rp);
+
+ exit(0);
+}
diff --git a/qa/src/multithread2.c b/qa/src/multithread2.c
new file mode 100644
index 0000000..238241f
--- /dev/null
+++ b/qa/src/multithread2.c
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2012-2013 Red Hat.
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded checks for PM_SCOPE_AF and PM_SCOPE_ACL
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+#include "localconfig.h"
+
+#if PCP_VER >= 3611
+__pmSockAddr *addr;
+#else
+__pmIPAddr addr;
+#endif
+
+static pthread_barrier_t barrier;
+
+static void
+wakeup(int tag, void *data)
+{
+ printf("Woops, wakeup(%d, %p) called?\n", tag, data);
+}
+
+static void *
+func1(void *arg)
+{
+ int sts;
+ int afid;
+ struct timeval when = { 1000, 0 };
+ char *fn = "func1";
+ unsigned int op;
+
+ afid = __pmAFregister(&when, NULL, wakeup);
+ if (afid >= 0)
+ printf("%s: __pmAFregister -> OK\n", fn);
+ else
+ printf("%s: __pmAFregister -> %s\n", fn, pmErrStr(afid));
+ sts = __pmAFunregister(afid);
+ if (sts >= 0)
+ printf("%s: __pmAFunregister -> OK\n", fn);
+ else
+ printf("%s: __pmAFunregister -> %s\n", fn, pmErrStr(sts));
+
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ sts = __pmAccAddOp(1);
+ if (sts == 0)
+ printf("%s: __pmAccAddOp(1) -> OK\n", fn);
+ else
+ printf("%s: __pmAccAddOp(1) -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccAddOp(2);
+ if (sts == 0)
+ printf("%s: __pmAccAddOp(2) -> OK\n", fn);
+ else
+ printf("%s: __pmAccAddOp(2) -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccAddHost("localhost", 1, 2, 3);
+ if (sts == 0)
+ printf("%s: __pmAccAddHost -> OK\n", fn);
+ else
+ printf("%s: __pmAccAddHost -> %s\n", fn, pmErrStr(sts));
+#if PCP_VER >= 3801
+ putc('\n', stdout);
+#endif
+ __pmAccDumpHosts(stdout);
+#if PCP_VER >= 3801
+ putc('\n', stdout);
+#endif
+ sts = __pmAccSaveHosts();
+ if (sts == 0)
+ printf("%s: __pmAccSaveHosts -> OK\n", fn);
+ else
+ printf("%s: __pmAccSaveHosts -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccRestoreHosts();
+ if (sts == 0)
+ printf("%s: __pmAccRestoreHosts -> OK\n", fn);
+ else
+ printf("%s: __pmAccRestoreHosts -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccAddClient(addr, &op);
+ if (sts == 0)
+ printf("%s: __pmAccAddClient -> %d\n", fn, op);
+ else
+ printf("%s: __pmAccAddClient -> %s\n", fn, pmErrStr(sts));
+
+ pthread_barrier_wait(&barrier);
+
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ int sts;
+ int afid;
+ struct timeval when = { 1000, 0 };
+ char *fn = "func2";
+ unsigned int op;
+
+ pthread_barrier_wait(&barrier);
+
+ afid = __pmAFregister(&when, NULL, wakeup);
+ if (afid >= 0)
+ printf("%s: __pmAFregister -> OK\n", fn);
+ else
+ printf("%s: __pmAFregister -> %s\n", fn, pmErrStr(afid));
+ sts = __pmAFunregister(afid);
+ if (sts >= 0)
+ printf("%s: __pmAFunregister -> OK\n", fn);
+ else
+ printf("%s: __pmAFunregister -> %s\n", fn, pmErrStr(sts));
+
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ sts = __pmAccAddOp(1);
+ if (sts == 0)
+ printf("%s: __pmAccAddOp(1) -> OK\n", fn);
+ else
+ printf("%s: __pmAccAddOp(1) -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccAddOp(2);
+ if (sts == 0)
+ printf("%s: __pmAccAddOp(2) -> OK\n", fn);
+ else
+ printf("%s: __pmAccAddOp(2) -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccAddHost("localhost", 1, 2, 3);
+ if (sts == 0)
+ printf("%s: __pmAccAddHost -> OK\n", fn);
+ else
+ printf("%s: __pmAccAddHost -> %s\n", fn, pmErrStr(sts));
+ /* expect an error here - so no need for version-specific EOLs */
+ __pmAccDumpHosts(stdout);
+ sts = __pmAccSaveHosts();
+ if (sts == 0)
+ printf("%s: __pmAccSaveHosts -> OK\n", fn);
+ else
+ printf("%s: __pmAccSaveHosts -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccRestoreHosts();
+ if (sts == 0)
+ printf("%s: __pmAccRestoreHosts -> OK\n", fn);
+ else
+ printf("%s: __pmAccRestoreHosts -> %s\n", fn, pmErrStr(sts));
+ sts = __pmAccAddClient(addr, &op);
+ if (sts == 0)
+ printf("%s: __pmAccAddClient -> %d\n", fn, op);
+ else
+ printf("%s: __pmAccAddClient -> %s\n", fn, pmErrStr(sts));
+
+ pthread_exit(NULL);
+}
+
+int
+main()
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ int sts;
+ char *msg;
+
+#if PCP_VER >= 3702
+ addr = __pmLoopBackAddress(AF_INET);
+#elif PCP_VER >= 3611
+ addr = __pmLoopBackAddress();
+#else
+ addr = __pmLoopbackAddress();
+#endif
+
+ sts = pthread_barrier_init(&barrier, NULL, 2);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ /* only need this to initialize library mutexes */
+ if ((sts = pmNewContext(PM_CONTEXT_LOCAL, NULL)) < 0) {
+ printf("pmNewContext: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+
+#if PCP_VER >= 3611
+ __pmSockAddrFree(addr);
+#endif
+ exit(0);
+}
diff --git a/qa/src/multithread3.c b/qa/src/multithread3.c
new file mode 100644
index 0000000..c31ee57
--- /dev/null
+++ b/qa/src/multithread3.c
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded support for local PMNS functions
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+static pthread_barrier_t barrier;
+
+static char *pmnsfile;
+static char pmns[] = "#undef EXTRA\n\
+root {\n\
+ a\n\
+ b 1:0:0\n\
+ c 2:0:0\n\
+#ifdef EXTRA\n\
+ d\n\
+ e 4:0:0\n\
+#endif\n\
+}\n\
+a {\n\
+ one 0:0:0\n\
+ two 0:1:0\n\
+ three\n\
+}\n\
+a.three {\n\
+ foo 0:2:0\n\
+ bar 0:2:1\n\
+}\n\
+#ifdef EXTRA\n\
+d {\n\
+ mumble 3:0:0\n\
+ f\n\
+}\n\
+d.f {\n\
+ fumble 3:0:1\n\
+}\n\
+#endif\n\
+";
+
+
+static void *
+func1(void *arg)
+{
+ int sts;
+ char *fn = "func1";
+ char **offspring;
+ int *status;
+ int i;
+ int j;
+ char *namelist[] = { "b", "a.three.foo", "d.f.fumble" };
+ pmID pmidlist[3];
+
+ pthread_barrier_wait(&barrier);
+
+ __pmDumpNameSpace(stdout, 1);
+
+ sts = pmGetChildrenStatus("", &offspring, &status);
+ if (sts >= 0) {
+ printf("%s: pmGetChildrenStatus -> %d\n", fn, sts);
+ for (i = 0; i < sts; i++) {
+ printf("[%d] %s %s\n", i, offspring[i], status[i] == PMNS_LEAF_STATUS ? "leaf" : "non-leaf");
+ }
+ free(offspring);
+ free(status);
+ }
+ else
+ printf("%s: pmGetChildrenStatus -> %s\n", fn, pmErrStr(sts));
+
+ for (i = 0; i < 5; i++) {
+ pthread_barrier_wait(&barrier);
+ sts = pmLookupName(sizeof(namelist)/sizeof(namelist[0]), namelist, pmidlist);
+ if (sts < 0)
+ printf("%s: pmGetChildrenStatus[%d] -> %s\n", fn, i, pmErrStr(sts));
+ else {
+ for (j = 0; j < sizeof(namelist)/sizeof(namelist[0]); j++) {
+ printf("%s: [%d] %s -> %s", fn, i, namelist[j], pmIDStr(pmidlist[j]));
+ if (pmidlist[j] == PM_ID_NULL)
+ printf("\n");
+ else {
+ char *name;
+ sts = pmNameID(pmidlist[j], &name);
+ if (sts < 0)
+ printf(": pmNameID -> %s\n", pmErrStr(sts));
+ else {
+ printf(" -> %s\n", name);
+ free(name);
+ }
+ }
+ }
+ }
+ pthread_barrier_wait(&barrier);
+ }
+
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ int sts;
+ char *fn = "func2";
+ char *p;
+ FILE *f;
+
+ pthread_barrier_wait(&barrier);
+
+ /* iter 0 */
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ /* iter 1 */
+ pmUnloadNameSpace();
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ /* iter 2 */
+ if ((sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: pmLoadNameSpace: [reload] %s\n", fn, pmErrStr(sts));
+ exit(1);
+ }
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ /* iter 3 */
+ pmUnloadNameSpace();
+ for (p = pmns; *p; p++) {
+ if (*p == 'u') {
+ *p++ = 'd';
+ *p++ = 'e';
+ *p++ = 'f';
+ *p++ = 'i';
+ *p++ = 'n';
+ *p++ = 'e';
+ break;
+ }
+ }
+ if ((f = fopen(pmnsfile, "w")) == NULL) {
+ printf("fopen: %s: failed: %s\n", pmnsfile, pmErrStr(-oserror()));
+ exit(1);
+ }
+ if (fwrite(pmns, strlen(pmns), 1, f) != 1) {
+ printf("fwrite: %s: failed: %s\n", pmnsfile, pmErrStr(-oserror()));
+ exit(1);
+ }
+ fclose(f);
+ if ((sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: pmLoadNameSpace: [extra reload] %s\n", fn, pmErrStr(sts));
+ exit(1);
+ }
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ /* iter 4 */
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_wait(&barrier);
+
+ pthread_exit(NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ int sts;
+ char *msg;
+ FILE *f;
+
+ if (argc != 2) {
+ printf("Usage: multithread3 tmpfile\n");
+ exit(1);
+ }
+ pmnsfile = argv[1];
+ if ((f = fopen(pmnsfile, "w")) == NULL) {
+ printf("fopen: %s: failed: %s\n", pmnsfile, pmErrStr(-oserror()));
+ exit(1);
+ }
+ if (fwrite(pmns, strlen(pmns), 1, f) != 1) {
+ printf("fwrite: %s: failed: %s\n", pmnsfile, pmErrStr(-oserror()));
+ exit(1);
+ }
+ fclose(f);
+
+ sts = pthread_barrier_init(&barrier, NULL, 2);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("pmLoadNameSpace: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+
+ exit(0);
+}
diff --git a/qa/src/multithread4.c b/qa/src/multithread4.c
new file mode 100644
index 0000000..110ba08
--- /dev/null
+++ b/qa/src/multithread4.c
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded support for traverse and load/unload
+ * PMNS operations
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+#define ITER 10
+
+static int nmetric;
+
+void
+dometric(const char *name)
+{
+ nmetric++;
+}
+
+static void *
+func1(void *arg)
+{
+ int sts;
+ int i;
+ char msgbuf[PM_MAXERRMSGLEN];
+
+ for (i = 0; i < ITER; i++) {
+ nmetric = 0;
+ sts = pmTraversePMNS("", dometric);
+ if (sts >= 0)
+ printf("traverse: found %d metrics, sts %d\n", nmetric, sts);
+ else {
+ /*
+ * expect 0 metrics and PM_ERR_NOPMNS if the pmTraversePMNS
+ * gets in between the pmUnloadPMNS and the pmLoadPMNS in the
+ * other thread
+ */
+ if (nmetric > 0 || sts != PM_ERR_NOPMNS)
+ printf("traverse: found %d metrics, sts %s\n", nmetric, pmErrStr_r(sts, msgbuf, PM_MAXERRMSGLEN));
+ else {
+ /*
+ * nmetric == 0 && sts == PM_ERR_NOPMNS, so try again ...
+ * won't loop forever because eventually func2() will
+ * finish
+ */
+ i--;
+ }
+ }
+ }
+
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ int sts;
+ char *fn = "func2";
+ int i;
+ char msgbuf[PM_MAXERRMSGLEN];
+
+ for (i = 0; i < ITER; i++) {
+ pmUnloadNameSpace();
+ if ((sts = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ printf("%s: pmLoadNameSpace[%d]: %s\n", fn, i, pmErrStr_r(sts, msgbuf, PM_MAXERRMSGLEN));
+ exit(1);
+ }
+ }
+
+ pthread_exit(NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ int sts;
+ char *msg;
+ unsigned int in[PDU_MAX+1];
+ unsigned int out[PDU_MAX+1];
+ int i;
+ char msgbuf[PM_MAXERRMSGLEN];
+
+ setvbuf(stdout, NULL, _IONBF, 0);
+
+ if (argc != 1) {
+ printf("Usage: multithread4\n");
+ exit(1);
+ }
+
+ for (i = 0; i <= PDU_MAX; i++) {
+ in[i] = out[i] = 0;
+ }
+ __pmSetPDUCntBuf(in, out);
+
+ if ((sts = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ printf("%s: pmLoadNameSpace: %s\n", argv[0], pmErrStr_r(sts, msgbuf, PM_MAXERRMSGLEN));
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+
+ printf("Total PDU counts\n");
+ printf("in:");
+ for (i = 0; i <= PDU_MAX; i++)
+ printf(" %d", in[i]);
+ putchar('\n');
+ printf("out:");
+ for (i = 0; i <= PDU_MAX; i++)
+ printf(" %d", out[i]);
+ putchar('\n');
+
+ exit(0);
+}
diff --git a/qa/src/multithread5.c b/qa/src/multithread5.c
new file mode 100644
index 0000000..46165b6
--- /dev/null
+++ b/qa/src/multithread5.c
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded multiple host contexts with pmLookupDesc()
+ * as the simplest possible case
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+#define NMETRIC 5
+
+static char *namelist[NMETRIC] = {
+ "sample.seconds",
+ "sampledso.milliseconds",
+ "sample.ulonglong.bin_ctr",
+ "pmcd.cputime.total",
+ "pmcd.buf.alloc",
+};
+static pmID pmidlist[NMETRIC];
+
+static pthread_barrier_t barrier;
+
+static int ctx1;
+static int ctx2;
+static int ctx3;
+
+static void
+foo(FILE *f, char *fn, int i)
+{
+ pmDesc desc;
+ char strbuf[60];
+ int sts;
+
+ sts = pmLookupDesc(pmidlist[i], &desc);
+ if (sts < 0) {
+ fprintf(f, "%s: pmLookupDesc[%s] -> %s\n", fn, pmIDStr_r(pmidlist[i], strbuf, sizeof(strbuf)), pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ else if (pmidlist[i] != desc.pmid) {
+ fprintf(f, "%s: pmLookupDesc: Expecting PMID: %s", fn, pmIDStr_r(pmidlist[i], strbuf, sizeof(strbuf)));
+ fprintf(f, " got: %s\n", pmIDStr_r(desc.pmid, strbuf, sizeof(strbuf)));
+ pthread_exit("botch");
+ }
+ else {
+ fprintf(f, "%s: %s (%s) ->", fn, namelist[i], pmIDStr_r(pmidlist[i], strbuf, sizeof(strbuf)));
+ fprintf(f, " %s", pmTypeStr_r(desc.type, strbuf, sizeof(strbuf)));
+ fprintf(f, " %s", pmInDomStr_r(desc.indom, strbuf, sizeof(strbuf)));
+ if (desc.sem == PM_SEM_COUNTER) fprintf(f, " counter");
+ else if (desc.sem == PM_SEM_INSTANT) fprintf(f, " instant");
+ else if (desc.sem == PM_SEM_DISCRETE) fprintf(f, " discrete");
+ else fprintf(f, " sem-%d", desc.sem);
+ fprintf(f, " %s\n", pmUnitsStr_r(&desc.units, strbuf, sizeof(strbuf)));
+ }
+}
+
+static void *
+func1(void *arg)
+{
+ char *fn = "func1";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func1.out", "w")) == NULL) {
+ perror("func1 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx1);
+ if (j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx1, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i++)
+ foo(f, fn, i);
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ char *fn = "func2";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func2.out", "w")) == NULL) {
+ perror("func2 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx2);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx2, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = NMETRIC-1; i >= 0; i--)
+ foo(f, fn, i);
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func3(void *arg)
+{
+ char *fn = "func3";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func3.out", "w")) == NULL) {
+ perror("func3 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx3);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx3, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i += 2)
+ foo(f, fn, i);
+ for (i = 1; i < NMETRIC; i += 2)
+ foo(f, fn, i);
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ pthread_t tid3;
+ int sts;
+ char *msg;
+ int errflag = 0;
+ int c;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind == argc || argc-optind > 3) {
+ fprintf(stderr, "Usage: %s [-D...] host1 [host2 [host3]]\n", pmProgname);
+ exit(1);
+ }
+
+ ctx1 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx1 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx1));
+ exit(1);
+ }
+ optind++;
+
+ if (optind < argc) {
+ ctx2 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx2 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx2 = ctx1;
+
+ if (optind < argc) {
+ ctx3 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx3 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx3 = ctx2;
+
+ sts = pmLookupName(NMETRIC, namelist, pmidlist);
+ if (sts != NMETRIC) {
+ int i;
+ printf("Error: pmLookupName -> %s\n", pmErrStr(sts));
+ for (i = 0; i < NMETRIC; i++) {
+ printf(" %s -> %s\n", namelist[i], pmIDStr(pmidlist[i]));
+ }
+ exit(1);
+ }
+
+ sts = pthread_barrier_init(&barrier, NULL, 3);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid3, NULL, func3, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid3: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+ pthread_join(tid3, (void *)&msg);
+ if (msg != NULL) printf("tid3: %s\n", msg);
+ pthread_cancel(tid1);
+ pthread_cancel(tid2);
+ pthread_cancel(tid3);
+
+ exit(0);
+}
diff --git a/qa/src/multithread6.c b/qa/src/multithread6.c
new file mode 100644
index 0000000..ade1d9f
--- /dev/null
+++ b/qa/src/multithread6.c
@@ -0,0 +1,299 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded multiple host contexts with instance domain
+ * functions
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+#define NMETRIC 5
+
+static char *namelist[NMETRIC] = {
+ "sample.colour",
+ "pmcd.control.register",
+ "sampledso.bin",
+ "sample.ulonglong.ten",
+ "pmcd.buf.alloc",
+};
+static pmID pmidlist[NMETRIC];
+static pmDesc desclist[NMETRIC];
+
+static pthread_barrier_t barrier;
+
+static int ctx1;
+static int ctx2;
+static int ctx3;
+
+static void
+foo(FILE *f, char *fn, int i)
+{
+ int sts;
+ int j;
+ int numinst;
+ int *inst;
+ char **name;
+ char *tmp;
+
+
+ if (desclist[i].indom == PM_INDOM_NULL) {
+ fprintf(f, "%s: %s: singular\n", fn, namelist[i]);
+ return;
+ }
+ if ((sts = pmGetInDom(desclist[i].indom, &inst, &name)) < 0) {
+ fprintf(f, "%s: %s: pmGetInDom Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ numinst = sts;
+ fprintf(f, "%s: %s: indom contains %d instances: ", fn, namelist[i], numinst);
+ for (j = 0; j < numinst; j++) {
+ if ((sts = pmNameInDom(desclist[i].indom, inst[j], &tmp)) < 0) {
+ fprintf(f, "\n%s: inst %d: pmNameInDom Error: %s\n", fn, inst[j], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ if (strcmp(tmp, name[j]) != 0) {
+ fprintf(f, "\n%s: inst %d: expecting \"%s\", got \"%s\"\n", fn, inst[j], name[j], tmp);
+ pthread_exit("botch");
+ }
+ fputc('i', f);
+ free(tmp);
+ }
+ fputc(' ', f);
+ for (j = 0; j < numinst; j++) {
+ if ((sts = pmLookupInDom(desclist[i].indom, name[j])) < 0) {
+ fprintf(f, "\n%s: inst \"%s\": pmLookupInDom Error: %s\n", fn, name[j], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ if (sts != inst[j]) {
+ fprintf(f, "\n%s: inst \"%s\": expecting %d, got %d\n", fn, name[j], inst[j], sts);
+ pthread_exit("botch");
+ }
+ fputc('n', f);
+ }
+ fputc('\n', f);
+
+ free(inst);
+ free(name);
+}
+
+static void *
+func1(void *arg)
+{
+ char *fn = "func1";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func1.out", "w")) == NULL) {
+ perror("func1 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx1);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx1, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i++) {
+ foo(f, fn, i);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ char *fn = "func2";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func2.out", "w")) == NULL) {
+ perror("func2 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx2);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx2, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = NMETRIC-1; i >= 0; i--) {
+ foo(f, fn, i);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func3(void *arg)
+{
+ char *fn = "func3";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func3.out", "w")) == NULL) {
+ perror("func3 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx3);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx3, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i += 2)
+ foo(f, fn, i);
+ for (i = 1; i < NMETRIC; i += 2)
+ foo(f, fn, i);
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ pthread_t tid3;
+ int sts;
+ char *msg;
+ int errflag = 0;
+ int c;
+ int i;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind == argc || argc-optind > 3) {
+ fprintf(stderr, "Usage: %s [-D...] host1 [host2 [host3]]\n", pmProgname);
+ exit(1);
+ }
+
+ ctx1 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx1 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx1));
+ exit(1);
+ }
+ optind++;
+
+ if (optind < argc) {
+ ctx2 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx2 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx2 = ctx1;
+
+ if (optind < argc) {
+ ctx3 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx3 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx3 = ctx2;
+
+ sts = pmLookupName(NMETRIC, namelist, pmidlist);
+ if (sts != NMETRIC) {
+ printf("Error: pmLookupName -> %s\n", pmErrStr(sts));
+ for (i = 0; i < NMETRIC; i++) {
+ printf(" %s -> %s\n", namelist[i], pmIDStr(pmidlist[i]));
+ }
+ exit(1);
+ }
+
+ for (i = 0; i < NMETRIC; i++) {
+ if ((sts = pmLookupDesc(pmidlist[i], &desclist[i])) < 0) {
+ printf("Error: pmLookupDesc(%s) -> %s\n", namelist[i], pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ sts = pthread_barrier_init(&barrier, NULL, 3);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid3, NULL, func3, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid3: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+ pthread_join(tid3, (void *)&msg);
+ if (msg != NULL) printf("tid3: %s\n", msg);
+
+ exit(0);
+}
diff --git a/qa/src/multithread7.c b/qa/src/multithread7.c
new file mode 100644
index 0000000..067156e
--- /dev/null
+++ b/qa/src/multithread7.c
@@ -0,0 +1,342 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded multiple host contexts with profile and
+ * fetch functions
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+#define NMETRIC 5
+
+static char *namelist[NMETRIC] = {
+ "sample.colour",
+ "pmcd.control.register",
+ "sampledso.bin",
+ "sample.ulonglong.ten",
+ "pmcd.buf.alloc",
+};
+static pmID pmidlist[NMETRIC];
+static pmDesc desclist[NMETRIC];
+
+static pthread_barrier_t barrier;
+
+static int ctx1;
+static int ctx2;
+static int ctx3;
+
+static pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
+
+/*
+ * context use ...
+ *
+ * args tid1 tid2 tid3
+ * 1 0 0 0
+ * 2 0 1 1 <- needs app-level locking
+ * 3 0 1 2
+ */
+
+/*
+ * fetch pmidlist[i] ... pmidlist[NMETRIC-1]
+ */
+static void
+foo(FILE *f, char *fn, int i)
+{
+ int sts;
+ int j;
+ pmResult *rp;
+
+ if ((sts = pmFetch(NMETRIC-i, &pmidlist[i], &rp)) < 0) {
+ fprintf(f, "%s: %s ...: pmFetch Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ fprintf(f, "%s:", fn);
+ for (j = 0; j < rp->numpmid; j++)
+ fprintf(f, " %s: %d values", namelist[i+j], rp->vset[j]->numval);
+ fputc('\n', f);
+ pmFreeResult(rp);
+}
+
+static void *
+func1(void *arg)
+{
+ char *fn = "func1";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func1.out", "w")) == NULL) {
+ perror("func1 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx1);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx1, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i++) {
+ foo(f, fn, i);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ char *fn = "func2";
+ int i;
+ int j;
+ int sts;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func2.out", "w")) == NULL) {
+ perror("func2 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx2);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx2, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = NMETRIC-1; i >= 0; i--) {
+ if (ctx2 != ctx1) {
+ /*
+ * limit pmcd.control.register [1] in context 2
+ * - select 5 instances below
+ */
+ int instlist[] = { 0, 1, 2, 4, 8 };
+ pthread_mutex_lock(&mymutex);
+ if ((sts = pmDelProfile(desclist[1].indom, 0, NULL)) < 0) {
+ fprintf(f, "Error: pmDelProfile(%s) -> %s\n", namelist[1], pmErrStr(sts));
+ fclose(f);
+ pthread_exit("botch");
+ }
+ if ((sts = pmAddProfile(desclist[1].indom, sizeof(instlist)/sizeof(instlist[0]), instlist)) < 0) {
+ fprintf(f, "Error: pmAddProfile(%s) -> %s\n", namelist[1], pmErrStr(sts));
+ fclose(f);
+ pthread_exit("botch");
+ }
+ }
+ foo(f, fn, i);
+ if (ctx2 != ctx1)
+ pthread_mutex_unlock(&mymutex);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func3(void *arg)
+{
+ char *fn = "func3";
+ int i;
+ int j;
+ int sts;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func3.out", "w")) == NULL) {
+ perror("func3 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx3);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx3, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i += 2) {
+ if (ctx3 != ctx2) {
+ /*
+ * limit sampledso.bin [2] in context 3
+ * - exclude instances below, leaving 7 instances 200, ... 800
+ */
+ int instlist[] = { 100, 900 };
+ if ((sts = pmAddProfile(desclist[2].indom, 0, NULL)) < 0) {
+ fprintf(f, "Error: pmAddProfile(%s) -> %s\n", namelist[2], pmErrStr(sts));
+ fclose(f);
+ pthread_exit("botch");
+ }
+ if ((sts = pmDelProfile(desclist[2].indom, sizeof(instlist)/sizeof(instlist[0]), instlist)) < 0) {
+ fprintf(f, "Error: pmDelProfile(%s) -> %s\n", namelist[2], pmErrStr(sts));
+ fclose(f);
+ pthread_exit("botch");
+ }
+ }
+ else {
+ pthread_mutex_lock(&mymutex);
+ if ((sts = pmAddProfile(desclist[1].indom, 0, NULL)) < 0) {
+ fprintf(f, "Error: pmAddProfile(%s) -> %s\n", namelist[1], pmErrStr(sts));
+ fclose(f);
+ pthread_exit("botch");
+ }
+ }
+ foo(f, fn, i);
+ if (ctx3 == ctx2)
+ pthread_mutex_unlock(&mymutex);
+ }
+ for (i = 1; i < NMETRIC; i += 2) {
+ /* inherit instance profile from loop above */
+ if (ctx3 == ctx2) {
+ pthread_mutex_lock(&mymutex);
+ if ((sts = pmAddProfile(desclist[1].indom, 0, NULL)) < 0) {
+ fprintf(f, "Error: pmAddProfile(%s) -> %s\n", namelist[1], pmErrStr(sts));
+ fclose(f);
+ pthread_exit("botch");
+ }
+ }
+ foo(f, fn, i);
+ if (ctx3 == ctx2)
+ pthread_mutex_unlock(&mymutex);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ pthread_t tid3;
+ int sts;
+ char *msg;
+ int errflag = 0;
+ int c;
+ int i;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind == argc || argc-optind > 3) {
+ fprintf(stderr, "Usage: %s [-D...] host1 [host2 [host3]]\n", pmProgname);
+ exit(1);
+ }
+
+ ctx1 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx1 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx1));
+ exit(1);
+ }
+ optind++;
+
+ if (optind < argc) {
+ ctx2 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx2 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx2 = ctx1;
+
+ if (optind < argc) {
+ ctx3 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx3 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx3 = ctx2;
+
+ sts = pmLookupName(NMETRIC, namelist, pmidlist);
+ if (sts != NMETRIC) {
+ printf("Error: pmLookupName -> %s\n", pmErrStr(sts));
+ for (i = 0; i < NMETRIC; i++) {
+ printf(" %s -> %s\n", namelist[i], pmIDStr(pmidlist[i]));
+ }
+ exit(1);
+ }
+
+ for (i = 0; i < NMETRIC; i++) {
+ if ((sts = pmLookupDesc(pmidlist[i], &desclist[i])) < 0) {
+ printf("Error: pmLookupDesc(%s) -> %s\n", namelist[i], pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ sts = pthread_barrier_init(&barrier, NULL, 3);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid3, NULL, func3, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid3: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+ pthread_join(tid3, (void *)&msg);
+ if (msg != NULL) printf("tid3: %s\n", msg);
+
+ exit(0);
+}
diff --git a/qa/src/multithread8.c b/qa/src/multithread8.c
new file mode 100644
index 0000000..7d2dfd3
--- /dev/null
+++ b/qa/src/multithread8.c
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded multiple host contexts with help text
+ * functions
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+static char *namelist[] = {
+ "pmcd.control.register",
+ "pmcd.version",
+ "sampledso.bin",
+ "sample.longlong.one"
+};
+
+#define NMETRIC (sizeof(namelist)/sizeof(namelist[0]))
+static pmID pmidlist[NMETRIC];
+static pmDesc desclist[NMETRIC];
+
+static pthread_barrier_t barrier;
+
+static int ctx1;
+static int ctx2;
+static int ctx3;
+
+static void
+foo(FILE *f, char *fn, int i)
+{
+ int sts;
+ char *tmp;
+
+ if ((sts = pmLookupText(pmidlist[i], PM_TEXT_ONELINE, &tmp)) < 0) {
+ fprintf(f, "%s: %s: pmLookupText oneline Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ fprintf(f, "%s: %s: %d", fn, namelist[i], (int)strlen(tmp));
+ free(tmp);
+ if ((sts = pmLookupText(pmidlist[i], PM_TEXT_HELP, &tmp)) < 0) {
+ fprintf(f, "\n%s: %s: pmLookupText help Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ fprintf(f, " & %d", (int)strlen(tmp));
+ free(tmp);
+
+ if (desclist[i].indom != PM_INDOM_NULL) {
+ char strbuf[20];
+ if ((sts = pmLookupInDomText(desclist[i].indom, PM_TEXT_ONELINE, &tmp)) < 0) {
+ fprintf(f, "\n%s: %s: pmLookupInDomText %s oneline Error: %s\n", fn, namelist[i], pmInDomStr_r(desclist[i].indom, strbuf, sizeof(strbuf)), pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ fprintf(f, " %s: %d", pmInDomStr_r(desclist[i].indom, strbuf, sizeof(strbuf)), (int)strlen(tmp));
+ free(tmp);
+ if ((sts = pmLookupInDomText(desclist[i].indom, PM_TEXT_HELP, &tmp)) < 0) {
+ fprintf(f, "\n%s: %s: pmLookupInDomText %s help Error: %s\n", fn, namelist[i], pmInDomStr_r(desclist[i].indom, strbuf, sizeof(strbuf)), pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ fprintf(f, " & %d", (int)strlen(tmp));
+ free(tmp);
+ }
+ fputc('\n', f);
+}
+
+static void *
+func1(void *arg)
+{
+ char *fn = "func1";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func1.out", "w")) == NULL) {
+ perror("func1 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx1);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx1, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i++) {
+ foo(f, fn, i);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ char *fn = "func2";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func2.out", "w")) == NULL) {
+ perror("func2 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx2);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx2, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = NMETRIC-1; i >= 0; i--) {
+ foo(f, fn, i);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func3(void *arg)
+{
+ char *fn = "func3";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func3.out", "w")) == NULL) {
+ perror("func3 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx3);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx3, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i += 2)
+ foo(f, fn, i);
+ for (i = 1; i < NMETRIC; i += 2)
+ foo(f, fn, i);
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ pthread_t tid3;
+ int sts;
+ char *msg;
+ int errflag = 0;
+ int c;
+ int i;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind == argc || argc-optind > 3) {
+ fprintf(stderr, "Usage: %s [-D...] host1 [host2 [host3]]\n", pmProgname);
+ exit(1);
+ }
+
+ ctx1 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx1 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx1));
+ exit(1);
+ }
+ optind++;
+
+ if (optind < argc) {
+ ctx2 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx2 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx2 = ctx1;
+
+ if (optind < argc) {
+ ctx3 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx3 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx3 = ctx2;
+
+ sts = pmLookupName(NMETRIC, namelist, pmidlist);
+ if (sts != NMETRIC) {
+ printf("Error: pmLookupName -> %s\n", pmErrStr(sts));
+ for (i = 0; i < NMETRIC; i++) {
+ printf(" %s -> %s\n", namelist[i], pmIDStr(pmidlist[i]));
+ }
+ exit(1);
+ }
+
+ for (i = 0; i < NMETRIC; i++) {
+ if ((sts = pmLookupDesc(pmidlist[i], &desclist[i])) < 0) {
+ printf("Error: pmLookupDesc(%s) -> %s\n", namelist[i], pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ sts = pthread_barrier_init(&barrier, NULL, 3);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid3, NULL, func3, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid3: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+ pthread_join(tid3, (void *)&msg);
+ if (msg != NULL) printf("tid3: %s\n", msg);
+
+ exit(0);
+}
+
diff --git a/qa/src/multithread9.c b/qa/src/multithread9.c
new file mode 100644
index 0000000..f911cb9
--- /dev/null
+++ b/qa/src/multithread9.c
@@ -0,0 +1,387 @@
+/*
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ *
+ * exercise multi-threaded multiple host contexts with PMNS functions
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pthread.h>
+
+#ifndef HAVE_PTHREAD_BARRIER_T
+#include "pthread_barrier.h"
+#endif
+
+static char *namelist[] = {
+ "sample.secret", // non-leaf
+ "sampledso.bin",
+ "sample.longlong.one",
+ "pmcd.pmlogger" // non-leaf
+};
+
+#define NMETRIC (sizeof(namelist)/sizeof(namelist[0]))
+static pmID pmidlist[NMETRIC];
+static pmDesc desclist[NMETRIC];
+static char **chn[NMETRIC];
+static int leaf_chn[NMETRIC];
+static int nonleaf_chn[NMETRIC];
+/*
+ * values here come from
+ * pminfo sample.secret | wc -lc => 9 273 => 264
+ * pminfo pmcd.pmlogger | wc -lc => 4 84 => 80
+ */
+static int sum_traverse[NMETRIC] = { 264, 0, 0, 80 };
+
+static pthread_barrier_t barrier;
+
+static int ctx1;
+static int ctx2;
+static int ctx3;
+
+static int count1;
+static int count2;
+static int count3;
+
+static void
+dometric(const char *name, void *closure)
+{
+ *((int *)closure) += strlen(name);
+}
+
+static void
+foo(FILE *f, char *fn, int i, void *closure)
+{
+ int sts;
+ int j;
+ int leaf;
+ pmID pmids[NMETRIC];
+ char *tmp;
+ char **tmpset;
+ int *stsset;
+ char strbuf[20];
+
+ if ((sts = pmLookupName(NMETRIC-i, &namelist[i], pmids)) < 0) {
+ if (sts != PM_ERR_NONLEAF) {
+ fprintf(f, "%s: %s ...: pmLookupName Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ }
+ for (j = i; j < NMETRIC; j++) {
+ if (pmids[j-i] != pmidlist[j]) {
+ fprintf(f, "%s: %s: Botch: expecting %s", fn, namelist[j], pmIDStr_r(pmidlist[j], strbuf, sizeof(strbuf)));
+ fprintf(f, ", got %s\n", pmIDStr_r(pmids[j-i], strbuf, sizeof(strbuf)));
+ pthread_exit("botch");
+ }
+ }
+ fprintf(f, "%s: %s ... pmLookupName OK\n", fn, namelist[i]);
+
+ fprintf(f, "%s: %s", fn, namelist[i]);
+ if (pmidlist[i] != PM_ID_NULL) {
+ /* leaf node in PMNS */
+ if ((sts = pmNameID(pmidlist[i], &tmp)) < 0) {
+ fprintf(f, "\n%s: %s ...: pmNameID Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ if (strcmp(tmp, namelist[i]) != 0) {
+ fprintf(f, "\n%s: %s: Botch: expecting %s, got %s\n", fn, pmIDStr_r(pmidlist[i], strbuf, sizeof(strbuf)), namelist[i], tmp);
+ pthread_exit("botch");
+ }
+ free(tmp);
+ fprintf(f, " pmNameID OK");
+ if ((sts = pmNameAll(pmidlist[i], &tmpset)) < 0) {
+ fprintf(f, "\n%s: %s ...: pmNameAll Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ if (sts != 1) {
+ fprintf(f, "\n%s: %s ...: pmNameAll Botch: expecting %d, got %d\n", fn, namelist[i], 1, sts);
+ pthread_exit("botch");
+ }
+ if (strcmp(tmpset[0], namelist[i]) != 0) {
+ fprintf(f, "\n%s: %s: Botch: expecting %s, got %s\n", fn, pmIDStr_r(pmidlist[i], strbuf, sizeof(strbuf)), namelist[i], tmpset[0]);
+ pthread_exit("botch");
+ }
+ free(tmpset);
+ fprintf(f, " pmNameAll OK");
+ }
+ else {
+ /* non-leaf node in PMNS */
+ int keep = 0;
+ if ((sts = pmGetChildrenStatus(namelist[i], &tmpset, &stsset)) < 0) {
+ fprintf(f, "\n%s: %s ...: pmGetChildrenStatus Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ leaf = 0;
+ for (j = 0; j < sts; j++) {
+ if (stsset[j] == PMNS_LEAF_STATUS) leaf++;
+ }
+ if (leaf_chn[i] == -1) {
+ leaf_chn[i] = leaf;
+ nonleaf_chn[i] = sts - leaf;
+ chn[i] = tmpset;
+ keep = 1;
+ }
+ else {
+ if (leaf != leaf_chn[i] || sts - leaf != nonleaf_chn[i]) {
+ fprintf(f, "\n%s: %s: Botch: expecting %d leaf & %d non-leaf, got %d leaf & %d non-leaf\n", fn, namelist[i], leaf_chn[i], nonleaf_chn[i], leaf, sts - leaf);
+ pthread_exit("botch");
+ }
+ for (j = 0; j < sts; j++) {
+ if (strcmp(chn[i][j], tmpset[j]) != 0) {
+ fprintf(f, "\n%s: %s: Botch: child[%d] expecting %s, got %s\n", fn, namelist[i], j, chn[i][j], tmpset[j]);
+ pthread_exit("botch");
+ }
+ }
+ }
+ if (keep == 0)
+ free(tmpset);
+ free(stsset);
+ fprintf(f, " pmGetChildrenStatus OK");
+ if ((sts = pmGetChildren(namelist[i], &tmpset)) < 0) {
+ fprintf(f, "\n%s: %s ...: pmGetChildren Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ if (sts != leaf_chn[i] + nonleaf_chn[i]) {
+ fprintf(f, "\n%s: %s: Botch: expecting %d children, got %d\n", fn, namelist[i], leaf_chn[i] + nonleaf_chn[i], sts);
+ pthread_exit("botch");
+ }
+ for (j = 0; j < sts; j++) {
+ if (strcmp(chn[i][j], tmpset[j]) != 0) {
+ fprintf(f, "\n%s: %s: Botch: child[%d] expecting %s, got %s\n", fn, namelist[i], j, chn[i][j], tmpset[j]);
+ pthread_exit("botch");
+ }
+ }
+ free(tmpset);
+ fprintf(f, " pmGetChildren OK");
+ *((int *)closure) = 0;
+ if ((sts = pmTraversePMNS_r(namelist[i], dometric, closure)) < 0) {
+ fprintf(f, "\n%s: %s ...: pmTraversePMNS_r Error: %s\n", fn, namelist[i], pmErrStr(sts));
+ pthread_exit("botch");
+ }
+ if (sum_traverse[i] != *((int *)closure)) {
+ fprintf(f, "\n%s: %s: Botch: sum strlen(descendent names) expecting %d, got %d\n", fn, namelist[i], sum_traverse[i], *((int *)closure));
+ pthread_exit("botch");
+ }
+ fprintf(f, " pmTraversePMNS_r OK");
+ }
+ fputc('\n', f);
+
+}
+
+static void *
+func1(void *arg)
+{
+ char *fn = "func1";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func1.out", "w")) == NULL) {
+ perror("func1 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx1);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx1, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i++) {
+ foo(f, fn, i, &count1);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func2(void *arg)
+{
+ char *fn = "func2";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func2.out", "w")) == NULL) {
+ perror("func2 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx2);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx2, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = NMETRIC-1; i >= 0; i--) {
+ foo(f, fn, i, &count2);
+ }
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+static void *
+func3(void *arg)
+{
+ char *fn = "func3";
+ int i;
+ int j;
+ FILE *f;
+
+ if ((f = fopen("/tmp/func3.out", "w")) == NULL) {
+ perror("func3 fopen");
+ pthread_exit("botch");
+ }
+
+ j = pmUseContext(ctx3);
+ if ( j < 0) {
+ fprintf(f, "Error: %s: pmUseContext(%d) -> %s\n", fn, ctx3, pmErrStr(j));
+ fclose(f);
+ pthread_exit("botch");
+ }
+
+ pthread_barrier_wait(&barrier);
+
+ for (j = 0; j < 100; j++) {
+ for (i = 0; i < NMETRIC; i += 2)
+ foo(f, fn, i, &count3);
+ for (i = 1; i < NMETRIC; i += 2)
+ foo(f, fn, i, &count3);
+ }
+
+ fclose(f);
+ pthread_exit(NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ pthread_t tid1;
+ pthread_t tid2;
+ pthread_t tid3;
+ int sts;
+ char *msg;
+ int errflag = 0;
+ int c;
+ int i;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind == argc || argc-optind > 3) {
+ fprintf(stderr, "Usage: %s [-D...] host1 [host2 [host3]]\n", pmProgname);
+ exit(1);
+ }
+
+ ctx1 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx1 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx1));
+ exit(1);
+ }
+ optind++;
+
+ if (optind < argc) {
+ ctx2 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx2 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx2 = ctx1;
+
+ if (optind < argc) {
+ ctx3 = pmNewContext(PM_CONTEXT_HOST, argv[optind]);
+ if (ctx3 < 0) {
+ printf("Error: pmNewContext(%s) -> %s\n", argv[optind], pmErrStr(ctx2));
+ exit(1);
+ }
+ optind++;
+ }
+ else
+ ctx3 = ctx2;
+
+ sts = pmLookupName(NMETRIC, namelist, pmidlist);
+ if (sts != NMETRIC) {
+ printf("Warning: pmLookupName -> %s\n", pmErrStr(sts));
+ for (i = 0; i < NMETRIC; i++) {
+ printf(" %s -> %s\n", namelist[i], pmIDStr(pmidlist[i]));
+ }
+ }
+
+ for (i = 0; i < NMETRIC; i++) {
+ if (pmidlist[i] != PM_ID_NULL) {
+ if ((sts = pmLookupDesc(pmidlist[i], &desclist[i])) < 0) {
+ printf("Error: pmLookupDesc(%s) -> %s\n", namelist[i], pmErrStr(sts));
+ exit(1);
+ }
+ }
+ chn[i] = NULL;
+ leaf_chn[i] = nonleaf_chn[i] = -1;
+ }
+
+ sts = pthread_barrier_init(&barrier, NULL, 3);
+ if (sts != 0) {
+ printf("pthread_barrier_init: sts=%d\n", sts);
+ exit(1);
+ }
+
+ sts = pthread_create(&tid1, NULL, func1, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid1: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid2, NULL, func2, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid2: sts=%d\n", sts);
+ exit(1);
+ }
+ sts = pthread_create(&tid3, NULL, func3, NULL);
+ if (sts != 0) {
+ printf("thread_create: tid3: sts=%d\n", sts);
+ exit(1);
+ }
+
+ pthread_join(tid1, (void *)&msg);
+ if (msg != NULL) printf("tid1: %s\n", msg);
+ pthread_join(tid2, (void *)&msg);
+ if (msg != NULL) printf("tid2: %s\n", msg);
+ pthread_join(tid3, (void *)&msg);
+ if (msg != NULL) printf("tid3: %s\n", msg);
+
+ exit(0);
+}
diff --git a/qa/src/nameall.c b/qa/src/nameall.c
new file mode 100644
index 0000000..c859811
--- /dev/null
+++ b/qa/src/nameall.c
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * nameall - exercise pmNameAll
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#if PMAPI_VERSION == 2
+static int pmns_style = 1;
+#endif
+static int vflag;
+static char *host = "localhost";
+static char *namespace = PM_NS_DEFAULT;
+static int dupok = 0;
+
+static void
+dometric(const char *name)
+{
+ pmID pmid;
+ int i;
+ int n;
+ char **nameset;
+
+ /* cast const away as pmLookUpName will not modify this string */
+ n = pmLookupName(1, (char **)&name, &pmid);
+ if (n < 0) {
+ printf("pmLookupName(%s): %s\n", name, pmErrStr(n));
+ return;
+ }
+ n = pmNameAll(pmid, &nameset);
+ if (n < 0) {
+ printf("pmNameAll(%s): %s\n", name, pmErrStr(n));
+ return;
+ }
+ for (i = 0; i < n; i++) {
+ if (strcmp(name, nameset[i]) != 0)
+ printf("%s alias %s and %s\n", pmIDStr(pmid), name, nameset[i]);
+ }
+ free(nameset);
+}
+
+void
+parse_args(int argc, char **argv)
+{
+ int errflag = 0;
+ int c;
+ int sts;
+ static char *usage = "[-h hostname] [-[N|n] namespace] [-v]";
+ char *endnum;
+
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+
+#if PMAPI_VERSION == 2
+ static char *style_str = "[-s 1|2]";
+#else
+ static char *style_str = "";
+#endif
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:N:n:s:v")) != EOF) {
+ switch (c) {
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'N':
+ dupok=1;
+ /*FALLTHROUGH*/
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose */
+ vflag++;
+ break;
+
+#if PMAPI_VERSION == 2
+ case 's': /* pmns style */
+ pmns_style = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ printf("%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s%s\n", pmProgname, debug, style_str, usage);
+ exit(1);
+ }
+}
+
+void
+load_namespace(char *namespace)
+{
+ struct timeval now, then;
+ int sts;
+
+ gettimeofday(&then, (struct timezone *)0);
+ if (dupok)
+ sts = pmLoadASCIINameSpace(namespace, 1);
+ else
+ sts = pmLoadNameSpace(namespace);
+ if (sts < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ gettimeofday(&now, (struct timezone *)0);
+ printf("Name space load: %.2f msec\n", __pmtimevalSub(&now, &then)*1000);
+}
+
+void
+test_nameall(int argc, char *argv[])
+{
+ int sts;
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+
+ if (vflag > 1)
+ __pmDumpNameSpace(stdout, 1);
+
+ for ( ; optind < argc; optind++)
+ pmTraversePMNS(argv[optind], dometric);
+}
+
+
+int
+main(int argc, char **argv)
+{
+ parse_args(argc, argv);
+
+ if (pmns_style == 2) {
+ /* test it the new way with distributed namespace */
+ /* i.e. no client loaded namespace */
+ test_nameall(argc, argv);
+ }
+ else {
+ /* test it the old way with namespace file */
+ load_namespace(namespace);
+ test_nameall(argc, argv);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/naslog.0 b/qa/src/naslog.0
new file mode 100644
index 0000000..f519919
--- /dev/null
+++ b/qa/src/naslog.0
Binary files differ
diff --git a/qa/src/naslog.index b/qa/src/naslog.index
new file mode 100644
index 0000000..6e39921
--- /dev/null
+++ b/qa/src/naslog.index
Binary files differ
diff --git a/qa/src/naslog.meta b/qa/src/naslog.meta
new file mode 100644
index 0000000..ca2d142
--- /dev/null
+++ b/qa/src/naslog.meta
Binary files differ
diff --git a/qa/src/new_mysql.0 b/qa/src/new_mysql.0
new file mode 100644
index 0000000..acb5c33
--- /dev/null
+++ b/qa/src/new_mysql.0
Binary files differ
diff --git a/qa/src/new_mysql.index b/qa/src/new_mysql.index
new file mode 100644
index 0000000..1246f3f
--- /dev/null
+++ b/qa/src/new_mysql.index
Binary files differ
diff --git a/qa/src/new_mysql.meta b/qa/src/new_mysql.meta
new file mode 100644
index 0000000..0fc1d15
--- /dev/null
+++ b/qa/src/new_mysql.meta
Binary files differ
diff --git a/qa/src/new_snmp.0 b/qa/src/new_snmp.0
new file mode 100644
index 0000000..be9dc46
--- /dev/null
+++ b/qa/src/new_snmp.0
Binary files differ
diff --git a/qa/src/new_snmp.index b/qa/src/new_snmp.index
new file mode 100644
index 0000000..2d97633
--- /dev/null
+++ b/qa/src/new_snmp.index
Binary files differ
diff --git a/qa/src/new_snmp.meta b/qa/src/new_snmp.meta
new file mode 100644
index 0000000..811a0bf
--- /dev/null
+++ b/qa/src/new_snmp.meta
Binary files differ
diff --git a/qa/src/node_archive.0 b/qa/src/node_archive.0
new file mode 100644
index 0000000..08f8ca5
--- /dev/null
+++ b/qa/src/node_archive.0
Binary files differ
diff --git a/qa/src/node_archive.index b/qa/src/node_archive.index
new file mode 100644
index 0000000..79d2853
--- /dev/null
+++ b/qa/src/node_archive.index
Binary files differ
diff --git a/qa/src/node_archive.meta b/qa/src/node_archive.meta
new file mode 100644
index 0000000..79175b0
--- /dev/null
+++ b/qa/src/node_archive.meta
Binary files differ
diff --git a/qa/src/nullinst.c b/qa/src/nullinst.c
new file mode 100644
index 0000000..180da0c
--- /dev/null
+++ b/qa/src/nullinst.c
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * nullinst - check metrics with indom PM_INDOM_NULL return 1
+ * value with inst == PM_IN_NULL
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static void
+dometric(const char *name)
+{
+ pmID pmid;
+ int n;
+ pmDesc desc;
+ pmResult *rp;
+
+ if ((n = pmLookupName(1, (char **)&name, &pmid)) < 0) {
+ printf("pmLookupName(%s): %s\n", name, pmErrStr(n));
+ return;
+ }
+ if ((n = pmLookupDesc(pmid, &desc)) < 0) {
+ printf("pmLookupDesc(%s): %s\n", name, pmErrStr(n));
+ return;
+ }
+ if (desc.indom != PM_INDOM_NULL)
+ return;
+
+ if ((n = pmFetch(1, &pmid, &rp)) < 0) {
+ printf("pmFetch(%s): %s\n", name, pmErrStr(n));
+ return;
+ }
+
+ if (rp->numpmid == 1) {
+ if (rp->vset[0]->numval == 1) {
+ if (rp->vset[0]->vlist[0].inst != PM_IN_NULL)
+ printf("%s: bad inst (%d)\n", name, rp->vset[0]->vlist[0].inst);
+ }
+ /* ignore errors from unsupported metrics on this platform */
+ else if (rp->vset[0]->numval != PM_ERR_APPVERSION &&
+#ifdef ENOPKG
+ rp->vset[0]->numval != -ENOPKG &&
+#endif
+ rp->vset[0]->numval != PM_ERR_AGAIN)
+ printf("%s: bad numval (%d)\n", name, rp->vset[0]->numval);
+ }
+ else
+ printf("%s: bad numpmid (%d)\n", name, rp->numpmid);
+
+ pmFreeResult(rp);
+
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ static char *usage = "[-n namespace] metric ...";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:n:")) != EOF) {
+ switch (c) {
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind == argc) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ for ( ; optind < argc; optind++)
+ pmTraversePMNS(argv[optind], dometric);
+
+ exit(0);
+}
diff --git a/qa/src/numa.0 b/qa/src/numa.0
new file mode 100644
index 0000000..596ef7c
--- /dev/null
+++ b/qa/src/numa.0
Binary files differ
diff --git a/qa/src/numa.index b/qa/src/numa.index
new file mode 100644
index 0000000..5e46ae3
--- /dev/null
+++ b/qa/src/numa.index
Binary files differ
diff --git a/qa/src/numa.meta b/qa/src/numa.meta
new file mode 100644
index 0000000..704df6d
--- /dev/null
+++ b/qa/src/numa.meta
Binary files differ
diff --git a/qa/src/numberstr.c b/qa/src/numberstr.c
new file mode 100644
index 0000000..ccfeaff
--- /dev/null
+++ b/qa/src/numberstr.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char *argv[])
+{
+ double d;
+ char *endptr;
+
+ __pmSetProgname(argv[0]);
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s double\n", pmProgname);
+ exit(1);
+ }
+
+ d = strtod(argv[1], &endptr);
+ if (endptr != NULL && endptr[0] != '\0') {
+ fprintf(stderr, "%s does not smell like a double, bozo!\n", argv[1]);
+ exit(1);
+ }
+
+ printf("%s\n", pmNumberStr(d));
+
+ return 0;
+}
diff --git a/qa/src/nvidia-ml.c b/qa/src/nvidia-ml.c
new file mode 100644
index 0000000..707dd05
--- /dev/null
+++ b/qa/src/nvidia-ml.c
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2014 Red Hat.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include "localnvml.h"
+
+/*
+ * Testing library for exercising the NVIDIA GPU PMDA. By injecting this
+ * library into the PMDA to supply values that the real nvidia-ml usually
+ * would, we are able to obtain synthesized statistics and exercise many
+ * of the code paths through pmda_nvidia. No substitute for using actual
+ * hardware, of course - but better than a poke in the eye with a sharp
+ * stick (or worse, no testing at all).
+ */
+
+/*
+ * Table of the GPU hardware we'll be faking.
+ * Using simple static values here so that tests are deterministic.
+ */
+#define NUM_GPUS (sizeof(gpu_table)/sizeof(gpu_table[0]))
+struct gputab {
+ char name[NVML_DEVICE_NAME_BUFFER_SIZE];
+ nvmlPciInfo_t pciinfo;
+ unsigned int fanspeed;
+ unsigned int temperature;
+ nvmlUtilization_t util;
+ nvmlPstates_t state;
+ nvmlMemory_t mem;
+} gpu_table[] = {
+ {
+ .name = "GeForce 100M Series",
+ .pciinfo = {
+ .busId = "0:1:0x2:3:4",
+ .domain = 0,
+ .bus = 1,
+ .device = 0x2,
+ .pciDeviceId = 3,
+ .pciSubSystemId = 4,
+ },
+ .fanspeed = 5,
+ .temperature = 6,
+ .util = {
+ .gpu = 7,
+ .memory = 8,
+ },
+ .state = 9,
+ .mem = {
+ .total = 256 * 1024 * 1024,
+ .free = 156 * 1024 * 1024,
+ .used = 100 * 1024 * 1024,
+ },
+ },
+ {
+ .name = "Quadro FX 200M Series",
+ .pciinfo = {
+ .busId = "20:21:0x2:23:24",
+ .domain = 20,
+ .bus = 21,
+ .device = 0x22,
+ .pciDeviceId = 23,
+ .pciSubSystemId = 24,
+ },
+ .fanspeed = 25,
+ .temperature = 26,
+ .util = {
+ .gpu = 27,
+ .memory = 28,
+ },
+ .state = 29,
+ .mem = {
+ .total = 8ULL * 1024 * 1024 * 1024,
+ .free = 2ULL * 1024 * 1024 * 1024,
+ .used = 6ULL * 1024 * 1024 * 1024,
+ },
+ }
+};
+
+static int refcount;
+
+int
+nvmlInit(void)
+{
+ refcount++;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlInit [%d - %d]\n",
+ refcount - 1, refcount);
+ return 0;
+}
+
+int
+nvmlShutdown(void)
+{
+ refcount--;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlShutdown [%d - %d]\n",
+ refcount + 1, refcount);
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetCount(unsigned int *count)
+{
+ *count = sizeof(gpu_table) / sizeof(gpu_table[0]);
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetCount [%u]\n", *count);
+ return NVML_SUCCESS;
+}
+
+#define CHECK_INDEX(index) { \
+ if ((index) < 0) return NVML_ERROR_INVALID_ARGUMENT; \
+ if ((index) >= NUM_GPUS) return NVML_ERROR_GPU_IS_LOST; }
+
+#define CHECK_DEVICE(devp) { \
+ if ((devp) < gpu_table) return NVML_ERROR_INVALID_ARGUMENT; \
+ if ((devp) >= gpu_table + NUM_GPUS) return NVML_ERROR_GPU_IS_LOST; }
+
+int
+nvmlDeviceGetHandleByIndex(unsigned int index, nvmlDevice_t *dp)
+{
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetHandleByIndex %u\n", index);
+ CHECK_INDEX(index);
+ *dp = &gpu_table[index];
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetName(nvmlDevice_t device, char *buffer, unsigned int length)
+{
+ struct gputab *dev = (struct gputab *)device;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetName\n");
+ CHECK_DEVICE(dev);
+ strncpy(buffer, dev->name, length);
+ buffer[length-1] = '\0';
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetPciInfo(nvmlDevice_t device, nvmlPciInfo_t *info)
+{
+ struct gputab *dev = (struct gputab *)device;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetPciInfo\n");
+ CHECK_DEVICE(dev);
+ *info = dev->pciinfo;
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int *speed)
+{
+ struct gputab *dev = (struct gputab *)device;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetFanSpeed\n");
+ CHECK_DEVICE(dev);
+ *speed = dev->fanspeed;
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensor, unsigned int *value)
+{
+ struct gputab *dev = (struct gputab *)device;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetTemperature\n");
+ CHECK_DEVICE(dev);
+ if (sensor >= NVML_TEMPERATURE_COUNT)
+ return NVML_ERROR_INVALID_ARGUMENT;
+ *value = dev->temperature;
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t *util)
+{
+ struct gputab *dev = (struct gputab *)device;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetUtilizationRates\n");
+ CHECK_DEVICE(dev);
+ *util = dev->util;
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetMemoryInfo(nvmlDevice_t device, nvmlMemory_t *mem)
+{
+ struct gputab *dev = (struct gputab *)device;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetMemoryInfo\n");
+ CHECK_DEVICE(dev);
+ *mem = dev->mem;
+ return NVML_SUCCESS;
+}
+
+int
+nvmlDeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t *state)
+{
+ struct gputab *dev = (struct gputab *)device;
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "qa-nvidia-ml: nvmlDeviceGetPerformanceState\n");
+ CHECK_DEVICE(dev);
+ *state = dev->state;
+ return NVML_SUCCESS;
+}
diff --git a/qa/src/obs.c b/qa/src/obs.c
new file mode 100644
index 0000000..ea7c63c
--- /dev/null
+++ b/qa/src/obs.c
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <pcp/trace.h>
+
+
+int
+main(int argc, char **argv)
+{
+ int sts;
+ char *prog;
+
+ prog = argv[0];
+
+ if ((sts = pmtraceobs("simple", 6.09)) < 0) {
+ fprintf(stderr, "%s: (1) pmtraceobs error: %s\n",
+ prog, pmtraceerrstr(sts));
+ exit(1);
+ }
+ if ((sts = pmtraceobs("test", 888888.8888)) < 0) {
+ fprintf(stderr, "%s: (2) pmtraceobs error: %s\n",
+ prog, pmtraceerrstr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmtraceobs("simple", 76)) < 0) {
+ fprintf(stderr, "%s: (3) pmtraceobs error: %s\n",
+ prog, pmtraceerrstr(sts));
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/ok-bigbin.0 b/qa/src/ok-bigbin.0
new file mode 100644
index 0000000..2befcb1
--- /dev/null
+++ b/qa/src/ok-bigbin.0
Binary files differ
diff --git a/qa/src/ok-bigbin.index b/qa/src/ok-bigbin.index
new file mode 100644
index 0000000..2dbd34a
--- /dev/null
+++ b/qa/src/ok-bigbin.index
Binary files differ
diff --git a/qa/src/ok-bigbin.meta b/qa/src/ok-bigbin.meta
new file mode 100644
index 0000000..893ab91
--- /dev/null
+++ b/qa/src/ok-bigbin.meta
Binary files differ
diff --git a/qa/src/ok-foo.0 b/qa/src/ok-foo.0
new file mode 100644
index 0000000..a09c48c
--- /dev/null
+++ b/qa/src/ok-foo.0
Binary files differ
diff --git a/qa/src/ok-foo.index b/qa/src/ok-foo.index
new file mode 100644
index 0000000..8dd5ac5
--- /dev/null
+++ b/qa/src/ok-foo.index
Binary files differ
diff --git a/qa/src/ok-foo.meta b/qa/src/ok-foo.meta
new file mode 100644
index 0000000..2a6edab
--- /dev/null
+++ b/qa/src/ok-foo.meta
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.0 b/qa/src/ok-mv-bigbin.0
new file mode 100644
index 0000000..30ec19c
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.0
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.1 b/qa/src/ok-mv-bigbin.1
new file mode 100644
index 0000000..90d908e
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.1
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.2 b/qa/src/ok-mv-bigbin.2
new file mode 100644
index 0000000..103eb49
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.2
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.3 b/qa/src/ok-mv-bigbin.3
new file mode 100644
index 0000000..081a3ac
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.3
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.4 b/qa/src/ok-mv-bigbin.4
new file mode 100644
index 0000000..e57c2c9
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.4
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.5 b/qa/src/ok-mv-bigbin.5
new file mode 100644
index 0000000..18ac314
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.5
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.6 b/qa/src/ok-mv-bigbin.6
new file mode 100644
index 0000000..7118ca1
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.6
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.7 b/qa/src/ok-mv-bigbin.7
new file mode 100644
index 0000000..3aaaafb
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.7
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.8 b/qa/src/ok-mv-bigbin.8
new file mode 100644
index 0000000..b769520
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.8
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.9 b/qa/src/ok-mv-bigbin.9
new file mode 100644
index 0000000..b1a577e
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.9
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.index b/qa/src/ok-mv-bigbin.index
new file mode 100644
index 0000000..cf85d3b
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.index
Binary files differ
diff --git a/qa/src/ok-mv-bigbin.meta b/qa/src/ok-mv-bigbin.meta
new file mode 100644
index 0000000..84a6885
--- /dev/null
+++ b/qa/src/ok-mv-bigbin.meta
Binary files differ
diff --git a/qa/src/ok-mv-foo.0 b/qa/src/ok-mv-foo.0
new file mode 100644
index 0000000..21eb486
--- /dev/null
+++ b/qa/src/ok-mv-foo.0
Binary files differ
diff --git a/qa/src/ok-mv-foo.1 b/qa/src/ok-mv-foo.1
new file mode 100644
index 0000000..6b02578
--- /dev/null
+++ b/qa/src/ok-mv-foo.1
Binary files differ
diff --git a/qa/src/ok-mv-foo.2 b/qa/src/ok-mv-foo.2
new file mode 100644
index 0000000..5914c6d
--- /dev/null
+++ b/qa/src/ok-mv-foo.2
Binary files differ
diff --git a/qa/src/ok-mv-foo.index b/qa/src/ok-mv-foo.index
new file mode 100644
index 0000000..3ec1caf
--- /dev/null
+++ b/qa/src/ok-mv-foo.index
Binary files differ
diff --git a/qa/src/ok-mv-foo.meta b/qa/src/ok-mv-foo.meta
new file mode 100644
index 0000000..e05a5fb
--- /dev/null
+++ b/qa/src/ok-mv-foo.meta
Binary files differ
diff --git a/qa/src/ok-noti-bigbin.0 b/qa/src/ok-noti-bigbin.0
new file mode 100644
index 0000000..2befcb1
--- /dev/null
+++ b/qa/src/ok-noti-bigbin.0
Binary files differ
diff --git a/qa/src/ok-noti-bigbin.meta b/qa/src/ok-noti-bigbin.meta
new file mode 100644
index 0000000..893ab91
--- /dev/null
+++ b/qa/src/ok-noti-bigbin.meta
Binary files differ
diff --git a/qa/src/ok-truncbin.0 b/qa/src/ok-truncbin.0
new file mode 100644
index 0000000..99127ca
--- /dev/null
+++ b/qa/src/ok-truncbin.0
Binary files differ
diff --git a/qa/src/ok-truncbin.index b/qa/src/ok-truncbin.index
new file mode 100644
index 0000000..cd1e9c7
--- /dev/null
+++ b/qa/src/ok-truncbin.index
Binary files differ
diff --git a/qa/src/ok-truncbin.meta b/qa/src/ok-truncbin.meta
new file mode 100644
index 0000000..c445780
--- /dev/null
+++ b/qa/src/ok-truncbin.meta
Binary files differ
diff --git a/qa/src/old_xfs.0 b/qa/src/old_xfs.0
new file mode 100644
index 0000000..7b872a9
--- /dev/null
+++ b/qa/src/old_xfs.0
Binary files differ
diff --git a/qa/src/old_xfs.index b/qa/src/old_xfs.index
new file mode 100644
index 0000000..950d78c
--- /dev/null
+++ b/qa/src/old_xfs.index
Binary files differ
diff --git a/qa/src/old_xfs.meta b/qa/src/old_xfs.meta
new file mode 100644
index 0000000..d0ba464
--- /dev/null
+++ b/qa/src/old_xfs.meta
Binary files differ
diff --git a/qa/src/omen.client.0 b/qa/src/omen.client.0
new file mode 100644
index 0000000..160fe03
--- /dev/null
+++ b/qa/src/omen.client.0
Binary files differ
diff --git a/qa/src/omen.client.index b/qa/src/omen.client.index
new file mode 100644
index 0000000..41e2b01
--- /dev/null
+++ b/qa/src/omen.client.index
Binary files differ
diff --git a/qa/src/omen.client.meta b/qa/src/omen.client.meta
new file mode 100644
index 0000000..c643600
--- /dev/null
+++ b/qa/src/omen.client.meta
Binary files differ
diff --git a/qa/src/papi.c b/qa/src/papi.c
new file mode 100644
index 0000000..4b6e229
--- /dev/null
+++ b/qa/src/papi.c
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2014 Red Hat.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <papi.h>
+
+
+
+int
+PAPI_add_event(int EventSet, int EventCode)
+{
+
+}
+
+int
+PAPI_enum_event( int *EventCode, int modifier )
+{
+
+}
+
+int
+PAPI_state( int EventSet, int *status )
+{
+
+}
+
+int
+PAPI_library_init( int version )
+{
+
+}
+
+int
+PAPI_create_eventset( int *EventSet )
+{
+
+}
+
+int
+PAPI_start( int EventSet )
+{
+
+}
+
+int
+PAPI_read( int EventSet, long long *values )
+{
+
+}
+
+int
+PAPI_stop( int EventSet, long long *values )
+{
+
+}
+
+int
+PAPI_destroy_eventset( int *EventSet )
+{
+
+}
+
+int
+PAPI_cleanup_eventset( int EventSet )
+{
+
+}
+
+int
+PAPI_get_event_info( int EventCode, PAPI_event_info_t *info )
+{
+
+}
+
+int
+PAPI_reset( int EventSet )
+{
+
+}
+
+int
+PAPI_remove_events( int EventSet, int *Events, int number )
+{
+
+}
diff --git a/qa/src/parsehostattrs.c b/qa/src/parsehostattrs.c
new file mode 100644
index 0000000..68a3a42
--- /dev/null
+++ b/qa/src/parsehostattrs.c
@@ -0,0 +1,65 @@
+#include <stdio.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static __pmHashWalkState
+print_attribute(const __pmHashNode *tp, void *cp)
+{
+ char buffer[256];
+
+ if (!__pmAttrStr_r(tp->key, tp->data, buffer, sizeof(buffer))) {
+ fprintf(stderr, "Found unrecognised attribute (%d: \"%s\")\n",
+ tp->key, tp->data ? (char *)tp->data : "");
+ }
+ buffer[sizeof(buffer)-1] = '\0';
+ printf("%s\n", buffer);
+ return PM_HASH_WALK_NEXT;
+}
+
+int
+main(int argc, char **argv)
+{
+ char *msg;
+ char buffer[512];
+ __pmHashCtl attrs;
+ pmHostSpec *hosts;
+ int count, sts, i, j;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: parsehostattrs spec\n");
+ exit(1);
+ }
+
+ __pmHashInit(&attrs);
+ printf("pmParseHostAttrsSpec(\"%s\", ...)\n", argv[1]);
+ sts = __pmParseHostAttrsSpec(argv[1], &hosts, &count, &attrs, &msg);
+ if (sts < 0) {
+ if (sts == PM_ERR_GENERIC)
+ printf("pmParseHostAttrsSpec error:\n%s\n", msg);
+ else
+ printf("Error: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < count; i++) {
+ printf("host[%d]: \"%s\"", i, hosts[i].name);
+ if (hosts[i].nports == 1)
+ printf(" port:");
+ else if (hosts[i].nports > 1)
+ printf(" ports:");
+ for (j = 0; j < hosts[i].nports; j++)
+ printf(" %d", hosts[i].ports[j]);
+ putchar('\n');
+ }
+ __pmHashWalkCB(print_attribute, NULL, &attrs);
+
+ sts = __pmUnparseHostAttrsSpec(hosts, count, &attrs, buffer, sizeof(buffer));
+ if (sts < 0) {
+ printf("pmUnparseHostAttrsSpec: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ printf("pmUnparseHostAttrsSpec(\"%s\") -> \"%s\"\n", argv[1], buffer);
+
+ __pmFreeHostAttrsSpec(hosts, count, &attrs);
+ __pmHashClear(&attrs);
+ exit(0);
+}
diff --git a/qa/src/parsehostspec.c b/qa/src/parsehostspec.c
new file mode 100644
index 0000000..00197c2
--- /dev/null
+++ b/qa/src/parsehostspec.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ char *msg, buffer[512];
+ pmHostSpec *hosts;
+ int count, sts, i, j;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: parsehostspec spec\n");
+ exit(1);
+ }
+
+ printf("pmParseHostSpec(\"%s\", ...)\n", argv[1]);
+ sts = __pmParseHostSpec(argv[1], &hosts, &count, &msg);
+ if (sts < 0) {
+ if (sts == PM_ERR_GENERIC)
+ printf("pmParseHostSpec error:\n%s\n", msg);
+ else
+ printf("Error: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ for (i = 0; i < count; i++) {
+ printf("host[%d]: \"%s\"", i, hosts[i].name);
+ if (hosts[i].nports == 1)
+ printf(" port:");
+ else if (hosts[i].nports > 1)
+ printf(" ports:");
+ for (j = 0; j < hosts[i].nports; j++)
+ printf(" %d", hosts[i].ports[j]);
+ putchar('\n');
+ }
+
+ sts = __pmUnparseHostSpec(hosts, count, buffer, sizeof(buffer));
+ if (sts < 0) {
+ printf("pmUnparseHostSpec: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ printf("pmUnparseHostSpec(\"%s\") -> \"%s\"\n", argv[1], buffer);
+
+ __pmFreeHostSpec(hosts, count);
+ exit(0);
+}
diff --git a/qa/src/parseinterval.c b/qa/src/parseinterval.c
new file mode 100644
index 0000000..f72e1d5
--- /dev/null
+++ b/qa/src/parseinterval.c
@@ -0,0 +1,29 @@
+#include <pcp/pmapi.h>
+
+int
+main(int argc, char *argv[])
+{
+ int sts;
+ char *err;
+ struct timeval time;
+
+ while (argc > 1) {
+ printf("\"%s\"", argv[1]);
+ sts = pmParseInterval(argv[1], &time, &err);
+ if (sts == -1) {
+ printf(" Error:\n%s", err);
+ free(err);
+ }
+ else if (sts == 0) {
+ printf(" Time: %ld.%06ld sec\n",
+ (long)time.tv_sec, (long)time.tv_usec);
+ }
+ else {
+ printf(" Bogus return value: %d\n", sts);
+ }
+ argc--;
+ argv++;
+ }
+
+ return 0;
+}
diff --git a/qa/src/parsemetricspec.c b/qa/src/parsemetricspec.c
new file mode 100644
index 0000000..5a7c37b
--- /dev/null
+++ b/qa/src/parsemetricspec.c
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <pcp/pmapi.h>
+
+int
+main(int argc, char **argv)
+{
+ int isarch;
+ char *msg;
+ pmMetricSpec *rslt;
+ int sts;
+ int i;
+
+ if (argc != 4) {
+ fprintf(stderr, "Usage: parsemetricspec spec isarch host\n");
+ exit(1);
+ }
+
+ if (strcmp(argv[1], "NULL") == 0) argv[1] = NULL;
+ isarch = atol(argv[2]);
+ if (strcmp(argv[3], "NULL") == 0) argv[3] = NULL;
+
+ printf("pmParseMetricSpec(\"%s\", %d, \"%s\", ...)\n",
+ argv[1], isarch, argv[3]);
+
+ sts = pmParseMetricSpec(argv[1], isarch, argv[3], &rslt, &msg);
+
+ if (sts < 0) {
+ if (sts == PM_ERR_GENERIC)
+ printf("pmParseMetricSpec Error:\n%s\n", msg);
+ else
+ printf("error: %s\n", pmErrStr(sts));
+ }
+ else {
+ printf("isarch: %d\n", rslt->isarch);
+ printf("source: \"%s\"\n", rslt->source);
+ printf("metric: \"%s\"\n", rslt->metric);
+ for (i = 0; i < rslt->ninst; i++) {
+ printf("inst[%d]: \"%s\"\n", i, rslt->inst[i]);
+ }
+ }
+
+ exit(0);
+}
diff --git a/qa/src/pcp-free.0 b/qa/src/pcp-free.0
new file mode 100644
index 0000000..5efe10b
--- /dev/null
+++ b/qa/src/pcp-free.0
Binary files differ
diff --git a/qa/src/pcp-free.index b/qa/src/pcp-free.index
new file mode 100644
index 0000000..2effb7e
--- /dev/null
+++ b/qa/src/pcp-free.index
Binary files differ
diff --git a/qa/src/pcp-free.meta b/qa/src/pcp-free.meta
new file mode 100644
index 0000000..cbfad55
--- /dev/null
+++ b/qa/src/pcp-free.meta
Binary files differ
diff --git a/qa/src/pcp-numastat-1-node.0 b/qa/src/pcp-numastat-1-node.0
new file mode 100644
index 0000000..076366d
--- /dev/null
+++ b/qa/src/pcp-numastat-1-node.0
Binary files differ
diff --git a/qa/src/pcp-numastat-1-node.index b/qa/src/pcp-numastat-1-node.index
new file mode 100644
index 0000000..88974d4
--- /dev/null
+++ b/qa/src/pcp-numastat-1-node.index
Binary files differ
diff --git a/qa/src/pcp-numastat-1-node.meta b/qa/src/pcp-numastat-1-node.meta
new file mode 100644
index 0000000..8e0e85c
--- /dev/null
+++ b/qa/src/pcp-numastat-1-node.meta
Binary files differ
diff --git a/qa/src/pcp-uptime.0 b/qa/src/pcp-uptime.0
new file mode 100644
index 0000000..fd68abf
--- /dev/null
+++ b/qa/src/pcp-uptime.0
Binary files differ
diff --git a/qa/src/pcp-uptime.index b/qa/src/pcp-uptime.index
new file mode 100644
index 0000000..ae79782
--- /dev/null
+++ b/qa/src/pcp-uptime.index
Binary files differ
diff --git a/qa/src/pcp-uptime.meta b/qa/src/pcp-uptime.meta
new file mode 100644
index 0000000..5924a1d
--- /dev/null
+++ b/qa/src/pcp-uptime.meta
Binary files differ
diff --git a/qa/src/pcp_lite_crash.c b/qa/src/pcp_lite_crash.c
new file mode 100644
index 0000000..0727bbd
--- /dev/null
+++ b/qa/src/pcp_lite_crash.c
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * pcp_lite_crash - crash pcp lite
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ pmID pmid;
+ pmDesc desc;
+ int type = 0;
+ char *host = NULL;
+ char *metric = "kernel.all.cpu.idle";
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:Ln:")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'L': /* local, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options:\n\
+ -a archive use archive log, not host source\n\
+ -D N set pmDebug debugging flag to N\n\
+ -h hostname connect to PMCD on this host\n\
+ -L connect local, no PMCD\n\
+ -n namespace alternative PMNS specification file\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else if (type == PM_CONTEXT_LOCAL)
+ fprintf(stderr, "%s: Cannot connect in local standalone mode: %s\n",
+ pmProgname, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmLookupName(1, &metric, &pmid)) < 0) {
+ printf("%s: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* crash in here: dereference a null pointer to function */
+ if ((sts = pmLookupDesc(pmid, &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/pcpcmd.0 b/qa/src/pcpcmd.0
new file mode 100644
index 0000000..7ca8979
--- /dev/null
+++ b/qa/src/pcpcmd.0
Binary files differ
diff --git a/qa/src/pcpcmd.index b/qa/src/pcpcmd.index
new file mode 100644
index 0000000..7fd831b
--- /dev/null
+++ b/qa/src/pcpcmd.index
Binary files differ
diff --git a/qa/src/pcpcmd.meta b/qa/src/pcpcmd.meta
new file mode 100644
index 0000000..8d4bbf6
--- /dev/null
+++ b/qa/src/pcpcmd.meta
Binary files differ
diff --git a/qa/src/pdu-server.c b/qa/src/pdu-server.c
new file mode 100644
index 0000000..a413eba
--- /dev/null
+++ b/qa/src/pdu-server.c
@@ -0,0 +1,768 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * PCP PDU echo server.
+ *
+ * with -r (raw)
+ * sends PDUs straightback w/out inspection (uses only
+ * the PDU header to determine the length
+ *
+ * without -r
+ * uses libpcp routines to decode the PDU and then the
+ * send the PDU ... exercises local recv and xmit logic
+ * for PDUs
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/trace.h>
+#include <pcp/trace_dev.h>
+#include <strings.h>
+#include "localconfig.h"
+
+static int raw; /* if set, echo PDUs, do not decode/encode */
+
+typedef struct { /* from src/libpcp/src/p_pmns.c */
+ __pmPDUHdr hdr;
+ int sts; /* to encode status of pmns op */
+ int numids;
+ pmID idlist[1];
+} idlist_t;
+
+/*
+ * use pid as "from" context for backwards compatibility to
+ * keep QA tests happy, rather than FROM_ANON which would be
+ * the more normal value for this usage.
+ */
+static pid_t mypid;
+
+static int
+decode_encode(int fd, __pmPDU *pb, int type)
+{
+ int e;
+ int code;
+ int proto;
+ pmResult *rp;
+ __pmProfile *profp;
+ int ctxnum;
+ int fail = -1;
+ __pmTimeval now;
+ int numpmid;
+ pmID *pmidp;
+ pmID pmid;
+ pmDesc desc;
+ pmInDom indom;
+ int inst;
+ char *name;
+ __pmInResult *inres;
+ int control;
+ int length;
+ int state;
+ int attr;
+ int rate;
+ int ident;
+ int txtype;
+ char *buffer;
+ int xtype;
+ int xlen;
+ int sender;
+ int count;
+ __pmCred *creds;
+ idlist_t *idlist_p;
+ static int numpmidlist;
+ static pmID *pmidlist;
+ int numlist;
+ char **namelist;
+ int *statlist;
+ __pmLoggerStatus *lsp;
+ double value;
+
+ switch (type) {
+
+ case PDU_ERROR:
+ if ((e = __pmDecodeError(pb, &code)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeError: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "+ PDU_ERROR: code=%d\n", code);
+#endif
+ if ((e = __pmSendError(fd, mypid, code)) < 0) {
+ fprintf(stderr, "%s: Error: SendError: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_RESULT:
+ if ((e = __pmDecodeResult(pb, &rp)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeResult: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_RESULT:\n");
+ __pmDumpResult(stderr, rp);
+ }
+#endif
+ e = __pmSendResult(fd, mypid, rp);
+ pmFreeResult(rp);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendResult: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_PROFILE:
+ if ((e = __pmDecodeProfile(pb, &ctxnum, &profp)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeProfile: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_PROFILE: ctxnum=%d\n", ctxnum);
+ __pmDumpProfile(stderr, PM_INDOM_NULL, profp);
+ }
+#endif
+ e = __pmSendProfile(fd, mypid, ctxnum, profp);
+ free(profp->profile);
+ free(profp);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendProfile: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_FETCH:
+ if ((e = __pmDecodeFetch(pb, &ctxnum, &now, &numpmid, &pmidp)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeFetch: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ int j;
+ struct timeval foo;
+ fprintf(stderr, "+ PDU_FETCH: ctxnum=%d now=%d.%06d ",
+ ctxnum, now.tv_sec, now.tv_usec);
+ foo.tv_sec = now.tv_sec;
+ foo.tv_usec = now.tv_usec;
+ __pmPrintStamp(stderr, &foo);
+ fprintf(stderr, " numpmid=%d\n+ PMIDs:", numpmid);
+ for (j = 0; j < numpmid; j++)
+ fprintf(stderr, " %s", pmIDStr(pmidp[j]));
+ fputc('\n', stderr);
+ }
+#endif
+ e = __pmSendFetch(fd, mypid, ctxnum, &now, numpmid, pmidp);
+ __pmUnpinPDUBuf(pmidp);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendFetch: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_DESC_REQ:
+ if ((e = __pmDecodeDescReq(pb, &pmid)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeDescReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "+ PDU_DESC_REQ: pmid=%s\n", pmIDStr(pmid));
+#endif
+ if ((e = __pmSendDescReq(fd, mypid, pmid)) < 0) {
+ fprintf(stderr, "%s: Error: SendDescReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_DESC:
+ if ((e = __pmDecodeDesc(pb, &desc)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeDesc: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_DESC: ");
+ __pmPrintDesc(stderr, &desc);
+ }
+#endif
+ if ((e = __pmSendDesc(fd, mypid, &desc)) < 0) {
+ fprintf(stderr, "%s: Error: SendDesc: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_INSTANCE_REQ:
+ if ((e = __pmDecodeInstanceReq(pb, &now, &indom, &inst, &name)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeInstanceReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ struct timeval foo;
+ fprintf(stderr, "+ PDU_INSTANCE_REQ: now=%d.%06d ",
+ now.tv_sec, now.tv_usec);
+ foo.tv_sec = now.tv_sec;
+ foo.tv_usec = now.tv_usec;
+ __pmPrintStamp(stderr, &foo);
+ fprintf(stderr, " indom=%s", pmInDomStr(indom));
+ if (inst == PM_IN_NULL)
+ fprintf(stderr, " inst=PM_IN_NULL");
+ else
+ fprintf(stderr, " inst=%d", inst);
+ if (name == NULL)
+ fprintf(stderr, " name=NULL\n");
+ else
+ fprintf(stderr, " name=\"%s\"\n", name);
+ }
+#endif
+ e = __pmSendInstanceReq(fd, mypid, &now, indom, inst, name);
+ if (name)
+ free(name);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendInstanceReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_INSTANCE:
+ if ((e = __pmDecodeInstance(pb, &inres)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeInstance: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_INSTANCE: ");
+ __pmDumpInResult(stderr, inres);
+ }
+#endif
+ e = __pmSendInstance(fd, mypid, inres);
+ __pmFreeInResult(inres);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendInstance: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_TEXT_REQ:
+ if ((e = __pmDecodeTextReq(pb, &ident, &txtype)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeTextReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_TEXT_REQ: ident=%d ", ident);
+ if (txtype & PM_TEXT_INDOM)
+ fprintf(stderr, "INDOM %s", pmInDomStr((pmInDom)ident));
+ if (txtype & PM_TEXT_PMID)
+ fprintf(stderr, "PMID %s", pmIDStr((pmID)ident));
+ fprintf(stderr, " txtype=%d\n", txtype);
+ }
+#endif
+ if ((e = __pmSendTextReq(fd, mypid, ident, txtype)) < 0) {
+ fprintf(stderr, "%s: Error: SendTextReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_TEXT:
+ if ((e = __pmDecodeText(pb, &ident, &buffer)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeText: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ int len;
+ int c;
+ fprintf(stderr, "+ PDU_TEXT: ident=%d", ident);
+ len = strlen(buffer);
+ c = buffer[len - 1];
+ buffer[len - 1] = '\0';
+ if (len < 30)
+ fprintf(stderr, " text=\"%s\"\n", buffer);
+ else {
+ fprintf(stderr, " text=\"%12.12s ... ", buffer);
+ fprintf(stderr, "%s\"\n", &buffer[len - 18]);
+ }
+ buffer[len - 1] = c;
+ }
+#endif
+ if ((e = __pmSendText(fd, mypid, ident, buffer)) < 0) {
+ fprintf(stderr, "%s: Error: SendText: %s\n", pmProgname, pmErrStr(e));
+ free(buffer);
+ break;
+ }
+ fail = 0;
+ free(buffer);
+ break;
+
+#if PCP_VER >= 3800
+ case PDU_AUTH:
+ if ((e = __pmDecodeAuth(pb, &attr, &buffer, &length)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeAuth: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ char buf[32] = { 0 };
+
+ fprintf(stderr, "+ PDU_AUTH: attr=%d length=%d", attr, length);
+ if (length < sizeof(buf)-2) {
+ strncpy(buf, buffer, length);
+ fprintf(stderr, " value=\"%s\"\n", buf);
+ } else {
+ strncpy(buf, buffer, sizeof(buf)-2);
+ fprintf(stderr, " value=\"%12.12s ... ", buf);
+ strncpy(buf, &buffer[length-18], sizeof(buf)-2);
+ fprintf(stderr, "%s\"\n", buf);
+ }
+ }
+#endif
+ if ((e = __pmSendAuth(fd, mypid, attr, buffer, length)) < 0) {
+ fprintf(stderr, "%s: Error: SendAuth: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+#endif
+
+ case PDU_CREDS:
+ if ((e = __pmDecodeCreds(pb, &sender, &count, &creds)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeCreds: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ int i;
+ fprintf(stderr, "+ PDU_CREDS: sender=%d count=%d\n",
+ sender, count);
+ for (i = 0; i < count; i++) {
+ fprintf(stderr, "+ [%d] type=%d a=%d b=%d c=%d\n",
+ i, creds[i].c_type, creds[i].c_vala, creds[i].c_valb,
+ creds[i].c_valc);
+ }
+ }
+#endif
+ e = __pmSendCreds(fd, mypid, count, creds);
+ if (count > 0)
+ free(creds);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendCreds: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_PMNS_IDS:
+ idlist_p = (idlist_t *)pb;
+ numpmid = ntohl(idlist_p->numids);
+ if (numpmid > numpmidlist) {
+ if (pmidlist != NULL)
+ free(pmidlist);
+ if ((pmidlist = (pmID *)malloc(numpmid * sizeof(pmidlist[0]))) == NULL) {
+ fprintf(stderr, "malloc pmidlist[%d]: %s\n", numpmid, strerror(errno));
+ numpmidlist = 0;
+ break;
+ }
+ numpmidlist = numpmid;
+ }
+ if ((e = __pmDecodeIDList(pb, numpmid, pmidlist, &code)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeIDList: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_PMNS_IDS: sts arg=%d\n", code);
+ __pmDumpIDList(stderr, numpmid, pmidlist);
+ }
+#endif
+ e = __pmSendIDList(fd, mypid, numpmid, pmidlist, code);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendIDList: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_PMNS_NAMES:
+ if ((e = __pmDecodeNameList(pb, &numlist, &namelist, &statlist)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeNameList: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_PMNS_NAMES:\n");
+ if (namelist != NULL)
+ __pmDumpNameList(stderr, numlist, namelist);
+ if (statlist != NULL)
+ __pmDumpStatusList(stderr, numlist, statlist);
+ }
+#endif
+ e = __pmSendNameList(fd, mypid, numlist, namelist, statlist);
+ if (namelist != NULL)
+ free(namelist);
+ if (statlist != NULL)
+ free(statlist);
+ if (e < 0) {
+ fprintf(stderr, "%s Error: SendNameList: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_PMNS_CHILD:
+ if ((e = __pmDecodeChildReq(pb, &name, &code)) < 0) {
+ fprintf(stderr, "%s Error: DecodeChildReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_PMNS_CHILD: name=\"%s\" code=%d\n", name, code);
+ }
+#endif
+ e = __pmSendChildReq(fd, mypid, name, code);
+ free(name);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendChildReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_PMNS_TRAVERSE:
+ if ((e = __pmDecodeTraversePMNSReq(pb, &name)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeTraversePMNSReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_PMNS_TRAVERSE: name=\"%s\"\n", name);
+ }
+#endif
+ e = __pmSendTraversePMNSReq(fd, mypid, name);
+ free(name);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendTraversePMNSReq: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_LOG_CONTROL:
+ if ((e = __pmDecodeLogControl(pb, &rp, &control, &state, &rate)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeLogControl: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_LOG_CONTROL: control=%d state=%d rate=%d\n",
+ control, state, rate);
+ __pmDumpResult(stderr, rp);
+ }
+#endif
+ e = __pmSendLogControl(fd, rp, control, state, rate);
+ pmFreeResult(rp);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendLogControl: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_LOG_STATUS:
+ if ((e = __pmDecodeLogStatus(pb, &lsp)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeLogStatus: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ struct timeval foo;
+ fprintf(stderr, "+ PDU_LOG_STATUS: start=%d.%06d ",
+ lsp->ls_start.tv_sec, lsp->ls_start.tv_usec);
+ foo.tv_sec = lsp->ls_start.tv_sec;
+ foo.tv_usec = lsp->ls_start.tv_usec;
+ __pmPrintStamp(stderr, &foo);
+ fprintf(stderr, "\nlast=%d.%06d ",
+ lsp->ls_last.tv_sec, lsp->ls_last.tv_usec);
+ foo.tv_sec = lsp->ls_last.tv_sec;
+ foo.tv_usec = lsp->ls_last.tv_usec;
+ __pmPrintStamp(stderr, &foo);
+ fprintf(stderr, " now=%d.%06d ",
+ lsp->ls_timenow.tv_sec, lsp->ls_timenow.tv_usec);
+ foo.tv_sec = lsp->ls_timenow.tv_sec;
+ foo.tv_usec = lsp->ls_timenow.tv_usec;
+ __pmPrintStamp(stderr, &foo);
+ fprintf(stderr, "\nstate=%d vol=%d size=%lld host=%s tz=\"%s\" tzlogger=\"%s\"\n",
+ lsp->ls_state, lsp->ls_vol, (long long)lsp->ls_size,
+ lsp->ls_hostname, lsp->ls_tz, lsp->ls_tzlogger);
+ }
+#endif
+ e = __pmSendLogStatus(fd, lsp);
+ __pmUnpinPDUBuf(pb);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: SendLogStatus: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case PDU_LOG_REQUEST:
+ if ((e = __pmDecodeLogRequest(pb, &control)) < 0) {
+ fprintf(stderr, "%s: Error: DecodeLogRequest: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ PDU_LOG_REQUEST: request=");
+ if (control == LOG_REQUEST_NEWVOLUME)
+ fprintf(stderr, "new volume\n");
+ else if (control == LOG_REQUEST_STATUS)
+ fprintf(stderr, "status\n");
+ else if (control == LOG_REQUEST_SYNC)
+ fprintf(stderr, "sync\n");
+ else
+ fprintf(stderr, " unknown (%d)!\n", control);
+ }
+#endif
+ if ((e = __pmSendLogRequest(fd, control)) < 0) {
+ fprintf(stderr, "%s: Error: SendLogRequest: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case TRACE_PDU_ACK:
+ if ((e = __pmtracedecodeack(pb, &control)) < 0) {
+ fprintf(stderr, "%s: Error: tracedecodeack: %s\n", pmProgname, pmtraceerrstr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ TRACE_PDU_ACK: ack=%d\n", control);
+ }
+#endif
+ if ((e = __pmtracesendack(fd, control)) < 0) {
+ fprintf(stderr, "%s: Error: tracesendack: %s\n", pmProgname, pmtraceerrstr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ case TRACE_PDU_DATA:
+ if ((e = __pmtracedecodedata(pb, &name, &xlen, &xtype, &proto, &value)) < 0) {
+ fprintf(stderr, "%s: Error: tracedecodedata: %s\n", pmProgname, pmtraceerrstr(e));
+ break;
+ }
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "+ TRACE_PDU_DATA: tag=\"%s\" taglen=%d type=",
+ name, xlen);
+ if (xtype == TRACE_TYPE_TRANSACT)
+ fprintf(stderr, "transact");
+ else if (xtype == TRACE_TYPE_POINT)
+ fprintf(stderr, "point");
+ else if (xtype == TRACE_TYPE_OBSERVE)
+ fprintf(stderr, "observe");
+ else
+ fprintf(stderr, "unknown (%d)!", xtype);
+ fprintf(stderr, " value=%g\n", value);
+ }
+#endif
+ e = __pmtracesenddata(fd, name, xlen, xtype, value);
+ free(name);
+ if (e < 0) {
+ fprintf(stderr, "%s: Error: tracesenddata: %s\n", pmProgname, pmtraceerrstr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ default:
+ if ((e = __pmSendError(fd, mypid, PM_ERR_NYI)) < 0) {
+ fprintf(stderr, "%s: Error: SendError: %s\n", pmProgname, pmErrStr(e));
+ break;
+ }
+ fail = 0;
+ break;
+
+ }
+
+ fflush(stderr);
+
+ return fail;
+}
+
+int
+main(int argc, char *argv[])
+{
+ int fd;
+ int port = 4323;
+ /* default port for remote connection to pdu-server */
+ int i, sts;
+ int c;
+ int newfd;
+ int new;
+ struct sockaddr_in myAddr;
+ struct linger noLinger = {1, 0};
+ char *endnum;
+ int errflag = 0;
+ __pmPDU *pb;
+ __pmPDUHdr *php;
+ char *fmt;
+ char *p;
+
+ __pmSetProgname(argv[0]);
+ mypid = getpid();
+
+ while ((c = getopt(argc, argv, "D:p:rZ:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'r': /* raw mode, no decode/encode */
+ raw = 1;
+ break;
+
+ case 'p':
+ port = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: port argument must be a numeric internet port number\n", pmProgname);
+ exit(1);
+ }
+ break;
+
+ case 'Z': /* $TZ timezone */
+ pmNewZone(optarg);
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc) {
+ fprintf(stderr, "Usage: %s [-D n] [-p port] [-r] [-Z timezone]\n", pmProgname);
+ exit(1);
+ }
+
+ fd = socket(AF_INET, SOCK_STREAM, 0);
+ if (fd < 0) {
+ perror("socket");
+ exit(1);
+ }
+ if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *) &i,
+ sizeof(i)) < 0) {
+ perror("setsockopt(nodelay)");
+ exit(1);
+ }
+ /* Don't linger on close */
+ if (setsockopt(fd, SOL_SOCKET, SO_LINGER, (char *) &noLinger, sizeof(noLinger)) < 0) {
+ perror("setsockopt(nolinger)");
+ exit(1);
+ }
+
+ memset(&myAddr, 0, sizeof(myAddr));
+ myAddr.sin_family = AF_INET;
+ myAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+ myAddr.sin_port = htons(port);
+ sts = bind(fd, (struct sockaddr*)&myAddr, sizeof(myAddr));
+ if (sts < 0) {
+ fprintf(stderr, "bind(%d): %s\n", port, strerror(errno));
+ exit(1);
+ }
+
+ sts = listen(fd, 5); /* Max. of 5 pending connection requests */
+ if (sts == -1) {
+ perror("listen");
+ exit(1);
+ }
+
+ fprintf(stderr, "%s: MYPID %" FMT_PID, pmProgname, mypid);
+ /* don't have %x equivalent of FMT_PID unfortunately */
+ fmt = strdup(" %" FMT_PID "\n");
+ p = index(fmt, 'd');
+ *p = 'x';
+ fprintf(stderr, fmt, mypid);
+ free(fmt);
+
+ for ( ; ; ) {
+
+ newfd = accept(fd, (struct sockaddr *)0, 0);
+ if (newfd < 0) {
+ fprintf(stderr, "%s: accept: %s\n", pmProgname, strerror(errno));
+ exit(1);
+ }
+
+ new = 1;
+
+ if (!raw && __pmSetVersionIPC(newfd, PDU_VERSION) < 0) {
+ fprintf(stderr, "%s: __pmSetVersionIPC: %s\n", pmProgname, pmErrStr(-errno));
+ exit(1);
+ }
+
+ for ( ; ; ) {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ fprintf(stderr, "\n%s: waiting ...\n", pmProgname);
+#endif
+ sts = __pmGetPDU(newfd, ANY_SIZE, TIMEOUT_NEVER, &pb);
+ if (sts == 0) {
+ fprintf(stderr, "%s: end-of-file\n", pmProgname);
+ break;
+ }
+ else if (sts < 0) {
+ fprintf(stderr, "%s: __pmGetPDU: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+
+ if (new) {
+ php = (__pmPDUHdr *)pb;
+ fprintf(stderr, "\n%s: new connection fd=%d CLIENTPID %d %x\n\n",
+ pmProgname, newfd, php->from, php->from);
+ new = 0;
+ }
+
+ if (raw) {
+ sts = __pmXmitPDU(newfd, pb);
+ if (sts < 0) {
+ fprintf(stderr, "%s: __pmXmitPDU: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ continue;
+ }
+
+ /*
+ * use PDU type to decode via libpcp, and then libpcp to
+ * send (encode + xmit)
+ */
+ if ((sts = decode_encode(newfd, pb, sts)) < 0) {
+ fprintf(stderr, "%s: decode_encode error, disconnect\n", pmProgname);
+ break;
+ }
+ }
+
+ close(newfd);
+ }
+
+}
diff --git a/qa/src/pducheck.c b/qa/src/pducheck.c
new file mode 100644
index 0000000..376bdf7
--- /dev/null
+++ b/qa/src/pducheck.c
@@ -0,0 +1,1512 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * Mongo PDU conversion exerciser --
+ * + if run standalone uses Send and Recv down its own pipe.
+ * + if run remotely uses pdu-server at other end to echo PDUs
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/trace.h>
+#include <pcp/trace_dev.h>
+#include <math.h>
+#include "localconfig.h"
+
+static int fd[2];
+static int standalone = 1;
+static int e;
+static pmID pmidlist[6];
+
+/*
+ * warning:
+ * instlist[], namelist[] and statlist[] must have the same number
+ * of elements!
+ */
+
+static int instlist[] = {
+ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
+};
+
+static char *namelist[] = {
+ /* 1 */ "alpha",
+ /* 2 */ "beta",
+ /* 4 */ "gamma",
+ /* 8 */ "long-non-greek-letter-name-in-the-middle",
+ /* 16 */ "delta",
+ /* 32 */ "epsilon",
+ /* 64 */ "phi",
+ /* 128 */ "mu",
+ /* 256 */ "lambda",
+ /* 512 */ "omega",
+ /* 1024 */ "theta"
+};
+
+static int statlist[] = {
+ -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
+};
+
+static struct {
+ int inst;
+ char *name;
+} indomlist[] = {
+ { 0xdead, NULL },
+ { 0, "fisho" },
+ { 0, NULL }
+};
+
+static pmDesc desc = {
+ 0xdeadbeef, PM_TYPE_64, 0xface, PM_SEM_COUNTER,
+ { 1, -1 , 0, PM_SPACE_MBYTE, PM_TIME_HOUR, 0 }
+};
+
+__pmLoggerStatus logstat;
+
+static int timeout = TIMEOUT_DEFAULT;
+static int iter = 5;
+static int pass;
+
+static long
+foorand(void)
+{
+ static long rn[] = {
+ 851401618, 1804928587, 758783491, 959030623, 684387517, 1903590565,
+ 33463914, 1254324197, 342241519, 824023566, 1483920592, 126398554,
+ 1932422408, 351212254, 341603450, 1144747756, 1297389768, 1251336619,
+ 579758561, 838545539, 630072926, 1594243340, 641078858, 162216788,
+ 869693583, 1841205112, 2022861571, 1423418003, 1817792895, 5916492,
+ 992951867, 1143741253, 1691952160, 570397931, 2110444415, 658816051,
+ 1290326580, 1307206911, 456208845, 1902445306, 654246144, 326116574,
+ 725123414, 832100416, 1382141583, 1618243337, 1296255701, 1141662977,
+ 986468767, 1401208270, 702616199, 2032315143, 790359597, 2026989069,
+ 15952070, 1109389944, 585771160, 52182039, 1271212614, 440155785
+ };
+ static int cnum = sizeof(rn) / sizeof (long);
+ static int cur=-1;
+
+
+ cur = (cur+1) % cnum;
+ return (rn[cur]);
+}
+
+static void
+_z(void)
+{
+ __pmPDU *pb;
+ __pmTracePDU *tpb;
+ int i;
+ int j;
+ int k;
+ int n;
+ pmID pmid;
+ pmResult *rp;
+ pmValueBlock myvb;
+ pmValueBlock *gvbp;
+ pmValueBlock *xvbp;
+ pmAtomValue av;
+ int ident;
+ int type;
+ char *buffer;
+ int control;
+ int attr;
+ int rate;
+ int state;
+ int num;
+ pmID *pmidp;
+ __pmInResult inres;
+ __pmInResult *inresp;
+ pmInDom indom;
+ int inst;
+ pmDesc result_desc;
+ pmDesc *descp = &result_desc;
+ int ctxnum;
+ __pmTimeval now;
+ __pmProfile curprof;
+ __pmInDomProfile idp[2];
+ __pmProfile *profp;
+ pmResult *resp;
+ int code;
+ int nv;
+ int sav_nv;
+ int sav_np;
+ int sender;
+ int count;
+ char *vp;
+ __pmCred increds[1];
+ __pmCred *outcreds;
+ char *resname;
+ char **resnamelist;
+ int *resstatlist;
+ __pmLoggerStatus *lsp;
+ double pi = M_PI;
+ char mytag[10];
+ /*
+ * use pid as "from" context for backwards compatibility to
+ * keep QA tests happy, rather than FROM_ANON which would be
+ * the more normal value for this usage.
+ */
+ pid_t mypid = getpid();
+
+/* PDU_ERROR */
+ for (i = -1; i < 2; i += 2) {
+ if ((e = __pmSendError(fd[1], mypid, i * PM_ERR_GENERIC)) < 0) {
+ fprintf(stderr, "Error: SendError: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvError: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvError: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_ERROR) {
+ fprintf(stderr, "Error: RecvError: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ __pmOverrideLastFd(PDU_OVERRIDE2);
+ if ((e = __pmDecodeError(pb, &code)) < 0) {
+ fprintf(stderr, "Error: DecodeError: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (code != i * PM_ERR_GENERIC)
+ fprintf(stderr, "Botch: Error: code: got: 0x%x expect: 0x%x\n",
+ code, i * PM_ERR_GENERIC);
+ }
+ }
+ }
+ }
+
+/* PDU_RESULT */
+ resp = NULL;
+ num = 7; /* the _maximum_ number of merics we have */
+ rp = (pmResult *)malloc(sizeof(*rp) + (num -1)*sizeof(pmValueSet *));
+ rp->timestamp.tv_sec = 30 * 60 * 60; /* 30 hrs after the epoch */
+ rp->timestamp.tv_usec = 123456; /* plus a gnat */
+ i = 0;
+ /* singular instance, insitu value */
+ rp->vset[i] = (pmValueSet *)malloc(sizeof(*rp->vset[0]));
+ rp->vset[i]->pmid = 0xdead;
+ rp->vset[i]->numval = 1;
+ rp->vset[i]->valfmt = PM_VAL_INSITU;
+ rp->vset[i]->vlist[0].inst = PM_IN_NULL;
+ rp->vset[i]->vlist[0].value.lval = 1234;
+ i++;
+ /* 3 instances, all values insitu */
+ rp->vset[i] = (pmValueSet *)malloc(sizeof(*rp->vset[1])+2*sizeof(pmValue));
+ rp->vset[i]->pmid = 0xbeef;
+ rp->vset[i]->numval = 3;
+ rp->vset[i]->valfmt = PM_VAL_INSITU;
+ rp->vset[i]->vlist[0].inst = 2;
+ rp->vset[i]->vlist[0].value.lval = 2345;
+ rp->vset[i]->vlist[1].inst = 4;
+ rp->vset[i]->vlist[1].value.lval = 3456;
+ rp->vset[i]->vlist[2].inst = 8;
+ rp->vset[i]->vlist[2].value.lval = 4567;
+ i++;
+ /* singular instance, STRING value in pmValueBlock */
+ rp->vset[i] = (pmValueSet *)malloc(sizeof(*rp->vset[0]));
+ rp->vset[i]->pmid = pmidlist[0];
+ rp->vset[i]->numval = 1;
+ rp->vset[i]->valfmt = PM_VAL_DPTR;
+ rp->vset[i]->vlist[0].inst = PM_IN_NULL;
+ rp->vset[i]->vlist[0].value.pval = &myvb;
+ rp->vset[i]->vlist[0].value.pval->vtype = PM_TYPE_STRING;
+ rp->vset[i]->vlist[0].value.pval->vlen = PM_VAL_HDR_SIZE + 2;
+ av.cp = "0";
+ if ((e = __pmStuffValue(&av, &rp->vset[i]->vlist[0], PM_TYPE_STRING)) < 0) {
+ fprintf(stderr, "Error: __pmStuffValue vset[%d] PM_TYPE_STRING: %s\n", i, pmErrStr(e));
+ exit(1);
+ }
+ rp->vset[i]->vlist[0].value.pval->vbuf[0] = '0' + pass;
+ i++;
+ /* singular instance, U64 value in pmValueBlock */
+ rp->vset[i] = (pmValueSet *)malloc(sizeof(*rp->vset[0]));
+ rp->vset[i]->pmid = pmidlist[1];
+ rp->vset[i]->numval = 1;
+ rp->vset[i]->vlist[0].inst = PM_IN_NULL;
+ av.ull = 0x8765432112345678LL;
+ if ((e = __pmStuffValue(&av, &rp->vset[i]->vlist[0], PM_TYPE_U64)) < 0) {
+ fprintf(stderr, "Error: __pmStuffValue vset[%d] PM_TYPE_U64: %s\n", i, pmErrStr(e));
+ exit(1);
+ }
+ rp->vset[i]->valfmt = e;
+ i++;
+ /* singular instance, FLOAT value in pmValueBlock */
+ rp->vset[i] = (pmValueSet *)malloc(sizeof(*rp->vset[0]));
+ rp->vset[i]->pmid = pmidlist[2];
+ rp->vset[i]->numval = 1;
+ rp->vset[i]->vlist[0].inst = PM_IN_NULL;
+ av.f = 4.3E+21;
+ if ((e = __pmStuffValue(&av, &rp->vset[i]->vlist[0], PM_TYPE_FLOAT)) < 0) {
+ fprintf(stderr, "Error: __pmStuffValue vset[%d] PM_TYPE_FLOAT: %s\n", i, pmErrStr(e));
+ exit(1);
+ }
+ rp->vset[i]->valfmt = e;
+ i++;
+ /* singular instance, DOUBLE value in pmValueBlock */
+ rp->vset[i] = (pmValueSet *)malloc(sizeof(*rp->vset[0]));
+ rp->vset[i]->pmid = pmidlist[3];
+ rp->vset[i]->numval = 1;
+ rp->vset[i]->vlist[0].inst = PM_IN_NULL;
+ av.d = 4.56E+123;
+ if ((e = __pmStuffValue(&av, &rp->vset[i]->vlist[0], PM_TYPE_DOUBLE)) < 0) {
+ fprintf(stderr, "Error: __pmStuffValue vset[%d] PM_TYPE_DOUBLE: %s\n", i, pmErrStr(e));
+ exit(1);
+ }
+ rp->vset[i]->valfmt = e;
+ i++;
+ /* no values */
+ rp->vset[i] = (pmValueSet *)malloc(sizeof(*rp->vset[0]));
+ rp->vset[i]->pmid = 0xdeadcafe;
+ rp->vset[i]->numval = PM_ERR_GENERIC;
+ i++;
+ /* done with setup, do it! */
+ rp->numpmid = i;
+ if ((e = __pmSendResult(fd[1], mypid, rp)) < 0) {
+ fprintf(stderr, "Error: SendResult: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvResult: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvResult: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_RESULT) {
+ fprintf(stderr, "Error: RecvResult: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeResult(pb, &resp)) < 0) {
+ fprintf(stderr, "Error: DecodeResult: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ }
+ }
+ if (resp->timestamp.tv_sec != rp->timestamp.tv_sec)
+ fprintf(stderr, "Botch: Result: tv_sec: got: %d expect: %d\n",
+ (int)resp->timestamp.tv_sec, (int)rp->timestamp.tv_sec);
+ if (resp->timestamp.tv_usec != rp->timestamp.tv_usec)
+ fprintf(stderr, "Botch: Result: tv_usec: got: %d expect: %d\n",
+ (int)resp->timestamp.tv_usec, (int)rp->timestamp.tv_usec);
+ if (resp->numpmid != rp->numpmid)
+ fprintf(stderr, "Botch: Result: numpmid: got: %d expect: %d\n",
+ resp->numpmid, rp->numpmid);
+ for (i = 0; i < rp->numpmid; i++) {
+ if (resp->vset[i]->pmid != rp->vset[i]->pmid)
+ fprintf(stderr, "Botch: Result: vset[%d].pmid: got: 0x%x expect: 0x%x\n",
+ i, resp->vset[i]->pmid, rp->vset[i]->pmid);
+ if (resp->vset[i]->numval != rp->vset[i]->numval) {
+ fprintf(stderr, "Botch: Result: vset[%d].numval: got: %d expect: %d\n",
+ i, resp->vset[i]->numval, rp->vset[i]->numval);
+ continue;
+ }
+ if (resp->vset[i]->numval < 0)
+ continue;
+ if (resp->vset[i]->valfmt != rp->vset[i]->valfmt)
+ fprintf(stderr, "Botch: Result: vset[%d].valfmt: got: %d expect: %d\n",
+ i, resp->vset[i]->valfmt, rp->vset[i]->valfmt);
+ for (j = 0; j < rp->vset[i]->numval; j++) {
+ if (resp->vset[i]->vlist[j].inst != rp->vset[i]->vlist[j].inst)
+ fprintf(stderr, "Botch: Result: vset[%d][%d].inst: got: %d expect: %d\n",
+ i, j, resp->vset[i]->vlist[j].inst,
+ rp->vset[i]->vlist[j].inst);
+ if (resp->vset[i]->valfmt != rp->vset[i]->valfmt)
+ continue;
+ if (resp->vset[i]->valfmt == PM_VAL_INSITU) {
+ if (resp->vset[i]->vlist[j].value.lval != rp->vset[i]->vlist[j].value.lval)
+ fprintf(stderr, "Botch: Result: vset[%d][%d].value.lval: got: %d expect: %d\n",
+ i, j, resp->vset[i]->vlist[j].value.lval,
+ rp->vset[i]->vlist[j].value.lval);
+ continue;
+ }
+ /* NOT insitu */
+ gvbp = resp->vset[i]->vlist[j].value.pval;
+ xvbp = rp->vset[i]->vlist[j].value.pval;
+ if (gvbp->vlen != xvbp->vlen)
+ fprintf(stderr, "Botch: Result: vset[%d][%d].value.pval->vlen: got %d expect %d\n",
+ i, j, gvbp->vlen, xvbp->vlen);
+ if (gvbp->vtype != xvbp->vtype) {
+ fprintf(stderr, "Botch: Result: vset[%d][%d].value.pval->vtype: got %d expect %d\n",
+ i, j, gvbp->vtype, xvbp->vtype);
+ continue;
+ }
+ switch (gvbp->vtype) {
+ pmAtomValue gav;
+ pmAtomValue xav;
+ case PM_TYPE_STRING:
+ if (strncmp(gvbp->vbuf, xvbp->vbuf, gvbp->vlen - sizeof(int)) != 0)
+ fprintf(stderr, "Botch: Result: vset[%d][%d].value.pval->vbuf: got \"%*.*s\" expect \"%*.*s\"\n",
+ i, j, gvbp->vlen, gvbp->vlen, gvbp->vbuf,
+ gvbp->vlen, gvbp->vlen, xvbp->vbuf);
+ break;
+ case PM_TYPE_64:
+ case PM_TYPE_U64:
+ memcpy(&gav.ull, gvbp->vbuf, sizeof(__uint64_t));
+ memcpy(&xav.ull, xvbp->vbuf, sizeof(__uint64_t));
+ if (gav.ull != xav.ull)
+ fprintf(stderr, "Botch: Result: vset[%d][%d].value.pval->ull: got %lld expect %lld\n",
+ i, j, (long long)gav.ull, (long long)xav.ull);
+ break;
+ case PM_TYPE_FLOAT:
+ memcpy(&gav.f, gvbp->vbuf, sizeof(float));
+ memcpy(&xav.f, xvbp->vbuf, sizeof(float));
+ if (gav.f != xav.f)
+ fprintf(stderr, "Botch: Result: vset[%d][%d].value.pval->ull: got %e expect %e\n",
+ i, j, (double)gav.f, (double)xav.f);
+ break;
+ case PM_TYPE_DOUBLE:
+ memcpy(&gav.d, gvbp->vbuf, sizeof(double));
+ memcpy(&xav.d, xvbp->vbuf, sizeof(double));
+ if (gav.d != xav.d)
+ fprintf(stderr, "Botch: Result: vset[%d][%d].value.pval->ull: got %e expect %e\n",
+ i, j, gav.d, xav.d);
+ break;
+ }
+ }
+ }
+ if (resp != NULL)
+ pmFreeResult(resp);
+
+/* PDU_PROFILE */
+ n = sizeof(instlist) / sizeof(instlist[0]);
+ curprof.state = PM_PROFILE_EXCLUDE;
+ curprof.profile_len = 2;
+ curprof.profile = idp;
+ idp[0].indom = 0xdeadcafe;
+ idp[0].state = PM_PROFILE_INCLUDE;
+ idp[0].instances_len = 1 + (foorand() % n);
+ idp[0].instances = instlist;
+ idp[1].indom = 0xface;
+ idp[1].state = PM_PROFILE_EXCLUDE;
+ idp[1].instances_len = 1 + (foorand() % n);
+ idp[1].instances = &instlist[n - idp[1].instances_len];
+ /* context no == 42 ... hack */
+ if ((e = __pmSendProfile(fd[1], mypid, 42, &curprof)) < 0) {
+ fprintf(stderr, "Error: SendProfile: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvProfile: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvProfile: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_PROFILE) {
+ fprintf(stderr, "Error: RecvProfile: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ profp = NULL;
+ if ((e = __pmDecodeProfile(pb, &ctxnum, &profp)) < 0) {
+ fprintf(stderr, "Error: DecodeProfile: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (ctxnum != 42)
+ fprintf(stderr, "Botch: Profile: ctxnum: got: %d expect: %d\n",
+ ctxnum, 42);
+ if (profp == NULL)
+ fprintf(stderr, "Botch: Profile: profp is NULL!\n");
+ else {
+ if (profp->state != curprof.state)
+ fprintf(stderr, "Botch: Profile: global state: got: %d expect: %d\n",
+ profp->state, curprof.state);
+ if (profp->profile_len != curprof.profile_len)
+ fprintf(stderr, "Botch: Profile: profile_len: got: %d expect: %d\n",
+ profp->profile_len, curprof.profile_len);
+ if (profp->profile == NULL)
+ fprintf(stderr, "Botch: Profile: profp->profile is NULL!\n");
+ else {
+ for (i = 0; i < curprof.profile_len; i++) {
+ if (profp->profile[i].indom != curprof.profile[i].indom)
+ fprintf(stderr, "Botch: Profile: [%d]indom: got: 0x%x expect: 0x%x\n",
+ i, profp->profile[i].indom, curprof.profile[i].indom);
+ if (profp->profile[i].state != curprof.profile[i].state)
+ fprintf(stderr, "Botch: Profile: [%d]state: got: %d expect: %d\n",
+ i, profp->profile[i].state, curprof.profile[i].state);
+ if (profp->profile[i].instances_len != curprof.profile[i].instances_len)
+ fprintf(stderr, "Botch: Profile: [%d]instances_len: got: %d expect: %d\n",
+ i, profp->profile[i].instances_len, curprof.profile[i].instances_len);
+ else if (profp->profile[i].instances == NULL)
+ fprintf(stderr, "Botch: Profile: profp->profile[%d].instances is NULL!\n", i);
+ else {
+ for (k = 0; k <curprof.profile[i].instances_len; k++) {
+ if (profp->profile[i].instances[k] != curprof.profile[i].instances[k])
+ fprintf(stderr, "Botch: Profile: [%d]instances[%d]: got: %d expect: %d\n",
+ i, k, profp->profile[i].instances[k], curprof.profile[i].instances[k]);
+ }
+ free(profp->profile[i].instances);
+ }
+ }
+ free(profp->profile);
+ }
+ free(profp);
+ }
+ }
+ }
+ }
+
+/* PDU_FETCH */
+ n = sizeof(pmidlist) / sizeof(pmidlist[0]);
+ if (pass != 0)
+ n = 1 + (foorand() % n);
+ if ((e = __pmSendFetch(fd[1], mypid, 43, (__pmTimeval *)0, n, pmidlist)) < 0) {
+ fprintf(stderr, "Error: SendFetch: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvFetch: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvFetch: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_FETCH) {
+ fprintf(stderr, "Error: RecvFetch: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeFetch(pb, &ctxnum, &now, &num, &pmidp)) < 0) {
+ fprintf(stderr, "Error: DecodeFetch: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (ctxnum != 43)
+ fprintf(stderr, "Botch: Fetch: ctxnum: got: %d expect: %d\n",
+ ctxnum, 43);
+ if (num != n)
+ fprintf(stderr, "Botch: Fetch: num: got: %d expect: %d\n",
+ num, n);
+ else {
+ for (i = 0; i < num; i++) {
+ if (pmidlist[i] != pmidp[i])
+ fprintf(stderr, "Botch: Fetch: pmidlist[%d]: got: 0x%x expect: 0x%x\n",
+ i, pmidp[i], pmidlist[i]);
+ }
+ }
+ __pmUnpinPDUBuf(pmidp);
+ }
+ }
+ }
+
+/* PDU_DESC_REQ */
+ if ((e = __pmSendDescReq(fd[1], mypid, 0xdeadbeef)) < 0) {
+ fprintf(stderr, "Error: SendDescReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvDescReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvDescReq: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_DESC_REQ) {
+ fprintf(stderr, "Error: RecvDescReq: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeDescReq(pb, &pmid)) < 0) {
+ fprintf(stderr, "Error: DecodeDescReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (pmid != 0xdeadbeef)
+ fprintf(stderr, "Botch: DescReq: pmid: got: 0x%x expect: 0x%x\n",
+ pmid, 0xdeadbeef);
+ }
+ }
+ }
+
+/* PDU_DESC */
+ if ((e = __pmSendDesc(fd[1], mypid, &desc)) < 0) {
+ fprintf(stderr, "Error: SendDesc: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvDesc: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvDesc: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_DESC) {
+ fprintf(stderr, "Error: RecvDesc: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeDesc(pb, descp)) < 0) {
+ fprintf(stderr, "Error: DecodeDesc: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (descp->pmid != desc.pmid)
+ fprintf(stderr, "Botch: Desc: pmid: got: 0x%x expect: 0x%x\n",
+ descp->pmid, desc.pmid);
+ if (descp->type != desc.type)
+ fprintf(stderr, "Botch: Desc: type: got: %d expect: %d\n",
+ descp->type, desc.type);
+ if (descp->indom != desc.indom)
+ fprintf(stderr, "Botch: Desc: indom: got: 0x%x expect: 0x%x\n",
+ descp->indom, desc.indom);
+ if (descp->sem != desc.sem)
+ fprintf(stderr, "Botch: Desc: sem: got: %d expect: %d\n",
+ descp->sem, desc.sem);
+ if (descp->units.dimSpace != desc.units.dimSpace)
+ fprintf(stderr, "Botch: Desc: dimSpace: got: %d expect: %d\n",
+ descp->units.dimSpace, desc.units.dimSpace);
+ if (descp->units.dimTime != desc.units.dimTime)
+ fprintf(stderr, "Botch: Desc: dimTime: got: %d expect: %d\n",
+ descp->units.dimTime, desc.units.dimTime);
+ if (descp->units.dimCount != desc.units.dimCount)
+ fprintf(stderr, "Botch: Desc: dimCount: got: %d expect: %d\n",
+ descp->units.dimCount, desc.units.dimCount);
+ if (descp->units.scaleSpace != desc.units.scaleSpace)
+ fprintf(stderr, "Botch: Desc: scaleSpace: got: %d expect: %d\n",
+ descp->units.scaleSpace, desc.units.scaleSpace);
+ if (descp->units.scaleTime != desc.units.scaleTime)
+ fprintf(stderr, "Botch: Desc: scaleTime: got: %d expect: %d\n",
+ descp->units.scaleTime, desc.units.scaleTime);
+ if (descp->units.scaleCount != desc.units.scaleCount)
+ fprintf(stderr, "Botch: Desc: scaleCount: got: %d expect: %d\n",
+ descp->units.scaleCount, desc.units.scaleCount);
+ }
+ }
+ }
+
+/* PDU_INSTANCE_REQ */
+ n = sizeof(indomlist) / sizeof(indomlist[0]);
+ if (pass != 0)
+ n = 1 + (foorand() % n);
+ now.tv_sec = 60 * 60 * 60; /* 60 hrs after the epoch */
+ now.tv_usec = 654321; /* plus a gnat */
+ for (i = 0; i < n; i++) {
+ __pmTimeval tmp;
+ if ((e = __pmSendInstanceReq(fd[1], mypid, &now, 0xface, indomlist[i].inst, indomlist[i].name)) < 0) {
+ fprintf(stderr, "Error: SendInstanceReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvInstanceReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvInstanceReq: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_INSTANCE_REQ) {
+ fprintf(stderr, "Error: RecvInstanceReq: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeInstanceReq(pb, &tmp, &indom, &inst, &resname)) < 0) {
+ fprintf(stderr, "Error: DecodeInstanceReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (tmp.tv_sec != now.tv_sec || tmp.tv_usec != now.tv_usec)
+ fprintf(stderr, "Botch: InstanceReq: when: got: %d,%d expect: %d,%d\n",
+ tmp.tv_sec, tmp.tv_usec, now.tv_sec, now.tv_usec);
+ if (indom != 0xface)
+ fprintf(stderr, "Botch: InstanceReq: indom: got: 0x%x expect: 0x%x\n",
+ indom, 0xface);
+ if (inst != indomlist[i].inst)
+ fprintf(stderr, "Botch: InstanceReq: inst: got: %d expect: %d\n",
+ inst, indomlist[i].inst);
+ if (resname != (char *)0 && indomlist[i].name != (char *)0 &&
+ strcmp(resname, indomlist[i].name) != 0)
+ fprintf(stderr, "Botch: InstanceReq: name: got: \"%s\" expect: \"%s\"\n",
+ resname, indomlist[i].name);
+ if ((resname == (char *)0 || indomlist[i].name == 0) &&
+ resname != indomlist[i].name)
+ fprintf(stderr, "Botch: InstanceReq: name: got: " PRINTF_P_PFX "%p expect: " PRINTF_P_PFX "%p\n",
+ resname, indomlist[i].name);
+ if (resname != (char *)0)
+ free(resname);
+ }
+ }
+ }
+ }
+
+/* PDU_INSTANCE */
+ n = sizeof(instlist) / sizeof(instlist[0]);
+ if (pass != 0)
+ n = (foorand() % n); /* zero is ok here */
+ inres.indom = 0x1234;
+ inres.numinst = n;
+ for (k = 0; k < 3; k++) {
+
+ if (k == 0) {
+ inres.instlist = instlist;
+ inres.namelist = namelist;
+ }
+ else if (k == 1) {
+ inres.instlist = NULL;
+ inres.namelist = namelist;
+ }
+ else {
+ inres.instlist = instlist;
+ inres.namelist = NULL;
+ }
+ inresp = NULL;
+ if ((e = __pmSendInstance(fd[1], mypid, &inres)) < 0) {
+ fprintf(stderr, "Error: SendInstance: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvInstance: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvInstance: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_INSTANCE) {
+ fprintf(stderr, "Error: RecvInstance: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeInstance(pb, &inresp)) < 0) {
+ fprintf(stderr, "Error: DecodeInstance: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (inresp->indom != inres.indom)
+ fprintf(stderr, "Botch: Instance: indom: got: 0x%x expect: 0x%x\n",
+ inresp->indom, inres.indom);
+ if (inresp->numinst != inres.numinst)
+ fprintf(stderr, "Botch: Instance: numinst: got: %d expect: %d\n",
+ inresp->numinst, inres.numinst);
+ else {
+ for (i = 0; i < inres.numinst; i++) {
+ if (inres.instlist != NULL &&
+ inresp->instlist[i] != inres.instlist[i])
+ fprintf(stderr, "Botch: Instance: instlist[%d]: got: %d expect: %d\n",
+ i, inresp->instlist[i], inres.instlist[i]);
+ if (inres.namelist != NULL &&
+ strcmp(inresp->namelist[i], inres.namelist[i]) != 0)
+ fprintf(stderr, "Botch: Instance: namelist[%d]: got: \"%s\" expect: \"%s\"\n",
+ i, inresp->namelist[i], inres.namelist[i]);
+ }
+ }
+ }
+ }
+ }
+ if (inresp != NULL)
+ __pmFreeInResult(inresp);
+ }
+
+/* PDU_TEXT_REQ */
+ if ((e = __pmSendTextReq(fd[1], mypid, 0x12341234, PM_TEXT_PMID|PM_TEXT_ONELINE)) < 0) {
+ fprintf(stderr, "Error: SendTextReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvTextReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvTextReq: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_TEXT_REQ) {
+ fprintf(stderr, "Error: RecvTextReq: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeTextReq(pb, &ident, &type)) < 0) {
+ fprintf(stderr, "Error: DecodeTextReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (ident != 0x12341234)
+ fprintf(stderr, "Botch: TextReq: ident: got: 0x%x expect: 0x%x\n",
+ ident, 0x12341234);
+ if (type != (PM_TEXT_PMID|PM_TEXT_ONELINE))
+ fprintf(stderr, "Botch: TextReq: type: got: 0x%x expect: 0x%x\n",
+ type, PM_TEXT_PMID|PM_TEXT_ONELINE);
+ }
+ }
+ }
+
+/* PDU_TEXT */
+#define MARY "mary had a little lamb\nits fleece was white as snow\n"
+ if ((e = __pmSendText(fd[1], mypid, 0x43214321, MARY)) < 0) {
+ fprintf(stderr, "Error: SendText: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvText: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvText: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_TEXT) {
+ fprintf(stderr, "Error: RecvText: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ buffer = NULL;
+ if ((e = __pmDecodeText(pb, &ident, &buffer)) < 0) {
+ fprintf(stderr, "Error: DecodeText: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (ident != 0x43214321)
+ fprintf(stderr, "Botch: TextReq: ident: got: 0x%x expect: 0x%x\n",
+ ident, 0x43214321);
+ if (buffer == NULL)
+ fprintf(stderr, "Botch: TextReq: buffer is NULL!\n");
+ else {
+ if (strcmp(buffer, MARY) != 0)
+ fprintf(stderr, "Botch: Text: buffer: got: \"%s\" expect: \"%s\"\n",
+ buffer, MARY);
+ free(buffer);
+ }
+ }
+ }
+ }
+
+#if PCP_VER >= 3800
+/* PDU_AUTH */
+#define USERNAME "pcpqa"
+ if ((e = __pmSendAuth(fd[1], mypid, PCP_ATTR_USERNAME, USERNAME, sizeof(USERNAME))) < 0) {
+ fprintf(stderr, "Error: SendAuth: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvAuth: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvAuth: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_AUTH) {
+ fprintf(stderr, "Error: RecvAuth: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ buffer = NULL;
+ if ((e = __pmDecodeAuth(pb, &attr, &buffer, &count)) < 0) {
+ fprintf(stderr, "Error: DecodeAuth: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (attr != PCP_ATTR_USERNAME)
+ fprintf(stderr, "Botch: AuthAttr: attr: got: 0x%x expect: 0x%x\n",
+ attr, PCP_ATTR_USERNAME);
+ if (count != sizeof(USERNAME))
+ fprintf(stderr, "Botch: AuthAttr: length: got: 0x%x expect: 0x%x\n",
+ count, (int)sizeof(USERNAME));
+ if (buffer == NULL)
+ fprintf(stderr, "Botch: AuthAttr: payload is NULL!\n");
+ else {
+ if (strncmp(buffer, USERNAME, sizeof(USERNAME)) != 0)
+ fprintf(stderr, "Botch: AuthAttr: payload: got: \"%s\" expect: \"%s\"\n",
+ buffer, USERNAME);
+ }
+ }
+ }
+ }
+#endif
+
+/* PDU_CREDS */
+ sender = 0;
+ count = -1;
+ outcreds = NULL;
+ increds[0].c_type = CVERSION;
+ increds[0].c_vala = (unsigned char)PDU_VERSION;
+ increds[0].c_valb = (unsigned char)10;
+ increds[0].c_valc = (unsigned char)11;
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "0 = %x\n", *(unsigned int*)&(increds[0]));
+ }
+#endif
+ if ((e = __pmSendCreds(fd[1], mypid, 1, increds)) < 0) {
+ fprintf(stderr, "Error: SendCreds: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvCreds: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvCreds: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_CREDS) {
+ fprintf(stderr, "Error: RecvCreds: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ outcreds = NULL;
+ if ((e = __pmDecodeCreds(pb, &sender, &count, &outcreds)) < 0) {
+ fprintf(stderr, "Error: DecodeCreds: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (outcreds == NULL)
+ fprintf(stderr, "Botch: DecodeCreds: outcreds is NULL!\n");
+ else {
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ fprintf(stderr, "0 = %x\n", *(unsigned int*)&(outcreds[0]));
+ }
+#endif
+ if (outcreds[0].c_type != CVERSION)
+ fprintf(stderr, "Botch: Creds: type: got: %x expect: %x\n",
+ (unsigned int)outcreds[0].c_type, (unsigned int)CVERSION);
+ if ((outcreds[0].c_vala != (unsigned char)PDU_VERSION) ||
+ (outcreds[0].c_valb != (unsigned char)10) ||
+ (outcreds[0].c_valc != (unsigned char)11))
+ fprintf(stderr, "Botch: Creds: value mismatch (cred #0)\n");
+ if (standalone && sender != mypid)
+ fprintf(stderr, "Botch: Creds: sender pid mismatch: got:%d expect:%" FMT_PID "\n",
+ sender, mypid);
+ if (count != 1)
+ fprintf(stderr, "Botch: Creds: PDU count: got:%d expect:%d\n", count, 1);
+ if (outcreds != NULL)
+ free(outcreds);
+ }
+ }
+ }
+
+/* PDU_PMNS_IDS */
+ n = sizeof(pmidlist) / sizeof(pmidlist[0]);
+ if (pass != 0)
+ n = 1 + (foorand() % n);
+ if ((e = __pmSendIDList(fd[1], mypid, n, pmidlist, 43)) < 0) {
+ fprintf(stderr, "Error: SendIDList: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvIDList: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvIDList: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_PMNS_IDS) {
+ fprintf(stderr, "Error: RecvIDList: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ pmID mylist[6];
+ if ((e = __pmDecodeIDList(pb, n, mylist, &k)) < 0) {
+ fprintf(stderr, "Error: DecodeIDList: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ if (pmidlist[i] != mylist[i])
+ fprintf(stderr, "Botch: IDList: pmidlist[%d]: got: 0x%x expect: 0x%x\n",
+ i, mylist[i], pmidlist[i]);
+ }
+ if (k != 43)
+ fprintf(stderr, "Botch: IDList: sts: got: %d expect: %d\n",
+ k, 43);
+ }
+ }
+ }
+
+/* PDU_PMNS_NAMES */
+ n = sizeof(namelist) / sizeof(namelist[0]);
+ if (pass != 0)
+ n = 1 + (foorand() % n);
+ if ((e = __pmSendNameList(fd[1], mypid, n, namelist, statlist)) < 0) {
+ fprintf(stderr, "Error: SendNameList: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvNameList: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvNameList: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_PMNS_NAMES) {
+ fprintf(stderr, "Error: RecvNameList: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ resnamelist = NULL;
+ resstatlist = NULL;
+ if ((e = __pmDecodeNameList(pb, &num, &resnamelist, &resstatlist)) < 0) {
+ fprintf(stderr, "Error: DecodeNameList: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (num != n)
+ fprintf(stderr, "Botch: NameList: num: got: %d expect: %d\n",
+ num, n);
+ if (resnamelist == NULL)
+ fprintf(stderr, "Botch: NameList: resnamelist is NULL!\n");
+ else if (resstatlist == NULL)
+ fprintf(stderr, "Botch: NameList: resstatlist is NULL!\n");
+ else {
+ for (i = 0; i < num; i++) {
+ if (strcmp(resnamelist[i], namelist[i]) != 0)
+ fprintf(stderr, "Botch: NameList: name[%d]: got: \"%s\" expect: \"%s\"\n",
+ i, resnamelist[i], namelist[i]);
+ if (resstatlist[i] != statlist[i])
+ fprintf(stderr, "Botch: NameList: stat[%d]: got: %d expect: %d\n",
+ i, resstatlist[i], statlist[i]);
+ }
+ free(resnamelist);
+ free(resstatlist);
+ }
+ }
+ }
+ }
+ /* and again, with NULL statlist */
+ if ((e = __pmSendNameList(fd[1], mypid, n, namelist, NULL)) < 0) {
+ fprintf(stderr, "Error: SendNameList-2: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvNameList-2: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvNameList-2: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_PMNS_NAMES) {
+ fprintf(stderr, "Error: RecvNameList-2: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ resnamelist = NULL;
+ resstatlist = NULL;
+ if ((e = __pmDecodeNameList(pb, &num, &resnamelist, &resstatlist)) < 0) {
+ fprintf(stderr, "Error: DecodeNameList-2: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (num != n)
+ fprintf(stderr, "Botch: NameList-2: num: got: %d expect: %d\n",
+ num, n);
+ if (resstatlist != NULL) {
+ fprintf(stderr, "Botch: NameList-2: resstatlist is NOT NULL!\n");
+ free(resstatlist);
+ }
+ if (resnamelist == NULL)
+ fprintf(stderr, "Botch: NameList-2: resnamelist is NULL!\n");
+ else {
+ for (i = 0; i < num; i++) {
+ if (strcmp(resnamelist[i], namelist[i]) != 0)
+ fprintf(stderr, "Botch: NameList-2: name[%d]: got: \"%s\" expect: \"%s\"\n",
+ i, resnamelist[i], namelist[i]);
+ }
+ free(resnamelist);
+ }
+ }
+ }
+ }
+
+/* PDU_PMNS_CHILD */
+ if ((e = __pmSendChildReq(fd[1], mypid, "mumble.fumble", 1)) < 0) {
+ fprintf(stderr, "Error: SendChildReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvChildReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvChildReq: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_PMNS_CHILD) {
+ fprintf(stderr, "Error: RecvChildReq: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ resname = NULL;
+ if ((e = __pmDecodeChildReq(pb, &resname, &k)) < 0) {
+ fprintf(stderr, "Error: DecodeChildReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (resname == NULL)
+ fprintf(stderr, "Botch: DecodeChildReq: resname is NULL!\n");
+ else {
+ if (strcmp(resname, "mumble.fumble") != 0)
+ fprintf(stderr, "Botch: DecodeChildReq: name: got: \"%s\" expect: \"%s\"\n",
+ resname, "mumble.fumble");
+ if (k != 1)
+ fprintf(stderr, "Botch: DecodeChildReq: subtype: got: %d expect: %d\n",
+ k, 1);
+ free(resname);
+ }
+ }
+ }
+ }
+
+/* PDU_PMNS_TRAVERSE */
+ if ((e = __pmSendTraversePMNSReq(fd[1], mypid, "foo.bar.snort")) < 0) {
+ fprintf(stderr, "Error: SendTraversePMNSReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvTraversePMNSReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvTraversePMNSReq: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_PMNS_TRAVERSE) {
+ fprintf(stderr, "Error: RecvTraversePMNSReq: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ resname = NULL;
+ if ((e = __pmDecodeTraversePMNSReq(pb, &resname)) < 0) {
+ fprintf(stderr, "Error: DecodeTraversePMNSReq: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (resname == NULL)
+ fprintf(stderr, "Botch: DecodeTraversePMNSReq: resname is NULL!\n");
+ else {
+ if (strcmp(resname, "foo.bar.snort") != 0)
+ fprintf(stderr, "Botch: DecodeTraversePMNSReq: name: got: \"%s\" expect: \"%s\"\n",
+ resname, "mumble.fumble");
+ free(resname);
+ }
+ }
+ }
+ }
+
+/* PDU_LOG_CONTROL */
+ sav_nv = rp->vset[0]->numval;
+ sav_np = rp->numpmid;
+ for (nv = -1; nv < 2; nv++) {
+ rp->numpmid = 2; /* use only first 2 from PDU_RESULT above */
+ rp->vset[0]->numval = nv;
+ if ((e = __pmSendLogControl(fd[1], rp, PM_LOG_MANDATORY, PM_LOG_MAYBE, 1000)) < 0) {
+ fprintf(stderr, "Error: SendLogControl: numval=%d %s\n", nv, pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvLogControl: numval=%d %s\n", nv, pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvLogControl: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_LOG_CONTROL) {
+ fprintf(stderr, "Error: RecvLogControl: numval=%d %s wrong type PDU!\n", nv, __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeLogControl(pb, &resp, &control, &state, &rate)) < 0) {
+ fprintf(stderr, "Error: DecodeLogControl: numval=%d %s\n", nv, pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (state != PM_LOG_MAYBE)
+ fprintf(stderr, "Botch: LogControl: numval=%d state: got: %d expect: %d\n",
+ nv, state, PM_LOG_MAYBE);
+ if (control != PM_LOG_MANDATORY)
+ fprintf(stderr, "Botch: LogControl: numval=%d control: got: %d expect: %d\n",
+ nv, control, PM_LOG_MANDATORY);
+ if (rate != 1000)
+ fprintf(stderr, "Botch: LogControl: numval=%d rate: got: %d expect: %d\n",
+ nv, rate, 1000);
+ if (resp->numpmid != rp->numpmid)
+ fprintf(stderr, "Botch: LogControl: numval=%d numpmid: got: %d expect: %d\n",
+ nv, resp->numpmid, rp->numpmid);
+ else {
+ for (i = 0; i < rp->numpmid; i++) {
+ if (resp->vset[i]->pmid != rp->vset[i]->pmid)
+ fprintf(stderr, "Botch: LogControl: numval=%d vset[%d].pmid: got: 0x%x expect: 0x%x\n",
+ nv, i, resp->vset[i]->pmid, rp->vset[i]->pmid);
+ if (resp->vset[i]->valfmt != rp->vset[i]->valfmt)
+ fprintf(stderr, "Botch: LogControl: numval=%d vset[%d].valfmt: got: %d expect: %d\n",
+ nv, i, resp->vset[i]->valfmt, rp->vset[i]->valfmt);
+ if (resp->vset[i]->numval != rp->vset[i]->numval)
+ fprintf(stderr, "Botch: LogControl: numval=%d vset[%d].numval: got: %d expect: %d\n",
+ nv, i, resp->vset[i]->numval, rp->vset[i]->numval);
+ else {
+ for (j = 0; j < rp->vset[i]->numval; j++) {
+ if (resp->vset[i]->vlist[j].inst != rp->vset[i]->vlist[j].inst)
+ fprintf(stderr, "Botch: LogControl: numval=%d vset[%d][%d].inst: got: %d expect: %d\n",
+ nv, i, j, resp->vset[i]->vlist[j].inst, rp->vset[i]->vlist[j].inst);
+ if (resp->vset[i]->vlist[j].value.lval != rp->vset[i]->vlist[j].value.lval)
+ fprintf(stderr, "Botch: LogControl: numval=%d vset[%d][%d].value.lval: got: %d expect: %d\n",
+ nv, i, j, resp->vset[i]->vlist[j].value.lval, rp->vset[i]->vlist[j].value.lval);
+ }
+ }
+ }
+ }
+ pmFreeResult(resp);
+ }
+ }
+ }
+ }
+ rp->vset[0]->numval = sav_nv;
+ rp->numpmid = sav_np;
+
+/* PDU_LOG_STATUS */
+ logstat.ls_start.tv_sec = 13 * 60 * 60; /* 13 hrs after the epoch */
+ logstat.ls_start.tv_usec = 12345; /* and a bit */
+ logstat.ls_last.tv_sec = 13 * 60 * 60 + 10;
+ logstat.ls_last.tv_usec = 23456;
+ logstat.ls_timenow.tv_sec = 13 * 60 * 60 + 20;
+ logstat.ls_timenow.tv_usec = 34567;
+ logstat.ls_state = PM_LOG_MAYBE;
+ logstat.ls_vol = 1;
+ logstat.ls_size = 2048;
+ strcpy(logstat.ls_hostname, "foo");
+ strcpy(logstat.ls_fqdn, "foo.bar.com");
+ strcpy(logstat.ls_tz, "TZ-THERE");
+ strcpy(logstat.ls_tzlogger, "TZ-HERE");
+ if ((e = __pmSendLogStatus(fd[1], &logstat)) < 0) {
+ fprintf(stderr, "Error: SendLogStatus: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvLogStatus: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvLogStatus: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_LOG_STATUS) {
+ fprintf(stderr, "Error: RecvLogStatus: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeLogStatus(pb, &lsp)) < 0) {
+ fprintf(stderr, "Error: DecodeLogStatus: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (lsp->ls_start.tv_sec != logstat.ls_start.tv_sec)
+ fprintf(stderr, "Botch: LogStatus: ls_staty.tv_sec: got: %d expect: %d\n",
+ lsp->ls_start.tv_sec, logstat.ls_start.tv_sec);
+ if (lsp->ls_start.tv_usec != logstat.ls_start.tv_usec)
+ fprintf(stderr, "Botch: LogStatus: ls_staty.tv_usec: got: %d expect: %d\n",
+ lsp->ls_start.tv_usec, logstat.ls_start.tv_usec);
+ if (lsp->ls_last.tv_sec != logstat.ls_last.tv_sec)
+ fprintf(stderr, "Botch: LogStatus: ls_staty.tv_sec: got: %d expect: %d\n",
+ lsp->ls_last.tv_sec, logstat.ls_last.tv_sec);
+ if (lsp->ls_last.tv_usec != logstat.ls_last.tv_usec)
+ fprintf(stderr, "Botch: LogStatus: ls_staty.tv_usec: got: %d expect: %d\n",
+ lsp->ls_last.tv_usec, logstat.ls_last.tv_usec);
+ if (lsp->ls_timenow.tv_sec != logstat.ls_timenow.tv_sec)
+ fprintf(stderr, "Botch: LogStatus: ls_staty.tv_sec: got: %d expect: %d\n",
+ lsp->ls_timenow.tv_sec, logstat.ls_timenow.tv_sec);
+ if (lsp->ls_timenow.tv_usec != logstat.ls_timenow.tv_usec)
+ fprintf(stderr, "Botch: LogStatus: ls_staty.tv_usec: got: %d expect: %d\n",
+ lsp->ls_timenow.tv_usec, logstat.ls_timenow.tv_usec);
+ if (lsp->ls_state != logstat.ls_state)
+ fprintf(stderr, "Botch: LogStatus: ls_state: got: 0x%x expect: 0x%x\n",
+ lsp->ls_state, logstat.ls_state);
+ if (lsp->ls_vol != logstat.ls_vol)
+ fprintf(stderr, "Botch: LogStatus: ls_vol: got: 0x%x expect: 0x%x\n",
+ lsp->ls_vol, logstat.ls_vol);
+ if (lsp->ls_size != logstat.ls_size)
+ fprintf(stderr, "Botch: LogStatus: ls_size: got: 0x%x expect: 0x%x\n",
+ (int)lsp->ls_size, (int)logstat.ls_size);
+ if (strcmp(lsp->ls_hostname, logstat.ls_hostname) != 0)
+ fprintf(stderr, "Botch: LogStatus: ls_hostname: got: \"%s\" expect: \"%s\"\n",
+ lsp->ls_hostname, logstat.ls_hostname);
+ if (strcmp(lsp->ls_fqdn, logstat.ls_fqdn) != 0)
+ fprintf(stderr, "Botch: LogStatus: ls_fqdn: got: \"%s\" expect: \"%s\"\n",
+ lsp->ls_fqdn, logstat.ls_fqdn);
+ if (strcmp(lsp->ls_tz, logstat.ls_tz) != 0)
+ fprintf(stderr, "Botch: LogStatus: ls_tz: got: \"%s\" expect: \"%s\"\n",
+ lsp->ls_tz, logstat.ls_tz);
+ if (strcmp(lsp->ls_tzlogger, logstat.ls_tzlogger) != 0)
+ fprintf(stderr, "Botch: LogStatus: ls_tzlogger: got: \"%s\" expect: \"%s\"\n",
+ lsp->ls_tzlogger, logstat.ls_tzlogger);
+ __pmUnpinPDUBuf(pb);
+ }
+ }
+ }
+
+/* PDU_LOG_REQUEST */
+ if ((e = __pmSendLogRequest(fd[1], LOG_REQUEST_SYNC)) < 0) {
+ fprintf(stderr, "Error: SendLogRequest: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmGetPDU(fd[0], ANY_SIZE, timeout, &pb)) < 0) {
+ fprintf(stderr, "Error: RecvLogRequest: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: RecvLogRequest: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != PDU_LOG_REQUEST) {
+ fprintf(stderr, "Error: RecvLogRequest: %s wrong type PDU!\n", __pmPDUTypeStr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmDecodeLogRequest(pb, &k)) < 0) {
+ fprintf(stderr, "Error: DecodeLogRequest: %s\n", pmErrStr(e));
+ exit(1);
+ }
+ else {
+ if (k != LOG_REQUEST_SYNC)
+ fprintf(stderr, "Botch: LogRequest: request: got: 0x%x expect: 0x%x\n",
+ k, LOG_REQUEST_SYNC);
+ }
+ }
+ }
+
+/* TRACE_PDU_ACK */
+ if ((e = __pmtracesendack(fd[1], 0x41)) < 0) {
+ fprintf(stderr, "Error: tracesendack: %s\n", pmtraceerrstr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmtracegetPDU(fd[0], TRACE_TIMEOUT_DEFAULT, &tpb)) < 0) {
+ fprintf(stderr, "Error: tracegetPDU: %s\n", pmtraceerrstr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: tracegetPDU: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != TRACE_PDU_ACK) {
+ fprintf(stderr, "Error: tracegetPDU: 0x%x wrong type PDU!\n", e);
+ exit(1);
+ }
+ else {
+ if ((e = __pmtracedecodeack(tpb, &k)) < 0) {
+ fprintf(stderr, "Error: tracedecodeack: %s\n", pmtraceerrstr(e));
+ exit(1);
+ }
+ else {
+ if (k != 0x41)
+ fprintf(stderr, "Botch: traceack: request: got: 0x%x expect: 0x%x\n",
+ k, 0x41);
+ }
+ }
+ }
+
+/* TRACE_PDU_DATA */
+ strcpy(mytag, "b1+b2");
+ for (i = 5; i > 0; i--) {
+ int proto;
+ double d;
+ mytag[i] = '\0';
+ if ((e = __pmtracesenddata(fd[1], mytag, i+1, TRACE_TYPE_OBSERVE, i * pi)) < 0) {
+ fprintf(stderr, "Error: tracesenddata: %s\n", pmtraceerrstr(e));
+ exit(1);
+ }
+ else {
+ if ((e = __pmtracegetPDU(fd[0], TRACE_TIMEOUT_DEFAULT, &tpb)) < 0) {
+ fprintf(stderr, "Error: tracegetPDU: %s\n", pmtraceerrstr(e));
+ exit(1);
+ }
+ else if (e == 0) {
+ fprintf(stderr, "Error: tracegetPDU: end-of-file!\n");
+ exit(1);
+ }
+ else if (e != TRACE_PDU_DATA) {
+ fprintf(stderr, "Error: tracegetPDU: 0x%x wrong type PDU!\n", e);
+ exit(1);
+ }
+ else {
+ if ((e = __pmtracedecodedata(tpb, &vp, &j, &k, &proto, &d)) < 0) {
+ fprintf(stderr, "Error: tracedecodedata: %s\n", pmtraceerrstr(e));
+ exit(1);
+ }
+ else {
+ if (strcmp(vp, mytag) != 0)
+ fprintf(stderr, "Botch: tracedata: tag: got: \"%s\" expect: \"%s\"\n",
+ vp, mytag);
+ if (j != i+1)
+ fprintf(stderr, "Botch: tracedata: taglen: got: 0x%x expect: 0x%x\n",
+ j, i);
+ if (k != TRACE_TYPE_OBSERVE)
+ fprintf(stderr, "Botch: tracedata: type: got: 0x%x expect: 0x%x\n",
+ k, TRACE_TYPE_OBSERVE);
+ if (d != i * pi)
+ fprintf(stderr, "Botch: tracedata: value: got: %g expect: %g\n",
+ d, i * pi);
+ free(vp);
+ }
+ }
+ }
+ }
+
+ /* done with rp by now */
+ for (i = 0; i < rp->numpmid; i++) {
+ if (rp->vset[i]->numval > 0 && rp->vset[i]->valfmt == PM_VAL_DPTR) {
+ for (j = 0; j < rp->vset[i]->numval; j++) {
+ if (rp->vset[i]->vlist[j].value.pval != NULL)
+ free(rp->vset[i]->vlist[j].value.pval);
+ }
+ }
+ free(rp->vset[i]);
+ }
+ free(rp);
+
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int port = 4323; /* default port for remote connection */
+ char *endnum;
+ __pmID_int *pmidp;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:i:Np:?")) != EOF) {
+ switch (c) {
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'i': /* iterations */
+ iter = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -i requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'N': /* TIMEOUT_NEVER */
+ timeout = TIMEOUT_NEVER;
+ fprintf(stderr, "+ Using TIMEOUT_NEVER instead of TIMEOUT_DEFAULT +\n");
+ break;
+
+ case 'p': /* port */
+ port = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -p requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind < argc-1) {
+ fprintf(stderr, "Usage: %s [-N] [-D n] [-i iter] [-p port] [host]\n", pmProgname);
+ exit(1);
+ }
+
+ if ((e = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace: %s\n", pmErrStr(e));
+ exit(1);
+ }
+
+ if (optind == argc) {
+ /* standalone, use a pipe */
+ if (pipe(fd) < 0) {
+ perror("pipe");
+ exit(1);
+ }
+ }
+ else {
+ /* remote connection, use a TCP/IP socket */
+ char *host = argv[optind];
+ if ((e = __pmAuxConnectPMCDPort(host, port)) < 0) {
+ fprintf(stderr, "__pmAuxConnectPMCDPort(%s,%d): %s\n", host, port, pmErrStr(e));
+ exit(1);
+ }
+ fd[0] = fd[1] = e;
+ standalone = 0;
+ }
+
+ if (__pmSetVersionIPC(fd[0], PDU_VERSION) < 0 ||
+ __pmSetVersionIPC(fd[1], PDU_VERSION) < 0) {
+ fprintf(stderr, "Error: __pmSetVersionIPC: %s\n", pmErrStr(-errno));
+ exit(1);
+ }
+
+ pmidlist[0] = (pmID)0;
+ pmidlist[1] = (pmID)0;
+ pmidp = (__pmID_int *)&pmidlist[1];
+ pmidp->domain = 123;
+ pmidp->cluster = 456;
+ pmidp->item = 789;
+ pmidlist[2] = (pmID)0;
+ pmidp = (__pmID_int *)&pmidlist[2];
+ pmidp->domain = 255;
+ pmidlist[3] = (pmID)0;
+ pmidp = (__pmID_int *)&pmidlist[3];
+ pmidp->cluster = 4095;
+ pmidlist[4] = (pmID)0;
+ pmidp = (__pmID_int *)&pmidlist[4];
+ pmidp->item = 1023;
+ pmidlist[5] = PM_ID_NULL;
+
+ for (pass = 0; pass < iter; pass++) {
+ fprintf(stderr, "+++++++++++++++++++++++++++\n");
+ fprintf(stderr, "+ Mode: PDU_BINARY Pass %d +\n", pass);
+ fprintf(stderr, "+++++++++++++++++++++++++++\n");
+
+ _z();
+ }
+
+ if (standalone) {
+ __pmCloseSocket(fd[0]);
+ __pmCloseSocket(fd[1]);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/pducrash.c b/qa/src/pducrash.c
new file mode 100644
index 0000000..91af348
--- /dev/null
+++ b/qa/src/pducrash.c
@@ -0,0 +1,1278 @@
+/*
+ * Feed all manner of horrendous PDUs into the decode routines
+ * to see what level of havoc can be caused. Builds up custom
+ * PDU structs (not possible using the __pmSend* routines) and
+ * calls the __pmDecode* routines.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/trace.h>
+#include <pcp/trace_dev.h>
+
+#include "localconfig.h"
+
+#if PCP_VER >= 3800
+static void
+decode_auth(const char *name)
+{
+ char *value;
+ int sts, attr, length;
+ struct auth {
+ __pmPDUHdr hdr;
+ int attr;
+ char value[0];
+ } *auth;
+
+ auth = (struct auth *)malloc(sizeof(*auth));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(auth, 0, sizeof(*auth));
+ sts = __pmDecodeAuth((__pmPDU *)auth, &attr, &value, &length);
+ fprintf(stderr, " __pmDecodeAuth: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking negative length\n", name);
+ memset(auth, 0, sizeof(*auth));
+ auth->hdr.len = -512;
+ auth->hdr.type = PDU_AUTH;
+ auth->attr = htonl(PCP_ATTR_USERID);
+ sts = __pmDecodeAuth((__pmPDU *)auth, &attr, &value, &length);
+ fprintf(stderr, " __pmDecodeAuth: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking empty value\n", name);
+ memset(auth, 0, sizeof(*auth));
+ auth->hdr.len = sizeof(*auth);
+ auth->hdr.type = PDU_AUTH;
+ auth->attr = htonl(PCP_ATTR_USERID);
+ sts = __pmDecodeAuth((__pmPDU *)auth, &attr, &value, &length);
+ fprintf(stderr, " __pmDecodeAuth: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond limit\n", name);
+ memset(auth, 0, sizeof(*auth));
+ auth->hdr.len = INT_MAX;
+ auth->hdr.type = PDU_AUTH;
+ auth->attr = htonl(PCP_ATTR_USERID);
+ sts = __pmDecodeAuth((__pmPDU *)auth, &attr, &value, &length);
+ fprintf(stderr, " __pmDecodeAuth: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(auth);
+}
+#else
+static void decode_auth(const char *name) { (void)name; }
+#endif
+
+static void
+decode_creds(const char *name)
+{
+ __pmCred *outcreds;
+ int sts, count, sender;
+ struct creds {
+ __pmPDUHdr hdr;
+ int numcreds;
+ __pmCred credslist[0];
+ } *creds;
+
+ creds = (struct creds *)malloc(sizeof(*creds));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(creds, 0, sizeof(*creds));
+ sts = __pmDecodeCreds((__pmPDU *)creds, &sender, &count, &outcreds);
+ fprintf(stderr, " __pmDecodeCreds: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outcreds); }
+
+ fprintf(stderr, "[%s] checking large numcred field\n", name);
+ memset(creds, 0, sizeof(*creds));
+ creds->hdr.len = sizeof(*creds);
+ creds->hdr.type = PDU_CREDS;
+ creds->numcreds = htonl(INT_MAX - 1);
+ sts = __pmDecodeCreds((__pmPDU *)creds, &sender, &count, &outcreds);
+ fprintf(stderr, " __pmDecodeCreds: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outcreds); }
+
+ fprintf(stderr, "[%s] checking negative numcred field\n", name);
+ memset(creds, 0, sizeof(*creds));
+ creds->hdr.len = sizeof(*creds);
+ creds->hdr.type = PDU_CREDS;
+ creds->numcreds = htonl(-2);
+ sts = __pmDecodeCreds((__pmPDU *)creds, &sender, &count, &outcreds);
+ fprintf(stderr, " __pmDecodeCreds: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outcreds); }
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(creds, 0, sizeof(*creds));
+ creds->hdr.len = sizeof(*creds);
+ creds->hdr.type = PDU_CREDS;
+ creds->numcreds = htonl(2);
+ sts = __pmDecodeCreds((__pmPDU *)creds, &sender, &count, &outcreds);
+ fprintf(stderr, " __pmDecodeCreds: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outcreds); }
+
+ free(creds);
+}
+
+static void
+decode_error(const char *name)
+{
+ int sts, code, data;
+ struct error {
+ __pmPDUHdr hdr;
+ } *error;
+ struct xerror {
+ __pmPDUHdr hdr;
+ int code[1];
+ } *xerror;
+
+ error = (struct error *)malloc(sizeof(*error));
+ xerror = (struct xerror *)malloc(sizeof(*xerror));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(error, 0, sizeof(*error));
+ sts = __pmDecodeError((__pmPDU *)error, &code);
+ fprintf(stderr, " __pmDecodeError: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking all-zeroes extended structure\n", name);
+ memset(xerror, 0, sizeof(*xerror));
+ sts = __pmDecodeXtendError((__pmPDU *)xerror, &code, &data);
+ fprintf(stderr, " __pmDecodeXtendError: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(error, 0, sizeof(*error));
+ error->hdr.len = sizeof(*error);
+ error->hdr.type = PDU_ERROR;
+ sts = __pmDecodeError((__pmPDU *)error, &code);
+ fprintf(stderr, " __pmDecodeError: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(xerror, 0, sizeof(*xerror));
+ xerror->hdr.len = sizeof(*xerror);
+ xerror->hdr.type = PDU_ERROR;
+ sts = __pmDecodeXtendError((__pmPDU *)xerror, &code, &data);
+ fprintf(stderr, " __pmDecodeXtendError: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(xerror);
+ free(error);
+}
+
+static void
+decode_profile(const char *name)
+{
+ __pmProfile *outprofs;
+ int sts, ctxnum;
+ struct profile {
+ __pmPDUHdr hdr;
+ int unused[2];
+ int numprof;
+ int padding;
+ } *profile;
+ struct instprof {
+ struct profile profile;
+ pmInDom indom;
+ int state;
+ int numinst;
+ int padding;
+ } *instprof;
+
+ profile = (struct profile *)malloc(sizeof(*profile));
+ instprof = (struct instprof *)malloc(sizeof(*instprof));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(profile, 0, sizeof(*profile));
+ sts = __pmDecodeProfile((__pmPDU *)profile, &ctxnum, &outprofs);
+ fprintf(stderr, " __pmDecodeProfile: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outprofs); }
+
+ fprintf(stderr, "[%s] checking large numprof field\n", name);
+ memset(profile, 0, sizeof(*profile));
+ profile->hdr.len = sizeof(*profile);
+ profile->hdr.type = PDU_PROFILE;
+ profile->numprof = htonl(INT_MAX - 42);
+ sts = __pmDecodeProfile((__pmPDU *)profile, &ctxnum, &outprofs);
+ fprintf(stderr, " __pmDecodeProfile: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outprofs); }
+
+ fprintf(stderr, "[%s] checking negative numprof field\n", name);
+ memset(profile, 0, sizeof(*profile));
+ profile->hdr.len = sizeof(*profile);
+ profile->hdr.type = PDU_PROFILE;
+ profile->numprof = htonl(-2);
+ sts = __pmDecodeProfile((__pmPDU *)profile, &ctxnum, &outprofs);
+ fprintf(stderr, " __pmDecodeProfile: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outprofs); }
+
+ fprintf(stderr, "[%s] checking access beyond basic buffer\n", name);
+ memset(profile, 0, sizeof(*profile));
+ profile->hdr.len = sizeof(*profile);
+ profile->hdr.type = PDU_PROFILE;
+ profile->numprof = htonl(2);
+ sts = __pmDecodeProfile((__pmPDU *)profile, &ctxnum, &outprofs);
+ fprintf(stderr, " __pmDecodeProfile: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outprofs); }
+
+ fprintf(stderr, "[%s] checking large numinst field\n", name);
+ memset(instprof, 0, sizeof(*instprof));
+ instprof->profile.hdr.len = sizeof(*instprof);
+ instprof->profile.hdr.type = PDU_PROFILE;
+ instprof->profile.numprof = htonl(1);
+ instprof->numinst = htonl(INT_MAX - 3);
+ sts = __pmDecodeProfile((__pmPDU *)instprof, &ctxnum, &outprofs);
+ fprintf(stderr, " __pmDecodeProfile: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outprofs); }
+
+ fprintf(stderr, "[%s] checking negative numinst field\n", name);
+ memset(instprof, 0, sizeof(*instprof));
+ instprof->profile.hdr.len = sizeof(*instprof);
+ instprof->profile.hdr.type = PDU_PROFILE;
+ instprof->profile.numprof = htonl(1);
+ instprof->numinst = htonl(-3);
+ sts = __pmDecodeProfile((__pmPDU *)instprof, &ctxnum, &outprofs);
+ fprintf(stderr, " __pmDecodeProfile: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outprofs); }
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(instprof, 0, sizeof(*instprof));
+ instprof->profile.hdr.len = sizeof(*instprof);
+ instprof->profile.hdr.type = PDU_PROFILE;
+ instprof->profile.numprof = htonl(1);
+ instprof->numinst = htonl(2);
+ sts = __pmDecodeProfile((__pmPDU *)instprof, &ctxnum, &outprofs);
+ fprintf(stderr, " __pmDecodeProfile: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(outprofs); }
+
+ free(instprof);
+ free(profile);
+}
+
+static void
+decode_fetch(const char *name)
+{
+ __pmTimeval when;
+ pmID *pmidlist;
+ int sts, ctx, count;
+ struct fetch {
+ __pmPDUHdr hdr;
+ int ctxnum;
+ __pmTimeval when;
+ int numpmid;
+ pmID pmidlist[0];
+ } *fetch;
+
+ fetch = (struct fetch *)malloc(sizeof(*fetch));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(fetch, 0, sizeof(*fetch));
+ sts = __pmDecodeFetch((__pmPDU *)fetch, &ctx, &when, &count, &pmidlist);
+ fprintf(stderr, " __pmDecodeFetch: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(pmidlist); }
+
+ fprintf(stderr, "[%s] checking large numpmid field\n", name);
+ memset(fetch, 0, sizeof(*fetch));
+ fetch->hdr.len = sizeof(*fetch);
+ fetch->hdr.type = PDU_FETCH;
+ fetch->numpmid = htonl(INT_MAX - 1);
+ sts = __pmDecodeFetch((__pmPDU *)fetch, &ctx, &when, &count, &pmidlist);
+ fprintf(stderr, " __pmDecodeFetch: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(pmidlist); }
+
+ fprintf(stderr, "[%s] checking negative numpmid field\n", name);
+ memset(fetch, 0, sizeof(*fetch));
+ fetch->hdr.len = sizeof(*fetch);
+ fetch->hdr.type = PDU_FETCH;
+ fetch->numpmid = htonl(-2);
+ sts = __pmDecodeFetch((__pmPDU *)fetch, &ctx, &when, &count, &pmidlist);
+ fprintf(stderr, " __pmDecodeFetch: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(pmidlist); }
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(fetch, 0, sizeof(*fetch));
+ fetch->hdr.len = sizeof(*fetch);
+ fetch->hdr.type = PDU_FETCH;
+ fetch->numpmid = htonl(2);
+ sts = __pmDecodeFetch((__pmPDU *)fetch, &ctx, &when, &count, &pmidlist);
+ fprintf(stderr, " __pmDecodeFetch: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(pmidlist); }
+
+ free(fetch);
+}
+
+static void
+decode_desc_req(const char *name)
+{
+ pmID pmid;
+ int sts;
+ struct desc_req {
+ __pmPDUHdr hdr;
+ } *desc_req;
+
+ desc_req = (struct desc_req *)malloc(sizeof(*desc_req));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(desc_req, 0, sizeof(*desc_req));
+ sts = __pmDecodeDescReq((__pmPDU *)desc_req, &pmid);
+ fprintf(stderr, " __pmDecodeDescReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(desc_req, 0, sizeof(*desc_req));
+ desc_req->hdr.len = sizeof(*desc_req);
+ desc_req->hdr.type = PDU_DESC_REQ;
+ sts = __pmDecodeDescReq((__pmPDU *)desc_req, &pmid);
+ fprintf(stderr, " __pmDecodeDescReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(desc_req);
+}
+
+static void
+decode_desc(const char *name)
+{
+ pmDesc pmdesc;
+ int sts;
+ struct desc {
+ __pmPDUHdr hdr;
+ } *desc;
+
+ desc = (struct desc *)malloc(sizeof(*desc));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(desc, 0, sizeof(*desc));
+ sts = __pmDecodeDesc((__pmPDU *)desc, &pmdesc);
+ fprintf(stderr, " __pmDecodeDesc: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(desc, 0, sizeof(*desc));
+ desc->hdr.len = sizeof(*desc);
+ desc->hdr.type = PDU_DESC;
+ sts = __pmDecodeDesc((__pmPDU *)desc, &pmdesc);
+ fprintf(stderr, " __pmDecodeDesc: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(desc);
+}
+
+static void
+decode_instance_req(const char *name)
+{
+ __pmTimeval when;
+ pmInDom indom;
+ int inst, sts;
+ char *resname;
+ struct instance_req {
+ __pmPDUHdr hdr;
+ pmInDom indom;
+ __pmTimeval when;
+ int inst;
+ int namelen;
+ char name[0];
+ } *instance_req, *xinstance_req;
+
+ instance_req = (struct instance_req *)malloc(sizeof(*instance_req));
+ xinstance_req = (struct instance_req *)malloc(sizeof(*xinstance_req)+16);
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(instance_req, 0, sizeof(*instance_req));
+ sts = __pmDecodeInstanceReq((__pmPDU *)instance_req, &when, &indom, &inst, &resname);
+ fprintf(stderr, " __pmDecodeInstanceReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(resname); }
+
+ fprintf(stderr, "[%s] checking large namelen field\n", name);
+ memset(instance_req, 0, sizeof(*instance_req));
+ instance_req->hdr.len = sizeof(*instance_req);
+ instance_req->hdr.type = PDU_INSTANCE_REQ;
+ instance_req->namelen = htonl(INT_MAX - 1);
+ sts = __pmDecodeInstanceReq((__pmPDU *)instance_req, &when, &indom, &inst, &resname);
+ fprintf(stderr, " __pmDecodeInstanceReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(resname); }
+
+ fprintf(stderr, "[%s] checking negative namelen field\n", name);
+ memset(instance_req, 0, sizeof(*instance_req));
+ instance_req->hdr.len = sizeof(*instance_req);
+ instance_req->hdr.type = PDU_INSTANCE_REQ;
+ instance_req->namelen = htonl(-2);
+ sts = __pmDecodeInstanceReq((__pmPDU *)instance_req, &when, &indom, &inst, &resname);
+ fprintf(stderr, " __pmDecodeInstanceReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(resname); }
+
+ fprintf(stderr, "[%s] checking access beyond basic buffer\n", name);
+ memset(instance_req, 0, sizeof(*instance_req));
+ instance_req->hdr.len = sizeof(*instance_req);
+ instance_req->hdr.type = PDU_INSTANCE_REQ;
+ instance_req->namelen = htonl(1);
+ sts = __pmDecodeInstanceReq((__pmPDU *)instance_req, &when, &indom, &inst, &resname);
+ fprintf(stderr, " __pmDecodeInstanceReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(resname); }
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(xinstance_req, 0, sizeof(*xinstance_req) + 16);
+ xinstance_req->hdr.len = sizeof(*xinstance_req) + 16;
+ xinstance_req->hdr.type = PDU_INSTANCE_REQ;
+ xinstance_req->namelen = htonl(32);
+ sts = __pmDecodeInstanceReq((__pmPDU *)xinstance_req, &when, &indom, &inst, &resname);
+ fprintf(stderr, " __pmDecodeInstanceReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) {free(resname); }
+
+ free(xinstance_req);
+ free(instance_req);
+}
+
+static void
+decode_instance(const char *name)
+{
+ __pmInResult *inresult;
+ int sts;
+ struct instance {
+ __pmPDUHdr hdr;
+ pmInDom indom;
+ int numinst;
+ __pmPDU rest[0];
+ } *instance;
+ struct instlist {
+ struct instance instance;
+ int inst;
+ int namelen;
+ char name[0];
+ } *instlist;
+
+ instance = (struct instance *)malloc(sizeof(*instance));
+ instlist = (struct instlist *)malloc(sizeof(*instlist));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(instance, 0, sizeof(*instance));
+ sts = __pmDecodeInstance((__pmPDU *)instance, &inresult);
+ fprintf(stderr, " __pmDecodeInstance: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) __pmFreeInResult(inresult);
+
+ fprintf(stderr, "[%s] checking large numinst field\n", name);
+ memset(instance, 0, sizeof(*instance));
+ instance->hdr.len = sizeof(*instance);
+ instance->hdr.type = PDU_INSTANCE;
+ instance->numinst = htonl(INT_MAX - 42);
+ sts = __pmDecodeInstance((__pmPDU *)instance, &inresult);
+ fprintf(stderr, " __pmDecodeInstance: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) __pmFreeInResult(inresult);
+
+ fprintf(stderr, "[%s] checking negative numinst field\n", name);
+ memset(instance, 0, sizeof(*instance));
+ instance->hdr.len = sizeof(*instance);
+ instance->hdr.type = PDU_INSTANCE;
+ instance->numinst = htonl(-2);
+ sts = __pmDecodeInstance((__pmPDU *)instance, &inresult);
+ fprintf(stderr, " __pmDecodeInstance: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) __pmFreeInResult(inresult);
+
+ fprintf(stderr, "[%s] checking access beyond basic buffer\n", name);
+ memset(instance, 0, sizeof(*instance));
+ instance->hdr.len = sizeof(*instance);
+ instance->hdr.type = PDU_INSTANCE;
+ instance->numinst = htonl(1);
+ sts = __pmDecodeInstance((__pmPDU *)instance, &inresult);
+ fprintf(stderr, " __pmDecodeInstance: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) __pmFreeInResult(inresult);
+
+ fprintf(stderr, "[%s] checking large namelen field\n", name);
+ memset(instlist, 0, sizeof(*instlist));
+ instlist->instance.hdr.len = sizeof(*instlist);
+ instlist->instance.hdr.type = PDU_INSTANCE;
+ instlist->instance.numinst = htonl(1);
+ instlist->namelen = htonl(INT_MAX - 5);
+ sts = __pmDecodeInstance((__pmPDU *)instlist, &inresult);
+ fprintf(stderr, " __pmDecodeInstance: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) __pmFreeInResult(inresult);
+
+ fprintf(stderr, "[%s] checking negative namelen field\n", name);
+ memset(instlist, 0, sizeof(*instlist));
+ instlist->instance.hdr.len = sizeof(*instlist);
+ instlist->instance.hdr.type = PDU_INSTANCE;
+ instlist->instance.numinst = htonl(1);
+ instlist->namelen = htonl(-2);
+ sts = __pmDecodeInstance((__pmPDU *)instlist, &inresult);
+ fprintf(stderr, " __pmDecodeInstance: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) __pmFreeInResult(inresult);
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(instlist, 0, sizeof(*instlist));
+ instlist->instance.hdr.len = sizeof(*instlist);
+ instlist->instance.hdr.type = PDU_INSTANCE;
+ instlist->instance.numinst = htonl(1);
+ instlist->namelen = htonl(32);
+ sts = __pmDecodeInstance((__pmPDU *)instlist, &inresult);
+ fprintf(stderr, " __pmDecodeInstance: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) __pmFreeInResult(inresult);
+
+ free(instlist);
+ free(instance);
+}
+
+static void
+decode_pmns_ids(const char *name)
+{
+ pmID idarray[10];
+ int idsts, sts;
+ struct idlist {
+ __pmPDUHdr hdr;
+ int sts;
+ int numids;
+ pmID idlist[0];
+ } *idlist;
+
+ idlist = (struct idlist *)malloc(sizeof(*idlist));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(idlist, 0, sizeof(*idlist));
+ sts = __pmDecodeIDList((__pmPDU *)idlist, 10, idarray, &idsts);
+ fprintf(stderr, " __pmDecodeIDList: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking large numids field\n", name);
+ memset(idlist, 0, sizeof(*idlist));
+ idlist->hdr.len = sizeof(*idlist);
+ idlist->hdr.type = PDU_PMNS_IDS;
+ idlist->numids = htonl(INT_MAX - 1);
+ sts = __pmDecodeIDList((__pmPDU *)idlist, 10, idarray, &idsts);
+ fprintf(stderr, " __pmDecodeIDList: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking negative numids field\n", name);
+ memset(idlist, 0, sizeof(*idlist));
+ idlist->hdr.len = sizeof(*idlist);
+ idlist->hdr.type = PDU_PMNS_IDS;
+ idlist->numids = htonl(-2);
+ sts = __pmDecodeIDList((__pmPDU *)idlist, 10, idarray, &idsts);
+ fprintf(stderr, " __pmDecodeIDList: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(idlist, 0, sizeof(*idlist));
+ idlist->hdr.len = sizeof(*idlist);
+ idlist->hdr.type = PDU_PMNS_IDS;
+ idlist->numids = htonl(2);
+ sts = __pmDecodeIDList((__pmPDU *)idlist, 10, idarray, &idsts);
+ fprintf(stderr, " __pmDecodeIDList: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(idlist);
+}
+
+static void
+decode_pmns_names(const char *name)
+{
+ int sts, numnames, *status;
+ char **names;
+ struct namelist {
+ __pmPDUHdr hdr;
+ int nstrbytes;
+ int numstatus;
+ int numnames;
+ pmID names[0];
+ } *namelist;
+ struct namestatus {
+ struct namelist namelist;
+ int status;
+ int namelen;
+ char name[0];
+ } *namestatus;
+
+ namelist = (struct namelist *)malloc(sizeof(*namelist));
+ namestatus = (struct namestatus *)malloc(sizeof(*namestatus));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(namelist, 0, sizeof(*namelist));
+ sts = __pmDecodeNameList((__pmPDU *)namelist, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking large numnames field\n", name);
+ memset(namelist, 0, sizeof(*namelist));
+ namelist->hdr.len = sizeof(*namelist);
+ namelist->hdr.type = PDU_PMNS_NAMES;
+ namelist->numnames = htonl(INT_MAX - 42);
+ sts = __pmDecodeNameList((__pmPDU *)namelist, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking negative numnames field\n", name);
+ memset(namelist, 0, sizeof(*namelist));
+ namelist->hdr.len = sizeof(*namelist);
+ namelist->hdr.type = PDU_PMNS_NAMES;
+ namelist->numnames = htonl(-42);
+ sts = __pmDecodeNameList((__pmPDU *)namelist, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking large nstrbytes field\n", name);
+ memset(namelist, 0, sizeof(*namelist));
+ namelist->hdr.len = sizeof(*namelist);
+ namelist->hdr.type = PDU_PMNS_NAMES;
+ namelist->numnames = htonl(42);
+ namelist->nstrbytes = htonl(INT_MAX - 42);
+ sts = __pmDecodeNameList((__pmPDU *)namelist, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking negative nstrbytes field\n", name);
+ memset(namelist, 0, sizeof(*namelist));
+ namelist->hdr.len = sizeof(*namelist);
+ namelist->hdr.type = PDU_PMNS_NAMES;
+ namelist->numnames = htonl(42);
+ namelist->nstrbytes = htonl(-42);
+ sts = __pmDecodeNameList((__pmPDU *)namelist, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking access beyond basic buffer\n", name);
+ memset(namelist, 0, sizeof(*namelist));
+ namelist->hdr.len = sizeof(*namelist);
+ namelist->hdr.type = PDU_PMNS_NAMES;
+ namelist->numnames = htonl(1);
+ sts = __pmDecodeNameList((__pmPDU *)namelist, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking large namelen field\n", name);
+ memset(namestatus, 0, sizeof(*namestatus));
+ namestatus->namelist.hdr.len = sizeof(*namestatus);
+ namestatus->namelist.hdr.type = PDU_PMNS_NAMES;
+ namestatus->namelist.numnames = htonl(1);
+ namestatus->namelen = htonl(INT_MAX - 5);
+ sts = __pmDecodeNameList((__pmPDU *)namestatus, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking negative namelen field\n", name);
+ memset(namestatus, 0, sizeof(*namestatus));
+ namestatus->namelist.hdr.len = sizeof(*namestatus);
+ namestatus->namelist.hdr.type = PDU_PMNS_NAMES;
+ namestatus->namelist.numnames = htonl(1);
+ namestatus->namelen = htonl(-2);
+ sts = __pmDecodeNameList((__pmPDU *)namestatus, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(namestatus, 0, sizeof(*namestatus));
+ namestatus->namelist.hdr.len = sizeof(*namestatus);
+ namestatus->namelist.hdr.type = PDU_PMNS_NAMES;
+ namestatus->namelist.numnames = htonl(1);
+ namestatus->namelen = htonl(32);
+ sts = __pmDecodeNameList((__pmPDU *)namestatus, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking large namelen field (+statuslist)\n", name);
+ memset(namestatus, 0, sizeof(*namestatus));
+ namestatus->namelist.hdr.len = sizeof(*namestatus);
+ namestatus->namelist.hdr.type = PDU_PMNS_NAMES;
+ namestatus->namelist.numnames = namestatus->namelist.numstatus = htonl(1);
+ namestatus->namelen = htonl(INT_MAX - 5);
+ sts = __pmDecodeNameList((__pmPDU *)namestatus, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking negative namelen field (+statuslist)\n", name);
+ memset(namestatus, 0, sizeof(*namestatus));
+ namestatus->namelist.hdr.len = sizeof(*namestatus);
+ namestatus->namelist.hdr.type = PDU_PMNS_NAMES;
+ namestatus->namelist.numnames = namestatus->namelist.numstatus = htonl(1);
+ namestatus->namelen = htonl(-2);
+ sts = __pmDecodeNameList((__pmPDU *)namestatus, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer (+statuslist)\n", name);
+ memset(namestatus, 0, sizeof(*namestatus));
+ namestatus->namelist.hdr.len = sizeof(*namestatus);
+ namestatus->namelist.hdr.type = PDU_PMNS_NAMES;
+ namestatus->namelist.numnames = namestatus->namelist.numstatus = htonl(1);
+ namestatus->namelen = htonl(32);
+ sts = __pmDecodeNameList((__pmPDU *)namestatus, &numnames, &names, &status);
+ fprintf(stderr, " __pmDecodeNameList: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(status); free(names); }
+
+ free(namestatus);
+ free(namelist);
+}
+
+/* Wraps __pmDecodeChildReq and __pmDecodeTraversePMNSReq interfaces */
+static void
+decode_name_request(const char *name, const char *caller, int pdutype)
+{
+ char *resnames;
+ int sts, restype;
+ struct name_req {
+ __pmPDUHdr hdr;
+ int subtype;
+ int namelen;
+ char name[0];
+ } *name_req, *xname_req;
+
+ name_req = (struct name_req *)malloc(sizeof(*name_req));
+ xname_req = (struct name_req *)malloc(sizeof(*name_req) + 16);
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(name_req, 0, sizeof(*name_req));
+ sts = (pdutype == PDU_PMNS_TRAVERSE) ?
+ __pmDecodeTraversePMNSReq((__pmPDU *)name_req, &resnames) :
+ __pmDecodeChildReq((__pmPDU *)name_req, &resnames, &restype);
+ fprintf(stderr, " __pmDecode%sReq: sts = %d (%s)\n", caller, sts, pmErrStr(sts));
+ if (sts >= 0) { free(resnames); }
+
+ fprintf(stderr, "[%s] checking large namelen field\n", name);
+ memset(name_req, 0, sizeof(*name_req));
+ name_req->hdr.len = sizeof(*name_req);
+ name_req->hdr.type = pdutype;
+ name_req->namelen = htonl(INT_MAX - 1);
+ sts = (pdutype == PDU_PMNS_TRAVERSE) ?
+ __pmDecodeTraversePMNSReq((__pmPDU *)name_req, &resnames) :
+ __pmDecodeChildReq((__pmPDU *)name_req, &resnames, &restype);
+ fprintf(stderr, " __pmDecode%sReq: sts = %d (%s)\n", caller, sts, pmErrStr(sts));
+ if (sts >= 0) { free(resnames); }
+
+ fprintf(stderr, "[%s] checking negative namelen field\n", name);
+ memset(name_req, 0, sizeof(*name_req));
+ name_req->hdr.len = sizeof(*name_req);
+ name_req->hdr.type = pdutype;
+ name_req->namelen = htonl(-2);
+ sts = (pdutype == PDU_PMNS_TRAVERSE) ?
+ __pmDecodeTraversePMNSReq((__pmPDU *)name_req, &resnames) :
+ __pmDecodeChildReq((__pmPDU *)name_req, &resnames, &restype);
+ fprintf(stderr, " __pmDecode%sReq: sts = %d (%s)\n", caller, sts, pmErrStr(sts));
+ if (sts >= 0) { free(resnames); }
+
+ fprintf(stderr, "[%s] checking access beyond basic buffer\n", name);
+ memset(name_req, 0, sizeof(*name_req));
+ name_req->hdr.len = sizeof(*name_req);
+ name_req->hdr.type = pdutype;
+ name_req->namelen = htonl(1);
+ sts = (pdutype == PDU_PMNS_TRAVERSE) ?
+ __pmDecodeTraversePMNSReq((__pmPDU *)name_req, &resnames) :
+ __pmDecodeChildReq((__pmPDU *)name_req, &resnames, &restype);
+ fprintf(stderr, " __pmDecode%sReq: sts = %d (%s)\n", caller, sts, pmErrStr(sts));
+ if (sts >= 0) { free(resnames); }
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(xname_req, 0, sizeof(*xname_req));
+ xname_req->hdr.len = sizeof(*xname_req) + 16;
+ xname_req->hdr.type = pdutype;
+ xname_req->namelen = htonl(32);
+ sts = (pdutype == PDU_PMNS_TRAVERSE) ?
+ __pmDecodeTraversePMNSReq((__pmPDU *)xname_req, &resnames) :
+ __pmDecodeChildReq((__pmPDU *)xname_req, &resnames, &restype);
+ fprintf(stderr, " __pmDecode%sReq: sts = %d (%s)\n", caller, sts, pmErrStr(sts));
+ if (sts >= 0) { free(resnames); }
+
+ free(xname_req);
+ free(name_req);
+}
+
+static void
+decode_pmns_child(const char *name)
+{
+ decode_name_request(name, "Child", PDU_PMNS_CHILD);
+}
+
+static void
+decode_pmns_traverse(const char *name)
+{
+ decode_name_request(name, "TraversePMNS", PDU_PMNS_TRAVERSE);
+}
+
+static void
+decode_log_control(const char *name)
+{
+ pmResult *result;
+ int sts, ctl, state, delta;
+ struct log_ctl {
+ __pmPDUHdr hdr;
+ int el[3];
+ int numpmid;
+ __pmPDU data[0];
+ } *log_ctl;
+ struct logvlist {
+ struct log_ctl log_ctl;
+ pmID pmid;
+ int numval;
+ __pmValue_PDU vlist[0];
+ } *logvlist;
+
+ log_ctl = (struct log_ctl *)malloc(sizeof(*log_ctl));
+ logvlist = (struct logvlist *)malloc(sizeof(*logvlist));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(log_ctl, 0, sizeof(*log_ctl));
+ sts = __pmDecodeLogControl((__pmPDU *)log_ctl, &result, &ctl, &state, &delta);
+ fprintf(stderr, " __pmDecodeLogControl: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(result);
+
+ fprintf(stderr, "[%s] checking large numpmid field\n", name);
+ memset(log_ctl, 0, sizeof(*log_ctl));
+ log_ctl->hdr.len = sizeof(*log_ctl);
+ log_ctl->hdr.type = PDU_LOG_CONTROL;
+ log_ctl->numpmid = htonl(INT_MAX - 42);
+ sts = __pmDecodeLogControl((__pmPDU *)log_ctl, &result, &ctl, &state, &delta);
+ fprintf(stderr, " __pmDecodeLogControl: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(result);
+
+ fprintf(stderr, "[%s] checking negative numpmid field\n", name);
+ memset(log_ctl, 0, sizeof(*log_ctl));
+ log_ctl->hdr.len = sizeof(*log_ctl);
+ log_ctl->hdr.type = PDU_LOG_CONTROL;
+ log_ctl->numpmid = htonl(-42);
+ sts = __pmDecodeLogControl((__pmPDU *)log_ctl, &result, &ctl, &state, &delta);
+ fprintf(stderr, " __pmDecodeLogControl: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(result);
+
+ fprintf(stderr, "[%s] checking access beyond basic buffer\n", name);
+ memset(log_ctl, 0, sizeof(*log_ctl));
+ log_ctl->hdr.len = sizeof(*log_ctl);
+ log_ctl->hdr.type = PDU_LOG_CONTROL;
+ log_ctl->numpmid = htonl(2);
+ sts = __pmDecodeLogControl((__pmPDU *)log_ctl, &result, &ctl, &state, &delta);
+ fprintf(stderr, " __pmDecodeLogControl: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(result);
+
+ fprintf(stderr, "[%s] checking large numval field\n", name);
+ memset(logvlist, 0, sizeof(*logvlist));
+ logvlist->log_ctl.hdr.len = sizeof(*logvlist);
+ logvlist->log_ctl.hdr.type = PDU_LOG_CONTROL;
+ logvlist->log_ctl.numpmid = htonl(1);
+ logvlist->numval = htonl(INT_MAX - 3);
+ sts = __pmDecodeLogControl((__pmPDU *)logvlist, &result, &ctl, &state, &delta);
+ fprintf(stderr, " __pmDecodeLogControl: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(result);
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(logvlist, 0, sizeof(*logvlist));
+ logvlist->log_ctl.hdr.len = sizeof(*logvlist);
+ logvlist->log_ctl.hdr.type = PDU_LOG_CONTROL;
+ logvlist->log_ctl.numpmid = htonl(1);
+ logvlist->numval = htonl(2);
+ sts = __pmDecodeLogControl((__pmPDU *)logvlist, &result, &ctl, &state, &delta);
+ fprintf(stderr, " __pmDecodeLogControl: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(result);
+
+ free(log_ctl);
+ free(logvlist);
+}
+
+static void
+decode_log_status(const char *name)
+{
+ __pmLoggerStatus *log;
+ int sts;
+ struct log_sts {
+ __pmPDUHdr hdr;
+ int pad;
+ __pmLoggerStatus sts;
+ } *log_sts;
+
+ log_sts = (struct log_sts *)malloc(sizeof(*log_sts));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(log_sts, 0, sizeof(*log_sts));
+ sts = __pmDecodeLogStatus((__pmPDU *)log_sts, &log);
+ fprintf(stderr, " __pmDecodeLogStatus: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(log_sts, 0, sizeof(*log_sts));
+ log_sts->hdr.len = sizeof(*log_sts) - 4;
+ log_sts->hdr.type = PDU_LOG_STATUS;
+ sts = __pmDecodeLogStatus((__pmPDU *)log_sts, &log);
+ fprintf(stderr, " __pmDecodeLogStatus: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(log_sts);
+}
+
+static void
+decode_log_request(const char *name)
+{
+ int type, sts;
+ struct log_req {
+ __pmPDUHdr hdr;
+ } *log_req;
+
+ log_req = (struct log_req *)malloc(sizeof(*log_req));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(log_req, 0, sizeof(*log_req));
+ sts = __pmDecodeLogRequest((__pmPDU *)log_req, &type);
+ fprintf(stderr, " __pmDecodeLogRequest: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(log_req, 0, sizeof(*log_req));
+ log_req->hdr.len = sizeof(*log_req);
+ log_req->hdr.type = PDU_LOG_REQUEST;
+ sts = __pmDecodeLogRequest((__pmPDU *)log_req, &type);
+ fprintf(stderr, " __pmDecodeLogRequest: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(log_req);
+}
+
+static void
+decode_result(const char *name)
+{
+ int sts;
+ pmResult *resp;
+ struct result {
+ __pmPDUHdr hdr;
+ __pmTimeval stamp;
+ int numpmid;
+ __pmPDU data[0];
+ } *result;
+ struct resultlist {
+ struct result result;
+ pmID pmid;
+ int numval;
+ int valfmt;
+ __pmValue_PDU vlist[0];
+ } *resultlist;
+ struct resultdynlist {
+ struct resultlist vlist;
+ __pmValue_PDU values;
+ pmValueBlock block[0];
+ } *resultdynlist;
+
+ result = (struct result *)malloc(sizeof(*result));
+ resultlist = (struct resultlist *)malloc(sizeof(*resultlist));
+ resultdynlist = (struct resultdynlist *)malloc(sizeof(*resultdynlist));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(result, 0, sizeof(*result));
+ sts = __pmDecodeResult((__pmPDU *)result, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking large numpmid field\n", name);
+ memset(result, 0, sizeof(*result));
+ result->hdr.len = sizeof(*result);
+ result->hdr.type = PDU_RESULT;
+ result->numpmid = htonl(INT_MAX - 42);
+ sts = __pmDecodeResult((__pmPDU *)result, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking negative numpmid field\n", name);
+ memset(result, 0, sizeof(*result));
+ result->hdr.len = sizeof(*result);
+ result->hdr.type = PDU_RESULT;
+ result->numpmid = htonl(-42);
+ sts = __pmDecodeResult((__pmPDU *)result, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking access beyond basic buffer\n", name);
+ memset(result, 0, sizeof(*result));
+ result->hdr.len = sizeof(*result);
+ result->hdr.type = PDU_RESULT;
+ result->numpmid = htonl(4);
+ sts = __pmDecodeResult((__pmPDU *)result, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking large numval field\n", name);
+ memset(resultlist, 0, sizeof(*resultlist));
+ resultlist->result.hdr.len = sizeof(*resultlist);
+ resultlist->result.hdr.type = PDU_RESULT;
+ resultlist->result.numpmid = htonl(1);
+ resultlist->numval = htonl(INT_MAX - 3);
+ sts = __pmDecodeResult((__pmPDU *)resultlist, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking negative numval field\n", name);
+ memset(resultlist, 0, sizeof(*resultlist));
+ resultlist->result.hdr.len = sizeof(*resultlist);
+ resultlist->result.hdr.type = PDU_RESULT;
+ resultlist->result.numpmid = htonl(1);
+ resultlist->numval = htonl(-3);
+ sts = __pmDecodeResult((__pmPDU *)resultlist, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking access beyond extended buffer\n", name);
+ memset(resultlist, 0, sizeof(*resultlist));
+ resultlist->result.hdr.len = sizeof(*resultlist);
+ resultlist->result.hdr.type = PDU_LOG_CONTROL;
+ resultlist->result.numpmid = htonl(1);
+ resultlist->numval = htonl(2);
+ sts = __pmDecodeResult((__pmPDU *)resultlist, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking insitu valfmt field\n", name);
+ memset(resultlist, 0, sizeof(*resultlist));
+ resultlist->result.hdr.len = sizeof(*resultlist);
+ resultlist->result.hdr.type = PDU_RESULT;
+ resultlist->result.numpmid = htonl(1);
+ resultlist->valfmt = htonl(PM_VAL_INSITU);
+ resultlist->numval = htonl(1);
+ sts = __pmDecodeResult((__pmPDU *)resultlist, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking non-insitu valfmt field\n", name);
+ memset(resultlist, 0, sizeof(*resultlist));
+ resultlist->result.hdr.len = sizeof(*resultlist);
+ resultlist->result.hdr.type = PDU_RESULT;
+ resultlist->result.numpmid = htonl(1);
+ resultlist->valfmt = htonl(PM_VAL_DPTR);
+ resultlist->numval = htonl(1);
+ sts = __pmDecodeResult((__pmPDU *)resultlist, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ fprintf(stderr, "[%s] checking access beyond non-insitu valfmt field\n", name);
+ memset(resultdynlist, 0, sizeof(*resultdynlist));
+ resultdynlist->vlist.result.hdr.len = sizeof(*resultdynlist);
+ resultdynlist->vlist.result.hdr.type = PDU_RESULT;
+ resultdynlist->vlist.result.numpmid = htonl(1);
+ resultdynlist->vlist.valfmt = htonl(PM_VAL_DPTR);
+ resultdynlist->vlist.numval = htonl(1);
+ resultdynlist->values.value.lval = htonl(10);
+ sts = __pmDecodeResult((__pmPDU *)resultdynlist, &resp);
+ fprintf(stderr, " __pmDecodeResult: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) pmFreeResult(resp);
+
+ free(resultdynlist);
+ free(resultlist);
+ free(result);
+}
+
+static void
+decode_text_req(const char *name)
+{
+ int ident, type, sts;
+ struct text_req {
+ __pmPDUHdr hdr;
+ int val[1];
+ } *text_req;
+
+ text_req = (struct text_req *)malloc(sizeof(*text_req));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(text_req, 0, sizeof(*text_req));
+ sts = __pmDecodeTextReq((__pmPDU *)text_req, &ident, &type);
+ fprintf(stderr, " __pmDecodeTextReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(text_req, 0, sizeof(*text_req));
+ text_req->hdr.len = sizeof(*text_req);
+ text_req->hdr.type = PDU_TEXT_REQ;
+ sts = __pmDecodeTextReq((__pmPDU *)text_req, &ident, &type);
+ fprintf(stderr, " __pmDecodeTextReq: sts = %d (%s)\n", sts, pmErrStr(sts));
+
+ free(text_req);
+}
+
+static void
+decode_text(const char *name)
+{
+ int ident, sts;
+ char *buffer;
+ struct text {
+ __pmPDUHdr hdr;
+ int ident;
+ int buflen;
+ char buffer[0];
+ } *text;
+
+ text = (struct text *)malloc(sizeof(*text));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(text, 0, sizeof(*text));
+ sts = __pmDecodeText((__pmPDU *)text, &ident, &buffer);
+ fprintf(stderr, " __pmDecodeText: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(buffer); }
+
+ fprintf(stderr, "[%s] checking large buflen field\n", name);
+ memset(text, 0, sizeof(*text));
+ text->hdr.len = sizeof(*text);
+ text->hdr.type = PDU_TEXT;
+ text->buflen = htonl(INT_MAX - 1);
+ sts = __pmDecodeText((__pmPDU *)text, &ident, &buffer);
+ fprintf(stderr, " __pmDecodeText: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(buffer); }
+
+ fprintf(stderr, "[%s] checking negative buflen field\n", name);
+ memset(text, 0, sizeof(*text));
+ text->hdr.len = sizeof(*text);
+ text->hdr.type = PDU_TEXT;
+ text->buflen = htonl(-2);
+ sts = __pmDecodeText((__pmPDU *)text, &ident, &buffer);
+ fprintf(stderr, " __pmDecodeText: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(buffer); }
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(text, 0, sizeof(*text));
+ text->hdr.len = sizeof(*text);
+ text->hdr.type = PDU_TEXT;
+ text->buflen = htonl(2);
+ sts = __pmDecodeText((__pmPDU *)text, &ident, &buffer);
+ fprintf(stderr, " __pmDecodeText: sts = %d (%s)\n", sts, pmErrStr(sts));
+ if (sts >= 0) { free(buffer); }
+
+ free(text);
+}
+
+static void
+decode_trace_ack(const char *name)
+{
+ int sts, ack;
+ struct trace_ack {
+ __pmTracePDUHdr hdr;
+ } *trace_ack;
+
+ trace_ack = (struct trace_ack *)malloc(sizeof(*trace_ack));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(trace_ack, 0, sizeof(*trace_ack));
+ sts = __pmtracedecodeack((__pmPDU *)trace_ack, &ack);
+ fprintf(stderr, " __pmtracedecodeack: sts = %d (%s)\n", sts, pmtraceerrstr(sts));
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(trace_ack, 0, sizeof(*trace_ack));
+ trace_ack->hdr.len = sizeof(*trace_ack);
+ trace_ack->hdr.type = TRACE_PDU_ACK;
+ sts = __pmtracedecodeack((__pmPDU *)trace_ack, &ack);
+ fprintf(stderr, " __pmtracedecodeack: sts = %d (%s)\n", sts, pmtraceerrstr(sts));
+
+ free(trace_ack);
+}
+
+static void
+decode_trace_data(const char *name)
+{
+ int sts, len, type, p, *ip;
+ char *tag;
+ double data;
+ struct trace_data {
+ __pmTracePDUHdr hdr;
+ struct {
+#ifdef HAVE_BITFIELDS_LTOR
+ unsigned int version : 8;
+ unsigned int taglen : 8;
+ unsigned int tagtype : 8;
+ unsigned int protocol : 1;
+ unsigned int pad : 7;
+#else
+ unsigned int pad : 7;
+ unsigned int protocol : 1;
+ unsigned int tagtype : 8;
+ unsigned int taglen : 8;
+ unsigned int version : 8;
+#endif
+ } bits;
+ double value;
+ char tag[0];
+ } *trace_data;
+
+ trace_data = (struct trace_data *)malloc(sizeof(*trace_data));
+
+ fprintf(stderr, "[%s] checking all-zeroes structure\n", name);
+ memset(trace_data, 0, sizeof(*trace_data));
+ sts = __pmtracedecodedata((__pmPDU *)trace_data, &tag, &len, &type, &p, &data);
+ fprintf(stderr, " __pmtracedecodedata: sts = %d (%s)\n", sts, pmtraceerrstr(sts));
+ if (sts >= 0) { free(tag); }
+
+ fprintf(stderr, "[%s] checking large taglen field\n", name);
+ memset(trace_data, 0, sizeof(*trace_data));
+ trace_data->hdr.len = sizeof(*trace_data);
+ trace_data->hdr.type = TRACE_PDU_DATA;
+ trace_data->bits.version = TRACE_PDU_VERSION;
+ trace_data->bits.taglen = CHAR_MAX - 1;
+ ip = (int *)&trace_data->bits;
+ *ip = htonl(*ip);
+ sts = __pmtracedecodedata((__pmPDU *)trace_data, &tag, &len, &type, &p, &data);
+ fprintf(stderr, " __pmtracedecodedata: sts = %d (%s)\n", sts, pmtraceerrstr(sts));
+ if (sts >= 0) { free(tag); }
+
+ fprintf(stderr, "[%s] checking negative taglen field\n", name);
+ memset(trace_data, 0, sizeof(*trace_data));
+ trace_data->hdr.len = sizeof(*trace_data);
+ trace_data->hdr.type = TRACE_PDU_DATA;
+ trace_data->bits.version = TRACE_PDU_VERSION;
+ trace_data->bits.taglen = -1;
+ ip = (int *)&trace_data->bits;
+ *ip = htonl(*ip);
+ sts = __pmtracedecodedata((__pmPDU *)trace_data, &tag, &len, &type, &p, &data);
+ fprintf(stderr, " __pmtracedecodedata: sts = %d (%s)\n", sts, pmtraceerrstr(sts));
+ if (sts >= 0) { free(tag); }
+
+ fprintf(stderr, "[%s] checking access beyond buffer\n", name);
+ memset(trace_data, 0, sizeof(*trace_data));
+ trace_data->hdr.len = sizeof(*trace_data);
+ trace_data->hdr.type = TRACE_PDU_DATA;
+ trace_data->bits.version = TRACE_PDU_VERSION;
+ trace_data->bits.taglen = 2;
+ ip = (int *)&trace_data->bits;
+ *ip = htonl(*ip);
+ sts = __pmtracedecodedata((__pmPDU *)trace_data, &tag, &len, &type, &p, &data);
+ fprintf(stderr, " __pmtracedecodedata: sts = %d (%s)\n", sts, pmtraceerrstr(sts));
+ if (sts >= 0) { free(tag); }
+
+ free(trace_data);
+}
+
+typedef void (*decode_t)(const char *);
+
+struct pdu {
+ const char *name;
+ decode_t decode;
+} pdus[] = {
+ { "cred", decode_creds },
+ { "error", decode_error },
+ { "profile", decode_profile },
+ { "fetch", decode_fetch },
+ { "desc_req", decode_desc_req },
+ { "desc", decode_desc },
+ { "instance_req", decode_instance_req },
+ { "instance", decode_instance },
+ { "pmns_ids", decode_pmns_ids },
+ { "pmns_names", decode_pmns_names },
+ { "pmns_child", decode_pmns_child },
+ { "pmns_traverse", decode_pmns_traverse },
+ { "log_control", decode_log_control },
+ { "log_status", decode_log_status },
+ { "log_request", decode_log_request },
+ { "result", decode_result },
+ { "text_req", decode_text_req },
+ { "text", decode_text },
+ { "trace_ack", decode_trace_ack },
+ { "trace_data", decode_trace_data },
+ { "auth", decode_auth },
+};
+
+int
+main(int argc, char **argv)
+{
+ int c, d;
+ int sts, errflag = 0;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind < argc-1) {
+ fprintf(stderr, "Usage: %s [-D n]\n", pmProgname);
+ exit(1);
+ }
+
+ if (argc == optind) {
+ for (d = 0; d < sizeof(pdus)/sizeof(struct pdu); d++)
+ pdus[d].decode(pdus[d].name);
+ } else {
+ for (c = 0; c < (argc - optind); c++)
+ for (d = 0; d < sizeof(pdus)/sizeof(struct pdu); d++)
+ if (strcmp(argv[optind + c], pdus[d].name) == 0)
+ pdus[d].decode(pdus[d].name);
+ }
+ exit(0);
+}
diff --git a/qa/src/permfetch.c b/qa/src/permfetch.c
new file mode 100644
index 0000000..71ceac9
--- /dev/null
+++ b/qa/src/permfetch.c
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * permfetch - fetch, permute and fetch again - for a bunch of metrics
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+typedef struct {
+ char *base;
+ int numpmid;
+ char **namelist;
+ pmID *pmidlist;
+ pmResult *rp;
+} state_t;
+
+state_t *todolist;
+static int todo;
+
+static void
+dometric(const char *name)
+{
+ int done = todolist[todo].numpmid;
+
+ todolist[todo].namelist = (char **)realloc(todolist[todo].namelist, (1+done)*sizeof(char *));
+ todolist[todo].pmidlist = (pmID *)realloc(todolist[todo].pmidlist, (1+done)*sizeof(pmID));
+ todolist[todo].namelist[done] = strdup(name);
+ todolist[todo].numpmid++;
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int n;
+ int j;
+ int numpmid;
+ pmID pmid;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ int verbose = 0;
+ char *host = NULL; /* pander to gcc */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:n:V?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'V': /* verbose */
+ verbose++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options:\n\
+ -a archive metrics source is an archive log\n\
+ -D debug standard PCP debug flag\n\
+ -h host metrics source is PMCD on host\n\
+ -n namespace use an alternative PMNS\n\
+ -V verbose/diagnostic output\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ todolist = (state_t *)realloc(todolist, (todo+1)*sizeof(state_t));
+ todolist[todo].base = argv[optind];
+ todolist[todo].numpmid = 0;
+ todolist[todo].namelist = (char **)0;
+ todolist[todo].pmidlist = (pmID *)0;
+ pmTraversePMNS(argv[optind], dometric);
+ printf("%s:\n", argv[optind]);
+ if (verbose)
+ printf("... %d metrics,", todolist[todo].numpmid);
+ if (todolist[todo].numpmid == 0) {
+ printf("... no metrics in PMNS ... skip tests\n");
+ goto next;
+ }
+ sts = pmLookupName(todolist[todo].numpmid, todolist[todo].namelist, todolist[todo].pmidlist);
+ if (sts != todolist[todo].numpmid) {
+ int i;
+ putchar('\n');
+ if (sts < 0)
+ fprintf(stderr, "%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: pmLookupName: ...\n", pmProgname);
+ for (i = 0; i < todolist[todo].numpmid; i++) {
+ if (todolist[todo].pmidlist[i] == PM_ID_NULL)
+ fprintf(stderr, " %s is bad\n", todolist[todo].namelist[i]);
+ }
+ exit(1);
+ }
+ sts = pmFetch(todolist[todo].numpmid, todolist[todo].pmidlist, &todolist[todo].rp);
+ if (sts < 0) {
+ putchar('\n');
+ fprintf(stderr, "%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if (verbose)
+ printf(" %d value sets\n", todolist[todo].rp->numpmid);
+ if (todolist[todo].numpmid != todolist[todo].rp->numpmid)
+ printf("botch: %d metrics != %d value sets!\n",
+ todolist[todo].numpmid, todolist[todo].rp->numpmid);
+
+next:
+ optind++;
+ todo++;
+ }
+
+ for (n = 0; n < todo; n++) {
+ if (todolist[todo-n-1].numpmid <= 0)
+ continue;
+ printf("%s: free names and result\n", todolist[todo-n-1].base);
+ for (j = 0; j < todolist[todo-n-1].numpmid; j++) {
+ free(todolist[todo-n-1].namelist[j]);
+ }
+ free(todolist[todo-n-1].namelist);
+ pmFreeResult(todolist[todo-n-1].rp);
+ }
+ /* reverse pmids in list */
+ for (n = 0; n < todo; n++) {
+ numpmid = todolist[n].numpmid;
+ for (j = 0; j < numpmid / 2; j++) {
+ pmid = todolist[n].pmidlist[numpmid-j-1];
+ todolist[n].pmidlist[numpmid-j-1] = todolist[n].pmidlist[j];
+ todolist[n].pmidlist[j] = pmid;
+ }
+ }
+ for (n = 0; n < todo; n++) {
+ if (todolist[n].numpmid <= 0)
+ continue;
+ printf("%s (reverse):\n", todolist[n].base);
+ if (verbose)
+ printf("... %d metrics,", todolist[n].numpmid);
+ sts = pmFetch(todolist[n].numpmid, todolist[n].pmidlist, &todolist[n].rp);
+ if (sts < 0) {
+ putchar('\n');
+ fprintf(stderr, "%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if (todolist[n].numpmid != todolist[n].rp->numpmid)
+ printf("botch: %d metrics != %d value sets!\n",
+ todolist[n].numpmid, todolist[n].rp->numpmid);
+
+ if (verbose) {
+ printf(" %d value sets", todolist[n].rp->numpmid);
+ printf(" free result\n");
+ }
+ pmFreeResult(todolist[n].rp);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/permslist b/qa/src/permslist
new file mode 100644
index 0000000..0d33cdb
--- /dev/null
+++ b/qa/src/permslist
@@ -0,0 +1,16 @@
+GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_LOG_DIR)
+GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_RUN_DIR)|optional
+GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_TMP_DIR)
+GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_VAR_DIR)/config/pmda
+src/libpcp_pmcd/src/GNUmakefile|444|root|root|$(PCP_SHARE_DIR)/../systemtap/tapset/pmcd.stp|optional
+src/pmcd/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_LOG_DIR)/pmcd
+src/pmie/GNUmakefile|664|$(PCP_USER)|$(PCP_GROUP)|$(PCP_PMIECONTROL_PATH)
+src/pmie/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_LOG_DIR)/pmie
+src/pmie/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_SYSCONF_DIR)/pmie
+src/pmie/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_TMP_DIR)/pmie|optional
+src/pmlogger/GNUmakefile|664|$(PCP_USER)|$(PCP_GROUP)|$(PCP_PMLOGGERCONTROL_PATH)
+src/pmlogger/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_LOG_DIR)/pmlogger
+src/pmlogger/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_SYSCONF_DIR)/pmlogger
+src/pmlogger/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_TMP_DIR)/pmlogger|optional
+src/pmproxy/GNUmakefile|775|$(PCP_USER)|$(PCP_USER)|$(PCP_LOG_DIR)/pmproxy
+src/pmwebapi/GNUmakefile|775|$(PCP_USER)|$(PCP_GROUP)|$(PCP_LOG_DIR)/pmwebd|optional
diff --git a/qa/src/pmatop-log.0 b/qa/src/pmatop-log.0
new file mode 100644
index 0000000..bd7366e
--- /dev/null
+++ b/qa/src/pmatop-log.0
Binary files differ
diff --git a/qa/src/pmatop-log.folio b/qa/src/pmatop-log.folio
new file mode 100644
index 0000000..bde516f
--- /dev/null
+++ b/qa/src/pmatop-log.folio
@@ -0,0 +1,9 @@
+PCPFolio
+Version: 1
+# use pmafm(1) to process this PCP Archive Folio
+#
+Created: on dieyong at Fri May 23 15:51:10 2014
+Creator: pmcollectl
+# Host Basename
+#
+Archive: dieyong pmatop-log
diff --git a/qa/src/pmatop-log.index b/qa/src/pmatop-log.index
new file mode 100644
index 0000000..c3a39e4
--- /dev/null
+++ b/qa/src/pmatop-log.index
Binary files differ
diff --git a/qa/src/pmatop-log.meta b/qa/src/pmatop-log.meta
new file mode 100644
index 0000000..def1656
--- /dev/null
+++ b/qa/src/pmatop-log.meta
Binary files differ
diff --git a/qa/src/pmcdgone.c b/qa/src/pmcdgone.c
new file mode 100644
index 0000000..ed3c43d
--- /dev/null
+++ b/qa/src/pmcdgone.c
@@ -0,0 +1,414 @@
+/*
+ * Copyright (c) 2012 Red Hat. All Rights Reserved.
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * ping pmcd 4 times, kill off pmcd, ping 4 more times, restart pmcd,
+ * ping 4 more times ... and some reconnect attempts for good measure ...
+ * and some more pings ...
+ * sleep 10 seconds after change of state for pmcd
+ *
+ * Has to be run as root to control pmcd
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#include "localconfig.h"
+
+static pmResult *_store;
+static pmDesc _desc;
+static int _numinst;
+static int *_instlist;
+static char **_inamelist;
+static int _text;
+static int _indom_text;
+static int ctlport;
+
+static void
+_ConnectLogger(void)
+{
+ int n;
+ int pid = PM_LOG_PRIMARY_PID;
+ int port = PM_LOG_NO_PORT;
+
+ if ((n = __pmConnectLogger("localhost", &pid, &port)) < 0) {
+ printf("Cannot connect to primary pmlogger on \"localhost\": %s\n", pmErrStr(n));
+ exit(1);
+ }
+ ctlport = n;
+}
+
+static int
+x_indom(int xpecterr)
+{
+ int err = 0;
+ int n;
+ int j;
+ int numinst;
+ int *instlist;
+ char **inamelist;
+ char *name = NULL;
+
+ if ((numinst = pmGetInDom(_desc.indom, &instlist, &inamelist)) < 0) {
+ fprintf(stderr, "pmGetInDom: %s", pmErrStr(numinst));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else {
+ free(instlist);
+ free(inamelist);
+ }
+
+ j = _numinst / 2;
+
+ if ((n = pmNameInDom(_desc.indom, _instlist[j], &name)) < 0) {
+ fprintf(stderr, "pmNameInDom: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+
+ if ((n = pmLookupInDom(_desc.indom, name)) < 0) {
+ fprintf(stderr, "pmLookupInDom: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else {
+ if (n != _instlist[j]) {
+ err++;
+ fprintf(stderr, "botch: pmLookupInDom returns 0x%x, expected 0x%x\n",
+ n, _instlist[j]);
+ }
+ free(name);
+ }
+
+ return err;
+}
+
+static int
+exer(int numpmid, pmID *pmidlist, int xpecterr)
+{
+ int i;
+ int j;
+ int n;
+ int err = 0;
+ pmDesc desc;
+ char *buf;
+ pmResult *resp, *lresp;
+
+ for (i = 0; i < 4; i++) {
+ if (!xpecterr)
+ fputc('.', stderr);
+
+ if ((n = pmLookupDesc(pmidlist[0], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else if (xpecterr)
+ err++;
+
+ err += x_indom(xpecterr);
+
+ if ((n = pmLookupText(pmidlist[1], PM_TEXT_HELP, &buf)) < 0) {
+ fprintf(stderr, "pmLookupText: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else {
+ if (xpecterr)
+ err++;
+ if (!_text) {
+ fprintf(stderr, "Text: %s\n", buf);
+ _text = 1;
+ }
+ free(buf);
+ }
+
+ if ((n = pmLookupInDomText(_desc.indom, PM_TEXT_HELP, &buf)) < 0) {
+ fprintf(stderr, "pmLookupInDomText: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else {
+ if (xpecterr)
+ err++;
+ if (!_indom_text) {
+ fprintf(stderr, "InDomText: %s\n", buf);
+ _indom_text = 1;
+ }
+ free(buf);
+ }
+
+ if ((n = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ fprintf(stderr, "pmFetch: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else {
+ if (xpecterr)
+ err++;
+ if (resp->numpmid != numpmid) {
+ err++;
+ __pmDumpResult(stderr, resp);
+ }
+ else for (j = 0; j < resp->numpmid; j++) {
+ if (resp->vset[j]->numval < 1) {
+ err++;
+ __pmDumpResult(stderr, resp);
+ break;
+ }
+ }
+ pmFreeResult(resp);
+ }
+
+ if ((n = pmStore(_store)) < 0) {
+ fprintf(stderr, "pmStore: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else if (xpecterr)
+ err++;
+
+ if ((n = __pmControlLog(ctlport, _store, PM_LOG_ENQUIRE, 0, 0, &lresp)) < 0) {
+ fprintf(stderr, "__pmControlLog: %s", pmErrStr(n));
+ if (xpecterr)
+ fprintf(stderr, " -- error expected\n");
+ else {
+ fprintf(stderr, "\n");
+ err++;
+ }
+ }
+ else {
+ pmFreeResult(lresp);
+ }
+
+ }
+ if (!xpecterr)
+ fputc('\n', stderr);
+
+
+ return err;
+}
+
+int
+main(int argc, char **argv)
+{
+ int err = 0;
+ int sts;
+ int i;
+ int j;
+ char *namelist[4];
+ pmID pmidlist[4];
+ int n;
+ int numpmid;
+ int ctx0;
+ int ctx1;
+ int c;
+ int errflag = 0;
+ char *binadm = pmGetConfig("PCP_BINADM_DIR");
+ char path[MAXPATHLEN];
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options:\n\
+ -D N set pmDebug debugging flag to N\n",
+ pmProgname);
+ exit(1);
+ }
+
+#ifndef IS_MINGW
+ if ((n = geteuid()) != 0) {
+ fprintf(stderr, "pmcdgone: Must be run as root, not uid %d!\n", n);
+ exit(1);
+ }
+#endif
+
+ if ((n = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ if ((ctx0 = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext: %s\n", pmErrStr(ctx0));
+ exit(1);
+ }
+ if ((ctx1 = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext: %s\n", pmErrStr(ctx1));
+ exit(1);
+ }
+ _ConnectLogger();
+
+ i = 0;
+ namelist[i++] = "sample.long.write_me";
+ namelist[i++] = "sample.colour";
+ namelist[i++] = "sampledso.bin";
+ numpmid = i;
+ n = pmLookupName(numpmid, namelist, pmidlist);
+ if (n < 0) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ fprintf(stderr, " %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+ if ((n = pmFetch(1, pmidlist, &_store)) < 0) {
+ fprintf(stderr, "initial pmFetch failed: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ if ((n = pmLookupDesc(pmidlist[1], &_desc)) < 0) {
+ fprintf(stderr, "initial pmLookupDesc failed: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ if ((_numinst = pmGetInDom(_desc.indom, &_instlist, &_inamelist)) < 0) {
+ fprintf(stderr, "initial pmGetInDom failed: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ err += exer(numpmid, pmidlist, 0);
+
+ fprintf(stderr, "Kill off pmcd ...\n");
+ sts = system(". $PCP_DIR/etc/pcp.env; $PCP_RC_DIR/pcp stop");
+ if (sts != 0)
+ fprintf(stderr, "Warning: stop script returns %d\n", sts);
+ sleep(10);
+ _text = _indom_text = 0;
+ __pmCloseSocket(ctlport);
+
+ err += exer(numpmid, pmidlist, 1);
+
+ for (j = 0; j < 2; j++) {
+ if (j == 0)
+ i = ctx1;
+ else
+ i = ctx0;;
+ fprintf(stderr, "Reconnect to pmcd context %d ...\n", i);
+ if ((n = pmReconnectContext(i)) < 0) {
+ fprintf(stderr, "pmReconnectContext: %s -- error expected\n", pmErrStr(n));
+ }
+ else {
+ fprintf(stderr, "pmReconnectContext: success after pmcd killed!?\n");
+ err++;
+ }
+
+ err += exer(numpmid, pmidlist, 1);
+ }
+
+ /*
+ * tricky part begins ...
+ * 1. get rid of the archive folio to avoid timestamp clashes with last
+ * created folio
+ * 2. re-start pmcd
+ * 3. wait for pmcd to be accepting connections
+ * 4. wait for pmlogger to be accepting connections from pmlc
+ * 5. connect to pmlogger
+ */
+ fprintf(stderr, "Restart pmcd ...\n");
+ sts = system(". $PCP_DIR/etc/pcp.env; path_opt=''; if [ $PCP_PLATFORM = linux ]; then path_opt=pmlogger/; fi; pmafm $PCP_LOG_DIR/$path_opt`hostname`/Latest remove 2>/dev/null | sh");
+ if (sts != 0)
+ fprintf(stderr, "Warning: folio removal script %d\n", sts);
+ __pmCloseSocket(ctlport);
+ sts = system(". $PCP_DIR/etc/pcp.env; $PCP_RC_DIR/pcp start");
+ if (sts != 0)
+ fprintf(stderr, "Warning: stop script returns %d\n", sts);
+
+ sprintf(path, "%s/pmcd_wait", binadm);
+ if(access(path, X_OK) == 0) {
+ sts = system(". $PCP_DIR/etc/pcp.env; [ -x $PCP_BINADM_DIR/pmcd_wait ] && $PCP_BINADM_DIR/pmcd_wait");
+ if (sts != 0)
+ fprintf(stderr, "Warning: pmcd_wait script returns %d\n", sts);
+ }
+
+ sts = system(". $PCP_DIR/etc/pcp.env; ( cat common.check; echo _wait_for_pmlogger -P $PCP_LOG_DIR/pmlogger/`hostname`/pmlogger.log ) | sh");
+ if (sts != 0)
+ fprintf(stderr, "Warning: _wait_for_pmlogger script returns %d\n", sts);
+ _ConnectLogger();
+
+ err += exer(numpmid, pmidlist, 1);
+
+ /*
+ * more trickery ...
+ * need to sleep here for at least 1 second so that timestamp of
+ * IPC failure above is more than 1 second ago, so we wait long enough
+ * that pmReconnectContext() really does the connect() attempt, rather
+ * than returning -ETIMEDOUT immediately ... but sleep(1) is unreliable,
+ * hence ...
+ */
+ sleep(3);
+
+ for (j = 0; j < 2; j++) {
+ if (j == 0)
+ i = ctx1;
+ else
+ i = ctx0;
+ fprintf(stderr, "Reconnect to pmcd context %d ...\n", i);
+ if ((n = pmReconnectContext(i)) < 0) {
+ fprintf(stderr, "pmReconnectContext: %s\n", pmErrStr(n));
+ err++;
+ }
+
+ err += exer(numpmid, pmidlist, 0);
+ }
+
+ fprintf(stderr, "%d unexpected errors.\n", err);
+ exit(0);
+}
diff --git a/qa/src/pmconvscale.c b/qa/src/pmconvscale.c
new file mode 100644
index 0000000..5d03e38
--- /dev/null
+++ b/qa/src/pmconvscale.c
@@ -0,0 +1,146 @@
+/*
+ * pmconvscale - tests bug in pmConvScale
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+/* default is the "no" dimension case */
+pmUnits units = {0, 0, 0, 0, 0, 0};
+pmUnits oldunits = {0, 0, 0, 0, 0, 0};
+
+static int sscales[] = { PM_SPACE_GBYTE, PM_SPACE_TBYTE, PM_SPACE_GBYTE, PM_SPACE_MBYTE, PM_SPACE_KBYTE, PM_SPACE_BYTE, PM_SPACE_KBYTE, PM_SPACE_MBYTE };
+static int n_sscales = sizeof(sscales) / sizeof(sscales[0]);
+
+static int tscales[] = { PM_TIME_MIN, PM_TIME_HOUR, PM_TIME_MIN, PM_TIME_SEC, PM_TIME_MSEC, PM_TIME_USEC, PM_TIME_NSEC, PM_TIME_USEC, PM_TIME_MSEC, PM_TIME_SEC };
+static int n_tscales = sizeof(tscales) / sizeof(tscales[0]);
+
+static int cscales[] = {1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -7, -6, -5, -4, -3, -2, -1, 0 };
+static int n_cscales = sizeof(cscales) / sizeof(cscales[0]);
+
+/* just for PBYTE and EBYTE space extensions */
+#ifdef HAVE_BITFIELDS_LTOR
+pmUnits myunits = { 1, -1, 0, PM_SPACE_EBYTE, PM_TIME_SEC, 0 };
+#else
+pmUnits myunits = { 0, 0, PM_TIME_SEC, PM_SPACE_EBYTE, 0, -1, 1 };
+#endif
+
+int
+main(int argc, char **argv)
+{
+ int i, sts;
+ int mode = 1;
+ int limit = 0;
+ pmAtomValue value, newvalue;
+ char olds[64], news[64];
+
+ value.f = 12345678;
+
+ if (argc > 1) {
+ if (argv[1][0] == 'c') {
+ /* crude, but effective ... the "count" dimension case */
+ units.dimCount = 1;
+ mode = 1;
+ }
+ else if (argv[1][0] == 's') {
+ /* crude, but effective ... the "space" dimension case */
+ units.dimSpace = 1;
+ units.scaleSpace = PM_SPACE_MBYTE;
+ mode = 2;
+ }
+ else if (argv[1][0] == 'r') {
+ /* crude, but effective ... the "space/time" dimension case */
+ units.dimSpace = 1;
+ units.dimTime = -1;
+ units.scaleSpace = PM_SPACE_MBYTE;
+ units.scaleTime = PM_TIME_SEC;
+ mode = 2;
+ }
+ else if (argv[1][0] == 't') {
+ /* crude, but effective ... the "time" dimension case */
+ units.dimTime = 1;
+ units.scaleTime = PM_TIME_SEC;
+ mode = 3;
+ }
+ else if (argv[1][0] == 'x') {
+ /* PBYTE and EBYTE space extensions */
+ value.f = 1;
+ while (myunits.scaleSpace > 0) {
+ units = myunits;
+ units.scaleSpace--;
+ sts = pmConvScale(PM_TYPE_FLOAT, &value, &myunits, &newvalue, &units);
+ if (sts < 0) {
+ strcpy(olds, pmUnitsStr(&oldunits));
+ strcpy(news, pmUnitsStr(&units));
+ fprintf(stderr, "pmConvScale \"%s\" -> \"%s\" failed: %s\n", olds, news, pmErrStr(sts));
+ exit(1);
+ }
+ printf("%12.1f %s -> ", value.f, pmUnitsStr(&myunits));
+ printf("%12.1f %s\n", newvalue.f, pmUnitsStr(&units));
+ myunits.scaleSpace--;
+ value.f = newvalue.f / 512;
+ }
+ value.f *= 512;
+ while (myunits.scaleSpace < PM_SPACE_EBYTE) {
+ units = myunits;
+ units.scaleSpace++;
+ sts = pmConvScale(PM_TYPE_FLOAT, &value, &myunits, &newvalue, &units);
+ if (sts < 0) {
+ strcpy(olds, pmUnitsStr(&oldunits));
+ strcpy(news, pmUnitsStr(&units));
+ fprintf(stderr, "pmConvScale \"%s\" -> \"%s\" failed: %s\n", olds, news, pmErrStr(sts));
+ exit(1);
+ }
+ printf("%12.1f %s -> ", value.f, pmUnitsStr(&myunits));
+ printf("%12.1f %s\n", newvalue.f, pmUnitsStr(&units));
+ myunits.scaleSpace++;
+ value.f = newvalue.f * 512;
+ }
+ exit(0);
+ }
+ }
+
+ oldunits = units;
+
+ if (mode == 1)
+ limit = n_cscales;
+ else if (mode == 2)
+ limit = n_sscales;
+ else if (mode == 3)
+ limit = n_tscales;
+
+ for (i=0; i < limit; i++) {
+ if (mode == 1)
+ units.scaleCount = cscales[i];
+ else if (mode == 2)
+ units.scaleSpace = sscales[i];
+ else if (mode == 3)
+ units.scaleTime = tscales[i];
+
+ strcpy(olds, pmUnitsStr(&oldunits));
+ strcpy(news, pmUnitsStr(&units));
+
+ sts = pmConvScale(PM_TYPE_FLOAT, &value, &oldunits, &newvalue, &units);
+ if (sts < 0) {
+ fprintf(stderr, "pmConvScale \"%s\" -> \"%s\" failed: %s\n", olds, news, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (mode == 1)
+ printf("scaleCount=%d old: %12.1f \"%s\" new: %12.1f \"%s\"\n",
+ units.scaleCount, value.f, olds, newvalue.f, news);
+ else if (mode == 2)
+ printf("scaleSpace=%d old: %12.1f \"%s\" new: %12.1f \"%s\"\n",
+ units.scaleSpace, value.f, olds, newvalue.f, news);
+ else if (mode == 3)
+ printf("scaleTime=%d old: %12.1f \"%s\" new: %12.1f \"%s\"\n",
+ units.scaleTime, value.f, olds, newvalue.f, news);
+
+ value.f = newvalue.f;
+ oldunits = units;
+ }
+ exit(0);
+}
diff --git a/qa/src/pmdacache.c b/qa/src/pmdacache.c
new file mode 100644
index 0000000..c035c73
--- /dev/null
+++ b/qa/src/pmdacache.c
@@ -0,0 +1,102 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+int
+main(int argc, char **argv)
+{
+ int errflag = 0;
+ int indom = 123;
+ int sts;
+ int c;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "Cc:D:dh:LSs:")) != EOF) {
+ switch (c) {
+
+ case 'C':
+ sts = pmdaCacheOp(indom, PMDA_CACHE_CULL);
+ fprintf(stderr, "cull() -> %d", sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'c':
+ sts = pmdaCacheStore(indom, PMDA_CACHE_CULL, optarg, NULL);
+ fprintf(stderr, "cull(%s) -> %d", optarg, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'd':
+#ifdef PMDA_CACHE_DUMP_ALL
+ sts = pmdaCacheOp(indom, PMDA_CACHE_DUMP_ALL);
+#else
+ sts = pmdaCacheOp(indom, PMDA_CACHE_DUMP);
+#endif
+ break;
+
+ case 'h':
+ sts = pmdaCacheStore(indom, PMDA_CACHE_HIDE, optarg, NULL);
+ fprintf(stderr, "hide(%s) -> %d", optarg, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'L':
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ fprintf(stderr, "load() -> %d", sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'S':
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "save() -> %d", sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 's':
+ sts = pmdaCacheStore(indom, PMDA_CACHE_ADD, optarg, NULL);
+ fprintf(stderr, "store(%s) -> %d", optarg, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s ...\n", pmProgname);
+ fprintf(stderr, "options:\n");
+ fprintf(stderr, "-C cull all\n");
+ fprintf(stderr, "-c inst cull one\n");
+ fprintf(stderr, "-D debug\n");
+ fprintf(stderr, "-d dump\n");
+ fprintf(stderr, "-h inst hide\n");
+ fprintf(stderr, "-L load\n");
+ fprintf(stderr, "-S store\n");
+ fprintf(stderr, "-s inst save\n");
+ exit(1);
+ }
+
+ return 0;
+}
+
diff --git a/qa/src/pmdaqueue.c b/qa/src/pmdaqueue.c
new file mode 100644
index 0000000..d8e4d1f
--- /dev/null
+++ b/qa/src/pmdaqueue.c
@@ -0,0 +1,309 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+/*
+ * Make a dummy event, timestamped now
+ */
+void *make_event(size_t size, struct timeval *tv)
+{
+ void *buffer = malloc(size);
+ if (buffer)
+ memset(buffer, 0xA, size);
+ gettimeofday(tv, NULL);
+ return buffer;
+}
+
+/*
+ * Simple filter based on event size, also report whenever called
+ */
+int apply_filter(void *data, void *event, size_t size)
+{
+ size_t filter = *(size_t *)data;
+
+ fprintf(stderr, "=> apply-filter(%d<%d) -> %d\n",
+ (int)filter, (int)size, size >= filter);
+ return (size >= filter);
+}
+
+/*
+ * Client context ended, ensure release method is called
+ */
+void release_filter(void *data)
+{
+ size_t filter = *(size_t *)data;
+ fprintf(stderr, "=> release filter(%d)\n", (int)filter);
+}
+
+/*
+ * Report stats about the state of given queue identifier
+ */
+void queue_statistics(int q)
+{
+ pmAtomValue count, bytes, clients, memory;
+
+ pmdaEventQueueCounter(q, &count);
+ pmdaEventQueueBytes(q, &bytes);
+ pmdaEventQueueClients(q, &clients);
+ pmdaEventQueueMemory(q, &memory);
+
+ fprintf(stderr, "event queue#%d count=%d, bytes=%d, clients=%d, mem=%lld\n",
+ q, (int)count.ul, (int)bytes.ull, (int)clients.ul,
+ (long long)memory.ull);
+}
+
+/*
+ * Report and check contents of events in a given queue identifier
+ * decode_event is a callback, called once per-event.
+ */
+
+int decode_event(int key, void *event, size_t size,
+ struct timeval *timestamp, void *data)
+{
+ char *buffer = (char *)event;
+ int *datap = (int *)data;
+ int queueid = datap[0];
+ int context = datap[1];
+ int i, ok = 1;
+
+ for (i = 0; i < size; i++)
+ if (buffer[i] != 0xA)
+ ok = 0;
+ fprintf(stderr, "queue#%d client#%d event: %p, size=%d check=%s\n",
+ queueid, context, event, (int)size, ok? "ok" : "bad");
+ return 0;
+}
+
+void queue_events(int q, int context)
+{
+ pmAtomValue records;
+ int data[2] = { q, context };
+
+ fprintf(stderr, "walking queue#%d events for client#%d\n", q, context);
+ pmdaEventQueueRecords(q, &records, context, decode_event, &data);
+ fprintf(stderr, "end walk queue#%d\n", q);
+}
+
+int
+main(int argc, char **argv)
+{
+ int c, sts;
+ int errflag = 0;
+ int context, queueid;
+ size_t size;
+ size_t filter_size;
+ struct timeval tv;
+ char *s, *name;
+ void *event;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "A:a:C:c:D:E:e:F:f:q:s:S:")) != EOF) {
+ switch (c) {
+
+ case 'a': /* disallow a clients queue access */
+ case 'A': /* allow a clients queue access */
+ s = optarg;
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid client queue access specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ context = atoi(name);
+ queueid = pmdaEventQueueHandle(s);
+
+ sts = pmdaEventSetAccess(context, queueid, (c == 'A'));
+ fprintf(stderr, "enable queue#%d access(%d) -> %d",
+ queueid, context, (c == 'A'));
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'c': /* new client: ID */
+ context = atoi(optarg);
+ sts = pmdaEventNewClient(context);
+ fprintf(stderr, "new client(%d) -> %d", context, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'C': /* remove client: ID */
+ context = atoi(optarg);
+ sts = pmdaEventEndClient(context);
+ fprintf(stderr, "end client(%d) -> %d", context, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'e': /* create an event on named queue of given size */
+ s = optarg;
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid event size specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ size = atoi(s);
+ queueid = pmdaEventQueueHandle(name);
+ if (queueid < 0) {
+ fprintf(stderr, "%s: invalid event queue specification (%s)\n",
+ pmProgname, name);
+ errflag++;
+ break;
+ }
+ event = make_event(size, &tv);
+ sts = pmdaEventQueueAppend(queueid, event, size, &tv);
+ fprintf(stderr, "add event(%s,%d) -> %d ", name, (int)size, sts);
+ if (sts < 0) fprintf(stderr, "%s", pmErrStr(sts));
+ else __pmPrintStamp(stderr, &tv);
+ fputc('\n', stderr);
+ break;
+
+ case 'E': /* create an event on queue ID of given size */
+ s = optarg;
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid event size specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ queueid = atoi(name);
+ size = atoi(s);
+ event = make_event(size, &tv);
+ sts = pmdaEventQueueAppend(queueid, event, size, &tv);
+ fprintf(stderr, "add queue#%d event(%s,%d) -> %d ",
+ queueid, name, (int)size, sts);
+ if (sts < 0) fprintf(stderr, "%s", pmErrStr(sts));
+ else __pmPrintStamp(stderr, &tv);
+ fputc('\n', stderr);
+ break;
+
+ case 'q': /* create queue with name and a max memory size */
+ s = optarg;
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid queue memory specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ size = atoi(s);
+ sts = pmdaEventNewQueue(name, size);
+ fprintf(stderr, "new queue(%s,%d) -> %d", name, (int)size, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'f': /* create client filter, limits size */
+ s = optarg;
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid client filter queue specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ context = atoi(name);
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid client filter size specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ queueid = pmdaEventQueueHandle(name);
+ filter_size = atoi(s);
+ sts = pmdaEventSetFilter(context, queueid, (void *)&filter_size,
+ apply_filter, release_filter);
+ fprintf(stderr, "client#%d set filter(sz<%d) on queue#%d-> %d",
+ context, (int)filter_size, queueid, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 'F': /* remove a clients filter */
+ s = optarg;
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid client filter queue specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ context = atoi(name);
+ queueid = pmdaEventQueueHandle(s);
+
+ sts = pmdaEventSetFilter(context, queueid, NULL, NULL, NULL);
+ fprintf(stderr, "end queue#%d filter(%d) -> %d", queueid, context, sts);
+ if (sts < 0) fprintf(stderr, " %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ break;
+
+ case 's': /* dump queue, events, clients counters */
+ name = optarg;
+ queueid = pmdaEventQueueHandle(name);
+ if (queueid < 0) {
+ fprintf(stderr, "%s: invalid queue specification (%s)\n",
+ pmProgname, name);
+ errflag++;
+ break;
+ }
+ queue_statistics(queueid);
+ break;
+
+ case 'S': /* dump queue contents, check events */
+ s = optarg;
+ name = strsep(&s, ",");
+ if (!s) {
+ fprintf(stderr, "%s: invalid client filter queue specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ break;
+ }
+ context = atoi(name);
+ queueid = pmdaEventQueueHandle(s);
+ queue_events(queueid, context);
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s ...\n", pmProgname);
+ fprintf(stderr, "Options:\n");
+ fprintf(stderr, " -a id,name disable a clients access\n");
+ fprintf(stderr, " -A id,name enable a clients access\n");
+ fprintf(stderr, " -c id create a new client\n");
+ fprintf(stderr, " -C id remove a client by id\n");
+ fprintf(stderr, " -e name,size append an event of size on queue\n");
+ fprintf(stderr, " -E id,size append an event of size on queue\n");
+ fprintf(stderr, " -q name,size create a new queue with max size\n");
+ fprintf(stderr, " -f id,name,sz client queue filter, limit size\n");
+ fprintf(stderr, " -F id,name remove a clients queue filter\n");
+ fprintf(stderr, " -D debug\n");
+ fprintf(stderr, " -s name report statistics for a queue\n");
+ fprintf(stderr, " -S id,name report clients events in a queue\n");
+ exit(1);
+ }
+
+ return 0;
+}
diff --git a/qa/src/pmdashutdown.c b/qa/src/pmdashutdown.c
new file mode 100644
index 0000000..fe1a0e3
--- /dev/null
+++ b/qa/src/pmdashutdown.c
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+static void
+usage(void)
+{
+ fprintf(stderr, "Usage: %s [options]\n\n", pmProgname);
+ fputs("Options:\n"
+ " -D N set pmDebug debugging flag to N\n"
+ " -d domain use domain (numeric) for metrics domain of PMDA\n"
+ " -h helpfile get help text from helpfile rather then default path\n"
+ " -l logfile write log into logfile rather than using default log name\n"
+ "\nExactly one of the following options may appear:\n"
+ " -i port expect PMCD to connect on given inet port (number or name)\n"
+ " -p expect PMCD to supply stdin/stdout (pipe)\n"
+ " -u socket expect PMCD to connect on given unix domain socket\n"
+ " -6 port expect PMCD to connect on given ipv6 port (number or name)\n",
+ stderr);
+ exit(1);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int err = 0;
+ pmdaInterface desc = { 0 };
+
+ __pmSetProgname(argv[0]);
+
+ /*
+ * Honour the pmcd connection protocol ...
+ */
+ pmdaDaemon(&desc, PMDA_INTERFACE_3, pmProgname, desc.domain, "pmdashutdown.log", NULL);
+ if (desc.status != 0) {
+ fprintf(stderr, "pmdaDaemon() failed!\n");
+ exit(1);
+ }
+ if (pmdaGetOpt(argc, argv, "D:d:h:i:l:pu:6:", &desc, &err) != EOF)
+ err++;
+ if (err)
+ usage();
+
+ pmdaOpenLog(&desc);
+ pmdaConnect(&desc);
+
+ /*
+ * if we exit immediately the smarter pmcd agent initialization
+ * will notice, and report unexpected end-of-file ... so sleep
+ * for longer than pmcd is willing to wait, then exit
+ */
+ sleep(10);
+
+ fprintf(stderr, "%s terminated\n", pmProgname);
+ exit(0);
+}
diff --git a/qa/src/pmlcmacro.c b/qa/src/pmlcmacro.c
new file mode 100644
index 0000000..a3a036b
--- /dev/null
+++ b/qa/src/pmlcmacro.c
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * exercise the state bit fiddling macros for pmlogger and friends
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main()
+{
+ int boo = 0x96969696;
+ int inlog;
+ int avail;
+ int mand;
+ int on;
+ int state;
+
+ for (inlog = 0; inlog < 2; inlog++) {
+ PMLC_SET_INLOG(boo, inlog);
+ for (avail = 0; avail < 2; avail++) {
+ PMLC_SET_AVAIL(boo, avail);
+ for (mand = 0; mand < 2; mand++) {
+ PMLC_SET_MAND(boo, mand);
+ for (on = 0; on < 2; on++) {
+ PMLC_SET_ON(boo, on);
+ printf("low-order bits: %2d\n", boo & 0xf);
+ if ((boo & 0xfffffff0) != 0x96969690)
+ printf("high-order bit botch: 0x%x (got) != 0x%x (expect)\n",
+ boo & 0xfffffff0, 0x96969690);
+ if (PMLC_GET_ON(boo) != on)
+ printf("PMLC_GET_ON botch: %d (got) != %d (expect)\n",
+ PMLC_GET_ON(boo), on);
+ if (PMLC_GET_MAND(boo) != mand)
+ printf("PMLC_GET_MAND botch: %d (got) != %d (expect)\n",
+ PMLC_GET_MAND(boo), mand);
+ if (PMLC_GET_AVAIL(boo) != avail)
+ printf("PMLC_GET_AVAIL botch: %d (got) != %d (expect)\n",
+ PMLC_GET_AVAIL(boo), avail);
+ if (PMLC_GET_INLOG(boo) != inlog)
+ printf("PMLC_GET_INLOG botch: %d (got) != %d (expect)\n",
+ PMLC_GET_INLOG(boo), inlog);
+ state = (inlog << 3) | (avail << 2) | (mand << 1) | on;
+ if (PMLC_GET_STATE(boo) != state)
+ printf("PMLC_GET_STATE botch: %d (got) != %d (expect)\n",
+ PMLC_GET_STATE(boo), state);
+ PMLC_SET_STATE(boo, state);
+ if ((boo & 0xfffffff0) != 0x96969690)
+ printf("high-order bit botch: 0x%x (got) != 0x%x (expect)\n",
+ boo & 0xfffffff0, 0x96969690);
+ }
+ }
+ }
+ }
+ exit(0);
+}
diff --git a/qa/src/pmnsinarchives.c b/qa/src/pmnsinarchives.c
new file mode 100644
index 0000000..8712566
--- /dev/null
+++ b/qa/src/pmnsinarchives.c
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * main - test the code which adds PMNS to archives
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+void
+parse_args(int argc, char **argv)
+{
+ extern char *optarg;
+ extern int optind;
+ int errflag = 0;
+ int c;
+ int sts;
+ static char *usage = "[-v]";
+
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+
+}
+
+typedef struct {
+ char *name;
+ pmID pmid;
+}Metric;
+
+static Metric metric_list[] = {
+ {"abc.def.ghi", 100},
+ {"abc.def.jkl", 200},
+ {"abc.mno", 300},
+ {"pqr.rst.uvw", 400},
+ {"pqr.xyz", 500}
+};
+static char *parents[] = {
+ "abc", "pqr", "abc.def", "def", "abc.def.ghi"
+};
+
+const int num_metrics = sizeof(metric_list) / sizeof(Metric);
+const int num_parents = sizeof(parents) / sizeof(char*);
+
+int
+main(int argc, char **argv)
+{
+ int sts = 0;
+ int i = 0;
+ __pmnsTree *pmns = NULL;
+
+ parse_args(argc, argv);
+
+
+ printf("\n*** Build up the PMNS from metrics... ***\n");
+ printf("Number of metrics = %d\n", num_metrics);
+
+ if ((sts = __pmNewPMNS(&pmns)) < 0) {
+ fprintf(stderr, "%s: __pmNewPMNS: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for(i = 0; i < num_metrics; i++) {
+ pmID pmid = metric_list[i].pmid;
+ char *name = metric_list[i].name;
+ sts = __pmAddPMNSNode(pmns, pmid, name);
+ printf("Adding node: \"%s\"[%d]\n", name, pmid);
+ if (sts < 0) {
+ fprintf(stderr, "%s: __pmAddPMNSNode: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if ((sts = __pmFixPMNSHashTab(pmns, num_metrics, 1)) < 0) {
+ fprintf(stderr, "%s: __pmFixPMNSHashTab: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ __pmUsePMNS(pmns);
+
+
+ printf("\n*** Check PMNS is ok ***\n");
+
+ printf("\n--- Dump out PMNS ---\n");
+ __pmDumpNameSpace(stdout, 1);
+
+ printf("\n--- Test out pmLookupName ---\n");
+ for(i = 0; i < num_metrics; i++) {
+ pmID pmid = metric_list[i].pmid;
+ char *name = metric_list[i].name;
+ pmID thepmid = 0;
+
+ if ((sts = pmLookupName(1, &name, &thepmid)) < 0) {
+ fprintf(stderr, "%s: _pmLookupName: %s\n",
+ pmProgname, pmErrStr(sts));
+ }
+ if (thepmid == pmid) {
+ printf("%d matches for name lookup\n", pmid);
+ }
+ else {
+ printf("%d does not match with %d\n", pmid, thepmid);
+ }
+ }
+
+ printf("\n--- Test out pmNameID for matches ---\n");
+ for(i = 0; i < num_metrics; i++) {
+ pmID pmid = metric_list[i].pmid;
+ char *name = metric_list[i].name;
+ char *thename = NULL;
+
+ if ((sts = pmNameID(pmid, &thename)) < 0) {
+ fprintf(stderr, "%s: _pmNameID: %s\n",
+ pmProgname, pmErrStr(sts));
+ }
+ if (strcmp(name, thename) == 0) {
+ printf("%s matches for id lookup\n", name);
+ }
+ else {
+ printf("%s does not match with %s\n", name, thename);
+ }
+ }
+
+ printf("\n--- Test out pmGetChildren ---\n");
+ for (i = 0; i < num_parents; i++) {
+ char *parent = parents[i];
+ int num_childs = 0;
+ int j;
+ char **offspring = NULL;
+
+ printf("Children of %s:\n", parent);
+ if ((sts = pmGetChildren(parent, &offspring)) < 0) {
+ fprintf(stderr, "%s: _pmGetChildren: %s\n",
+ pmProgname, pmErrStr(sts));
+ }
+ num_childs = sts;
+ for (j = 0; j < num_childs; j++) {
+ printf(" %s\n", offspring[j]);
+ }
+ }/*for*/
+
+ exit(0);
+}
diff --git a/qa/src/pmnsunload.c b/qa/src/pmnsunload.c
new file mode 100644
index 0000000..4400ef9
--- /dev/null
+++ b/qa/src/pmnsunload.c
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * check open/close archive for mem leaks
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#include "localconfig.h"
+
+static int vflag;
+static int tflag;
+
+void
+do_PMNS_op(char *msg)
+{
+ int sts;
+ char *name = "pmcd.control.debug";
+ pmID pmid;
+
+ printf("---%s---\n", msg);
+ printf("PMNS location = %d\n", pmGetPMNSLocation());
+ if ((sts = pmLookupName(1, &name, &pmid)) < 0) {
+ fprintf(stderr, "%s: lookup failed: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *archive = "foo";
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+ static char *usage = "[-D N] [-L] [-h host] [-a archive] [-n namespace] [-v] [-i iterations]";
+ int niter=100;
+ int i;
+ int contype = PM_CONTEXT_HOST;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "Li:h:a:D:n:tv")) != EOF) {
+ switch (c) {
+
+ case 'i': /* iterations */
+ niter = atoi(optarg);
+ break;
+ case 'L': /* local */
+ contype = PM_CONTEXT_LOCAL;
+ break;
+ case 'h': /* host */
+ host = optarg;
+ contype = PM_CONTEXT_HOST;
+ break;
+
+ case 'a': /* archive */
+ archive = optarg;
+ contype = PM_CONTEXT_ARCHIVE;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose output */
+ vflag++;
+ break;
+
+ case 't': /* trim namespace */
+ tflag++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ switch (contype) {
+ case PM_CONTEXT_LOCAL:
+ if ((sts = pmNewContext(PM_CONTEXT_LOCAL, NULL)) < 0) {
+ printf("%s: Cannot create local context: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ break;
+ case PM_CONTEXT_ARCHIVE:
+ if ((sts = pmNewContext(PM_CONTEXT_ARCHIVE, archive)) < 0) {
+ printf("%s: Cannot connect to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(sts));
+ exit(1);
+ }
+ break;
+ case PM_CONTEXT_HOST:
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+ break;
+ }
+
+ for (i=0; i < niter; i++) {
+ printf("***iteration %d***\n", i);
+ do_PMNS_op("pre-unload");
+ pmUnloadNameSpace();
+ do_PMNS_op("post-unload");
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ do_PMNS_op("post-load");
+ }
+ pmUnloadNameSpace();
+
+ (void)pmDestroyContext(pmWhichContext());
+
+#if PCP_VER >= 3611
+ __pmShutdown();
+#endif
+
+ exit(0);
+}
+
diff --git a/qa/src/pmprintf.c b/qa/src/pmprintf.c
new file mode 100644
index 0000000..b00a86c
--- /dev/null
+++ b/qa/src/pmprintf.c
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <pcp/pmapi.h>
+
+int
+main(int argc, char *argv[])
+{
+ int sts, i;
+ int fd;
+
+ if (argc < 2) {
+ fprintf(stderr, "Bad pmprintf invocation (need more args)\n");
+ exit(1);
+ }
+
+ /*
+ * Some stdio environments start with strange fd's open ... close
+ * 'em all to give us some breathing space
+ */
+ for (fd = 3; fd < 100; fd++)
+ close(fd);
+
+ /*
+ * for testing #634665 it helps to have a couple of extra
+ * open files ... see qa/505
+ * ProPack 2.2 increased this to need 5 extra ones
+ */
+ (void)open("/dev/null", O_RDONLY);
+ (void)open("/dev/null", O_RDONLY);
+ (void)open("/dev/null", O_RDONLY);
+ (void)open("/dev/null", O_RDONLY);
+ (void)open("/dev/null", O_RDONLY);
+ (void)open("/dev/null", O_RDONLY);
+ (void)open("/dev/null", O_RDONLY);
+
+ for (i = 1; i < argc; i++) {
+ if ((sts = pmprintf("%s ", argv[i])) < 0) {
+ fprintf(stderr, "pmprintf: %s\n", pmErrStr(sts));
+ }
+ }
+
+ pmprintf("\n");
+ pmflush();
+ exit(0);
+}
diff --git a/qa/src/pmsocks_objstyle.c b/qa/src/pmsocks_objstyle.c
new file mode 100644
index 0000000..2ce8cc9
--- /dev/null
+++ b/qa/src/pmsocks_objstyle.c
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <unistd.h>
+#include <limits.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ int mode = PM_MODE_INTERP; /* mode for archives */
+ char *start = NULL;
+ char *finish = NULL;
+ char *align = NULL;
+ char *offset = NULL;
+ char *logfile = NULL;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = NULL; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *pmnsfile = PM_NS_DEFAULT;
+ char *endnum;
+ struct timeval startTime;
+ struct timeval endTime;
+ struct timeval appStart;
+ struct timeval appEnd;
+ struct timeval appOffset;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a, -h or -U option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -D debug standard PCP debug flag\n\
+ -h host metrics source is PMCD on host\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != NULL) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if (pmnsfile != PM_NS_DEFAULT && (sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname,
+ pmnsfile, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if (mode != PM_MODE_INTERP) {
+ if ((sts = pmSetMode(mode, &label.ll_start, 0)) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ startTime = label.ll_start;
+ sts = pmGetArchiveEnd(&endTime);
+ if (sts < 0) {
+ fprintf(stderr, "%s: pmGetArchiveEnd: %s\n", pmProgname,
+ pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else {
+ gettimeofday(&startTime, NULL);
+ endTime.tv_sec = INT_MAX;
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != NULL) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+ else
+ tzh = pmNewContextZone();
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("extra argument[%d]: %s\n", optind, argv[optind]);
+ optind++;
+ }
+
+ if (align != NULL && type != PM_CONTEXT_ARCHIVE) {
+ fprintf(stderr, "%s: -A option only supported for PCP archives, alignment request ignored\n",
+ pmProgname);
+ align = NULL;
+ }
+
+ sts = pmParseTimeWindow(start, finish, align, offset, &startTime,
+ &endTime, &appStart, &appEnd, &appOffset,
+ &endnum);
+
+ if (sts < 0) {
+ fprintf(stderr, "%s: %s\n", pmProgname, endnum);
+ exit(1);
+ }
+
+ pmDestroyContext(pmWhichContext());
+ return 0;
+}
diff --git a/qa/src/proc.0 b/qa/src/proc.0
new file mode 100644
index 0000000..55cb74b
--- /dev/null
+++ b/qa/src/proc.0
Binary files differ
diff --git a/qa/src/proc.index b/qa/src/proc.index
new file mode 100644
index 0000000..fe2bc6f
--- /dev/null
+++ b/qa/src/proc.index
Binary files differ
diff --git a/qa/src/proc.meta b/qa/src/proc.meta
new file mode 100644
index 0000000..ff17655
--- /dev/null
+++ b/qa/src/proc.meta
Binary files differ
diff --git a/qa/src/proc_test.c b/qa/src/proc_test.c
new file mode 100644
index 0000000..a8a5ec1
--- /dev/null
+++ b/qa/src/proc_test.c
@@ -0,0 +1,624 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * Test Plan
+ * ---------
+ *
+ * 0. Agent has associated PMNS, testable say thru PMNS functions.
+ *
+ * Test the agent exported functions using the PMAPI:
+ * (We could call the agent functions directly but we might as well test
+ * that the whole package is working - i.e. communication via pmcd).
+ *
+ * 1. proc_desc - pmGetDesc
+ * 2. proc_text - pmLookupText, pmLookupInDomText
+ * 3. proc_instance - pmGetInDom, pmNameInDom, pmLookupInDom
+ * 4. proc_profile - pmAddProfile, pmDelProfile
+ * 5. proc_fetch - pmFetch
+ * 6. proc_store - pmStore
+ *
+ * Not used: proc_control
+ *
+ *
+ * Method
+ * ------
+ *
+ * 1. desc
+ * a. Test that all specified metrics can have their desc retrieved without error
+ * b. Test that all spec. metrics have the same indom.
+ * Note: ideally we would want to make sure that all the desc values returned are
+ * correct but that means basically just duplicating the agent's code.
+ *
+ * 3. instance
+ * a. Output the instance map, name-->inst, inst-->name
+ * This output can be tested by a script to look for certain
+ * processes.
+ * b. Verify that names and ids are consistent with each other.
+ *
+ * 4.5. profile/fetch
+ * a. Profile is set correctly - look at context dump
+ * b. Fetch on profile and ensure that the results only have the specified
+ * instances.
+ * Note: ideally we would to ensure that the values returned are correct.
+ * This, however, would be a tricky thing for a lot of metrics.
+ * The metrics are continually changing for the processes.
+ *
+ * 6. store
+ * a. Ensure it fails appropriately.
+ *
+ * TODO
+ * ----
+ * 0, 2,
+ *
+ */
+
+#include <ctype.h>
+#include <sys/wait.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#ifdef HAVE_PROCFS
+#ifdef IS_NETBSD
+#include <miscfs/procfs/procfs.h>
+#else
+#include <sys/procfs.h>
+#endif
+
+#define MAXMETRICS 1024
+
+int verbose = 0;
+char *host = "localhost";
+char *pmnsfile = PM_NS_DEFAULT;
+int nmetrics;
+char *metrics[MAXMETRICS];
+pmID pmids[MAXMETRICS];
+pmInDom indom;
+int iterations = 1;
+int all_n;
+int *all_inst;
+char **all_names;
+pid_t child_pid;
+int is_hotproc = 0;
+int refresh = 1;
+
+/* format of an entry in /proc */
+char proc_fmt[8]; /* export for procfs fname conversions */
+
+
+/*
+ * getargs
+ */
+
+void
+getargs(int argc, char **argv)
+{
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = " [-h hostname] [-n pmnsfile] "
+ "[-i iterations] [-t refresh] [-v] "
+ "metric [metric ...]";
+ int errflag = 0;
+ char *endnum;
+ int c;
+ int i;
+ int sts;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:n:i:t:v")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'i': /* iterations */
+ iterations = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -i requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'n': /* alternative name space file */
+ pmnsfile = optarg;
+ break;
+
+ case 't':
+ refresh = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ fprintf(stderr, "%s: -t requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'v':
+ verbose = 1;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+USAGE:
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ if (optind >= argc)
+ goto USAGE;
+
+ /* note metrics and dump them out */
+ for (i = 0; i < argc - optind; i++) {
+ metrics[i] = argv[optind+i];
+ if (strncmp(metrics[i], "hotproc.", 8) == 0) {
+ if (i > 0 && !is_hotproc) {
+ printf("%s: Error: all metrics should be from same agent\n",
+ pmProgname);
+ exit(1);
+ }
+ is_hotproc = 1;
+ }
+ else if (strncmp(metrics[i], "proc.", 5) == 0) {
+ if (i > 0 && is_hotproc) {
+ printf("%s: Error: all metrics should be from same agent\n",
+ pmProgname);
+ exit(1);
+ }
+ is_hotproc = 0;
+ }
+ else {
+ printf("%s: Error: all metrics should be from "
+ "proc or hotproc agent: %s\n", pmProgname, metrics[i]);
+ exit(1);
+ }
+ printf("metrics[%d] = <%s>\n", i, metrics[i]);
+ }
+ nmetrics = i;
+
+ if (nmetrics <= 0)
+ goto USAGE;
+}
+
+
+void
+print_banner_start(char *msg)
+{
+ int len = strlen(msg);
+ int i;
+
+ printf("\n");
+ for (i = 0; i < len+14; i++) printf("=");
+ printf("\n");
+ printf("=== Test: %s ===\n", msg);
+ for (i = 0; i < len+14; i++) printf("=");
+ printf("\n");
+
+}
+
+void
+print_banner_end(char *msg)
+{
+ int len = strlen(msg);
+ int i;
+
+ printf("\n");
+ for (i = 0; i < len+21; i++) printf("=");
+ printf("\n");
+ printf("=== End Of Test: %s ===\n", msg);
+ for (i = 0; i < len+21; i++) printf("=");
+ printf("\n");
+
+}
+
+static void
+set_proc_fmt(void)
+{
+ DIR *procdir;
+ const char *procfs = "/proc";
+ struct dirent *directp;
+ int ndigit;
+ int proc_entry_len; /* number of chars in procfs entry */
+
+ if ((procdir = opendir(procfs)) == NULL) {
+ perror(procfs);
+ return;
+ }
+ proc_entry_len = -1;
+ for (rewinddir(procdir); (directp = readdir(procdir));) {
+ if (!isdigit((int)directp->d_name[0]))
+ continue;
+ ndigit = (int)strlen(directp->d_name);
+ if (proc_entry_len == -1) {
+ proc_entry_len = ndigit;
+ sprintf(proc_fmt, "%%0%dd", proc_entry_len);
+ }
+ else if (ndigit != proc_entry_len) {
+ /*
+ * different lengths, so not fixed width ... this is the
+ * Linux way
+ */
+ sprintf(proc_fmt, "%%d");
+ break;
+ }
+ }
+ closedir(procdir);
+}
+
+/*
+ * 0.
+ * Does NOT really verify PMNS
+ * get pmids for rest of pm functions
+ */
+void
+test_PMNS(void)
+{
+ int sts;
+ int i;
+
+ print_banner_start("PMNS");
+ if ((sts = pmLookupName(nmetrics, metrics, pmids)) < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ for (i = 0; i < nmetrics; i++) {
+ if (pmids[i] == PM_ID_NULL)
+ printf(" %s - not known\n", metrics[i]);
+ }
+ exit(1);
+ }
+ print_banner_end("PMNS");
+
+}
+
+/*
+ * 1. check all the descriptors
+ */
+void
+test_desc(void)
+{
+ int sts;
+ int i;
+ pmDesc desc;
+
+ print_banner_start("desc");
+
+ /* test if possible to get one of them and get its indom */
+ if ((sts = pmLookupDesc(pmids[0], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: %s\n", pmErrStr(sts));
+ fprintf(stderr, "Associated metric = %s (%s)\n", metrics[0], pmIDStr(pmids[0]));
+ exit(1);
+ }
+ indom = desc.indom;
+ for (i=0; i < nmetrics; i++) {
+ if ((sts = pmLookupDesc(pmids[i], &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc: %s\n", pmErrStr(sts));
+ fprintf(stderr, "Associated metric = %s (%s)\n", metrics[i], pmIDStr(pmids[i]));
+ exit(1);
+ }
+ if (desc.indom != indom) {
+ fprintf(stderr, "metric <%s> has indom = %d, different to metric <%s> indom = %d\n",
+ metrics[i], desc.indom, metrics[0], indom);
+ fprintf(stderr, "This test requires all metrics have the same indom\n");
+ exit(1);
+ }
+ }
+
+ print_banner_end("desc");
+
+}
+
+
+/*
+ * 3.
+ * Test out proc_instance
+ * Using pmGetInDom(), pmNameInDom(), pmLookupInDom()
+ * Now get metrics for the entire instance domain
+ *
+ * Does some sanity checks on names and ids
+ */
+
+void
+test_instance(void)
+{
+ int sts;
+ int i;
+
+ print_banner_start("instance");
+ if (indom == PM_INDOM_NULL)
+ return;
+
+ fflush(stdout);
+ if ((child_pid=fork()) == 0) {
+ /* child sleeps and then exits */
+ sleep(2*refresh+1);
+ exit(0);
+ }
+ printf("cpid=%" FMT_PID "\n", child_pid);
+
+ if (is_hotproc) {
+ /* sleep so that hotprocs can update active list */
+ sleep(2*refresh);
+ }
+ printf("\n--- GetInDom ---\n");
+ sts = pmGetInDom(indom, &all_inst, &all_names);
+ if (sts < 0) {
+ printf("%s: pmGetInDom: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ else
+ all_n = sts;
+
+ /* print the instance id's (i.e. pids) match the first field in the name */
+ for (i=0; i < all_n; i++) {
+ int inst;
+ if (verbose)
+ printf(" instance map [%d \"%s\"]\n", all_inst[i], all_names[i]);
+
+ /* e.g. inst=0, name="00000 sched" */
+ if (sscanf(all_names[i], proc_fmt, &inst) != 1) {
+ printf("%s: Error: cannot get PID from instname\n", pmProgname);
+ printf("%s: <id,name> = <%ld,\"%s\">\n", pmProgname,
+ (long)all_inst[i], all_names[i]);
+ exit(1);
+ }
+ if (inst != all_inst[i]) {
+ printf("%s: Error: instname is wrong\n", pmProgname);
+ printf("%s: <id,name> = <%ld,\"%s\"> != %d (fmt=%s)\n", pmProgname,
+ (long)all_inst[i], all_names[i], inst, proc_fmt);
+ exit(1);
+ }
+ }
+
+ /* parent waits for child to exit */
+ /* so that the the following lookups will NOT be able to find it */
+ wait(&sts);
+
+
+ printf("\n--- LookupInDom ---\n");
+ for (i = 0; i < all_n; i++) {
+ int inst, x;
+ sts = pmLookupInDom(indom, all_names[i]);
+ if (sts < 0) {
+ if (sts == PM_ERR_INST) {
+ if (all_inst[i] == child_pid)
+ printf(" Death of child detected, pid=%" FMT_PID "\n", child_pid);
+ /* ignore deaths */
+ continue;
+ }
+ else {
+ printf("%s: pmLookupInDom: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ inst = sts;
+ if (verbose)
+ printf(" instance lookup \"%s\" --> %d\n", all_names[i], inst);
+ sscanf(all_names[i], proc_fmt, &x);
+ if (x != inst) {
+ printf("%s: Error: inst is wrong, expect: %d got: %d\n",
+ pmProgname, inst, x);
+ printf("%s: Expected=%d, Actual=%d\n", pmProgname, x, inst);
+ exit(1);
+ }
+ }/*for*/
+
+ printf("\n--- NameInDom ---\n");
+ for (i = 0; i < all_n; i++) {
+ char *name;
+ char x[100];
+
+ sts = pmNameInDom(indom, all_inst[i], &name);
+ if (sts < 0) {
+ if (sts == PM_ERR_INST) {
+ if (all_inst[i] == child_pid)
+ printf(" Death of child detected\n");
+ /* ignore deaths */
+ continue;
+ }
+ else {
+ printf("%s: pmNameInDom: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ if (verbose)
+ printf(" instance name %d --> \"%s\"\n", all_inst[i], name);
+ sprintf(x, proc_fmt, all_inst[i]);
+ if (strncmp(name, x, strlen(x)) != 0 ||
+ (name[strlen(x)] != '\0' && name[strlen(x)] != ' ')) {
+ /* try w/out leading zeroes */
+ char *q;
+ sprintf(x, "%d", all_inst[i]);
+ for (q = name; *q && *q == '0'; q++)
+ ;
+ if (strncmp(q, x, strlen(x)) != 0 ||
+ (q[strlen(x)] != '\0' && q[strlen(x)] != ' ')) {
+ printf("%s: Error: name is wrong\n", pmProgname);
+ printf("%s: Expected=\"%s\", Actual=\"%s\"\n", pmProgname, x, name);
+ exit(1);
+ }
+ }
+ free(name);
+ }/*for*/
+
+ print_banner_end("instance");
+}
+
+
+/*
+ * Tests 4. and 5.
+ * Set up an explicit profile of ourself and our parent
+ * If any of the metrics are not in the proc indom, we'll get no values back.
+ * Checks if profile is being handled correctly.
+ * Checks if fetch is using profile correctly.
+ */
+void
+test_prof_fetch(void)
+{
+ int sts;
+ int i;
+ int pids[2];
+ pmResult *result1, *result2;
+
+ print_banner_start("profile/fetch");
+
+ pids[0] = (int)getpid();
+ pids[1] = (int)getppid();
+ pmDelProfile(indom, 0, NULL);
+ pmAddProfile(indom, 2, pids);
+
+ printf("\n--- Check profile in context dump... ---\n");
+ if ((sts = pmWhichContext()) < 0) {
+ printf("%s: pmWhichContext: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ __pmDumpContext(stdout, sts, PM_INDOM_NULL);
+ printf("--- End Check profile in context dump... ---\n");
+
+ printf("\n--- Fetch Over Restricted Instance Domain ... ---\n");
+ for (i=0; i < iterations; i++) {
+ int j,k;
+
+ sts = pmFetch(nmetrics, pmids, &result1);
+ if (sts < 0) {
+ printf("%s: iteration %d : %s\n", pmProgname, i, pmErrStr(sts));
+ exit(1);
+ }
+ __pmDumpResult(stdout, result1);
+
+
+ for (j = 0; j < result1->numpmid; j++) {
+ pmValueSet *set = result1->vset[j];
+
+ if (set->numval != 2) {
+ printf("%s: Error: num of inst == %d\n", pmProgname, set->numval);
+ }
+
+ for (k = 0; k < set->numval; k++) {
+ pmValue *val = &set->vlist[k];
+ if (val->inst != pids[0] && val->inst != pids[1]) {
+ printf("%s: Error: inst ids do not match pids\n", pmProgname);
+ exit(1);
+ }
+ }
+ }
+
+ pmFreeResult(result1);
+ }
+ printf("--- End Fetch Over Restricted Instance Domain ... ---\n");
+
+
+
+ printf("\n--- Fetch Over Entire Instance Domain ... ---\n");
+ if (indom != PM_INDOM_NULL) {
+ pmDelProfile(indom, 0, NULL);
+ pmAddProfile(indom, all_n, all_inst);
+ }
+ sts = pmFetch(nmetrics, pmids, &result2);
+ if (sts < 0) {
+ printf("%s: fetch all %d instances : %s\n", pmProgname, all_n, pmErrStr(sts));
+ exit(1);
+ }
+ __pmDumpResult(stdout, result2);
+ pmFreeResult(result2);
+ printf("--- End Fetch Over Entire Instance Domain ... ---\n");
+
+ print_banner_end("profile/fetch");
+
+}
+
+void
+test_store(void)
+{
+ int sts;
+ pmResult *result;
+
+ print_banner_start("store");
+
+ sts = pmFetch(nmetrics, pmids, &result);
+ if (sts < 0) {
+ printf("%s: fetch failed : %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmStore(result)) != -EACCES && sts != PM_ERR_PERMISSION) {
+ printf("%s: Error: pmStore did not fail correctly\n", pmProgname);
+ printf("Expected: %s\n", pmErrStr(-EACCES));
+ printf("or: %s\n", pmErrStr(PM_ERR_PERMISSION));
+ printf("Got: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ pmFreeResult(result);
+
+ print_banner_end("store");
+}
+
+/*
+ * main
+ */
+int
+main(int argc, char **argv)
+{
+ int sts;
+
+ set_proc_fmt();
+ printf("pid=%" FMT_PID " ppid=%" FMT_PID "\n", getpid(), getppid());
+ getargs(argc, argv);
+
+ if (pmnsfile != PM_NS_DEFAULT) {
+ if ((sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: Cannot load pmnsfile from \"%s\": %s\n",
+ pmProgname, pmnsfile, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ test_PMNS();
+ test_desc();
+ test_instance();
+ test_prof_fetch();
+ if (!is_hotproc)
+ test_store();
+
+ if ((sts = pmWhichContext()) < 0) {
+ printf("%s: pmWhichContext: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ pmDestroyContext(sts);
+
+ exit(0);
+}
+#else
+int
+main(int argc, char **argv)
+{
+ printf("No /proc pseudo filesystem on this platform\n");
+ exit(1);
+}
+#endif /* HAVE_PROCFS */
diff --git a/qa/src/pthread_barrier.h b/qa/src/pthread_barrier.h
new file mode 100644
index 0000000..a01028e
--- /dev/null
+++ b/qa/src/pthread_barrier.h
@@ -0,0 +1,86 @@
+/*
+ * pthread_barrier code if libpthread does not have it ...
+ *
+ * Original code from Brent Priddy's code fragment at
+ * http://stackoverflow.com/questions/3640853
+ *
+ * Copyright (c) 2010 Brent Priddy.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+typedef int pthread_barrierattr_t;
+typedef struct
+{
+ pthread_mutex_t mutex;
+ pthread_cond_t cond;
+ int count;
+ int tripCount;
+} pthread_barrier_t;
+
+
+int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count)
+{
+ if(count == 0)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+ if(pthread_mutex_init(&barrier->mutex, 0) < 0)
+ {
+ return -1;
+ }
+ if(pthread_cond_init(&barrier->cond, 0) < 0)
+ {
+ pthread_mutex_destroy(&barrier->mutex);
+ return -1;
+ }
+ barrier->tripCount = count;
+ barrier->count = 0;
+
+ return 0;
+}
+
+int pthread_barrier_destroy(pthread_barrier_t *barrier)
+{
+ pthread_cond_destroy(&barrier->cond);
+ pthread_mutex_destroy(&barrier->mutex);
+ return 0;
+}
+
+int pthread_barrier_wait(pthread_barrier_t *barrier)
+{
+ pthread_mutex_lock(&barrier->mutex);
+ ++(barrier->count);
+ if(barrier->count >= barrier->tripCount)
+ {
+ barrier->count = 0;
+ pthread_cond_broadcast(&barrier->cond);
+ pthread_mutex_unlock(&barrier->mutex);
+ return 1;
+ }
+ else
+ {
+ pthread_cond_wait(&barrier->cond, &(barrier->mutex));
+ pthread_mutex_unlock(&barrier->mutex);
+ return 0;
+ }
+}
diff --git a/qa/src/pv.c b/qa/src/pv.c
new file mode 100644
index 0000000..a290aa7
--- /dev/null
+++ b/qa/src/pv.c
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "pcp/pmapi.h"
+
+/*
+ * exercise pmPrintValue() ... should produce very similar answers
+ * when compiled both 32 and 64 bit ... see pv and pv64 targets in
+ * the Makefile
+ */
+
+int
+main(void)
+{
+ pmValue v;
+ int l;
+ unsigned int ul;
+ long long ll;
+ unsigned long long ull;
+ float f;
+ float *fp;
+ double d;
+ struct {
+ int len;
+ char vbuf[sizeof(double)];
+ } vb;
+
+ v.inst = 1;
+
+ l = -1 & (~0xffff);
+ memcpy((void *)&v.value.lval, (void *)&l, sizeof(l));
+ printf("PM_TYPE_32: ");
+ pmPrintValue(stdout, PM_VAL_INSITU, PM_TYPE_32, &v, 1);
+ printf(" correct: %i (0x%x)\n", l, l);
+
+ ul = 0x87654321;
+ memcpy((void *)&v.value.lval, (void *)&ul, sizeof(ul));
+ printf("PM_TYPE_U32: ");
+ pmPrintValue(stdout, PM_VAL_INSITU, PM_TYPE_U32, &v, 1);
+ printf(" correct: %u (0x%x)\n", ul, ul);
+
+ f = 123456.78;
+ fp = (float *)&v.value.lval;
+ *fp = f;
+ printf("PM_TYPE_FLOAT: ");
+ pmPrintValue(stdout, PM_VAL_INSITU, PM_TYPE_FLOAT, &v, 9);
+ printf(" correct: %.2f\n", (double)f);
+
+ d = 123456.789012345;
+ memcpy((void *)vb.vbuf, (void *)&d, sizeof(double));
+ vb.len = sizeof(vb.len) + sizeof(double);
+ v.value.pval = (pmValueBlock *)&vb;
+ printf("PM_TYPE_DOUBLE: ");
+ pmPrintValue(stdout, PM_VAL_SPTR, PM_TYPE_DOUBLE, &v, 16);
+ printf(" correct: %.9f\n", d);
+
+ ll = -1 & (~0xffff);
+ memcpy((void *)vb.vbuf, (void *)&ll, sizeof(long long));
+ vb.len = sizeof(vb.len) + sizeof(long long);
+ v.value.pval = (pmValueBlock *)&vb;
+ printf("PM_TYPE_64: ");
+ pmPrintValue(stdout, PM_VAL_SPTR, PM_TYPE_64, &v, 1);
+ printf(" correct: %lli (0x%llx)\n", ll, ll);
+
+ ull = 0x8765432112340000LL;
+ memcpy((void *)vb.vbuf, (void *)&ull, sizeof(unsigned long long));
+ vb.len = sizeof(vb.len) + sizeof(unsigned long long);
+ v.value.pval = (pmValueBlock *)&vb;
+ printf("PM_TYPE_U64: ");
+ pmPrintValue(stdout, PM_VAL_SPTR, PM_TYPE_U64, &v, 1);
+ printf(" correct: %llu (0x%llx)\n", ull, ull);
+
+ exit(0);
+}
diff --git a/qa/src/pyapi.0 b/qa/src/pyapi.0
new file mode 100644
index 0000000..eb76a2b
--- /dev/null
+++ b/qa/src/pyapi.0
Binary files differ
diff --git a/qa/src/pyapi.index b/qa/src/pyapi.index
new file mode 100644
index 0000000..5bcebf9
--- /dev/null
+++ b/qa/src/pyapi.index
Binary files differ
diff --git a/qa/src/pyapi.meta b/qa/src/pyapi.meta
new file mode 100644
index 0000000..ae4ff59
--- /dev/null
+++ b/qa/src/pyapi.meta
Binary files differ
diff --git a/qa/src/qa_test.c b/qa/src/qa_test.c
new file mode 100644
index 0000000..8c0305d
--- /dev/null
+++ b/qa/src/qa_test.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+
+main(int argc, char *argv[]) {
+ printf("This program does nothing, and wastes a lot of space doing it!\n");
+ exit(0);
+}
diff --git a/qa/src/qa_timezone.c b/qa/src/qa_timezone.c
new file mode 100644
index 0000000..a9c46a1
--- /dev/null
+++ b/qa/src/qa_timezone.c
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+ *
+ * Based on from tz.c in libpcp/src ... use $PCPQA_TZ not $TZ and
+ * no squashing and default is EST-10 for everyone ... 8^)>
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#if !defined(HAVE_UNDERBAR_ENVIRON)
+#define _environ environ
+#endif
+
+extern char **_environ;
+
+/*
+ * __pmTimezone: work out local timezone
+ */
+char *
+__pmTimezone(void)
+{
+ char *tz = getenv("PCPQA_TZ");
+
+ if (tz == NULL) {
+ fprintf(stderr, "__pmTimezone: BOZO $PCPQA_TZ not set, using EST-10\n");
+ tz = strdup("EST-10");
+ }
+ if (strlen(tz) > PM_TZ_MAXLEN) {
+ fprintf(stderr, "__pmTimezone: BOZO $PCPQA_TZ (%s) must be shorter than %d chars!\n", tz, PM_TZ_MAXLEN);
+ tz[PM_TZ_MAXLEN-1] = '\0';
+ }
+
+ fprintf(stderr, "Burglar alert tz=%s\n", tz);
+
+ return tz;
+}
diff --git a/qa/src/rattle.0 b/qa/src/rattle.0
new file mode 100644
index 0000000..194a1c4
--- /dev/null
+++ b/qa/src/rattle.0
Binary files differ
diff --git a/qa/src/rattle.index b/qa/src/rattle.index
new file mode 100644
index 0000000..8bbc452
--- /dev/null
+++ b/qa/src/rattle.index
Binary files differ
diff --git a/qa/src/rattle.meta b/qa/src/rattle.meta
new file mode 100644
index 0000000..0fcf3f0
--- /dev/null
+++ b/qa/src/rattle.meta
Binary files differ
diff --git a/qa/src/read-bf.c b/qa/src/read-bf.c
new file mode 100644
index 0000000..31ac173
--- /dev/null
+++ b/qa/src/read-bf.c
@@ -0,0 +1,106 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+typedef struct {
+ unsigned int a:16;
+ unsigned int b:7;
+ unsigned int c:3;
+ unsigned int d:3;
+ unsigned int e:3;
+ unsigned int f:4;
+ unsigned int g:12;
+} ext_bits_t;
+
+typedef struct {
+ unsigned int a:16;
+ unsigned int b:7;
+ unsigned int c:3;
+ unsigned int d:3;
+ unsigned int e:3;
+ unsigned int f:4;
+ unsigned int g:12;
+} bits_t;
+
+bits_t outbits = { 0xdead, 0x5f, 0x3, 0x5, 0x7, 0xc, 0xafe };
+
+int
+main(int argc, char *argv[])
+{
+ bits_t inbits;
+ ext_bits_t extbits;
+ __uint32_t *ip;
+ int i;
+ int sts;
+
+ fprintf(stderr, "sizeof(bits_t): %d\n", (int)sizeof(bits_t));
+
+ if (strcmp(basename(argv[0]), "read-bf") == 0) {
+ sts = read(0, &extbits, sizeof(ext_bits_t));
+ if (sts != sizeof(ext_bits_t)) {
+ fprintf(stderr, "read() returns %d not %d as expected\n", sts, (int)sizeof(ext_bits_t));
+ exit(1);
+ }
+
+ fprintf(stderr, "read: ");
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ fprintf(stderr, " %08x", *ip);
+ fputc('\n', stderr);
+
+ /*
+ * swap bytes, then assign fields
+ */
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ *ip = ntohl(*ip);
+
+ inbits.a = extbits.a;
+ inbits.b = extbits.b;
+ inbits.c = extbits.c;
+ inbits.d = extbits.d;
+ inbits.e = extbits.e;
+ inbits.f = extbits.f;
+ inbits.g = extbits.g;
+
+ if (inbits.a != outbits.a)
+ fprintf(stderr, "Error: \"a\" got %x expected %x\n", inbits.a, outbits.a);
+ if (inbits.b != outbits.b)
+ fprintf(stderr, "Error: \"b\" got %x expected %x\n", inbits.b, outbits.b);
+ if (inbits.c != outbits.c)
+ fprintf(stderr, "Error: \"c\" got %x expected %x\n", inbits.c, outbits.c);
+ if (inbits.d != outbits.d)
+ fprintf(stderr, "Error: \"d\" got %x expected %x\n", inbits.d, outbits.d);
+ if (inbits.e != outbits.e)
+ fprintf(stderr, "Error: \"e\" got %x expected %x\n", inbits.e, outbits.e);
+ if (inbits.f != outbits.f)
+ fprintf(stderr, "Error: \"f\" got %x expected %x\n", inbits.f, outbits.f);
+ if (inbits.g != outbits.g)
+ fprintf(stderr, "Error: \"g\" got %x expected %x\n", inbits.g, outbits.g);
+ }
+ else {
+ /*
+ * assign fields, then swap bytes
+ */
+ memset(&extbits, 0, sizeof(ext_bits_t));
+ extbits.a = outbits.a;
+ extbits.b = outbits.b;
+ extbits.c = outbits.c;
+ extbits.d = outbits.d;
+ extbits.e = outbits.e;
+ extbits.f = outbits.f;
+ extbits.g = outbits.g;
+
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ *ip = htonl(*ip);
+
+ fprintf(stderr, "write: ");
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ fprintf(stderr, " %08x", *ip);
+ fputc('\n', stderr);
+
+ sts = write(1, &extbits, sizeof(bits_t));
+ if (sts != sizeof(bits_t)) {
+ fprintf(stderr, "write() returns %d not %d as expected\n", sts, (int)sizeof(bits_t));
+ exit(1);
+ }
+ }
+ exit(0);
+}
diff --git a/qa/src/recon.c b/qa/src/recon.c
new file mode 100644
index 0000000..882f281
--- /dev/null
+++ b/qa/src/recon.c
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * ping pmcd ... when the connection is lost, note time.
+ * keep pinging ... when connection is resumed, report time delta.
+ *
+ * Has to be run as root to control pmcd
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ struct timeval now;
+ struct timeval then;
+ pmResult *rp;
+ int i;
+ char *namelist[4];
+ pmID pmidlist[4];
+ int numpmid;
+ int ctx;
+ int c;
+ int sts;
+ int errflag = 0;
+ static const struct timeval delay = { 0, 10000 };
+ /*
+ * was sginap(10) ... I think this dated from the sgi days when this
+ * was, 10 * 1/100 (1/HZ) seconds, so 100,000 usec or 100 msec ...
+ * but this is not reliable for the QA test (200), so changed to
+ * 10 msec
+ */
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options:\n\
+ -D N set pmDebug debugging flag to N\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext: %s\n", pmErrStr(ctx));
+ exit(1);
+ }
+
+ i = 0;
+ namelist[i++] = "sample.long.write_me";
+ numpmid = i;
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts < 0) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(sts));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ fprintf(stderr, " %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ for ( ; ; ) {
+ if ((sts = pmFetch(1, pmidlist, &rp)) < 0) {
+ fprintf(stderr, "pmFetch failed: %s\n", pmErrStr(sts));
+ if (sts != PM_ERR_IPC && sts != -ECONNRESET) {
+ /* unexpected */
+ fprintf(stderr, "Bogus error?\n");
+ exit(1);
+ }
+ gettimeofday(&then, (struct timezone *)0);
+ break;
+ }
+ pmFreeResult(rp);
+ __pmtimevalSleep(delay);
+ }
+
+ for ( ; ; ) {
+ if ((sts = pmReconnectContext(ctx)) >= 0) {
+ fprintf(stderr, "pmReconnectContext: success\n");
+ gettimeofday(&now, (struct timezone *)0);
+ fprintf(stderr, "delay: %.0f secs\n", __pmtimevalSub(&now, &then));
+ break;
+ }
+ __pmtimevalSleep(delay);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/record-setarg.c b/qa/src/record-setarg.c
new file mode 100644
index 0000000..d745d47
--- /dev/null
+++ b/qa/src/record-setarg.c
@@ -0,0 +1,69 @@
+/*
+ * record-setarg - simulate pmRecord*() usage
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmafm.h>
+
+/*
+ * Usage: record-setarg folio
+ */
+
+int
+main(int argc, char **argv)
+{
+ pmRecordHost *rhp;
+ int sts;
+ FILE *f;
+ extern int errno;
+ char buf[20];
+
+ if (argc < 2) {
+ printf("Usage: record-setarg folio\n");
+ exit(1);
+ }
+
+ f = pmRecordSetup(argv[1], "record-setarg", 0);
+ if (f == NULL) {
+ printf("pmRecordSetup(\"%s\", ...): %s\n",
+ argv[1], pmErrStr(-errno));
+ exit(1);
+ }
+
+ sts = pmRecordAddHost("localhost", 1, &rhp);
+ if (sts < 0) {
+ printf("pmRecordAddHost: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ fprintf(rhp->f_config, "log mandatory on default sample.bin [ \"bin-400\" \"bin-800\" ]\n");
+
+ sts = pmRecordControl(NULL, PM_REC_SETARG, "-t");
+ sprintf(buf, "%dsec", 1);
+ sts += pmRecordControl(NULL, PM_REC_SETARG, buf);
+ sprintf(buf, "-T%dsec", 10);
+ sts += pmRecordControl(NULL, PM_REC_SETARG, buf);
+ if (sts < 0) {
+ printf("pmRecordControl(NULL, PM_REC_SETARG, NULL): %s\n",
+ pmErrStr(sts));
+ exit(1);
+ }
+
+ sts = pmRecordControl(NULL, PM_REC_ON, NULL);
+ if (sts < 0) {
+ printf("pmRecordControl(NULL, PM_REC_ON, NULL): %s\n",
+ pmErrStr(sts));
+ exit(1);
+ }
+
+ printf("\nsleeping ...\n\n");
+ sleep(12);
+
+ sts = pmRecordControl(rhp, PM_REC_OFF, NULL);
+ if (sts < 0)
+ printf("pmRecordControl(..., PM_REC_OFF, ...): %s\n", pmErrStr(sts));
+
+ exit(0);
+}
diff --git a/qa/src/record.c b/qa/src/record.c
new file mode 100644
index 0000000..1483c5e
--- /dev/null
+++ b/qa/src/record.c
@@ -0,0 +1,120 @@
+/*
+ * record - play pmRecord*() games
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmafm.h>
+
+/*
+ * Usage: record folio creator replay host [...]
+ */
+
+int
+main(int argc, char **argv)
+{
+ pmRecordHost *rhp[10];
+ int sts;
+ int i;
+ FILE *f;
+ extern int errno;
+
+ if (argc < 5) {
+ printf("Usage: record folio creator replay host [...]\n");
+ exit(1);
+ }
+
+ f = pmRecordSetup(argv[1], argv[2], atoi(argv[3]));
+ if (f == NULL) {
+ printf("pmRecordSetup(\"%s\", ...): %s\n",
+ argv[1], pmErrStr(-errno));
+ exit(1);
+ }
+
+ for (i = 4; i < argc; i++) {
+ printf("host: %s\n", argv[i]);
+ sts = pmRecordAddHost(argv[i], i == 4, &rhp[i-4]);
+ if (sts < 0) {
+ printf("pmRecordAddHost(\"%s\", %d, ...): %s\n",
+ argv[i], i==4, pmErrStr(sts));
+ exit(1);
+ }
+ printf("f_config: %s", rhp[i-4]->f_config == NULL ? "NULL" : "OK");
+ printf(" f_ipc: %d pid: %" FMT_PID " status: %d\n", rhp[i-4]->fd_ipc, rhp[i-4]->pid, rhp[i-4]->status);
+ printf("logfile: %s\n", rhp[i-4]->logfile);
+ fprintf(rhp[i-4]->f_config, "log mandatory on 30sec pmcd.control.timeout\n");
+ }
+
+ sts = pmRecordControl(NULL, PM_REC_ON, NULL);
+ if (sts < 0) {
+ printf("pmRecordControl(NULL, PM_REC_ON, NULL): %s\n",
+ pmErrStr(sts));
+ exit(1);
+ }
+
+ printf("\nsleeping ...\n\n");
+ sleep(3);
+
+ for (i = 4; i < argc; i++) {
+ printf("host: %s\n", argv[i]);
+ printf("f_config: %s", rhp[i-4]->f_config == NULL ? "NULL" : "OK");
+ printf(" f_ipc: %d pid: %" FMT_PID " status: %d\n", rhp[i-4]->fd_ipc, rhp[i-4]->pid, rhp[i-4]->status);
+ printf("logfile: %s\n", rhp[i-4]->logfile);
+ }
+
+ printf("\nsend some control requests ...\n");
+ for (i = 4; i < argc; i++) {
+ printf("host: %s\n", argv[i]);
+ if (i % 4 == 0) {
+ printf(" OFF\n");
+ sts = pmRecordControl(rhp[i-4], PM_REC_OFF, NULL);
+ if (sts < 0)
+ printf("pmRecordControl: %s\n", pmErrStr(sts));
+ }
+ else if (i % 4 == 1) {
+ printf(" DETACH\n");
+ sts = pmRecordControl(rhp[i-4], PM_REC_DETACH, NULL);
+ if (sts < 0)
+ printf("pmRecordControl: %s\n", pmErrStr(sts));
+ }
+ else if (i % 4 == 2) {
+ printf(" STATUS\n");
+ sts = pmRecordControl(rhp[i-4], PM_REC_STATUS, NULL);
+ if (sts < 0)
+ printf("pmRecordControl: %s\n", pmErrStr(sts));
+ }
+ else {
+ printf(" close(fd_ipc)\n");
+ close(rhp[i-4]->fd_ipc);
+ }
+ sleep(1);
+ }
+
+ printf("\nnow stop 'em all ...\n");
+ for (i = 4; i < argc; i++) {
+ printf("host: %s\n", argv[i]);
+ sts = pmRecordControl(rhp[i-4], PM_REC_OFF, NULL);
+ if (sts < 0)
+ printf("pmRecordControl(... OFF ...): %s\n", pmErrStr(sts));
+ }
+
+ sleep(2);
+
+ printf("\nand again to get any exit status ...\n");
+ sts = pmRecordControl(NULL, PM_REC_OFF, NULL);
+ if (sts < 0)
+ printf("pmRecordControl( ... OFF ...): %s\n", pmErrStr(sts));
+
+ printf("\n\ndiscover what's happened ...\n");
+ putchar('\n');
+ for (i = 4; i < argc; i++) {
+ printf("host: %s\n", argv[i]);
+ printf("f_config: %s", rhp[i-4]->f_config == NULL ? "NULL" : "OK");
+ printf(" f_ipc: %d pid: %" FMT_PID " status: %d\n", rhp[i-4]->fd_ipc, rhp[i-4]->pid, rhp[i-4]->status);
+ printf("logfile: %s\n", rhp[i-4]->logfile);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/reduce-1.0 b/qa/src/reduce-1.0
new file mode 100644
index 0000000..fa4d753
--- /dev/null
+++ b/qa/src/reduce-1.0
Binary files differ
diff --git a/qa/src/reduce-1.index b/qa/src/reduce-1.index
new file mode 100644
index 0000000..f3cdfba
--- /dev/null
+++ b/qa/src/reduce-1.index
Binary files differ
diff --git a/qa/src/reduce-1.meta b/qa/src/reduce-1.meta
new file mode 100644
index 0000000..366e0b2
--- /dev/null
+++ b/qa/src/reduce-1.meta
Binary files differ
diff --git a/qa/src/reduce-2.0 b/qa/src/reduce-2.0
new file mode 100644
index 0000000..768e633
--- /dev/null
+++ b/qa/src/reduce-2.0
Binary files differ
diff --git a/qa/src/reduce-2.index b/qa/src/reduce-2.index
new file mode 100644
index 0000000..c482a68
--- /dev/null
+++ b/qa/src/reduce-2.index
Binary files differ
diff --git a/qa/src/reduce-2.meta b/qa/src/reduce-2.meta
new file mode 100644
index 0000000..ac61dc5
--- /dev/null
+++ b/qa/src/reduce-2.meta
Binary files differ
diff --git a/qa/src/reduce.config b/qa/src/reduce.config
new file mode 100644
index 0000000..5895c2d
--- /dev/null
+++ b/qa/src/reduce.config
@@ -0,0 +1,21 @@
+log mandatory on default {
+# instantaneous constant value
+ sample.load
+ sample.longlong
+ sample.float
+ sample.double
+# instantaneous drifting value
+ sample.drift
+# constant counter, singular value
+ sample.milliseconds
+# constant counter and reset, with instance domain
+ sample.colour
+# non-constant counter
+ sample.step_counter
+# wrap a lot
+ sample.wrap.ulong
+ sample.wrap.longlong
+# cannot deal with these
+ sample.string
+ sample.aggregate
+}
diff --git a/qa/src/rewrite.0 b/qa/src/rewrite.0
new file mode 100644
index 0000000..76ccb86
--- /dev/null
+++ b/qa/src/rewrite.0
Binary files differ
diff --git a/qa/src/rewrite.index b/qa/src/rewrite.index
new file mode 100644
index 0000000..9d69d97
--- /dev/null
+++ b/qa/src/rewrite.index
Binary files differ
diff --git a/qa/src/rewrite.meta b/qa/src/rewrite.meta
new file mode 100644
index 0000000..d6c77d3
--- /dev/null
+++ b/qa/src/rewrite.meta
Binary files differ
diff --git a/qa/src/root_irix b/qa/src/root_irix
new file mode 100644
index 0000000..8720cf8
--- /dev/null
+++ b/qa/src/root_irix
@@ -0,0 +1,2114 @@
+/*
+ * libirixpmda Performance Metrics Name Space Definition
+ *
+ * From IRIX 6.5.5 ... for reference and V1 PCP archives.
+ */
+
+root {
+ buffer_cache
+ disk
+ efs
+ filesys
+ gfx
+ hinv
+ hw
+ ipc
+ kaio
+ kernel
+ mem
+ name_cache
+ network
+ nfs
+ nfs3
+ origin
+ pmda
+ resource
+ rpc
+ stream
+ swap
+ swapdev
+ vnodes
+ xbow
+ xfs
+ xlv
+ xpc
+ proc
+ sample
+ sampledso
+ pmcd
+}
+
+
+origin {
+ node
+ numa
+}
+
+hinv {
+ ncpu 1:18:2
+ cpuclock 1:26:1
+ mincpuclock 1:26:10
+ maxcpuclock 1:26:11
+ cputype 1:26:13
+ dcache 1:26:2
+ icache 1:26:3
+ secondarycache 1:26:4
+ machine 1:26:12
+ physmem 1:26:5
+ pmeminterleave 1:26:6
+ ndisk 1:26:7
+ disk_sn 1:80:14
+ nnode 1:26:8
+ nrouter 1:38:0
+ nrouterport 1:38:11
+ interconnect 1:38:13
+ nxbow 1:42:1
+ ncell 1:26:14
+ pagesize 1:26:15
+ map
+ nxlv_volumes 1:45:1
+ nfilesys 1:27:9
+ nctl 1:81:22
+ ctl
+}
+
+hinv.map {
+ cpu 1:26:9
+ disk 1:80:13
+ node 1:39:49
+ router 1:38:1
+ routerport 1:38:12
+ xbow 1:42:2
+}
+
+hinv.ctl {
+ ndisk 1:81:23
+}
+
+kernel {
+ all
+ percpu
+}
+
+kernel.all {
+ cpu
+ io
+ swap
+ load 1:18:3
+ users 1:18:4
+ pswitch 1:10:3
+ kswitch 1:10:79
+ kpreempt 1:10:80
+ readch 1:10:14
+ writech 1:10:29
+ runocc 1:10:15
+ runque 1:10:16
+ syscall 1:10:19
+ sysexec 1:10:20
+ sysfork 1:10:21
+ sysread 1:10:22
+ syswrite 1:10:23
+ sysioctl 1:10:81
+ sysother 1:10:59
+ tty
+ intr
+ ipc
+ pty
+ flock
+ idl
+ waitio
+}
+
+kernel.all.idl {
+ mesgsnt 1:10:82
+ mesgrcv 1:10:83
+}
+
+kernel.all.waitio {
+ queue 1:10:84
+ occ 1:10:85
+}
+
+kernel.all.cpu {
+ idle 1:10:7
+ intr 1:10:8
+ sys 1:10:9
+ sxbrk 1:10:10
+ user 1:10:11
+ wait
+}
+
+kernel.all.io {
+ iget 1:10:13
+ bread 1:10:30
+ bwrite 1:10:31
+ lread 1:10:32
+ lwrite 1:10:33
+ phread 1:10:34
+ phwrite 1:10:35
+ wcancel 1:10:36
+ namei 1:10:37
+ dirblk 1:10:38
+}
+
+kernel.all.swap {
+ swpocc 1:10:17
+ swpque 1:10:18
+}
+
+kernel.all.cpu.wait {
+ total 1:10:12
+ gfxc 1:10:24
+ gfxf 1:10:25
+ io 1:10:26
+ pio 1:10:27
+ swap 1:10:28
+}
+
+
+kernel.all.flock {
+ alloc 1:10:57
+ inuse 1:10:58
+}
+
+kernel.all.intr {
+ vme 1:10:51
+ non_vme 1:10:52
+}
+
+kernel.all.ipc {
+ msg 1:10:53
+ sema 1:10:54
+}
+
+kernel.all.pty {
+ masterch 1:10:55
+ slavech 1:10:56
+}
+
+kernel.all.tty {
+ recvintr 1:10:39
+ xmitintr 1:10:40
+ mdmintr 1:10:41
+ out 1:10:42
+ raw 1:10:43
+ canon 1:10:44
+}
+
+gfx {
+ ioctl 1:10:45
+ ctxswitch 1:10:46
+ swapbuf 1:10:47
+ intr 1:10:48
+ fifonowait 1:10:49
+ fifowait 1:10:50
+}
+
+kernel.percpu {
+ cpu
+ io
+ swap
+ pswitch 1:28:3
+ kswitch 1:28:79
+ kpreempt 1:28:80
+ readch 1:28:14
+ writech 1:28:29
+ runocc 1:28:15
+ runque 1:28:16
+ syscall 1:28:19
+ sysexec 1:28:20
+ sysfork 1:28:21
+ sysread 1:28:22
+ syswrite 1:28:23
+ sysioctl 1:28:81
+ sysother 1:28:59
+ tty
+ intr
+ ipc
+ pty
+ flock
+ idl
+ waitio
+}
+
+
+kernel.percpu.idl {
+ mesgsnt 1:28:82
+ mesgrcv 1:28:83
+}
+
+kernel.percpu.waitio {
+ queue 1:28:84
+ occ 1:28:85
+}
+
+kernel.percpu.cpu {
+ idle 1:28:7
+ intr 1:28:8
+ sys 1:28:9
+ sxbrk 1:28:10
+ user 1:28:11
+ wait
+}
+
+kernel.percpu.io {
+ iget 1:28:13
+ bread 1:28:30
+ bwrite 1:28:31
+ lread 1:28:32
+ lwrite 1:28:33
+ phread 1:28:34
+ phwrite 1:28:35
+ wcancel 1:28:36
+ namei 1:28:37
+ dirblk 1:28:38
+}
+
+kernel.percpu.swap {
+ in 1:28:5
+ out 1:28:6
+ pagesin 1:28:1
+ pagesout 1:28:2
+ procout 1:28:4
+ swpocc 1:28:17
+ swpque 1:28:18
+}
+
+kernel.percpu.cpu.wait {
+ total 1:28:12
+ gfxc 1:28:24
+ gfxf 1:28:25
+ io 1:28:26
+ pio 1:28:27
+ swap 1:28:28
+}
+
+kernel.percpu.flock {
+ alloc 1:28:57
+ inuse 1:28:58
+}
+
+kernel.percpu.intr {
+ vme 1:28:51
+ non_vme 1:28:52
+}
+
+kernel.percpu.ipc {
+ msg 1:28:53
+ sema 1:28:54
+}
+
+kernel.percpu.pty {
+ masterch 1:28:55
+ slavech 1:28:56
+}
+
+kernel.percpu.tty {
+ recvintr 1:28:39
+ xmitintr 1:28:40
+ mdmintr 1:28:41
+ out 1:28:42
+ raw 1:28:43
+ canon 1:28:44
+}
+
+disk {
+ dev
+ ctl
+ all
+}
+
+disk.dev {
+ read 1:80:1
+ write 1:80:2
+ total 1:80:7
+ blkread 1:80:5
+ blkwrite 1:80:6
+ blktotal 1:80:4
+ active 1:80:3
+ response 1:80:8
+ bytes 1:80:15
+ read_bytes 1:80:16
+ write_bytes 1:80:17
+ qlen 1:80:21
+ sum_qlen 1:80:22
+}
+
+disk.ctl {
+ read 1:81:10
+ write 1:81:11
+ total 1:81:9
+ blkread 1:81:15
+ blkwrite 1:81:16
+ blktotal 1:81:14
+ active 1:81:12
+ response 1:81:13
+ bytes 1:81:17
+ read_bytes 1:81:18
+ write_bytes 1:81:19
+ avg_disk
+ qlen 1:81:24
+ sum_qlen 1:81:25
+}
+
+disk.ctl.avg_disk {
+ active 1:81:20
+ response 1:81:21
+}
+
+disk.all {
+ read 1:82:10
+ write 1:82:11
+ total 1:82:9
+ blkread 1:82:15
+ blkwrite 1:82:16
+ blktotal 1:82:14
+ active 1:82:12
+ response 1:82:13
+ bytes 1:82:17
+ read_bytes 1:82:18
+ write_bytes 1:82:19
+ avg_disk
+ qlen 1:82:22
+ sum_qlen 1:82:23
+}
+
+disk.all.avg_disk {
+ active 1:82:20
+ response 1:82:21
+}
+
+mem {
+ fault
+ tlb
+ paging
+ system
+ lpage
+ util
+ freemem 1:18:1
+ availsmem 1:18:5
+ availrmem 1:18:6
+ bufmem 1:18:7
+ physmem 1:18:8
+ dchunkpages 1:18:9
+ pmapmem 1:18:10
+ strmem 1:18:11
+ chunkpages 1:18:12
+ dpages 1:18:13
+ emptymem 1:18:14
+ freeswap 1:11:18
+ halloc 1:11:9
+ heapmem 1:11:10
+ hfree 1:11:11
+ hovhd 1:11:12
+ hunused 1:11:13
+ zfree 1:11:14
+ zonemem 1:11:15
+ zreq 1:11:16
+ iclean 1:11:17
+ bsdnet 1:11:19
+ palloc 1:11:30
+ unmodfl 1:11:31
+ unmodsw 1:11:32
+}
+
+mem.fault {
+ prot
+ addr
+}
+
+mem.paging {
+ reclaim 1:11:29
+}
+
+mem.tlb {
+ flush 1:11:20
+ invalid 1:11:22
+ rfault 1:11:24
+ sync 1:11:25
+ tfault 1:11:26
+ purge 1:11:27
+ idnew 1:11:21
+ idwrap 1:11:23
+ kvmwrap 1:11:28
+}
+
+mem.fault.addr {
+ total 1:11:4
+ cache 1:11:5
+ demand 1:11:6
+ file 1:11:7
+ swap 1:11:8
+}
+
+mem.fault.prot {
+ total 1:11:1
+ cow 1:11:2
+ steal 1:11:3
+}
+
+mem.system {
+ sptalloc 1:11:33
+ sptfree 1:11:34
+ sptclean 1:11:35
+ sptdirty 1:11:36
+ sptintrans 1:11:37
+ sptaged 1:11:38
+ sptbp 1:11:39
+ sptheap 1:11:40
+ sptzone 1:11:41
+ sptpt 1:11:42
+}
+
+mem.lpage {
+ coalesce
+ faults 1:41:3
+ allocs 1:41:4
+ downgrade 1:41:5
+ page_splits 1:41:6
+ basesize 1:41:7
+ maxsize 1:41:8
+ maxenabled 1:41:9
+ enabled 1:41:10
+}
+
+mem.lpage.coalesce {
+ scans 1:41:1
+ success 1:41:2
+}
+
+mem.util {
+ kernel 1:18:15
+ fs_ctl 1:18:16
+ fs_dirty 1:18:17
+ fs_clean 1:18:18
+ free 1:18:19
+ user 1:18:20
+}
+
+swap {
+ in 1:10:5
+ out 1:10:6
+ pagesin 1:10:1
+ pagesout 1:10:2
+ procout 1:10:4
+ free 1:16:6
+ length 1:16:7
+ maxswap 1:16:8
+ vlength 1:16:9
+ alloc 1:16:10
+ reserve 1:16:11
+ used 1:16:12
+ unused 1:16:13
+}
+
+swapdev {
+ free 1:16:1
+ length 1:16:2
+ maxswap 1:16:3
+ vlength 1:16:4
+ priority 1:16:5
+}
+
+network {
+ icmp
+ igmp
+ ip
+ tcp
+ udp
+ interface
+ mbuf
+ mcr
+ socket
+}
+
+network.icmp {
+ error 1:17:52
+ oldshort 1:17:53
+ oldicmp 1:17:54
+ badcode 1:17:55
+ tooshort 1:17:56
+ checksum 1:17:57
+ badlen 1:17:58
+ reflect 1:17:59
+ inhist
+ outhist
+}
+
+network.igmp {
+ rcv_total 1:17:90
+ rcv_tooshort 1:17:91
+ rcv_badsum 1:17:92
+ rcv_queries 1:17:93
+ rcv_badqueries 1:17:94
+ rcv_reports 1:17:95
+ rcv_badreports 1:17:96
+ rcv_ourreports 1:17:97
+ snd_reports 1:17:98
+}
+
+network.ip {
+ badhlen 1:17:99
+ badlen 1:17:100
+ badoptions 1:17:101
+ badsum 1:17:102
+ cantforward 1:17:103
+ cantfrag 1:17:104
+ delivered 1:17:105
+ forward 1:17:106
+ fragdropped 1:17:107
+ fragmented 1:17:108
+ fragments 1:17:109
+ fragtimeout 1:17:110
+ localout 1:17:111
+ noproto 1:17:112
+ noroute 1:17:113
+ odropped 1:17:114
+ ofragments 1:17:115
+ reassembled 1:17:116
+ redirect 1:17:117
+ tooshort 1:17:118
+ toosmall 1:17:119
+ badvers 1:17:137
+ rawout 1:17:138
+ total 1:17:120
+}
+
+network.tcp {
+ connattempt 1:17:1
+ accepts 1:17:2
+ connects 1:17:3
+ drops 1:17:4
+ conndrops 1:17:5
+ closed 1:17:6
+ segstimed 1:17:7
+ rttupdated 1:17:8
+ delack 1:17:9
+ timeoutdrop 1:17:10
+ rexmttimeo 1:17:11
+ persisttimeo 1:17:12
+ keeptimeo 1:17:13
+ keepprobe 1:17:14
+ keepdrops 1:17:15
+ sndtotal 1:17:16
+ sndpack 1:17:17
+ sndbyte 1:17:18
+ sndrexmitpack 1:17:19
+ sndrexmitbyte 1:17:20
+ sndacks 1:17:21
+ sndprobe 1:17:22
+ sndurg 1:17:23
+ sndwinup 1:17:24
+ sndctrl 1:17:25
+ sndrst 1:17:26
+ rcvtotal 1:17:27
+ rcvpack 1:17:28
+ rcvbyte 1:17:29
+ rcvbadsum 1:17:30
+ rcvbadoff 1:17:31
+ rcvshort 1:17:32
+ rcvduppack 1:17:33
+ rcvdupbyte 1:17:34
+ rcvpartduppack 1:17:35
+ rcvpartdupbyte 1:17:36
+ rcvoopack 1:17:37
+ rcvoobyte 1:17:38
+ rcvpackafterwin 1:17:39
+ rcvbyteafterwin 1:17:40
+ rcvafterclose 1:17:41
+ rcvwinprobe 1:17:42
+ rcvdupack 1:17:43
+ rcvacktoomuch 1:17:44
+ rcvackpack 1:17:45
+ rcvackbyte 1:17:46
+ rcvwinupd 1:17:47
+ pcbcachemiss 1:17:48
+ predack 1:17:49
+ preddat 1:17:50
+ pawsdrop 1:17:51
+ badsyn 1:17:152
+ listendrop 1:17:153
+ persistdrop 1:17:154
+ synpurge 1:17:155
+}
+
+network.udp {
+ ipackets 1:17:121
+ hdrops 1:17:122
+ badsum 1:17:123
+ badlen 1:17:124
+ noport 1:17:125
+ noportbcast 1:17:126
+ fullsock 1:17:127
+ opackets 1:17:128
+ pcbcachemiss 1:17:129
+}
+
+network.icmp.inhist {
+ echoreply 1:17:60
+ unreach 1:17:61
+ sourcequench 1:17:62
+ redirect 1:17:63
+ echo 1:17:64
+ routeradvert 1:17:65
+ routersolicit 1:17:66
+ timxceed 1:17:67
+ paramprob 1:17:68
+ tstamp 1:17:69
+ tstampreply 1:17:70
+ ireq 1:17:71
+ ireqreply 1:17:72
+ maskreq 1:17:73
+ maskreply 1:17:74
+}
+
+network.icmp.outhist {
+ echoreply 1:17:75
+ unreach 1:17:76
+ sourcequench 1:17:77
+ redirect 1:17:78
+ echo 1:17:79
+ routeradvert 1:17:80
+ routersolicit 1:17:81
+ timxceed 1:17:82
+ paramprob 1:17:83
+ tstamp 1:17:84
+ tstampreply 1:17:85
+ ireq 1:17:86
+ ireqreply 1:17:87
+ maskreq 1:17:88
+ maskreply 1:17:89
+}
+
+network.mbuf {
+ alloc 1:17:130
+ typealloc 1:17:136
+ clustalloc 1:17:131
+ clustfree 1:17:132
+ failed 1:17:133
+ waited 1:17:134
+ drained 1:17:135
+ pcb
+ mcb
+}
+
+network.mbuf.pcb {
+ total 1:17:156
+ bytes 1:17:157
+}
+
+network.mbuf.mcb {
+ total 1:17:158
+ bytes 1:17:159
+ fail 1:17:160
+}
+
+network.mcr {
+ mfc_lookups 1:17:139
+ mfc_misses 1:17:140
+ upcalls 1:17:141
+ no_route 1:17:142
+ bad_tunnel 1:17:143
+ cant_tunnel 1:17:144
+ wrong_if 1:17:145
+ upq_ovflw 1:17:146
+ cache_cleanups 1:17:147
+ drop_sel 1:17:148
+ q_overflow 1:17:149
+ pkt2large 1:17:150
+ upq_sockfull 1:17:151
+}
+
+network.interface {
+ collisions 1:25:1
+ mtu 1:25:2
+ noproto 1:25:3
+ baudrate 1:25:4
+ in
+ out
+ total
+}
+
+network.interface.in {
+ errors 1:25:5
+ packets 1:25:6
+ bytes 1:25:7
+ mcasts 1:25:8
+ drops 1:25:9
+}
+
+network.interface.out {
+ errors 1:25:10
+ packets 1:25:11
+ bytes 1:25:12
+ mcasts 1:25:13
+ drops 1:25:14
+ qdrops 1:25:15
+ qlength 1:25:16
+ qmax 1:25:17
+}
+
+network.interface.total {
+ errors 1:25:18
+ packets 1:25:19
+ bytes 1:25:20
+ mcasts 1:25:21
+ drops 1:25:22
+}
+
+network.socket {
+ type 1:43:1
+ state 1:43:2
+}
+
+resource {
+ nproc 1:19:1
+ nbuf 1:19:2
+ hbuf 1:19:3
+ syssegsz 1:19:4
+ maxpmem 1:19:5
+ maxdmasz 1:19:6
+ dquot 1:19:7
+ nstream_queue 1:19:8
+ nstream_head 1:19:9
+ fileovf 1:20:1
+ procovf 1:20:2
+}
+
+name_cache {
+ hits 1:21:1
+ misses 1:21:2
+ enters 1:21:3
+ dbl_enters 1:21:4
+ long_enter 1:21:5
+ long_look 1:21:6
+ lru_empty 1:21:7
+ purges 1:21:8
+ vfs_purges 1:21:9
+ removes 1:21:10
+ searches 1:21:11
+ stale_hits 1:21:12
+ steps 1:21:13
+}
+
+buffer_cache {
+ getblks 1:22:1
+ getblockmiss 1:22:2
+ getfound 1:22:3
+ getbchg 1:22:4
+ getloops 1:22:5
+ getfree 1:22:6
+ getfreeempty 1:22:7
+ getfreehmiss 1:22:8
+ getfreehmissx 1:22:9
+ getfreealllck 1:22:10
+ getfreedelwri 1:22:11
+ flush 1:22:12
+ flushloops 1:22:13
+ getfreeref 1:22:14
+ getfreerelse 1:22:15
+ getoverlap 1:22:16
+ clusters 1:22:17
+ clustered 1:22:18
+ getfrag 1:22:19
+ getpatch 1:22:20
+ trimmed 1:22:21
+ inserts 1:22:22
+ irotates 1:22:23
+ deletes 1:22:24
+ drotates 1:22:25
+ decomms 1:22:26
+ flush_decomms 1:22:27
+ delrsv 1:22:28
+ delrsvclean 1:22:29
+ delrsvdirty 1:22:30
+ delrsvfree 1:22:31
+ delrsvwait 1:22:32
+ sync_commits 1:22:33
+ commits 1:22:34
+ getfreecommit 1:22:35
+ inactive 1:22:36
+ active 1:22:37
+ force 1:22:38
+}
+
+vnodes {
+ vnodes 1:23:1
+ extant 1:23:2
+ active 1:23:3
+ alloc 1:23:4
+ aheap 1:23:5
+ afree 1:23:6
+ afreeloops 1:23:7
+ get 1:23:8
+ gchg 1:23:9
+ gfree 1:23:10
+ rele 1:23:11
+ reclaim 1:23:12
+ destroy 1:23:13
+ afreemiss 1:23:14
+}
+
+efs {
+ attempts 1:24:1
+ found 1:24:2
+ frecycle 1:24:3
+ missed 1:24:4
+ dup 1:24:5
+ reclaims 1:24:6
+ itobp 1:24:7
+ itobpf 1:24:8
+ iupdat 1:24:9
+ iupacc 1:24:10
+ iupupd 1:24:11
+ iupchg 1:24:12
+ iupmod 1:24:13
+ iupunk 1:24:14
+ iallocrd 1:24:15
+ iallocrdf 1:24:16
+ ialloccoll 1:24:17
+ bmaprd 1:24:18
+ bmapfbm 1:24:19
+ bmapfbc 1:24:20
+ dirupd 1:24:21
+ truncs 1:24:22
+ icreat 1:24:23
+ attrchg 1:24:24
+ readcancel 1:24:25
+}
+
+rpc {
+ client
+ server
+}
+
+rpc.client {
+ badcalls 1:14:1
+ badxid 1:14:2
+ calls 1:14:3
+ newcred 1:14:4
+ retrans 1:14:5
+ timeout 1:14:6
+ wait 1:14:7
+ badverfs 1:14:8
+}
+
+rpc.server {
+ badcalls 1:15:1
+ badlen 1:15:2
+ calls 1:15:3
+ dupage 1:15:4
+ duphits 1:15:5
+ nullrecv 1:15:6
+ xdrcall 1:15:7
+}
+
+nfs {
+ client
+ server
+}
+
+nfs.client {
+ badcalls 1:12:1
+ calls 1:12:2
+ nclget 1:12:3
+ nclsleep 1:12:4
+ reqs 1:12:5
+}
+
+nfs.server {
+ badcalls 1:13:1
+ calls 1:13:2
+ reqs 1:13:3
+}
+
+nfs3 {
+ client
+ server
+}
+
+nfs3.client {
+ badcalls 1:33:1
+ calls 1:33:2
+ nclget 1:33:3
+ nclsleep 1:33:4
+ reqs 1:33:5
+}
+
+nfs3.server {
+ badcalls 1:37:1
+ calls 1:37:2
+ reqs 1:37:3
+}
+
+filesys {
+ capacity 1:27:1
+ used 1:27:2
+ free 1:27:3
+ maxfiles 1:27:4
+ usedfiles 1:27:5
+ freefiles 1:27:6
+ mountdir 1:27:7
+ full 1:27:8
+}
+
+ipc {
+ sem
+ msg
+ shm
+}
+
+ipc.shm {
+ segsz 1:29:1
+ nattch 1:29:2
+}
+
+ipc.msg {
+ cbytes 1:30:1
+ qnum 1:30:2
+ qbytes 1:30:3
+}
+
+ipc.sem {
+ nsems 1:31:1
+ ncnt 1:31:2
+ zcnt 1:31:3
+}
+
+xfs {
+ allocx 1:32:1
+ allocb 1:32:2
+ freex 1:32:3
+ freeb 1:32:4
+ abt_lookup 1:32:5
+ abt_compare 1:32:6
+ abt_insrec 1:32:7
+ abt_delrec 1:32:8
+ blk_mapr 1:32:9
+ blk_mapw 1:32:10
+ blk_unmap 1:32:11
+ add_exlist 1:32:12
+ del_exlist 1:32:13
+ look_exlist 1:32:14
+ cmp_exlist 1:32:15
+ bmbt_lookup 1:32:16
+ bmbt_compare 1:32:17
+ bmbt_insrec 1:32:18
+ bmbt_delrec 1:32:19
+ dir_lookup 1:32:20
+ dir_create 1:32:21
+ dir_remove 1:32:22
+ dir_getdents 1:32:23
+ trans_sync 1:32:24
+ trans_async 1:32:25
+ trans_empty 1:32:26
+ ig_attempts 1:32:27
+ ig_found 1:32:28
+ ig_frecycle 1:32:29
+ ig_missed 1:32:30
+ ig_dup 1:32:31
+ ig_reclaims 1:32:32
+ ig_attrchg 1:32:33
+ log_writes 1:32:34
+ log_blocks 1:32:35
+ log_noiclogs 1:32:36
+ xfsd_bufs 1:32:37
+ xstrat_bytes 1:32:38
+ xstrat_quick 1:32:39
+ xstrat_split 1:32:40
+ write_calls 1:32:41
+ write_bytes 1:32:42
+ write_bufs 1:32:43
+ read_calls 1:32:44
+ read_bytes 1:32:45
+ read_bufs 1:32:46
+ attr_get 1:32:47
+ attr_set 1:32:48
+ attr_remove 1:32:49
+ attr_list 1:32:50
+ log_force 1:32:51
+ log_force_sleep 1:32:52
+ sleep_logspace 1:32:53
+ try_logspace 1:32:54
+ tail_push
+ quota
+ iflush_count 1:32:71
+ icluster_flushzero 1:32:72
+}
+
+xfs.tail_push {
+ npush 1:32:55
+ flush 1:32:56
+ flushing 1:32:57
+ locked 1:32:58
+ pinned 1:32:59
+ pushbuf 1:32:60
+ restarts 1:32:61
+ success 1:32:62
+}
+
+xfs.quota {
+ cachehits 1:32:63
+ cachemisses 1:32:64
+ inact_reclaims 1:32:65
+ reclaim_misses 1:32:66
+ reclaims 1:32:67
+ shake_reclaims 1:32:68
+ dquot_dups 1:32:69
+ wants 1:32:70
+}
+
+kaio {
+ reads 1:36:3
+ writes 1:36:4
+ read_bytes 1:36:5
+ write_bytes 1:36:6
+ inuse 1:36:2
+ free 1:36:8 /* added in IRIX 6.5 */
+ nobuf 1:36:1
+ proc_maxinuse 1:36:9 /* added in IRIX 6.5 */
+ inprogress 1:36:10 /* added in IRIX 6.5 */
+ errors 1:36:7
+}
+
+hw {
+ r10kevctr
+ router
+ hub
+}
+
+hw.r10kevctr {
+ state 1:35:255
+ cpurev 1:35:254
+ cycles 1:35:0
+ grad
+ issue
+ fail
+ pcache
+ scache
+ fucomp 1:35:32
+ extint 1:35:12
+ extinv 1:35:13
+ vcc 1:35:14
+ tlb 1:35:23
+}
+
+hw.r10kevctr.grad {
+ instrg 1:35:15
+ loadg 1:35:18
+ storeg 1:35:19
+ scondg 1:35:20
+ fp 1:35:21
+}
+
+hw.r10kevctr.issue {
+ instri 1:35:1
+ loadi 1:35:2
+ storei 1:35:3
+ scondi 1:35:4
+ brd 1:35:6
+}
+
+hw.r10kevctr.fail {
+ scondf 1:35:5
+ brmp 1:35:24
+}
+
+hw.r10kevctr.pcache {
+ imiss 1:35:9
+ dmiss 1:35:25
+ wb 1:35:22
+}
+
+hw.r10kevctr.scache {
+ imiss 1:35:10
+ dmiss 1:35:26
+ wb 1:35:7
+ iwaymp 1:35:11
+ dwaymp 1:35:27
+ extinthit 1:35:28
+ extinvhit 1:35:29
+ upclean 1:35:30
+ upshare 1:35:31
+ ecc 1:35:8
+}
+
+hw.router {
+ portmask 1:38:2
+ rev_id 1:38:3
+ send_util 1:38:4
+ recv
+ retry_errors 1:38:8
+ sn_errors 1:38:9
+ cb_errors 1:38:10
+ perport
+ type 1:38:22
+}
+
+hw.router.recv {
+ bypass_util 1:38:5
+ queued_util 1:38:6
+ total_util 1:38:7
+}
+
+hw.router.perport {
+ send_util 1:38:14
+ recv
+ retry_errors 1:38:18
+ sn_errors 1:38:19
+ cb_errors 1:38:20
+ excess_errors 1:38:21
+}
+
+hw.router.perport.recv {
+ bypass_util 1:38:15
+ queued_util 1:38:16
+ total_util 1:38:17
+}
+
+hw.hub {
+ ni
+ ii
+ nasid 1:44:8
+}
+
+hw.hub.ni {
+ retry 1:44:1
+ sn_errors 1:44:2
+ cb_errors 1:44:3
+ overflows 1:44:4
+}
+
+hw.hub.ii {
+ sn_errors 1:44:5
+ cb_errors 1:44:6
+ overflows 1:44:7
+}
+
+xpc {
+ kernel
+ network
+ disk
+}
+
+xpc.kernel {
+ all
+ percpu
+}
+
+xpc.kernel.all {
+ cpu
+ io
+}
+
+xpc.kernel.all.cpu {
+ idle 1:10:60
+ intr 1:10:61
+ sys 1:10:62
+ sxbrk 1:10:63
+ user 1:10:64
+ wait
+}
+
+xpc.kernel.all.cpu.wait {
+ total 1:10:65
+ gfxc 1:10:66
+ gfxf 1:10:67
+ io 1:10:68
+ pio 1:10:69
+ swap 1:10:70
+}
+
+xpc.kernel.all.io {
+ bread 1:10:71
+ bwrite 1:10:72
+ lread 1:10:73
+ lwrite 1:10:74
+ phread 1:10:75
+ phwrite 1:10:76
+ wcancel 1:10:77
+ dirblk 1:10:78
+}
+
+xpc.kernel.percpu {
+ cpu
+ io
+}
+
+xpc.kernel.percpu.cpu {
+ idle 1:28:60
+ intr 1:28:61
+ sys 1:28:62
+ sxbrk 1:28:63
+ user 1:28:64
+ wait
+}
+
+xpc.kernel.percpu.cpu.wait {
+ total 1:28:65
+ gfxc 1:28:66
+ gfxf 1:28:67
+ io 1:28:68
+ pio 1:28:69
+ swap 1:28:70
+}
+
+xpc.kernel.percpu.io {
+ bread 1:28:71
+ bwrite 1:28:72
+ lread 1:28:73
+ lwrite 1:28:74
+ phread 1:28:75
+ phwrite 1:28:76
+ wcancel 1:28:77
+ dirblk 1:28:78
+}
+
+xpc.network {
+ interface
+}
+
+xpc.network.interface {
+ in
+ out
+ total
+}
+
+xpc.network.interface.in {
+ bytes 1:25:23
+}
+
+xpc.network.interface.out {
+ bytes 1:25:24
+}
+
+xpc.network.interface.total {
+ bytes 1:25:25
+}
+
+xpc.disk {
+ dev
+}
+
+xpc.disk.dev {
+ read 1:80:9
+ active 1:80:10
+ blkread 1:80:11
+ response 1:80:12
+ bytes 1:80:18
+ read_bytes 1:80:19
+ write_bytes 1:80:20
+}
+
+pmda {
+ version 1:0:2
+ uname 1:0:3
+ reset 1:0:1
+ debug 1:0:4
+}
+
+origin.numa {
+ routerload 1:39:1
+ migr
+ memory
+ unpegger
+ bouncectl
+ memoryd
+}
+
+origin.numa.migr {
+ threshold 1:39:2
+ intr
+ auto
+ user
+ queue
+ coalesc
+ triggers
+}
+
+origin.numa.migr.intr {
+ total 1:39:3
+ failstate 1:39:4
+ failenabled 1:39:5
+ failfrozen 1:39:6
+}
+
+origin.numa.migr.auto {
+ total 1:39:7
+ in 1:39:8
+ out 1:39:9
+ fail 1:39:10
+ queue_len 1:39:11
+}
+
+origin.numa.migr.user {
+ total 1:39:12
+ in 1:39:13
+ out 1:39:14
+ fail 1:39:15
+ queue_len 1:39:16
+}
+
+origin.numa.migr.queue {
+ total 1:39:17
+ in 1:39:18
+ out 1:39:19
+ fail
+}
+
+origin.numa.migr.queue.fail {
+ total 1:39:20
+ overflow 1:39:21
+ state 1:39:22
+ failq 1:39:23
+}
+
+origin.numa.migr.coalesc {
+ total 1:39:24
+ in 1:39:25
+ out 1:39:26
+ fail 1:39:27
+}
+
+origin.numa.migr.triggers {
+ capacity 1:39:28
+ time 1:39:29
+ traffic 1:39:30
+}
+
+origin.numa.memory {
+ lent 1:39:31
+ replicated
+}
+
+origin.numa.memory.replicated {
+ page_count 1:39:32
+ page_dest 1:39:33
+ page_reuse 1:39:34
+ page_notavail 1:39:35
+ control_refuse 1:39:36
+}
+
+origin.numa.unpegger {
+ calls 1:39:37
+ npages 1:39:38
+ last_npages 1:39:39
+}
+
+origin.numa.bouncectl {
+ calls 1:39:40
+ frozen_pages 1:39:41
+ melt_pages 1:39:42
+ last_melt_pages 1:39:43
+ dampened_pages 1:39:44
+}
+
+origin.numa.memoryd {
+ activations 1:39:45
+ periodic 1:39:46
+}
+
+origin.node {
+ physmem 1:40:1
+ free
+}
+
+origin.node.free {
+ total 1:40:2
+ pages_64k 1:40:3
+ pages_256k 1:40:4
+ pages_1m 1:40:5
+ pages_4m 1:40:6
+ pages_16m 1:40:7
+}
+
+xbow {
+ active
+ switch 1:42:5
+ nports 1:42:6
+ gen 1:42:7
+ total
+ port
+}
+
+xbow.active {
+ xbows 1:42:3
+ ports 1:42:4
+}
+
+xbow.total {
+ src 1:42:8
+ dst 1:42:9
+ rrcv 1:42:10
+ rxmt 1:42:11
+}
+
+xbow.port {
+ flags 1:42:12
+ src 1:42:13
+ dst 1:42:14
+ rrcv 1:42:15
+ rxmt 1:42:16
+}
+
+xlv {
+ read 1:45:2
+ write 1:45:3
+ read_bytes 1:45:4
+ write_bytes 1:45:5
+ stripe_ops 1:45:6
+ stripe_units 1:45:7
+ aligned
+ unaligned
+ largest_io
+}
+
+xlv.aligned {
+ full_width 1:45:8
+ lt_width 1:45:9
+ gt_width 1:45:10
+ part_unit 1:45:11
+}
+
+xlv.unaligned {
+ full_width 1:45:12
+ lt_width 1:45:13
+ gt_width 1:45:14
+ part_unit 1:45:15
+}
+
+xlv.largest_io {
+ stripes 1:45:16
+ count 1:45:17
+}
+
+stream {
+ streams
+ queues
+ msg_blks
+ msg_dblks
+ bufsz_64
+ bufsz_256
+ bufsz_512
+ bufsz_2048
+ bufsz_page
+ link_blks
+ events
+ qbinfo
+ cur_pages 1:46:37
+ min_pages 1:46:38
+ max_pages 1:46:39
+}
+
+stream.streams {
+ use 1:46:1
+ max 1:46:2
+ fail 1:46:3
+}
+
+stream.queues {
+ use 1:46:4
+ max 1:46:5
+ fail 1:46:6
+}
+
+stream.msg_blks {
+ use 1:46:7
+ max 1:46:8
+ fail 1:46:9
+}
+
+stream.msg_dblks {
+ use 1:46:10
+ max 1:46:11
+ fail 1:46:12
+}
+
+stream.bufsz_64 {
+ use 1:46:13
+ max 1:46:14
+ fail 1:46:15
+}
+
+stream.bufsz_256 {
+ use 1:46:16
+ max 1:46:17
+ fail 1:46:18
+}
+
+stream.bufsz_512 {
+ use 1:46:19
+ max 1:46:20
+ fail 1:46:21
+}
+
+stream.bufsz_2048 {
+ use 1:46:22
+ max 1:46:23
+ fail 1:46:24
+}
+
+stream.bufsz_page {
+ use 1:46:25
+ max 1:46:26
+ fail 1:46:27
+}
+
+stream.link_blks {
+ use 1:46:28
+ max 1:46:29
+ fail 1:46:30
+}
+
+stream.events {
+ use 1:46:31
+ max 1:46:32
+ fail 1:46:33
+}
+
+stream.qbinfo {
+ use 1:46:34
+ max 1:46:35
+ fail 1:46:36
+}
+
+proc {
+ nprocs 3:0:0
+ psinfo
+ pstatus
+ pscred
+ psusage
+ memory
+ accounting
+}
+
+proc.psinfo {
+ state 3:1:0
+ sname 3:1:1
+ zomb 3:1:2
+ nice 3:1:3
+ flag 3:1:4
+ uid 3:1:5
+ gid 3:1:6
+ pid 3:1:7
+ ppid 3:1:8
+ pgrp 3:1:9
+ sid 3:1:10
+ addr 3:1:11
+ size 3:1:12
+ rssize 3:1:13
+ wchan 3:1:15
+ start 3:1:16
+ time 3:1:17
+ pri 3:1:18
+ oldpri 3:1:19
+ cpu 3:1:20
+ ttydev 3:1:21
+ clname 3:1:22
+ fname 3:1:23
+ psargs 3:1:24
+ uname 3:1:25
+ gname 3:1:26
+ ttyname 3:1:27
+ ttymajor 3:1:28
+ ttyminor 3:1:29
+ ctime 3:1:30
+ shareuid 3:1:31
+ pset 3:1:32
+ sonproc 3:1:33
+ spid 3:1:34
+ qtime 3:1:35
+ thds 3:1:36
+ wname 3:1:37
+}
+
+proc.pstatus {
+ flags 3:2:0
+ why 3:2:1
+ what 3:2:2
+ cursig 3:2:3
+ sigpend 3:2:4
+ sighold 3:2:5
+ info 3:2:6
+ altstack 3:2:7
+ action 3:2:8
+ syscall 3:2:9
+ nsysarg 3:2:10
+ errno 3:2:11
+ rval1 3:2:12
+ rval2 3:2:13
+ sysarg 3:2:14
+ pid 3:2:15
+ ppid 3:2:16
+ pgrp 3:2:17
+ sid 3:2:18
+ utime 3:2:19
+ stime 3:2:20
+ cutime 3:2:21
+ cstime 3:2:22
+ clname 3:2:23
+ instr 3:2:24
+ reg 3:2:25
+ nthreads 3:2:26
+ thsigpend 3:2:27
+ who 3:2:28
+}
+
+proc.pscred {
+ euid 3:3:0
+ ruid 3:3:1
+ suid 3:3:2
+ egid 3:3:3
+ rgid 3:3:4
+ sgid 3:3:5
+ ngroups 3:3:6
+}
+
+proc.psusage {
+ tstamp 3:4:0
+ starttime 3:4:1
+ utime 3:4:2
+ stime 3:4:3
+ minf 3:4:4
+ majf 3:4:5
+ utlb 3:4:6
+ nswap 3:4:7
+ gbread 3:4:8
+ bread 3:4:9
+ gbwrit 3:4:10
+ bwrit 3:4:11
+ sigs 3:4:12
+ vctx 3:4:13
+ ictx 3:4:14
+ sysc 3:4:15
+ syscr 3:4:16
+ syscw 3:4:17
+ syscps 3:4:18
+ sysci 3:4:19
+ graphfifo 3:4:20
+ graph_req 3:4:21
+ graph_wait 3:4:22
+ size 3:4:23
+ rss 3:4:24
+ inblock 3:4:25
+ oublock 3:4:26
+ ktlb 3:4:27
+ vfault 3:4:28
+}
+
+proc.memory {
+ virtual
+ physical
+}
+
+proc.memory.virtual {
+ txt 3:5:1
+ dat 3:5:3
+ bss 3:5:5
+ stack 3:5:7
+ shm 3:5:9
+}
+
+proc.memory.physical {
+ txt 3:5:0
+ dat 3:5:2
+ bss 3:5:4
+ stack 3:5:6
+ shm 3:5:8
+}
+
+proc.accounting {
+ flag 3:6:0
+ ash 3:6:1
+ prid 3:6:2
+ timers
+ counts
+}
+
+proc.accounting.timers {
+ utime 3:6:3
+ stime 3:6:4
+ bwtime 3:6:5
+ rwtime 3:6:6
+ qwtime 3:6:7
+}
+
+proc.accounting.counts {
+ mem 3:6:8
+ swaps 3:6:9
+ chr 3:6:10
+ chw 3:6:11
+ br 3:6:12
+ bw 3:6:13
+ syscr 3:6:14
+ syscw 3:6:15
+}
+
+sample {
+ control 29:0:0
+ daemon_pid 29:0:1
+ seconds 29:0:2
+ milliseconds 29:0:3
+ load 29:0:4
+ colour 29:0:5
+ bin 29:0:6
+ bucket 29:0:48
+ part_bin 29:0:50
+ bogus_bin 29:0:51
+ drift 29:0:7
+ step 29:0:8
+ step_counter 29:0:63
+ mirage 29:0:37
+ mirage_longlong 29:0:38
+ write_me 29:0:36
+ lights 29:0:46
+ magnitude 29:0:47
+ sysinfo 29:0:39
+ pdu 29:0:40
+ recv_pdu 29:0:41
+ xmit_pdu 29:0:42
+ noinst 29:0:9
+ needprofile 29:0:49
+ not_ready 29:0:56
+ rapid 29:0:64
+ error_code 29:0:74
+ error_check 29:0:75
+ long
+ longlong
+ float
+ double
+ string
+ aggregate
+ hordes
+ bad
+ wrap
+ dodgey
+ dynamic
+ scale_step
+ const_rate
+}
+
+sample.long {
+ one 29:0:10
+ ten 29:0:11
+ hundred 29:0:12
+ million 29:0:13
+ write_me 29:0:14
+}
+
+sample.longlong {
+ one 29:0:20
+ ten 29:0:21
+ hundred 29:0:22
+ million 29:0:23
+ write_me 29:0:24
+}
+
+sample.float {
+ one 29:0:15
+ ten 29:0:16
+ hundred 29:0:17
+ million 29:0:18
+ write_me 29:0:19
+}
+
+sample.double {
+ one 29:0:25
+ ten 29:0:26
+ hundred 29:0:27
+ million 29:0:28
+ write_me 29:0:29
+}
+
+sample.string {
+ null 29:0:30
+ hullo 29:0:31
+ write_me 29:0:32
+}
+
+sample.aggregate {
+ null 29:0:33
+ hullo 29:0:34
+ write_me 29:0:35
+}
+
+sample.hordes {
+ one 29:0:52
+ two 29:0:53
+}
+
+sample.bad {
+ unknown 29:0:54
+ nosupport 29:0:55
+}
+
+sample.wrap {
+ long 29:0:57
+ ulong 29:0:58
+ longlong 29:0:59
+ ulonglong 29:0:60
+}
+
+sample.dodgey {
+ control 29:0:61
+ value 29:0:62
+}
+
+sample.dynamic {
+ counter 29:0:76
+ discrete 29:0:77
+ instant 29:0:78
+}
+
+sample.scale_step {
+ bytes_up 29:0:65
+ bytes_down 29:0:66
+ count_up 29:0:67
+ count_down 29:0:68
+ time_up_secs 29:0:69
+ time_up_nanosecs 29:0:70
+ none_up 29:0:71
+}
+
+sample.const_rate {
+ value 29:0:72
+ gradient 29:0:73
+}
+
+sampledso {
+ control 30:0:0
+ daemon_pid 30:0:1
+ seconds 30:0:2
+ milliseconds 30:0:3
+ load 30:0:4
+ colour 30:0:5
+ bin 30:0:6
+ bucket 30:0:48
+ part_bin 30:0:50
+ bogus_bin 30:0:51
+ drift 30:0:7
+ step 30:0:8
+ step_counter 30:0:63
+ mirage 30:0:37
+ mirage_longlong 30:0:38
+ write_me 30:0:36
+ lights 30:0:46
+ magnitude 30:0:47
+ sysinfo 30:0:39
+ pdu 30:0:40
+ recv_pdu 30:0:41
+ xmit_pdu 30:0:42
+ noinst 30:0:9
+ needprofile 30:0:49
+ not_ready 30:0:56
+ rapid 30:0:64
+ error_code 30:0:74
+ error_check 30:0:75
+ long
+ longlong
+ float
+ double
+ string
+ aggregate
+ hordes
+ bad
+ wrap
+ dodgey
+ dynamic
+ scale_step
+ const_rate
+}
+
+sampledso.long {
+ one 30:0:10
+ ten 30:0:11
+ hundred 30:0:12
+ million 30:0:13
+ write_me 30:0:14
+}
+
+sampledso.longlong {
+ one 30:0:20
+ ten 30:0:21
+ hundred 30:0:22
+ million 30:0:23
+ write_me 30:0:24
+}
+
+sampledso.float {
+ one 30:0:15
+ ten 30:0:16
+ hundred 30:0:17
+ million 30:0:18
+ write_me 30:0:19
+}
+
+sampledso.double {
+ one 30:0:25
+ ten 30:0:26
+ hundred 30:0:27
+ million 30:0:28
+ write_me 30:0:29
+}
+
+sampledso.string {
+ null 30:0:30
+ hullo 30:0:31
+ write_me 30:0:32
+}
+
+sampledso.aggregate {
+ null 30:0:33
+ hullo 30:0:34
+ write_me 30:0:35
+}
+
+sampledso.hordes {
+ one 30:0:52
+ two 30:0:53
+}
+
+sampledso.bad {
+ unknown 30:0:54
+ nosupport 30:0:55
+}
+
+sampledso.wrap {
+ long 30:0:57
+ ulong 30:0:58
+ longlong 30:0:59
+ ulonglong 30:0:60
+}
+
+sampledso.dodgey {
+ control 30:0:61
+ value 30:0:62
+}
+
+sampledso.dynamic {
+ counter 30:0:76
+ discrete 30:0:77
+ instant 30:0:78
+}
+
+sampledso.scale_step {
+ bytes_up 30:0:65
+ bytes_down 30:0:66
+ count_up 30:0:67
+ count_down 30:0:68
+ time_up_secs 30:0:69
+ time_up_nanosecs 30:0:70
+ none_up 30:0:71
+}
+
+sampledso.const_rate {
+ value 30:0:72
+ gradient 30:0:73
+}
+
+pmcd {
+ datasize 2:0:1
+ numagents 2:0:2
+ numclients 2:0:3
+ timezone 2:0:5
+ simabi 2:0:6
+ version 2:0:7
+ license 2:0:16
+ openfds 2:0:17
+ control
+ pdu_in
+ pdu_out
+ agent
+ pmlogger
+ pmie
+ buf
+}
+
+pmcd.control {
+ debug 2:0:0
+ timeout 2:0:4
+ register 2:0:8
+ traceconn 2:0:9
+ tracepdu 2:0:10
+ tracenobuf 2:0:14
+ tracebufs 2:0:11
+ dumptrace 2:0:12
+ dumpconn 2:0:13
+ sighup 2:0:15
+}
+
+pmcd.pdu_in {
+ error 2:1:0
+ result 2:1:1
+ profile 2:1:2
+ fetch 2:1:3
+ desc_req 2:1:4
+ desc 2:1:5
+ instance_req 2:1:6
+ instance 2:1:7
+ text_req 2:1:8
+ text 2:1:9
+ control_req 2:1:10
+ datax 2:1:11
+ creds 2:1:12
+ pmns_ids 2:1:13
+ pmns_names 2:1:14
+ pmns_child 2:1:15
+ total 2:1:16
+ pmns_traverse 2:1:17
+}
+
+pmcd.pdu_out {
+ error 2:2:0
+ result 2:2:1
+ profile 2:2:2
+ fetch 2:2:3
+ desc_req 2:2:4
+ desc 2:2:5
+ instance_req 2:2:6
+ instance 2:2:7
+ text_req 2:2:8
+ text 2:2:9
+ control_req 2:2:10
+ datax 2:2:11
+ creds 2:2:12
+ pmns_ids 2:2:13
+ pmns_names 2:2:14
+ pmns_child 2:2:15
+ total 2:2:16
+ pmns_traverse 2:2:17
+}
+
+pmcd.agent {
+ type 2:4:0
+ status 2:4:1
+}
+
+pmcd.pmlogger {
+ host 2:3:3
+ port 2:3:0
+ archive 2:3:2
+ pmcd_host 2:3:1
+}
+
+pmcd.pmie {
+ configfile 2:5:0
+ logfile 2:5:1
+ pmcd_host 2:5:2
+ numrules 2:5:3
+ actions 2:5:4
+ eval
+}
+
+pmcd.pmie.eval {
+ true 2:5:5
+ false 2:5:6
+ unknown 2:5:7
+ expected 2:5:8
+ actual 2:5:9
+}
+
+pmcd.buf {
+ alloc 2:0:18
+ free 2:0:19
+}
diff --git a/qa/src/root_pmns b/qa/src/root_pmns
new file mode 100644
index 0000000..104e587
--- /dev/null
+++ b/qa/src/root_pmns
@@ -0,0 +1,2146 @@
+root {
+ news
+ txmon
+ shping
+ simple
+ trivial
+ web
+ webping
+ sample
+ sampledso
+ cisco
+ irix
+ hinv
+ hw
+ pmcd
+ proc
+}
+
+news {
+ articles
+ readers
+}
+
+news.articles {
+ total 28:0:201
+ count 28:0:301
+ last 28:0:302
+}
+
+news.readers {
+ nnrpd 28:0:101
+ rn 28:0:111
+ trn 28:0:112
+ xrn 28:0:113
+ vn 28:0:114
+}
+
+txmon {
+ count 248:0:0
+ ave_time 248:0:1
+ max_time 248:0:2
+ reset_count 248:0:3
+ control
+}
+
+txmon.control {
+ level 248:0:4
+ reset 248:0:5
+}
+
+shping {
+ status 19:0:6
+ error 19:0:10
+ cmd 19:0:7
+ time
+ control
+}
+
+shping.time {
+ real 19:0:0
+ cpu_usr 19:0:1
+ cpu_sys 19:0:2
+}
+
+shping.control {
+ numcmd 19:0:3
+ cycles 19:0:9
+ cycletime 19:0:4
+ timeout 19:0:5
+ debug 19:0:8
+}
+
+simple {
+ numfetch 253:0:0
+ color 253:0:1
+ time
+}
+
+simple.time {
+ user 253:1:2
+ sys 253:1:3
+}
+
+trivial {
+ time 250:0:0
+}
+
+web {
+ config
+ allservers
+ perserver
+}
+
+web.config {
+ numservers 22:0:0
+ catchup 22:0:1
+ catchuptime 22:0:2
+ check 22:0:3
+}
+
+web.allservers {
+ numwatched 22:0:4
+ numalive 22:0:5
+ errors 22:1:6
+ requests
+ bytes
+}
+
+web.allservers.requests {
+ total 22:1:7
+ get 22:1:8
+ head 22:1:9
+ post 22:1:10
+ other 22:1:11
+ size
+}
+
+web.allservers.requests.size {
+ zero 22:1:17
+ le3k 22:1:18
+ le10k 22:1:19
+ le30k 22:1:20
+ le100k 22:1:21
+ le300k 22:1:22
+ le1m 22:1:23
+ le3m 22:1:24
+ gt3m 22:1:25
+ unknown 22:1:66
+}
+
+web.allservers.bytes {
+ total 22:1:12
+ get 22:1:13
+ head 22:1:14
+ post 22:1:15
+ other 22:1:16
+ size
+}
+
+web.allservers.bytes.size {
+ zero 22:1:26
+ le3k 22:1:27
+ le10k 22:1:28
+ le30k 22:1:29
+ le100k 22:1:30
+ le300k 22:1:31
+ le1m 22:1:32
+ le3m 22:1:33
+ gt3m 22:1:34
+}
+
+web.perserver {
+ watched 22:0:35
+ numlogs 22:2:36
+ errors 22:2:37
+ logidletime 22:2:68
+ requests
+ bytes
+}
+
+web.perserver.requests {
+ total 22:2:38
+ get 22:2:39
+ head 22:2:40
+ post 22:2:41
+ other 22:2:42
+ size
+}
+
+web.perserver.requests.size {
+ zero 22:2:48
+ le3k 22:2:49
+ le10k 22:2:50
+ le30k 22:2:51
+ le100k 22:2:52
+ le300k 22:2:53
+ le1m 22:2:54
+ le3m 22:2:55
+ gt3m 22:2:56
+ unknown 22:2:67
+}
+
+web.perserver.bytes {
+ total 22:2:43
+ get 22:2:44
+ head 22:2:45
+ post 22:2:46
+ other 22:2:47
+ size
+}
+
+web.perserver.bytes.size {
+ zero 22:2:57
+ le3k 22:2:58
+ le10k 22:2:59
+ le30k 22:2:60
+ le100k 22:2:61
+ le300k 22:2:62
+ le1m 22:2:63
+ le3m 22:2:64
+ gt3m 22:2:65
+}
+
+webping {
+ active 21:0:8
+ kbytes 21:0:1
+ xferrate 21:0:2
+ count 21:0:3
+ errors
+ perurl
+ time
+ workload
+}
+
+webping.errors {
+ sockerr 21:0:9
+ httperr 21:0:10
+ htmlerr 21:0:11
+ othererr 21:0:12
+}
+
+webping.perurl {
+ kbytes 21:0:19
+ xferrate 21:0:20
+ httpcode 21:0:21
+ time
+}
+
+webping.perurl.time {
+ connect 21:0:22
+ head 21:0:23
+ body 21:0:24
+ total 21:0:25
+}
+
+webping.time {
+ connect 21:0:4
+ head 21:0:5
+ body 21:0:6
+ total 21:0:7
+}
+
+webping.workload {
+ buffersize 21:0:18
+ numread 21:0:13
+ numurls 21:0:14
+ control
+}
+
+webping.workload.control {
+ fxdbufsize 21:0:15
+ pingdelay 21:0:16
+ urldelay 21:0:17
+}
+
+sample {
+ control 29:0:0
+ daemon_pid 29:0:1
+ seconds 29:0:2
+ milliseconds 29:0:3
+ load 29:0:4
+ colour 29:0:5
+ bin 29:0:6
+ bucket 29:0:48
+ part_bin 29:0:50
+ bogus_bin 29:0:51
+ drift 29:0:7
+ step 29:0:8
+ step_counter 29:0:63
+ mirage 29:0:37
+ mirage_longlong 29:0:38
+ write_me 29:0:36
+ lights 29:0:46
+ magnitude 29:0:47
+ sysinfo 29:0:39
+ pdu 29:0:40
+ recv_pdu 29:0:41
+ xmit_pdu 29:0:42
+ noinst 29:0:9
+ needprofile 29:0:49
+ not_ready 29:0:56
+ rapid 29:0:64
+ error_code 29:0:74
+ error_check 29:0:75
+ long
+ longlong
+ float
+ double
+ string
+ aggregate
+ hordes
+ bad
+ wrap
+ dodgey
+ scale_step
+ const_rate
+}
+
+sample.long {
+ one 29:0:10
+ ten 29:0:11
+ hundred 29:0:12
+ million 29:0:13
+ write_me 29:0:14
+}
+
+sample.longlong {
+ one 29:0:20
+ ten 29:0:21
+ hundred 29:0:22
+ million 29:0:23
+ write_me 29:0:24
+}
+
+sample.float {
+ one 29:0:15
+ ten 29:0:16
+ hundred 29:0:17
+ million 29:0:18
+ write_me 29:0:19
+}
+
+sample.double {
+ one 29:0:25
+ ten 29:0:26
+ hundred 29:0:27
+ million 29:0:28
+ write_me 29:0:29
+}
+
+sample.string {
+ null 29:0:30
+ hullo 29:0:31
+ write_me 29:0:32
+}
+
+sample.aggregate {
+ null 29:0:33
+ hullo 29:0:34
+ write_me 29:0:35
+}
+
+sample.hordes {
+ one 29:0:52
+ two 29:0:53
+}
+
+sample.bad {
+ unknown 29:0:54
+ nosupport 29:0:55
+}
+
+sample.wrap {
+ long 29:0:57
+ ulong 29:0:58
+ longlong 29:0:59
+ ulonglong 29:0:60
+}
+
+sample.dodgey {
+ control 29:0:61
+ value 29:0:62
+}
+
+sample.scale_step {
+ bytes_up 29:0:65
+ bytes_down 29:0:66
+ count_up 29:0:67
+ count_down 29:0:68
+ time_up_secs 29:0:69
+ time_up_nanosecs 29:0:70
+ none_up 29:0:71
+}
+
+sample.const_rate {
+ value 29:0:72
+ gradient 29:0:73
+}
+
+sampledso {
+ control 30:0:0
+ daemon_pid 30:0:1
+ seconds 30:0:2
+ milliseconds 30:0:3
+ load 30:0:4
+ colour 30:0:5
+ bin 30:0:6
+ bucket 30:0:48
+ part_bin 30:0:50
+ bogus_bin 30:0:51
+ drift 30:0:7
+ step 30:0:8
+ step_counter 30:0:63
+ mirage 30:0:37
+ mirage_longlong 30:0:38
+ write_me 30:0:36
+ lights 30:0:46
+ magnitude 30:0:47
+ sysinfo 30:0:39
+ pdu 30:0:40
+ recv_pdu 30:0:41
+ xmit_pdu 30:0:42
+ noinst 30:0:9
+ needprofile 30:0:49
+ not_ready 30:0:56
+ rapid 30:0:64
+ error_code 30:0:74
+ error_check 30:0:75
+ long
+ longlong
+ float
+ double
+ string
+ aggregate
+ hordes
+ bad
+ wrap
+ dodgey
+ scale_step
+ const_rate
+}
+
+sampledso.long {
+ one 30:0:10
+ ten 30:0:11
+ hundred 30:0:12
+ million 30:0:13
+ write_me 30:0:14
+}
+
+sampledso.longlong {
+ one 30:0:20
+ ten 30:0:21
+ hundred 30:0:22
+ million 30:0:23
+ write_me 30:0:24
+}
+
+sampledso.float {
+ one 30:0:15
+ ten 30:0:16
+ hundred 30:0:17
+ million 30:0:18
+ write_me 30:0:19
+}
+
+sampledso.double {
+ one 30:0:25
+ ten 30:0:26
+ hundred 30:0:27
+ million 30:0:28
+ write_me 30:0:29
+}
+
+sampledso.string {
+ null 30:0:30
+ hullo 30:0:31
+ write_me 30:0:32
+}
+
+sampledso.aggregate {
+ null 30:0:33
+ hullo 30:0:34
+ write_me 30:0:35
+}
+
+sampledso.hordes {
+ one 30:0:52
+ two 30:0:53
+}
+
+sampledso.bad {
+ unknown 30:0:54
+ nosupport 30:0:55
+}
+
+sampledso.wrap {
+ long 30:0:57
+ ulong 30:0:58
+ longlong 30:0:59
+ ulonglong 30:0:60
+}
+
+sampledso.dodgey {
+ control 30:0:61
+ value 30:0:62
+}
+
+sampledso.scale_step {
+ bytes_up 30:0:65
+ bytes_down 30:0:66
+ count_up 30:0:67
+ count_down 30:0:68
+ time_up_secs 30:0:69
+ time_up_nanosecs 30:0:70
+ none_up 30:0:71
+}
+
+sampledso.const_rate {
+ value 30:0:72
+ gradient 30:0:73
+}
+
+cisco {
+ bandwidth 5:0:5
+ bytes_in 5:0:1
+ bytes_out 5:0:2
+ rate_in 5:0:3
+ rate_out 5:0:4
+}
+
+irix {
+ kernel
+ disk
+ mem
+ swap
+ swapdev
+ network
+ numa
+ node
+ gfx
+ rpc
+ nfs
+ nfs3
+ resource
+ filesys
+ ipc
+ xfs
+ kaio
+ xpc
+ pmda
+ engr
+ xbow
+ xlv
+}
+
+irix.kernel {
+ all
+ percpu
+}
+
+irix.kernel.all {
+ load 1:18:3
+ users 1:18:4
+ pswitch 1:10:3
+ readch 1:10:14
+ writech 1:10:29
+ runocc 1:10:15
+ runque 1:10:16
+ syscall 1:10:19
+ sysexec 1:10:20
+ sysfork 1:10:21
+ sysread 1:10:22
+ syswrite 1:10:23
+ sysother 1:10:59
+ cpu
+ io
+ swap
+ tty
+ intr
+ ipc
+ pty
+ flock
+}
+
+irix.kernel.all.cpu {
+ idle 1:10:7
+ intr 1:10:8
+ sys 1:10:9
+ sxbrk 1:10:10
+ user 1:10:11
+ wait
+}
+
+irix.kernel.all.cpu.wait {
+ total 1:10:12
+ gfxc 1:10:24
+ gfxf 1:10:25
+ io 1:10:26
+ pio 1:10:27
+ swap 1:10:28
+}
+
+irix.kernel.all.io {
+ iget 1:10:13
+ bread 1:10:30
+ bwrite 1:10:31
+ lread 1:10:32
+ lwrite 1:10:33
+ phread 1:10:34
+ phwrite 1:10:35
+ wcancel 1:10:36
+ namei 1:10:37
+ dirblk 1:10:38
+}
+
+irix.kernel.all.swap {
+ swpocc 1:10:17
+ swpque 1:10:18
+}
+
+irix.kernel.all.tty {
+ recvintr 1:10:39
+ xmitintr 1:10:40
+ mdmintr 1:10:41
+ out 1:10:42
+ raw 1:10:43
+ canon 1:10:44
+}
+
+irix.kernel.all.intr {
+ vme 1:10:51
+ non_vme 1:10:52
+}
+
+irix.kernel.all.ipc {
+ msg 1:10:53
+ sema 1:10:54
+}
+
+irix.kernel.all.pty {
+ masterch 1:10:55
+ slavech 1:10:56
+}
+
+irix.kernel.all.flock {
+ alloc 1:10:57
+ inuse 1:10:58
+}
+
+irix.kernel.percpu {
+ pswitch 1:28:3
+ readch 1:28:14
+ writech 1:28:29
+ runocc 1:28:15
+ runque 1:28:16
+ syscall 1:28:19
+ sysexec 1:28:20
+ sysfork 1:28:21
+ sysread 1:28:22
+ syswrite 1:28:23
+ sysother 1:28:59
+ cpu
+ io
+ swap
+ tty
+ intr
+ ipc
+ pty
+ flock
+}
+
+irix.kernel.percpu.cpu {
+ idle 1:28:7
+ intr 1:28:8
+ sys 1:28:9
+ sxbrk 1:28:10
+ user 1:28:11
+ wait
+}
+
+irix.kernel.percpu.cpu.wait {
+ total 1:28:12
+ gfxc 1:28:24
+ gfxf 1:28:25
+ io 1:28:26
+ pio 1:28:27
+ swap 1:28:28
+}
+
+irix.kernel.percpu.io {
+ iget 1:28:13
+ bread 1:28:30
+ bwrite 1:28:31
+ lread 1:28:32
+ lwrite 1:28:33
+ phread 1:28:34
+ phwrite 1:28:35
+ wcancel 1:28:36
+ namei 1:28:37
+ dirblk 1:28:38
+}
+
+irix.kernel.percpu.swap {
+ swpocc 1:28:17
+ swpque 1:28:18
+}
+
+irix.kernel.percpu.tty {
+ recvintr 1:28:39
+ xmitintr 1:28:40
+ mdmintr 1:28:41
+ out 1:28:42
+ raw 1:28:43
+ canon 1:28:44
+}
+
+irix.kernel.percpu.intr {
+ vme 1:28:51
+ non_vme 1:28:52
+}
+
+irix.kernel.percpu.ipc {
+ msg 1:28:53
+ sema 1:28:54
+}
+
+irix.kernel.percpu.pty {
+ masterch 1:28:55
+ slavech 1:28:56
+}
+
+irix.kernel.percpu.flock {
+ alloc 1:28:57
+ inuse 1:28:58
+}
+
+irix.disk {
+ dev
+ ctl
+ all
+}
+
+irix.disk.dev {
+ read 1:80:1
+ write 1:80:2
+ total 1:80:7
+ blkread 1:80:5
+ blkwrite 1:80:6
+ blktotal 1:80:4
+ active 1:80:3
+ response 1:80:8
+ bytes 1:80:15
+ read_bytes 1:80:16
+ write_bytes 1:80:17
+}
+
+irix.disk.ctl {
+ read 1:81:10
+ write 1:81:11
+ total 1:81:9
+ blkread 1:81:15
+ blkwrite 1:81:16
+ blktotal 1:81:14
+ active 1:81:12
+ response 1:81:13
+ bytes 1:81:17
+ read_bytes 1:81:18
+ write_bytes 1:81:19
+ avg_disk
+}
+
+irix.disk.ctl.avg_disk {
+ active 1:81:20
+ response 1:81:21
+}
+
+irix.disk.all {
+ read 1:82:10
+ write 1:82:11
+ total 1:82:9
+ blkread 1:82:15
+ blkwrite 1:82:16
+ blktotal 1:82:14
+ active 1:82:12
+ response 1:82:13
+ bytes 1:82:17
+ read_bytes 1:82:18
+ write_bytes 1:82:19
+ avg_disk
+}
+
+irix.disk.all.avg_disk {
+ active 1:82:20
+ response 1:82:21
+}
+
+irix.mem {
+ freemem 1:18:1
+ availsmem 1:18:5
+ availrmem 1:18:6
+ bufmem 1:18:7
+ physmem 1:18:8
+ dchunkpages 1:18:9
+ pmapmem 1:18:10
+ strmem 1:18:11
+ chunkpages 1:18:12
+ dpages 1:18:13
+ emptymem 1:18:14
+ freeswap 1:11:18
+ halloc 1:11:9
+ heapmem 1:11:10
+ hfree 1:11:11
+ hovhd 1:11:12
+ hunused 1:11:13
+ zfree 1:11:14
+ zonemem 1:11:15
+ zreq 1:11:16
+ iclean 1:11:17
+ bsdnet 1:11:19
+ palloc 1:11:30
+ unmodfl 1:11:31
+ unmodsw 1:11:32
+ fault
+ tlb
+ paging
+ system
+ lpage
+ util
+}
+
+irix.mem.fault {
+ prot
+ addr
+}
+
+irix.mem.fault.prot {
+ total 1:11:1
+ cow 1:11:2
+ steal 1:11:3
+}
+
+irix.mem.fault.addr {
+ total 1:11:4
+ cache 1:11:5
+ demand 1:11:6
+ file 1:11:7
+ swap 1:11:8
+}
+
+irix.mem.tlb {
+ flush 1:11:20
+ invalid 1:11:22
+ rfault 1:11:24
+ sync 1:11:25
+ tfault 1:11:26
+ purge 1:11:27
+ idnew 1:11:21
+ idwrap 1:11:23
+ kvmwrap 1:11:28
+}
+
+irix.mem.paging {
+ reclaim 1:11:29
+}
+
+irix.mem.system {
+ sptalloc 1:11:33
+ sptfree 1:11:34
+ sptclean 1:11:35
+ sptdirty 1:11:36
+ sptintrans 1:11:37
+ sptaged 1:11:38
+ sptbp 1:11:39
+ sptheap 1:11:40
+ sptzone 1:11:41
+ sptpt 1:11:42
+}
+
+irix.mem.lpage {
+ faults 1:41:3
+ allocs 1:41:4
+ downgrade 1:41:5
+ page_splits 1:41:6
+ basesize 1:41:7
+ maxsize 1:41:8
+ maxenabled 1:41:9
+ enabled 1:41:10
+ coalesce
+}
+
+irix.mem.lpage.coalesce {
+ scans 1:41:1
+ success 1:41:2
+}
+
+irix.mem.util {
+ kernel 1:18:15
+ fs_ctl 1:18:16
+ fs_dirty 1:18:17
+ fs_clean 1:18:18
+ free 1:18:19
+ user 1:18:20
+}
+
+irix.swap {
+ in 1:10:5
+ out 1:10:6
+ pagesin 1:10:1
+ pagesout 1:10:2
+ procout 1:10:4
+ free 1:16:6
+ length 1:16:7
+ maxswap 1:16:8
+ vlength 1:16:9
+ alloc 1:16:10
+ reserve 1:16:11
+ used 1:16:12
+ unused 1:16:13
+}
+
+irix.swapdev {
+ free 1:16:1
+ length 1:16:2
+ maxswap 1:16:3
+ vlength 1:16:4
+ priority 1:16:5
+}
+
+irix.network {
+ icmp
+ igmp
+ ip
+ tcp
+ udp
+ interface
+ mbuf
+ mcr
+ socket
+}
+
+irix.network.icmp {
+ error 1:17:52
+ oldshort 1:17:53
+ oldicmp 1:17:54
+ badcode 1:17:55
+ tooshort 1:17:56
+ checksum 1:17:57
+ badlen 1:17:58
+ reflect 1:17:59
+ inhist
+ outhist
+}
+
+irix.network.icmp.inhist {
+ echoreply 1:17:60
+ unreach 1:17:61
+ sourcequench 1:17:62
+ redirect 1:17:63
+ echo 1:17:64
+ routeradvert 1:17:65
+ routersolicit 1:17:66
+ timxceed 1:17:67
+ paramprob 1:17:68
+ tstamp 1:17:69
+ tstampreply 1:17:70
+ ireq 1:17:71
+ ireqreply 1:17:72
+ maskreq 1:17:73
+ maskreply 1:17:74
+}
+
+irix.network.icmp.outhist {
+ echoreply 1:17:75
+ unreach 1:17:76
+ sourcequench 1:17:77
+ redirect 1:17:78
+ echo 1:17:79
+ routeradvert 1:17:80
+ routersolicit 1:17:81
+ timxceed 1:17:82
+ paramprob 1:17:83
+ tstamp 1:17:84
+ tstampreply 1:17:85
+ ireq 1:17:86
+ ireqreply 1:17:87
+ maskreq 1:17:88
+ maskreply 1:17:89
+}
+
+irix.network.igmp {
+ rcv_total 1:17:90
+ rcv_tooshort 1:17:91
+ rcv_badsum 1:17:92
+ rcv_queries 1:17:93
+ rcv_badqueries 1:17:94
+ rcv_reports 1:17:95
+ rcv_badreports 1:17:96
+ rcv_ourreports 1:17:97
+ snd_reports 1:17:98
+}
+
+irix.network.ip {
+ badhlen 1:17:99
+ badlen 1:17:100
+ badoptions 1:17:101
+ badsum 1:17:102
+ cantforward 1:17:103
+ cantfrag 1:17:104
+ delivered 1:17:105
+ forward 1:17:106
+ fragdropped 1:17:107
+ fragmented 1:17:108
+ fragments 1:17:109
+ fragtimeout 1:17:110
+ localout 1:17:111
+ noproto 1:17:112
+ noroute 1:17:113
+ odropped 1:17:114
+ ofragments 1:17:115
+ reassembled 1:17:116
+ redirect 1:17:117
+ tooshort 1:17:118
+ toosmall 1:17:119
+ badvers 1:17:137
+ rawout 1:17:138
+ total 1:17:120
+}
+
+irix.network.tcp {
+ connattempt 1:17:1
+ accepts 1:17:2
+ connects 1:17:3
+ drops 1:17:4
+ conndrops 1:17:5
+ closed 1:17:6
+ segstimed 1:17:7
+ rttupdated 1:17:8
+ delack 1:17:9
+ timeoutdrop 1:17:10
+ rexmttimeo 1:17:11
+ persisttimeo 1:17:12
+ keeptimeo 1:17:13
+ keepprobe 1:17:14
+ keepdrops 1:17:15
+ sndtotal 1:17:16
+ sndpack 1:17:17
+ sndbyte 1:17:18
+ sndrexmitpack 1:17:19
+ sndrexmitbyte 1:17:20
+ sndacks 1:17:21
+ sndprobe 1:17:22
+ sndurg 1:17:23
+ sndwinup 1:17:24
+ sndctrl 1:17:25
+ sndrst 1:17:26
+ rcvtotal 1:17:27
+ rcvpack 1:17:28
+ rcvbyte 1:17:29
+ rcvbadsum 1:17:30
+ rcvbadoff 1:17:31
+ rcvshort 1:17:32
+ rcvduppack 1:17:33
+ rcvdupbyte 1:17:34
+ rcvpartduppack 1:17:35
+ rcvpartdupbyte 1:17:36
+ rcvoopack 1:17:37
+ rcvoobyte 1:17:38
+ rcvpackafterwin 1:17:39
+ rcvbyteafterwin 1:17:40
+ rcvafterclose 1:17:41
+ rcvwinprobe 1:17:42
+ rcvdupack 1:17:43
+ rcvacktoomuch 1:17:44
+ rcvackpack 1:17:45
+ rcvackbyte 1:17:46
+ rcvwinupd 1:17:47
+ pcbcachemiss 1:17:48
+ predack 1:17:49
+ preddat 1:17:50
+ pawsdrop 1:17:51
+ badsyn 1:17:152
+ listendrop 1:17:153
+ persistdrop 1:17:154
+ synpurge 1:17:155
+}
+
+irix.network.udp {
+ ipackets 1:17:121
+ hdrops 1:17:122
+ badsum 1:17:123
+ badlen 1:17:124
+ noport 1:17:125
+ noportbcast 1:17:126
+ fullsock 1:17:127
+ opackets 1:17:128
+ pcbcachemiss 1:17:129
+}
+
+irix.network.interface {
+ collisions 1:25:1
+ mtu 1:25:2
+ noproto 1:25:3
+ baudrate 1:25:4
+ in
+ out
+ total
+}
+
+irix.network.interface.in {
+ errors 1:25:5
+ packets 1:25:6
+ bytes 1:25:7
+ mcasts 1:25:8
+ drops 1:25:9
+}
+
+irix.network.interface.out {
+ errors 1:25:10
+ packets 1:25:11
+ bytes 1:25:12
+ mcasts 1:25:13
+ drops 1:25:14
+ qdrops 1:25:15
+ qlength 1:25:16
+ qmax 1:25:17
+}
+
+irix.network.interface.total {
+ errors 1:25:18
+ packets 1:25:19
+ bytes 1:25:20
+ mcasts 1:25:21
+ drops 1:25:22
+}
+
+irix.network.mbuf {
+ alloc 1:17:130
+ typealloc 1:17:136
+ clustalloc 1:17:131
+ clustfree 1:17:132
+ failed 1:17:133
+ waited 1:17:134
+ drained 1:17:135
+}
+
+irix.network.mcr {
+ mfc_lookups 1:17:139
+ mfc_misses 1:17:140
+ upcalls 1:17:141
+ no_route 1:17:142
+ bad_tunnel 1:17:143
+ cant_tunnel 1:17:144
+ wrong_if 1:17:145
+ upq_ovflw 1:17:146
+ cache_cleanups 1:17:147
+ drop_sel 1:17:148
+ q_overflow 1:17:149
+ pkt2large 1:17:150
+ upq_sockfull 1:17:151
+}
+
+irix.network.socket {
+ type 1:43:1
+ state 1:43:2
+}
+
+irix.numa {
+ routerload 1:39:1
+ migr
+ memory
+ unpegger
+ bouncectl
+ memoryd
+}
+
+irix.numa.migr {
+ threshold 1:39:2
+ intr
+ auto
+ user
+ queue
+ coalesc
+ triggers
+}
+
+irix.numa.migr.intr {
+ total 1:39:3
+ failstate 1:39:4
+ failenabled 1:39:5
+ failfrozen 1:39:6
+}
+
+irix.numa.migr.auto {
+ total 1:39:7
+ in 1:39:8
+ out 1:39:9
+ fail 1:39:10
+ queue_len 1:39:11
+}
+
+irix.numa.migr.user {
+ total 1:39:12
+ in 1:39:13
+ out 1:39:14
+ fail 1:39:15
+ queue_len 1:39:16
+}
+
+irix.numa.migr.queue {
+ total 1:39:17
+ in 1:39:18
+ out 1:39:19
+ fail
+}
+
+irix.numa.migr.queue.fail {
+ total 1:39:20
+ overflow 1:39:21
+ state 1:39:22
+ failq 1:39:23
+}
+
+irix.numa.migr.coalesc {
+ total 1:39:24
+ in 1:39:25
+ out 1:39:26
+ fail 1:39:27
+}
+
+irix.numa.migr.triggers {
+ capacity 1:39:28
+ time 1:39:29
+ traffic 1:39:30
+}
+
+irix.numa.memory {
+ lent 1:39:31
+ replicated
+}
+
+irix.numa.memory.replicated {
+ page_count 1:39:32
+ page_dest 1:39:33
+ page_reuse 1:39:34
+ page_notavail 1:39:35
+ control_refuse 1:39:36
+}
+
+irix.numa.unpegger {
+ calls 1:39:37
+ npages 1:39:38
+ last_npages 1:39:39
+}
+
+irix.numa.bouncectl {
+ calls 1:39:40
+ frozen_pages 1:39:41
+ melt_pages 1:39:42
+ last_melt_pages 1:39:43
+ dampened_pages 1:39:44
+}
+
+irix.numa.memoryd {
+ activations 1:39:45
+ periodic 1:39:46
+}
+
+irix.node {
+ physmem 1:40:1
+ free
+}
+
+irix.node.free {
+ total 1:40:2
+ pages_64k 1:40:3
+ pages_256k 1:40:4
+ pages_1m 1:40:5
+ pages_4m 1:40:6
+ pages_16m 1:40:7
+}
+
+irix.gfx {
+ ioctl 1:10:45
+ ctxswitch 1:10:46
+ swapbuf 1:10:47
+ intr 1:10:48
+ fifonowait 1:10:49
+ fifowait 1:10:50
+}
+
+irix.rpc {
+ client
+ server
+}
+
+irix.rpc.client {
+ badcalls 1:14:1
+ badxid 1:14:2
+ calls 1:14:3
+ newcred 1:14:4
+ retrans 1:14:5
+ timeout 1:14:6
+ wait 1:14:7
+ badverfs 1:14:8
+}
+
+irix.rpc.server {
+ badcalls 1:15:1
+ badlen 1:15:2
+ calls 1:15:3
+ dupage 1:15:4
+ duphits 1:15:5
+ nullrecv 1:15:6
+ xdrcall 1:15:7
+}
+
+irix.nfs {
+ client
+ server
+}
+
+irix.nfs.client {
+ badcalls 1:12:1
+ calls 1:12:2
+ nclget 1:12:3
+ nclsleep 1:12:4
+ reqs 1:12:5
+}
+
+irix.nfs.server {
+ badcalls 1:13:1
+ calls 1:13:2
+ reqs 1:13:3
+}
+
+irix.nfs3 {
+ client
+ server
+}
+
+irix.nfs3.client {
+ badcalls 1:33:1
+ calls 1:33:2
+ nclget 1:33:3
+ nclsleep 1:33:4
+ reqs 1:33:5
+}
+
+irix.nfs3.server {
+ badcalls 1:37:1
+ calls 1:37:2
+ reqs 1:37:3
+}
+
+irix.resource {
+ nproc 1:19:1
+ nbuf 1:19:2
+ hbuf 1:19:3
+ syssegsz 1:19:4
+ maxpmem 1:19:5
+ maxdmasz 1:19:6
+ dquot 1:19:7
+ nstream_queue 1:19:8
+ nstream_head 1:19:9
+ fileovf 1:20:1
+ procovf 1:20:2
+ name_cache
+ buffer_cache
+ vnodes
+ efs
+}
+
+irix.resource.name_cache {
+ hits 1:21:1
+ misses 1:21:2
+ enters 1:21:3
+ dbl_enters 1:21:4
+ long_enter 1:21:5
+ long_look 1:21:6
+ lru_empty 1:21:7
+ purges 1:21:8
+ vfs_purges 1:21:9
+ removes 1:21:10
+ searches 1:21:11
+ stale_hits 1:21:12
+ steps 1:21:13
+}
+
+irix.resource.buffer_cache {
+ getblks 1:22:1
+ getblockmiss 1:22:2
+ getfound 1:22:3
+ getbchg 1:22:4
+ getloops 1:22:5
+ getfree 1:22:6
+ getfreeempty 1:22:7
+ getfreehmiss 1:22:8
+ getfreehmissx 1:22:9
+ getfreealllck 1:22:10
+ getfreedelwri 1:22:11
+ flush 1:22:12
+ flushloops 1:22:13
+ getfreeref 1:22:14
+ getfreerelse 1:22:15
+ getoverlap 1:22:16
+ clusters 1:22:17
+ clustered 1:22:18
+ getfrag 1:22:19
+ getpatch 1:22:20
+ trimmed 1:22:21
+ inserts 1:22:22
+ irotates 1:22:23
+ deletes 1:22:24
+ drotates 1:22:25
+ decomms 1:22:26
+ flush_decomms 1:22:27
+ delrsv 1:22:28
+ delrsvclean 1:22:29
+ delrsvdirty 1:22:30
+ delrsvfree 1:22:31
+ delrsvwait 1:22:32
+}
+
+irix.resource.vnodes {
+ vnodes 1:23:1
+ extant 1:23:2
+ active 1:23:3
+ alloc 1:23:4
+ aheap 1:23:5
+ afree 1:23:6
+ afreeloops 1:23:7
+ get 1:23:8
+ gchg 1:23:9
+ gfree 1:23:10
+ rele 1:23:11
+ reclaim 1:23:12
+ destroy 1:23:13
+ afreemiss 1:23:14
+}
+
+irix.resource.efs {
+ attempts 1:24:1
+ found 1:24:2
+ frecycle 1:24:3
+ missed 1:24:4
+ dup 1:24:5
+ reclaims 1:24:6
+ itobp 1:24:7
+ itobpf 1:24:8
+ iupdat 1:24:9
+ iupacc 1:24:10
+ iupupd 1:24:11
+ iupchg 1:24:12
+ iupmod 1:24:13
+ iupunk 1:24:14
+ iallocrd 1:24:15
+ iallocrdf 1:24:16
+ ialloccoll 1:24:17
+ bmaprd 1:24:18
+ bmapfbm 1:24:19
+ bmapfbc 1:24:20
+ dirupd 1:24:21
+ truncs 1:24:22
+ icreat 1:24:23
+ attrchg 1:24:24
+ readcancel 1:24:25
+}
+
+irix.filesys {
+ capacity 1:27:1
+ used 1:27:2
+ free 1:27:3
+ maxfiles 1:27:4
+ usedfiles 1:27:5
+ freefiles 1:27:6
+ mountdir 1:27:7
+ full 1:27:8
+}
+
+irix.ipc {
+ sem
+ msg
+ shm
+}
+
+irix.ipc.sem {
+ nsems 1:31:1
+ ncnt 1:31:2
+ zcnt 1:31:3
+}
+
+irix.ipc.msg {
+ cbytes 1:30:1
+ qnum 1:30:2
+ qbytes 1:30:3
+}
+
+irix.ipc.shm {
+ segsz 1:29:1
+ nattch 1:29:2
+}
+
+irix.xfs {
+ allocx 1:32:1
+ allocb 1:32:2
+ freex 1:32:3
+ freeb 1:32:4
+ abt_lookup 1:32:5
+ abt_compare 1:32:6
+ abt_insrec 1:32:7
+ abt_delrec 1:32:8
+ blk_mapr 1:32:9
+ blk_mapw 1:32:10
+ blk_unmap 1:32:11
+ add_exlist 1:32:12
+ del_exlist 1:32:13
+ look_exlist 1:32:14
+ cmp_exlist 1:32:15
+ bmbt_lookup 1:32:16
+ bmbt_compare 1:32:17
+ bmbt_insrec 1:32:18
+ bmbt_delrec 1:32:19
+ dir_lookup 1:32:20
+ dir_create 1:32:21
+ dir_remove 1:32:22
+ dir_getdents 1:32:23
+ trans_sync 1:32:24
+ trans_async 1:32:25
+ trans_empty 1:32:26
+ ig_attempts 1:32:27
+ ig_found 1:32:28
+ ig_frecycle 1:32:29
+ ig_missed 1:32:30
+ ig_dup 1:32:31
+ ig_reclaims 1:32:32
+ ig_attrchg 1:32:33
+ log_writes 1:32:34
+ log_blocks 1:32:35
+ log_noiclogs 1:32:36
+ xfsd_bufs 1:32:37
+ xstrat_bytes 1:32:38
+ xstrat_quick 1:32:39
+ xstrat_split 1:32:40
+ write_calls 1:32:41
+ write_bytes 1:32:42
+ write_bufs 1:32:43
+ read_calls 1:32:44
+ read_bytes 1:32:45
+ read_bufs 1:32:46
+ attr_get 1:32:47
+ attr_set 1:32:48
+ attr_remove 1:32:49
+ attr_list 1:32:50
+}
+
+irix.kaio {
+ reads 1:36:3
+ writes 1:36:4
+ read_bytes 1:36:5
+ write_bytes 1:36:6
+ inuse 1:36:2
+ free 1:36:8
+ nobuf 1:36:1
+ proc_maxinuse 1:36:9
+ inprogress 1:36:10
+ errors 1:36:7
+}
+
+irix.xpc {
+ kernel
+ network
+ disk
+}
+
+irix.xpc.kernel {
+ all
+ percpu
+}
+
+irix.xpc.kernel.all {
+ cpu
+ io
+}
+
+irix.xpc.kernel.all.cpu {
+ idle 1:10:60
+ intr 1:10:61
+ sys 1:10:62
+ sxbrk 1:10:63
+ user 1:10:64
+ wait
+}
+
+irix.xpc.kernel.all.cpu.wait {
+ total 1:10:65
+ gfxc 1:10:66
+ gfxf 1:10:67
+ io 1:10:68
+ pio 1:10:69
+ swap 1:10:70
+}
+
+irix.xpc.kernel.all.io {
+ bread 1:10:71
+ bwrite 1:10:72
+ lread 1:10:73
+ lwrite 1:10:74
+ phread 1:10:75
+ phwrite 1:10:76
+ wcancel 1:10:77
+ dirblk 1:10:78
+}
+
+irix.xpc.kernel.percpu {
+ cpu
+ io
+}
+
+irix.xpc.kernel.percpu.cpu {
+ idle 1:28:60
+ intr 1:28:61
+ sys 1:28:62
+ sxbrk 1:28:63
+ user 1:28:64
+ wait
+}
+
+irix.xpc.kernel.percpu.cpu.wait {
+ total 1:28:65
+ gfxc 1:28:66
+ gfxf 1:28:67
+ io 1:28:68
+ pio 1:28:69
+ swap 1:28:70
+}
+
+irix.xpc.kernel.percpu.io {
+ bread 1:28:71
+ bwrite 1:28:72
+ lread 1:28:73
+ lwrite 1:28:74
+ phread 1:28:75
+ phwrite 1:28:76
+ wcancel 1:28:77
+ dirblk 1:28:78
+}
+
+irix.xpc.network {
+ interface
+}
+
+irix.xpc.network.interface {
+ in
+ out
+ total
+}
+
+irix.xpc.network.interface.in {
+ bytes 1:25:23
+}
+
+irix.xpc.network.interface.out {
+ bytes 1:25:24
+}
+
+irix.xpc.network.interface.total {
+ bytes 1:25:25
+}
+
+irix.xpc.disk {
+ dev
+}
+
+irix.xpc.disk.dev {
+ read 1:80:9
+ active 1:80:10
+ blkread 1:80:11
+ response 1:80:12
+ bytes 1:80:18
+ read_bytes 1:80:19
+ write_bytes 1:80:20
+}
+
+irix.pmda {
+ version 1:0:2
+ uname 1:0:3
+ reset 1:0:1
+ debug 1:0:4
+}
+
+irix.engr {
+ one 1:34:1
+ two 1:34:2
+ three 1:34:3
+ four 1:34:4
+}
+
+irix.xbow {
+ switch 1:42:5
+ nports 1:42:6
+ gen 1:42:7
+ active
+ total
+ port
+}
+
+irix.xbow.active {
+ xbows 1:42:3
+ ports 1:42:4
+}
+
+irix.xbow.total {
+ src 1:42:8
+ dst 1:42:9
+ rrcv 1:42:10
+ rxmt 1:42:11
+}
+
+irix.xbow.port {
+ flags 1:42:12
+ src 1:42:13
+ dst 1:42:14
+ rrcv 1:42:15
+ rxmt 1:42:16
+}
+
+irix.xlv {
+ read 1:45:2
+ write 1:45:3
+ read_bytes 1:45:4
+ write_bytes 1:45:5
+ stripe_ops 1:45:6
+ stripe_units 1:45:7
+ aligned
+ unaligned
+ largest_io
+}
+
+irix.xlv.aligned {
+ full_width 1:45:8
+ lt_width 1:45:9
+ gt_width 1:45:10
+ part_unit 1:45:11
+}
+
+irix.xlv.unaligned {
+ full_width 1:45:12
+ lt_width 1:45:13
+ gt_width 1:45:14
+ part_unit 1:45:15
+}
+
+irix.xlv.largest_io {
+ stripes 1:45:16
+ count 1:45:17
+}
+
+hinv {
+ ncpu 1:18:2
+ cpuclock 1:26:1
+ mincpuclock 1:26:10
+ maxcpuclock 1:26:11
+ cputype 1:26:13
+ dcache 1:26:2
+ icache 1:26:3
+ secondarycache 1:26:4
+ machine 1:26:12
+ physmem 1:26:5
+ pmeminterleave 1:26:6
+ ndisk 1:26:7
+ disk_sn 1:80:14
+ nnode 1:26:8
+ nrouter 1:38:0
+ nrouterport 1:38:11
+ interconnect 1:38:13
+ nxbow 1:42:1
+ ncell 1:26:14
+ pagesize 1:26:15
+ nxlv_volumes 1:45:1
+ nfilesys 1:27:9
+ nctl 1:81:22
+ map
+ ctl
+}
+
+hinv.map {
+ cpu 1:26:9
+ disk 1:80:13
+ node 1:39:49
+ router 1:38:1
+ routerport 1:38:12
+ xbow 1:42:2
+}
+
+hinv.ctl {
+ ndisk 1:81:23
+}
+
+hw {
+ r10kevctr
+ router
+ hub
+}
+
+hw.r10kevctr {
+ state 1:35:255
+ cpurev 1:35:254
+ cycles 1:35:0
+ fucomp 1:35:32
+ extint 1:35:12
+ extinv 1:35:13
+ vcc 1:35:14
+ tlb 1:35:23
+ grad
+ issue
+ fail
+ pcache
+ scache
+}
+
+hw.r10kevctr.grad {
+ instrg 1:35:15
+ loadg 1:35:18
+ storeg 1:35:19
+ scondg 1:35:20
+ fp 1:35:21
+}
+
+hw.r10kevctr.issue {
+ instri 1:35:1
+ loadi 1:35:2
+ storei 1:35:3
+ scondi 1:35:4
+ brd 1:35:6
+}
+
+hw.r10kevctr.fail {
+ scondf 1:35:5
+ brmp 1:35:24
+}
+
+hw.r10kevctr.pcache {
+ imiss 1:35:9
+ dmiss 1:35:25
+ wb 1:35:22
+}
+
+hw.r10kevctr.scache {
+ imiss 1:35:10
+ dmiss 1:35:26
+ wb 1:35:7
+ iwaymp 1:35:11
+ dwaymp 1:35:27
+ extinthit 1:35:28
+ extinvhit 1:35:29
+ upclean 1:35:30
+ upshare 1:35:31
+ ecc 1:35:8
+}
+
+hw.router {
+ portmask 1:38:2
+ rev_id 1:38:3
+ send_util 1:38:4
+ retry_errors 1:38:8
+ sn_errors 1:38:9
+ cb_errors 1:38:10
+ type 1:38:22
+ recv
+ perport
+}
+
+hw.router.recv {
+ bypass_util 1:38:5
+ queued_util 1:38:6
+ total_util 1:38:7
+}
+
+hw.router.perport {
+ send_util 1:38:14
+ retry_errors 1:38:18
+ sn_errors 1:38:19
+ cb_errors 1:38:20
+ excess_errors 1:38:21
+ recv
+}
+
+hw.router.perport.recv {
+ bypass_util 1:38:15
+ queued_util 1:38:16
+ total_util 1:38:17
+}
+
+hw.hub {
+ nasid 1:44:8
+ ni
+ ii
+}
+
+hw.hub.ni {
+ retry 1:44:1
+ sn_errors 1:44:2
+ cb_errors 1:44:3
+ overflows 1:44:4
+}
+
+hw.hub.ii {
+ sn_errors 1:44:5
+ cb_errors 1:44:6
+ overflows 1:44:7
+}
+
+pmcd {
+ datasize 2:0:1
+ numagents 2:0:2
+ numclients 2:0:3
+ timezone 2:0:5
+ simabi 2:0:6
+ version 2:0:7
+ license 2:0:16
+ control
+ pdu_in
+ pdu_out
+ agent
+ pmlogger
+}
+
+pmcd.control {
+ debug 2:0:0
+ timeout 2:0:4
+ register 2:0:8
+ traceconn 2:0:9
+ tracepdu 2:0:10
+ tracenobuf 2:0:14
+ tracebufs 2:0:11
+ dumptrace 2:0:12
+ dumpconn 2:0:13
+ sighup 2:0:15
+}
+
+pmcd.pdu_in {
+ error 2:1:0
+ result 2:1:1
+ profile 2:1:2
+ fetch 2:1:3
+ desc_req 2:1:4
+ desc 2:1:5
+ instance_req 2:1:6
+ instance 2:1:7
+ text_req 2:1:8
+ text 2:1:9
+ control_req 2:1:10
+ datax 2:1:11
+ creds 2:1:12
+ pmns_ids 2:1:13
+ pmns_names 2:1:14
+ pmns_child 2:1:15
+ total 2:1:16
+ pmns_traverse 2:1:17
+}
+
+pmcd.pdu_out {
+ error 2:2:0
+ result 2:2:1
+ profile 2:2:2
+ fetch 2:2:3
+ desc_req 2:2:4
+ desc 2:2:5
+ instance_req 2:2:6
+ instance 2:2:7
+ text_req 2:2:8
+ text 2:2:9
+ control_req 2:2:10
+ datax 2:2:11
+ creds 2:2:12
+ pmns_ids 2:2:13
+ pmns_names 2:2:14
+ pmns_child 2:2:15
+ total 2:2:16
+ pmns_traverse 2:2:17
+}
+
+pmcd.agent {
+ type 2:4:0
+ status 2:4:1
+}
+
+pmcd.pmlogger {
+ host 2:3:3
+ port 2:3:0
+ archive 2:3:2
+ pmcd_host 2:3:1
+}
+
+proc {
+ nprocs 3:0:0
+ psinfo
+ pstatus
+ pscred
+ psusage
+ memory
+ accounting
+}
+
+proc.psinfo {
+ state 3:1:0
+ sname 3:1:1
+ zomb 3:1:2
+ nice 3:1:3
+ flag 3:1:4
+ uid 3:1:5
+ gid 3:1:6
+ pid 3:1:7
+ ppid 3:1:8
+ pgrp 3:1:9
+ sid 3:1:10
+ addr 3:1:11
+ size 3:1:12
+ rssize 3:1:13
+ wchan 3:1:15
+ start 3:1:16
+ time 3:1:17
+ pri 3:1:18
+ oldpri 3:1:19
+ cpu 3:1:20
+ ttydev 3:1:21
+ clname 3:1:22
+ fname 3:1:23
+ psargs 3:1:24
+ uname 3:1:25
+ gname 3:1:26
+ ttyname 3:1:27
+ ttymajor 3:1:28
+ ttyminor 3:1:29
+ ctime 3:1:30
+ shareuid 3:1:31
+ pset 3:1:32
+ sonproc 3:1:33
+ spid 3:1:34
+ qtime 3:1:35
+ thds 3:1:36
+ wname 3:1:37
+}
+
+proc.pstatus {
+ flags 3:2:0
+ why 3:2:1
+ what 3:2:2
+ cursig 3:2:3
+ sigpend 3:2:4
+ sighold 3:2:5
+ info 3:2:6
+ altstack 3:2:7
+ action 3:2:8
+ syscall 3:2:9
+ nsysarg 3:2:10
+ errno 3:2:11
+ rval1 3:2:12
+ rval2 3:2:13
+ sysarg 3:2:14
+ pid 3:2:15
+ ppid 3:2:16
+ pgrp 3:2:17
+ sid 3:2:18
+ utime 3:2:19
+ stime 3:2:20
+ cutime 3:2:21
+ cstime 3:2:22
+ clname 3:2:23
+ instr 3:2:24
+ reg 3:2:25
+ nthreads 3:2:26
+ thsigpend 3:2:27
+ who 3:2:28
+}
+
+proc.pscred {
+ euid 3:3:0
+ ruid 3:3:1
+ suid 3:3:2
+ egid 3:3:3
+ rgid 3:3:4
+ sgid 3:3:5
+ ngroups 3:3:6
+}
+
+proc.psusage {
+ tstamp 3:4:0
+ starttime 3:4:1
+ utime 3:4:2
+ stime 3:4:3
+ minf 3:4:4
+ majf 3:4:5
+ utlb 3:4:6
+ nswap 3:4:7
+ gbread 3:4:8
+ bread 3:4:9
+ gbwrit 3:4:10
+ bwrit 3:4:11
+ sigs 3:4:12
+ vctx 3:4:13
+ ictx 3:4:14
+ sysc 3:4:15
+ syscr 3:4:16
+ syscw 3:4:17
+ syscps 3:4:18
+ sysci 3:4:19
+ graphfifo 3:4:20
+ graph_req 3:4:21
+ graph_wait 3:4:22
+ size 3:4:23
+ rss 3:4:24
+ inblock 3:4:25
+ oublock 3:4:26
+ ktlb 3:4:27
+ vfault 3:4:28
+}
+
+proc.memory {
+ virtual
+ physical
+}
+
+proc.memory.virtual {
+ txt 3:5:1
+ dat 3:5:3
+ bss 3:5:5
+ stack 3:5:7
+ shm 3:5:9
+}
+
+proc.memory.physical {
+ txt 3:5:0
+ dat 3:5:2
+ bss 3:5:4
+ stack 3:5:6
+ shm 3:5:8
+}
+
+proc.accounting {
+ flag 3:6:0
+ ash 3:6:1
+ prid 3:6:2
+ timers
+ counts
+}
+
+proc.accounting.timers {
+ utime 3:6:3
+ stime 3:6:4
+ bwtime 3:6:5
+ rwtime 3:6:6
+ qwtime 3:6:7
+}
+
+proc.accounting.counts {
+ mem 3:6:8
+ swaps 3:6:9
+ chr 3:6:10
+ chw 3:6:11
+ br 3:6:12
+ bw 3:6:13
+ syscr 3:6:14
+ syscw 3:6:15
+}
diff --git a/qa/src/rtimetest.c b/qa/src/rtimetest.c
new file mode 100644
index 0000000..51e1ca3
--- /dev/null
+++ b/qa/src/rtimetest.c
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2013-2014 Red Hat.
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+void
+set_tm(struct timeval *ntv, struct tm *ntm, struct tm *btm, int mon,
+ int mday, int hour, int min)
+{
+ memcpy(ntm, btm, sizeof(struct tm));
+ if (mon > 0)
+ ntm->tm_mon = mon;
+ if (mday > 0)
+ ntm->tm_mday = mday;
+ if (hour > 0)
+ ntm->tm_hour = hour;
+ if (min > 0)
+ ntm->tm_min = min;
+
+ if (ntv != NULL) {
+ ntv->tv_sec = mktime(ntm);
+ ntv->tv_usec = 0;
+ }
+}
+
+void
+dump_dt(char *str, struct tm *atm)
+{
+ int pfx;
+ printf("\"%s\"%n", str, &pfx);
+ printf("%*s", 31 - pfx, " ");
+ printf("%d-%.2d-%.2d %.2d:%.2d:%.2d\n",
+ atm->tm_year + 1900,
+ atm->tm_mon + 1,
+ atm->tm_mday, atm->tm_hour, atm->tm_min, atm->tm_sec);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct timeval tvstart; // .tv_sec .tv_usec
+ struct timeval tvend;
+ struct timeval tvrslt;
+ struct tm tmstart; // .tm_sec .tm_min .tm_hour .tm_mday
+ // .tm_mon .tm_year .tm_wday .tm_yday
+ struct tm tmend;
+ struct tm tmrslt;
+ struct tm tmtmp;
+ time_t ttstart;
+ char buffer[256];
+ char *errmsg;
+ char *tmtmp_str;
+
+ ttstart = 1392649730; // time(&ttstart) => time_t
+ ttstart = 1390057730;
+ tvstart.tv_sec = ttstart;
+ tvstart.tv_usec = 0;
+ localtime_r(&ttstart, &tmstart); // time_t => tm
+ set_tm(&tvend, &tmend, &tmstart, 0, 27, 11, 28);
+ dump_dt("start ", &tmstart);
+ dump_dt("end ", &tmend);
+
+ printf("These time terms are relative to the start/end time.\n"
+ "#1 __pmParseTime #2 pmParseTimeWindow/Start #3 pmParseTimeWindow/End.\n");
+ set_tm(NULL, &tmtmp, &tmstart, 0, 19, 11, 45);
+ tmtmp_str = asctime(&tmtmp);
+ char *tmtmp_c = strchr(tmtmp_str, '\n');
+ *tmtmp_c = ' ';
+ if (__pmParseTime(tmtmp_str, &tvstart, &tvend, &tvrslt, &errmsg) != 0) {
+ printf ("%s: %s\n", errmsg, tmtmp_str);
+ }
+
+ localtime_r(&tvrslt.tv_sec, &tmrslt); // time_t => tm
+ dump_dt(tmtmp_str, &tmrslt);
+
+ // See strftime for a description of the % formats
+ char *strftime_fmt[] = {
+ "+1minute",
+ "-1 minute",
+ "-1minute",
+ "%F",
+ "%D",
+ "%D %r",
+ "%D %r -1month",
+ "%D %r tomorrow",
+ "%D %r yesterday",
+ "%D %R",
+ "%D %T",
+ "%d %b %Y %X",
+ "1 day ago",
+ "1 week ago",
+ "@%F",
+ "@%D",
+ "@%D %r",
+ "@%D %R",
+ "@%D %T",
+ "@%D %T GMT",
+ "@%d %b %Y %X",
+ "@next day",
+ "@1 day ago",
+ "1 day",
+ "5 minutes 5 seconds",
+ "last week",
+ "last day",
+ "next day",
+ // relative to current time terms begin here
+ "now",
+ "today",
+ "@yesterday",
+ "yesterday",
+ "tomorrow",
+ "sunday",
+ "first sunday",
+ "last monday",
+ "next tuesday"
+ };
+
+ int sfx;
+ for (sfx = 0; sfx < (sizeof(strftime_fmt) / sizeof(void *)); sfx++) {
+ int len = strftime(buffer, sizeof(buffer), strftime_fmt[sfx], &tmtmp);
+ if (len != 0) {
+ struct timeval rsltStart;
+ struct timeval rsltEnd;
+ struct timeval rsltOffset;
+ if (strcmp(strftime_fmt[sfx], "now") == 0)
+ printf
+ ("These time terms for a specific day are relative to the current time.\n");
+ if (__pmParseTime(buffer, &tvstart, &tvend, &tvrslt, &errmsg) != 0) {
+ printf ("%s: %s\n", errmsg, tmtmp_str);
+ }
+ localtime_r(&tvrslt.tv_sec, &tmrslt); // time_t => tm
+ dump_dt(buffer, &tmrslt);
+ if (pmParseTimeWindow(buffer, NULL, NULL, NULL, &tvstart, &tvend, &rsltStart, &rsltEnd, &rsltOffset, &errmsg) < 0) {
+ printf ("%s: %s\n", errmsg, tmtmp_str);
+ }
+ localtime_r(&rsltStart.tv_sec, &tmrslt); // time_t => tm
+ dump_dt(buffer, &tmrslt);
+ localtime_r(&rsltEnd.tv_sec, &tmrslt); // time_t => tm
+ dump_dt(buffer, &tmrslt);
+ }
+ else
+ printf("strftime format \"%s\" not recognized\n",
+ strftime_fmt[sfx]);
+ }
+
+ return 0;
+}
diff --git a/qa/src/sa-sysstat-10.0.1 b/qa/src/sa-sysstat-10.0.1
new file mode 100644
index 0000000..5c46b8f
--- /dev/null
+++ b/qa/src/sa-sysstat-10.0.1
Binary files differ
diff --git a/qa/src/sa-sysstat-10.0.5 b/qa/src/sa-sysstat-10.0.5
new file mode 100644
index 0000000..068d170
--- /dev/null
+++ b/qa/src/sa-sysstat-10.0.5
Binary files differ
diff --git a/qa/src/sa-sysstat-10.2.0 b/qa/src/sa-sysstat-10.2.0
new file mode 100644
index 0000000..80d0623
--- /dev/null
+++ b/qa/src/sa-sysstat-10.2.0
Binary files differ
diff --git a/qa/src/sa-sysstat-9.0.4 b/qa/src/sa-sysstat-9.0.4
new file mode 100644
index 0000000..a3f5ca2
--- /dev/null
+++ b/qa/src/sa-sysstat-9.0.4
Binary files differ
diff --git a/qa/src/sa-sysstat-9.0.6 b/qa/src/sa-sysstat-9.0.6
new file mode 100644
index 0000000..6432923
--- /dev/null
+++ b/qa/src/sa-sysstat-9.0.6
Binary files differ
diff --git a/qa/src/sa-sysstat-9.0.6.1 b/qa/src/sa-sysstat-9.0.6.1
new file mode 100644
index 0000000..7fb6a38
--- /dev/null
+++ b/qa/src/sa-sysstat-9.0.6.1
Binary files differ
diff --git a/qa/src/sa-sysstat-9.1.7 b/qa/src/sa-sysstat-9.1.7
new file mode 100644
index 0000000..37409c4
--- /dev/null
+++ b/qa/src/sa-sysstat-9.1.7
Binary files differ
diff --git a/qa/src/sample-secs.0 b/qa/src/sample-secs.0
new file mode 100644
index 0000000..7a3b89f
--- /dev/null
+++ b/qa/src/sample-secs.0
Binary files differ
diff --git a/qa/src/sample-secs.index b/qa/src/sample-secs.index
new file mode 100644
index 0000000..f074d33
--- /dev/null
+++ b/qa/src/sample-secs.index
Binary files differ
diff --git a/qa/src/sample-secs.meta b/qa/src/sample-secs.meta
new file mode 100644
index 0000000..20abe37
--- /dev/null
+++ b/qa/src/sample-secs.meta
Binary files differ
diff --git a/qa/src/sample_expr.0 b/qa/src/sample_expr.0
new file mode 100644
index 0000000..bf5de05
--- /dev/null
+++ b/qa/src/sample_expr.0
Binary files differ
diff --git a/qa/src/sample_expr.index b/qa/src/sample_expr.index
new file mode 100644
index 0000000..048eb52
--- /dev/null
+++ b/qa/src/sample_expr.index
Binary files differ
diff --git a/qa/src/sample_expr.meta b/qa/src/sample_expr.meta
new file mode 100644
index 0000000..1528e8f
--- /dev/null
+++ b/qa/src/sample_expr.meta
Binary files differ
diff --git a/qa/src/scale.c b/qa/src/scale.c
new file mode 100644
index 0000000..7acf861
--- /dev/null
+++ b/qa/src/scale.c
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * scale - exercise scale conversion, pmConvScale and pmUnitsStr
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+static pmUnits iu = PMDA_PMUNITS( 0, 1, 1, 0, PM_TIME_SEC, 0 );
+static pmUnits ou = PMDA_PMUNITS( 0, 1, 1, 0, PM_TIME_SEC, 0 );
+
+static int tval[] = { 1, 7200 };
+static int tscale[] =
+ { PM_TIME_NSEC, PM_TIME_USEC, PM_TIME_MSEC, PM_TIME_SEC, PM_TIME_MIN, PM_TIME_HOUR };
+static int sval[] = { 1, 1024*1024 };
+static int sscale[] =
+ { PM_SPACE_BYTE, PM_SPACE_KBYTE, PM_SPACE_MBYTE, PM_SPACE_GBYTE, PM_SPACE_TBYTE };
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ const char *u;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-v]";
+ int vflag = 0;
+ pmAtomValue iv;
+ pmAtomValue ov;
+ pmAtomValue tv;
+ int d;
+ int i;
+ int j;
+ int k;
+ int l;
+ int underflow = 0;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:v")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'v': /* verbose */
+ vflag++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+
+ for (d = 1; d >= -1; d -=2) {
+ iu.dimTime = d;
+ ou.dimTime = d;
+ if (d == 1) {
+ iu.dimCount = -1;
+ ou.dimCount = -1;
+ }
+ else {
+ iu.dimCount = 1;
+ ou.dimCount = 1;
+ }
+ for (i = 0; i < sizeof(tval)/sizeof(tval[0]); i++) {
+ iv.ll = tval[i];
+ for (j = 0; j < sizeof(tscale)/sizeof(tscale[0]); j++) {
+ iu.scaleTime = tscale[j];
+ for (k = 0; k < sizeof(tscale)/sizeof(tscale[0]); k++) {
+ ou.scaleTime = tscale[k];
+
+ if ((sts = pmConvScale(PM_TYPE_64, &iv, &iu, &ov, &ou)) < 0) {
+ printf("convert: %s\n", pmErrStr(sts));
+ }
+ else {
+ if (vflag) {
+ u = pmUnitsStr(&iu);
+ printf("%lld %s", (long long)iv.ll, *u == '\0' ? "none" : u);
+ u = pmUnitsStr(&ou);
+ printf(" -> %lld %s\n", (long long)ov.ll, *u == '\0' ? "none" : u);
+ }
+ if ((sts = pmConvScale(PM_TYPE_64, &ov, &ou, &tv, &iu)) < 0) {
+ printf("reconvert: %s\n", pmErrStr(sts));
+ }
+ else {
+ if (tv.ll != iv.ll) {
+ if (ov.ll == 0)
+ underflow++;
+ else {
+ u = pmUnitsStr(&iu);
+ printf("error? %lld %s", (long long)iv.ll, *u == '\0' ? "none" : u);
+ u = pmUnitsStr(&ou);
+ printf(" -> %lld %s", (long long)ov.ll, *u == '\0' ? "none" : u);
+ u = pmUnitsStr(&iu);
+ printf(" -> %lld %s\n", (long long)tv.ll, *u == '\0' ? "none" : u);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ printf("\nPass 1: plus %d underflows to zero\n\n", underflow);
+ underflow = 0;
+
+ ou.dimTime = 0;
+ iu.dimTime = 0;
+ ou.dimCount = 0;
+ iu.dimCount = 0;
+ ou.dimSpace = 1;
+ iu.dimSpace = 1;
+ iu.scaleTime = PM_TIME_SEC;
+ for (d = 0; d < 4; d +=2) {
+ ou.dimTime = -d;
+ iu.dimTime = -d;
+ for (i = 0; i < sizeof(sval)/sizeof(sval[0]); i++) {
+ iv.ll = sval[i];
+ for (j = 0; j < sizeof(sscale)/sizeof(sscale[0]); j++) {
+ iu.scaleSpace = sscale[j];
+ for (k = 0; k < sizeof(sscale)/sizeof(sscale[0]); k++) {
+ ou.scaleSpace = sscale[k];
+ for (l = 2; l < sizeof(tscale)/sizeof(tscale[0]); l += 2) {
+ ou.scaleTime = tscale[l];
+
+ if ((sts = pmConvScale(PM_TYPE_64, &iv, &iu, &ov, &ou)) < 0) {
+ printf("convert: %s\n", pmErrStr(sts));
+ }
+ else {
+ if (vflag) {
+ u = pmUnitsStr(&iu);
+ printf("%lld %s", (long long)iv.ll, *u == '\0' ? "none" : u);
+ u = pmUnitsStr(&ou);
+ printf(" -> %lld %s\n", (long long)ov.ll, *u == '\0' ? "none" : u);
+ }
+ if ((sts = pmConvScale(PM_TYPE_64, &ov, &ou, &tv, &iu)) < 0) {
+ printf("reconvert: %s\n", pmErrStr(sts));
+ }
+ else {
+ if (tv.ll != iv.ll) {
+ if (ov.ll == 0)
+ underflow++;
+ else {
+ u = pmUnitsStr(&iu);
+ printf("error? %lld %s", (long long)iv.ll, *u == '\0' ? "none" : u);
+ u = pmUnitsStr(&ou);
+ printf(" -> %lld %s", (long long)ov.ll, *u == '\0' ? "none" : u);
+ u = pmUnitsStr(&iu);
+ printf(" -> %lld %s\n", (long long)tv.ll, *u == '\0' ? "none" : u);
+ }
+ }
+ }
+ }
+ if (d == 0)
+ break;
+ }
+ }
+ }
+ }
+ }
+ printf("\nPass 2: plus %d underflows to zero\n", underflow);
+
+ iu.dimSpace = 0;
+ iu.scaleSpace = 0;
+ iu.scaleTime = PM_TIME_MSEC;
+ for (d = 1; d > -2; d -= 2) {
+ iu.dimTime = d;
+ iu.dimCount = -d;
+ for (i = 3; i >= -3; i--) {
+ iu.scaleCount = i;
+ printf("{ %3d,%3d,%3d,%3d,%3d,%3d } %s\n",
+ iu.dimSpace, iu.dimTime, iu.dimCount,
+ iu.scaleSpace, iu.scaleTime, iu.scaleCount,
+ pmUnitsStr(&iu));
+ }
+ }
+ printf("\nPass 3:\n");
+
+ exit(0);
+}
diff --git a/qa/src/section-a.0 b/qa/src/section-a.0
new file mode 100644
index 0000000..fa21a30
--- /dev/null
+++ b/qa/src/section-a.0
Binary files differ
diff --git a/qa/src/section-a.index b/qa/src/section-a.index
new file mode 100644
index 0000000..10204b2
--- /dev/null
+++ b/qa/src/section-a.index
Binary files differ
diff --git a/qa/src/section-a.meta b/qa/src/section-a.meta
new file mode 100644
index 0000000..f595d2a
--- /dev/null
+++ b/qa/src/section-a.meta
Binary files differ
diff --git a/qa/src/section-b.0 b/qa/src/section-b.0
new file mode 100644
index 0000000..40c87af
--- /dev/null
+++ b/qa/src/section-b.0
Binary files differ
diff --git a/qa/src/section-b.index b/qa/src/section-b.index
new file mode 100644
index 0000000..757434d
--- /dev/null
+++ b/qa/src/section-b.index
Binary files differ
diff --git a/qa/src/section-b.meta b/qa/src/section-b.meta
new file mode 100644
index 0000000..48e721d
--- /dev/null
+++ b/qa/src/section-b.meta
Binary files differ
diff --git a/qa/src/section-c.0 b/qa/src/section-c.0
new file mode 100644
index 0000000..a305cd4
--- /dev/null
+++ b/qa/src/section-c.0
Binary files differ
diff --git a/qa/src/section-c.index b/qa/src/section-c.index
new file mode 100644
index 0000000..dbad675
--- /dev/null
+++ b/qa/src/section-c.index
Binary files differ
diff --git a/qa/src/section-c.meta b/qa/src/section-c.meta
new file mode 100644
index 0000000..2813aa6
--- /dev/null
+++ b/qa/src/section-c.meta
Binary files differ
diff --git a/qa/src/section-d.0 b/qa/src/section-d.0
new file mode 100644
index 0000000..b5d4bc4
--- /dev/null
+++ b/qa/src/section-d.0
Binary files differ
diff --git a/qa/src/section-d.index b/qa/src/section-d.index
new file mode 100644
index 0000000..a59b24f
--- /dev/null
+++ b/qa/src/section-d.index
Binary files differ
diff --git a/qa/src/section-d.meta b/qa/src/section-d.meta
new file mode 100644
index 0000000..e3bf01c
--- /dev/null
+++ b/qa/src/section-d.meta
Binary files differ
diff --git a/qa/src/sgi.bf b/qa/src/sgi.bf
new file mode 100644
index 0000000..e2fefc2
--- /dev/null
+++ b/qa/src/sgi.bf
Binary files differ
diff --git a/qa/src/show-args b/qa/src/show-args
new file mode 100755
index 0000000..4fc3ed9
--- /dev/null
+++ b/qa/src/show-args
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# quick and dirty "show me your arguments" tool
+
+echo $0 called
+i=1
+for arg
+do
+ echo "arg[$i] $arg"
+ i=`expr $i + 1`
+done
diff --git a/qa/src/simple-resave.csv b/qa/src/simple-resave.csv
new file mode 100644
index 0000000..3cbe531
--- /dev/null
+++ b/qa/src/simple-resave.csv
@@ -0,0 +1,5 @@
+"DATE","Metric A","Metric B","Metric C","Metric D","Metric E"
+26/01/10 01:02,100,200,300,1,"foo bar first"
+26/01/10 05:02,110,200,290,2,"foo bar second"
+26/01/10 09:02,120,200,280,3,"foo bar third"
+26/01/10 13:02,130,200,270,4,"foo bar last"
diff --git a/qa/src/simple-resave.xlsx b/qa/src/simple-resave.xlsx
new file mode 100644
index 0000000..306b903
--- /dev/null
+++ b/qa/src/simple-resave.xlsx
Binary files differ
diff --git a/qa/src/simple.csv b/qa/src/simple.csv
new file mode 100644
index 0000000..d9b9329
--- /dev/null
+++ b/qa/src/simple.csv
@@ -0,0 +1,5 @@
+"DATE";"Metric A";"Metric B";"Metric C";"Metric D";"Metric E"
+26/01/2010 01:02:03;100.00;200.00;300.00;1;"foo bar first"
+26/01/2010 05:02:03;110.00;200.00;290.00;2;"foo bar second"
+26/01/2010 09:02:03;120.00;200.00;280.00;3;"foo bar third"
+26/01/2010 13:02:03;130.00;200.00;270.00;4;"foo bar last"
diff --git a/qa/src/simple.ods b/qa/src/simple.ods
new file mode 100644
index 0000000..b4491d4
--- /dev/null
+++ b/qa/src/simple.ods
Binary files differ
diff --git a/qa/src/simple.sxc b/qa/src/simple.sxc
new file mode 100644
index 0000000..163539c
--- /dev/null
+++ b/qa/src/simple.sxc
Binary files differ
diff --git a/qa/src/simple.xls b/qa/src/simple.xls
new file mode 100644
index 0000000..d875c31
--- /dev/null
+++ b/qa/src/simple.xls
Binary files differ
diff --git a/qa/src/simple.xlsx b/qa/src/simple.xlsx
new file mode 100644
index 0000000..3d804bc
--- /dev/null
+++ b/qa/src/simple.xlsx
Binary files differ
diff --git a/qa/src/slow.0 b/qa/src/slow.0
new file mode 100644
index 0000000..39230c0
--- /dev/null
+++ b/qa/src/slow.0
Binary files differ
diff --git a/qa/src/slow.index b/qa/src/slow.index
new file mode 100644
index 0000000..63b3f9e
--- /dev/null
+++ b/qa/src/slow.index
Binary files differ
diff --git a/qa/src/slow.meta b/qa/src/slow.meta
new file mode 100644
index 0000000..fe60e74
--- /dev/null
+++ b/qa/src/slow.meta
Binary files differ
diff --git a/qa/src/slow_af.c b/qa/src/slow_af.c
new file mode 100644
index 0000000..78ad458
--- /dev/null
+++ b/qa/src/slow_af.c
@@ -0,0 +1,152 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static struct timeval start;
+
+#ifdef IS_MINGW
+void pause(void) { SleepEx(INFINITE, TRUE); }
+#endif
+
+static int reg[4];
+
+static void
+printstamp(struct timeval *tp)
+{
+ static struct tm *tmp;
+ time_t tt = (time_t)tp->tv_sec;
+
+ tmp = localtime(&tt);
+ fprintf(stderr, "%02d:%02d:%02d.%06d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec, (int)tp->tv_usec);
+}
+
+void
+onevent(int afid, void *data)
+{
+ struct timeval now;
+ static int delay = -3;
+ int evnum;
+ double elapsed;
+ struct timeval sec = { 0, 0 };
+
+ gettimeofday(&now, NULL);
+
+ if (pmDebug & DBG_TRACE_AF) {
+ fprintf(stderr, "onevent(%d, " PRINTF_P_PFX "%p) called: ", afid, data);
+ printstamp(&now);
+ fputc('\n', stderr);
+ }
+
+ elapsed = now.tv_sec - start.tv_sec + (double)(now.tv_usec - start.tv_usec) / 1000000.0;
+
+ if (afid == reg[2])
+ printf("event %d callback\n", afid);
+ else {
+ if (afid == reg[0])
+ evnum = (int)(elapsed / 2.5);
+ else
+ evnum = (int)(elapsed / 1.5);
+ /* evnum not reliable for small elapsed intervals */
+ if (evnum >= 3)
+ printf("event %d callback #%d\n", afid, evnum);
+ else
+ printf("event %d callback #?\n", afid);
+ }
+
+ if (delay > 6) {
+ /* only report the unexpected */
+ if (__pmAFunregister(reg[0]) < 0)
+ printf("unregister %d failed\n", reg[0]);
+ if (__pmAFunregister(reg[1]) == 0)
+ printf("unregister %d success\n", reg[1]);
+ if (__pmAFunregister(reg[2]) == 0)
+ printf("unregister %d success\n", reg[2]);
+ if (__pmAFunregister(reg[3]) < 0)
+ printf("unregister %d failed\n", reg[0]);
+ exit(0);
+ }
+ if (delay > 0) {
+ /*
+ * was sginap(delay * CLK_TCK) ... usleep() for
+ * delay*CLK_TCK*10^6/CLK_TCK microseconds so "delay" sec
+ */
+ sec.tv_sec = delay;
+ __pmtimevalSleep(sec);
+ }
+ delay++;
+
+ if (pmDebug & DBG_TRACE_AF) {
+ gettimeofday(&now, NULL);
+ fprintf(stderr, "onevent done: ");
+ printstamp(&now);
+ fputc('\n', stderr);
+ }
+
+ fflush(stderr);
+ fflush(stdout);
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ struct timeval delta = { 2, 500000 };
+ struct timeval now;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -D debug standard PCP debug flag\n",
+ pmProgname);
+ exit(1);
+ }
+
+ __pmAFblock();
+ gettimeofday(&start, NULL);
+ reg[0] = __pmAFregister(&delta, NULL, onevent);
+ delta.tv_sec = 1;
+ reg[1] = __pmAFregister(&delta, NULL, onevent);
+ delta.tv_sec = 0;
+ delta.tv_usec = 0;
+ reg[2] = __pmAFregister(&delta, NULL, onevent);
+ delta.tv_sec = 60; /* will never fire */
+ reg[3] = __pmAFregister(&delta, NULL, onevent);
+ __pmAFunblock();
+
+ for ( ; ; ) {
+ fflush(stderr);
+ pause();
+ if (pmDebug & DBG_TRACE_AF) {
+ gettimeofday(&now, NULL);
+ fprintf(stderr, "returned from pause(): ");
+ printstamp(&now);
+ fputc('\n', stderr);
+ }
+ }
+}
diff --git a/qa/src/snort-disks.0 b/qa/src/snort-disks.0
new file mode 100644
index 0000000..e19ae7a
--- /dev/null
+++ b/qa/src/snort-disks.0
Binary files differ
diff --git a/qa/src/snort-disks.index b/qa/src/snort-disks.index
new file mode 100644
index 0000000..e4f266a
--- /dev/null
+++ b/qa/src/snort-disks.index
Binary files differ
diff --git a/qa/src/snort-disks.meta b/qa/src/snort-disks.meta
new file mode 100644
index 0000000..329c4b8
--- /dev/null
+++ b/qa/src/snort-disks.meta
Binary files differ
diff --git a/qa/src/store.c b/qa/src/store.c
new file mode 100644
index 0000000..3e4daac
--- /dev/null
+++ b/qa/src/store.c
@@ -0,0 +1,232 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+void
+_compare(pmResult *orp, pmResult *nrp)
+{
+ pmValue *ovp;
+ pmValue *nvp;
+ int i;
+ int j;
+ int delta;
+ int err = 0;
+
+ if (orp->numpmid != nrp->numpmid) {
+ printf("ERROR: numpmid mismatch\n");
+ goto bad;
+ }
+
+ for (i = 0; i < orp->numpmid; i++) {
+ if (orp->vset[i]->numval != nrp->vset[i]->numval) {
+ printf("ERROR: [metric %d] numval mismatch\n", i);
+ err = 1;
+ continue;
+ }
+ if (orp->vset[i]->valfmt != nrp->vset[i]->valfmt) {
+ printf("ERROR: [metric %d] valfmt mismatch\n", i);
+ err = 1;
+ continue;
+ }
+ if (orp->vset[i]->valfmt != PM_VAL_INSITU) {
+ printf("ERROR: [metric %d] bogus valfmt\n", i);
+ err = 1;
+ continue;
+ }
+ for (j = 0; j < orp->vset[i]->numval; j++) {
+ ovp = &orp->vset[i]->vlist[j];
+ nvp = &nrp->vset[i]->vlist[j];
+ delta = ovp->value.lval - nvp->value.lval;
+ if (delta != 0) {
+ printf("ERROR: [metric %d][instance %d] value mismatch\n", i, j);
+ err = 1;
+ if (i == 1 && j == 0)
+ printf("NOTE: this is expected for sampledso.drift\n");
+ }
+ }
+ }
+
+ if (err)
+ goto bad;
+
+ return;
+
+bad:
+
+ __pmDumpResult(stdout, orp);
+ __pmDumpResult(stdout, nrp);
+}
+
+int
+main(int argc, char **argv)
+{
+ int type = PM_CONTEXT_HOST;
+ int c;
+ int sts;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-x] [-h hostname] [-n namespace]";
+ int i;
+ int n;
+ char *namelist[20];
+ pmID midlist[20];
+ int numpmid;
+ pmResult *old;
+ pmResult *new;
+ pmResult pr;
+ pmValueSet pvs;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:Ln:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'L': /* LOCAL, no PMCD */
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ putenv("PMDA_LOCAL_SAMPLE=");
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ printf("%s: Cannot connect standalone on localhost: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ i = 0;
+ namelist[i++] = "sampledso.write_me";
+ namelist[i++] = "sampledso.control";
+ namelist[i++] = "sampledso.long.one";
+ numpmid = i;
+ n = pmLookupName(numpmid, namelist, midlist);
+ if (n < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ if (midlist[i] == PM_ID_NULL)
+ printf(" %s is bad\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ if ((n = pmFetch(numpmid, midlist, &old)) < 0) {
+ printf("pmFetch old: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ old->numpmid--;
+ if ((n = pmStore(old)) < 0) {
+ printf("pmStore no change: %s\n", pmErrStr(n));
+ }
+ if ((n = pmFetch(numpmid - 1, midlist, &new)) < 0) {
+ printf("pmFetch new: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ else {
+ _compare(old, new);
+ pmFreeResult(new);
+ }
+
+ old->vset[0]->vlist[0].value.lval++;
+ if ((n = pmStore(old)) < 0) {
+ printf("pmStore change: %s\n", pmErrStr(n));
+ }
+ if ((n = pmFetch(numpmid - 1, midlist, &new)) < 0) {
+ printf("pmFetch new again: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ else {
+ _compare(old, new);
+ pmFreeResult(new);
+ }
+
+ old->vset[0]->vlist[0].value.lval--;
+ if ((n = pmStore(old)) < 0) {
+ printf("pmStore restore: %s\n", pmErrStr(n));
+ }
+ if ((n = pmFetch(numpmid - 1, midlist, &new)) < 0) {
+ printf("pmFetch new once more: %s\n", pmErrStr(n));
+ }
+ else {
+ _compare(old, new);
+ pmFreeResult(new);
+ }
+
+ old->numpmid++; /* cannot change sampledso.long.one */
+ n = pmStore(old);
+ if (n != -EACCES && n != PM_ERR_PERMISSION) {
+ printf("ERROR: expected EACCES or PM_ERR_PERMISSION error\n");
+ printf("pmStore all 3: %s\n", pmErrStr(n));
+ }
+ pmFreeResult(old);
+
+ /*
+ * see http://people.redhat.com/mgoodwin/pcp-cov/1/127dostore.c.html#error
+ */
+ pr.numpmid = 1;
+ pr.vset[0] = &pvs;
+ /* assume BROKEN PMDA is not installed */
+ pr.vset[0]->pmid = pmid_build(249,123,456);
+ pr.vset[0]->numval = 1;
+ pr.vset[0]->valfmt = PM_VAL_INSITU;
+ pr.vset[0]->vlist[0].inst = PM_INDOM_NULL;
+ pr.vset[0]->vlist[0].value.lval = 123456;
+ n = pmStore(&pr);
+ if (n != PM_ERR_NOAGENT) {
+ printf("ERROR: expected PM_ERR_NOAGENT error\n");
+ printf("pmStore bad agent domain: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/storepast.c b/qa/src/storepast.c
new file mode 100644
index 0000000..3898706
--- /dev/null
+++ b/qa/src/storepast.c
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * storepast - illegal pmStore wrt to current
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ pmResult req;
+ char *name = "sample.write_me";
+ pmID pmid;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:n:")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options:\n\
+ -a archive use archive log, not host source\n\
+ -D N set pmDebug debugging flag to N\n\
+ -h hostname connect to PMCD on this host\n\
+ -n namespace alternative PMNS specification file\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_HOST) {
+ struct timeval back;
+ gettimeofday(&back, (struct timezone *)0);
+ back.tv_sec -= 3600; /* an hour ago */
+ if ((sts = pmSetMode(PM_MODE_BACK, &back, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if ((sts = pmLookupName(1, &name, &pmid)) < 0) {
+ printf("%s: pmLookupName: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ req.numpmid = 1;
+ req.vset[0] = (pmValueSet *)malloc(sizeof(pmValueSet));
+ req.vset[0]->pmid = pmid;
+ req.vset[0]->numval = 1;
+ req.vset[0]->valfmt = PM_VAL_INSITU;
+ req.vset[0]->vlist[0].inst = PM_IN_NULL;
+ req.vset[0]->vlist[0].value.lval = 1;
+
+ sts = pmStore(&req);
+
+ printf("pmStore, should produce PM_ERR_NOHOST, ...\n%s\n", pmErrStr(sts));
+
+ exit(0);
+}
diff --git a/qa/src/storepdu.c b/qa/src/storepdu.c
new file mode 100644
index 0000000..08383c7
--- /dev/null
+++ b/qa/src/storepdu.c
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *host = "localhost";
+ char *namespace = PM_NS_DEFAULT;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-h hostname] [-n namespace]";
+ int i;
+ int n;
+ char *namelist[20];
+ pmID midlist[20];
+ int numpmid;
+ pmResult *rslt;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "D:h:n:")) != EOF) {
+ switch (c) {
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* hostname for PMCD to contact */
+ host = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, host)) < 0) {
+ printf("%s: Cannot connect to PMCD on host \"%s\": %s\n", pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ i = 0;
+ namelist[i++] = "sampledso.long.one";
+ namelist[i++] = "sample.long.write_me";
+ numpmid = i;
+ n = pmLookupName(numpmid, namelist, midlist);
+ if (n < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ if (midlist[i] == PM_ID_NULL)
+ printf(" %s is bad\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ if ((n = pmFetch(1, &midlist[0], &rslt)) < 0) {
+ printf("pmFetch rslt: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ rslt->vset[0]->pmid = midlist[1];
+ if ((n = pmStore(rslt)) < 0) {
+ printf("pmStore: %s\n", pmErrStr(n));
+ exit(1);
+ }
+ printf("pmStore: ok\n");
+ exit(0);
+}
diff --git a/qa/src/stripmark.c b/qa/src/stripmark.c
new file mode 100644
index 0000000..0809c3f
--- /dev/null
+++ b/qa/src/stripmark.c
@@ -0,0 +1,78 @@
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+/*
+ * filter to copy archive.0 and strip mark records
+ */
+
+int
+main(int argc, char *argv[])
+{
+ int *len;
+ int buflen;
+ char *buf ;
+ int in;
+ int out;
+ int nb;
+ int sts;
+
+ if (argc != 3) {
+ fprintf(stderr, "Usage: stripmark in.0 out.0\n");
+ exit(1);
+ }
+
+ if ((in = open(argv[1], O_RDONLY)) < 0) {
+ fprintf(stderr, "Failed to open %s: %s\n", argv[1], strerror(errno));
+ exit(1);
+ }
+ if ((out = open(argv[2], O_WRONLY|O_CREAT|O_TRUNC, 0644)) < 0) {
+ fprintf(stderr, "Failed to create %s: %s\n", argv[2], strerror(errno));
+ exit(1);
+ }
+ buflen = sizeof(*len);
+ buf = (char *)malloc(buflen);
+ len = (int *)buf;
+
+ for ( ; ; ) {
+ if ((nb = read(in, buf, sizeof(*len))) != sizeof(*len)) {
+ if (nb == 0) break;
+ if (nb < 0)
+ fprintf(stderr, "read error: %s\n", strerror(errno));
+ else
+ fprintf(stderr, "read error: expected %d bytes, got %d\n",
+ (int)sizeof(*len), nb);
+ exit(1);
+ }
+ if (htonl(*len) > buflen) {
+ buflen = htonl(*len);
+ buf = (char *)realloc(buf, buflen);
+ len = (int *)buf;
+ }
+ if ((nb = read(in, &buf[sizeof(*len)], htonl(*len)-sizeof(*len))) != htonl(*len)-sizeof(*len)) {
+ if (nb == 0)
+ fprintf(stderr, "read error: end of file\n");
+ else if (nb < 0)
+ fprintf(stderr, "read error: %s\n", strerror(errno));
+ else
+ fprintf(stderr, "read error: expected %d bytes, got %d\n",
+ (int)(htonl(*len)-sizeof(*len)), nb);
+ exit(1);
+ }
+ if (htonl(*len) > sizeof(__pmPDUHdr) - sizeof(*len) + sizeof(__pmTimeval) + sizeof(int)) {
+ sts = write(out, buf, htonl(*len));
+ if (sts != htonl(*len)) {
+ fprintf(stderr, "Error: write %d returns %d\n", htonl(*len), sts);
+ exit(1);
+ }
+ }
+ else
+ fprintf(stderr, "Skip mark @ byte %d into input\n", (int)(lseek(in, 0, SEEK_CUR) - sizeof(*len)));
+ }
+ return 0;
+}
diff --git a/qa/src/t_fetch.c b/qa/src/t_fetch.c
new file mode 100644
index 0000000..7c8d6f2
--- /dev/null
+++ b/qa/src/t_fetch.c
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/* Timeout test for FETCH PDUs in text mode.
+*/
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#define StuffDom(metric, newdom) (((__pmID_int *)&(metric))->domain = (newdom))
+
+#define NMETRICS 3
+
+int
+main(int argc, char *argv[])
+{
+ pmID *ids;
+ pmResult *res;
+ int i, j;
+ int nm;
+ int s;
+ long dom;
+ char *end;
+
+ __pmSetProgname(argv[0]);
+
+ if (argc < 2) {
+ fprintf(stderr, "Usage: %s domain ...\n", pmProgname);
+ exit(1);
+ }
+ if ((ids = (pmID *)malloc((argc - 1) * NMETRICS * sizeof(pmID))) == (pmID *)0) {
+ perror("pmID malloc");
+ exit(1);
+ }
+ nm = 0;
+ for (i = 1; i < argc; i++) {
+ dom = strtol(argv[i], &end, 10);
+ if (*end != '\0') {
+ fprintf(stderr, "'%s' is not a numeric domain\n", argv[1]);
+ exit(1);
+ }
+ for (j = 0; j < NMETRICS; j++) {
+ ids[nm] = 1234;
+ StuffDom(ids[nm], dom);
+ nm++;
+ }
+
+ }
+
+ if ((s = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext(..., \"localhost\"): %s\n",
+ pmErrStr(s));
+ exit(1);
+ }
+
+ if ((s = pmFetch(nm, ids, &res)) < 0) {
+ fprintf(stderr, "pmFetch: %s\n", pmErrStr(s));
+ exit(1);
+ }
+ else {
+ for (i = 0; i < nm; i++) {
+ if (res->vset[0]->numval == 0)
+ fprintf(stderr, "pmid[%d]: No value(s) returned!\n", i);
+ else if (res->vset[0]->numval < 0)
+ fprintf(stderr, "pmid[%d]: %s\n", i, pmErrStr(res->vset[0]->numval));
+ }
+ }
+
+ exit(0);
+}
diff --git a/qa/src/tabort.c b/qa/src/tabort.c
new file mode 100644
index 0000000..a99b5e1
--- /dev/null
+++ b/qa/src/tabort.c
@@ -0,0 +1,31 @@
+#include <pcp/trace.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+ int sts;
+
+ if ((sts = pmtracebegin("foo")) < 0) {
+ fprintf(stderr, "pmtracebegin failed: %s\n", pmtraceerrstr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmtraceabort("foo")) < 0) {
+ fprintf(stderr, "pmtraceabort failed: %s\n", pmtraceerrstr(sts));
+ exit(1);
+ }
+
+ if ((sts = pmtracebegin("foo")) < 0) {
+ fprintf(stderr, "pmtraceabort isn't working properly!\n");
+ exit(1);
+ }
+
+ if ((sts = pmtraceend("foo")) < 0) {
+ fprintf(stderr, "pmtraceend failed: %s\n", pmtraceerrstr(sts));
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/template.c b/qa/src/template.c
new file mode 100644
index 0000000..0cf21f1
--- /dev/null
+++ b/qa/src/template.c
@@ -0,0 +1,316 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ int mode = PM_MODE_INTERP; /* mode for archives */
+ char *configfile = NULL;
+ char *start = NULL;
+ char *finish = NULL;
+ char *align = NULL;
+ char *offset = NULL;
+ char *logfile = NULL;
+ pmLogLabel label; /* get hostname for archives */
+ int zflag = 0; /* for -z */
+ char *tz = NULL; /* for -Z timezone */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *pmnsfile = PM_NS_DEFAULT;
+ int samples = -1;
+ char *endnum;
+ struct timeval delta = { 1, 0 };
+ struct timeval startTime;
+ struct timeval endTime;
+ struct timeval appStart;
+ struct timeval appEnd;
+ struct timeval appOffset;
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:A:c:D:h:l:Ln:O:s:S:t:T:U:zZ:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+#ifdef BUILD_STANDALONE
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+#else
+ fprintf(stderr, "%s: at most one of -a and -h allowed\n", pmProgname);
+#endif
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+ case 'A': /* time alignment */
+ align = optarg;
+ break;
+
+ case 'c': /* configfile */
+ if (configfile != NULL) {
+ fprintf(stderr, "%s: at most one -c option allowed\n", pmProgname);
+ errflag++;
+ }
+ configfile = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+#ifdef BUILD_STANDALONE
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+#else
+ fprintf(stderr, "%s: at most one of -a and -h allowed\n", pmProgname);
+#endif
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+#ifdef BUILD_STANDALONE
+ case 'L': /* LOCAL, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+ errflag++;
+ }
+ host = NULL;
+ type = PM_CONTEXT_LOCAL;
+ putenv("PMDA_LOCAL_PROC="); /* if proc PMDA needed */
+ putenv("PMDA_LOCAL_SAMPLE="); /* if sampledso PMDA needed */
+ break;
+#endif
+
+ case 'l': /* logfile */
+ logfile = optarg;
+ break;
+
+ case 'n': /* alternative name space file */
+ pmnsfile = optarg;
+ break;
+
+ case 'O': /* sample offset time */
+ offset = optarg;
+ break;
+
+ case 's': /* sample count */
+ samples = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0' || samples < 0) {
+ fprintf(stderr, "%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case 'S': /* start time */
+ start = optarg;
+ break;
+
+ case 't': /* change update interval */
+ if (pmParseInterval(optarg, &delta, &endnum) < 0) {
+ fprintf(stderr, "%s: illegal -t argument\n", pmProgname);
+ fputs(endnum, stderr);
+ free(endnum);
+ errflag++;
+ }
+ break;
+
+ case 'T': /* terminate time */
+ finish = optarg;
+ break;
+
+ case 'U': /* uninterpolated archive log */
+ if (type != 0) {
+#ifdef BUILD_STANDALONE
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -U allowed\n", pmProgname);
+#else
+ fprintf(stderr, "%s: at most one of -a, -h and -U allowed\n", pmProgname);
+#endif
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ mode = PM_MODE_FORW;
+ host = optarg;
+ break;
+
+ case 'z': /* timezone from host */
+ if (tz != NULL) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ zflag++;
+ break;
+
+ case 'Z': /* $TZ timezone */
+ if (zflag) {
+ fprintf(stderr, "%s: at most one of -Z and/or -z allowed\n", pmProgname);
+ errflag++;
+ }
+ tz = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (zflag && type == 0) {
+ fprintf(stderr, "%s: -z requires an explicit -a, -h or -U option\n", pmProgname);
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options] [metrics ...]\n\
+\n\
+Options:\n\
+ -a archive metrics source is a PCP log archive\n\
+ -A align align sample times on natural boundaries\n\
+ -c configfile file to load configuration from\n\
+ -h host metrics source is PMCD on host\n\
+ -l logfile redirect diagnostics and trace output\n"
+#ifdef BUILD_STANDALONE
+" -L use local context instead of PMCD\n"
+#endif
+" -n pmnsfile use an alternative PMNS\n\
+ -O offset initial offset into the time window\n\
+ -s samples terminate after this many samples\n\
+ -S starttime start of the time window\n\
+ -t interval sample interval [default 1.0 seconds]\n\
+ -T endtime end of the time window\n\
+ -z set reporting timezone to local time of metrics source\n\
+ -Z timezone set reporting timezone\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (logfile != NULL) {
+ __pmOpenLog(pmProgname, logfile, stderr, &sts);
+ if (sts < 0) {
+ fprintf(stderr, "%s: Could not open logfile \"%s\"\n", pmProgname, logfile);
+ }
+ }
+
+ if (pmnsfile != PM_NS_DEFAULT && (sts = pmLoadNameSpace(pmnsfile)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname,
+ pmnsfile, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_HOST;
+ (void)gethostname(local, MAXHOSTNAMELEN);
+ local[MAXHOSTNAMELEN-1] = '\0';
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if (mode != PM_MODE_INTERP) {
+ if ((sts = pmSetMode(mode, &label.ll_start, 0)) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ startTime = label.ll_start;
+ if ((sts = pmGetArchiveEnd(&endTime)) < 0) {
+ endTime.tv_sec = INT_MAX;
+ endTime.tv_usec = 0;
+ fflush(stdout);
+ fprintf(stderr, "%s: Cannot locate end of archive: %s\n",
+ pmProgname, pmErrStr(sts));
+ fprintf(stderr, "\nWARNING: This archive is sufficiently damaged that it may not be possible to\n");
+ fprintf(stderr, " produce complete information. Continuing and hoping for the best.\n\n");
+ fflush(stderr);
+ }
+ }
+ else {
+ gettimeofday(&startTime, NULL);
+ endTime.tv_sec = INT_MAX;
+ }
+
+ if (zflag) {
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ if (type == PM_CONTEXT_ARCHIVE)
+ printf("Note: timezone set to local timezone of host \"%s\" from archive\n\n",
+ label.ll_hostname);
+ else
+ printf("Note: timezone set to local timezone of host \"%s\"\n\n", host);
+ }
+ else if (tz != NULL) {
+ if ((tzh = pmNewZone(tz)) < 0) {
+ fprintf(stderr, "%s: Cannot set timezone to \"%s\": %s\n",
+ pmProgname, tz, pmErrStr(tzh));
+ exit(1);
+ }
+ printf("Note: timezone set to \"TZ=%s\"\n\n", tz);
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+ while (optind < argc) {
+ printf("extra argument[%d]: %s\n", optind, argv[optind]);
+ optind++;
+ }
+
+ if (align != NULL && type != PM_CONTEXT_ARCHIVE) {
+ fprintf(stderr, "%s: -A option only supported for PCP archives, alignment request ignored\n",
+ pmProgname);
+ align = NULL;
+ }
+
+ sts = pmParseTimeWindow(start, finish, align, offset, &startTime,
+ &endTime, &appStart, &appEnd, &appOffset,
+ &endnum);
+
+ if (sts < 0) {
+ fprintf(stderr, "%s: illegal time window specification\n%s", pmProgname, endnum);
+ exit(1);
+ }
+
+ while (samples == -1 || samples-- > 0) {
+ /* put real stuff here */
+ break;
+ }
+
+ return 0;
+}
diff --git a/qa/src/test_mmv.py b/qa/src/test_mmv.py
new file mode 120000
index 0000000..e407799
--- /dev/null
+++ b/qa/src/test_mmv.py
@@ -0,0 +1 @@
+test_mmv.python \ No newline at end of file
diff --git a/qa/src/test_mmv.python b/qa/src/test_mmv.python
new file mode 100755
index 0000000..255d5c3
--- /dev/null
+++ b/qa/src/test_mmv.python
@@ -0,0 +1,109 @@
+""" Test creation of PCP MMV metrics via the pcp.mmv python module """
+#
+# Copyright (C) 2013 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import sys
+import unittest
+from pcp import mmv, pmapi
+from cpmapi import PM_COUNT_ONE, PM_TIME_USEC
+import cmmv
+
+class TestSequenceFunctions(unittest.TestCase):
+ """ Test driver class for pcp.mmv module verification """
+
+ def test_mmv(self):
+ """ Worker which creates mmv instances, indoms, metrics
+ and ties 'em all together via the MemoryMappedValues
+ class.
+ Once executed, this test create an MMV file that can
+ be queried using pmdammv (by a PCP test driver script).
+ """
+
+ instances = [mmv.mmv_instance(0, "zero"), mmv.mmv_instance(1, "hero")]
+ woodlands = [mmv.mmv_instance(0, "bird"), mmv.mmv_instance(1, "tree"),
+ mmv.mmv_instance(2, "eggs"), mmv.mmv_instance(3, "frog")]
+ indoms = [mmv.mmv_indom(serial = 1,
+ shorttext = "We can be heroes",
+ helptext = "Set of instances from zero to hero"),
+ mmv.mmv_indom(serial = 2)]
+ indoms[0].set_instances(instances)
+ indoms[1].set_instances(woodlands)
+ metrics = [mmv.mmv_metric(name = "counter",
+ item = 1,
+ typeof = cmmv.MMV_TYPE_U32,
+ semantics = cmmv.MMV_SEM_COUNTER,
+ dimension = pmapi.pmUnits(0,0,1,0,0,PM_COUNT_ONE),
+ shorttext = "Example counter metric",
+ helptext = "Yep, a test counter metric"),
+ mmv.mmv_metric(name = "instant",
+ item = 2,
+ typeof = cmmv.MMV_TYPE_I32,
+ semantics = cmmv.MMV_SEM_INSTANT,
+ dimension = pmapi.pmUnits(0,0,0,0,0,0),
+ shorttext = "Example instant metric",
+ helptext = "Yep, a test instantaneous metric"),
+ mmv.mmv_metric(name = "indom",
+ item = 3,
+ typeof = cmmv.MMV_TYPE_U32,
+ semantics = cmmv.MMV_SEM_DISCRETE,
+ dimension = pmapi.pmUnits(0,0,0,0,0,0),
+ indom = 1),
+ mmv.mmv_metric(name = "interval",
+ item = 4,
+ typeof = cmmv.MMV_TYPE_ELAPSED,
+ semantics = cmmv.MMV_SEM_COUNTER,
+ dimension = pmapi.pmUnits(0,1,0,0,PM_TIME_USEC,0),
+ indom = 2),
+ mmv.mmv_metric(name = "string",
+ item = 5,
+ typeof = cmmv.MMV_TYPE_STRING,
+ dimension = pmapi.pmUnits(0,0,0,0,0,0),
+ semantics = cmmv.MMV_SEM_INSTANT),
+ mmv.mmv_metric(name = "strings",
+ item = 6,
+ typeof = cmmv.MMV_TYPE_STRING,
+ semantics = cmmv.MMV_SEM_INSTANT,
+ dimension = pmapi.pmUnits(0,0,0,0,0,0),
+ indom = 1,
+ shorttext = "test string metrics",
+ helptext = "Yep, string metric with instances")]
+
+ values = mmv.MemoryMappedValues("test")
+ self.assertTrue(values != None)
+ self.assertTrue(values.started() == 0)
+ values.add_indoms(indoms)
+ self.assertTrue(values.started() == 0)
+ values.add_metrics(metrics)
+ self.assertTrue(values.started() == 0)
+
+ values.start()
+ self.assertTrue(values.started() == 1)
+ caliper = values.lookup_interval_start("interval", "eggs")
+ self.assertTrue(caliper != None)
+ instant = values.lookup_mapping("instant", None)
+ self.assertTrue(instant != None)
+ values.add(instant, 41)
+ values.inc(instant)
+ values.interval_end(caliper)
+ values.stop()
+ self.assertTrue(values.started() == 0)
+
+ # verification of the metrics values, semantics, indoms
+ # and so on is performed in conjunction with pmdammv in
+ # a driver script in the pcp/qa sources
+
+if __name__ == '__main__':
+
+ sys.exit(unittest.main())
+
diff --git a/qa/src/test_pcp.py b/qa/src/test_pcp.py
new file mode 120000
index 0000000..8ad37ac
--- /dev/null
+++ b/qa/src/test_pcp.py
@@ -0,0 +1 @@
+test_pcp.python \ No newline at end of file
diff --git a/qa/src/test_pcp.python b/qa/src/test_pcp.python
new file mode 100755
index 0000000..e165705
--- /dev/null
+++ b/qa/src/test_pcp.python
@@ -0,0 +1,481 @@
+#
+# Copyright (C) 2012-2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import sys
+import unittest
+from pcp import pmapi
+import cpmapi as api
+
+# Utilities
+
+def dump_seq(name_p, seq_p):
+ print(name_p)
+ for text in seq_p:
+ if type(text) == type(int()) or type(text) == type(long()):
+ print(hex(text))
+ else:
+ print(text)
+ print('')
+
+def dump_array_ptrs(name_p, arr_p):
+ print(name_p)
+ for i in xrange(len(arr_p)):
+ if (i > 0):
+ print(" ", arr_p[i].contents)
+ else:
+ print(arr_p[i].contents)
+
+def dump_array(name_p, arr_p):
+ print(name_p)
+ for i in xrange(len(arr_p)):
+ if (i > 0):
+ print(" ", hex(arr_p[i]))
+ else:
+ print(hex(arr_p[i]))
+
+ARCHIVE = "" # For testing either localhost or archive
+
+TRAVERSE_CALLBACK_COUNT = 0 # callback for pmTraversePMNS
+
+def traverse_callback(arg):
+ global TRAVERSE_CALLBACK_COUNT
+ TRAVERSE_CALLBACK_COUNT += 1
+
+def test_pcp(self):
+
+ if (ARCHIVE == ""):
+ print('Running as localhost')
+ ctx = pmapi.pmContext(api.PM_CONTEXT_HOST, "localhost")
+ self.local_type = True
+ else:
+ print('Running as archive', ARCHIVE)
+ ctx = pmapi.pmContext(api.PM_CONTEXT_ARCHIVE, ARCHIVE)
+ self.archive_type = True
+
+ # pmGetContextHostName
+ hostname = ctx.pmGetContextHostName()
+ print("pmGetContextHostName:", hostname)
+ self.assertTrue(len(hostname) >= 0)
+
+ # pmParseMetricSpec
+ source = 'localhost'
+ try:
+ (rsltp, errmsg) = ctx.pmParseMetricSpec("kernel.all.load", 0, source)
+ print("pmParseMetricSpec:", rsltp.contents.source)
+ self.assertTrue(rsltp.contents.source == source)
+ except pmapi.pmErr as error:
+ print("pmParseMetricSpec error: ", error)
+
+ # Get number of cpus
+ # pmLookupName
+ try:
+ self.ncpu_id = ctx.pmLookupName(("hinv.ncpu", "kernel.all.load", "hinv.machine"))
+ print("pmLookupName:", self.ncpu_id)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ self.assertTrue(False)
+
+ # pmIDStr
+ print("pmIDStr:", ctx.pmIDStr(self.ncpu_id[0]))
+ self.assertTrue(ctx.pmIDStr(self.ncpu_id[0]).count(".") > 1)
+
+ # pmLookupDesc
+ try:
+ descs = ctx.pmLookupDescs(self.ncpu_id)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ self.assertTrue(False)
+
+ # pmFetch
+ try:
+ results = ctx.pmFetch(self.ncpu_id)
+ print("pmFetch:", results)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmFetch: ", error)
+ self.assertTrue(False)
+
+ # pmExtractValue
+ atom = ctx.pmExtractValue(results.contents.get_valfmt(0),
+ results.contents.get_vlist(0, 0),
+ descs[0].contents.type,
+ api.PM_TYPE_U32)
+ self.assertTrue(atom.ul > 0)
+ print("pmExtractValue:", atom.ul)
+ atom = ctx.pmExtractValue(results.contents.get_valfmt(0),
+ results.contents.get_vlist(2, 0),
+ descs[0].contents.type,
+ api.PM_TYPE_U32)
+ machine_u32 = atom.ll
+ atom = ctx.pmExtractValue(results.contents.get_valfmt(2),
+ results.contents.get_vlist(2, 0),
+ descs[2].contents.type,
+ api.PM_TYPE_STRING)
+ machine_vp = atom.vp
+ self.assertTrue(machine_u32 != machine_vp)
+ self.assertTrue(type(atom.cp) == type(''))
+
+ # pmGetChildren
+ if not self.archive_type:
+ gcs = ctx.pmGetChildren("kernel")
+ print("pmGetChildren:", gcs)
+ self.assertTrue(len(gcs) >=2)
+
+ # pmGetChildrenStatus
+ gcs = ctx.pmGetChildrenStatus("kernel")
+ print("pmGetChildrenStatus:", gcs)
+ self.assertTrue(len(gcs[0]) == len(gcs[1]))
+
+ # pmGetPMNSLocation
+ index = ctx.pmGetPMNSLocation()
+ print("pmGetPMNSLocation:", index)
+ self.assertTrue(index == api.PMNS_ARCHIVE or
+ index == api.PMNS_LOCAL or
+ index == api.PMNS_REMOTE)
+
+ # pmTraversePMNS
+ ctx.pmTraversePMNS("kernel", traverse_callback)
+ print("pmTraversePMNS:", TRAVERSE_CALLBACK_COUNT)
+ self.assertTrue(TRAVERSE_CALLBACK_COUNT > 0)
+
+ # pmLookupName
+ try:
+ badid = ctx.pmLookupName("A_BAD_METRIC")
+ self.assertTrue(False)
+ except pmapi.pmErr as error:
+ print("pmLookupName:", error)
+ self.assertTrue(True)
+
+ metrics = ("no.such.metric.name", "sample.bin")
+ try:
+ pmidlist = ctx.pmLookupName(metrics, relaxed = 1)
+ print("pmLookupName relaxed mode", metrics)
+ self.assertTrue(len(pmidlist) == 2)
+ self.assertTrue(pmidlist[0] == api.PM_ID_NULL)
+ self.assertTrue(pmidlist[1] != api.PM_ID_NULL)
+ except pmapi.pmErr as error:
+ print("pmLookupName relaxed mode:", error)
+ self.assertTrue(False)
+
+ metrics = ("kernel.all.load", "sample.bin",
+ "kernel.percpu.cpu.sys", "mem.freemem")
+ try:
+ self.metric_ids = ctx.pmLookupName(metrics)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmLookupName:", error)
+ self.assertTrue(False)
+ dump_array("pmLookupName", self.metric_ids)
+ self.assertTrue(len(self.metric_ids) == 4)
+
+ for i in xrange(len(metrics)):
+ # pmNameAll
+ nameall = ctx.pmNameAll(self.metric_ids[i])
+ print("pmNameAll:", nameall[0])
+ self.assertTrue(nameall[0] == metrics[i])
+
+ # pmNameID
+ name = ctx.pmNameID(self.metric_ids[i])
+ print("pmNameID:", name)
+ self.assertTrue(name == metrics[i])
+
+ # pmLookupDesc
+ descs = ctx.pmLookupDescs(self.metric_ids[i])
+ dump_array_ptrs("pmLookupDesc", descs)
+ self.assertTrue(len(descs) == 1)
+
+ descs = ctx.pmLookupDescs(self.metric_ids)
+ if self.local_type:
+ # pmGetInDom - sample.bin
+ (inst, name) = ctx.pmGetInDom(descs[1])
+ print("pmGetInDom:", name)
+ self.assertTrue(len(inst) == 9 and len(name) == 9)
+ else:
+ # pmGetInDomArchive - sample.bin
+ (inst, name) = ctx.pmGetInDomArchive(descs[1])
+ print("pmGetInDomArchive:", name)
+ self.assertTrue(len(inst) == 9 and len(name) == 9)
+
+ # pmInDomStr
+ indomstr = ctx.pmInDomStr(descs[0])
+ print("pmInDomStr:", indomstr)
+ self.assertTrue(indomstr.count(".") >= 1)
+
+ # pmDelProfile
+ try:
+ ctx.pmDelProfile(descs[0], None)
+ print("pmDelProfile: ok")
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmDelProfile: ", error)
+ self.assertTrue(False)
+
+ if self.local_type:
+ # pmLookupInDom
+ inst1 = ctx.pmLookupInDom(descs[0], "1 minute")
+ print("pmLookupInDom:", inst1)
+ else:
+ # pmLookupInDomArchive
+ inst1 = ctx.pmLookupInDomArchive(descs[0], "1 minute")
+ print("pmLookupInDomArchive:", inst1)
+ self.assertTrue(inst1 >= 0)
+
+ if self.local_type:
+ # pmNameInDom
+ instname = ctx.pmNameInDom(descs[0], inst1)
+ print("pmNameInDom:", instname)
+ else:
+ # pmNameInDomArchive
+ instname = ctx.pmNameInDomArchive(descs[0], inst1)
+ print("pmNameInDomArchive:", instname)
+ self.assertTrue(instname == "1 minute")
+
+ try:
+ # pmLookupInDomText
+ ctx.pmLookupInDomText(descs[0])
+ self.assertTrue(False)
+ except pmapi.pmErr as error:
+ print("pmLookupInDomText:", error)
+ self.assertTrue(True)
+
+ # pmAddProfile
+ try:
+ ctx.pmAddProfile(descs[0], inst1)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmAddProfile: ", error)
+ self.assertTrue(False)
+
+ inst = 0
+ try:
+ # pmLookupInDom
+ inst = ctx.pmLookupInDom(descs[0], "gg minute")
+ self.assertTrue(False)
+ except pmapi.pmErr as error:
+ print("pmLookupInDom:", error)
+ self.assertTrue(True)
+
+ if self.local_type:
+ # pmLookupInDom
+ inst5 = ctx.pmLookupInDom(descs[0], "5 minute")
+ inst15 = ctx.pmLookupInDom(descs[0], "15 minute")
+ print("pmLookupInDom:", inst5, inst15)
+ else:
+ # pmLookupInDomArchive
+ inst5 = ctx.pmLookupInDomArchive(descs[0], "5 minute")
+ inst15 = ctx.pmLookupInDomArchive(descs[0], "15 minute")
+ print("pmLookupInDomArchive:", inst5, inst15)
+ self.assertTrue(inst15 >= 0)
+
+ # pmAddProfile
+ try:
+ ctx.pmAddProfile(descs[0], inst15)
+ print("pmAddProfile:")
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmAddProfile: ", error)
+ self.assertTrue(False)
+
+ # pmParseInterval
+ try:
+ (delta, errmsg) = ctx.pmParseInterval("3 seconds")
+ print("pmParseInterval:", delta)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmFetch: ", error)
+ self.assertTrue(False)
+
+ # pmFetch
+ try:
+ results = ctx.pmFetch(self.metric_ids)
+ print("pmFetch:", results)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmFetch: ", error)
+ self.assertTrue(False)
+
+ # pmSortInstances
+ try:
+ ctx.pmSortInstances(results)
+ print("pmSortInstances: ok")
+ except pmapi.pmErr as error:
+ print("pmSortInstances: ", error)
+ self.assertTrue(False)
+
+ # pmStore
+ try:
+ ctx.pmStore(results)
+ self.assertTrue(False)
+ except pmapi.pmErr as error:
+ print("pmStore: ", error)
+ self.assertTrue(True)
+
+ for i in xrange(results.contents.numpmid):
+ if (results.contents.get_pmid(i) != self.metric_ids[1]):
+ continue
+ for val in xrange(9):
+ # sample.bin - each instance in turn
+ atom = ctx.pmExtractValue(results.contents.get_valfmt(i),
+ results.contents.get_vlist(i, val),
+ descs[i].contents.type,
+ api.PM_TYPE_FLOAT)
+ print("pmExtractValue", val, atom.f)
+ self.assertTrue(99*(val+1) <= atom.f and atom.f <= 101*(val+1))
+
+ # pmExtractValue
+ for i in xrange(results.contents.numpmid):
+ if (results.contents.get_pmid(i) != self.metric_ids[3]):
+ continue
+ # mem.freemem
+ tmpatom = ctx.pmExtractValue(results.contents.get_valfmt(i),
+ results.contents.get_vlist(i, 0),
+ descs[i].contents.type,
+ api.PM_TYPE_FLOAT)
+ self.assertTrue(tmpatom.f > 0)
+
+ # pmConvScale
+ atom = ctx.pmConvScale(api.PM_TYPE_FLOAT, tmpatom, descs, 3,
+ api.PM_SPACE_MBYTE)
+ print("pmConvScale, integer arg", tmpatom.f, atom.f)
+ self.assertTrue(atom.f > 0)
+ atom = ctx.pmConvScale(api.PM_TYPE_FLOAT, tmpatom, descs, 3,
+ pmapi.pmUnits(1,0,0,api.PM_SPACE_MBYTE,0,0))
+ print("pmConvScale, pmUnits arg", tmpatom.f, atom.f)
+ self.assertTrue(atom.f > 0)
+
+ # pmAtomStr
+ atomstr = ctx.pmAtomStr(atom, api.PM_TYPE_FLOAT)
+ print("pmAtomStr", atomstr)
+
+ # pmtimevalSleep
+ ctx.pmtimevalSleep(delta)
+ print("pmtimevalSleep")
+
+ # pmDupContext
+ context = ctx.pmDupContext()
+ print("pmDupContext", context)
+ self.assertTrue(context >= 0)
+
+ # pmWhichContext
+ try:
+ ctx.pmWhichContext()
+ print("pmWhichContext: ok")
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmWhichContext: ", error)
+ self.assertTrue(False)
+
+ # pmTypeStr
+ typestr = ctx.pmTypeStr(api.PM_TYPE_FLOAT)
+ print("pmTypeStr", typestr)
+ self.assertTrue(typestr == "FLOAT")
+
+ if self.archive_type:
+ # pmSetMode
+ try:
+ ctx.pmSetMode(api.PM_MODE_INTERP, results.contents.timestamp, 0)
+ print("pmSetMode: ok")
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmSetMode: ", error)
+ self.assertTrue(False)
+
+
+ # pmGetArchiveLabel
+ try:
+ loglabel = ctx.pmGetArchiveLabel()
+ print("pmGetArchiveLabel: ok")
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmGetArchiveLabel: ", error)
+ self.assertTrue(False)
+
+ # pmGetArchiveEnd
+ try:
+ tval = ctx.pmGetArchiveEnd()
+ print("pmGetArchiveEnd: ", tval)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmGetArchiveEnd: ", error)
+ self.assertTrue(False)
+
+ # pmPrintValue
+ if not self.archive_type:
+ print("pmPrintValue:")
+ ctx.pmPrintValue(sys.__stdout__, results, descs[0], 0, 0, 8)
+ print('')
+
+ # pmReconnectContext
+ try:
+ ctx.pmReconnectContext()
+ print("pmReconnectContext: ok")
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ print("pmReconnectContext: ", error)
+ self.assertTrue(False)
+
+ # pmRegisterDerived
+ try:
+ ctx.pmRegisterDerived("pcpqa.derivation",
+ "sample.double.bin * delta(sample.double.bin_ctr)")
+ average = ctx.pmLookupName("pcpqa.derivation")
+ descs = ctx.pmLookupDescs(average)
+ results = ctx.pmFetch(average)
+ ctx.pmtimevalSleep(delta)
+ results = ctx.pmFetch(average)
+ atom = ctx.pmExtractValue(results.contents.get_valfmt(0),
+ results.contents.get_vlist(0, 0),
+ descs[0].contents.type,
+ api.PM_TYPE_DOUBLE)
+ self.assertTrue(True)
+ except pmapi.pmErr as error:
+ self.assertTrue(False)
+ try:
+ ctx.pmRegisterDerived("a.bad.expression", "a $ bad @ expression")
+ self.assertTrue(False)
+ except pmapi.pmErr as error:
+ print("pmRegisterDerived: ", ctx.pmDerivedErrStr())
+ self.assertTrue(True)
+
+ # pmFreeResult
+ ctx.pmFreeResult(results)
+ print("pmFreeResult")
+
+ del ctx
+
+class TestSequenceFunctions(unittest.TestCase):
+
+ ncpu_id = []
+ metric_ids = []
+ archive_type = False
+ local_type = False
+
+ def test_context(self):
+ test_pcp(self)
+
+
+if __name__ == '__main__':
+
+ if (len(sys.argv) == 2):
+ ARCHIVE = sys.argv[1]
+ elif (len(sys.argv) > 2):
+ print("Usage: " + sys.argv[0] + " OptionalArchivePath")
+ sys.exit()
+ else:
+ ARCHIVE = ""
+
+ sys.argv[1:] = ()
+
+ STS = unittest.main()
+ sys.exit(STS)
diff --git a/qa/src/test_pcp_getopts.py b/qa/src/test_pcp_getopts.py
new file mode 120000
index 0000000..dc779ed
--- /dev/null
+++ b/qa/src/test_pcp_getopts.py
@@ -0,0 +1 @@
+test_pcp_getopts.python \ No newline at end of file
diff --git a/qa/src/test_pcp_getopts.python b/qa/src/test_pcp_getopts.python
new file mode 100755
index 0000000..776aa92
--- /dev/null
+++ b/qa/src/test_pcp_getopts.python
@@ -0,0 +1,113 @@
+#
+# Copyright (C) 2014 Red Hat.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import sys as system
+from pcp import pmapi
+import cpmapi as c_api
+
+""" Create an options object and set/get everything possible """
+
+options = pmapi.pmOptions("a:bfl:D:h:H:K:LS:T:O:A:s:t:VZ:z?")
+options.pmSetOptionFlags(c_api.PM_OPTFLAG_BOUNDARIES)
+options.pmSetOptionFlags(c_api.PM_OPTFLAG_MULTI)
+options.pmSetOptionFlags(c_api.PM_OPTFLAG_MIXED)
+
+options.pmSetLongOptionHeader("General Options")
+options.pmSetLongOptionAlign()
+options.pmSetLongOptionArchive()
+options.pmSetLongOptionDebug()
+options.pmSetLongOptionGuiMode()
+options.pmSetLongOptionHost()
+options.pmSetLongOptionHostsFile()
+options.pmSetLongOptionSpecLocal()
+options.pmSetLongOptionLocalPMDA()
+options.pmSetLongOptionOrigin()
+options.pmSetLongOptionGuiPort()
+options.pmSetLongOptionStart()
+options.pmSetLongOptionSamples()
+options.pmSetLongOptionFinish()
+options.pmSetLongOptionInterval()
+options.pmSetLongOptionVersion()
+options.pmSetLongOptionTimeZone()
+options.pmSetLongOptionHostZone()
+options.pmSetLongOptionHelp()
+
+# extract any options we can (many are consumed internally) & dump 'em;
+# this test variant focusses on context creation and using time windows.
+
+ctx = c_api.PM_ERR_NOCONTEXT
+try:
+ ctx = pmapi.pmContext.fromOptions(options, system.argv)
+except pmapi.pmUsageErr as usage:
+ usage.message()
+ system.exit(1)
+except pmapi.pmErr as error:
+ print(error)
+
+nonoptions = options.pmNonOptionsFromList(system.argv)
+if nonoptions != None:
+ print("Non-option arguments: %s" % nonoptions)
+
+# for host and archive lists exercise the creation of multiple contexts
+hosts = options.pmGetOptionHosts()
+if hosts != None:
+ print("Host list: %s" % hosts)
+ print("Host %s pmcd.hostname: %s" % (hosts[0], ctx.pmGetContextHostName()))
+ if len(hosts) > 1:
+ typed = c_api.PM_CONTEXT_HOST
+ for index in range(1, len(hosts)):
+ try:
+ ctx = pmapi.pmContext.fromOptions(options, system.argv, typed, index)
+ print("Host %s pmcd.hostname: %s" % (hosts[index], ctx.pmGetContextHostName()))
+ except pmapi.pmErr as error:
+ print("pmContext failed for host %s - %s" %s (hosts[index], error))
+
+archives = options.pmGetOptionArchives()
+if archives != None:
+ print("Archive list: %s" % archives)
+ print("Archive %s hostname: %s" % (archives[0], ctx.pmGetContextHostName()))
+ if len(archives) > 1:
+ typed = c_api.PM_CONTEXT_ARCHIVE
+ for index in range(1, len(archives)):
+ try:
+ ctx = pmapi.pmContext.fromOptions(options, system.argv, typed, index)
+ print("Archive %s hostname: %s" % (archives[index], ctx.pmGetContextHostName()))
+ except pmapi.pmErr as error:
+ print("pmContext failed for archive %s - %s" % (archives[index], error))
+
+timezone = options.pmGetOptionTimezone()
+if timezone != None:
+ print("Timezone: %s" % timezone)
+
+samples = options.pmGetOptionSamples()
+if samples != None:
+ print("Samples: %d" % samples)
+
+interval = options.pmGetOptionInterval()
+if interval != None:
+ print("Interval: %s" % interval)
+
+start = options.pmGetOptionStart()
+if start != None:
+ print("Start: %s" % start)
+
+finish = options.pmGetOptionFinish()
+if finish != None:
+ print("Finish: %s" % finish)
+
+origin = options.pmGetOptionOrigin()
+if origin != None:
+ print("Origin: %s" % origin)
+
+print("Done!")
diff --git a/qa/src/test_pcp_options.py b/qa/src/test_pcp_options.py
new file mode 120000
index 0000000..080f74e
--- /dev/null
+++ b/qa/src/test_pcp_options.py
@@ -0,0 +1 @@
+test_pcp_options.python \ No newline at end of file
diff --git a/qa/src/test_pcp_options.python b/qa/src/test_pcp_options.python
new file mode 100755
index 0000000..2a87249
--- /dev/null
+++ b/qa/src/test_pcp_options.python
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2014 Red Hat.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import sys as system
+from pcp import pmapi
+import cpmapi as c_api
+
+def optionsCB(opt, optarg, index):
+ arg = "'" + opt + "'"
+ if optarg != None:
+ arg = arg + " (" + optarg + ")"
+ arg = arg + " [index=" + str(index) + "]"
+ print("optionsCB: got option '" + arg)
+
+def overrideCB(opt):
+ print("overrideCB: got option '" + str(opt) + "'")
+ if opt == 'b':
+ return 1
+ return 0
+
+""" Create an options object and set/get everything possible """
+
+options = pmapi.pmOptions("a:bfl:D:h:H:K:LS:T:O:A:s:t:VZ:z?")
+options.pmSetShortUsage("[options] parameters ...")
+
+options.pmSetLongOptionHeader("General Options")
+options.pmSetLongOptionAlign()
+options.pmSetLongOptionArchive()
+options.pmSetLongOptionDebug()
+options.pmSetLongOptionGuiMode()
+options.pmSetLongOptionHost()
+options.pmSetLongOptionHostsFile()
+options.pmSetLongOptionSpecLocal()
+options.pmSetLongOptionLocalPMDA()
+options.pmSetLongOptionOrigin()
+options.pmSetLongOptionGuiPort()
+options.pmSetLongOptionStart()
+options.pmSetLongOptionSamples()
+options.pmSetLongOptionFinish()
+options.pmSetLongOptionInterval()
+options.pmSetLongOptionVersion()
+options.pmSetLongOptionTimeZone()
+options.pmSetLongOptionHostZone()
+options.pmSetLongOptionHelp()
+
+options.pmSetLongOptionHeader("Test Options")
+options.pmSetLongOption("force", 0, 'f', '', "force some behaviour")
+options.pmSetLongOption("list", 1, 'l', "FILE", "open a list file")
+options.pmSetLongOptionText("")
+options.pmSetLongOptionText("The parameter parameter is not optional.")
+
+options.pmSetOptionCallback(optionsCB)
+options.pmSetOverrideCallback(overrideCB)
+
+# parse options, extract values
+if c_api.pmGetOptionsFromList(system.argv) != 0:
+ c_api.pmUsageMessage()
+ system.exit(1)
+
+# extract any options we can (many are consumed internally) & dump
+hosts = options.pmGetOptionHosts()
+if hosts != None:
+ print("Host list: %s" % hosts)
+
+archives = options.pmGetOptionArchives()
+if archives != None:
+ print("Archive list: %s" % archives)
+
+timezone = options.pmGetOptionTimezone()
+if timezone != None:
+ print("Timezone: %s" % timezone)
+
+samples = options.pmGetOptionSamples()
+if samples != None:
+ print("Samples: %d" % samples)
+
+interval = options.pmGetOptionInterval()
+if interval != None:
+ print("Interval: %s" % interval)
+
+nonoptions = options.pmNonOptionsFromList(system.argv)
+if nonoptions != None:
+ print("Non-option arguments: %s" % nonoptions)
+
+print("Done!")
diff --git a/qa/src/test_pcp_time.py b/qa/src/test_pcp_time.py
new file mode 120000
index 0000000..f17979c
--- /dev/null
+++ b/qa/src/test_pcp_time.py
@@ -0,0 +1 @@
+test_pcp_time.python \ No newline at end of file
diff --git a/qa/src/test_pcp_time.python b/qa/src/test_pcp_time.python
new file mode 100755
index 0000000..aa18e6f
--- /dev/null
+++ b/qa/src/test_pcp_time.python
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2014 Red Hat.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+""" Exercise the pmCtime and pmLocaltime interfaces """
+
+from pcp import pmapi
+
+""" Create a live PMAPI context, set as UTC and report time """
+context = pmapi.pmContext()
+context.pmNewZone("UTC")
+
+# seconds-since-epoch for: "Mon Feb 3 15:46:19 2014 UTC"
+sample_time_i = 1391402779 # integer
+sample_time_f = 1391402779.0 # float
+
+print("pmLocaltime from int: %s" % str(context.pmLocaltime(sample_time_i)))
+print("pmLocaltime from float: %s" % context.pmLocaltime(sample_time_f))
+
+print("pmCtime from int: %s" % str(context.pmCtime(sample_time_i)).rstrip())
+print("pmCtime from float: %s" % str(context.pmCtime(sample_time_f)).rstrip())
+
+print("pmWhichZone: %s" % str(context.pmWhichZone()))
diff --git a/qa/src/test_pmcc.py b/qa/src/test_pmcc.py
new file mode 120000
index 0000000..9ed0d74
--- /dev/null
+++ b/qa/src/test_pmcc.py
@@ -0,0 +1 @@
+test_pmcc.python \ No newline at end of file
diff --git a/qa/src/test_pmcc.python b/qa/src/test_pmcc.python
new file mode 100644
index 0000000..cc0be3a
--- /dev/null
+++ b/qa/src/test_pmcc.python
@@ -0,0 +1,140 @@
+""" Test metric value extraction/reporting using the pcp.pmcc module """
+#
+# Copyright (C) 2013-2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import unittest
+from pcp import pmcc, pmapi
+
+CPU_METRICS = [ "kernel.all.cpu.sys", "kernel.all.cpu.user",
+ "kernel.all.cpu.nice", "kernel.all.cpu.idle", ]
+MEM_METRICS = [ "mem.physmem", "mem.freemem", ]
+DISK_METRICS = [ "disk.all.read", "disk.all.write", "disk.dev.read", ]
+
+class TestPrinter(pmcc.MetricGroupPrinter):
+ """ Report latest values from group manager """
+
+ def unavailable(self, metric):
+ """ Determine whether metric has values for rate conversion """
+ if metric.netValues == None or len(metric.netValues) == 0:
+ return 1
+ if metric.netPrevValues == None or len(metric.netPrevValues) == 0:
+ return 1
+ return 0
+
+ def cpu_print(self, group):
+ """ Report on processor metric group """
+ ticks = {}
+ total = 0.0
+ for name in CPU_METRICS:
+ metric = group[name]
+ if self.unavailable(metric):
+ ticks.update({ name : None })
+ continue
+ # metric.value is the result from pmFetch
+ # metric.netValues is (inst, name, value) from computeValues
+ values = dict(map(lambda x: (x[1], x[2]), metric.netValues))
+ prevs = dict(map(lambda x: (x[1], x[2]), metric.netPrevValues))
+ inst_val = reduce(lambda x, y: x + y,
+ map(lambda x: values[x] - prevs[x], values.keys()))
+ ticks.update({ name : inst_val })
+ total += inst_val
+ for name in CPU_METRICS:
+ if ticks[name] != None:
+ print(" ", name, round(ticks[name] / total * 100, 2), "%")
+ else:
+ print(" ", name, "? %") # no value, first sample usually
+
+ def mem_print(self, group):
+ """ Report on memory metric group """
+ for name in MEM_METRICS:
+ metric = group[name]
+ values = dict(map(lambda x: (x[1], x[2]), metric.netValues))
+
+ for inst_name in values.keys():
+ inst_val = values[inst_name]
+ unit_str = metric.ctx.pmUnitsStr(metric.desc.contents.units)
+ print(" ", name, inst_val, unit_str)
+
+ def disk_print(self, group):
+ """ Report on disk metric group """
+ for name in DISK_METRICS:
+ metric = group[name]
+ values = dict(map(lambda x: (x[1], x[2]), metric.netValues))
+ for inst_name in values.keys():
+ inst_val = values[inst_name]
+ unit_str = metric.ctx.pmUnitsStr(metric.desc.contents.units)
+ print(" ", name, inst_name, inst_val, unit_str)
+
+ def report(self, manager):
+ """ Overrides the base class report, called after each fetch """
+ self.cpu_print(manager["cpu"])
+ self.mem_print(manager["mem"])
+ self.disk_print(manager["disk"])
+
+
+class TestOptions(pmapi.pmOptions):
+ """ Setup a command line option processing object for the test """
+
+ def __init__(self):
+ pmapi.pmOptions.__init__(self, "A:a:D:h:O:S:s:T:t:VZ:z?")
+ self.pmSetLongOptionHeader("General options")
+ self.pmSetLongOptionAlign()
+ self.pmSetLongOptionArchive()
+ self.pmSetLongOptionDebug()
+ self.pmSetLongOptionHost()
+ self.pmSetLongOptionOrigin()
+ self.pmSetLongOptionStart()
+ self.pmSetLongOptionSamples()
+ self.pmSetLongOptionFinish()
+ self.pmSetLongOptionInterval()
+ self.pmSetLongOptionVersion()
+ self.pmSetLongOptionTimeZone()
+ self.pmSetLongOptionHostZone()
+ self.pmSetLongOptionHelp()
+
+class TestConvenienceClasses(unittest.TestCase):
+ """
+ Test driver class for pcp.pmcc module verification
+ """
+
+ def test_context(self):
+ """ Create a metric group manager, add some groups,
+ then cycle, fetching and printing, depending on
+ command line arguments presented.
+ """
+ try:
+ manager = pmcc.MetricGroupManager.builder(OPTS, ARGS)
+ except pmapi.pmUsageErr as usage:
+ return usage.message()
+ self.assertTrue(manager != None)
+ manager.printer = TestPrinter()
+
+ # Each entry is a MetricGroup
+ manager["cpu"] = CPU_METRICS
+ manager["mem"] = MEM_METRICS
+ manager["disk"] = DISK_METRICS
+
+ # Real QA test starts here ;)
+ return manager.run()
+
+
+if __name__ == '__main__':
+ import sys
+ import copy
+ ARGS = copy.deepcopy(sys.argv)
+ OPTS = TestOptions()
+
+ sys.argv[1:] = ()
+ STS = unittest.main()
+ sys.exit(STS)
diff --git a/qa/src/test_pmi.py b/qa/src/test_pmi.py
new file mode 120000
index 0000000..2b6f1d9
--- /dev/null
+++ b/qa/src/test_pmi.py
@@ -0,0 +1 @@
+test_pmi.python \ No newline at end of file
diff --git a/qa/src/test_pmi.python b/qa/src/test_pmi.python
new file mode 100755
index 0000000..2a22a55
--- /dev/null
+++ b/qa/src/test_pmi.python
@@ -0,0 +1,108 @@
+""" Test creation of a PCP archive with metrics via pcp.pmi module """
+#
+# Copyright (C) 2012-2013 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import sys
+import unittest
+import cpmapi
+from pcp import pmi
+from pcp import pmapi
+
+OUTFILE = ""
+
+def test_pmi(self, path = OUTFILE, inherit = 0):
+ """ Worker utility which creates a pmi object and exercises it """
+
+ hostname = "fu.bar.com"
+ timezone = "UTC"
+
+ print("Writing to new PCP archive:", path)
+ log = pmi.pmiLogImport(path, inherit)
+
+ code = log.pmiSetHostname(hostname)
+ print("pmiSetHostname:", hostname)
+ self.assertTrue(code >= 0)
+
+ code = log.pmiSetTimezone(timezone)
+ print("pmiSetTimezone:", timezone)
+ self.assertTrue(code >= 0)
+
+ pmid = log.pmiID(60, 2, 0)
+ indom = log.pmiInDom(60, 2)
+ units = log.pmiUnits(0, 0, 0, 0, 0, 0)
+
+ # create a metric without instances (hinv.ncpu)
+ code = log.pmiAddMetric("hinv.ncpu", cpmapi.PM_ID_NULL,
+ cpmapi.PM_TYPE_U32, cpmapi.PM_INDOM_NULL,
+ cpmapi.PM_SEM_DISCRETE, units)
+ print("pmiAddMetric: hinv.ncpu")
+ self.assertTrue(code >= 0)
+
+ # give it a value
+ code = log.pmiPutValue("hinv.ncpu", "", "42")
+ print("pmiPutValue: hinv.ncpu")
+ self.assertTrue(code >= 0)
+
+ # create a metric with instances (kernel.all.load)
+ code = log.pmiAddMetric("kernel.all.load", pmid,
+ cpmapi.PM_TYPE_FLOAT, indom,
+ cpmapi.PM_SEM_DISCRETE, units)
+ print("pmiAddMetric: kernel.all.load")
+ self.assertTrue(code >= 0)
+ code = log.pmiAddInstance(indom, "1 minute", 1)
+ print("pmiAddInstance: kernel.all.load[1 minute]")
+ self.assertTrue(code >= 0)
+ code = log.pmiAddInstance(indom, "5 minute", 5)
+ print("pmiAddMetric: kernel.all.load[5 minute]")
+ self.assertTrue(code >= 0)
+ code = log.pmiAddInstance(indom, "15 minute", 15)
+ print("pmiAddMetric: kernel.all.load[15 minute]")
+ self.assertTrue(code >= 0)
+
+ # give them values
+ code = log.pmiPutValue("kernel.all.load", "1 minute", "42.01")
+ print("pmiPutValue: kernel.all.load[1 minute]")
+ self.assertTrue(code >= 0)
+ code = log.pmiPutValue("kernel.all.load", "5 minute", "42.05")
+ print("pmiPutValue: kernel.all.load[5 minute]")
+ self.assertTrue(code >= 0)
+ code = log.pmiPutValue("kernel.all.load", "15 minute", "42.15")
+ print("pmiPutValue: kernel.all.load[15 minute]")
+ self.assertTrue(code >= 0)
+
+ del log
+
+
+class TestSequenceFunctions(unittest.TestCase):
+ """
+ Test driver class for pcp.pmi module verification
+ """
+
+ def test_context(self):
+ """ Wrapper for test_pmi helper which does the heavy lifting """
+ test_pmi(self, OUTFILE)
+
+if __name__ == '__main__':
+
+ if (len(sys.argv) == 2):
+ OUTFILE = sys.argv[1]
+ else:
+ print("Usage: " + sys.argv[0] + " OutFile")
+ sys.exit(1)
+
+ sys.argv[1:] = ()
+
+ STS = unittest.main()
+ sys.exit(STS)
+
diff --git a/qa/src/test_webapi.py b/qa/src/test_webapi.py
new file mode 120000
index 0000000..de1ff65
--- /dev/null
+++ b/qa/src/test_webapi.py
@@ -0,0 +1 @@
+test_webapi.python \ No newline at end of file
diff --git a/qa/src/test_webapi.python b/qa/src/test_webapi.python
new file mode 100644
index 0000000..3ffdd4e
--- /dev/null
+++ b/qa/src/test_webapi.python
@@ -0,0 +1,131 @@
+""" Test creation of a PCP web daemon via the requests module """
+#
+# Copyright (C) 2013-2014 Red Hat.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+import requests, argparse, subprocess, os
+
+parser = argparse.ArgumentParser(description='test_webapi.py pmwebapi check')
+parser.add_argument('--version', action='version', version='1')
+parser.add_argument('--host', required=True)
+parser.add_argument('--port', default=44323)
+args = parser.parse_args()
+
+url = 'http://' + args.host + ':' + str(args.port) + '/'
+devnull = os.open(os.devnull, os.O_RDWR)
+os.unsetenv('http_proxy')
+os.unsetenv('HTTP_PROXY')
+
+# ------------------------------------------------------------------------
+
+# test - create contexts
+req = requests.get(url=url + 'pmapi/context?local=foo')
+resp = req.json()
+ctx_local = resp['context']
+print('Received PM_CONTEXT_LOCAL #' + str(ctx_local))
+
+req = requests.get(url=url + 'pmapi/context?hostname=' + args.host)
+resp = req.json()
+ctx_host = resp['context']
+print('Received PM_CONTEXT_HOST #' + str(ctx_host))
+
+# ------------------------------------------------------------------------
+
+# all these should get an error
+req = requests.get(url=url + 'pmapi/context?archivefile=/dev/null')
+print('bad archive /dev/null response code ' + str(req.status_code))
+
+req = requests.get(url=url + 'pmapi/context?archivefile=../etc/passwd')
+print('bad archive ../etc/passwd response code ' + str(req.status_code))
+
+req = requests.get(url=url + 'pmapi/context?archivefile=../../etc/shadow')
+print('bad archive ../../etc/shadow response code ' + str(req.status_code))
+
+req = requests.get(url=url + 'pmapi/NOSUCHAPI')
+print('command NOSUCHAPI response code ' + str(req.status_code))
+
+req = requests.get(url=url + 'pmapi/NOSUCHCONTEXT/_metric')
+print('context NOSUCHCONTEXT response code ' + str(req.status_code))
+
+req = requests.get(url=url + 'pmapi/0/_metric')
+print('context 0 response code ' + str(req.status_code))
+
+req = requests.get(url=url + 'random_nonpmwebapi_url')
+print('non-pmwebapi response code ' + str(req.status_code))
+
+# ------------------------------------------------------------------------
+
+def test_metric_enumeration(ctx, prefix):
+ ctxurl = url + 'pmapi/' + str(ctx) + '/'
+ if (ctx == ctx_local):
+ procargs = ['pminfo', '-L', '-t']
+ dbg = 'local'
+ else:
+ procargs = ['pminfo', '-h', args.host, '-t']
+ dbg = 'host'
+ if (prefix != ''):
+ procargs.append(prefix)
+ dbg = dbg + '-' + prefix
+ proc = subprocess.Popen(procargs,
+ stdout=subprocess.PIPE,
+ stderr=devnull)
+ num_metrics = 0
+ # f = open('/tmp/pmcd-' + dbg, 'w')
+ while True:
+ line = proc.stdout.readline()
+ if (line == ''):
+ break # eof
+ if line.strip() == '':
+ continue # blank line pminfo sometimes does that
+ if line.find('Error: No PMCD agent') == -1 and \
+ line.find('Not known to the PMDA') == -1:
+ num_metrics = num_metrics + 1
+ # f.write(line)
+ # f.write('Total ' + str(num_metrics) + ' metrics\n')
+ # f.close()
+
+ testprefix='test #'+str(ctx)+' metric '+prefix+'.*'
+ print(testprefix + ' enumeration with pminfo #'+str(num_metrics))
+
+ req = requests.get(url=ctxurl + '_metric' + \
+ ('?prefix='+prefix if prefix != '' else ''))
+ resp = req.json()
+ print(testprefix + ' enumeration with pmwebinfo #'+str(len(resp['metrics'])))
+
+ # web_metrics = 0
+ # f = open('/tmp/webd-' + dbg, 'w')
+ # for metric in resp['metrics']:
+ # web_metrics = web_metrics + 1
+ # f.write(metric['name'] + '\n')
+ # f.write('Total ' + str(web_metrics) + ' metrics\n')
+ # f.close()
+
+ if (abs(len(resp['metrics']) - num_metrics) < 10): # allow some variation
+ print(testprefix + ' enumeration match count PASS')
+ else:
+ print(testprefix + ' enumeration match count FAIL')
+
+
+test_metric_enumeration(ctx_local,'')
+test_metric_enumeration(ctx_host,'')
+test_metric_enumeration(ctx_local,'kernel')
+test_metric_enumeration(ctx_host,'kernel')
+
+# ------------------------------------------------------------------------
+
+# empty _fetch should get an error
+req = requests.get(url=url + 'pmapi/'+str(ctx_host)+'/_fetch')
+print('context #'+str(ctx_host)+' response code ' + str(req.status_code))
+
+# ------------------------------------------------------------------------
+
diff --git a/qa/src/tiny.pmns b/qa/src/tiny.pmns
new file mode 100644
index 0000000..698a703
--- /dev/null
+++ b/qa/src/tiny.pmns
@@ -0,0 +1,15 @@
+
+root {
+ one 0:0:1
+ two 0:0:2
+ buckle
+}
+
+buckle {
+ my
+}
+
+buckle.my {
+ shoe 0:0:3
+}
+
diff --git a/qa/src/torture-eol.c b/qa/src/torture-eol.c
new file mode 100644
index 0000000..e54522f
--- /dev/null
+++ b/qa/src/torture-eol.c
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * torture pmGetArchiveEnd
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+#ifdef IS_MINGW
+int
+truncate(const char *fname, off_t offset)
+{
+ int fd;
+
+ if ((fd = open(fname, O_WRONLY)) < 0)
+ return -1;
+ if (ftruncate(fd, offset) < 0)
+ return -1;
+ close(fd);
+ return 0;
+}
+#endif
+
+static void
+printstamp(struct timeval *tp)
+{
+ static struct tm *tmp;
+
+ tmp = localtime(&tp->tv_sec);
+ printf("%02d:%02d:%02d.%03d", (int)tmp->tm_hour, (int)tmp->tm_min, (int)tmp->tm_sec, (int)(tp->tv_usec/1000));
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int e_sts = 0;
+ int errflag = 0;
+ int ahtype = 0;
+ int verbose = 0;
+ int quick = 0;
+ char *host = NULL; /* pander to gcc */
+ pmResult *result;
+ pmResult *prev = NULL;
+ struct timeval start = { 0,0 };
+ struct timeval end;
+ int tzh;
+ off_t trunc_size = 0;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:t:qv?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (ahtype != 0) {
+ fprintf(stderr, "%s: at most one of -a and/or -h allowed\n", pmProgname);
+ errflag++;
+ }
+ ahtype = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 't': /* truncate */
+ trunc_size = atol(optarg);
+ break;
+
+ case 'q': /* quick */
+ quick = 1;
+ break;
+
+ case 'v': /* verbose */
+ verbose++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind < argc) {
+ fprintf(stderr,
+"Usage: %s options ...\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -t size truncate archive to size bytes\n\
+ -q quick (read last 3 records, not the whole archive)\n\
+ -v verbose\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (ahtype != PM_CONTEXT_ARCHIVE) {
+ fprintf(stderr, "%s: -a is not optional!\n", pmProgname);
+ exit(1);
+ }
+
+ /* truncate if -t specified, _before_ opening archive */
+ if (trunc_size != 0) {
+ if (access(host, W_OK) == 0) {
+ if (truncate(host, trunc_size) != 0) {
+ fprintf(stderr, "%s: file %s exists, but cannot truncate\n",
+ pmProgname, host);
+ exit(1);
+ }
+ }
+ else {
+ char path[MAXPATHLEN];
+
+ sprintf(path, "%s.0", host);
+ if (access(path, W_OK) == 0) {
+ if (truncate(path, trunc_size) != 0) {
+ fprintf(stderr, "%s: file %s exists, but cannot truncate\n",
+ pmProgname, path);
+ exit(1);
+ }
+ }
+ else {
+ fprintf(stderr, "%s: cannot find writeable %s or %s\n",
+ pmProgname, host, path);
+ exit(1);
+ }
+ }
+ }
+
+ if ((sts = pmNewContext(ahtype, host)) < 0) {
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ /* force -z (timezone of archive */
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+
+ sts = pmGetArchiveEnd(&end);
+ if (sts < 0) {
+ printf("pmGetArchiveEnd: %s\n", pmErrStr(sts));
+ }
+ else {
+ if (verbose) {
+ printf("pmGetArchiveEnd time: ");
+ printstamp(&end);
+ printf("\n");
+ }
+ }
+
+ sts = pmSetMode(PM_MODE_BACK, &end, 0);
+ if (sts < 0) {
+ printf("pmSetMode PM_MODE_BACK: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ sts = pmFetchArchive(&result);
+ if (sts < 0) {
+ printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ e_sts = 1;
+ }
+ else {
+ if (verbose) {
+ printf("last result time (direct): ");
+ printstamp(&result->timestamp);
+ printf("\n");
+ }
+ if (result->timestamp.tv_sec != end.tv_sec ||
+ result->timestamp.tv_usec != end.tv_usec) {
+ printf("Mismatch: end=");
+ printstamp(&end);
+ printf(" direct=");
+ printstamp(&result->timestamp);
+ printf("\n");
+ e_sts = 1;
+ }
+ start.tv_sec = result->timestamp.tv_sec;
+ start.tv_usec = result->timestamp.tv_usec;
+ pmFreeResult(result);
+ }
+
+ if (quick && e_sts == 0) {
+ int i;
+ for (i = 0; i < 2; i++) {
+ sts = pmFetchArchive(&result);
+ if (sts >= 0) {
+ start.tv_sec = result->timestamp.tv_sec;
+ start.tv_usec = result->timestamp.tv_usec;
+ pmFreeResult(result);
+ }
+ }
+ }
+ else {
+ /* start from the epoch and move forward */
+ start.tv_sec = 0;
+ start.tv_usec = 0;
+ }
+ sts = pmSetMode(PM_MODE_FORW, &start, 0);
+ if (sts < 0) {
+ printf("pmSetMode PM_MODE_FORW: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ while ((sts = pmFetchArchive(&result)) >= 0) {
+ if (prev != NULL)
+ pmFreeResult(prev);
+ prev = result;
+ }
+ if (verbose) printf("pmFetchArchive: %s\n", pmErrStr(sts));
+ if (prev == NULL) {
+ printf("no results!\n");
+ }
+ else {
+ if (verbose) {
+ printf("last result time (serial): ");
+ printstamp(&prev->timestamp);
+ printf("\n");
+ }
+ if (prev->timestamp.tv_sec != end.tv_sec ||
+ prev->timestamp.tv_usec != end.tv_usec) {
+ printf("Mismatch: end=");
+ printstamp(&end);
+ printf(" serial=");
+ printstamp(&prev->timestamp);
+ printf("\n");
+ e_sts = 1;
+ }
+ pmFreeResult(prev);
+ }
+
+ exit(e_sts);
+}
diff --git a/qa/src/torture_api.c b/qa/src/torture_api.c
new file mode 100644
index 0000000..0fe065f
--- /dev/null
+++ b/qa/src/torture_api.c
@@ -0,0 +1,516 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * main - general purpose exerciser of much of the PMAPI
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int _op; /* number of api operations */
+static int _err; /* number of api errors */
+static int vflag;
+static char *context_name = "localhost";
+static int context_type; /* archive, host or local */
+static char *namespace = PM_NS_DEFAULT;
+static int all_children = 1; /* do the children of "" test */
+static int root_children; /* only do the children of "" test */
+static int dump_metrics; /* just dump the metrics and exit */
+/*
+ * pmns_style == 1 => do PMNS style loading the old way
+ * pmns_style == 2 => try to use the distributed PMNS
+ */
+static int pmns_style = 1;
+
+/* The list of metrics to test out */
+static char *namelist[] = {
+ "disk.all.total",
+ "pmcd",
+ "kernel.all.pswitch",
+ "kernel.all.cpu.user",
+ "kernel.all.cpu.wait.total",
+ "hinv.ncpu",
+ "pmcd.control",
+ "sampledso.aggregate.hullo",
+ "sample.seconds",
+ "sample.colour",
+ "sample.longlong",
+ "bozo.the.clown"
+};
+
+#define MAXNAMES (sizeof(namelist)/sizeof(char*))
+
+
+typedef struct name_status {
+ char *name;
+ int status;
+}name_status;
+
+static int
+compar_str(const void *a, const void *b)
+{
+ char **ca = (char **)a;
+ char **cb = (char **)b;
+ return strcmp(*ca, *cb);
+}
+
+static int
+compar_name_status(const void *a, const void *b)
+{
+ name_status *ca = (name_status*)a;
+ name_status *cb = (name_status*)b;
+ return strcmp(ca->name, cb->name);
+}
+
+void
+do_chn(char *name)
+{
+ int n;
+ int j;
+ char **enfants = NULL;
+ name_status *ns_table = NULL;
+ int has_children = 0;
+
+ _op++;
+ n = pmGetChildren(name, &enfants);
+ if (n < 0) {
+ _err++;
+ printf("pmGetChildren: %s\n", pmErrStr(n));
+ }
+ else if (n > 0) {
+ qsort(enfants, n, sizeof(enfants[0]), compar_str);
+ has_children = 1;
+ }
+
+ /* test out pmGetChildrenStatus */
+ {
+ char **s_enfants = NULL;
+ int *status = NULL;
+
+ _op++;
+ n = pmGetChildrenStatus(name, &s_enfants, &status);
+ if (n < 0) {
+ _err++;
+ printf("pmGetChildrenStatus: %s\n", pmErrStr(n));
+ }
+ else if (n > 0) {
+ /* create a ns_table for sorting */
+ ns_table = (name_status*)malloc(sizeof(name_status)*n);
+ if (ns_table == 0) {
+ printf("Malloc failed\n");
+ exit(1);
+ }
+ for(j = 0; j < n; j++) {
+ ns_table[j].name = s_enfants[j];
+ ns_table[j].status = status[j];
+ }
+
+ qsort(ns_table, n, sizeof(ns_table[0]), compar_name_status);
+
+ for (j = 0; j < n; j++) {
+ if (strcmp(ns_table[j].name, enfants[j]) != 0) {
+ printf("pmGetChildrenStatus mismatch: \"%s\" vs \"%s\"\n",
+ enfants[j], ns_table[j].name);
+ }
+ }/*for*/
+ }/*if*/
+ if (s_enfants) free(s_enfants);
+ if (status) free(status);
+ }
+
+ if (has_children && vflag) {
+ printf("children of \"%s\" ...\n", name);
+ for (j = 0; j < n; j++) {
+
+ printf(" %-20s", enfants[j]);
+ if (ns_table)
+ printf("<s = %d>", ns_table[j].status);
+ printf("\n");
+ }
+ }
+
+ if (enfants) free(enfants);
+ if (ns_table) free(ns_table);
+
+}
+
+void
+parse_args(int argc, char **argv)
+{
+ extern char *optarg;
+ extern int optind;
+ int errflag = 0;
+ int c;
+ static char *usage = "[-bcLmv] [-a archive] [-h host] [-n namespace] [-s 1|2]";
+ char *endnum;
+ int sts;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D <dbg>]";
+#else
+ static char *debug = "";
+#endif
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:iLmn:s:vbc")) != EOF) {
+ switch (c) {
+ case 'a': /* archive name for context */
+ if (context_type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n",
+ pmProgname);
+ errflag++;
+ }
+ context_type = PM_CONTEXT_ARCHIVE;
+ context_name = optarg;
+ break;
+
+ case 'b': /* dont do the children of "" test */
+ all_children = 0;
+ break;
+
+ case 'c': /* only do the children of "" test */
+ root_children = 1;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* context_namename for live context */
+ if (context_type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n",
+ pmProgname);
+ errflag++;
+ }
+ context_type = PM_CONTEXT_HOST;
+ context_name = optarg;
+ break;
+
+ case 'i': /* non-IRIX names (always true now) */
+ break;
+
+ case 'L': /* LOCAL context */
+ if (context_type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n",
+ pmProgname);
+ errflag++;
+ }
+ context_type = PM_CONTEXT_LOCAL;
+ context_name = NULL;
+ break;
+
+ case 'm': /* dump out the list of metrics to be tested */
+ dump_metrics = 1;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose */
+ vflag++;
+ break;
+
+ case 's': /* pmns style */
+ pmns_style = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ printf("%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+}
+
+void
+load_namespace(char *namespace)
+{
+ struct timeval now, then;
+ int sts;
+
+ gettimeofday(&then, (struct timezone *)0);
+ _op++;
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ _err++;
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ gettimeofday(&now, (struct timezone *)0);
+ printf("Name space load: %.2f msec\n", __pmtimevalSub(&now, &then)*1000);
+}
+
+void
+test_api(void)
+{
+ int sts;
+ int i;
+ pmID midlist[MAXNAMES];
+ int *instlist;
+ char **inamelist;
+ int n;
+ int numpmid = MAXNAMES;
+ char *back;
+ pmResult *resp;
+ pmDesc desc;
+
+ _op++;
+
+ if (context_type == 0) {
+ char local[MAXHOSTNAMELEN];
+ context_type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ context_name = local;
+ }
+
+ if ((sts = pmNewContext(context_type, context_name)) < 0) {
+ _err++;
+ printf("%s: Error in creating %s context for \"%s\": %s\n",
+ pmProgname,
+ context_type == PM_CONTEXT_HOST ? "host" :
+ context_type == PM_CONTEXT_ARCHIVE ? "archive" :
+ "local",
+ context_name,
+ pmErrStr(sts));
+ }
+
+ if (vflag > 1) {
+ _op++;
+ __pmDumpNameSpace(stdout, 1);
+ }
+
+
+ _op++;
+ n = pmLookupName(numpmid, namelist, midlist);
+ if (n != PM_ERR_NONLEAF) { /* expect failure due to pmcd */
+ _err++;
+ printf("pmLookupName: Unexpected error: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ printf("name[%d] %s -> %s\n", i, namelist[i], pmIDStr(midlist[i]));
+ }
+ }
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0) {
+ for (i = 0; i < numpmid; i++) {
+ printf("%s: id[%d] = %d\n", namelist[i], i, midlist[i]);
+ }
+ }
+#endif
+
+ /* Set mode for archive so that an indom can be retrieved
+ * if necessary.
+ * Getting an indom is done based on current time.
+ * If we try and get an indom from the start then we may not
+ * have one yet.
+ */
+ if (context_type == PM_CONTEXT_ARCHIVE) {
+ struct timeval when;
+
+ _op++;
+ if ((n = pmGetArchiveEnd(&when)) < 0) {
+ _err++;
+ printf("pmGetArchiveEnd: %s\n", pmErrStr(n));
+ }
+
+ _op++;
+ if ((n = pmSetMode(PM_MODE_BACK, &when, 1000)) < 0) {
+ _err++;
+ printf("pmSetMode(PM_MODE_BACK): %s\n", pmErrStr(n));
+ }
+ }
+
+ for (i = 0; i < numpmid && !root_children; i++) {
+ putchar('\n');
+ if (vflag) printf("pmid: %s ", pmIDStr(midlist[i]));
+ printf("name: %s\n", namelist[i]);
+ if (strcmp(namelist[i], "bozo.the.clown") != 0)
+ do_chn(namelist[i]);
+ if (midlist[i] != PM_ID_NULL) {
+ _op++;
+ n = pmNameID(midlist[i], &back);
+ if (n < 0) {
+ _err++;
+ printf("pmNameID: %s\n", pmErrStr(n));
+ }
+ else {
+ if (strcmp(namelist[i], back) != 0 &&
+ strcmp(&namelist[i][5], back) != 0) {
+ _err++;
+ printf("pmNameID botch: expected \"%s\", got \"%s\"\n",
+ namelist[i], back);
+ }
+ free(back);
+ }
+ _op++;
+ if ((n = pmLookupDesc(midlist[i], &desc)) < 0) {
+ _err++;
+ printf("pmLookupDesc: %s\n", pmErrStr(n));
+ }
+ else {
+ if (vflag > 1) {
+ const char *u = pmUnitsStr(&desc.units);
+ printf("desc: type=%d indom=0x%x sem=%d units=%s\n",
+ desc.type, desc.indom, desc.sem,
+ *u == '\0' ? "none" : u);
+ }
+ if (desc.indom == PM_INDOM_NULL)
+ continue;
+ _op++;
+ if ((n = pmGetInDom(desc.indom, &instlist, &inamelist)) < 0) {
+ _err++;
+ printf("pmGetInDom: %s\n", pmErrStr(n));
+ }
+ else {
+ int j;
+ int numinst = n;
+ char *name;
+ for (j = 0; j < numinst; j++) {
+ if (vflag > 1)
+ printf(" instance id: 0x%x\n", instlist[j]);
+ _op++;
+ if ((n = pmNameInDom(desc.indom, instlist[j], &name)) < 0) {
+ _err++;
+ printf("pmNameInDom: %s\n", pmErrStr(n));
+ }
+ else {
+ if (vflag > 1)
+ printf(" %s (== %s?)\n", name, inamelist[j]);
+ _op++;
+ if ((n = pmLookupInDom(desc.indom, name)) < 0) {
+ _err++;
+ printf("pmLookupInDom: %s\n", pmErrStr(n));
+ }
+ else {
+ if (n != instlist[j]) {
+ _err++;
+ printf("botch: pmLookupInDom returns 0x%x, expected 0x%x\n",
+ n, instlist[j]);
+ }
+ }
+ free(name);
+ }
+ }
+ free(instlist);
+ free(inamelist);
+ }
+ }
+ }
+ }/*for each named metric*/
+
+ if (all_children || root_children) {
+ /* root check */
+ /*
+ * This is only useful in a namspace where irix has not been stripped from the
+ * names. Once irix is stripped from the names, the list returned becomes
+ * to variable to do a QA in this manner.
+ * Test #568 using pmns_xlate tests the root.
+ */
+ printf("\n");
+ do_chn("");
+ }
+
+ if (context_type == PM_CONTEXT_ARCHIVE) {
+ struct timeval when;
+
+ when.tv_sec = 0;
+ when.tv_usec = 0;
+
+ if (vflag)
+ printf("\nArchive result ...\n");
+ for (i = 0; i < numpmid; i++) {
+ if (midlist[i] == PM_ID_NULL)
+ continue;
+ _op++;
+ if ((n = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ _err++;
+ printf("pmSetMode(PM_MODE_FORW): %s\n", pmErrStr(n));
+ }
+ else {
+ _op++;
+ if (vflag)
+ printf("Fetch of %s:\n", namelist[i]);
+ if ((n = pmFetch(1, &midlist[i], &resp)) < 0) {
+ _err++;
+ printf("Archive pmFetch: %s\n", pmErrStr(n));
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ _op++;
+ pmFreeResult(resp);
+ }
+ }
+ }/*for*/
+ }
+
+ else if (context_type == PM_CONTEXT_HOST) {
+ _op++;
+ if ((n = pmSetMode(PM_MODE_LIVE, (struct timeval *)0, 0)) < 0) {
+ _err++;
+ printf("pmSetMode(PM_MODE_LIVE): %s\n", pmErrStr(n));
+ }
+ else {
+ _op++;
+ if ((n = pmFetch(numpmid, midlist, &resp)) < 0) {
+ _err++;
+ printf("real-time pmFetch: %s\n", pmErrStr(n));
+ }
+ else {
+ if (vflag) {
+ printf("\nReal-time result ...\n");
+ __pmDumpResult(stdout, resp);
+ }
+ _op++;
+ pmFreeResult(resp);
+ }
+ }
+ }
+
+}
+
+int
+main(int argc, char **argv)
+{
+ parse_args(argc, argv);
+
+ if (dump_metrics == 1) {
+ int i;
+ for(i = 0; i < MAXNAMES; i++) {
+ printf("%s\n", namelist[i]);
+ }
+ exit(0);
+ }
+
+ if (pmns_style == 2) {
+ /* test it the new way with distributed namespace */
+ /* i.e. no client loaded namespace */
+ test_api();
+ }
+ else {
+ /* test it the old way with namespace file */
+ load_namespace(namespace);
+ test_api();
+ }
+
+ printf("\nUnexpected failure for %d of %d PMAPI operations\n", _err, _op);
+ exit(0);
+}
diff --git a/qa/src/torture_cache.c b/qa/src/torture_cache.c
new file mode 100644
index 0000000..843863b
--- /dev/null
+++ b/qa/src/torture_cache.c
@@ -0,0 +1,599 @@
+/*
+ * Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+static pmInDom indom;
+static __pmInDom_int *indomp;
+static char *xxx = "xxxsomefunnyinstancenamestringthatcanbechoppedabout";
+static char nbuf[80]; /* at least as big as xxx[] */
+static int ncount;
+
+static void
+_a(int load, int verbose, int extra)
+{
+ int inst;
+ int sts;
+
+ indomp->domain = 123;
+ indomp->serial = 7;
+
+ if (load) {
+ fprintf(stderr, "Load the instance domain ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+ }
+
+ fprintf(stderr, "Add foo ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nAdd bar ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "bar", (void *)((__psint_t)0xdeadbeef));
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nAdd java coffee beans ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "java coffee beans", (void *)((__psint_t)0xcafecafe));
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nAdd another one ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "another one", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nHide another one ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, "another one", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCull foo ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCull foo again, should fail ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCount instances ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SIZE);
+ fprintf(stderr, "entries: %d\n", sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SIZE_ACTIVE);
+ fprintf(stderr, "active entries: %d\n", sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SIZE_INACTIVE);
+ fprintf(stderr, "inactive entries: %d\n", sts);
+
+ fprintf(stderr, "\nProbe bar ...\n");
+ sts = pmdaCacheLookupName(indom, "bar", &inst, NULL);
+ fprintf(stderr, "return ->");
+ if (sts >= 0) fprintf(stderr, " %d", inst);
+ if (sts == PMDA_CACHE_INACTIVE) fprintf(stderr, " [inactive]");
+ if (sts < 0) fprintf(stderr, " %d: %s", sts, pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nProbe another one (hidden) ...\n");
+ sts = pmdaCacheLookupName(indom, "another one", &inst, NULL);
+ fprintf(stderr, "return ->");
+ if (sts >= 0) fprintf(stderr, " %d", inst);
+ if (sts == PMDA_CACHE_INACTIVE) fprintf(stderr, " [inactive]");
+ if (sts < 0) fprintf(stderr, " %d: %s", sts, pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ if (load) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ }
+ return;
+ }
+
+ if (extra == 0)
+ return;
+
+ indomp->serial = 8;
+ fprintf(stderr, "\nAdd foo in another indom ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nProbe bar (not in this indom) ...\n");
+ sts = pmdaCacheLookupName(indom, "bar", &inst, NULL);
+ fprintf(stderr, "return ->");
+ if (sts >= 0) fprintf(stderr, " %d", inst);
+ if (sts == PMDA_CACHE_INACTIVE) fprintf(stderr, " [inactive]");
+ if (sts < 0) fprintf(stderr, " %d: %s", sts, pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+
+ indomp->serial = 7;
+
+ fprintf(stderr, "\nMark all active ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_ACTIVE);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nMark all inactive ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_INACTIVE);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCull all ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_CULL);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+}
+
+static void
+_b(void)
+{
+ int i;
+ int j;
+ int inst;
+ int sts;
+ char cmd[2*MAXPATHLEN+30];
+
+ indomp->domain = 123;
+ indomp->serial = 8;
+
+ sprintf(cmd, "rm -f %s/config/pmda/%s", pmGetConfig("PCP_VAR_DIR"), pmInDomStr(indom));
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: %s: exit status %d\n", cmd, sts);
+ sprintf(cmd, "[ -f %s/config/pmda/%s ] || exit 0; cat %s/config/pmda/%s", pmGetConfig("PCP_VAR_DIR"), pmInDomStr(indom), pmGetConfig("PCP_VAR_DIR"), pmInDomStr(indom));
+
+ fprintf(stderr, "\nPopulate the instance domain ...\n");
+ j = 1;
+ for (i = 0; i < 20; i++) {
+ strncpy(nbuf, xxx, ncount+3);
+ sprintf(nbuf, "%03d", ncount);
+ ncount++;
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)(0xbeef0000+ncount)));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ else if (i > 14) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ }
+ if (i == j) {
+ j <<= 1;
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ if (i == 6 || i == 13) {
+ fprintf(stderr, "Save ...\n");
+ fprintf(stderr, "Before:\n");
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:1: %s: exit status %d\n", cmd, sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ fprintf(stderr, "After:\n");
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:2: %s: exit status %d\n", cmd, sts);
+ }
+ if (i == 14) {
+ fprintf(stderr, "Start save after changes ...\n");
+ }
+ if (i > 14) {
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:3: %s: exit status %d\n", cmd, sts);
+ }
+ }
+ __pmdaCacheDump(stderr, indom, 0);
+ strncpy(nbuf, xxx, 11+3);
+ sprintf(nbuf, "%03d", 11);
+ fprintf(stderr, "\nHide %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:4: %s: exit status %d\n", cmd, sts);
+ fprintf(stderr, "Add %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)0xdeadbeef));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:5: %s: exit status %d\n", cmd, sts);
+ fprintf(stderr, "Cull %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_CULL failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:6: %s: exit status %d\n", cmd, sts);
+ fprintf(stderr, "Add %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)0xdeadbeef));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:7: %s: exit status %d\n", cmd, sts);
+
+}
+
+static void
+_c(void)
+{
+ int inst;
+ int sts;
+
+ indomp->domain = 123;
+ indomp->serial = 13;
+
+ fprintf(stderr, "Load the instance domain ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, "fubar-001", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"fubar-001\": %s\n", pmErrStr(inst));
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "fubar-002", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"fubar-002\": %s\n", pmErrStr(inst));
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, "fubar-003", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_CULL failed for \"fubar-003\": %s\n", pmErrStr(inst));
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "fubar-009", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"fubar-009\": %s\n", pmErrStr(inst));
+
+ __pmdaCacheDump(stderr, indom, 0);
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ return;
+ }
+}
+
+static void
+_e(int since)
+{
+ int i;
+ int j;
+ int sts;
+ int inst;
+
+ indomp->domain = 123;
+ indomp->serial = 11;
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+
+ j = 1;
+ for (i = 0; i < 10; i++) {
+ sprintf(nbuf, "boring-instance-%03d", i);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)(0xcaffe000+i)));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ if (i == j) {
+ j <<= 1;
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ }
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ fprintf(stderr, "Before purge ...\n");
+ __pmdaCacheDump(stderr, indom, 0);
+
+ sleep(1);
+
+ sts = pmdaCachePurge(indom, since);
+ if (sts < 0) {
+ fprintf(stderr, "pmdaCachePurge failed: %s\n", pmErrStr(sts));
+ return;
+ }
+ fprintf(stderr, "Purged %d entries\nAfter purge ...\n", sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ __pmdaCacheDump(stderr, indom, 0);
+}
+
+static void
+_g(void)
+{
+ int inst;
+ int i;
+
+ indomp->domain = 123;
+ indomp->serial = 7;
+
+ for (i = 0; i < 254; i++) {
+ sprintf(nbuf, "hashing-instance-%03d", i);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)(0xdeaf0000+i)));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ if (i % 2 == 0) {
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ if (i % 7 == 0) {
+ sprintf(nbuf, "hashing-instance-%03d", i);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_CULL failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ }
+
+ __pmdaCacheDump(stderr, indom, 1);
+
+ _a(0, 0, 0);
+
+ __pmdaCacheDump(stderr, indom, 1);
+}
+
+static char *h_tab[] = { "foo", "foobar", "foo bar", NULL };
+
+static void
+_h(void)
+{
+ int sts;
+ int inst;
+ int i;
+
+ indomp->domain = 123;
+ indomp->serial = 17;
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+
+ for (i = 0; h_tab[i] != NULL; i++) {
+ fprintf(stderr, "[%s]\n", h_tab[i]);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, h_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, h_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "HIDE failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "HIDE -> %d\n", inst);
+
+ }
+}
+
+static char *i_tab[] = { "ernie", "bert", "kermit", "oscar", "big bird", "miss piggy", NULL };
+
+/*
+ * revised dirty cache semantics
+ * style & 1 => SAVE
+ * style & 2 => SYNC
+ */
+static void
+_i(int style)
+{
+ int sts;
+ int inst;
+ int i;
+ static int first = 1;
+
+ indomp->domain = 123;
+ indomp->serial = 15;
+
+ if (first) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ }
+ first = 0;
+ }
+
+ for (i = 0; i_tab[i] != NULL; i++) {
+ fprintf(stderr, "[%s]\n", i_tab[i]);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "SAVE -> %d\n", sts);
+
+ if (i == 0) {
+ /* last one -> INACTIVE */
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "HIDE failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "HIDE -> %d\n", inst);
+ }
+ else if (i == 1) {
+ /* last one -> INACTIVE -> ACTIVE */
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "HIDE failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "HIDE -> %d\n", inst);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+ }
+ else if (i == 2) {
+ /* last one -> EMPTY */
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "CULL failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "CULL -> %d\n", inst);
+ }
+ else if (i == 3) {
+ /* add another one */
+ fprintf(stderr, "extra [%s]\n", "felix-the-cat");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "felix-the-cat", NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+ }
+ else if (i == 4) {
+ /* do nothing! */
+ ;
+ }
+ else {
+ /* empty cache */
+ sts = pmdaCacheOp(indom, PMDA_CACHE_CULL);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_CULL failed: %s\n", pmErrStr(sts));
+ return;
+ }
+ fprintf(stderr, "CULL ALL -> %d\n", inst);
+ }
+
+ if (style & 1) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "SAVE -> %d\n", sts);
+ }
+
+ if (style & 2) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SYNC);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SYNC failed: %s\n", pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "SYNC -> %d\n", sts);
+ }
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int errflag = 0;
+ int sts;
+ int c;
+
+ __pmSetProgname(argv[0]);
+
+ indomp = (__pmInDom_int *)&indom;
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s [-D...] [a|b|c|d|...|i 1|2|3}\n", pmProgname);
+ exit(1);
+ }
+
+ while (optind < argc) {
+ if (strcmp(argv[optind], "a") == 0) _a(0, 1, 1);
+ else if (strcmp(argv[optind], "b") == 0) _b();
+ else if (strcmp(argv[optind], "c") == 0) _c();
+ else if (strcmp(argv[optind], "d") == 0) _a(1, 0, 1);
+ else if (strcmp(argv[optind], "e") == 0) _e(0);
+ else if (strcmp(argv[optind], "f") == 0) _e(3600);
+ else if (strcmp(argv[optind], "g") == 0) _g();
+ else if (strcmp(argv[optind], "h") == 0) _h();
+ else if (strcmp(argv[optind], "i") == 0) {
+ optind++;
+ _i(atoi(argv[optind]));
+ }
+ else
+ fprintf(stderr, "torture_cache: no idea what to do with option \"%s\"\n", argv[optind]);
+ optind++;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/torture_indom.c b/qa/src/torture_indom.c
new file mode 100644
index 0000000..4f15d47
--- /dev/null
+++ b/qa/src/torture_indom.c
@@ -0,0 +1,374 @@
+/*
+ * indom_match - exercise indom fetching with a profile
+ *
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+result_instlist(pmResult *r, int **list)
+{
+ int *l;
+ int i;
+
+ l = malloc(r->vset[0]->numval * sizeof(int));
+ for (i=0; i < r->vset[0]->numval; i++) {
+ l[i] = r->vset[0]->vlist[i].inst;
+ }
+ *list = l;
+ return r->vset[0]->numval;
+}
+
+int
+cmp_list(int n, int *list1, int *list2)
+{
+ int i;
+ int j;
+ for (i=0; i < n; i++) {
+ for (j=0; j < n; j++) {
+ if (list1[i] == list2[j])
+ break;
+ }
+ if (j == n) {
+ /* fail */
+ return 1;
+ }
+ }
+
+ /* success */
+ return 0;
+}
+
+int
+do_test(char *name)
+{
+ pmDesc desc;
+ pmID pmid;
+ int err;
+ char *metriclist[1];
+ char **namelist;
+ int *instlist;
+ int n_instlist;
+ pmResult *r1;
+ pmResult *r2;
+ int n_r1, n_r2;
+ int *r1_instlist;
+ int *r2_instlist;
+ int *half_instlist;
+ int n_half_instlist;
+ int i;
+
+ metriclist[0] = name;
+
+ if ((err = pmLookupName(1, metriclist, &pmid)) < 0) {
+ fprintf(stderr, "pmLookupName failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ if ((err = pmLookupDesc(pmid, &desc)) < 0) {
+ fprintf(stderr, "pmLookupDesc failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ if (desc.indom == PM_INDOM_NULL) {
+ fprintf(stderr, "this test only works for non-singular instance domains\n");
+ return PM_ERR_INDOM;
+ }
+
+ if ((err = pmGetInDom(desc.indom, &instlist, &namelist)) < 0) {
+ fprintf(stderr, "pmGetInDom failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+ else
+ n_instlist = err;
+
+ /*
+ * check lookup for instances in both directions
+ */
+ for (i = 0; i < n_instlist; i++) {
+ char *myname;
+ if ((err = pmLookupInDom(desc.indom, namelist[i])) < 0) {
+ fprintf(stderr, "pmLookupInDom failed for %s[%s]: %s\n", name, namelist[i], pmErrStr(err));
+ return err;
+ }
+ if (err != instlist[i]) {
+ fprintf(stderr, "pmLookupInDom %s[%s] -> %d, expecting %d\n", name, namelist[i], err, instlist[i]);
+ return PM_ERR_GENERIC;
+ }
+ if ((err = pmNameInDom(desc.indom, instlist[i], &myname)) < 0) {
+ fprintf(stderr, "pmNameInDom failed for %s[#%d]: %s\n", name, instlist[i], pmErrStr(err));
+ return err;
+ }
+ if (strcmp(namelist[i], myname) != 0) {
+ fprintf(stderr, "pmNameInDom %s[#%d] -> %s, expecting %s\n", name, instlist[i], myname, namelist[i]);
+ free(myname);
+ return PM_ERR_GENERIC;
+ }
+ free(myname);
+ }
+
+ if ((err = pmFetch(1, &pmid, &r1)) < 0) {
+ fprintf(stderr, "pmFetch failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ if ((err = pmDelProfile(desc.indom, 0, (int *)0)) < 0) {
+ fprintf(stderr, "pmDelProfile failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ /*
+ * DupContext should inherit profile ...
+ */
+ if ((err = pmDupContext()) < 0) {
+ fprintf(stderr, "pmDupContext failed: %s\n", pmErrStr(err));
+ return err;
+ }
+
+ if ((err = pmAddProfile(desc.indom, n_instlist, instlist)) < 0) {
+ fprintf(stderr, "pmAddProfile failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ if ((err = pmFetch(1, &pmid, &r2)) < 0) {
+ fprintf(stderr, "second pmFetch failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ /* now do the checking */
+ n_r1 = result_instlist(r1, &r1_instlist);
+ n_r2 = result_instlist(r2, &r2_instlist);
+
+ if (n_r1 != n_r2) {
+ fprintf(stderr, "number of instances for unprofiled fetch (%d) != that for the profiled fetch (%d)\n", n_r1, n_r2);
+ return PM_ERR_INDOM;
+ }
+
+ if (n_r1 != n_instlist) {
+ fprintf(stderr, "number of instances from unprofiled fetch (%d) != that for pmGetInDom (%d)\n", n_r1, n_instlist);
+ return PM_ERR_INDOM;
+ }
+
+ if (cmp_list(n_instlist, instlist, r1_instlist) != 0) {
+ fprintf(stderr, "instances from pmGetIndom do not match those from unprofiled fetch\n");
+ return PM_ERR_INDOM;
+ }
+
+ if (cmp_list(n_instlist, instlist, r2_instlist) != 0) {
+ fprintf(stderr, "instances from pmGetIndom do not match those from profiled fetch\n");
+ return PM_ERR_INDOM;
+ }
+
+ if (cmp_list(n_instlist, r1_instlist, r2_instlist) != 0) {
+ fprintf(stderr, "instances from unprofiled fetch do not match those from unprofiled fetch\n");
+ return PM_ERR_INDOM;
+ }
+
+ /* delete the whole profile, then add only every second instance */
+ if ((err = pmDelProfile(desc.indom, 0, (int *)0)) < 0) {
+ fprintf(stderr, "pmDelProfile failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ half_instlist = malloc(n_instlist * sizeof(int));
+ n_half_instlist = 0;
+ for (i=0; i < n_instlist; i+=2) {
+ if ((err = pmAddProfile(desc.indom, 1, &instlist[i])) < 0) {
+ fprintf(stderr, "failed to add instance from profile: %s\n", pmErrStr(err));
+ return err;
+ }
+ half_instlist[n_half_instlist++] = instlist[i];
+ }
+
+ pmFreeResult(r1);
+ pmFreeResult(r2);
+ free(r1_instlist);
+ free(r2_instlist);
+
+ if ((err = pmFetch(1, &pmid, &r1)) < 0) {
+ fprintf(stderr, "first half-profile pmFetch failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ if ((err = pmFetch(1, &pmid, &r2)) < 0) {
+ fprintf(stderr, "second half-profile pmFetch failed for %s: %s\n", name, pmErrStr(err));
+ return err;
+ }
+
+ n_r1 = result_instlist(r1, &r1_instlist);
+ n_r2 = result_instlist(r2, &r2_instlist);
+
+ if (n_r1 != n_r2) {
+ fprintf(stderr, "number of instances for first half-profile fetch (%d) != that for the second half-profile fetch (%d)\n", n_r1, n_r2);
+ return PM_ERR_INDOM;
+ }
+
+ if (n_r1 != n_half_instlist) {
+ fprintf(stderr, "number of instances from first half-profile fetch (%d) != that for the half-profile list (%d)\n", n_r1, n_instlist);
+ return PM_ERR_INDOM;
+ }
+
+ if (cmp_list(n_half_instlist, half_instlist, r1_instlist) != 0) {
+ fprintf(stderr, "instances from half-profile list do not match those from half-profile fetch\n");
+ return PM_ERR_INDOM;
+ }
+
+ if (cmp_list(n_half_instlist, half_instlist, r2_instlist) != 0) {
+ fprintf(stderr, "instances from half-profile list do not match those from half-profile fetch\n");
+ return PM_ERR_INDOM;
+ }
+
+ if (cmp_list(n_half_instlist, r1_instlist, r2_instlist) != 0) {
+ fprintf(stderr, "instances from first half-profile fetch do not match those from second half-profile fetch\n");
+ return PM_ERR_INDOM;
+ }
+
+ /* success */
+ return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int errflag = 0;
+ char *errmsg;
+ int type = 0;
+ char *host = NULL; /* pander to gcc */
+ pmLogLabel label; /* get hostname for archives */
+ char local[MAXHOSTNAMELEN];
+ char *namespace = PM_NS_DEFAULT;
+ char *metricname = (char *)0;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:h:K:Ln:?")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive name */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_ARCHIVE;
+ host = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'h': /* contact PMCD on this hostname */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ host = optarg;
+ type = PM_CONTEXT_HOST;
+ break;
+
+ case 'K': /* update local PMDA table */
+ if ((errmsg = __pmSpecLocalPMDA(optarg)) != NULL) {
+ fprintf(stderr, "%s: __pmSpecLocalPMDA failed: %s\n", pmProgname, errmsg);
+ errflag++;
+ }
+ break;
+
+ case 'L': /* local PMDA connection, no PMCD */
+ if (type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h and -L allowed\n", pmProgname);
+ errflag++;
+ }
+ type = PM_CONTEXT_LOCAL;
+ gethostname(local, sizeof(local));
+ host = local;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ /* non-flag args are argv[optind] ... argv[argc-1] */
+
+ if (optind == argc-1) {
+ metricname = argv[optind];
+ optind++;
+ }
+ else {
+ fprintf(stderr, "metricname is a required argument\n");
+ errflag++;
+ }
+
+ if (errflag) {
+ fprintf(stderr,
+"Usage: %s [options] metricname\n\
+\n\
+Options\n\
+ -a archive metrics source is an archive log\n\
+ -D debug standard PCP debug flag\n\
+ -h host metrics source is PMCD on host (default is local libirixpmda)\n\
+ -L metrics source is local connection to PMDA, no PMCD\n\
+ -K spec optional additional PMDA spec for local connection\n\
+ spec is of the form op,domain,dso-path,init-routine\n\
+ -n namespace use an alternative PMNS\n",
+ pmProgname);
+ exit(1);
+ }
+
+ if (namespace != PM_NS_DEFAULT) {
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ if (type == 0) {
+ type = PM_CONTEXT_LOCAL;
+ gethostname(local, sizeof(local));
+ host = local;
+ }
+ if ((sts = pmNewContext(type, host)) < 0) {
+ if (type == PM_CONTEXT_HOST)
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ else if (type == PM_CONTEXT_LOCAL) {
+ fprintf(stderr, "%s: pmNewContext failed for PM_CONTEXT_LOCAL: %s\n",
+ pmProgname, pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, host, pmErrStr(sts));
+ exit(1);
+ }
+
+ if (type == PM_CONTEXT_ARCHIVE) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ exit(do_test(metricname));
+}
+
diff --git a/qa/src/torture_logmeta.c b/qa/src/torture_logmeta.c
new file mode 100644
index 0000000..0e74f20
--- /dev/null
+++ b/qa/src/torture_logmeta.c
@@ -0,0 +1,350 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int i;
+ int sts = 0; /* pander to gcc */
+ int fault = 0;
+ int errflag = 0;
+ char *offset = NULL;
+ pmLogLabel label; /* get hostname for archives */
+ int tzh; /* initial timezone handle */
+ char local[MAXHOSTNAMELEN];
+ char *endnum;
+ struct timeval startTime;
+ struct timeval endTime;
+ struct timeval appStart;
+ struct timeval appEnd;
+ struct timeval appOffset;
+ int *instlist;
+ char **namelist;
+ char *name;
+ int xinst = -1;
+ char *xname = NULL;
+ char *xxname = NULL;
+ pmInDom indom[3]; /* null, good, bad */
+
+ /* trim cmd name of leading directory components */
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "fD:O:?")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'f': /* fault injection mode */
+ fault = 1;
+ break;
+
+ case 'O': /* sample offset time */
+ offset = optarg;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag || optind != argc-4) {
+ fprintf(stderr,
+"Usage: %s [options] archive domain good-serial bad-serial\n\
+\n\
+Options:\n\
+ -f fault injection mode ... only do good archive ops\n\
+ -O offset initial offset into the time window\n",
+ pmProgname);
+ exit(1);
+ }
+ indom[0] = PM_INDOM_NULL;
+ indom[1] = pmInDom_build(atoi(argv[optind+1]), atoi(argv[optind+2]));
+ indom[2] = pmInDom_build(atoi(argv[optind+1]), atoi(argv[optind+3]));
+
+ /*
+ * once per context type ... invalid, localhost, archive
+ */
+ for (c = 0; c < 3; c++) {
+ if (fault && c != 2)
+ continue;
+ if (c == 0) {
+ /* invalid context, none created yet */
+ sts = -1;
+ }
+ else if (c == 1) {
+ /* pmcd on localhost */
+ (void)gethostname(local, MAXHOSTNAMELEN);
+ local[MAXHOSTNAMELEN-1] = '\0';
+ if ((sts = pmNewContext(PM_CONTEXT_HOST, local)) < 0) {
+ fprintf(stderr, "%s: Cannot connect to PMCD on host \"%s\": %s\n",
+ pmProgname, local, pmErrStr(sts));
+ exit(1);
+ }
+ }
+ else if (c == 2) {
+ if ((sts = pmNewContext(PM_CONTEXT_ARCHIVE, argv[optind])) < 0) {
+ fprintf(stderr, "%s: Cannot open archive \"%s\": %s\n",
+ pmProgname, argv[optind], pmErrStr(sts));
+ exit(1);
+ }
+ }
+ fprintf(stderr, "\n=== iteration %d context %d ===\n", c, sts);
+
+ if (c == 2) {
+ if ((sts = pmGetArchiveLabel(&label)) < 0) {
+ fprintf(stderr, "%s: Cannot get archive label record: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ startTime = label.ll_start;
+ if ((sts = pmGetArchiveEnd(&endTime)) < 0) {
+ fprintf(stderr, "%s: Cannot locate end of archive: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((tzh = pmNewContextZone()) < 0) {
+ fprintf(stderr, "%s: Cannot set context timezone: %s\n",
+ pmProgname, pmErrStr(tzh));
+ exit(1);
+ }
+ sts = pmParseTimeWindow(NULL, NULL, NULL, offset, &startTime,
+ &endTime, &appStart, &appEnd, &appOffset,
+ &endnum);
+ if (sts < 0) {
+ fprintf(stderr, "%s: illegal time window specification\n%s",
+ pmProgname, endnum);
+ exit(1);
+ }
+ if ((sts = pmSetMode(PM_MODE_FORW, &appOffset, 0)) < 0) {
+ fprintf(stderr, "%s: pmSetMode: %s\n",
+ pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ }
+
+ /*
+ * routines to be tested ...
+ *
+ * PMAPI
+ * [y] pmGetInDomArchive
+ * [y] pmLookupInDomArchive
+ * [y] pmNameInDomArchive
+ *
+ * internal
+ * [ ] __pmLogPutDesc
+ * [ ] __pmLogPutInDom
+ * [ ] __pmLogPutIndex
+ * [ ] __pmLogLookupDesc
+ * [y] __pmLogGetInDom
+ * [y] __pmLogLookupInDom
+ * [y] __pmLogNameInDom
+ */
+
+ /* once per indom ... null, good and bad */
+ for (i = 0; i < 3; i++) {
+ if (fault && i != 1)
+ continue;
+ if (i == 0) {
+ /* tests that do not use the indom ... */
+ ;
+ }
+
+ if ((sts = pmGetInDomArchive(indom[i], &instlist, &namelist)) < 0) {
+ fprintf(stderr, "pmGetInDomArchive(%s) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ int j;
+ fprintf(stderr, "pmGetInDomArchive(%s) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%d\n", sts);
+ for (j = 0; j < sts; j++)
+ fprintf(stderr, " [%d] %s\n", instlist[j], namelist[j]);
+ if (xname == NULL) {
+ char *q;
+ xname = strdup(namelist[0]);
+ for (q = xname; *q; q++) {
+ if (*q == ' ') {
+ xxname = strdup(xname);
+ xxname[q-xname] = '\0';
+ break;
+ }
+ }
+ }
+ free(instlist);
+ free(namelist);
+ }
+
+ if (!fault) {
+ if ((sts = pmLookupInDomArchive(indom[i], "foobar")) < 0) {
+ fprintf(stderr, "pmLookupInDomArchive(%s, foobar) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "pmLookupInDomArchive(%s, foobar) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%d\n", sts);
+ }
+ }
+
+ if (xname != NULL) {
+ if ((sts = pmLookupInDomArchive(indom[i], xname)) < 0) {
+ fprintf(stderr, "pmLookupInDomArchive(%s, %s) -> ", pmInDomStr(indom[i]), xname);
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "pmLookupInDomArchive(%s, %s) -> ", pmInDomStr(indom[i]), xname);
+ fprintf(stderr, "%d\n", sts);
+ if (xinst == -1)
+ xinst = sts;
+ }
+ }
+
+ if (xxname != NULL) {
+ if ((sts = pmLookupInDomArchive(indom[i], xxname)) < 0) {
+ fprintf(stderr, "pmLookupInDomArchive(%s, %s) -> ", pmInDomStr(indom[i]), xxname);
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "pmLookupInDomArchive(%s, %s) -> ", pmInDomStr(indom[i]), xxname);
+ fprintf(stderr, "%d\n", sts);
+ }
+ }
+
+ if (!fault) {
+ if ((sts = pmNameInDomArchive(indom[i], 1234567, &name)) < 0) {
+ fprintf(stderr, "pmNameInDomArchive(%s, 1234567) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "pmNameInDomArchive(%s, 1234567) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", name);
+ free(name);
+ }
+ }
+
+ if (xinst != -1) {
+ if ((sts = pmNameInDomArchive(indom[i], xinst, &name)) < 0) {
+ fprintf(stderr, "pmNameInDomArchive(%s, %d) -> ", pmInDomStr(indom[i]), xinst);
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "pmNameInDomArchive(%s, %d) -> ", pmInDomStr(indom[i]), xinst);
+ fprintf(stderr, "%s\n", name);
+ free(name);
+ }
+ }
+
+ if ((sts = pmWhichContext()) >= 0) {
+ __pmContext *ctxp;
+ ctxp = __pmHandleToPtr(sts);
+ if (ctxp != NULL && ctxp->c_archctl != NULL) {
+ __pmTimeval now;
+ int iter;
+ for (iter=0; iter < 2; iter++) {
+ /*
+ * use -O time (defaults to start time) on first
+ * iteration, then half the time between there
+ * and the end
+ */
+ if (fault && iter != 1)
+ continue;
+ if (iter == 0) {
+ now.tv_sec = appOffset.tv_sec;
+ now.tv_usec = appOffset.tv_usec;
+ }
+ else {
+ /*
+ * danger! need to promote arithmetic to 64-bit
+ * for platforms where tv_sec is 32-bit and
+ * tv_sec + tv_sec => overflow
+ */
+ now.tv_sec = ((__int64_t)appOffset.tv_sec+(__int64_t)appEnd.tv_sec)/2;
+ now.tv_usec = ((__int64_t)appOffset.tv_usec+(__int64_t)appEnd.tv_usec)/2;
+ }
+ if ((sts = __pmLogGetInDom(ctxp->c_archctl->ac_log, indom[i], &now, &instlist, &namelist)) < 0) {
+ fprintf(stderr, "__pmLogGetInDom(%s) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ int j;
+ fprintf(stderr, "__pmLogGetInDom(%s) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%d\n", sts);
+ for (j = 0; j < sts; j++)
+ fprintf(stderr, " [%d] %s\n", instlist[j], namelist[j]);
+ }
+ if (!fault) {
+ if ((sts = __pmLogLookupInDom(ctxp->c_archctl->ac_log, indom[i], &now, "foobar")) < 0) {
+ fprintf(stderr, "__pmLogLookupInDom(%s, foobar) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "__pmLogLookupInDom(%s, foobar) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%d\n", sts);
+ }
+ }
+ if (xname != NULL) {
+ if ((sts = __pmLogLookupInDom(ctxp->c_archctl->ac_log, indom[i], &now, xname)) < 0) {
+ fprintf(stderr, "__pmLogLookupInDom(%s, %s) -> ", pmInDomStr(indom[i]), xname);
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "__pmLogLookupInDom(%s, %s) -> ", pmInDomStr(indom[i]), xname);
+ fprintf(stderr, "%d\n", sts);
+ }
+ }
+ if (xxname != NULL) {
+ if ((sts = __pmLogLookupInDom(ctxp->c_archctl->ac_log, indom[i], &now, xxname)) < 0) {
+ fprintf(stderr, "__pmLogLookupInDom(%s, %s) -> ", pmInDomStr(indom[i]), xxname);
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "__pmLogLookupInDom(%s, %s) -> ", pmInDomStr(indom[i]), xxname);
+ fprintf(stderr, "%d\n", sts);
+ }
+ }
+ if (!fault) {
+ if ((sts = __pmLogNameInDom(ctxp->c_archctl->ac_log, indom[i], &now, 1234567, &name)) < 0) {
+ fprintf(stderr, "__pmLogNameInDom(%s, 1234567) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "__pmLogNameInDom(%s, 1234567) -> ", pmInDomStr(indom[i]));
+ fprintf(stderr, "%s\n", name);
+ }
+ }
+ if (xinst != -1) {
+ if ((sts = __pmLogNameInDom(ctxp->c_archctl->ac_log, indom[i], &now, xinst, &name)) < 0) {
+ fprintf(stderr, "__pmLogNameInDom(%s, %d) -> ", pmInDomStr(indom[i]), xinst);
+ fprintf(stderr, "%s\n", pmErrStr(sts));
+ }
+ else {
+ fprintf(stderr, "__pmLogNameInDom(%s, %d) -> ", pmInDomStr(indom[i]), xinst);
+ fprintf(stderr, "%s\n", name);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+
+ return 0;
+}
diff --git a/qa/src/torture_pmns.c b/qa/src/torture_pmns.c
new file mode 100644
index 0000000..17e986c
--- /dev/null
+++ b/qa/src/torture_pmns.c
@@ -0,0 +1,495 @@
+/*
+ * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+ *
+ * Exercise just the PMNS functions ... intended for dynamic PMNS testing
+ * ... this is really torture_api re-tweaked
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int vflag;
+static char *context_name = "localhost";
+static int context_type = 0; /* archive, host or local */
+static char *namespace = PM_NS_DEFAULT;
+static int all_children = 1; /* do the children of "" test */
+static int root_children; /* only do the children of "" test */
+static int dump_metrics; /* just dump the metrics and exit */
+/*
+ * pmns_style == 1 => do PMNS style loading the old way
+ * pmns_style == 2 => try to use the distributed PMNS
+ */
+static int pmns_style = 2;
+
+static int numpmid = 0;
+static char **namelist; /* The list of metrics to test out */
+static pmID *midlist;
+
+typedef struct name_status {
+ char *name;
+ int status;
+}name_status;
+
+#define REPORT(str, sts) \
+printf("%s() returns %d", str, sts);\
+if (sts < 0) printf(" (%s)", pmErrStr(sts));\
+putchar('\n');
+
+static int
+compar_str(const void *a, const void *b)
+{
+ char **ca = (char **)a;
+ char **cb = (char **)b;
+ return strcmp(*ca, *cb);
+}
+
+static int
+compar_name_status(const void *a, const void *b)
+{
+ name_status *ca = (name_status*)a;
+ name_status *cb = (name_status*)b;
+ return strcmp(ca->name, cb->name);
+}
+
+void
+do_chn(char *name)
+{
+ int n;
+ int j;
+ char **enfants = NULL;
+ name_status *ns_table = NULL;
+ int has_children = 0;
+
+ n = pmGetChildren(name, &enfants);
+ REPORT("pmGetChildren", n);
+ if (n > 0) {
+ qsort(enfants, n, sizeof(enfants[0]), compar_str);
+ has_children = 1;
+ }
+
+ /* test out pmGetChildrenStatus */
+ {
+ char **s_enfants = NULL;
+ int *status = NULL;
+
+ n = pmGetChildrenStatus(name, &s_enfants, &status);
+ REPORT("pmGetChildrenStatus", n);
+ if (n > 0) {
+ /* create a ns_table for sorting */
+ ns_table = (name_status*)malloc(sizeof(name_status)*n);
+ if (ns_table == 0) {
+ printf("Malloc failed\n");
+ exit(1);
+ }
+ for(j = 0; j < n; j++) {
+ ns_table[j].name = s_enfants[j];
+ ns_table[j].status = status[j];
+ }
+
+ qsort(ns_table, n, sizeof(ns_table[0]), compar_name_status);
+
+ for (j = 0; j < n; j++) {
+ if (strcmp(ns_table[j].name, enfants[j]) != 0) {
+ printf("pmGetChildrenStatus mismatch: \"%s\" vs \"%s\"\n",
+ enfants[j], ns_table[j].name);
+ }
+ }/*for*/
+ }/*if*/
+ if (s_enfants) free(s_enfants);
+ if (status) free(status);
+ }
+
+ if (has_children && vflag) {
+ printf("children of \"%s\" ...\n", name);
+ for (j = 0; j < n; j++) {
+
+ printf(" %-20s", enfants[j]);
+ if (ns_table)
+ printf("<s = %d>", ns_table[j].status);
+ printf("\n");
+ }
+ }
+
+ if (enfants) free(enfants);
+ if (ns_table) free(ns_table);
+
+}
+
+void
+parse_args(int argc, char **argv)
+{
+ extern char *optarg;
+ extern int optind;
+ int errflag = 0;
+ int c;
+ static char *usage = "[-bcLmvx] [-a archive] [-h host] [-n namespace] [-s 1|2] metricname ...";
+ char *endnum;
+ int sts;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D <dbg>]";
+#else
+ static char *debug = "";
+#endif
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:bcD:h:iLmn:s:vx")) != EOF) {
+ switch (c) {
+ case 'a': /* archive name for context */
+ if (context_type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -x allowed\n",
+ pmProgname);
+ errflag++;
+ }
+ context_type = PM_CONTEXT_ARCHIVE;
+ context_name = optarg;
+ break;
+
+ case 'b': /* dont do the children of "" test */
+ all_children = 0;
+ break;
+
+ case 'c': /* only do the children of "" test */
+ root_children = 1;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'h': /* context_namename for live context */
+ if (context_type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -x allowed\n",
+ pmProgname);
+ errflag++;
+ }
+ context_type = PM_CONTEXT_HOST;
+ context_name = optarg;
+ break;
+
+ case 'i': /* non-IRIX names (always true now) */
+ break;
+
+ case 'L': /* LOCAL context */
+ if (context_type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -x allowed\n",
+ pmProgname);
+ errflag++;
+ }
+ context_type = PM_CONTEXT_LOCAL;
+ context_name = NULL;
+ break;
+
+ case 'm': /* dump out the list of metrics to be tested */
+ dump_metrics = 1;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose */
+ vflag++;
+ break;
+
+ case 'x': /* NO context */
+ if (context_type != 0) {
+ fprintf(stderr, "%s: at most one of -a, -h, -L and -x allowed\n",
+ pmProgname);
+ errflag++;
+ }
+ context_type = -1;
+ context_name = NULL;
+ break;
+
+ case 's': /* pmns style */
+ pmns_style = (int)strtol(optarg, &endnum, 10);
+ if (*endnum != '\0') {
+ printf("%s: -s requires numeric argument\n", pmProgname);
+ errflag++;
+ }
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (context_type == 0) context_type = PM_CONTEXT_HOST;
+
+ numpmid = argc - optind;
+ if (numpmid < 1) {
+ errflag++;
+ }
+ else {
+ int i;
+ if ((midlist = (pmID *)malloc(numpmid*sizeof(pmID))) == NULL) {
+ fprintf(stderr, "malloc failed for midlist[]: %s\n", strerror(errno));
+ exit(1);
+ }
+ if ((namelist = (char **)malloc(numpmid*sizeof(char *))) == NULL) {
+ fprintf(stderr, "malloc failed for namelist[]: %s\n", strerror(errno));
+ exit(1);
+ }
+ for (i = 0; i < numpmid; i++)
+ namelist[i] = argv[optind+i];
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+}
+
+void
+load_namespace(char *namespace)
+{
+ struct timeval now, then;
+ int sts;
+
+ gettimeofday(&then, (struct timezone *)0);
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+ gettimeofday(&now, (struct timezone *)0);
+ printf("Name space load: %.2f msec\n", __pmtimevalSub(&now, &then)*1000);
+}
+
+void
+test_api(void)
+{
+ int sts;
+ int i;
+ int *instlist;
+ char **inamelist;
+ char **allnames;
+ int n;
+ char *back;
+ pmResult *resp;
+ pmDesc desc;
+
+ if (context_type != -1) {
+ if (context_type == 0) {
+ char local[MAXHOSTNAMELEN];
+ context_type = PM_CONTEXT_HOST;
+ gethostname(local, sizeof(local));
+ context_name = local;
+ }
+
+ if ((sts = pmNewContext(context_type, context_name)) < 0) {
+ printf("%s: Error in creating %s context for \"%s\": %s\n",
+ pmProgname,
+ context_type == PM_CONTEXT_HOST ? "host" :
+ context_type == PM_CONTEXT_ARCHIVE ? "archive" :
+ "local",
+ context_name,
+ pmErrStr(sts));
+ }
+ }
+
+ if (vflag > 1) {
+ __pmDumpNameSpace(stdout, 1);
+ }
+
+ n = pmLookupName(numpmid, namelist, midlist);
+ REPORT("pmLookupName", n);
+
+ for (i = 0; i < numpmid; i++) {
+ printf("%s: id[%d] = %s\n", namelist[i], i, pmIDStr(midlist[i]));
+ }
+
+ /* Set mode for archive so that an indom can be retrieved
+ * if necessary.
+ * Getting an indom is done based on current time.
+ * If we try and get an indom from the start then we may not
+ * have one yet.
+ */
+ if (context_type == PM_CONTEXT_ARCHIVE) {
+ struct timeval when;
+
+ n = pmGetArchiveEnd(&when);
+ REPORT("pmGetArchiveEnd", n);
+
+ n = pmSetMode(PM_MODE_BACK, &when, 1000);
+ REPORT("pmSetMode", n);
+ }
+
+ for (i = 0; i < numpmid && !root_children; i++) {
+ putchar('\n');
+ if (vflag) {
+ printf("=== metric %d === name: %s pmid %s\n", i, namelist[i], pmIDStr(midlist[i]));
+ }
+ if (midlist[i] != PM_ID_NULL) {
+ n = pmNameID(midlist[i], &back);
+ REPORT("pmNameID", n);
+ if (n >= 0) {
+ if (vflag) {
+ printf("pmid: %s ", pmIDStr(midlist[i]));
+ printf(" name: %s\n", back);
+ }
+ if (strcmp(namelist[i], back) != 0) {
+ printf("pmNameID botch: expected \"%s\", got \"%s\"\n",
+ namelist[i], back);
+ }
+ free(back);
+ }
+ n = pmNameAll(midlist[i], &allnames);
+ REPORT("pmNameAll", n);
+ if (n >= 0) {
+ int j;
+ for (j = 0; j < n; j++) {
+ if (vflag) {
+ printf("pmid: %s ", pmIDStr(midlist[i]));
+ printf(" name: %s\n", allnames[j]);
+ }
+ if (strcmp(namelist[i], allnames[j]) != 0) {
+ printf("pmNameAll info: expected \"%s\", got \"%s\"\n",
+ namelist[i], allnames[j]);
+ }
+ }
+ free(allnames);
+ }
+ if (context_type != -1) {
+ n = pmLookupDesc(midlist[i], &desc);
+ REPORT("pmLookupDesc", n);
+ if (n >= 0) {
+ if (vflag > 1) {
+ const char *u = pmUnitsStr(&desc.units);
+ printf("desc: type=%d indom=0x%x sem=%d units=%s\n",
+ desc.type, desc.indom, desc.sem,
+ *u == '\0' ? "none" : u);
+ }
+ if (desc.indom == PM_INDOM_NULL)
+ continue;
+ n = pmGetInDom(desc.indom, &instlist, &inamelist);
+ REPORT("pmGetInDom", n);
+ if (n >= 0) {
+ int j;
+ int numinst = n;
+ char *name;
+ for (j = 0; j < numinst; j++) {
+ if (vflag > 1)
+ printf(" instance id: 0x%x\n", instlist[j]);
+ n = pmNameInDom(desc.indom, instlist[j], &name);
+ REPORT("pmNameInDom", n);
+ if (n >= 0) {
+ if (vflag > 1)
+ printf(" %s (== %s?)\n", name, inamelist[j]);
+ n = pmLookupInDom(desc.indom, name);
+ REPORT("pmLookupInDom", n);
+ if (n >= 0) {
+ if (n != instlist[j]) {
+ printf("botch: pmLookupInDom returns 0x%x, expected 0x%x\n",
+ n, instlist[j]);
+ }
+ }
+ free(name);
+ }
+ }
+ free(instlist);
+ free(inamelist);
+ }
+ }
+ }
+ }
+ do_chn(namelist[i]);
+ } /* for each named metric */
+
+ if (all_children || root_children) {
+ /* root check */
+ /*
+ * This is only useful in a namspace where irix has not been stripped from the
+ * names. Once irix is stripped from the names, the list returned becomes
+ * to variable to do a QA in this manner.
+ * Test #568 using pmns_xlate tests the root.
+ */
+ printf("\n");
+ do_chn("");
+ }
+
+ if (context_type == PM_CONTEXT_ARCHIVE) {
+ struct timeval when;
+
+ when.tv_sec = 0;
+ when.tv_usec = 0;
+
+ if (vflag)
+ printf("\nArchive result ...\n");
+ for (i = 0; i < numpmid; i++) {
+ if (midlist[i] == PM_ID_NULL)
+ continue;
+ if ((n = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ printf("pmSetMode(PM_MODE_FORW): %s\n", pmErrStr(n));
+ }
+ else {
+ if (vflag)
+ printf("Fetch of %s:\n", namelist[i]);
+ if ((n = pmFetch(1, &midlist[i], &resp)) < 0) {
+ printf("Archive pmFetch: %s\n", pmErrStr(n));
+ }
+ else {
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ pmFreeResult(resp);
+ }
+ }
+ }/*for*/
+ }
+
+ else if (context_type == PM_CONTEXT_HOST) {
+ if ((n = pmSetMode(PM_MODE_LIVE, (struct timeval *)0, 0)) < 0) {
+ printf("pmSetMode(PM_MODE_LIVE): %s\n", pmErrStr(n));
+ }
+ else {
+ if ((n = pmFetch(numpmid, midlist, &resp)) < 0) {
+ printf("real-time pmFetch: %s\n", pmErrStr(n));
+ }
+ else {
+ if (vflag) {
+ printf("\nReal-time result ...\n");
+ __pmDumpResult(stdout, resp);
+ }
+ pmFreeResult(resp);
+ }
+ }
+ }
+
+}
+
+int
+main(int argc, char **argv)
+{
+ parse_args(argc, argv);
+
+ if (dump_metrics == 1) {
+ int i;
+ for(i = 0; i < numpmid; i++) {
+ printf("%s\n", namelist[i]);
+ }
+ exit(0);
+ }
+
+ if (pmns_style == 2) {
+ /* test it the new way with distributed namespace */
+ /* i.e. no client loaded namespace */
+ test_api();
+ }
+ else {
+ /* test it the old way with namespace file */
+ load_namespace(namespace);
+ test_api();
+ }
+
+ exit(0);
+}
diff --git a/qa/src/torture_trace.c b/qa/src/torture_trace.c
new file mode 100644
index 0000000..6e48182
--- /dev/null
+++ b/qa/src/torture_trace.c
@@ -0,0 +1,156 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/trace.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <time.h>
+#include <sys/types.h>
+#include <time.h>
+#ifdef IS_SOLARIS
+#include <sys/rtpriocntl.h>
+#include <sys/tspriocntl.h>
+#include <sys/processor.h>
+#endif
+#ifdef HAVE_PRCTL
+#include <sys/prctl.h>
+#endif
+#include <sys/wait.h>
+
+#ifndef HAVE_SPROC
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <pthread.h>
+#endif /*HAVE_SPROC*/
+
+#define MAXTAGNAMELEN 256
+
+static int obscount = 0;
+static int pointcount = 0;
+static int transactcount = 0;
+
+void
+gentag(char *buf)
+{
+ int i, len;
+
+ len = (int)lrand48() % 10 + 1;
+ for (i=0; i < len; i++)
+ buf[i] = (char)((int)lrand48() % 88 + 40); /* some ascii */
+ buf[i] = '\0';
+ /*fprintf(stderr, "Generated tag \"%s\" for pid=%d\n", buf, getpid());*/
+}
+
+void
+run(int sts, char *tag)
+{
+ char *err;
+ err = pmtraceerrstr(sts);
+ if (sts < 0)
+ fprintf(stderr, "failed on tag \"%s\": %s\n", tag, err);
+}
+
+/*ARGSUSED*/
+void
+sproc1(void *foo)
+{
+ int i;
+ char buf[64];
+ double nan=0.0;
+
+ for (i = 0; i < 5; i++)
+ nan = 0.0/nan;
+ for (i = 0; i < 1000; i++) {
+ gentag(buf);
+ run(pmtraceobs(buf, nan), buf);
+ run(pmtraceobs(buf, 2.239801), buf);
+ obscount++;
+ }
+}
+
+/*ARGSUSED*/
+void
+sproc2(void *foo)
+{
+ int i;
+ char buf[64];
+
+ for (i = 0; i < 2000; i++) {
+ gentag(buf);
+ run(pmtracepoint(buf), buf);
+ pointcount++;
+ }
+}
+
+/*ARGSUSED*/
+void
+sproc3(void *foo)
+{
+ int i;
+ char buf1[64], buf2[64], buf3[64], buf4[64];
+
+ gentag(buf1);
+ gentag(buf2);
+ gentag(buf3);
+ gentag(buf4);
+
+ for (i=0; i < 500; i++) {
+ run(pmtracebegin(buf1), buf1);
+ run(pmtracebegin(buf2), buf2);
+ run(pmtracebegin(buf3), buf3);
+ run(pmtraceend(buf2), buf2); transactcount++;
+ run(pmtracebegin(buf4), buf4);
+ run(pmtraceend(buf4), buf4); transactcount++;
+ run(pmtraceend(buf3), buf3); transactcount++;
+ run(pmtraceend(buf1), buf1); transactcount++;
+ }
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ int i;
+#ifndef HAVE_SPROC
+ pthread_t threads[3];
+#endif
+
+ /* exercise the zero-observation case */
+ run(pmtraceobs("zero", 0), "zero");
+ obscount++;
+
+ srand48((long)time(0));
+ /*pmtracestate(PMTRACE_STATE_COMMS | PMTRACE_STATE_API);*/
+
+ /* eat this, pmdatrace! */
+#ifdef HAVE_SPROC
+ sproc(sproc1, PR_SADDR, NULL);
+ sproc(sproc2, PR_SADDR, NULL);
+ sproc(sproc3, PR_SADDR, NULL);
+#else
+ pthread_create(threads, NULL, (void (*))sproc1, NULL);
+ pthread_create(threads+1, NULL, (void (*))sproc2, NULL);
+ pthread_create(threads+2, NULL, (void (*))sproc3, NULL);
+#endif
+
+ for (i=0; i < 3; i++) {
+#ifdef HAVE_SPROC
+ wait(NULL);
+#else
+ void * rv;
+
+ pthread_join (threads[i], &rv);
+#endif
+ fprintf(stderr, "reaped sproc #%d\n", i);
+ }
+
+ fprintf(stderr, "torture_trace counters:\n");
+ fprintf(stderr, " pmtraceobs %d\n", obscount);
+ fprintf(stderr, " pmtracepoint %d\n", pointcount);
+ fprintf(stderr, " pmtracetransact %d\n", transactcount);
+
+ exit(0);
+}
diff --git a/qa/src/tstate.c b/qa/src/tstate.c
new file mode 100644
index 0000000..2a581b4
--- /dev/null
+++ b/qa/src/tstate.c
@@ -0,0 +1,78 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <pcp/trace.h>
+
+
+int
+tracestate(int flag)
+{
+ int tmp = pmtracestate(0);
+ int var;
+
+ tmp |= flag;
+ var = pmtracestate(tmp);
+ fprintf(stderr, "tstate: state now is 0x%x\n", tmp);
+ return var;
+}
+
+int
+main(int argc, char **argv)
+{
+ int sts;
+
+ if (argc != 2) {
+ fprintf(stderr, "tstate: takes one argument.\n");
+ exit(1);
+ }
+
+ /*
+ * this exercises the state setting routine in libpcp_trace,
+ * particularly the async protocol flag setting, since this
+ * is a little more involved.
+ */
+
+ if (argv[1][0] == '1') {
+ fprintf(stderr, "--- Test 1 ---\n");
+ tracestate(PMTRACE_STATE_API);
+ tracestate(PMTRACE_STATE_PDU | PMTRACE_STATE_PDUBUF);
+ sts = pmtracepoint("tstate1"); /* no longer able to change protocol */
+ if (sts < 0) {
+ fprintf(stderr, "tstate pmtracepoint: %s\n", pmtraceerrstr(sts));
+ exit(1);
+ }
+ fprintf(stderr, "state should be only ASYNC 0x%x ...\n", PMTRACE_STATE_ASYNC);
+ tracestate(PMTRACE_STATE_ASYNC);
+ }
+ else if (argv[1][0] == '2') {
+ fprintf(stderr, "--- Test 2 ---\n");
+ tracestate(PMTRACE_STATE_ASYNC);
+ fprintf(stderr, "state should be same as previous ...\n");
+ tracestate(PMTRACE_STATE_ASYNC);
+ }
+ else if (argv[1][0] == '3') {
+ fprintf(stderr, "--- Test 3 ---\n");
+ pmtracepoint("tstate3");
+ fprintf(stderr, "state change should fail ... ");
+ if ((sts = pmtracestate(PMTRACE_STATE_ASYNC)) < 0)
+ fprintf(stderr, "OK\n");
+ else
+ fprintf(stderr, "urk - non-negative returned (%d)!\n", sts);
+ }
+ else if (argv[1][0] == '4') {
+ fprintf(stderr, "--- Test 4 ---\n");
+ tracestate(PMTRACE_STATE_ASYNC|PMTRACE_STATE_API);
+ sts = pmtracepoint("tstate4");
+ if (sts < 0) {
+ fprintf(stderr, "tstate pmtracepoint: %s\n", pmtraceerrstr(sts));
+ exit(1);
+ }
+ fprintf(stderr, "change to async only (0x%x)...\n", PMTRACE_STATE_ASYNC);
+ tracestate(PMTRACE_STATE_ASYNC);
+ }
+ else {
+ fprintf(stderr, "Don't know what to do with \"%s\"\n", argv[1]);
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/tzchange-10-a.0 b/qa/src/tzchange-10-a.0
new file mode 100644
index 0000000..5692826
--- /dev/null
+++ b/qa/src/tzchange-10-a.0
Binary files differ
diff --git a/qa/src/tzchange-10-a.index b/qa/src/tzchange-10-a.index
new file mode 100644
index 0000000..03ccb57
--- /dev/null
+++ b/qa/src/tzchange-10-a.index
Binary files differ
diff --git a/qa/src/tzchange-10-a.meta b/qa/src/tzchange-10-a.meta
new file mode 100644
index 0000000..c3a36f8
--- /dev/null
+++ b/qa/src/tzchange-10-a.meta
Binary files differ
diff --git a/qa/src/tzchange-10-b.0 b/qa/src/tzchange-10-b.0
new file mode 100644
index 0000000..b94ac52
--- /dev/null
+++ b/qa/src/tzchange-10-b.0
Binary files differ
diff --git a/qa/src/tzchange-10-b.index b/qa/src/tzchange-10-b.index
new file mode 100644
index 0000000..015ddfa
--- /dev/null
+++ b/qa/src/tzchange-10-b.index
Binary files differ
diff --git a/qa/src/tzchange-10-b.meta b/qa/src/tzchange-10-b.meta
new file mode 100644
index 0000000..8a5dbde
--- /dev/null
+++ b/qa/src/tzchange-10-b.meta
Binary files differ
diff --git a/qa/src/tzchange-11-a.0 b/qa/src/tzchange-11-a.0
new file mode 100644
index 0000000..590dab2
--- /dev/null
+++ b/qa/src/tzchange-11-a.0
Binary files differ
diff --git a/qa/src/tzchange-11-a.index b/qa/src/tzchange-11-a.index
new file mode 100644
index 0000000..41b61af
--- /dev/null
+++ b/qa/src/tzchange-11-a.index
Binary files differ
diff --git a/qa/src/tzchange-11-a.meta b/qa/src/tzchange-11-a.meta
new file mode 100644
index 0000000..7cef963
--- /dev/null
+++ b/qa/src/tzchange-11-a.meta
Binary files differ
diff --git a/qa/src/tzchange-11-b.0 b/qa/src/tzchange-11-b.0
new file mode 100644
index 0000000..dabb12b
--- /dev/null
+++ b/qa/src/tzchange-11-b.0
Binary files differ
diff --git a/qa/src/tzchange-11-b.index b/qa/src/tzchange-11-b.index
new file mode 100644
index 0000000..43793b5
--- /dev/null
+++ b/qa/src/tzchange-11-b.index
Binary files differ
diff --git a/qa/src/tzchange-11-b.meta b/qa/src/tzchange-11-b.meta
new file mode 100644
index 0000000..8311271
--- /dev/null
+++ b/qa/src/tzchange-11-b.meta
Binary files differ
diff --git a/qa/src/tzchange-12-a.0 b/qa/src/tzchange-12-a.0
new file mode 100644
index 0000000..ac963c8
--- /dev/null
+++ b/qa/src/tzchange-12-a.0
Binary files differ
diff --git a/qa/src/tzchange-12-a.index b/qa/src/tzchange-12-a.index
new file mode 100644
index 0000000..642f780
--- /dev/null
+++ b/qa/src/tzchange-12-a.index
Binary files differ
diff --git a/qa/src/tzchange-12-a.meta b/qa/src/tzchange-12-a.meta
new file mode 100644
index 0000000..6e00b93
--- /dev/null
+++ b/qa/src/tzchange-12-a.meta
Binary files differ
diff --git a/qa/src/tzchange-12-b.0 b/qa/src/tzchange-12-b.0
new file mode 100644
index 0000000..bd6c5d5
--- /dev/null
+++ b/qa/src/tzchange-12-b.0
Binary files differ
diff --git a/qa/src/tzchange-12-b.index b/qa/src/tzchange-12-b.index
new file mode 100644
index 0000000..51ca138
--- /dev/null
+++ b/qa/src/tzchange-12-b.index
Binary files differ
diff --git a/qa/src/tzchange-12-b.meta b/qa/src/tzchange-12-b.meta
new file mode 100644
index 0000000..13d6025
--- /dev/null
+++ b/qa/src/tzchange-12-b.meta
Binary files differ
diff --git a/qa/src/tztest.c b/qa/src/tztest.c
new file mode 100644
index 0000000..b5c6c2a
--- /dev/null
+++ b/qa/src/tztest.c
@@ -0,0 +1,81 @@
+#include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+char * __pmTimezone(void);
+
+int main()
+{
+ time_t sept = (30*365.25+244)*24*3600; /* 1 Septemnber 2000 */
+ time_t march = (30*365.25+60)*24*3600; /* 1 March 2000 */
+
+ /* Two sets of timezone strings - one works for the first half
+ * of the year, another for the second. Make sure that in the case
+ * where we cannot reduce the timezone string and have to re-write it
+ * same timezone is choosen */
+ char *zones[][8] = {
+ {
+ "ABC-10",
+ "ABC-10:01:02XYZ-11:03:04,M12.5.0/3:04:05,M7.1.0/2:06:07",
+ "ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00",
+ "ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00",
+ "ABC-10XYZ-11,M12.5.0/3:01:02,M7.1.0/2:03:04",
+ "ABC-10",
+ ":Someplace/Somewhere",
+ NULL
+ },
+ {
+ "ABC-10",
+ "XYZ-11:03:04ABC-10:01:02,M12.5.0/3:04:05,M7.1.0/2:06:07",
+ "ABC-10:00:00XYZ-11:00:00,M12.5.0/3:00:00,M7.5.0/2:00:00",
+ "ABC-10XYZ-11,M12.5.0/3:00:00,M7.1.0/2:00:00",
+ "XYZ-11ABC-10,M12.5.0/3:01:02,M7.1.0/2:03:04",
+ "ABC-10",
+ ":Someplace/Somewhere",
+ NULL
+ }};
+ char * tz = getenv("TZ");
+
+ if (tz == NULL) {
+ puts("Timezone is not set, abort the test");
+ } else {
+ int i;
+ time_t now = time(NULL);
+ struct tm * today = localtime(&now);
+ int which = today->tm_mon / 6;
+ char tb[256];
+ char * newtz = __pmTimezone();
+
+ printf("%s -> %s\n", tz, newtz);
+
+ for (i=0; zones[which][i] != NULL; i++) {
+ char * tz;
+ struct tm *tmp;
+ char tstr[64];
+ int dst;
+
+ sprintf(tb, "TZ=%s", zones[which][i]);
+ putenv(tb);
+ tzset();
+ tz = getenv("TZ");
+ newtz = __pmTimezone();
+
+ printf("%s -> %s\n", tz, newtz);
+ tmp = localtime(&march);
+ dst = tmp->tm_isdst;
+
+ strftime(tstr, 64, "%d %B %Y %H:%M %Z", tmp);
+ printf("In March daylight saving is %s, and the time is %s\n",
+ (dst ? "on" : "off"), tstr);
+ tmp = localtime(&sept);
+ dst = tmp->tm_isdst;
+ strftime(tstr, 64, "%d %B %Y %H:%M %Z", tmp);
+ printf("In September daylight saving is %s, and the time is %s\n\n",
+ (dst ? "on" : "off"), tstr);
+ }
+ }
+
+ return 0;
+}
diff --git a/qa/src/unpack.c b/qa/src/unpack.c
new file mode 100644
index 0000000..71bacdc
--- /dev/null
+++ b/qa/src/unpack.c
@@ -0,0 +1,479 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+/* === begin largely copied from samplepmda events.c === */
+
+static int mydomain = 29;
+
+static pmValueSet vs;
+static char *ebuf;
+static int ebuflen;
+static char *eptr;
+static char *ebufend;
+static pmEventArray *eap;
+static pmEventRecord *erp;
+
+static int
+check_buf(int need)
+{
+ int offset = eptr - ebuf;
+
+ while (&eptr[need] >= ebufend) {
+ ebuflen *= 2;
+ if ((ebuf = (char *)realloc(ebuf, ebuflen)) == NULL)
+ return -errno;
+ eptr = &ebuf[offset];
+ ebufend = &ebuf[ebuflen-1];
+ vs.vlist[0].value.pval = (pmValueBlock *)ebuf;
+ }
+ return 0;
+}
+
+static int
+add_param(pmID pmid, int type, pmAtomValue *avp)
+{
+ int need; /* bytes in the buffer */
+ int vlen; /* value only length */
+ int sts;
+ pmEventParameter *epp;
+ void *src;
+
+ need = sizeof(pmEventParameter);
+ switch (type) {
+ case PM_TYPE_32:
+ case PM_TYPE_U32:
+ vlen = sizeof(avp->l);
+ need += vlen;
+ src = &avp->l;
+ break;
+ case PM_TYPE_64:
+ case PM_TYPE_U64:
+ vlen = sizeof(avp->ll);
+ need += vlen;
+ src = &avp->ll;
+ break;
+ case PM_TYPE_FLOAT:
+ vlen = sizeof(avp->f);
+ need += vlen;
+ src = &avp->f;
+ break;
+ case PM_TYPE_DOUBLE:
+ vlen = sizeof(avp->d);
+ need += vlen;
+ src = &avp->d;
+ break;
+ case PM_TYPE_STRING:
+ vlen = strlen(avp->cp);
+ need += PM_PDU_SIZE_BYTES(vlen);
+ src = avp->cp;
+ break;
+ case PM_TYPE_AGGREGATE:
+ case PM_TYPE_AGGREGATE_STATIC:
+ vlen = avp->vbp->vlen - PM_VAL_HDR_SIZE;
+ need += PM_PDU_SIZE_BYTES(vlen);
+ src = avp->vbp->vbuf;
+ break;
+ default:
+ fprintf(stderr, "add_parameter failed: bad type (%d)\n", type);
+ exit(1);
+ }
+ if ((sts = check_buf(need)) < 0) {
+ fprintf(stderr, "add_parameter failed: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ epp = (pmEventParameter *)eptr;
+ epp->ep_pmid = pmid;
+ epp->ep_len = PM_VAL_HDR_SIZE + vlen;
+ epp->ep_type = type;
+ memcpy((void *)(eptr + sizeof(pmEventParameter)), src, vlen);
+ eptr += need;
+ erp->er_nparams++;
+ return 0;
+}
+
+static void
+reset(void)
+{
+ eptr = ebuf;
+ eap = (pmEventArray *)eptr;
+ eap->ea_nrecords = 0;
+ eptr += sizeof(pmEventArray) - sizeof(pmEventRecord);
+ vs.numval = 1;
+ vs.valfmt = PM_VAL_DPTR;
+ vs.vlist[0].inst = PM_IN_NULL;
+}
+
+static int
+add_record(struct timeval *tp, int flags)
+{
+ int sts;
+
+ if ((sts = check_buf(sizeof(pmEventRecord) - sizeof(pmEventParameter))) < 0) {
+ fprintf(stderr, "add_record failed: %s\n", pmErrStr(sts));
+ exit(1);
+ }
+ eap->ea_nrecords++;
+ erp = (pmEventRecord *)eptr;
+ erp->er_timestamp.tv_sec = (__int32_t)tp->tv_sec;
+ erp->er_timestamp.tv_usec = (__int32_t)tp->tv_usec;
+ erp->er_nparams = 0;
+ erp->er_flags = flags;
+ eptr += sizeof(pmEventRecord) - sizeof(pmEventParameter);
+ return 0;
+}
+/* === end copied from samplepmda events.c === */
+
+static void
+dump(char *xpect)
+{
+ pmResult **res;
+ int nmissed;
+ int nrecords;
+ int r;
+ int k;
+ static pmID pmid_flags = 0;
+ static pmID pmid_missed;
+
+ fprintf(stderr, "Expecting ... %s\n", xpect);
+
+ for (k = 0; k < vs.numval || vs.numval == PM_ERR_GENERIC; k++) {
+ if (vs.vlist[k].inst != PM_IN_NULL)
+ fprintf(stderr, "[instance %d]\n", vs.vlist[k].inst);
+ nrecords = pmUnpackEventRecords(&vs, k, &res);
+
+ if (nrecords < 0) {
+ fprintf(stderr, "pmUnpackEventRecords: %s\n", pmErrStr(nrecords));
+ return;
+ }
+
+ /* lifted from pminfo.c */
+ if (pmid_flags == 0) {
+ /*
+ * get PMID for event.flags and event.missed
+ * note that pmUnpackEventRecords() will have called
+ * __pmRegisterAnon(), so the anon metrics
+ * should now be in the PMNS
+ */
+ char *name_flags = "event.flags";
+ char *name_missed = "event.missed";
+ int sts;
+ sts = pmLookupName(1, &name_flags, &pmid_flags);
+ if (sts < 0) {
+ /* should not happen! */
+ fprintf(stderr, "Warning: cannot get PMID for %s: %s\n", name_flags, pmErrStr(sts));
+ /* avoid subsequent warnings ... */
+ __pmid_int(&pmid_flags)->item = 1;
+ }
+ sts = pmLookupName(1, &name_missed, &pmid_missed);
+ if (sts < 0) {
+ /* should not happen! */
+ fprintf(stderr, "Warning: cannot get PMID for %s: %s\n", name_missed, pmErrStr(sts));
+ /* avoid subsequent warnings ... */
+ __pmid_int(&pmid_missed)->item = 1;
+ }
+ }
+
+ nmissed = 0;
+ for (r = 0; r < nrecords; r++) {
+ if (res[r]->numpmid == 2 && res[r]->vset[0]->pmid == pmid_flags &&
+ (res[r]->vset[0]->vlist[0].value.lval & PM_EVENT_FLAG_MISSED) &&
+ res[r]->vset[1]->pmid == pmid_missed) {
+ nmissed += res[r]->vset[1]->vlist[0].value.lval;
+ }
+ }
+
+ fprintf(stderr, "Array contains %d records and %d missed records\n", nrecords, nmissed);
+ if (nrecords == 0)
+ continue;
+
+ for (r = 0; r < nrecords; r++) {
+ fprintf(stderr, "pmResult[%d]\n", r);
+ __pmDumpResult(stderr, res[r]);
+ }
+ pmFreeEventResult(res);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int errflag = 0;
+ int sts;
+ int c;
+ struct timeval stamp;
+ pmAtomValue atom;
+ int savelen;
+ pmEventParameter *epp;
+/* === begin largely copied from samplepmda events.c === */
+ static pmValueBlock *aggr;
+ static char aggrval[] = { '\01', '\03', '\07', '\017', '\037', '\077', '\177', '\377' };
+ pmID pmid_array = PMDA_PMID(4095,0); /* event.records */
+ pmID pmid_type = PMDA_PMID(0,127); /* event.type */
+ pmID pmid_32 = PMDA_PMID(0,128); /* event.param_32 */
+ pmID pmid_u32 = PMDA_PMID(0,129); /* event.param_u32 */
+ pmID pmid_64 = PMDA_PMID(0,130); /* event.param_64 */
+ pmID pmid_u64 = PMDA_PMID(0,131); /* event.param_u64 */
+ pmID pmid_float = PMDA_PMID(0,132); /* event.param_float */
+ pmID pmid_double = PMDA_PMID(0,133); /* event.param_double */
+ pmID pmid_string = PMDA_PMID(0,134); /* event.param_string */
+ pmID pmid_aggregate = PMDA_PMID(0,135); /* event.param_string */
+
+ /* first time, punt on a 512 byte buffer */
+ ebuflen = 512;
+ ebuf = eptr = (char *)malloc(ebuflen);
+ if (ebuf == NULL) {
+ fprintf(stderr, "initial ebuf malloc failed: %s\n", strerror(errno));
+ exit(1);
+ }
+ ebufend = &ebuf[ebuflen-1];
+ /*
+ * also, fix the domain field in the event parameter PMIDs ...
+ * note these PMIDs must match the corresponding metrics in
+ * desctab[] and this cannot easily be done automatically
+ */
+ ((__pmID_int *)&pmid_array)->domain = mydomain;
+ ((__pmID_int *)&pmid_type)->domain = mydomain;
+ ((__pmID_int *)&pmid_32)->domain = mydomain;
+ ((__pmID_int *)&pmid_u32)->domain = mydomain;
+ ((__pmID_int *)&pmid_64)->domain = mydomain;
+ ((__pmID_int *)&pmid_u64)->domain = mydomain;
+ ((__pmID_int *)&pmid_float)->domain = mydomain;
+ ((__pmID_int *)&pmid_double)->domain = mydomain;
+ ((__pmID_int *)&pmid_string)->domain = mydomain;
+ ((__pmID_int *)&pmid_aggregate)->domain = mydomain;
+ /* build pmValueBlock for aggregate value */
+ aggr = (pmValueBlock *)malloc(PM_VAL_HDR_SIZE + sizeof(aggrval));
+ aggr->vtype = PM_TYPE_AGGREGATE;
+ aggr->vlen = PM_VAL_HDR_SIZE + sizeof(aggrval);
+ memcpy(aggr->vbuf, (void *)aggrval, sizeof(aggrval));
+
+/* === end copied from samplepmda events.c === */
+
+ vs.pmid = pmid_array;
+ vs.numval = 1;
+ vs.valfmt = PM_VAL_DPTR;
+ vs.vlist[0].inst = PM_IN_NULL;
+ vs.vlist[0].value.pval = (pmValueBlock *)ebuf;
+
+ __pmSetProgname(argv[0]);
+
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s ...\n", pmProgname);
+ fprintf(stderr, "options:\n");
+ fprintf(stderr, "-D debug\n");
+ exit(1);
+ }
+
+ reset();
+ gettimeofday(&stamp, NULL);
+ /* rebase event records 10 secs in past, add 1 sec for each new record */
+ stamp.tv_sec -= 10;
+
+ eap->ea_type = 0;
+ eap->ea_len = 0;
+ dump("Unknown or illegal metric type");
+ eap->ea_type = PM_TYPE_EVENT;
+
+ eap->ea_nrecords = -1;
+ eap->ea_len = eptr - ebuf;
+ dump("Error - ea_nrecords < 0");
+ eap->ea_nrecords = 0;
+
+ eap->ea_len = PM_VAL_HDR_SIZE;
+ dump("Error - vlen way too small");
+
+ eap->ea_len = eptr - ebuf;
+ dump("No records");
+
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ eap->ea_len = eptr - ebuf;
+ dump("1 record, no params");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ eap->ea_len = eptr - ebuf;
+ dump("1 record, u32 param = 1");
+
+ reset();
+ add_record(&stamp, 1);
+ stamp.tv_sec++;
+ atom.ul = 2;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.ll = -3;
+ add_param(pmid_64, PM_TYPE_64, &atom);
+ eap->ea_len = eptr - ebuf;
+ dump("1 record, u32 param = 2, u64 param = -3");
+ eap->ea_len--;
+ dump("Error - buffer overrun @ parameter");
+
+ reset();
+ add_record(&stamp, PM_EVENT_FLAG_MISSED);
+ stamp.tv_sec++;
+ erp->er_nparams = 3;
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 4;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.ull = 5;
+ add_param(pmid_u64, PM_TYPE_U64, &atom);
+ atom.cp = "6";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 7;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.d = 8;
+ add_param(pmid_double, PM_TYPE_DOUBLE, &atom);
+ atom.d = -9;
+ add_param(pmid_double, PM_TYPE_DOUBLE, &atom);
+ add_record(&stamp, 2);
+ stamp.tv_sec++;
+ atom.ul = 10;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.ull = 11;
+ add_param(pmid_u64, PM_TYPE_U64, &atom);
+ atom.cp = "twelve";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ atom.cp = "thirteen";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ atom.l = 14;
+ add_param(pmid_32, PM_TYPE_32, &atom);
+ atom.ul = 15;
+ add_param(pmid_u32, PM_TYPE_U32, &atom);
+ add_record(&stamp, PM_EVENT_FLAG_MISSED);
+ stamp.tv_sec++;
+ erp->er_nparams = 4;
+ savelen = eptr - ebuf;
+ add_record(&stamp,0);
+ stamp.tv_sec++;
+ atom.ul = 16;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.f = -17;
+ add_param(pmid_float, PM_TYPE_FLOAT, &atom);
+ atom.vbp = aggr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ eap->ea_len = eptr - ebuf;
+ dump("6 records, 7 missed [u32=4 u64=5 str=\"6\"][u32=7 d=8 d=-9][u32=10 u64=11 str=\"twelve\" str=\"thirteen\" 32=-14 u32=15][u32=16 f=-17 aggr=...]");
+
+ eap->ea_len = savelen;
+ dump("Error - buffer overrun @ record");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ eap->ea_len = eptr - ebuf;
+ vs.numval = PM_ERR_GENERIC;
+ dump("bad numval");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ eap->ea_len = eptr - ebuf;
+ vs.valfmt = 42;
+ dump("bad valfmt");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 1;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ eap->ea_len = eptr - ebuf;
+ vs.vlist[0].inst = 42;
+ dump("odd instance");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.vbp = aggr;
+ epp = (pmEventParameter *)eptr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ epp->ep_type = PM_TYPE_EVENT;
+ eap->ea_len = eptr - ebuf;
+ dump("1 record, nested event type @ 1st parameter");
+
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 18;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 19;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ atom.vbp = aggr;
+ epp = (pmEventParameter *)eptr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ epp->ep_type = PM_TYPE_EVENT;
+ atom.ul = 20;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.ul = 21;
+ add_param(pmid_type, PM_TYPE_U32, &atom);
+ eap->ea_len = eptr - ebuf;
+ dump("3 records, nested event type @ 2nd parameter of 2nd record");
+
+ printf("\n");
+ printf("__pmDumpEventRecords coverage test ...\n");
+ reset();
+ add_record(&stamp, 0);
+ stamp.tv_sec++;
+ atom.l = 22;
+ add_param(pmid_type, PM_TYPE_32, &atom);
+ atom.ul = 23;
+ add_param(pmid_u32, PM_TYPE_U32, &atom);
+ atom.ll = -24;
+ add_param(pmid_64, PM_TYPE_64, &atom);
+ atom.ull = 25;
+ add_param(pmid_u64, PM_TYPE_U64, &atom);
+ atom.f = -26;
+ add_param(pmid_float, PM_TYPE_FLOAT, &atom);
+ atom.d = 27;
+ add_param(pmid_double, PM_TYPE_DOUBLE, &atom);
+ atom.cp = "minus twenty-eight";
+ add_param(pmid_string, PM_TYPE_STRING, &atom);
+ atom.vbp = aggr;
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE, &atom);
+ add_param(pmid_aggregate, PM_TYPE_AGGREGATE_STATIC, &atom);
+ epp = (pmEventParameter *)eptr;
+ atom.l = 29;
+ add_param(pmid_32, PM_TYPE_32, &atom);
+ eap->ea_len = eptr - ebuf;
+ pmDebug |= DBG_TRACE_FETCH;
+ dump("all good");
+ epp->ep_type = PM_TYPE_UNKNOWN;
+ __pmDumpEventRecords(stdout, &vs, 0);
+
+ return 0;
+}
diff --git a/qa/src/username.c b/qa/src/username.c
new file mode 100644
index 0000000..6984997
--- /dev/null
+++ b/qa/src/username.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2012 Red Hat.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <unistd.h>
+
+#include "localconfig.h"
+
+#if PCP_VER < 3611
+#define __pmSetProcessIdentity(x) (exit(1), 1)
+#endif
+
+static void
+usage (void)
+{
+ fprintf(stderr, "Usage %s: username\n", pmProgname);
+ exit(1);
+}
+
+int
+main(int argc, char* argv[])
+{
+ int sts;
+
+ __pmSetProgname(argv[0]);
+ if (argc != 2)
+ usage();
+ sts = __pmSetProcessIdentity(argv[1]);
+ pause();
+ return sts;
+}
diff --git a/qa/src/uwrap.0 b/qa/src/uwrap.0
new file mode 100644
index 0000000..6a646d8
--- /dev/null
+++ b/qa/src/uwrap.0
Binary files differ
diff --git a/qa/src/uwrap.config b/qa/src/uwrap.config
new file mode 100644
index 0000000..de8a408
--- /dev/null
+++ b/qa/src/uwrap.config
@@ -0,0 +1,8 @@
+#
+# pmlogger(1) configuration file suitable creating an archive to be
+# used with pmdahotproc(1)
+#
+
+log advisory on 1 seconds {
+ sample.wrap.ulong
+}
diff --git a/qa/src/uwrap.index b/qa/src/uwrap.index
new file mode 100644
index 0000000..63d7f61
--- /dev/null
+++ b/qa/src/uwrap.index
Binary files differ
diff --git a/qa/src/uwrap.meta b/qa/src/uwrap.meta
new file mode 100644
index 0000000..4ec48ce
--- /dev/null
+++ b/qa/src/uwrap.meta
Binary files differ
diff --git a/qa/src/versiondefs b/qa/src/versiondefs
new file mode 100644
index 0000000..d90074d
--- /dev/null
+++ b/qa/src/versiondefs
@@ -0,0 +1,18 @@
+# From the system on which the test is being run
+#
+
+#if !defined(RELEASE_MAJOR)
+include $(ROOT)/usr/include/make/releasedefs
+#endif
+OS_REL = $(RELEASE_MAJOR).$(RELEASE_MINOR)
+IRIX = IRIX$(OS_REL:S/./_/g)
+
+# IMPORTANT
+# set this to match the style of the IRIX kernel you are
+# testing on locally
+#
+IRIX_OBJECT != ../src/get-irix-object
+
+# Stuff that varies ...
+HAVE_DEV_IN_LIBPCP != sed -n '/^\#ifdef HAVE_DEV_IN_LIBPCP/s/\#ifdef /-D/p' /usr/include/pcp/impl.h
+
diff --git a/qa/src/vldb-disks.0 b/qa/src/vldb-disks.0
new file mode 100644
index 0000000..cd03022
--- /dev/null
+++ b/qa/src/vldb-disks.0
Binary files differ
diff --git a/qa/src/vldb-disks.index b/qa/src/vldb-disks.index
new file mode 100644
index 0000000..0ef9ff2
--- /dev/null
+++ b/qa/src/vldb-disks.index
Binary files differ
diff --git a/qa/src/vldb-disks.meta b/qa/src/vldb-disks.meta
new file mode 100644
index 0000000..60cff25
--- /dev/null
+++ b/qa/src/vldb-disks.meta
Binary files differ
diff --git a/qa/src/whichtimezone.c b/qa/src/whichtimezone.c
new file mode 100644
index 0000000..35cfe0e
--- /dev/null
+++ b/qa/src/whichtimezone.c
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <time.h>
+
+int
+main(int argc, char *argv[])
+{
+ time_t clock;
+ char *p;
+ int i;
+ char buf[28];
+
+ i = pmLoadNameSpace(PM_NS_DEFAULT);
+ if (i < 0) {
+ printf("pmLoadNameSpace: %s\n", pmErrStr(i));
+ exit(1);
+ }
+
+ for (--argc; argc > 0; argc--, argv++) {
+ printf("Trying %s ...\n", argv[1]);
+ i = pmNewContext(PM_CONTEXT_HOST, argv[1]);
+ if (i < 0) {
+ printf("pmNewContext: %s\n", pmErrStr(i));
+ goto more;
+ }
+ i = pmNewContextZone();
+ if (i < 0) {
+ printf("pmNewContextZone: %s\n", pmErrStr(i));
+ goto more;
+ }
+
+ i = pmWhichZone(&p);
+ time(&clock);
+ printf("zone: %d TZ: %s ctime: %s\n", i, p, pmCtime(&clock, buf));
+more: continue;
+ }
+
+ exit(0);
+}
diff --git a/qa/src/wrap.0 b/qa/src/wrap.0
new file mode 100644
index 0000000..3a75a48
--- /dev/null
+++ b/qa/src/wrap.0
Binary files differ
diff --git a/qa/src/wrap.config b/qa/src/wrap.config
new file mode 100644
index 0000000..236d4d7
--- /dev/null
+++ b/qa/src/wrap.config
@@ -0,0 +1,8 @@
+#
+# pmlogger(1) configuration file suitable creating an archive to be
+# used with pmdahotproc(1)
+#
+
+log advisory on 1 seconds {
+ sample.wrap.long
+}
diff --git a/qa/src/wrap.index b/qa/src/wrap.index
new file mode 100644
index 0000000..504d68a
--- /dev/null
+++ b/qa/src/wrap.index
Binary files differ
diff --git a/qa/src/wrap.meta b/qa/src/wrap.meta
new file mode 100644
index 0000000..bfe93f9
--- /dev/null
+++ b/qa/src/wrap.meta
Binary files differ
diff --git a/qa/src/wrap_int.c b/qa/src/wrap_int.c
new file mode 100644
index 0000000..f91746b
--- /dev/null
+++ b/qa/src/wrap_int.c
@@ -0,0 +1,120 @@
+/*
+ * Generate sequences of values with wrapping for testing how
+ * tools deal with this. Note: wrapping of *signed* integers
+ * is undefined (according to gcc folks) and they take that as
+ * meaning "anything can happen". For some compilers, that's
+ * taken literally at higher optimisation levels, resulting in
+ * crashes, infinite loops, early exit; so *anything goes* for
+ * this test program. Do not rely on its output when signed
+ * integers are being used (the default, without -u).
+ *
+ * http://thiemonagel.de/2010/01/signed-integer-overflow/
+ * https://patchwork.kernel.org/patch/34925/
+ */
+#include <stdio.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define NUM_SAMPLES 20
+
+#ifndef LONGLONG_MAX
+#define LONGLONG_MAX 9223372036854775807LL /* max "long long int" */
+#endif
+
+#ifndef ULONGLONG_MAX
+#define ULONGLONG_MAX 18446744073709551615LLU /* max "unsigned long long" */
+#endif
+
+int
+main(int argc, char *argv[])
+{
+ int use_longlong = 0;
+ int num_samples = NUM_SAMPLES;
+ int notsigned = 0;
+ int c;
+ extern char *optarg;
+
+ while ((c = getopt(argc, argv, "ln:u")) != EOF) {
+ switch (c) {
+ case 'l':
+ /* use long long */
+ use_longlong = 1;
+ break;
+
+ case 'n':
+ num_samples = atoi(optarg);
+ break;
+
+ case 'u':
+ notsigned = 1;
+ break;
+ }
+ }
+
+ if (! notsigned ) {
+ if (! use_longlong) {
+ int x = 0;
+ int prev = 0;
+ int i;
+ double a;
+
+ for (i=0;i<=num_samples;i++) {
+ x += INT_MAX/2 - 1;
+ a = (double)x - (double)prev;
+ prev = x;
+ if (i > 0)
+ printf("%.4g\n", a);
+ }
+ }
+ else {
+ long long x = 0;
+ long long prev = 0;
+ int i;
+ double a;
+
+ for (i=0;i<=num_samples;i++) {
+ x += LONGLONG_MAX/2 - 1;
+ a = (double)x - (double)prev;
+ prev = x;
+ if (i > 0)
+ printf("%.4g\n", a);
+ }
+
+ }
+ }
+ else {
+ if (! use_longlong) {
+ unsigned int x = 0;
+ unsigned int prev = 0;
+ int i;
+ double a;
+
+ for (i=0;i<=num_samples;i++) {
+ x += UINT_MAX/2 - 1;
+ a = (double)x - (double)prev;
+ prev = x;
+ if (i > 0)
+ printf("%.4g\n", a);
+ }
+ }
+ else {
+ unsigned long long x = 0;
+ unsigned long long prev = 0;
+ int i;
+ double a;
+
+ for (i=0;i<=num_samples;i++) {
+ x += ULONGLONG_MAX/2 - 1;
+ a = (double)x - (double)prev;
+ prev = x;
+ if (i > 0)
+ printf("%.4g\n", a);
+ }
+
+ }
+ }
+
+ exit(0);
+
+}
diff --git a/qa/src/write-bf.c b/qa/src/write-bf.c
new file mode 100644
index 0000000..8eff75f
--- /dev/null
+++ b/qa/src/write-bf.c
@@ -0,0 +1,106 @@
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+typedef struct {
+ unsigned int a:16;
+ unsigned int b:7;
+ unsigned int c:3;
+ unsigned int d:3;
+ unsigned int e:3;
+ unsigned int f:4;
+ unsigned int g:12;
+} ext_bits_t;
+
+typedef struct {
+ unsigned int a:16;
+ unsigned int b:7;
+ unsigned int c:3;
+ unsigned int d:3;
+ unsigned int e:3;
+ unsigned int f:4;
+ unsigned int g:12;
+} bits_t;
+
+bits_t outbits = { 0xdead, 0x5f, 0x3, 0x5, 0x7, 0xc, 0xafe };
+
+int
+main(int argc, char *argv[])
+{
+ bits_t inbits;
+ ext_bits_t extbits;
+ __uint32_t *ip;
+ int i;
+ int sts;
+
+ fprintf(stderr, "sizeof(bits_t): %d\n", (int)sizeof(bits_t));
+
+ if (strcmp(basename(argv[0]), "read-bf") == 0) {
+ sts = read(0, &extbits, sizeof(ext_bits_t));
+ if (sts != sizeof(ext_bits_t)) {
+ fprintf(stderr, "read() returns %d not %d as expected\n", sts, (int)sizeof(ext_bits_t));
+ exit(1);
+ }
+
+ fprintf(stderr, "read: ");
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ fprintf(stderr, " %08x", *ip);
+ fputc('\n', stderr);
+
+ /*
+ * swap bytes, then assign fields
+ */
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ *ip = ntohl(*ip);
+
+ inbits.a = extbits.a;
+ inbits.b = extbits.b;
+ inbits.c = extbits.c;
+ inbits.d = extbits.d;
+ inbits.e = extbits.e;
+ inbits.f = extbits.f;
+ inbits.g = extbits.g;
+
+ if (inbits.a != outbits.a)
+ fprintf(stderr, "Error: \"a\" got %x expected %x\n", inbits.a, outbits.a);
+ if (inbits.b != outbits.b)
+ fprintf(stderr, "Error: \"b\" got %x expected %x\n", inbits.b, outbits.b);
+ if (inbits.c != outbits.c)
+ fprintf(stderr, "Error: \"c\" got %x expected %x\n", inbits.c, outbits.c);
+ if (inbits.d != outbits.d)
+ fprintf(stderr, "Error: \"d\" got %x expected %x\n", inbits.d, outbits.d);
+ if (inbits.e != outbits.e)
+ fprintf(stderr, "Error: \"e\" got %x expected %x\n", inbits.e, outbits.e);
+ if (inbits.f != outbits.f)
+ fprintf(stderr, "Error: \"f\" got %x expected %x\n", inbits.f, outbits.f);
+ if (inbits.g != outbits.g)
+ fprintf(stderr, "Error: \"g\" got %x expected %x\n", inbits.g, outbits.g);
+ }
+ else {
+ /*
+ * assign fields, then swap bytes
+ */
+ memset((void *)&extbits, 0, sizeof(ext_bits_t));
+ extbits.a = outbits.a;
+ extbits.b = outbits.b;
+ extbits.c = outbits.c;
+ extbits.d = outbits.d;
+ extbits.e = outbits.e;
+ extbits.f = outbits.f;
+ extbits.g = outbits.g;
+
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ *ip = htonl(*ip);
+
+ fprintf(stderr, "write: ");
+ for (i = 0, ip = (__uint32_t *)&extbits; i < sizeof(ext_bits_t); i += sizeof(*ip), ip++)
+ fprintf(stderr, " %08x", *ip);
+ fputc('\n', stderr);
+
+ sts = write(1, &extbits, sizeof(bits_t));
+ if (sts != sizeof(bits_t)) {
+ fprintf(stderr, "write() returns %d not %d as expected\n", sts, (int)sizeof(bits_t));
+ exit(1);
+ }
+ }
+ exit(0);
+}
diff --git a/qa/src/xarch.c b/qa/src/xarch.c
new file mode 100644
index 0000000..cc34de4
--- /dev/null
+++ b/qa/src/xarch.c
@@ -0,0 +1,425 @@
+/*
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * exercise archive-based pmFetch and pmSetMode ops
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int vflag;
+static int tflag;
+static int numpmid;
+static pmID pmidlist[20];
+static char *namelist[20];
+
+static void
+cmpres(int n, pmResult *e, pmResult *g)
+{
+ int i;
+ int j;
+ int err = 0;
+
+ if (e->timestamp.tv_sec != g->timestamp.tv_sec ||
+ e->timestamp.tv_usec != g->timestamp.tv_usec) {
+ printf("[sample %d] pmResult.timestamp: expected %ld.%06ld, got %ld.%06ld\n",
+ n, (long)e->timestamp.tv_sec, (long)e->timestamp.tv_usec,
+ (long)g->timestamp.tv_sec, (long)g->timestamp.tv_usec);
+ goto FAILED;
+ }
+ if (e->numpmid != g->numpmid) {
+ printf("[sample %d] pmResult.numpmid: expected %d, got %d\n",
+ n, e->numpmid, g->numpmid);
+ goto FAILED;
+ }
+
+ for (i = 0; i < e->numpmid; i++) {
+ if (e->vset[i]->pmid != g->vset[i]->pmid) {
+ printf("[sample %d] pmResult.vset[%d].pmid: expected %s",
+ n, i, pmIDStr(e->vset[i]->pmid));
+ printf(" got %s\n", pmIDStr(g->vset[i]->pmid));
+ err++;
+ }
+ if (e->vset[i]->numval != g->vset[i]->numval) {
+ printf("[sample %d] pmResult.vset[%d].numval: expected %d, got %d\n",
+ n, i, e->vset[i]->numval, g->vset[i]->numval);
+ err++;
+ continue;
+ }
+ if (e->vset[i]->valfmt != g->vset[i]->valfmt) {
+ printf("[sample %d] pmResult.vset[%d].valfmt: expected %d, got %d\n",
+ n, i, e->vset[i]->valfmt, g->vset[i]->valfmt);
+ err++;
+ continue;
+ }
+ if (e->vset[i]->valfmt != PM_VAL_INSITU)
+ continue;
+ for (j = 0; j < e->vset[i]->numval; j++) {
+ if (e->vset[i]->vlist[j].inst != g->vset[i]->vlist[j].inst) {
+ printf("[sample %d] pmResult.vset[%d].vlist[%d].inst: expected %d, got %d\n",
+ n, i, j, e->vset[i]->vlist[j].inst, g->vset[i]->vlist[j].inst);
+ err++;
+ }
+ if (e->vset[i]->vlist[j].value.lval != g->vset[i]->vlist[j].value.lval) {
+ printf("[sample %d] pmResult.vset[%d].vlist[%d].lval: expected %d, got %d\n",
+ n, i, j, e->vset[i]->vlist[j].value.lval, g->vset[i]->vlist[j].value.lval);
+ err++;
+ }
+ }
+ }
+
+ if (err == 0)
+ return;
+
+FAILED:
+ printf("Expected ...\n");
+ __pmDumpResult(stdout, e);
+ printf("Got ...\n");
+ __pmDumpResult(stdout, g);
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int ctx[2];
+ int errflag = 0;
+ char *archive = "foo";
+ char *namespace = PM_NS_DEFAULT;
+ static char *usage = "[-D N] [-a archive] [-n namespace] [-v] [metric ...]";
+ int i;
+ int j;
+ int k;
+ int n;
+ pmLogLabel loglabel;
+ pmResult *resp;
+ pmResult **resvec = (pmResult **)0;
+ int resnum = 0;
+ struct timeval when;
+ int done;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:tv")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive */
+ archive = optarg;
+ break;
+
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose output */
+ vflag++;
+ break;
+
+ case 't': /* trim namespace */
+ tflag++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s\n", pmProgname, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx[0] = pmNewContext(PM_CONTEXT_ARCHIVE, archive)) < 0) {
+ printf("%s: Cannot connect to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(ctx[0]));
+ exit(1);
+ }
+ if ((sts = pmGetArchiveLabel(&loglabel)) < 0) {
+ printf("%s: pmGetArchiveLabel(%d): %s\n", pmProgname, ctx[0], pmErrStr(sts));
+ exit(1);
+ }
+
+ when.tv_sec = 0;
+ when.tv_usec = 0;
+ if ((sts = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx[1] = pmDupContext()) < 0) {
+ printf("%s: Cannot dup context to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(ctx[0]));
+ exit(1);
+ }
+ if ((sts = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ pmUseContext(ctx[0]);
+ if (tflag)
+ pmTrimNameSpace();
+
+ i = 0;
+ while (optind < argc - 1) {
+ if (i == 20) {
+ fprintf(stderr, "%s: Too many metrics, re-build me\n", pmProgname);
+ exit(1);
+ }
+ namelist[i++] = argv[optind]++;
+ }
+
+ if (i == 0) {
+ /*
+ * default metrics biased towards log "foo"
+ */
+ namelist[i++] = "sample.seconds";
+ namelist[i++] = "sample.colour";
+ namelist[i++] = "sample.drift";
+ namelist[i++] = "sample.lights";
+ namelist[i++] = "sampledso.milliseconds";
+ namelist[i++] = "sampledso.bin";
+ }
+ numpmid = i;
+
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts < 0) {
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ }
+
+ printf("\nPass 1: forward scan\n");
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ resnum++;
+ resvec = (pmResult **)realloc(resvec, resnum * sizeof(resvec[0]));
+ resvec[resnum - 1] = resp;
+ if (vflag)
+ __pmDumpResult(stdout, resp);
+ }
+ fflush(stderr);
+ printf("Found %d samples\n", resnum);
+ fflush(stdout);
+
+ printf("\nPass 2: backwards scan\n");
+ when.tv_sec = 0x7fffffff;
+ when.tv_usec = 0;
+ if ((sts = pmSetMode(PM_MODE_BACK, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ n = 0;
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ n++;
+ cmpres(n, resvec[resnum - n], resp);
+ pmFreeResult(resp);
+ }
+ fflush(stderr);
+ printf("Found %d samples\n", n);
+ fflush(stdout);
+
+ printf("\nPass 3: concurrent forwards and backwards scans\n");
+ pmUseContext(ctx[0]);
+ when.tv_sec = 0;
+ when.tv_usec = 0;
+ if ((sts = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ pmUseContext(ctx[1]);
+ when.tv_sec = 0x7fffffff;
+ when.tv_usec = 0;
+ if ((sts = pmSetMode(PM_MODE_BACK, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ done = 0;
+ n = 0;
+ while (!done) {
+ pmUseContext(ctx[0]);
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ done = 1;
+ }
+ else {
+ n++;
+ cmpres(n, resvec[n/2], resp);
+ pmFreeResult(resp);
+ }
+
+ pmUseContext(ctx[1]);
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ done = 1;
+ }
+ else {
+ n++;
+ cmpres(n, resvec[resnum - n/2], resp);
+ pmFreeResult(resp);
+ }
+ }
+ fflush(stderr);
+ printf("Found %d samples\n", n);
+ fflush(stdout);
+
+ printf("\nPass 4: cascading forward scan, 100%%, 75%%, 50%%, 25%%, 0%%\n");
+ pmUseContext(ctx[0]);
+ for (k = 0; k < 5; k++) {
+ j = 0;
+ if (resnum > 0) {
+ i = ( k * resnum ) / 4;
+ if (i <= resnum - 1) {
+ when = resvec[i]->timestamp;
+ when.tv_usec--;
+ if (when.tv_usec < 0) {
+ when.tv_usec = 0;
+ when.tv_sec--;
+ }
+ }
+ else {
+ when = resvec[resnum - 1]->timestamp;
+ when.tv_usec++;
+ if (when.tv_usec >= 1000000) {
+ when.tv_usec = 0;
+ when.tv_sec++;
+ }
+ }
+ if ((sts = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ n = i;
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ j++;
+ n++;
+ cmpres(j, resvec[n - 1], resp);
+ pmFreeResult(resp);
+ }
+ fflush(stderr);
+ }
+ printf("Found %d samples\n", j);
+ fflush(stdout);
+ }
+
+ printf("\nPass 5: cascading backward scan, 100%%, 75%%, 50%%, 25%%, 0%%\n");
+ pmUseContext(ctx[0]);
+ for (k = 0; k < 5; k++) {
+ j = 0;
+ if (resnum > 0) {
+ i = resnum - ( k * resnum ) / 4 - 1;
+ if (i < 0)
+ i = 0;
+ if (i > 0) {
+ when = resvec[i]->timestamp;
+ when.tv_usec++;
+ if (when.tv_usec >= 1000000) {
+ when.tv_usec = 0;
+ when.tv_sec++;
+ }
+ }
+ else {
+ when = resvec[0]->timestamp;
+ when.tv_usec--;
+ if (when.tv_usec < 0) {
+ when.tv_usec = 0;
+ when.tv_sec--;
+ }
+ }
+ if ((sts = pmSetMode(PM_MODE_BACK, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+
+ for (;;) {
+ if ((sts = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetch: %s\n", pmProgname, pmErrStr(sts));
+ break;
+ }
+ cmpres(i, resvec[i], resp);
+ pmFreeResult(resp);
+ i--;
+ j++;
+ }
+ fflush(stderr);
+ }
+ printf("Found %d samples\n", j);
+ fflush(stdout);
+ }
+
+ printf("\nPass 6: EOL tests, forwards and backwards\n");
+ when = loglabel.ll_start;
+ when.tv_sec--;
+ if ((sts = pmSetMode(PM_MODE_BACK, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetchArchive(&resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetchArchive: %s\n", pmProgname, pmErrStr(sts));
+ }
+ else {
+ printf("%s: pmFetchArchive: unexpected success before start of log\n", pmProgname);
+ __pmDumpResult(stdout, resp);
+ pmFreeResult(resp);
+ }
+
+ when.tv_sec = 0x7fffffff;
+ when.tv_usec = 0;
+ if ((sts = pmSetMode(PM_MODE_FORW, &when, 0)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmFetchArchive(&resp)) < 0) {
+ if (sts != PM_ERR_EOL)
+ printf("%s: pmFetchArchive: %s\n", pmProgname, pmErrStr(sts));
+ }
+ else {
+ printf("%s: pmFetchArchive: unexpected success after end of log\n", pmProgname);
+ __pmDumpResult(stdout, resp);
+ pmFreeResult(resp);
+ }
+
+ exit(0);
+}
diff --git a/qa/src/xbug1.0 b/qa/src/xbug1.0
new file mode 100644
index 0000000..3de2094
--- /dev/null
+++ b/qa/src/xbug1.0
Binary files differ
diff --git a/qa/src/xbug1.index b/qa/src/xbug1.index
new file mode 100644
index 0000000..9bf8ca6
--- /dev/null
+++ b/qa/src/xbug1.index
Binary files differ
diff --git a/qa/src/xbug1.meta b/qa/src/xbug1.meta
new file mode 100644
index 0000000..eac96ad
--- /dev/null
+++ b/qa/src/xbug1.meta
Binary files differ
diff --git a/qa/src/xlog.c b/qa/src/xlog.c
new file mode 100644
index 0000000..918c7fe
--- /dev/null
+++ b/qa/src/xlog.c
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+/*
+ * exercise meta-Data services for an archive
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int vflag;
+static int numpmid;
+static pmID pmidlist[20];
+static char *namelist[20];
+
+static void
+grind(void)
+{
+ int sts;
+ int i;
+ int *instlist;
+ char **inamelist;
+ pmDesc desc;
+
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] != PM_ID_NULL) {
+ printf("\npmid: 0x%x name: %s", pmidlist[i], namelist[i]);
+ if ((sts = pmLookupDesc(pmidlist[i], &desc)) < 0) {
+ printf("\npmLookupDesc: %s\n", pmErrStr(sts));
+ }
+ else {
+ printf(" indom: 0x%x", desc.indom);
+ if (vflag) {
+ const char *u = pmUnitsStr(&desc.units);
+ printf("\ndesc: type=%d indom=0x%x sem=%d units=%s",
+ desc.type, desc.indom, desc.sem,
+ *u == '\0' ? "none" : u);
+ }
+ if (desc.indom == PM_INDOM_NULL) {
+ printf("\n");
+ continue;
+ }
+ if (vflag)
+ putchar('\n');
+ if ((sts = pmGetInDomArchive(desc.indom, &instlist, &inamelist)) < 0) {
+ printf("pmGetInDomArchive: %s\n", pmErrStr(sts));
+ }
+ else {
+ int j;
+ int numinst = sts;
+ char *name;
+ printf(" numinst: %d\n", numinst);
+ for (j = 0; j < numinst; j++) {
+ if (vflag)
+ printf(" instance id: 0x%x ", instlist[j]);
+ if ((sts = pmNameInDomArchive(desc.indom, instlist[j], &name)) < 0) {
+ printf("pmNameInDomArchive: %s\n", pmErrStr(sts));
+ }
+ else {
+ if (vflag)
+ printf("%s (== %s?)", name, inamelist[j]);
+ if ((sts = pmLookupInDomArchive(desc.indom, name)) < 0) {
+ printf(" pmLookupInDomArchive: %s\n", pmErrStr(sts));
+ }
+ else {
+ if (sts != instlist[j]) {
+ printf(" botch: pmLookupInDom returns 0x%x, expected 0x%x\n",
+ sts, instlist[j]);
+ }
+ else if (vflag)
+ putchar('\n');
+ }
+ free(name);
+ }
+ }
+ free(instlist);
+ free(inamelist);
+ }
+ }
+ }
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int c;
+ int sts;
+ int ctx[2];
+ int errflag = 0;
+ char *archive = "foo";
+ char *namespace = PM_NS_DEFAULT;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N]";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "[-D N] [-a archive] [-n namespace] [-v]";
+ int i;
+ pmLogLabel loglabel;
+ pmLogLabel duplabel;
+
+ __pmSetProgname(argv[0]);
+
+ while ((c = getopt(argc, argv, "a:D:n:v")) != EOF) {
+ switch (c) {
+
+ case 'a': /* archive */
+ archive = optarg;
+ break;
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case 'n': /* alternative name space file */
+ namespace = optarg;
+ break;
+
+ case 'v': /* verbose output */
+ vflag++;
+ break;
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ if ((sts = pmLoadNameSpace(namespace)) < 0) {
+ printf("%s: Cannot load namespace from \"%s\": %s\n", pmProgname, namespace, pmErrStr(sts));
+ exit(1);
+ }
+
+ if ((ctx[0] = pmNewContext(PM_CONTEXT_ARCHIVE, archive)) < 0) {
+ printf("%s: Cannot connect to archive \"%s\": %s\n", pmProgname, archive, pmErrStr(ctx[0]));
+ exit(1);
+ }
+ if ((sts = pmGetArchiveLabel(&loglabel)) < 0) {
+ printf("%s: pmGetArchiveLabel(%d): %s\n", pmProgname, ctx[0], pmErrStr(sts));
+ exit(1);
+ }
+ if ((sts = pmSetMode(PM_MODE_INTERP, &loglabel.ll_start, 5)) < 0) {
+ printf("%s: pmSetMode: %s\n", pmProgname, pmErrStr(sts));
+ exit(1);
+ }
+ if ((ctx[1] = pmDupContext()) < 0) {
+ printf("%s: Cannot dup context: %s\n", pmProgname, pmErrStr(ctx[1]));
+ exit(1);
+ }
+ if ((sts = pmGetArchiveLabel(&duplabel)) < 0) {
+ printf("%s: pmGetArchiveLabel(%d): %s\n", pmProgname, ctx[1], pmErrStr(sts));
+ exit(1);
+ }
+ if (loglabel.ll_magic != duplabel.ll_magic ||
+ loglabel.ll_pid != duplabel.ll_pid ||
+ loglabel.ll_start.tv_sec != duplabel.ll_start.tv_sec ||
+ loglabel.ll_start.tv_usec != duplabel.ll_start.tv_usec ||
+ strcmp(loglabel.ll_hostname, duplabel.ll_hostname) != 0 ||
+ strcmp(loglabel.ll_tz, duplabel.ll_tz) != 0) {
+ printf("Error: pmLogLabel mismatch\n");
+ printf("First context: magic=0x%x pid=%" FMT_PID " start=%ld.%06ld\n",
+ loglabel.ll_magic, loglabel.ll_pid,
+ (long)loglabel.ll_start.tv_sec,
+ (long)loglabel.ll_start.tv_usec);
+ printf("host=%s TZ=%s\n", loglabel.ll_hostname, loglabel.ll_tz);
+ printf("Error: pmLogLabel mismatch\n");
+ printf("Dup context: magic=0x%x pid=%" FMT_PID " start=%ld.%06ld\n",
+ duplabel.ll_magic, duplabel.ll_pid,
+ (long)duplabel.ll_start.tv_sec,
+ (long)duplabel.ll_start.tv_usec);
+ printf("host=%s TZ=%s\n", duplabel.ll_hostname, duplabel.ll_tz);
+ exit(1);
+ }
+
+ /*
+ * metrics biased towards log "foo"
+ */
+ i = 0;
+ namelist[i++] = "sample.seconds";
+ namelist[i++] = "sample.bin";
+ namelist[i++] = "sample.colour";
+ namelist[i++] = "sample.drift";
+ namelist[i++] = "sample.lights";
+ namelist[i++] = "sampledso.milliseconds";
+ namelist[i++] = "sampledso.bin";
+ numpmid = i;
+
+
+ for (c = 0; c < 2; c++) {
+ printf("\n=== Context %d ===\n", ctx[c]);
+ pmUseContext(ctx[c]);
+ __pmDumpContext(stdout, ctx[c], PM_INDOM_NULL);
+
+ pmTrimNameSpace();
+
+ sts = pmLookupName(numpmid, namelist, pmidlist);
+ if (sts != numpmid) {
+ if (sts < 0)
+ printf("pmLookupName: %s\n", pmErrStr(sts));
+ else
+ printf("pmLookupName: Warning: some metrics unknown\n");
+
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ }
+
+ grind();
+ }
+ exit(0);
+}
diff --git a/qa/src/xmktime.c b/qa/src/xmktime.c
new file mode 100644
index 0000000..08aab4b
--- /dev/null
+++ b/qa/src/xmktime.c
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <sys/types.h>
+#include <time.h>
+#include <stdio.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+time_t xx[] = { 8*60*60, 825042862, -1 };
+
+char *tz[] = {
+ "EST-11EST-10,86/2:00,303/2:00", "UTC", "PST7PDT7", (char *)0
+};
+
+int
+main()
+{
+ struct tm *tmp;
+ struct tm mytm;
+ char buf[28];
+ time_t ans;
+ int i;
+ int j;
+ int m;
+
+ printf("standard libc routines\n");
+ for (i = 0; xx[i] != -1; i++) {
+ tmp = localtime(&xx[i]);
+ ans = mktime(tmp);
+ printf("initial %d -> %d %s", (int)xx[i], (int)ans, ctime(&ans));
+ for (m = -3; m < 4; m++) {
+ if (m == 0) continue;
+ tmp = localtime(&xx[i]);
+ tmp->tm_mon += m;
+ ans = mktime(tmp);
+ if (m < 0)
+ printf("%d months -> %d %s", m, (int)ans, ctime(&ans));
+ else
+ printf("+%d months -> %d %s", m, (int)ans, ctime(&ans));
+ }
+ printf("\n");
+ }
+
+ for (j = 0; tz[j] != (char *)0; j++) {
+ printf("pmNewZone(\"%s\")\n", tz[j]);
+ pmNewZone(tz[j]);
+ for (i = 0; xx[i] != -1; i++) {
+ tmp = pmLocaltime(&xx[i], &mytm);
+ ans = __pmMktime(tmp);
+ printf("initial %d -> %d %s", (int)xx[i], (int)ans, pmCtime(&ans, buf));
+ for (m = -3; m < 4; m++) {
+ if (m == 0) continue;
+ tmp = pmLocaltime(&xx[i], &mytm);
+ tmp->tm_mon += m;
+ ans = __pmMktime(tmp);
+ if (m < 0)
+ printf("%d months -> %d %s", m, (int)ans, pmCtime(&ans, buf));
+ else
+ printf("+%d months -> %d %s", m, (int)ans, pmCtime(&ans, buf));
+ }
+ printf("\n");
+ }
+ }
+
+ exit(0);
+}
diff --git a/qa/src/xval.c b/qa/src/xval.c
new file mode 100644
index 0000000..239d219
--- /dev/null
+++ b/qa/src/xval.c
@@ -0,0 +1,525 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * xval [-D] [-e] [-u] [-v] value-in-hex
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+static int type[] = {
+ PM_TYPE_32, PM_TYPE_U32, PM_TYPE_64, PM_TYPE_U64, PM_TYPE_FLOAT, PM_TYPE_DOUBLE, PM_TYPE_STRING, PM_TYPE_AGGREGATE, PM_TYPE_EVENT, PM_TYPE_HIGHRES_EVENT };
+static char *name[] = {
+ "long", "ulong", "longlong", "ulonglong", "float", "double", "char *", "pmValueBlock *", "pmEventArray", "pmHighResEventArray" };
+
+/*
+ * ap may point into a vbuf[] and so is not necessarily aligned correctly
+ */
+static void
+_y(void *ap, int type)
+{
+ int i;
+ int vlen;
+ char *cp;
+ pmAtomValue av;
+
+ memcpy((void *)&av, (void *)ap, sizeof(av));
+
+ switch (type) {
+ case PM_TYPE_32:
+ printf("%d", av.l);
+ break;
+ case PM_TYPE_U32:
+ printf("%u", av.ul);
+ break;
+ case PM_TYPE_64:
+ /* avoid alignment problems */
+ printf("%lld", (long long)av.ll);
+ break;
+ case PM_TYPE_U64:
+ /* avoid alignment problems */
+ printf("%llu", (unsigned long long)av.ull);
+ break;
+ case PM_TYPE_FLOAT:
+ printf("%e", (double)av.f);
+ break;
+ case PM_TYPE_DOUBLE:
+ printf("%e", av.d);
+ break;
+ case PM_TYPE_STRING:
+ if (av.cp == (char *)0)
+ printf("(char *)0");
+ else
+ printf("\"%s\"", av.cp);
+ break;
+ case PM_TYPE_AGGREGATE:
+ vlen = av.vbp->vlen - PM_VAL_HDR_SIZE;
+ printf("[vlen=%d]", vlen);
+ cp = (char *)av.vbp->vbuf;
+ for (i = 0; i < vlen && i < 12; i++) {
+ if ((i % 4) == 0)
+ putchar(' ');
+ printf("%02x", *cp & 0xff);
+ cp++;
+ }
+ if (vlen > 12) printf(" ...");
+ break;
+ case PM_TYPE_EVENT: {
+ pmEventArray *eap;
+ /* this seems alignment safe */
+ eap = (pmEventArray *)ap;
+ printf("[%d event records]", eap->ea_nrecords);
+ break;
+ }
+ case PM_TYPE_HIGHRES_EVENT: {
+ pmHighResEventArray *hreap;
+ /* this seems alignment safe */
+ hreap = (pmHighResEventArray *)ap;
+ printf("[%d event records]", hreap->ea_nrecords);
+ break;
+ }
+ }
+}
+
+static pmEventArray ea;
+static pmHighResEventArray hrea;
+
+int
+main(int argc, char *argv[])
+{
+ int e;
+ int k;
+ int i;
+ int o;
+ void *avp;
+ pmValue pv;
+ pmAtomValue av;
+ pmAtomValue bv;
+ pmAtomValue iv;
+ pmAtomValue *ap;
+ pmValueBlock *vbp;
+ __int32_t *foo;
+ int valfmt;
+ int vflag = 0; /* set to 1 to show all results */
+ int sgn = 1; /* -u to force 64 unsigned from command line value */
+ long long llv;
+
+ ea.ea_nrecords = 1;
+ ea.ea_record[0].er_nparams = 0;
+ vbp = (pmValueBlock *)&ea;
+ vbp->vtype = PM_TYPE_EVENT;
+ vbp->vlen = sizeof(ea); /* not quite correct, but close enough */
+ hrea.ea_nrecords = 1;
+ hrea.ea_record[0].er_nparams = 0;
+ vbp = (pmValueBlock *)&hrea;
+ vbp->vtype = PM_TYPE_HIGHRES_EVENT;
+ vbp->vlen = sizeof(hrea); /* not quite correct, but close enough */
+
+ vbp = (pmValueBlock *)malloc(sizeof(pmValueBlock)+7*sizeof(int));
+ if (vbp == NULL) {
+ fprintf(stderr, "initial malloc failed!\n");
+ exit(1);
+ }
+
+ while (argc > 1) {
+ argc--;
+ argv++;
+ if (strcmp(argv[0], "-D") == 0) {
+ pmDebug = DBG_TRACE_VALUE;
+ continue;
+ }
+ if (strcmp(argv[0], "-e") == 0) {
+ goto error_cases;
+ }
+ if (strcmp(argv[0], "-u") == 0) {
+ sgn = 0;
+ continue;
+ }
+ if (strcmp(argv[0], "-v") == 0) {
+ vflag = 1;
+ continue;
+ }
+ /* note value is in hex! */
+ sscanf(argv[0], "%llx", &llv);
+ if (sgn)
+ printf("\nValue: %lld 0x%016llx\n", llv, llv);
+ else
+ printf("\nValue: %llu 0x%016llx\n", (unsigned long long)llv, llv);
+
+ for (i = 0; i < sizeof(type)/sizeof(type[0]); i++) {
+ valfmt = PM_VAL_INSITU;
+ ap = (pmAtomValue *)&pv.value.lval;
+ switch (type[i]) {
+ case PM_TYPE_32:
+ case PM_TYPE_U32:
+ pv.value.lval = llv;
+ break;
+ case PM_TYPE_64:
+ valfmt = PM_VAL_SPTR;
+ pv.value.pval = vbp;
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(__int64_t);
+ vbp->vtype = PM_TYPE_64;
+ avp = (void *)vbp->vbuf;
+ bv.ll = llv;
+ memcpy(avp, (void *)&bv, sizeof(bv));
+ ap = &bv;
+ break;
+ case PM_TYPE_U64:
+ valfmt = PM_VAL_SPTR;
+ pv.value.pval = vbp;
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(__uint64_t);
+ vbp->vtype = PM_TYPE_U64;
+ avp = (void *)vbp->vbuf;
+ bv.ll = llv;
+ memcpy(avp, (void *)&bv, sizeof(bv));
+ ap = &bv;
+ break;
+ case PM_TYPE_FLOAT:
+ valfmt = PM_VAL_SPTR;
+ pv.value.pval = vbp;
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(float);
+ vbp->vtype = PM_TYPE_FLOAT;
+ avp = (void *)vbp->vbuf;
+ if (sgn)
+ bv.f = llv;
+ else
+ bv.f = (unsigned long long)llv;
+ memcpy(avp, (void *)&bv, sizeof(bv));
+ ap = &bv;
+ break;
+ case PM_TYPE_DOUBLE:
+ valfmt = PM_VAL_SPTR;
+ pv.value.pval = vbp;
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(double);
+ vbp->vtype = PM_TYPE_DOUBLE;
+ avp = (void *)vbp->vbuf;
+ if (sgn)
+ bv.d = llv;
+ else
+ bv.d = (unsigned long long)llv;
+ memcpy(avp, (void *)&bv, sizeof(bv));
+ ap = &bv;
+ break;
+ case PM_TYPE_STRING:
+ valfmt = PM_VAL_SPTR;
+ pv.value.pval = vbp;
+ sprintf(vbp->vbuf, "%lld", llv);
+ vbp->vlen = PM_VAL_HDR_SIZE + strlen(vbp->vbuf) + 1;
+ vbp->vtype = PM_TYPE_STRING;
+ ap = &bv;
+ bv.cp = (char *)vbp->vbuf;
+ break;
+ case PM_TYPE_AGGREGATE:
+ valfmt = PM_VAL_SPTR;
+ pv.value.pval = vbp;
+ vbp->vlen = PM_VAL_HDR_SIZE + 3 * sizeof(foo[0]);
+ vbp->vtype = PM_TYPE_AGGREGATE;
+ foo = (__int32_t *)vbp->vbuf;
+ foo[0] = foo[1] = foo[2] = llv;
+ foo[0]--;
+ foo[2]++;
+ /* remove endian diff in value dump output */
+ foo[0] = htonl(foo[0]);
+ foo[1] = htonl(foo[1]);
+ foo[2] = htonl(foo[2]);
+ ap = &bv;
+ bv.vbp = vbp;
+ break;
+ case PM_TYPE_EVENT:
+ valfmt = PM_VAL_DPTR;
+ ap = (void *)&ea;
+ break;
+ case PM_TYPE_HIGHRES_EVENT:
+ valfmt = PM_VAL_DPTR;
+ ap = (void *)&hrea;
+ break;
+ }
+ for (o = 0; o < sizeof(type)/sizeof(type[0]); o++) {
+ if ((e = pmExtractValue(valfmt, &pv, type[i], &av, type[o])) < 0) {
+ if (vflag == 0) {
+ /* silently ignore the expected failures */
+ if (type[i] != type[o] &&
+ (type[i] == PM_TYPE_STRING || type[o] == PM_TYPE_STRING ||
+ type[i] == PM_TYPE_AGGREGATE || type[o] == PM_TYPE_AGGREGATE))
+ continue;
+ if (type[i] == PM_TYPE_EVENT || type[i] == PM_TYPE_HIGHRES_EVENT ||
+ type[o] == PM_TYPE_EVENT || type[o] == PM_TYPE_HIGHRES_EVENT)
+ continue;
+ }
+ printf("(%s) ", name[i]);
+ _y(ap, type[i]);
+ printf(" => (%s) ", name[o]);
+ printf(": %s\n", pmErrStr(e));
+ }
+ else {
+ int match;
+ /* avoid ap-> alignment issues */
+ memcpy((void *)&iv, (void *)ap, sizeof(iv));
+ switch (type[o]) {
+ case PM_TYPE_32:
+ if (type[i] == PM_TYPE_32)
+ match = (pv.value.lval == av.l);
+ else if (type[i] == PM_TYPE_U32)
+ match = ((unsigned)pv.value.lval == av.l);
+ else if (type[i] == PM_TYPE_FLOAT)
+ match = (fabs((iv.f - av.l)/iv.f) < 0.00001);
+ else
+ match = (llv == av.l);
+ break;
+ case PM_TYPE_U32:
+ if (type[i] == PM_TYPE_32)
+ match = (pv.value.lval == av.ul);
+ else if (type[i] == PM_TYPE_U32)
+ match = ((unsigned)pv.value.lval == av.ul);
+ else if (type[i] == PM_TYPE_FLOAT)
+ match = (fabs((iv.f - av.ul)/iv.f) < 0.00001);
+ else
+ match = (llv == av.ul);
+ break;
+ case PM_TYPE_64:
+ if (type[i] == PM_TYPE_32)
+ match = (pv.value.lval == av.ll);
+ else if (type[i] == PM_TYPE_U32)
+ match = ((unsigned)pv.value.lval == av.ll);
+ else if (type[i] == PM_TYPE_FLOAT)
+ match = (fabs((iv.f - av.ll)/iv.f) < 0.00001);
+ else if (type[i] == PM_TYPE_DOUBLE)
+ match = (fabs((iv.d - av.ll)/iv.d) < 0.00001);
+ else
+ match = (llv == av.ll);
+ break;
+ case PM_TYPE_U64:
+ if (type[i] == PM_TYPE_32)
+ match = (pv.value.lval == av.ull);
+ else if (type[i] == PM_TYPE_U32)
+ match = ((unsigned)pv.value.lval == av.ull);
+ else if (type[i] == PM_TYPE_FLOAT)
+ match = (fabs((iv.f - av.ull)/iv.f) < 0.00001);
+ else if (type[i] == PM_TYPE_DOUBLE)
+ match = (fabs((iv.d - av.ull)/iv.d) < 0.00001);
+ else
+ match = (llv == av.ull);
+ break;
+ case PM_TYPE_FLOAT:
+ if (type[i] == PM_TYPE_32)
+ match = (fabs((pv.value.lval - av.f)/pv.value.lval) < 0.00001);
+ else if (type[i] == PM_TYPE_U32)
+ match = (fabs(((unsigned)pv.value.lval - av.f)/(unsigned)pv.value.lval) < 0.00001);
+ else if (type[i] == PM_TYPE_64)
+ match = (fabs((llv - av.f)/llv) < 0.00001);
+ else if (type[i] == PM_TYPE_U64)
+ match = (fabs(((unsigned long long)llv - av.f)/(unsigned long long)llv) < 0.00001);
+ else if (type[i] == PM_TYPE_DOUBLE)
+ match = (fabs((iv.d - av.f)/iv.d) < 0.00001);
+ else
+ match = (iv.f == av.f);
+ break;
+ case PM_TYPE_DOUBLE:
+ if (type[i] == PM_TYPE_32)
+ match = (fabs((pv.value.lval - av.d)/pv.value.lval) < 0.00001);
+ else if (type[i] == PM_TYPE_U32)
+ match = (fabs(((unsigned)pv.value.lval - av.d)/(unsigned)pv.value.lval) < 0.00001);
+ else if (type[i] == PM_TYPE_64)
+ match = (fabs((llv - av.d)/llv) < 0.00001);
+ else if (type[i] == PM_TYPE_U64)
+ match = (fabs(((unsigned long long)llv - av.d)/(unsigned long long)llv) < 0.00001);
+ else if (type[i] == PM_TYPE_FLOAT)
+ match = (fabs((iv.f - av.d)/iv.f) < 0.00001);
+ else
+ match = (iv.d == av.d);
+ break;
+ case PM_TYPE_STRING:
+ match = (strcmp(bv.cp, av.cp) == 0);
+ break;
+ case PM_TYPE_AGGREGATE:
+ match = 0;
+ for (k = 0; match == 0 && k < vbp->vlen - PM_VAL_HDR_SIZE; k++)
+ match = (bv.cp[k] == av.cp[k]);
+ break;
+ case PM_TYPE_EVENT:
+ case PM_TYPE_HIGHRES_EVENT:
+ default:
+ /* should never get here */
+ match = 0;
+ break;
+ }
+ if (match == 0 || vflag) {
+ printf("(%s) ", name[i]);
+ _y(ap, type[i]);
+ printf(" => (%s) ", name[o]);
+ _y(&av, type[o]);
+ if (match == 0)
+ printf(" : value mismatch");
+ putchar('\n');
+ }
+ if (type[o] == PM_TYPE_STRING)
+ free(av.cp);
+ else if (type[o] == PM_TYPE_AGGREGATE)
+ free(av.vbp);
+ }
+ }
+ }
+ }
+
+ exit(0);
+
+error_cases:
+ /*
+ * a series of error and odd cases driven by QA coverage analysis
+ */
+ avp = (void *)&pv.value.lval;
+ bv.f = 123.456;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> 32: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_32)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%d\n", av.l);
+
+ bv.f = (float)0xf7777777;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> 32: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_32)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%d\n", av.l);
+
+ bv.f = 123.456;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> U32: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_U32)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%u\n", av.ul);
+
+ bv.f = (float)((unsigned)0xffffffff);
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> U32: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_U32)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%u\n", av.ul);
+
+ bv.f = -123.456;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> U32: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_U32)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%u\n", av.ul);
+
+ bv.f = 123.456;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> 64: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_64)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%lld\n", (long long)av.ll);
+
+ bv.f = (float)0x7fffffffffffffffLL;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %22.1f -> 64: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_64)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%lld\n", (long long)av.ll);
+
+ bv.f = 123.456;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> U64: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_U64)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%llu\n", (unsigned long long)av.ull);
+
+ bv.f = (float)((unsigned long long)0xffffffffffffffffLL);
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %22.1f -> U64: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_U64)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%llu\n", (unsigned long long)av.ull);
+
+ bv.f = -123.456;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.3f -> U64: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_U64)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%llu\n", (unsigned long long)av.ull);
+
+ bv.f = 123.45678;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.5f -> DOUBLE: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_DOUBLE)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%15.5f\n", av.d);
+
+ bv.f = 123.45678;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("old FLOAT: %15.5f -> STRING: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_INSITU, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_STRING)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%15.6f\n", av.d);
+
+ pv.value.pval = vbp;
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(bv.ll);
+ vbp->vtype = PM_TYPE_NOSUPPORT;
+ avp = (void *)vbp->vbuf;
+ bv.ll = 12345;
+ memcpy(avp, (void *)&bv.ll, sizeof(bv.ll));
+ printf("bad 64: %12lld -> 64: ", (long long)bv.ll);
+ if ((e = pmExtractValue(PM_VAL_SPTR, &pv, PM_TYPE_64, &av, PM_TYPE_64)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%12lld\n", (long long)av.ll);
+
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(bv.ull);
+ memcpy(avp, (void *)&bv.ull, sizeof(bv.ull));
+ printf("bad U64: %12llu -> U64: ", (unsigned long long)bv.ull);
+ if ((e = pmExtractValue(PM_VAL_SPTR, &pv, PM_TYPE_U64, &av, PM_TYPE_U64)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%12llu\n", (unsigned long long)av.ull);
+
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(bv.f);
+ bv.f = 123.456;
+ memcpy(avp, (void *)&bv.f, sizeof(bv.f));
+ printf("bad FLOAT: %15.3f -> FLOAT: ", bv.f);
+ if ((e = pmExtractValue(PM_VAL_SPTR, &pv, PM_TYPE_FLOAT, &av, PM_TYPE_FLOAT)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%15.3f\n", av.f);
+
+ vbp->vlen = PM_VAL_HDR_SIZE + sizeof(bv.d);
+ bv.d = 123.456;
+ memcpy(avp, (void *)&bv.d, sizeof(bv.d));
+ printf("bad DOUBLE: %15.3f -> DOUBLE: ", bv.d);
+ if ((e = pmExtractValue(PM_VAL_SPTR, &pv, PM_TYPE_DOUBLE, &av, PM_TYPE_DOUBLE)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%15.3f\n", av.d);
+
+ bv.cp = "not me";
+ memcpy(avp, (void *)&bv, sizeof(bv));
+ vbp->vlen = PM_VAL_HDR_SIZE + strlen(bv.cp);
+ printf("bad STRING: %s -> STRING: ", bv.cp);
+ if ((e = pmExtractValue(PM_VAL_SPTR, &pv, PM_TYPE_STRING, &av, PM_TYPE_STRING)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("%s\n", av.cp);
+
+ vbp->vlen = PM_VAL_HDR_SIZE;
+ printf("bad AGGREGATE: len=%d -> AGGREGATE: ", vbp->vlen - PM_VAL_HDR_SIZE);
+ if ((e = pmExtractValue(PM_VAL_SPTR, &pv, PM_TYPE_AGGREGATE, &av, PM_TYPE_AGGREGATE)) < 0)
+ printf("%s\n", pmErrStr(e));
+ else
+ printf("len=%d\n", av.vbp->vlen);
+
+ exit(0);
+}
+
diff --git a/qa/src/xxx.c b/qa/src/xxx.c
new file mode 100644
index 0000000..91a0a2a
--- /dev/null
+++ b/qa/src/xxx.c
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <ctype.h>
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+
+int
+main()
+{
+ int i;
+ char *namelist[20];
+ pmID pmidlist[20];
+ int n;
+ int numpmid;
+ pmResult *resp;
+ unsigned long mem;
+
+ if ((n = pmLoadNameSpace(PM_NS_DEFAULT)) < 0) {
+ fprintf(stderr, "pmLoadNameSpace: %s\n", pmErrStr(n));
+ exit(1);
+ }
+
+ if ((n = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
+ fprintf(stderr, "pmNewContext(..., \"localhost\"): %s\n",
+ pmErrStr(n));
+ exit(1);
+ }
+
+ i = 0;
+ namelist[i++] = "sample.sysinfo";
+ namelist[i++] = "sampledso.seconds";
+ namelist[i++] = "sample.colour";
+ namelist[i++] = "sampledso.mirage";
+ namelist[i++] = "sample.lights";
+ namelist[i++] = "sampledso.string.hullo";
+ namelist[i++] = "sample.aggregate.hullo";
+ namelist[i++] = "sampledso.longlong.one";
+ numpmid = i;
+ n = pmLookupName(numpmid, namelist, pmidlist);
+ if (n < 0) {
+ fprintf(stderr, "pmLookupName: %s\n", pmErrStr(n));
+ for (i = 0; i < numpmid; i++) {
+ if (pmidlist[i] == PM_ID_NULL)
+ printf(" %s - not known\n", namelist[i]);
+ }
+ exit(1);
+ }
+
+ __pmProcessDataSize(NULL);
+ for (i = 0; i < 10000; i++) {
+ if ((n = pmFetch(numpmid, pmidlist, &resp)) < 0) {
+ fprintf(stderr, "pmFetch: %s\n", pmErrStr(n));
+ abort();
+ }
+ pmFreeResult(resp);
+ }
+ __pmProcessDataSize(&mem);
+ printf("mem growth: %lu Kbytes\n", mem);
+
+ exit(0);
+}
diff --git a/qa/valgrind-suppress b/qa/valgrind-suppress
new file mode 100644
index 0000000..d1efe33
--- /dev/null
+++ b/qa/valgrind-suppress
@@ -0,0 +1,104 @@
+# to add to these, run the failing case with
+# valgrind --leak-check=full --suppressions=valgrind-suppress --gen-suppressions=yes ...
+#
+# I see different results on Ubuntu 10.10 depending if the binaries
+# are build by Makepkgs or build and installed from a source repository
+# which probably a compiler flags issue
+# - Ken
+#
+{
+ pmConfig calls putenv permanently
+ Memcheck:Leak
+ fun:malloc
+ fun:strdup
+ fun:posix_formatter
+ fun:__pmConfig
+ fun:pmGetConfig
+}
+
+{
+ pthreads initialization from pmLoadNameSpace
+ Memcheck:Cond
+ fun:pthread_mutex_init
+ fun:pthread_mutex_init
+ fun:__pmInitLocks
+ fun:pmLoadNameSpace
+ fun:main
+}
+
+{
+ pthreads initialization from pmNewContext
+ Memcheck:Cond
+ fun:pthread_mutex_init
+ fun:pthread_mutex_init
+ fun:__pmInitLocks
+ fun:pmNewContext
+ fun:main
+}
+
+{
+ pthreads initialization from pmNewContext with PM_CONTEXT_LOCAL
+ Memcheck:Cond
+ fun:pthread_mutex_init
+ fun:pthread_mutex_init
+ fun:__pmInitLocks
+ fun:pmNewContext
+ obj:*
+ fun:(below main)
+}
+
+{
+ CentOS 5.6 dlopen -> _dl_new_object, expand_dynamic_string_token, _dl_map_object_deps, _dl_check_map_versions
+ Memcheck:Leak
+ fun:?alloc
+ ...
+ fun:dlopen*
+ fun:__pmConnectLocal
+}
+
+{
+ valgrind-3.7.0 in 64-bit Debian 6.0.5 _dl_start -> index
+ Memcheck:Cond
+ fun:index
+ ...
+ fun:_dl_start
+}
+
+{
+ openSUSE 12.1 strlen() Conditional jump or move depends on uninitialised value(s)
+ Memcheck:Cond
+ fun:strlen
+ obj:*
+}
+
+{
+ readline library via dbpmda
+ Memcheck:Param
+ socketcall.sendmsg(msg.msg_name)
+ fun:__sendmsg_nocancel
+ fun:readline
+}
+
+{
+ readline library
+ Memcheck:Param
+ socketcall.sendmsg(msg.msg_name)
+ obj:*libc*
+ fun:readline
+}
+
+{
+ NSS library leak catch-all
+ Memcheck:Leak
+ fun:?alloc
+ ...
+ fun:NSS*
+}
+
+{
+ NSPR library leak catch-all
+ Memcheck:Leak
+ fun:?alloc
+ ...
+ fun:PR_*
+}
diff --git a/qa/valgrind-suppress-3.6.0.SVN-Debian b/qa/valgrind-suppress-3.6.0.SVN-Debian
new file mode 100644
index 0000000..feff000
--- /dev/null
+++ b/qa/valgrind-suppress-3.6.0.SVN-Debian
@@ -0,0 +1,75 @@
+# Broken valgrind 3.6.1 seen on i686 openSUSE 12.1
+# also seen with valgrind 3.6.0 on i586 Debian 6.0.7
+#
+# For libpcp/interp.c as of commit ba2cb05135896224d534ff9e1d1195e9193facba
+# the full reported "error" is
+# Conditional jump or move depends on uninitialised value(s)
+# at 0x4076805: __pmLogFetchInterp (interp.c:1437)
+# by 0x40716FB: __pmLogFetch (logutil.c:1653)
+# by 0x4021917: ???
+# Uninitialised value was created by a heap allocation
+# at 0x402913D: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
+# by 0x40765EB: __pmLogFetchInterp (interp.c:1427)
+# by 0x40716FB: __pmLogFetch (logutil.c:1653)
+# by 0x4021917: ???
+# which is bogus
+#
+{
+ Valgrind 3.6.1 botch
+ Memcheck:Cond
+ fun:__pmLogFetchInterp
+ fun:__pmLogFetch
+ obj:*
+}
+
+# dlopen issues seen with valgrind 3.6.0 on i586 Debian 6.0.7
+{
+ dlopen -> local_strdup
+ Memcheck:Leak
+ fun:malloc
+ fun:local_strdup
+ fun:_dl_map_object
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:__pmConnectLocal
+ fun:pmNewContext
+}
+
+{
+ dlopen -> _dl_check_map_versions
+ Memcheck:Leak
+ fun:calloc
+ fun:_dl_check_map_versions
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:__pmConnectLocal
+ fun:pmNewContext
+ obj:*
+}
+
+{
+ dlopen -> _dl_map_object_deps
+ Memcheck:Leak
+ fun:malloc
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:__pmConnectLocal
+ fun:pmNewContext
+ obj:*
+}
diff --git a/qa/valgrind-suppress-3.6.1 b/qa/valgrind-suppress-3.6.1
new file mode 100644
index 0000000..9320b22
--- /dev/null
+++ b/qa/valgrind-suppress-3.6.1
@@ -0,0 +1,23 @@
+# Broken valgrind 3.6.1 seen on openSUSE 12.1
+#
+# For libpcp/interp.c as of commit ba2cb05135896224d534ff9e1d1195e9193facba
+# the full reported "error" is
+# Conditional jump or move depends on uninitialised value(s)
+# at 0x4076805: __pmLogFetchInterp (interp.c:1437)
+# by 0x40716FB: __pmLogFetch (logutil.c:1653)
+# by 0x4021917: ???
+# Uninitialised value was created by a heap allocation
+# at 0x402913D: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
+# by 0x40765EB: __pmLogFetchInterp (interp.c:1427)
+# by 0x40716FB: __pmLogFetch (logutil.c:1653)
+# by 0x4021917: ???
+# which is bogus
+#
+{
+ Valgrind 3.6.1 botch
+ Memcheck:Cond
+ fun:__pmLogFetchInterp
+ fun:__pmLogFetch
+ obj:*
+}
+
diff --git a/qa/views/006-01 b/qa/views/006-01
new file mode 100644
index 0000000..88e42c0
--- /dev/null
+++ b/qa/views/006-01
@@ -0,0 +1,5 @@
+#kmchart
+version 1
+chart title "QA Units compatible - time" style plot
+ plot metric sample.seconds
+ plot metric sample.milliseconds
diff --git a/qa/views/006-02 b/qa/views/006-02
new file mode 100644
index 0000000..c8ecf8d
--- /dev/null
+++ b/qa/views/006-02
@@ -0,0 +1,5 @@
+#kmchart
+version 1
+chart title "QA Units odd but OK - time(util) and none" style plot
+ plot metric sample.seconds
+ plot metric sample.control
diff --git a/qa/views/006-03 b/qa/views/006-03
new file mode 100644
index 0000000..df821d9
--- /dev/null
+++ b/qa/views/006-03
@@ -0,0 +1,5 @@
+#kmchart
+version 1
+chart title "QA Units BAD - time(->time util) and count(->count/sec)" style plot
+ plot metric sample.seconds
+ plot metric sample.step_counter
diff --git a/qa/views/006-04 b/qa/views/006-04
new file mode 100644
index 0000000..a2a498d
--- /dev/null
+++ b/qa/views/006-04
@@ -0,0 +1,16 @@
+#kmchart
+version 1
+chart title "QA Units OK - inst first" style plot
+ plot metric sample.byte_rate
+ plot metric sample.byte_ctr
+chart title "QA Units OK - ctr first" style plot
+ plot metric sample.byte_ctr
+ plot metric sample.byte_rate
+chart title "QA Units OK - Kbyte/sec and byte/msec" style plot
+ plot metric sample.mirage
+ plot metric sample.mirage_longlong
+chart title "QA Units OK - count/sec and count(->count/sec)" style plot
+ plot metric sample.write_me
+ plot metric sample.pdu
+
+
diff --git a/qa/views/006-05 b/qa/views/006-05
new file mode 100644
index 0000000..95fa003
--- /dev/null
+++ b/qa/views/006-05
@@ -0,0 +1,6 @@
+#kmchart
+version 1
+chart title "QA Units BAD - byte / msec and count/sec" style plot
+ plot metric sample.mirage_longlong
+ plot metric sample.write_me
+
diff --git a/qa/views/AntiAliasing b/qa/views/AntiAliasing
new file mode 100644
index 0000000..fabbb9e
--- /dev/null
+++ b/qa/views/AntiAliasing
@@ -0,0 +1,23 @@
+#kmchart
+version 1
+
+chart title "Anti-Aliased Utilisation" style utilization antialiasing on
+ plot legend "Red" color red metric sample.colour instance "red"
+ plot legend "Green" color green metric sample.colour instance "green"
+ plot legend "Blue" color blue metric sample.colour instance "blue"
+
+chart title "Anti-Aliased Plots" style plot antialiasing on
+ plot legend "Red" color red metric sample.colour instance "red"
+ plot legend "Green" color green metric sample.colour instance "green"
+ plot legend "Blue" color blue metric sample.colour instance "blue"
+
+chart title "Non-Anti-Aliased Utilisation" style utilization antialiasing off
+ plot legend "Red" color red metric sample.colour instance "red"
+ plot legend "Green" color green metric sample.colour instance "green"
+ plot legend "Blue" color blue metric sample.colour instance "blue"
+
+chart title "Non-Anti-Aliased Plots" style plot antialiasing off
+ plot legend "Red" color red metric sample.colour instance "red"
+ plot legend "Green" color green metric sample.colour instance "green"
+ plot legend "Blue" color blue metric sample.colour instance "blue"
+
diff --git a/qa/views/GNUmakefile b/qa/views/GNUmakefile
new file mode 100644
index 0000000..f4a6466
--- /dev/null
+++ b/qa/views/GNUmakefile
@@ -0,0 +1,17 @@
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/views
+VIEWFILES = 006-01 006-02 006-03 006-04 006-05 \
+ AntiAliasing NoSuchHost RotateColors ScaleManual
+LSRCFILES = $(VIEWFILES) GNUmakefile.install
+
+default default_pcp setup:
+
+install install_pcp: $(VIEWFILES)
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(VIEWFILES) $(TESTDIR)
+ $(INSTALL) -m 644 GNUmakefile.install $(TESTDIR)/GNUmakefile
+
+include $(BUILDRULES)
+
diff --git a/qa/views/GNUmakefile.install b/qa/views/GNUmakefile.install
new file mode 100644
index 0000000..dd1e65d
--- /dev/null
+++ b/qa/views/GNUmakefile.install
@@ -0,0 +1 @@
+default setup install:
diff --git a/qa/views/NoSuchHost b/qa/views/NoSuchHost
new file mode 100644
index 0000000..2d9c6ad
--- /dev/null
+++ b/qa/views/NoSuchHost
@@ -0,0 +1,6 @@
+#kmchart
+version 1
+
+chart title "IOPS over all Disks [%h]" style stacking
+ plot legend "Reads" color #ffff00 host no.such.host metric disk.all.read
+ plot legend "Writes" color #ee82ee host no.such.host metric disk.all.write
diff --git a/qa/views/RotateColors b/qa/views/RotateColors
new file mode 100644
index 0000000..29080c3
--- /dev/null
+++ b/qa/views/RotateColors
@@ -0,0 +1,54 @@
+#kmchart
+version 1
+
+chart title "Settings Color Test" style stacking
+ plot title "01" metric sample.hordes.one instance "1"
+ plot title "02" metric sample.hordes.one instance "2"
+ plot title "03" metric sample.hordes.one instance "3"
+ plot title "04" metric sample.hordes.one instance "4"
+ plot title "05" metric sample.hordes.one instance "5"
+ plot title "06" metric sample.hordes.one instance "6"
+ plot title "07" metric sample.hordes.one instance "7"
+ plot title "08" metric sample.hordes.one instance "8"
+ plot title "09" metric sample.hordes.one instance "9"
+ plot title "10" metric sample.hordes.one instance "10"
+ plot title "11" metric sample.hordes.one instance "11"
+ plot title "12" metric sample.hordes.one instance "12"
+ plot title "13" metric sample.hordes.one instance "13"
+ plot title "14" metric sample.hordes.one instance "14"
+ plot title "15" metric sample.hordes.one instance "15"
+ plot title "16" metric sample.hordes.one instance "16"
+ plot title "17" metric sample.hordes.one instance "17"
+ plot title "18" metric sample.hordes.one instance "18"
+ plot title "19" metric sample.hordes.one instance "19"
+ plot title "20" metric sample.hordes.one instance "20"
+ plot title "21" metric sample.hordes.one instance "21"
+ plot title "22" metric sample.hordes.one instance "22"
+ plot title "23" metric sample.hordes.one instance "23"
+ plot title "24" metric sample.hordes.one instance "24"
+ plot title "25" metric sample.hordes.one instance "25"
+ plot title "26" metric sample.hordes.one instance "26"
+ plot title "27" metric sample.hordes.one instance "27"
+ plot title "28" metric sample.hordes.one instance "28"
+ plot title "29" metric sample.hordes.one instance "29"
+ plot title "30" metric sample.hordes.one instance "30"
+ plot title "31" metric sample.hordes.one instance "31"
+ plot title "32" metric sample.hordes.one instance "32"
+ plot title "33" metric sample.hordes.one instance "33"
+ plot title "34" metric sample.hordes.one instance "34"
+ plot title "35" metric sample.hordes.one instance "35"
+ plot title "36" metric sample.hordes.one instance "36"
+ plot title "37" metric sample.hordes.one instance "37"
+ plot title "38" metric sample.hordes.one instance "38"
+ plot title "39" metric sample.hordes.one instance "39"
+ plot title "40" metric sample.hordes.one instance "40"
+ plot title "41" metric sample.hordes.one instance "41"
+ plot title "42" metric sample.hordes.one instance "42"
+ plot title "43" metric sample.hordes.one instance "43"
+ plot title "44" metric sample.hordes.one instance "44"
+ plot title "45" metric sample.hordes.one instance "45"
+ plot title "46" metric sample.hordes.one instance "46"
+ plot title "47" metric sample.hordes.one instance "47"
+ plot title "48" metric sample.hordes.one instance "48"
+ plot title "49" metric sample.hordes.one instance "49"
+ plot title "50" metric sample.hordes.one instance "50"
diff --git a/qa/views/ScaleManual b/qa/views/ScaleManual
new file mode 100644
index 0000000..f6ab41b
--- /dev/null
+++ b/qa/views/ScaleManual
@@ -0,0 +1,8 @@
+#kmchart
+version 1
+
+chart style plot
+ plot color #ffff00 metric sample.double.one
+ plot color #0000ff metric sample.double.ten
+chart style plot
+ plot color #ff2247 metric sample.byte_ctr
diff --git a/qa/views/SpotInstances b/qa/views/SpotInstances
new file mode 100644
index 0000000..a314e13
--- /dev/null
+++ b/qa/views/SpotInstances
@@ -0,0 +1,5 @@
+#kmchart
+version 1
+
+chart style plot antialiasing off
+ plot color #ffff00 metric pmda.metric.count instance "kernel.all.cpu.wait.total"
diff --git a/qa/xlate_2_new_pmns b/qa/xlate_2_new_pmns
new file mode 100755
index 0000000..faae4cf
--- /dev/null
+++ b/qa/xlate_2_new_pmns
@@ -0,0 +1,36 @@
+#! /bin/sh
+#
+# translate to the new pmns names (drop irix. prefix etc)
+#
+# Usage: xlate_2_new_pmns [file ...]
+#
+# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+_map()
+{
+ sed \
+ -e 's/^/ /' \
+ -e 's/\([^a-zA-Z0-9_.]\)irix\.numa/\1origin.numa/g' \
+ -e 's/\([^a-zA-Z0-9_.]\)irix\.node/\1origin.node/g' \
+ -e 's/\([^a-zA-Z0-9_.]\)irix\./\1/g' \
+ -e 's/\([^a-zA-Z0-9_.]\)resource\.name_cache/\1name_cache/g' \
+ -e 's/\([^a-zA-Z0-9_.]\)resource\.buffer_cache/\1buffer_cache/g' \
+ -e 's/\([^a-zA-Z0-9_.]\)resource\.vnodes/\1vnodes/g' \
+ -e 's/\([^a-zA-Z0-9_.]\)resource\.efs/\1efs/g' \
+ -e 's/^ //'
+}
+
+if [ $# -eq 0 ]
+then
+ _map
+else
+ tmp=/var/tmp/$$
+ trap "rm -f $tmp; exit 0" 0 1 2 3 15
+ for file
+ do
+ _map <$file >$tmp
+ cp $tmp $file
+ done
+fi
+